:root{
  --bg:#070a08; --panel:#0c110d; --panel2:#101710; --line:#1d2a1f;
  --fg:#d7e6d8; --dim:#7d907f; --green:#39d353; --green-dim:#1f7a2e;
  --amber:#d9a441; --red:#d9534f; --mono:"Cascadia Mono","Consolas","JetBrains Mono","Courier New",monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:14px}
a{color:var(--green);text-decoration:none}
input,select,textarea,button{font-family:var(--mono);font-size:13px}
input,select,textarea{background:#080d09;border:1px solid var(--line);color:var(--fg);padding:7px 9px;border-radius:2px;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green-dim)}
button{background:#0f1a12;border:1px solid var(--green-dim);color:var(--green);padding:7px 14px;border-radius:2px;cursor:pointer;letter-spacing:.5px}
button:hover{background:#132218}
button.primary{background:var(--green);color:#04140a;border-color:var(--green);font-weight:700}
button.primary:hover{background:#4fe06a}
button.ghost{border-color:var(--line);color:var(--dim)}
button.danger{border-color:#5a2320;color:#e0726d}
button:disabled{opacity:.45;cursor:not-allowed}
#boot{padding:60px;text-align:center;color:var(--dim);letter-spacing:2px}

/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-box{width:100%;max-width:520px;border:1px solid var(--line);background:var(--panel);padding:28px}
.login-box h1{margin:0 0 4px;font-size:19px;letter-spacing:2px;color:var(--green)}
.login-box .en{color:var(--dim);font-size:11px;letter-spacing:2px;margin-bottom:20px}
.login-box .row{margin-bottom:12px}
.login-box label{display:block;color:var(--dim);font-size:11px;margin-bottom:5px;letter-spacing:1px}
.stamp{border:1px solid var(--green-dim);color:var(--green);display:inline-block;padding:2px 8px;font-size:11px;letter-spacing:2px;margin-bottom:14px}

/* 布局：侧栏固定高度、单独滚动，底部账号区永远贴底不重叠 */
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh;align-items:start}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--line);background:var(--panel)}
.brand{flex:0 0 auto;padding:16px 16px 14px;border-bottom:1px solid var(--line)}
.brand .cn{color:var(--green);letter-spacing:2px;font-weight:700}
.brand .en{color:var(--dim);font-size:10px;letter-spacing:1px;margin-top:3px}
.nav{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding-bottom:10px}
.nav::-webkit-scrollbar{width:8px}
.nav::-webkit-scrollbar-thumb{background:#1d2a1f;border-radius:4px}
.nav::-webkit-scrollbar-thumb:hover{background:#2b3d2e}
.nav a{display:block;padding:8px 16px;color:var(--dim);border-left:2px solid transparent}
.nav a:hover{color:var(--fg);background:var(--panel2)}
.nav a.on{color:var(--green);border-left-color:var(--green);background:var(--panel2)}
.side .foot{position:static;flex:0 0 auto;width:auto;padding:12px 16px;border-top:1px solid var(--line);color:var(--dim);font-size:11px;background:var(--panel)}
.main{padding:20px 24px 96px;min-width:0}   /* 底部留出横幅的高度，页面最下面的按钮不会被压住 */
.topbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.topbar h2{margin:0;font-size:16px;letter-spacing:2px;color:var(--green)}
.crumb{color:var(--dim);font-size:11px;letter-spacing:1px}
.who{color:var(--dim);font-size:12px}
.who b{color:var(--fg);font-weight:400}

/* 卡片/表格 */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.card{border:1px solid var(--line);background:var(--panel);padding:14px}
.card .k{color:var(--dim);font-size:11px;letter-spacing:1px}
.card .v{font-size:24px;margin-top:6px;color:var(--green)}
.card .u{color:var(--dim);font-size:11px}
.panel{border:1px solid var(--line);background:var(--panel);padding:14px;margin-bottom:18px}
.panel h3{margin:0 0 12px;font-size:13px;letter-spacing:2px;color:var(--green);font-weight:700}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;color:var(--dim);font-weight:400;border-bottom:1px solid var(--line);padding:7px 8px;white-space:nowrap}
td{border-bottom:1px solid #131c14;padding:7px 8px;vertical-align:middle}
tr:hover td{background:#0e150fd0}
.tag{display:inline-block;border:1px solid var(--line);padding:1px 7px;font-size:11px;color:var(--dim)}
.tag.ok{color:var(--green);border-color:var(--green-dim)}
.tag.warn{color:var(--amber);border-color:#5a4416}
.tag.bad{color:var(--red);border-color:#5a2320}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}
.toolbar .f{min-width:130px}
.toolbar label{display:block;color:var(--dim);font-size:10px;margin-bottom:4px;letter-spacing:1px}
.muted{color:var(--dim)}
.empty{padding:22px;text-align:center;color:var(--dim)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:900px){.shell{grid-template-columns:1fr}.side{display:none}.grid2{grid-template-columns:1fr}}

/* 证件卡 */
.idcard{border:1px solid var(--green-dim);background:linear-gradient(160deg,#0b120c,#070a08);padding:16px;max-width:640px}
.idcard .hd{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:12px}
.idcard .hd .l{color:var(--green);letter-spacing:2px}
.idcard .hd .r{color:var(--dim);font-size:11px}
.idcard .body{display:grid;grid-template-columns:1fr 200px;gap:16px}
.idcard dl{margin:0;display:grid;grid-template-columns:78px 1fr;gap:6px 10px;font-size:12.5px}
.idcard dt{color:var(--dim)}
.idcard dd{margin:0}
.spec{border:1px solid var(--line);padding:8px;background:#06090700}
.spec .cap{color:var(--dim);font-size:10px;letter-spacing:1px;margin-bottom:6px}

/* 弹窗 */
.mask{position:fixed;inset:0;background:#000c;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px 70px;overflow:auto;z-index:1000}
.dialog{border:1px solid var(--green-dim);background:var(--panel);width:100%;max-width:560px;padding:18px}
.dialog h3{margin:0 0 14px;color:var(--green);letter-spacing:2px;font-size:14px}
.form-row{margin-bottom:10px}
.form-row label{display:block;color:var(--dim);font-size:11px;margin-bottom:4px;letter-spacing:1px}
.form-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}

/* toast */
.connbar{position:sticky;top:0;z-index:80;background:#2a1d08;border-bottom:1px solid #5a4416;color:#e8c877;padding:9px 14px;font-size:12.5px;line-height:1.6}
.connbar.bad{background:#2a0f0d;border-bottom-color:#5a2320;color:#f0a49f}
#toast-root{position:fixed;right:16px;bottom:60px;z-index:1500;display:flex;flex-direction:column;gap:8px}
.toast{border:1px solid var(--green-dim);background:#0c1410;color:var(--fg);padding:9px 14px;font-size:12.5px;max-width:420px}
.toast.bad{border-color:#5a2320}
.bar{height:7px;background:#111a12;border:1px solid var(--line)}
.bar > i{display:block;height:100%;background:var(--green)}
pre.body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:12.5px;line-height:1.7}
.kv{color:var(--dim);font-size:11.5px}


/* ---------- 成员端：简报 / 任务卡 / 知识卡（第三批新增） ---------- */
.brief .brief-hd { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.brief .brief-no { font-family: ui-monospace, Consolas, monospace; font-size: 13px; letter-spacing: 1px; color: #7fb3c4; }
.brief .brief-date { font-size: 12px; opacity: .6; margin-top: 2px; }
.brief .headline { margin-top: 14px; padding: 12px 14px; border-left: 3px solid #2c5f6d; background: rgba(127,180,196,.07); font-size: 15px; line-height: 1.8; }
.notice-bar { margin-top: 10px; padding: 10px 14px; border: 1px dashed #6d5a22; background: rgba(200,170,60,.08); color: #d8c07a; font-size: 13px; }
.news-item { padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.news-item:last-child { border-bottom: 0; }
.news-hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.news-hd .muted { font-size: 12px; margin-left: auto; }
.news-body { margin-top: 6px; font-size: 13px; opacity: .85; line-height: 1.7; }

.mgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.mcard { border: 1px solid rgba(255,255,255,.1); border-radius: 6px; padding: 14px; background: rgba(255,255,255,.02); }
.mcard-hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mcard .mcode { font-family: ui-monospace, Consolas, monospace; font-size: 12px; color: #7fb3c4; }
.mcard-title { margin-top: 8px; font-size: 15px; font-weight: 600; color: #e2ebef; }
.mcard-meta { margin-top: 6px; font-size: 12px; opacity: .7; }
.mcard-detail { margin-top: 8px; font-size: 13px; line-height: 1.7; opacity: .85; }
.mcard-sub, .mcard-note { margin-top: 8px; font-size: 12px; padding: 6px 10px; border-radius: 4px; background: rgba(127,180,196,.08); }
.mcard-note { background: rgba(200,170,60,.1); }
.mcard-act { margin-top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }

.lvl { display: inline-block; padding: 1px 7px; border-radius: 3px; font-size: 11px; letter-spacing: .5px; border: 1px solid; }
.lv-S { color: #ff8a8a; border-color: #7a2b2b; background: rgba(255,80,80,.12); }
.lv-A { color: #ffb27a; border-color: #7a4f2b; background: rgba(255,150,60,.12); }
.lv-B { color: #ffd88a; border-color: #7a662b; background: rgba(255,210,80,.1); }
.lv-C { color: #b6d88a; border-color: #4f6b2b; background: rgba(150,210,80,.1); }
.lv-D { color: #8ad0e0; border-color: #2b5f6b; background: rgba(90,190,215,.1); }
.lv-E { color: #9fb6c4; border-color: #3a4a55; background: rgba(150,180,200,.08); }
.lv-F { color: #8b9aa5; border-color: #333c44; background: rgba(140,160,175,.07); }

.kgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
.kcard { border: 1px solid rgba(255,255,255,.1); border-radius: 6px; padding: 14px; background: rgba(255,255,255,.02); }
.kcard-hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.kcard-body { margin-top: 8px; font-size: 13px; line-height: 1.8; opacity: .85; }
.kcard-ft { margin-top: 10px; font-size: 12px; opacity: .55; }

.view-switch { font-size: 12px; opacity: .7; margin-bottom: 6px; }
.switch-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.06); cursor: pointer; }
.switch-row:last-child { border-bottom: 0; }
.switch-row input { margin-top: 3px; width: 16px; height: 16px; }
.switch-row span { font-size: 13px; line-height: 1.6; }


/* ---------- 我的小队卡片（第四批） ---------- */
.mcard-reward { margin-top: 8px; font-size: 12px; color: #9fd0c4; }
.mcard-reward b { color: #b9e8d8; }
.scard { border: 1px solid rgba(255,255,255,.1); border-radius: 6px; padding: 14px; background: rgba(255,255,255,.02); }
.scard-hd { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.scard-name { margin: 8px 0 10px; font-size: 17px; font-weight: 600; color: #e6eef2; letter-spacing: 1px; }
.scard-attrs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; font-size: 13px; }
.scard-attrs > div { display: flex; justify-content: space-between; border-bottom: 1px dashed rgba(255,255,255,.08); padding-bottom: 4px; }
.scard-attrs span { opacity: .6; }
.scard-attrs b { color: #cfe0e8; font-weight: 600; }
.scard-attrs i { font-style: normal; font-size: 11px; opacity: .5; }

/* ============================================================ 底部滚动横幅 ============================================================
   要点：① pointer-events:none —— 横幅绝不能吃掉下面的按钮点击（之前的严重 bug）
        ② 文字从右侧屏幕外进入，向左滚出
        ③ 高度 46px、字号 15px，更醒目 */
.marquee{
  position:fixed; left:0; right:0; bottom:0; z-index:900;
  pointer-events:none;                 /* 关键：永不拦截点击 */
  display:flex; align-items:stretch;
  height:46px; overflow:hidden;
  background:linear-gradient(180deg, rgba(20,30,36,.97), rgba(12,18,22,.99));
  border-top:2px solid var(--amber,#d9a441);
  box-shadow:0 -4px 16px rgba(0,0,0,.5);
  font-size:15px;
}
.marquee.red{
  background:linear-gradient(180deg, rgba(120,22,22,.97), rgba(78,12,12,.99));
  border-top-color:#ff5a4d;
  box-shadow:0 -4px 20px rgba(200,40,30,.45);
}
.marquee-tag{
  flex:0 0 auto; display:flex; align-items:center; gap:6px;
  padding:0 14px; font-size:14px; font-weight:700; letter-spacing:3px;
  background:linear-gradient(180deg,#3c2b0c,#2a1d08); color:#ffd77a;
  border-right:2px solid var(--amber,#d9a441);
}
.marquee.red .marquee-tag{
  background:linear-gradient(180deg,#c0392b,#8e2119); color:#fff; border-right-color:#ff5a4d;
}
.marquee-viewport{ flex:1 1 auto; display:flex; align-items:center; overflow:hidden; }
.marquee-track{
  display:inline-flex; align-items:center; gap:80px; white-space:nowrap;
  animation:marquee-run var(--dur, 28s) linear infinite;
  will-change:transform;
}
.marquee-text{ color:#ffe9b8; font-weight:600; letter-spacing:.5px; text-shadow:0 0 8px rgba(217,164,65,.35); }
.marquee.red .marquee-text{ color:#ffdede; text-shadow:0 0 8px rgba(255,90,77,.4); }
.marquee-track:hover{ animation-play-state:paused; }
/* 从右侧屏外开始 → 完全滚出左侧 */
@keyframes marquee-run{
  from{ transform:translateX(100%); }
  to{ transform:translateX(-100%); }
}

/* ============================================================ 新增：侧栏分组与小徽标 ============================================================ */
.nav-group{
  margin:14px 0 4px; padding:0 12px;
  font-size:11px; letter-spacing:2px; opacity:.45; text-transform:uppercase;
}
.nav-group:first-child{ margin-top:4px; }
.badge{
  display:inline-block; min-width:16px; margin-left:6px; padding:0 5px;
  border-radius:9px; background:#c0392b; color:#fff;
  font-size:11px; line-height:16px; text-align:center;
}
.row-mine{ background:rgba(120,190,160,.10); }

/* ============================================================ 新增：社区 ============================================================ */
.post-hd{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.post-act{ display:flex; gap:8px; margin-top:8px; }
.post-comments{ margin-top:10px; padding-top:8px; border-top:1px solid var(--line,#3b4a55); font-size:13px; }
.post-comments > div{ margin-bottom:4px; }
.crumb{ font-size:13px; margin-bottom:8px; opacity:.85; }

/* ============================================================ 新增：内网聊天 ============================================================ */
.grid-dm{ display:grid; grid-template-columns:280px 1fr; gap:14px; align-items:start; }
@media (max-width:900px){ .grid-dm{ grid-template-columns:1fr; } }
.dm-row{ display:block; padding:8px 10px; border-radius:4px; margin-bottom:4px; border-left:2px solid transparent; }
.dm-row:hover{ background:rgba(255,255,255,.04); }
.dm-row.on{ background:rgba(120,190,160,.10); border-left-color:var(--green,#7fbfa0); }
.dm-thread{
  max-height:460px; overflow-y:auto; padding:10px; margin-top:8px;
  border:1px solid var(--line,#3b4a55); border-radius:4px; background:rgba(0,0,0,.14);
}
.dm-msg{ margin-bottom:10px; }
.dm-msg .dm-meta{ font-size:12px; opacity:.6; margin-bottom:2px; }
.dm-msg .dm-body{ display:inline-block; padding:6px 10px; border-radius:6px; background:rgba(255,255,255,.06); white-space:pre-wrap; }
.dm-msg.mine{ text-align:right; }
.dm-msg.mine .dm-body{ background:rgba(90,150,220,.20); text-align:left; }

/* ============================================================ 新增：投票 ============================================================ */
.vote-opts{ margin-top:10px; }
.vote-opt{
  position:relative; padding:8px 10px; margin-bottom:6px; cursor:pointer;
  border:1px solid var(--line,#3b4a55); border-radius:4px; overflow:hidden;
}
.vote-opt:hover{ border-color:#7fbfa0; }
.vote-opt.on{ border-color:var(--green,#7fbfa0); }
.vote-opt .vote-bar{ position:absolute; left:0; top:0; bottom:0; background:rgba(120,190,160,.16); }
.vote-opt span{ position:relative; }

/* ============================================================ 新增：头像 / 图鉴 / 成就 ============================================================ */
.acct-hd{ display:flex; align-items:center; gap:16px; }
.figure-av{
  flex:0 0 auto; width:56px; height:56px; border-radius:50%; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.06); border:1px solid var(--line,#3b4a55);
  font-size:22px; color:#9fc4d6;
}
.figure-av img{ width:100%; height:100%; object-fit:cover; }
.figure-av.big{ width:88px; height:88px; font-size:34px; }
.figure-av.small{ width:32px; height:32px; font-size:14px; }
.grid-figures{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; }
.grid-figures .figure{
  padding:12px; border:1px solid var(--line,#3b4a55); border-radius:5px;
  background:rgba(255,255,255,.02); display:flex; flex-direction:column; align-items:center; gap:6px; text-align:center;
}
.grid-figures .figure.got{ border-color:var(--green,#7fbfa0); background:rgba(120,190,160,.08); }
.figure-name{ font-size:15px; }
.ach-icon{ font-size:26px; color:#d8b46a; }

/* ============================================================ 新：个人主页（照参考站：封面 + 圆头像 + 称号徽章 + 统计条 + 分组卡片菜单） ============================================================ */
.pf{max-width:820px}
.pf-cover{position:relative;height:140px;overflow:hidden;border:1px solid var(--line);
  background:linear-gradient(120deg,#08110b,#0d1a12 45%,#08110b)}
.pf-cover .grid{position:absolute;inset:0;
  background-image:linear-gradient(rgba(57,211,83,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(57,211,83,.06) 1px,transparent 1px);
  background-size:26px 26px}
.pf-cover .glow{position:absolute;inset:0;background:radial-gradient(circle at 72% 22%,rgba(57,211,83,.16),transparent 58%)}
.pf-cover .noise{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.22) 0 1px,transparent 1px 3px);opacity:.5}
.pf-cover .stamp2{position:absolute;right:14px;top:12px;border:1px solid var(--green-dim);color:var(--green);font-size:11px;padding:2px 8px;letter-spacing:2px}
.pf-cover .line{position:absolute;left:14px;bottom:12px;color:var(--dim);font-size:11px;letter-spacing:2px}
.pf-head{display:flex;align-items:flex-end;gap:16px;margin-top:-46px;padding:0 6px;position:relative;z-index:2}
.pf-av{position:relative;width:100px;height:100px;flex:0 0 auto;border-radius:50%;overflow:hidden;
  border:2px solid var(--green-dim);background:#0a120c;display:flex;align-items:center;justify-content:center;
  font-size:40px;color:#9fc4d6;box-shadow:0 0 0 5px rgba(7,10,8,.85)}
.pf-av img{width:100%;height:100%;object-fit:cover}
.pf-av-btn{position:absolute;right:-4px;bottom:-4px;width:30px;height:30px;border-radius:50%;
   border:1px solid var(--green-dim);background:#0e150f;color:var(--green);cursor:pointer;font-size:14px;
   display:flex;align-items:center;justify-content:center;padding:0;line-height:1;z-index:4;
   box-shadow:0 2px 6px rgba(0,0,0,.45)}
.pf-av-btn svg{width:15px;height:15px;display:block}
/* 圆形容器不能再裁切，否则相机按钮会被切掉一半：改成图片自己带圆角 */
.pf-av,.pf2-av{overflow:visible}
.pf-av img,.pf2-av img{border-radius:50%;display:block}
.pf-av-btn:hover{background:#132218}
.pf-who{padding-bottom:6px;min-width:0}
.pf-name{font-size:19px;letter-spacing:1px;color:var(--fg)}
.pf-sub{color:var(--dim);font-size:11.5px;margin-top:4px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{border:1px solid var(--line);border-radius:2px;padding:2px 8px;font-size:11px;color:var(--dim)}
.chip.on{color:var(--green);border-color:var(--green-dim)}
.chip.gold{color:var(--amber);border-color:#5a4416}
.pf-sign{margin-top:14px;padding:10px 12px;border-left:2px solid var(--green-dim);background:rgba(57,211,83,.04);
  color:#b9c9ba;font-size:12.5px;line-height:1.8;white-space:pre-wrap}
.pf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));margin-top:16px;
  border:1px solid var(--line);background:var(--panel)}
.pf-stats > div{padding:12px 6px;text-align:center;border-right:1px solid var(--line)}
.pf-stats > div:last-child{border-right:0}
.pf-stats b{display:block;font-size:20px;color:var(--green);font-weight:700}
.pf-stats span{display:block;font-size:11px;color:var(--dim);letter-spacing:1px;margin-top:3px}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:16px}
.pf-card{position:relative;border:1px solid var(--line);background:var(--panel);padding:14px}
.pf-card > h4{margin:0 0 10px;font-size:12px;letter-spacing:2px;color:var(--green);font-weight:700}
.pf-t{position:absolute;width:9px;height:9px;border:0 solid var(--green-dim);opacity:.8}
.pf-t.tl{left:-1px;top:-1px;border-left-width:1px;border-top-width:1px}
.pf-t.tr{right:-1px;top:-1px;border-right-width:1px;border-top-width:1px}
.pf-t.bl{left:-1px;bottom:-1px;border-left-width:1px;border-bottom-width:1px}
.pf-t.br{right:-1px;bottom:-1px;border-right-width:1px;border-bottom-width:1px}
.pf-menu{display:grid;grid-template-columns:1fr 1fr;gap:4px}
@media (max-width:560px){ .pf-menu{grid-template-columns:1fr} .pf-cover{height:118px} .pf-av{width:84px;height:84px;font-size:32px} }
.pf-menu a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;
  border:1px solid transparent;color:var(--fg);font-size:13px}
.pf-menu a:hover{background:var(--panel2);border-color:var(--line);color:var(--green)}
.pf-menu a i{font-style:normal;color:var(--dim);font-size:12px}
.pf-dl{margin:0;display:grid;grid-template-columns:92px 1fr;gap:8px 12px;font-size:12.5px}
.pf-dl dt{color:var(--dim)}
.pf-dl dd{margin:0;color:var(--fg)}
.pf-sec{margin-top:18px}
.pf-sec > h4{margin:0 0 10px;font-size:12px;letter-spacing:2px;color:var(--green)}

/* ============================================================ 新：结果条 / 版本更新提示；toast 抬高避免被底部横幅遮住 ============================================================ */
#toast-root{ bottom:60px; z-index:1500 }
.flashbar{
  margin-bottom:14px; padding:10px 14px; font-size:13px; line-height:1.7;
  border:1px solid var(--green-dim); background:rgba(57,211,83,.10); color:#c9f0cf;
}
.flashbar.bad{ border-color:#5a2320; background:rgba(217,83,79,.14); color:#f3c1bd; }
.updbar{
  position:sticky; top:0; z-index:1200; padding:10px 14px; font-size:13px;
  background:#2a1d08; border-bottom:1px solid #5a4416; color:#e8c877;
}
.updbar b{ color:#f0d79a }

/* ============================================================ 新：私聊查找同事 ============================================================ */
.dm-find{ display:flex; gap:6px; margin-bottom:10px }
.dm-find input{ flex:1 1 auto }
.dm-find button{ flex:0 0 auto }
.dm-mini{ max-height:240px; overflow-y:auto }
#dm-find-result .dm-row{ background:rgba(57,211,83,.06) }

/* ============================================================ 个人主页 2.0（照参考站排版：左右分栏 + 活动统计 + 底部标签页） ============================================================ */
.pf-topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.pf-seg{display:inline-flex;border:1px solid var(--line);border-radius:3px;overflow:hidden}
.pf-seg button{background:transparent;border:0;border-right:1px solid var(--line);padding:7px 16px;color:var(--dim)}
.pf-seg button:last-child{border-right:0}
.pf-seg button.on{background:var(--green);color:#04140a;font-weight:700}
.pf2{display:grid;grid-template-columns:330px 1fr;gap:14px;align-items:start}
@media (max-width:1000px){ .pf2{grid-template-columns:1fr} }
.pf2 .panel{margin-bottom:0}
.pf2-left{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:20px 16px}
.pf2-av{position:relative;width:104px;height:104px;border-radius:50%;overflow:visible;border:2px solid var(--green-dim);
  background:#0a120c;display:flex;align-items:center;justify-content:center;font-size:42px;color:#9fc4d6}
.pf2-av img{width:100%;height:100%;object-fit:cover}
.pf2-av .pf-av-btn{width:32px;height:32px;font-size:15px}
.pf2-name{font-size:19px;color:var(--green);letter-spacing:1px;font-weight:700}
.pf2-line{font-size:12.5px;color:var(--dim);display:flex;align-items:center;gap:6px;justify-content:center;flex-wrap:wrap}
.pf2-line b{color:var(--fg);font-weight:400}
.pf2-sign{margin-top:4px;padding:8px 12px;border-left:2px solid var(--green-dim);background:rgba(57,211,83,.05);
  color:#b9c9ba;font-size:12.5px;line-height:1.7;white-space:pre-wrap;text-align:left;max-width:100%}
.pf2-lv{display:flex;align-items:center;gap:8px;width:100%;margin-top:6px}
.lv-badge{flex:0 0 auto;background:#1d5fa8;color:#fff;font-size:12px;font-weight:700;padding:3px 9px;border-radius:3px;letter-spacing:1px}
.exp-wrap{flex:1 1 auto}
.exp-bar{height:8px;background:#0f1a12;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.exp-bar > i{display:block;height:100%;background:linear-gradient(90deg,#1f7a2e,#39d353)}
.exp-txt{font-size:11px;color:var(--dim);margin-top:4px;text-align:left}
.pf2-stats{display:grid;grid-template-columns:repeat(4,1fr);width:100%;border-top:1px solid var(--line);padding-top:12px;margin-top:6px}
.pf2-stats > div{text-align:center;border-right:1px solid var(--line)}
.pf2-stats > div:last-child{border-right:0}
.pf2-stats b{display:block;font-size:18px;color:var(--green)}
.pf2-stats span{font-size:11px;color:var(--dim)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px}
.stat-card{border:1px solid var(--line);background:rgba(255,255,255,.02);padding:12px 8px 11px;
 text-align:center;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.stat-card .ico{width:26px;height:26px;border-radius:8px;background:rgba(78,201,160,.10);
 border:1px solid rgba(78,201,160,.16);display:flex;align-items:center;justify-content:center;
 line-height:0;margin:0 auto 8px}
.stat-card .ico svg{width:17px;height:17px}
.stat-card{padding:14px 10px 12px}
.stat-card .num{font-size:21px;font-weight:700;margin:4px 0 2px;color:var(--green)}
.stat-card .lab{font-size:11.5px;color:var(--dim)}
.stat-card.c1 .num{color:#39d353}.stat-card.c2 .num{color:#d9a441}.stat-card.c3 .num{color:#d9d941}
.stat-card.c4 .num{color:#5aa9e6}.stat-card.c5 .num{color:#e0726d}.stat-card.c6 .num{color:#b98ae0}
.pf-tabbar{display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:10px 0;margin:16px 0 14px}
.pf-tabbar button{background:transparent;border:1px solid transparent;color:var(--dim);padding:6px 12px;font-size:12.5px}
.pf-tabbar button:hover{color:var(--fg);border-color:var(--line)}
.pf-tabbar button.on{color:var(--fg);border-color:var(--green-dim);background:rgba(57,211,83,.08)}

/* 界面文案编辑行 */
.content-row{display:grid;grid-template-columns:210px 1fr;gap:10px;align-items:center;padding:5px 0;border-bottom:1px dashed rgba(255,255,255,.06)}
.content-row:last-child{border-bottom:0}
.content-lab{font-size:12.5px;color:var(--fg)}
.content-lab i{display:block;font-style:normal;font-size:10.5px;color:var(--dim);opacity:.7}
@media (max-width:700px){ .content-row{grid-template-columns:1fr} }

/* ============================================================ 手机端：顶部菜单条 + 抽屉式侧栏 ============================================================ */
.mobilebar{display:none}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}
  .mobilebar{
    display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:700;
    padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line);
  }
  .side{
    display:none;position:fixed;top:0;bottom:0;left:0;width:82%;max-width:320px;height:100vh;z-index:800;
    box-shadow:4px 0 24px rgba(0,0,0,.6);
  }
  .shell.nav-open .side{display:flex}
  .main{padding:14px 14px 110px}
  .pf2{grid-template-columns:1fr}
  .grid-dm{grid-template-columns:1fr}
}

/* ============================================================ 顶部横幅（置顶、不遮挡内容、无缝自适应滚动） ============================================================ */
.marquee{
  position:sticky; top:0; left:0; right:0; z-index:950;
  pointer-events:none;                 /* 永不拦截点击 */
  display:flex; align-items:stretch;
  height:44px; overflow:hidden;
  background:linear-gradient(180deg, rgba(20,30,36,.985), rgba(12,18,22,.995));
  border-bottom:2px solid var(--amber,#d9a441);
  box-shadow:0 4px 16px rgba(0,0,0,.55);
  font-size:15px;
}
.marquee.red{
  background:linear-gradient(180deg, rgba(120,22,22,.985), rgba(78,12,12,.995));
  border-bottom-color:#ff5a4d; box-shadow:0 4px 20px rgba(200,40,30,.5);
}
.marquee-tag{
  flex:0 0 auto; display:flex; align-items:center; gap:6px;
  padding:0 14px; font-size:14px; font-weight:700; letter-spacing:3px;
  background:linear-gradient(180deg,#3c2b0c,#2a1d08); color:#ffd77a;
  border-right:2px solid var(--amber,#d9a441);
}
.marquee.red .marquee-tag{ background:linear-gradient(180deg,#c0392b,#8e2119); color:#fff; border-right-color:#ff5a4d; }
.marquee-viewport{ flex:1 1 auto; display:flex; align-items:center; overflow:hidden; }
.marquee-track{
  display:inline-flex; align-items:center; white-space:nowrap; will-change:transform;
  animation:marquee-run var(--dur,30s) linear infinite;
}
.marquee-track:hover{ animation-play-state:paused; }
.marquee-text{ color:#ffe9b8; font-weight:600; padding:0 46px; text-shadow:0 0 8px rgba(217,164,65,.35); }
.marquee.red .marquee-text{ color:#ffdede; text-shadow:0 0 8px rgba(255,90,77,.4); }
/* 轨道内容做两份，走到 -50% 时与开头完全对齐 → 无缝、间隔恒定 */
@keyframes marquee-run{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
body.has-banner .shell{ min-height:calc(100vh - 44px) }
body.has-banner .side{ height:calc(100vh - 44px) }

/* ============================================================ 顶部悬浮提示（10 秒，可提前关闭） ============================================================ */
#float-root{position:fixed;left:50%;top:calc(12px + var(--top-offset,0px));transform:translateX(-50%);
  z-index:2200;display:flex;flex-direction:column;gap:10px;width:min(760px,96vw);pointer-events:none}
.float-card{
  pointer-events:auto; display:flex; align-items:flex-start; gap:10px;
  padding:12px 14px; border-radius:6px; font-size:13.5px; line-height:1.7;
  box-shadow:0 8px 28px rgba(0,0,0,.55); animation:float-in .18s ease-out;
}
@keyframes float-in{ from{opacity:0; transform:translateY(-10px)} to{opacity:1; transform:none} }
.float-card.ok{ background:linear-gradient(180deg,#12281a,#0e1f14); border:1px solid var(--green-dim,#1f7a2e); color:#cdeccf; }
.float-card.bad{ background:linear-gradient(180deg,#2c1411,#231010); border:1px solid #7d2b24; color:#f6cfc9; }
.float-card.warn{ background:linear-gradient(180deg,#2a1d08,#1f1506); border:1px solid #7a5a17; color:#f0d79a; }
.float-card .ico{flex:0 0 auto;font-size:16px;line-height:1.4}
.float-card .body{flex:1 1 auto;white-space:pre-wrap;word-break:break-word}
.float-card .x{flex:0 0 auto;background:transparent;border:0;color:inherit;opacity:.65;cursor:pointer;font-size:15px;padding:0 2px}
.float-card .x:hover{opacity:1}
.float-card .bar-l{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:6px 0 0 6px;background:currentColor;opacity:.5}

/* 内容编辑行 */
.term-row{border:1px solid var(--line);border-radius:4px;padding:10px 12px;margin-bottom:8px;background:rgba(255,255,255,.015)}
.term-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.term-row pre.body{opacity:.9}

/* 手机端顶部菜单条要避开横幅 */
body.has-banner .mobilebar{ top:44px }

/* ---------------- 内联 SVG 图标 ---------------- */
.ic{ vertical-align:-2px; flex:0 0 auto }
.stat-card .ico{ color:var(--acc, #4ec9a0); display:flex; align-items:center; margin-bottom:6px }
.pf2-sub .kv, .pf2-line .kv{ display:inline-flex; align-items:center; gap:4px }
.pf-av-btn{ display:flex; align-items:center; justify-content:center }
.ach-icon{ color:#d7b45a }
.mcard .ic{ margin-right:4px }

/* ---------------- 职位系统 ---------------- */
.pos-mine{ display:flex; flex-wrap:wrap; gap:18px 28px; padding:12px 14px; border:1px solid var(--border); border-radius:10px }
.pos-mine>div{ display:flex; flex-direction:column; gap:4px }
.pos-mine .kv{ font-size:12px; color:var(--muted-foreground) }
.pos-desc{ margin-top:14px; border-top:1px dashed var(--border); padding-top:10px; display:flex; flex-direction:column; gap:6px }
.pos-line{ display:flex; gap:10px; font-size:13px }
.pos-line b{ flex:0 0 96px; color:var(--acc, #4ec9a0) }
.pos-line span{ color:var(--muted-foreground) }

/* =============== 侧栏小红点 / 顶栏搜索 =============== */
.nav a{ position:relative }
.nav .badge{ position:absolute; right:8px; top:50%; transform:translateY(-50%);
  min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:#c62828; color:#fff;
  font-size:11px; line-height:18px; text-align:center; font-weight:700; box-shadow:0 0 0 2px rgba(0,0,0,.35) }
.nav .badge.dot{ min-width:9px; height:9px; padding:0; border-radius:50% }
.topsearch{ position:relative; flex:1 1 auto; max-width:520px; margin:0 16px }
.topsearch input{ width:100%; background:#0b120d; border:1px solid var(--line); color:var(--fg);
  padding:8px 12px 8px 32px; border-radius:4px; font-size:12.5px }
.topsearch input:focus{ border-color:var(--green-dim); outline:none }
.topsearch .mag{ position:absolute; left:10px; top:50%; transform:translateY(-50%); color:var(--dim); line-height:0 }
.sres{ position:absolute; left:0; right:0; top:calc(100% + 6px); z-index:60; max-height:62vh; overflow:auto;
  background:#0c1410; border:1px solid var(--green-dim); border-radius:6px; box-shadow:0 14px 40px rgba(0,0,0,.6) }
.sres .grp{ padding:8px 12px 4px; color:var(--green); font-size:11px; letter-spacing:1px }
.sres a{ display:block; padding:7px 12px; border-top:1px solid rgba(255,255,255,.04); color:var(--fg); font-size:12.5px }
.sres a:hover{ background:rgba(78,201,160,.08) }
.sres .meta{ color:var(--dim); font-size:11px }
.sres .none{ padding:12px; color:var(--dim) }

/* =============== 总部概览（指挥中心） =============== */
.dash-hd{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:14px; padding:2px 0 10px; border-bottom:1px solid var(--line) }
.dash-hd h1{ font-size:20px; letter-spacing:2px; margin:0 }
.dash-hd .en{ color:var(--dim); font-size:10.5px; letter-spacing:2px }
.dash-hd .live{ margin-left:auto; color:var(--green); font-size:12px }
.dash-hd .live i{ display:inline-block; width:7px; height:7px; border-radius:50%; background:#39d353; margin-right:6px;
  animation:pulse 1.6s infinite }
@keyframes pulse{ 0%{opacity:.35} 50%{opacity:1} 100%{opacity:.35} }
.dash-strip{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin:14px 0 }
.dash-kpi{ border:1px solid var(--line); border-radius:6px; background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.01));
  padding:12px 14px; display:flex; align-items:center; gap:12px }
.dash-kpi .ico{ width:38px; height:38px; border-radius:9px; display:flex; align-items:center; justify-content:center;
  background:rgba(78,201,160,.10); color:var(--green); line-height:0 }
.dash-kpi .num{ font-size:21px; font-weight:700; color:var(--fg); line-height:1.15 }
.dash-kpi .lab{ color:var(--dim); font-size:11.5px }
.dash-kpi .delta{ color:#e0726d; font-size:11px }
.dash-kpi .delta.up{ color:#39d353 }
.dash-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:12px; align-items:stretch }
@media (min-width:1100px){
  .dash-grid{ grid-template-columns:repeat(3,minmax(0,1fr)) }
  .dash-card{ min-height:100% }
}
.dash-card{ display:flex; flex-direction:column }
.dash-card > .foot{ margin-top:auto; padding-top:10px }
.dash-strip{ grid-template-columns:repeat(4,minmax(0,1fr)) }
.dash-card{ border:1px solid var(--line); border-radius:6px; background:var(--panel); padding:12px 14px }
.dash-card h3{ margin:0 0 4px; font-size:13px; letter-spacing:1px; color:var(--fg) }
.dash-card .en{ color:var(--dim); font-size:10px; letter-spacing:1.5px; margin-bottom:10px }
.dash-card .foot{ margin-top:10px; color:var(--dim); font-size:11px }
.quick{ display:grid; grid-template-columns:repeat(auto-fit,minmax(96px,1fr)); gap:8px }
.quick a{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:12px 6px; border:1px solid var(--line);
  border-radius:6px; color:var(--fg); font-size:11.5px; background:rgba(255,255,255,.02) }
.quick a:hover{ border-color:var(--green-dim); color:var(--green) }
.quick a .q-ic{ color:var(--green); line-height:0 }
.bar-row{ display:flex; align-items:center; gap:8px; margin:5px 0; font-size:11.5px }
.bar-row .k{ flex:0 0 42px; color:var(--dim) }
.bar-row .track{ flex:1 1 auto; height:8px; background:rgba(255,255,255,.05); border-radius:4px; overflow:hidden }
.bar-row .track i{ display:block; height:100%; background:linear-gradient(90deg,#1f7a2e,#39d353) }
.bar-row .v{ flex:0 0 62px; text-align:right; color:var(--fg) }
.rank-row{ display:flex; align-items:center; gap:8px; padding:5px 0; border-bottom:1px dashed rgba(255,255,255,.05); font-size:12px }
.rank-row:last-child{ border-bottom:0 }
.rank-row .n{ width:18px; color:var(--dim) }
.rank-row .a{ flex:1 1 auto }
.rank-row .c{ color:var(--green) }
.evrow{ display:flex; align-items:center; gap:8px; padding:6px 0; border-bottom:1px dashed rgba(255,255,255,.05); font-size:12px }
.evrow:last-child{ border-bottom:0 }
.evrow .lv{ flex:0 0 auto }
.topics{ display:flex; flex-wrap:wrap; gap:6px }
.topics a{ border:1px solid var(--line); border-radius:14px; padding:4px 10px; font-size:11.5px; color:var(--fg) }
.topics a:hover{ border-color:var(--green-dim); color:var(--green) }
.topics a b{ color:var(--green); margin-left:5px }
.alertbox{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:8px }
.alertbox > div{ border:1px solid var(--line); border-radius:6px; padding:10px; text-align:center }
.alertbox b{ display:block; font-size:20px }
.alertbox span{ font-size:11px; color:var(--dim) }
.alertbox .s b{ color:#ff6b6b } .alertbox .a b{ color:#e0a06d } .alertbox .b b{ color:#d9d941 }
.threat{ display:flex; align-items:center; gap:14px }
.threat .ring{ width:76px; height:76px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:17px; font-weight:700; color:var(--fg);
  background:conic-gradient(#ff6b6b var(--p), rgba(255,255,255,.07) 0) }
.threat .ring span{ width:58px; height:58px; border-radius:50%; background:#0b120d; display:flex; align-items:center; justify-content:center }
.duty-list{ display:flex; flex-direction:column; gap:6px; font-size:12px }
.duty-list .row{ display:flex; justify-content:space-between; border-bottom:1px dashed rgba(255,255,255,.05); padding:4px 0 }
.big-progress{ border:1px solid var(--line); border-radius:6px; padding:10px 12px; margin:10px 0 }
.big-progress .hd{ display:flex; justify-content:space-between; font-size:12px; margin-bottom:6px }
.big-progress .track{ height:10px; border-radius:5px; background:rgba(255,255,255,.06); overflow:hidden }
.big-progress .track i{ display:block; height:100%; background:linear-gradient(90deg,#1f7a2e,#39d353) }

/* =============== 部门内网频道 =============== */
.dm-tabs{ display:flex; gap:6px; margin-bottom:12px; border-bottom:1px solid var(--line); padding-bottom:8px }
.dm-tabs button{ background:transparent; border:1px solid transparent; color:var(--dim); padding:6px 14px; font-size:12.5px; border-radius:4px }
.dm-tabs button.on{ color:var(--green); border-color:var(--green-dim); background:rgba(57,211,83,.06) }
.dm-msg .who{ font-size:11px; color:var(--green) }

/* =============== 审核弹窗里的提交内容 =============== */
.rev-info{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px 14px;
  border:1px solid var(--line); border-radius:6px; padding:10px 12px; margin-bottom:10px }
.rev-info > div{ display:flex; flex-direction:column; gap:2px }
.rev-info span{ color:var(--dim); font-size:11px }
.rev-sub{ border-left:3px solid var(--green-dim); background:rgba(57,211,83,.05); padding:9px 12px;
  border-radius:0 6px 6px 0; font-size:12.5px; line-height:1.75; white-space:pre-wrap; word-break:break-word }
.rev-rep{ border:1px solid var(--line); border-radius:6px; padding:8px 11px; margin-bottom:7px; background:rgba(255,255,255,.015) }
.rev-body{ font-size:12.5px; line-height:1.75; white-space:pre-wrap; word-break:break-word; color:#cfe0d2 }
.pw-view{ font-family:ui-monospace,Consolas,monospace; letter-spacing:.5px; color:var(--green) }

/* =============== 小队成员操作 =============== */
.scard-act{ display:flex; gap:6px; margin-top:8px }
.trim-bar{ border:1px solid #7d2b24; background:rgba(224,114,109,.08); border-radius:6px; padding:10px 12px;
  margin-bottom:12px; font-size:12.5px; color:#f6cfc9 }

@media (max-width: 760px){
  .dash-strip{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .dash-grid{ grid-template-columns:1fr }
  .dash-hd h1{ font-size:17px }
  .topsearch{ margin:6px 0 }
  .topbar{ flex-wrap:wrap }
}
