/* ==========================================================
   校园论坛 · 青绿主题响应式样式
   主色：青绿 #1fb6a6 / #0f8f85   辅助：深蓝文字 #123a5a
   PC：多列 + 后台左侧导航；手机：单列 + 底部 Tab 栏
   ========================================================== */
:root{
  --teal:#1fb6a6;          /* 青绿主色 */
  --teal-d:#0f8f85;        /* 青绿深 */
  --teal-l:#e8f7f5;        /* 青绿浅底 */
  --navy:#123a5a;          /* 深蓝（文字/次要） */
  --bg:#f2f6f6;
  --card:#fff;
  --text:#1f2d3a;
  --muted:#7f929b;
  --line:#e6eeee;
  --warn:#e0911c;
  --bad:#e05b56;
  --r:14px;
  --shadow:0 2px 12px rgba(31,182,166,.09);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--text);font-size:15px;line-height:1.65;
  padding-bottom:20px;
}
a{color:var(--navy);text-decoration:none}
a:hover{color:var(--teal-d)}
img{max-width:100%}
.wrap{width:100%;max-width:1200px;margin:0 auto;padding:0 16px}
.muted{color:var(--muted);font-size:13px}
/* SVG 图标统一垂直对齐 */
svg{vertical-align:middle;flex:none}
.ic-inline{display:inline-flex;align-items:center;vertical-align:-3px;margin-right:2px}
.card-title svg{margin-right:6px;vertical-align:-3px}
.btn svg{margin-right:5px;vertical-align:-3px}
.admin-side a svg{margin-right:8px;opacity:.9}
.tabbar a svg{margin-bottom:2px}
.avatar svg{width:17px;height:17px}
.logo-mark svg{width:20px;height:20px}
.empty-icon{color:var(--teal);margin-bottom:8px}
.empty-icon svg{width:30px;height:30px}
.al-icon{display:inline-flex;vertical-align:-3px;margin-right:6px}
.done-icon svg{width:34px;height:34px}

/* ---------- 顶栏 ---------- */
.topbar{
  background:linear-gradient(100deg,#1fb6a6 0%,#17a396 45%,#0f8f85 100%);
  color:#fff;box-shadow:0 2px 10px rgba(15,143,133,.22);position:sticky;top:0;z-index:60;
}
.topbar-inner{display:flex;align-items:center;gap:14px;min-height:58px;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:8px;color:#fff;font-weight:700;font-size:18px;flex:none}
.logo-mark{
  width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.22);font-size:16px;
}
.nav{display:flex;gap:2px;flex:1}
.nav a{color:rgba(255,255,255,.88);padding:8px 13px;border-radius:9px;font-size:14px;white-space:nowrap}
.nav a:hover,.nav a.on{background:rgba(255,255,255,.2);color:#fff}
/* 顶栏搜索 */
.searchbox{display:flex;margin:0 6px}
.searchbox input{
  width:190px;padding:7px 12px;border:0;border-radius:20px 0 0 20px;font-size:13px;outline:none;
  background:rgba(255,255,255,.92);font-family:inherit;
}
.searchbox button{
  border:0;padding:7px 14px;border-radius:0 20px 20px 0;background:rgba(255,255,255,.28);
  color:#fff;font-size:13px;cursor:pointer;
}
.userbox{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}
.userbox .uname{color:#fff;font-size:14px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.userbox .link{color:rgba(255,255,255,.85);font-size:14px}
.avatar{
  width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.25);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;flex:none;
}
.menu-toggle{display:none;background:rgba(255,255,255,.2);border:0;color:#fff;font-size:19px;
  width:36px;height:32px;border-radius:8px;cursor:pointer;margin-left:auto}

/* ---------- 主体布局 ---------- */
.main{padding-top:20px;display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.main.full{grid-template-columns:1fr}
.content{min-width:0}
.sidebar{position:sticky;top:78px}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.card-title{
  font-size:16px;font-weight:700;color:var(--navy);margin-bottom:14px;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.card-title::before{content:'';width:3px;height:15px;background:var(--teal);border-radius:2px;margin-right:-6px}
.card-title .more{font-size:13px;font-weight:400;color:var(--muted)}

/* ---------- 统计卡（首页） ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.stat-c{
  background:linear-gradient(135deg,#fff,var(--teal-l));border:1px solid #dff0ed;
  border-radius:var(--r);padding:16px;box-shadow:var(--shadow);
}
.stat-c b{display:block;font-size:26px;color:var(--teal-d);line-height:1.2}
.stat-c span{font-size:13px;color:var(--muted)}
.stat-c small{display:block;font-size:12px;color:var(--teal);margin-top:2px}

/* ---------- 板块卡片 ---------- */
.board-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.board-item{
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px;
  transition:.2s;display:block;border-top:3px solid var(--teal);
}
.board-item:hover{border-color:var(--teal);border-top-color:var(--teal-d);box-shadow:0 8px 20px rgba(31,182,166,.16);transform:translateY(-2px)}
.board-item h3{font-size:15px;color:var(--navy);margin-bottom:4px}
.board-item p{font-size:13px;color:var(--muted);line-height:1.5;min-height:39px}
.board-item .count{font-size:12px;color:var(--teal-d);margin-top:6px;display:block}

/* ---------- 帖子列表 ---------- */
.post-list{list-style:none}
.post-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px dashed var(--line);align-items:flex-start}
.post-item:last-child{border-bottom:0}
.post-avatar{width:40px;height:40px;flex:none;border-radius:50%;color:#fff;font-size:15px;
  display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1fb6a6,#0f8f85)}
.post-main{flex:1;min-width:0}
.post-main h3{font-size:16px;font-weight:600;margin-bottom:4px;line-height:1.4}
.post-main h3 a{color:var(--text)}
.post-main h3 a:hover{color:var(--teal-d)}
.post-sum{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.post-meta{font-size:12px;color:var(--muted);margin-top:6px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* ---------- 标签 / Chip ---------- */
.tag{display:inline-block;font-size:12px;padding:2px 9px;border-radius:20px;line-height:1.7}
.tag-ok{background:var(--teal-l);color:var(--teal-d)}
.tag-warn{background:#fdf3e3;color:var(--warn)}
.tag-bad{background:#fceceb;color:var(--bad)}
.tag-info{background:#eaf1f7;color:var(--navy)}
.tag-solved{background:var(--teal-l);color:var(--teal-d)}
.tag-essence{background:linear-gradient(135deg,#1fb6a6,#0f8f85);color:#fff}
/* 身份徽章：创始人金色，管理员深蓝 */
.tag-admin{background:linear-gradient(135deg,#1c4a6e,#123a5a);color:#fff;padding:2px 8px}
.tag-founder{background:linear-gradient(135deg,#e0a51c,#c8890f);color:#fff;padding:2px 8px}
.tag-admin svg,.tag-founder svg{width:12px;height:12px;vertical-align:-1px;margin-right:2px}
.badge-inline{display:inline-flex;align-items:center;gap:4px;vertical-align:middle}

/* 筛选条 */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip{
  padding:6px 14px;border-radius:20px;font-size:13px;background:#fff;border:1px solid var(--line);color:var(--muted);
}
.chip:hover{border-color:var(--teal);color:var(--teal-d)}
.chip.on{background:linear-gradient(135deg,#1fb6a6,#0f8f85);color:#fff;border-color:transparent}

/* ---------- 按钮 / 表单 ---------- */
.btn{
  display:inline-block;border:0;border-radius:10px;padding:9px 18px;font-size:14px;cursor:pointer;
  background:linear-gradient(135deg,#1fb6a6,#0f8f85);color:#fff;transition:.2s;text-align:center;font-family:inherit;
}
.btn:hover{filter:brightness(1.06);color:#fff}
.btn-sm{padding:6px 12px;font-size:13px;border-radius:8px}
.btn-ghost{background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.4)}
.btn-ghost:hover{background:rgba(255,255,255,.32);color:#fff}
.btn-navy{background:linear-gradient(135deg,#1c4a6e,#123a5a)}
.btn-danger{background:linear-gradient(135deg,#e87773,#e05b56)}
.btn-line{background:#fff;border:1px solid var(--line);color:var(--navy)}
.btn-line:hover{border-color:var(--teal);color:var(--teal-d);background:#fff}
.btn-mini{padding:4px 10px;font-size:12px;border-radius:7px}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--navy);margin-bottom:6px;font-weight:600}
.field .tip{font-size:12px;color:var(--muted);margin-top:4px}
input[type=text],input[type=password],input[type=email],input[type=file],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;
  background:#fbfdfd;color:var(--text);outline:none;transition:.2s;font-family:inherit;
}
input:focus,select:focus,textarea:focus{border-color:var(--teal);background:#fff;box-shadow:0 0 0 3px rgba(31,182,166,.13)}
textarea{min-height:170px;line-height:1.8;resize:vertical}

/* ---------- 提示 ---------- */
.alert{padding:10px 14px;border-radius:10px;font-size:14px;margin-bottom:14px}
.alert-ok{background:var(--teal-l);color:var(--teal-d);border:1px solid #c9ebe6}
.alert-bad{background:#fceceb;color:var(--bad);border:1px solid #f5d4d2}
.alert-warn{background:#fdf3e3;color:var(--warn);border:1px solid #f7e2bf}

/* ---------- 分页 ---------- */
.pager{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:16px}
.page-btn{padding:6px 12px;border-radius:8px;background:#fff;border:1px solid var(--line);font-size:13px;color:var(--navy)}
.page-btn:hover{border-color:var(--teal);color:var(--teal-d)}
.page-btn.active{background:linear-gradient(135deg,#1fb6a6,#0f8f85);color:#fff;border-color:transparent}
.page-info{font-size:12px;color:var(--muted);margin-left:6px}

/* ---------- 帖子详情 ---------- */
.post-head h1{font-size:22px;line-height:1.45;color:var(--navy);margin-bottom:10px}
.post-info{font-size:13px;color:var(--muted);display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.post-body{font-size:15px;line-height:1.9;white-space:pre-wrap;word-break:break-word;padding-top:12px;border-top:1px solid var(--line)}
.attach-list{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}
.attach-list a{display:inline-block;padding:6px 12px;background:var(--teal-l);border-radius:8px;font-size:13px;color:var(--teal-d)}
.attach-list img{max-width:220px;border-radius:10px;border:1px solid var(--line)}
.comment-item{padding:12px 0;border-bottom:1px dashed var(--line)}
.comment-item:last-child{border-bottom:0}
.comment-head{font-size:13px;color:var(--navy);font-weight:600;margin-bottom:4px;display:flex;gap:8px;align-items:center}
.comment-head span{color:var(--muted);font-weight:400}
.comment-body{font-size:14px;white-space:pre-wrap;word-break:break-word}

/* ---------- 侧栏 ---------- */
.side-list{list-style:none}
.side-list li{padding:8px 0;border-bottom:1px dashed var(--line);font-size:14px;display:flex;justify-content:space-between;gap:10px}
.side-list li:last-child{border-bottom:0}
.side-list a{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-stat{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.mini-stat div{background:var(--teal-l);border-radius:10px;padding:10px;text-align:center}
.mini-stat b{display:block;font-size:19px;color:var(--teal-d)}
.mini-stat span{font-size:12px;color:var(--muted)}

/* ---------- 后台：左侧导航 ---------- */
.admin-body{background:#f2f6f6}
.admin-shell{display:flex;max-width:1200px;margin:0 auto;gap:0;align-items:flex-start;padding:0}
.admin-side{
  width:200px;flex:none;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);
  padding:12px;margin:20px 0 20px 16px;position:sticky;top:78px;
}
.admin-side .side-h{font-size:12px;color:var(--muted);padding:6px 10px;letter-spacing:1px}
.admin-side a{
  display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:10px;font-size:14px;
  color:var(--navy);margin-bottom:2px;
}
.admin-side a:hover{background:var(--teal-l);color:var(--teal-d)}
.admin-side a.on{background:linear-gradient(135deg,#1fb6a6,#0f8f85);color:#fff}
.admin-side a i{font-style:normal;width:18px;text-align:center;font-size:15px}
.admin-main{flex:1;min-width:0;padding:20px 16px}
.admin-box{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.admin-stat{
  background:linear-gradient(135deg,#fff,var(--teal-l));border:1px solid #dff0ed;border-radius:var(--r);
  padding:16px;box-shadow:var(--shadow);
}
.admin-stat b{display:block;font-size:25px;color:var(--teal-d);line-height:1.2}
.admin-stat span{font-size:13px;color:var(--muted)}

/* ---------- 表格 ---------- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}
th,td{padding:11px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
th{background:#f4f9f9;color:var(--navy);font-size:13px;white-space:nowrap}
tr:hover td{background:#fafdfd}
.td-actions{white-space:nowrap}
.td-actions .btn{margin-right:4px}

/* ---------- 安装向导 ---------- */
.install-box{max-width:680px;margin:34px auto}
.install-head{text-align:center;margin-bottom:22px}
.install-head h1{font-size:24px;color:var(--navy)}
.install-head p{color:var(--muted);font-size:14px;margin-top:6px}
.steps{display:flex;justify-content:center;gap:6px;margin-bottom:22px;flex-wrap:wrap}
.step{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);padding:0 4px}
.step i{width:24px;height:24px;border-radius:50%;background:#dde9e7;color:#fff;font-style:normal;
  display:flex;align-items:center;justify-content:center;font-size:13px}
.step.on{color:var(--teal-d);font-weight:700}
.step.on i{background:linear-gradient(135deg,#1fb6a6,#0f8f85)}
.step.done i{background:var(--teal);}
.env-item{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px dashed var(--line);font-size:14px;gap:10px}
.env-item:last-child{border-bottom:0}
.env-item .val{font-weight:600;text-align:right}
.done-box{text-align:center;padding:20px 0}
.done-icon{
  width:64px;height:64px;margin:0 auto 14px;border-radius:50%;color:#fff;font-size:32px;
  display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1fb6a6,#0f8f85);
  box-shadow:0 6px 18px rgba(31,182,166,.3);
}
.empty{text-align:center;color:var(--muted);padding:30px 0;font-size:14px}
.footer{text-align:center;padding:20px 16px;color:var(--muted);font-size:13px;border-top:1px solid var(--line);margin-top:16px}

/* ---------- 移动端底部 Tab ---------- */
.tabbar{display:none}
.tabbar-admin{display:none}

/* ---------- 响应式 ---------- */
@media (max-width:980px){
  .main{grid-template-columns:1fr}
  .sidebar{position:static}
  .board-grid{grid-template-columns:repeat(2,1fr)}
  .admin-shell{flex-direction:column}
  /* 移动端删除后台顶部横向菜单（与底部 Tab 重复），导航交给底部 */
  .admin-side{display:none !important}
  .admin-main{padding:14px 16px;width:100%}
  .admin-box{grid-template-columns:repeat(2,1fr)}
  /* 后台底部导航在平板/手机上均显示，并为页面留出避让空间 */
  .tabbar-admin{
    display:flex !important;position:fixed;left:0;right:0;bottom:0;z-index:90;
    background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(31,182,166,.12);
    padding:6px 0 calc(6px + env(safe-area-inset-bottom,0px));
  }
  .tabbar-admin a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);padding:4px 0}
  .tabbar-admin a svg{display:block;width:20px;height:20px}
  .tabbar-admin a.on{color:var(--teal-d)}
  .tabbar-admin a.on i{color:var(--teal)}
  .admin-body{padding-bottom:70px}
}
@media (max-width:768px){
  body{font-size:14px;padding-bottom:64px}
  .wrap{padding:0 12px}
  /* 手机顶栏重排：第一行 logo + 登录注册，第二行搜索，第三行板块导航 */
  .topbar-inner{min-height:0;padding-top:9px;padding-bottom:9px;gap:8px 10px}
  .logo{order:1}
  .userbox{order:2}
  .searchbox{order:3;width:100%;margin:0}
  .searchbox input{flex:1;width:auto}
  .menu-toggle{display:none}
  /* 手机导航：换行展示全部板块，不再横向滚动截断 */
  .nav{order:4;display:flex;flex-wrap:wrap;width:100%;flex:none;gap:6px;padding:2px 0 6px}
  .nav a{
    padding:6px 12px;font-size:13px;border-radius:20px;
    background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.2);
  }
  .nav a.on{background:rgba(255,255,255,.34)}
  .userbox .uname{display:none}
  .stats{grid-template-columns:repeat(3,1fr);gap:8px}
  .stat-c{padding:12px 10px;text-align:center}
  .stat-c b{font-size:20px}
  .stat-c span{font-size:11px}
  .stat-c small{font-size:11px}
  .board-grid{grid-template-columns:1fr}
  .board-item p{min-height:0}
  .post-head h1{font-size:19px}
  .card{padding:14px;border-radius:12px}
  .admin-box{grid-template-columns:repeat(2,1fr);gap:10px}
  .admin-stat{padding:12px}
  .admin-stat b{font-size:21px}
  /* 后台顶栏：手机上隐藏"管理中心"后缀，避免标题换行挤压 */
  .hide-sm{display:none}
  .admin-side{margin:12px 12px 0;padding:8px}
  .admin-side a{padding:8px 11px;font-size:13px}
  .admin-main{padding:12px}
  .card{padding:13px}
  /* 后台表格：缩小字号，保证横向滚动顺滑 */
  table{font-size:13px;min-width:560px}
  th,td{padding:9px 8px}
  .td-actions .btn{margin:0 3px 3px 0}
  /* 后台表单：筛选控件与按钮全宽堆叠 */
  .admin-main form select,.admin-main form input[type=text]{width:100%}
  .admin-main .btn-row .btn{flex:1}
  /* 底部 Tab 五等分，图标+文字紧凑 */
  .tabbar a{font-size:11px}
  .tabbar a i{font-size:18px}
  .btn-row .btn{flex:1}
  .mini-stat{grid-template-columns:repeat(2,1fr)}
  /* 底部 Tab 栏 */
  .tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:80;
    background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(31,182,166,.1);
    padding:6px 0 max(6px,env(safe-area-inset-bottom));
  }
  .tabbar a{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
    font-size:11px;color:var(--muted);padding:4px 0;
  }
  .tabbar a i{font-style:normal;font-size:19px;line-height:1}
  .tabbar a.on{color:var(--teal-d)}
  .tabbar a.on i{color:var(--teal)}
}
@media (max-width:400px){
  /* 论坛名称完整展示，仅在超长时才省略 */
  .logo-text{display:inline;font-size:15px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .stats{grid-template-columns:repeat(3,1fr);gap:6px}
  .stat-c b{font-size:18px}
  .nav a{padding:5px 10px;font-size:12px}
}

/* ---------- 超宽屏：放大内容区，避免两侧留白过大 ---------- */
@media (min-width:1400px){
  .wrap{max-width:1320px}
  .main{grid-template-columns:1fr 320px;gap:22px}
  .admin-shell{max-width:1320px}
  .board-grid{grid-template-columns:repeat(4,1fr)}
}

/* ---------- 手机横屏：压缩纵向占用，让内容一屏多见 ---------- */
@media (max-height:520px) and (orientation:landscape) and (max-width:900px){
  body{padding-bottom:54px}
  .stats{gap:8px}
  .stat-c{padding:10px}
  .stat-c b{font-size:18px}
  .card{padding:12px;margin-bottom:12px}
  .main{padding-top:12px}
  .searchbox{display:none}
  .tabbar{padding:3px 0 3px}
  .tabbar a i{font-size:16px}
}

/* ---------- 触摸设备：放大点击热区，防止误触 ---------- */
.is-touch .nav a{padding:10px 13px}
.is-touch .btn-mini{padding:7px 12px;font-size:12px}
.is-touch .page-btn{padding:9px 14px}
.is-touch .tabbar a{padding:6px 0}
.is-touch .side-list li{padding:11px 0}

/* ---------- 桌面端：鼠标悬停才有交互反馈，避免手机"粘滞" ---------- */
@media (hover:hover){
  .board-item:hover{border-color:var(--teal);border-top-color:var(--teal-d);box-shadow:0 8px 20px rgba(31,182,166,.16);transform:translateY(-2px)}
}
@media (hover:none){
  .board-item:active{background:var(--teal-l)}
  .btn:active{filter:brightness(.94)}
}

/* ---------- 打印：隐藏导航与交互元素 ---------- */
@media print{
  .topbar,.tabbar,.admin-side,.footer,.btn,.pager{display:none !important}
  body{background:#fff;padding:0}
  .card,.admin-stat,.stat-c{box-shadow:none;border:1px solid #ddd;break-inside:avoid}
}
