/* 复刻审核台 — 与 agent.html / poc.html 同一套暗色 token */
:root{--bg:#0f1216;--panel:#161b22;--panel2:#1d242e;--line:#2a323d;--txt:#dbe2ea;--dim:#9aa8b5;
--muted:#7d8894;--acc:#e8c34a;--green:#4ac07a;--yellow:#e8a13a;--red:#f0564a;--blue:#5aa9e6;
--green-bg:rgba(74,192,122,.12);--red-bg:rgba(240,86,74,.12);--yellow-bg:rgba(232,161,58,.12);--blue-bg:rgba(90,169,230,.12);
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--txt);font:14px/1.6 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

header{padding:12px 24px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:10;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
header h1{font-size:17px;margin:0}
header .sub{color:var(--dim);font-size:12px}
header .spacer{flex:1}
main{max-width:1320px;margin:0 auto;padding:18px 24px 60px}

/* 筛选行 */
.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel)}
.seg button{background:none;border:0;padding:7px 12px;cursor:pointer;color:var(--dim);font-size:13px;min-height:36px}
.seg button+button{border-left:1px solid var(--line)}
.seg button:hover{color:var(--txt);background:var(--panel2)}
.seg button.active{color:var(--acc);background:var(--panel2);font-weight:600}
.filters select,.filters input{padding:7px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--txt);font-size:13px;min-height:36px}
.filters .count{color:var(--dim);font-size:12px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);cursor:pointer;font-size:13px;min-height:36px;line-height:1.2}
.btn:hover{border-color:var(--dim)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.primary{background:var(--green);border-color:var(--green);color:#0b1a11;font-weight:600}
.btn.primary:hover{filter:brightness(1.08)}
.btn.danger{background:var(--red-bg);border-color:var(--red);color:var(--red);font-weight:600}
.btn.danger:hover{background:rgba(240,86,74,.22)}
.btn.ghost{background:none}

/* 进行中 */
.progress{margin-bottom:14px;padding:12px 14px}
.progress-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:0;cursor:pointer;list-style:none}
.progress-head::-webkit-details-marker{display:none}
.progress-head::before{content:'▸';color:var(--muted);font-size:12px;margin-right:2px}
.progress[open] .progress-head::before{content:'▾'}
.progress[open] .progress-head{margin-bottom:8px}
.progress-head h2{font-size:14px;margin:0;color:var(--acc)}
.prog-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(150px,1fr) minmax(120px,.9fr) minmax(220px,2.4fr) minmax(120px,.8fr);gap:12px;align-items:center;padding:9px 4px;border-top:1px solid var(--line)}
.prog-row:first-child{border-top:0}
.prog-row .name{font-weight:600}
.prog-row .key{color:var(--muted);font-size:11px;font-family:var(--mono)}
.prog-row .bar{height:6px;border-radius:4px;background:var(--panel2);overflow:hidden;margin-top:4px}
.prog-row .bar i{display:block;height:100%;background:var(--acc)}
.prog-row .sk{font-variant-numeric:tabular-nums}
.prog-row .sk b{font-size:16px}
.prog-row .sk.ok b{color:var(--green)}
.prog-row .note{color:var(--dim);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.prog-row .when{color:var(--muted);font-size:12px;text-align:right}
.prog-row .when.stale{color:var(--yellow)}
@media (max-width:900px){.prog-row{grid-template-columns:1fr 1fr;gap:6px 12px}.prog-row .note{grid-column:1/-1}.prog-row .when{text-align:left}}

/* 任务表 */
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px}
.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{color:var(--dim);text-align:left;font-weight:500;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap;font-size:12px}
td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
tr.row{cursor:pointer}
tr.row:hover td{background:var(--panel2)}
tr.row:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
td .name{font-weight:600}
td .key{color:var(--muted);font-size:11px;font-family:var(--mono)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums}
.dim{color:var(--dim)}.muted{color:var(--muted)}.small{font-size:12px}
.empty{padding:36px 16px;text-align:center;color:var(--dim)}
.errbox{border:1px solid var(--red);border-left-width:4px;border-radius:8px;padding:10px 14px;background:var(--red-bg);color:var(--txt);margin-bottom:12px}
.errbox b{color:var(--red)}

/* 标签 */
.tag{display:inline-block;font-size:11px;line-height:1.5;padding:1px 8px;border-radius:20px;border:1px solid var(--line);color:var(--dim);white-space:nowrap;background:var(--panel2)}
.tag.pending{color:var(--yellow);border-color:#5c4520;background:var(--yellow-bg)}
.tag.approved{color:var(--green);border-color:#2c5b40;background:var(--green-bg)}
.tag.rejected{color:var(--red);border-color:#5c2b26;background:var(--red-bg)}
.tag.experiment_running{color:var(--blue);border-color:#2b4a63;background:var(--blue-bg)}
.tag.closed{color:var(--muted)}
.tag.voided{color:var(--muted);text-decoration:line-through;border-style:dashed}
.tag.same{color:var(--green);border-color:#2c5b40;background:var(--green-bg)}
.tag.different{color:var(--red);border-color:#5c2b26;background:var(--red-bg)}
.tag.split{color:var(--muted)}
.tag.reason{color:var(--txt)}
.tag.reason.gate_passed{color:var(--green);border-color:#2c5b40}
.tag.reason.max_rounds{color:var(--yellow);border-color:#5c4520}
.tag.reason.length_only_writer_layer{color:var(--yellow);border-color:#5c4520}

/* 弹层 */
.backdrop{position:fixed;inset:0;background:rgba(5,8,12,.72);z-index:40;display:none}
.backdrop.open{display:block}
.sheet{position:fixed;top:0;right:0;bottom:0;width:min(1180px,96vw);background:var(--bg);border-left:1px solid var(--line);z-index:50;display:none;flex-direction:column;box-shadow:-20px 0 60px rgba(0,0,0,.5)}
.sheet.open{display:flex}
.sheet-head{padding:14px 22px 12px;border-bottom:1px solid var(--line);background:var(--panel);display:flex;gap:14px;align-items:flex-start}
.sheet-head .title{flex:1;min-width:0}
.sheet-head h2{margin:0 0 4px;font-size:18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sheet-head .meta{color:var(--dim);font-size:12px;display:flex;gap:6px 14px;flex-wrap:wrap}
.sheet-head .meta a{white-space:nowrap}
.sheet-head .notes{margin-top:8px;font-size:13px;color:var(--txt);border-left:3px solid var(--acc);padding:2px 10px;background:var(--panel2);border-radius:0 6px 6px 0}
.sheet-head details.notes>summary{cursor:pointer;list-style:none;user-select:none;color:var(--txt);padding:4px 0}
.sheet-head details.notes>summary::before{content:"▸ ";color:var(--muted)}
.sheet-head details.notes[open]>summary::before{content:"▾ "}
.sheet-head details.notes>summary .sub{color:var(--dim);font-size:12px;margin-left:8px}
.sheet-head details.notes .notes-body{white-space:pre-wrap;margin-top:6px;max-height:40vh;overflow:auto}
.close{background:none;border:1px solid var(--line);border-radius:8px;width:36px;height:36px;cursor:pointer;color:var(--dim);font-size:18px;line-height:1;flex:none}
.close:hover{color:var(--txt);border-color:var(--dim)}
.sheet-body{flex:1;overflow:auto;padding:16px 22px 24px}
.sheet-foot{border-top:1px solid var(--line);background:var(--panel);padding:12px 22px;display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.sheet-foot .who{display:flex;align-items:center;gap:8px;color:var(--dim);font-size:12px}
.sheet-foot .who input{padding:6px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--txt);width:110px;min-height:36px}
.sheet-foot .grow{flex:1;min-width:200px}
.sheet-foot textarea{width:100%;min-height:36px;max-height:160px;resize:vertical;padding:7px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--txt);font:inherit;font-size:13px}
.sheet-foot .acts{display:flex;gap:8px;align-items:center}
.sheet-foot .locked{color:var(--dim);font-size:12px}
.sheet-foot .hint{color:var(--red);font-size:12px}

/* 概览三格 */
.gates{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:16px}
.gate{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 16px}
.gate .k{color:var(--dim);font-size:12px;display:flex;justify-content:space-between;align-items:center}
.gate .v{font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;margin-top:4px;line-height:1.2}
.gate .v small{font-size:13px;color:var(--dim);font-weight:400}
.gate .s{color:var(--muted);font-size:11.5px;margin-top:4px;line-height:1.45}
.gate.pass{border-color:#2c5b40}.gate.pass .v{color:var(--green)}
.gate.fail{border-color:#5c2b26}.gate.fail .v{color:var(--red)}
.badge{display:inline-block;font-size:11px;padding:1px 8px;border-radius:5px;font-weight:600}
.badge.pass{background:var(--green-bg);color:var(--green)}
.badge.fail{background:var(--red-bg);color:var(--red)}

/* 面板 */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:14px;overflow:hidden}
.panel>.ph{display:flex;align-items:baseline;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel2)}
.panel>.ph h3{margin:0;font-size:14px;color:var(--acc);white-space:nowrap}
.panel>.ph .sub{color:var(--dim);font-size:12px}
.panel>.pb{padding:6px 16px 12px}
.panel table td{padding:7px 8px}
.panel table th{padding:7px 8px}

/* 维度行 */
.dimrow{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}
.dimrow:last-child{border-bottom:0}
.dimrow .tag{flex:none;margin-top:2px;min-width:56px;text-align:center}
.dimrow .dt{flex:1;min-width:0}
.dimrow .dt .votes{color:var(--muted);font-size:11px;margin-left:8px;font-family:var(--mono)}
.dimrow .dt .id{color:var(--muted);font-size:11px;font-family:var(--mono);margin-right:6px}
.dimrow details{margin-top:4px}
.dimrow summary{cursor:pointer;color:var(--blue);font-size:12px;user-select:none;list-style:none}
.dimrow summary::before{content:"▸ ";color:var(--muted)}
.dimrow details[open] summary::before{content:"▾ "}
.evid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.evid>div{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12.5px;white-space:pre-wrap;word-break:break-word;line-height:1.6}
.evid .lab{display:block;color:var(--muted);font-size:11px;margin-bottom:3px;font-weight:600}
.evid .a .lab{color:var(--blue)}.evid .b .lab{color:var(--acc)}

/* 量表 */
.reg td.hi{background:var(--yellow-bg);color:var(--yellow);font-weight:600}
.reg td.num,.reg th.num{text-align:right}
.reg .delta{color:var(--muted);font-size:11px;margin-left:6px;font-weight:400}

/* 两栏对照 */
.cmp{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.cmp .ch{padding:8px 14px;font-size:12px;color:var(--dim);border-bottom:1px solid var(--line);background:var(--panel2);display:flex;justify-content:space-between;gap:8px}
.cmp .ch b{color:var(--txt)}
.cmp .ch:first-child{border-right:1px solid var(--line)}
.cmp .ch .cnt{font-family:var(--mono);color:var(--muted)}
.cmp .cell{padding:10px 14px;font-size:13.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word;border-bottom:1px solid var(--line)}
.cmp .cell.a{border-right:1px solid var(--line)}
.cmp .cell.blank{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.025) 6px 12px)}
.cmp .cell:nth-last-child(-n+2){border-bottom:0}
.cmp.desc .cell{font-size:13px}
.cmp.prompt .cell{font-size:12.5px;font-family:var(--mono);line-height:1.6}
.cmp .cell.none{color:var(--muted);font-style:italic}
/* 划句（2026-09-09）：可划的格子游标为文本；已划句黄底加下划线，再点一次取消 */
.cmp .cell.markable{cursor:text}
.cmp .cell.markable::selection,.cmp .cell.markable *::selection{background:rgba(232,161,58,.35)}
.cmp .cell mark.mk{background:var(--yellow-bg);color:inherit;border-bottom:2px solid var(--yellow);border-radius:2px;padding:0 1px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.cmp .cell.markable mark.mk:hover{background:rgba(232,161,58,.3)}
.cmp .ch .mkcnt{color:var(--yellow)}
/* 写法卡照做（2026-09-10）：每行 维度 / 取值 / 两个按钮；照做绿、没照做红，再点一次取消 */
.panel.fcard>.ph{flex-wrap:wrap}
.panel.fcard .fstat{margin-left:auto;color:var(--dim);font-size:12px;white-space:nowrap}
.panel.fcard .fstat b{color:var(--acc);font-size:13px}
.panel.fcard .fstat .unsaved{color:var(--yellow);font-weight:600}
.panel.fcard .btn.small{padding:4px 12px;font-size:12px}
.fhead,.frow{display:grid;grid-template-columns:34px minmax(120px,.9fr) 2fr 150px;gap:12px;align-items:center}
.fhead{padding:6px 16px;font-size:11px;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel2)}
.fbody{padding:0 16px 6px}
.frow{padding:9px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.55}
.frow:last-child{border-bottom:0}
.frow .id{color:var(--muted);font-size:11px;font-family:var(--mono)}
.frow .fd{color:var(--txt);font-weight:600}
.frow .fv{color:var(--dim);white-space:pre-wrap;word-break:break-word}
.frow.yes .fv{color:var(--txt)}
.frow .fb{display:flex;gap:6px;justify-content:flex-end}
.fbtn{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;white-space:nowrap}
.fbtn:hover:not(:disabled){border-color:var(--dim);color:var(--txt)}
.fbtn:disabled{cursor:default;opacity:.6}
.fbtn.yes.on{background:var(--green-bg);border-color:var(--green);color:var(--green);font-weight:600}
.fbtn.no.on{background:var(--red-bg);border-color:var(--red);color:var(--red);font-weight:600}
@media (max-width:720px){.fhead{display:none}.frow{grid-template-columns:28px 1fr;grid-auto-rows:auto}.frow .fv,.frow .fb{grid-column:2}.frow .fb{justify-content:flex-start}}
.sheet-foot .marks{color:var(--dim);font-size:12px;white-space:nowrap}
.sheet-foot .marks b{color:var(--yellow);font-size:13px}
.sheet-foot .marks .unsaved{color:var(--yellow);font-weight:600}
.panel details.fold>summary{cursor:pointer;padding:10px 16px;color:var(--blue);font-size:13px;user-select:none;list-style:none}
.panel details.fold>summary::before{content:"▸ ";color:var(--muted)}
.panel details.fold[open]>summary::before{content:"▾ "}
.panel details.fold>summary .sub{color:var(--dim);font-size:12px;margin-left:8px}

/* 原件事实（不漏事）：故事表逐条 kept / missing / altered / unstable */
.fcrow{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:8px 0;font-size:13.5px}
.fcrow b.ok{color:var(--green)}.fcrow b.bad{color:var(--red)}
.panel.fc.short{border-color:#5c2b26}
.fclists>summary{cursor:pointer;color:var(--blue);font-size:12px;user-select:none;list-style:none;padding:2px 0 6px}
.fclists>summary::before{content:"▸ ";color:var(--muted)}
.fclists[open]>summary::before{content:"▾ "}
.fclist{margin:0;padding:0;list-style:none}
.fclist li{padding:6px 10px;border-left:3px solid var(--line);margin-bottom:6px;font-size:13px;line-height:1.55;background:var(--bg);border-radius:0 6px 6px 0}
.fclist li.miss{border-left-color:var(--red);color:var(--red)}
.fclist li.alt{border-left-color:var(--yellow)}
.fclist li.unst{border-left-color:var(--line);color:var(--dim)}
.fclist li .id{font-family:var(--mono);color:var(--muted);font-size:11px;margin-right:6px}
.fclist li .lab{font-size:11px;font-weight:600;margin-left:6px}
.fclist li .q{color:var(--txt);font-style:italic}
.fclist li .votes{color:var(--muted);font-size:11px;margin-left:8px;font-family:var(--mono)}

/* 其他两稿（同轮另外两稿，只给对照） */
.alt{border-top:1px solid var(--line)}
.alt .ah{display:flex;gap:16px;flex-wrap:wrap;align-items:baseline;padding:10px 16px;font-size:12.5px;color:var(--dim);background:var(--panel2)}
.alt .ah b{color:var(--txt)}

/* 历史 */
.hist{margin:0;padding:0;list-style:none}
.hist li{display:flex;gap:12px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.hist li:last-child{border-bottom:0}
.hist .r{font-family:var(--mono);color:var(--dim);min-width:40px}
.hist .q{font-family:var(--mono);font-variant-numeric:tabular-nums;min-width:56px}
.hist .n{color:var(--dim);flex:1}

/* 实验 */
.exp{background:var(--blue-bg);border:1px solid #2b4a63;border-radius:10px;padding:10px 16px;margin-bottom:14px;font-size:13px}
.exp .kv{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:12.5px;margin-top:6px}
.exp .kv .k{color:var(--dim)}
.exp .kv .v{font-family:var(--mono);white-space:pre-wrap;word-break:break-word}

/* toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 18px;font-size:13px;z-index:80;opacity:0;pointer-events:none;transition:opacity .15s}
.toast.show{opacity:1}
.toast.ok{border-color:var(--green);color:var(--green)}
.toast.err{border-color:var(--red);color:var(--red)}

.loading{padding:30px;text-align:center;color:var(--dim)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

@media (prefers-reduced-motion:reduce){.toast{transition:none}}

@media (max-width:900px){
  header,main{padding-left:14px;padding-right:14px}
  .sheet{width:100vw;border-left:0}
  .sheet-head,.sheet-body,.sheet-foot{padding-left:14px;padding-right:14px}
  .cmp{grid-template-columns:1fr}
  .cmp .ch:first-child,.cmp .cell.a{border-right:0}
  .cmp .cell.a{border-bottom:1px dashed var(--line)}
  .cmp .cell.b{border-bottom:2px solid var(--line)}
  .cmp .cell:nth-last-child(-n+2){border-bottom:0}
  .cmp .ch.b{display:none}
  .cmp .cell.b::before{content:"复刻件";display:block;color:var(--acc);font-size:11px;font-family:var(--mono);margin-bottom:2px}
  .cmp .cell.a::before{content:"原件";display:block;color:var(--blue);font-size:11px;font-family:var(--mono);margin-bottom:2px}
  .evid{grid-template-columns:1fr}
  .sheet-foot .acts{width:100%;justify-content:flex-end}
  .hide-narrow{display:none}
}

/* 语域维旁的量表内嵌数 */
.reginline{display:flex;flex-wrap:wrap;gap:6px 14px;margin:4px 0 2px;font-size:12px;color:var(--dim)}
.reginline .lab{color:var(--muted)}
.reginline .ri b{color:var(--txt);font-variant-numeric:tabular-nums}
.reginline .ri.hot b:last-child{color:var(--yellow)}

/* 撞词报警 */
.vbstats{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;color:var(--dim)}
.vbstats b{color:var(--txt);font-variant-numeric:tabular-nums}
.vbstats.hot b{color:var(--yellow)}
.vblist{margin:8px 0 0;padding-left:18px;font-size:12.5px;color:var(--txt)}
.vblist li{margin:2px 0}

/* 实验读数（2026-09-10）：列表第七列 + 弹窗顶部实验块 */
th.expth .thsub{display:block;font-weight:400;color:var(--muted);font-size:11px}
td.expcell{min-width:220px}
.expc .l1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.expc .l2{color:var(--dim);margin-top:2px}
.vd{display:inline-block;padding:1px 7px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid var(--line);color:var(--dim)}
.vd.bad,.expc b.bad,.exp-arms td.bad{color:var(--red)}
.vd.bad{border-color:var(--red);background:var(--red-bg)}
.vd.ok,.expc b.ok,.exp-arms td.ok{color:var(--green)}
.vd.ok{border-color:var(--green);background:var(--green-bg)}
.vd.run,.expc b.run,.exp-arms td.run{color:var(--blue)}
.vd.run{border-color:#2b4a63;background:var(--blue-bg)}
.vd.muted{color:var(--muted)}
.exp .eh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.exp .exp-arms{margin:6px 0 8px}
.exp .exp-arms td,.exp .exp-arms th{padding:4px 8px}
.exp .vline{margin-top:4px;font-size:13.5px;line-height:1.5}
.exp .vline .vd{margin-right:6px}
.exp details.fold{margin-top:6px}
@media (max-width:900px){td.expcell{min-width:0}}

/* 进行中 · 已停折叠（2026-09-10） */
.prog-stopped{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}
.prog-stopped>summary{cursor:pointer;color:var(--muted);font-size:12.5px;padding:4px 0;list-style:none}
.prog-stopped>summary::-webkit-details-marker{display:none}
.prog-stopped>summary::before{content:'▸ ';color:var(--muted)}
.prog-stopped[open]>summary::before{content:'▾ '}
.prog-stopped>summary .sub{margin-left:8px;color:var(--muted);font-size:11.5px}
.prog-row.stopped{opacity:.72}
.prog-row .stoptag{display:inline-block;padding:0 6px;border-radius:5px;border:1px solid var(--line);color:var(--muted);font-size:11px}

/* 总览（2026-09-10）：首屏一句话 + 按垂类一张表；效果格用文字+计数，不上颜色，只把 0 压灰 */
.overview{margin-bottom:14px}
.ov-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;padding:12px 16px 10px;border-bottom:1px solid var(--line)}
.ov-head h2{font-size:14px;margin:0;color:var(--acc)}
.ov-head .spacer{flex:1}
.ov-line{font-size:14px;color:var(--txt);line-height:1.6}
.ov-line b{font-variant-numeric:tabular-nums}
.ov-line .sep{color:var(--muted);margin:0 6px}
.ovt th.num,.ovt td.num{text-align:right}
.ovt th .thsub{display:block;font-weight:400;color:var(--muted);font-size:11px}
.ovt td{white-space:nowrap}
.ovt td.vcell{white-space:normal;min-width:150px}
.ovt .vname{background:none;border:0;padding:0;cursor:pointer;color:var(--txt);font-weight:600;font-size:13px;text-align:left;line-height:1.4}
.ovt .vname:hover{color:var(--acc)}
.ovt .vname::before{content:"▸ ";color:var(--muted)}
.ovt tr.ov-row.open .vname::before{content:"▾ "}
.ovt .vkey{color:var(--muted);font-size:11px;font-family:var(--mono);display:block}
.ovt .vlink{font-size:11.5px;margin-left:8px;white-space:nowrap}
.ovt .z{color:var(--muted)}
.ovt .cnt{font-variant-numeric:tabular-nums}
.ovt .cnt b{font-size:14px}
.ovt td.cnt.pos b{color:var(--green)}
.ovt td.cnt.neg b{color:var(--red)}
.ovt td.cnt.warn b{color:var(--yellow)}
/* 门 vs 你（2026-09-14）：漏放/误杀两列在总览表里；尺子分档表收进总览下的折叠 */
.overview .ga-more{margin:4px 16px 10px}
.overview .ga-more>summary{cursor:pointer;color:var(--muted);font-size:13px;padding:6px 2px}
.overview .ga-more[open]>summary{color:var(--txt)}
.overview .ga-more .tablewrap{max-width:640px}
.overview #ga-fact-line{padding:4px 2px 8px;color:var(--txt)}
.overview #ga-fact-line b.neg{color:var(--red)}
.overview .gat td.lab2{padding-left:22px;color:var(--txt)}
.overview .gat tr.grp td{padding-top:10px;border-bottom:1px solid var(--line)}
.overview #ga-note{padding:6px 2px 4px}
.ovt .cnt .lab{color:var(--dim);font-size:11.5px;margin-right:2px}
.ovt thead tr.grp th.grph{text-align:center;border-bottom:1px solid var(--line)}
.ovt thead tr.sub th{font-weight:500;color:var(--muted);font-size:11.5px;padding-top:4px}
.ovt td.cnt .frac{display:block;color:var(--muted);font-size:11px;font-family:var(--mono)}
.ovt .cnt .g{margin-right:10px;display:inline-block}
.ovt .rate{color:var(--dim);font-size:11.5px;margin-left:6px}
.ovt tr.total td{border-top:2px solid var(--line);font-weight:600;background:var(--panel2)}
.ovt tr.total td .lab{font-weight:400}
.ovt tr.ov-detail>td{padding:0 12px 12px 28px;background:var(--bg)}
.ovt tr.ov-detail[hidden]{display:none}
.ovi{width:100%;font-size:12.5px}
.ovi th{font-size:11px;padding:6px 8px;background:var(--panel)}
.ovi td{padding:6px 8px;white-space:nowrap;vertical-align:middle}
.ovi td.name{white-space:normal}
.ovi .key{color:var(--muted);font-size:11px;font-family:var(--mono)}
.ovi td.vw{font-weight:600}
.ovi tr.click{cursor:pointer}
.ovi tr.click:hover td{background:var(--panel2)}
.ovt .tag.running{color:var(--acc);border-color:#5c4a20}
.ovt .tag.rework{color:var(--red);border-color:#5c2b26}   /* 驳回后重做：红字，和「首轮在跑」分开（2026-09-11） */
@media (max-width:900px){.ovt td{white-space:normal}.ovt .cnt .g{display:inline}}
.ov-gloss{margin:2px 0 8px}
.ov-gloss summary{cursor:pointer;color:var(--muted);font-size:12px}
.ov-gloss dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:8px 0 0;font-size:12.5px;max-width:860px}
.ov-gloss dt{font-weight:600;white-space:nowrap}
.ov-gloss dd{margin:0;color:var(--txt)}

/* 二审区（2026-09-11）：详情页标题下「上一稿 #N · 驳回原话」一行 */
.second-line{margin:4px 0 0;font-size:13px;color:var(--muted)}
.second-line .note{color:var(--fg)}
.linkbtn{background:none;border:0;padding:0;color:var(--link,#2563eb);text-decoration:underline;cursor:pointer;font:inherit}

/* 分区列表（2026-09-11 晚）：表头随区换；摘要格颜色；折叠面板；二审「上一稿」块；三栏对照 */
th .thsub{display:block;font-weight:400;color:var(--muted);font-size:11px}
.zok{color:var(--green)}.zbad{color:var(--red)}
td.note{max-width:360px;white-space:normal;line-height:1.5}
td .badge{margin-left:4px;vertical-align:1px}
details.panel.foldp>summary{display:flex;align-items:baseline;gap:10px;padding:10px 16px;background:var(--panel2);cursor:pointer;list-style:none;user-select:none}
details.panel.foldp>summary::-webkit-details-marker{display:none}
details.panel.foldp>summary::before{content:"▸";color:var(--muted);font-size:12px}
details.panel.foldp[open]>summary::before{content:"▾"}
details.panel.foldp[open]>summary{border-bottom:1px solid var(--line)}
details.panel.foldp>summary h3{margin:0;font-size:14px;color:var(--acc)}
details.panel.foldp>summary .sub{color:var(--dim);font-size:12px}
details.panel.foldp>.pb{padding:6px 16px 12px}
details.panel.foldp.rest>.pb{padding-top:14px}
details.panel.foldp.rest>.pb .gates{margin-bottom:14px}
.panel.prev{border-color:#5c2b26}
.panel.prev>.ph h3{color:var(--red)}
.prevgrid{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;padding-top:12px}
.prevgrid .pk{color:var(--dim);font-size:12px;padding-top:2px;white-space:nowrap}
.prevgrid .pv{font-size:13.5px;line-height:1.6;min-width:0}
.prevgrid .pv .note{white-space:pre-wrap}
.prevmarks{margin:0;padding-left:18px}
.prevmarks li{margin:2px 0}
.prevmarks .lab{color:var(--muted);font-size:11px;margin-right:6px}
.prevgrid .rev>div{margin-bottom:4px}
.prevgrid .rev .lab{display:inline-block;min-width:64px;color:var(--muted);font-size:12px}
.prevgrid .rev .revdiag{white-space:pre-wrap;margin-top:4px;color:var(--dim)}
@media (max-width:720px){.prevgrid{grid-template-columns:1fr;gap:2px 0}.prevgrid .pk{padding-top:8px}}
.cmp.three{grid-template-columns:1fr 1fr 1fr}
.cmp.three .ch.m,.cmp.three .cell.m{border-right:1px solid var(--line)}
.cmp.three .cell:nth-last-child(-n+3){border-bottom:0}
.cmp .cell mark.mk.prev{background:var(--red-bg);border-bottom-color:var(--red)}
.cmp .ch .mkprev{color:var(--red)}
@media (max-width:900px){
  .cmp.three{grid-template-columns:1fr}
  .cmp.three .ch.m{display:none}
  .cmp.three .cell.m{border-right:0;border-bottom:1px dashed var(--line)}
  .cmp.three .cell.m::before{content:"上一稿";display:block;color:var(--red);font-size:11px;font-family:var(--mono);margin-bottom:2px}
  .cmp.three .cell.b::before{content:"这稿"}
  .cmp.three .cell.b{border-bottom:2px solid var(--line)}
  .cmp.three .cell:nth-last-child(-n+3){border-bottom:0}
}

/* 骨架与候选维（2026-09-15 陈啸林「那我在哪里看到现在候选的骨架呢」）：每垂类一行，展开=骨架名单 chips + 候选维表 + 三按钮 */
.skel .skel-gloss{margin:8px 16px 4px;color:var(--dim);line-height:1.6}
.skel .skel-gloss b{color:var(--txt)}
.ov-line b.pend{color:var(--yellow)}
.skt td.cnt .frac{display:block;color:var(--muted);font-size:11px;font-weight:400}
.skel-det{padding:6px 0 10px}
.skel-sk{margin:6px 0 10px;font-size:12.5px}
.skel-sk .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{display:inline-block;font-size:12px;line-height:1.5;padding:2px 9px;border-radius:14px;border:1px solid var(--line);background:var(--panel2);color:var(--txt);white-space:nowrap}
.chip.own{border-color:#4a4320;background:var(--yellow-bg)}
.skc td{white-space:normal;vertical-align:top;line-height:1.5}
/* 09-15 一行一句人话：量不到什么（粗）· 差在哪（灰）；等他定的行下面挂一句他能直接点的问题 */
.skc td.line{min-width:360px;max-width:560px}
.skc td.line .what{font-weight:600}
.skc td.line .sep{color:var(--muted);margin:0 6px}
.skc td.line .gap{color:var(--dim)}
.skc td.line .ask{margin-top:4px;color:var(--yellow);font-weight:600}
.skc td.ev{max-width:420px}
.skc td.ev .sep{color:var(--muted);margin:0 5px}
.skel-ev summary{cursor:pointer;color:var(--dim);font-size:12px;user-select:none}
.skel-ev .plain{margin-top:4px}
.skel-ev .raw div{margin-top:3px}
.skel-det .hidden-note{margin:6px 0 0}
.skc td.act{white-space:nowrap}
.skc .btn.small{padding:3px 10px;font-size:12px;min-height:28px;margin-right:6px}
.skc .btn.promote{border-color:var(--green);color:var(--green)}
.skc .btn.reject{border-color:var(--red);color:var(--red)}
.tag.sk-pending_decision{color:var(--yellow);border-color:#5c4520;background:var(--yellow-bg)}
.tag.sk-promoted{color:var(--green);border-color:#2c5b40;background:var(--green-bg)}
.tag.sk-rejected{color:var(--muted);text-decoration:line-through}
.tag.sk-candidate{color:var(--dim)}
.skc tr.st-rejected td{opacity:.6}
