:root{
  --bg:#EFF1F3; --surface:#FFFFFF; --raised:#F7F8FA; --sunk:#E7EAEE;
  --ink:#12161C; --ink-2:#39424F; --muted:#5D6673; --faint:#8B94A1;
  --line:#DCE1E7; --line-2:#C8CFD8;
  --accent:#B5760A; --accent-ink:#8A5A06; --mark:rgba(224,168,38,.34);
  --video:#126F66; --image:#4A5462; --carousel:#6A4A94; --ok:#2E7D4F; --warn:#A8324C; --off:#7A8290;
  --shadow:0 1px 2px rgba(16,22,30,.05),0 8px 24px -12px rgba(16,22,30,.18);
  --s-draft:#5D6673; --s-approved:#215F98; --s-shooting:#7A3F86; --s-live:#2E7D4F; --s-paused:#96581F; --s-killed:#A8324C; --s-withdrawn:#7A8290; --s-archived:#8A6A2B;
}
@media (prefers-color-scheme:dark){ :root{
  --bg:#0C0F14; --surface:#141922; --raised:#1A202A; --sunk:#0F131A;
  --ink:#E9EDF2; --ink-2:#B9C2CE; --muted:#8B95A3; --faint:#6B7482;
  --line:#242C37; --line-2:#333D4B; --accent:#EBB03C; --accent-ink:#F3C566; --mark:rgba(235,176,60,.24);
  --shadow:0 1px 2px rgba(0,0,0,.5),0 10px 28px -14px rgba(0,0,0,.7);
}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 "Noto Sans SC",-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
[hidden]{display:none!important}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,textarea,select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:8px;padding:8px 10px}
textarea{width:100%;min-height:180px;line-height:1.7;resize:vertical}
input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .faint{color:var(--faint)} .err{color:var(--warn)}
.eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:13px;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.ghost{border-color:transparent;color:var(--muted)}
.btn.danger{color:var(--warn);border-color:var(--warn)}
.btn:disabled{opacity:.5;cursor:default}

.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.loginbox{width:min(380px,100%);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:var(--shadow);display:grid;gap:12px}
.loginbox h1{margin:0;font-family:"Archivo",sans-serif;font-size:26px;letter-spacing:-.02em}
.loginbox label{display:grid;gap:4px;font-size:12.5px;color:var(--muted)}
.loginbox input{width:100%}

.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:18px;padding:10px 22px;background:var(--surface);border-bottom:1px solid var(--line)}
.brand{display:grid;line-height:1.1}.brand .h{font-family:"Archivo",sans-serif;font-weight:800;font-size:18px;letter-spacing:-.02em}
.nav{display:flex;gap:2px;margin-left:8px}
.nav button{padding:8px 14px;border-radius:8px;font-weight:600;color:var(--muted)}
.nav button[aria-pressed="true"]{background:var(--raised);color:var(--ink)}
.top .right{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12px}

.view{padding:18px 22px 60px;max-width:1500px;margin:0 auto}
.toolbar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-bottom:14px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{padding:5px 11px;border-radius:999px;border:1px solid var(--line-2);font-size:12.5px;font-weight:600;color:var(--muted);background:var(--surface)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip .n{opacity:.7;margin-left:4px;font-family:"IBM Plex Mono",monospace;font-size:11px}
.search{min-width:260px;flex:1}
.stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-width:120px}
.stat .n{font-family:"Archivo",sans-serif;font-weight:800;font-size:24px;line-height:1;letter-spacing:-.02em}
.stat .l{font-size:12px;color:var(--muted);margin-top:4px}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);text-align:left;padding:0;overflow:hidden;display:flex;flex-direction:column}
.card:hover{border-color:var(--line-2)}
.card .ch{display:flex;align-items:center;gap:10px;padding:12px 14px 6px}
.card .av{width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:"Archivo",sans-serif;font-weight:800;font-size:12px;flex:none}
.card .av.budget{background:#2E7D4F}
.card .pn{font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.card .ps{font-size:11.5px;color:var(--muted)}
.card .cap{padding:0 14px 10px;font-size:13.5px;color:var(--ink-2);white-space:pre-line;max-height:5.2em;overflow:hidden;position:relative}
.card .cap:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.6em;background:linear-gradient(transparent,var(--surface))}
.card .media{background:var(--sunk);padding:16px 14px;min-height:88px;display:flex;align-items:center;justify-content:center;text-align:center}
.card .media .t{font-family:"Archivo","Noto Sans SC",sans-serif;font-weight:800;font-size:17px;line-height:1.3;letter-spacing:-.01em}
.card .foot{margin-top:auto;padding:10px 14px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.tag{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.02em;background:var(--raised);border:1px solid var(--line)}
.tag.s{color:#fff;border-color:transparent}
.tag.fmt-video{color:var(--video)} .tag.fmt-image{color:var(--image)} .tag.fmt-carousel{color:var(--carousel)}
.empty{background:var(--surface);border:1px dashed var(--line-2);border-radius:14px;padding:40px;text-align:center;color:var(--muted)}
.empty h2{margin:0 0 8px;font-family:"Archivo",sans-serif;color:var(--ink)}

.ov{position:fixed;inset:0;background:rgba(10,14,20,.55);z-index:20;display:flex;justify-content:flex-end}
.dlg{width:min(980px,100%);height:100%;background:var(--surface);border-left:1px solid var(--line);overflow:auto;display:flex;flex-direction:column}
.dh{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--line);padding:14px 22px;display:grid;gap:10px;z-index:2}
.dh .row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.dh .title{font-family:"Archivo","Noto Sans SC",sans-serif;font-weight:800;font-size:20px;letter-spacing:-.02em;flex:1;min-width:240px;border:0;border-bottom:1px dashed var(--line-2);border-radius:0;padding:4px 0;background:none}
.dh input.small{width:150px}
.dh select{padding:6px 8px}
.tabs{display:flex;gap:2px;overflow-x:auto;margin-bottom:-15px}
.tab{padding:9px 14px;font-size:13.5px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.tab[aria-selected="true"]{color:var(--ink);font-weight:700;border-bottom-color:var(--accent)}
.db{padding:18px 22px 40px;display:grid;gap:14px}
.field{display:grid;gap:6px}
.field .lab{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;align-items:baseline}
.field .lab .cnt{font-family:"IBM Plex Mono",monospace;font-size:11px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:700px){.two{grid-template-columns:1fr}.dlg{width:100%}}
.md{white-space:pre-wrap;font-family:"IBM Plex Mono",monospace;font-size:12.5px;line-height:1.65;background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:14px;max-height:60vh;overflow:auto}
.ver{display:flex;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px}
.ver .v{font-family:"IBM Plex Mono",monospace;font-weight:700}
.dfoot{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 22px;display:flex;gap:10px;align-items:center}
.dfoot .st{margin-left:auto;font-size:12px;color:var(--muted)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-size:13px;z-index:50;box-shadow:var(--shadow)}
mark{background:var(--mark);color:inherit;padding:0 2px;border-radius:2px}

/* ---------- 战报 ---------- */
.fresh{font-size:12.5px;color:var(--muted);background:var(--raised);border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:12px}
.fresh.stale{border-color:var(--warn);color:var(--warn)}
.camp{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin-bottom:14px;box-shadow:var(--shadow)}
.camph{display:flex;align-items:baseline;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.camph h3{margin:0;font-family:"Archivo","Noto Sans SC",sans-serif;font-size:16px;letter-spacing:-.01em}
.tblwrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{position:sticky;top:0;background:var(--raised);text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
.tbl.small td,.tbl.small th{padding:5px 8px;font-size:12.5px}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;font-family:"IBM Plex Mono",monospace;font-size:12.5px}
.tbl .nm .sub{font-size:11px;color:var(--muted);font-family:"Noto Sans SC",sans-serif}
.tbl .cr{max-width:220px;overflow:hidden;text-overflow:ellipsis}
.tbl .lamp{font-size:15px;cursor:help}
.tbl tr.adrow{cursor:pointer}.tbl tr.adrow:hover td{background:var(--raised)}
.tbl tr.off td{color:var(--faint)}
.tbl tr.subtotal td{background:var(--raised);font-weight:700;border-top:2px solid var(--line-2)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--faint);margin-right:5px;vertical-align:middle}.dot.on{background:var(--ok)}
.good{color:var(--ok)!important}.ok{color:#8A6A2B!important}.warn{color:#96581F!important}.bad{color:var(--warn)!important}
.stat .n.good{color:var(--ok)}.stat .n.ok{color:#8A6A2B}.stat .n.warn{color:#96581F}.stat .n.bad{color:var(--warn)}
.todo{background:var(--surface);border:1px solid var(--warn);border-radius:12px;padding:12px 16px;margin-bottom:14px}
.todo h3{margin:0 0 6px;font-size:14px;color:var(--warn)}.todo ul{margin:0;padding-left:18px;font-size:13px}.todo li{margin:3px 0}
/* ---------- 实验 ---------- */
.expform{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px;display:grid;gap:12px}
.explist{display:grid;gap:8px}
.exp{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.exp header{display:flex;gap:12px;align-items:center;padding:12px 16px;cursor:pointer;flex-wrap:wrap}
.exp header .d{color:var(--muted);font-size:12.5px}.exp header .t{font-weight:700;flex:1;min-width:200px}
.exp .body{padding:4px 16px 14px;border-top:1px solid var(--line)}
.md{font-size:13.5px;line-height:1.7}.md table{border-collapse:collapse;font-size:12.5px;margin:8px 0;display:block;overflow-x:auto;max-width:100%}
.md th,.md td{border:1px solid var(--line);padding:4px 8px;white-space:nowrap}.md th{background:var(--raised)}
.md h3{font-size:14px;margin:12px 0 4px}.md pre{background:var(--raised);padding:8px;border-radius:6px;overflow-x:auto}.md blockquote{margin:6px 0;padding-left:10px;border-left:3px solid var(--line-2);color:var(--muted)}
/* ---------- 影片 ---------- */
.vidbox video{width:100%;max-height:60vh;background:#000;border-radius:10px}
.vidbox .none{color:var(--muted);font-size:13px;padding:24px;text-align:center;border:1px dashed var(--line-2);border-radius:10px}
.thumbwrap img{max-height:160px;border-radius:8px;margin-top:8px;border:1px solid var(--line)}
/* ---------- 手机 ---------- */
@media (max-width:700px){
  .top{padding:8px 12px;gap:8px;flex-wrap:wrap}.top .brand .h{font-size:16px}.nav{order:3;width:100%;overflow-x:auto;margin:0}.nav button{padding:6px 10px}.top .right{margin-left:auto}
  .view{padding:12px 10px 60px}.toolbar{gap:6px 8px}.search{min-width:0;width:100%}
  .grid{grid-template-columns:1fr}.stats{gap:6px}.stat{min-width:calc(50% - 6px);flex:1}
  .dh{padding:10px 12px}.db{padding:12px}.dfoot{padding:10px 12px}.dh .title{font-size:17px}
  .tbl td,.tbl th{padding:6px 6px;font-size:12px}
}
.linkbtn{color:var(--accent-ink);text-decoration:underline dotted;text-underline-offset:3px;padding:0;text-align:left;font:inherit;cursor:pointer}
.linkbtn:hover{color:var(--accent)}
