/* Working Corpus · 控制台风格（参考 ThreeUI 的深色等宽界面），像素元素呼应 logo */
:root{
  --ground:#F5F6F8; --surface:#FFFFFF; --surface-2:#EEF0F3; --ink:#111318; --ink-2:#4A505E; --ink-3:#7A8191;
  --rule:#E2E4EA; --rule-2:#CFD3DB; --accent:#4F54D8; --accent-ink:#FFFFFF; --accent-soft:#ECEDFB;
  --pri:#111318; --pri-ink:#FFFFFF;
  --todo:#7A8396; --doing:#2F6FD0; --verify:#B8770B; --done:#1F8A57; --block:#C23B34; --cancel:#9AA0AC; --idle:#D6D9E0;
  --sans:"PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  --mono:"JetBrains Mono","SF Mono",ui-monospace,Menlo,monospace;
  --pixel:"Pixelify Sans","JetBrains Mono",ui-monospace,monospace;
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  :root{
    --ground:#0B0C0F; --surface:#121419; --surface-2:#191C22; --ink:#E9EBEF; --ink-2:#A6ACB8; --ink-3:#6E7584;
    --rule:#22252D; --rule-2:#2E323C; --accent:#8C90F6; --accent-ink:#0B0C0F; --accent-soft:#1B1D33;
    --pri:#EDEEF1; --pri-ink:#0B0C0F;
    --todo:#8D95A8; --doing:#6AA6F2; --verify:#F0B23F; --done:#46C98B; --block:#F0766C; --cancel:#5A606D; --idle:#262A33;
    color-scheme: dark;
  }
}
*{box-sizing:border-box}
[hidden]{display:none !important}
body{margin:0;background:var(--ground);color:var(--ink);font:14px/1.65 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
::selection{background:var(--accent-soft)}
.app{display:grid;grid-template-columns:220px minmax(0,1fr) auto;min-height:100vh}
@media (max-width:820px){.app{grid-template-columns:minmax(0,1fr)} .nav{position:static;height:auto;border-right:0;border-bottom:1px solid var(--rule)}}

/* 侧栏 */
.nav{position:sticky;top:0;height:100vh;overflow:auto;background:var(--surface);border-right:1px solid var(--rule);padding:18px 12px;display:flex;flex-direction:column;gap:2px}
.brand{display:flex;align-items:center;gap:10px;padding:2px 8px 16px;font:700 16px/1 var(--pixel);letter-spacing:.3px}
.brand img{image-rendering:pixelated}
.grp{font:500 10.5px/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3);padding:16px 8px 6px}
.nav a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;color:var(--ink-2);font-size:13.5px}
.nav a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.nav a.on{background:var(--surface-2);color:var(--ink);font-weight:500;box-shadow:inset 2px 0 0 var(--accent)}
.cnt{font:500 11px/1.6 var(--mono);color:var(--ink-3)}
.cnt.hot{background:var(--accent);color:var(--accent-ink);border-radius:4px;padding:0 6px}
.nav .foot{margin-top:auto;padding:14px 8px 0;border-top:1px solid var(--rule);font:11px/1.7 var(--mono);color:var(--ink-3)}

/* 主区 */
.main{padding:26px 32px 72px;min-width:0;max-width:1120px}
@media (max-width:600px){.main{padding:16px}}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.head h1{font-size:24px;margin:0;line-height:1.25;letter-spacing:-.01em}
.head .sub{color:var(--ink-3);font:12px/1.7 var(--mono)}
.row{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap}
.stack{display:grid;gap:14px}
.grid2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px}
@media (max-width:760px){.grid2{grid-template-columns:minmax(0,1fr)}}
.tabs{display:flex;gap:22px;border-bottom:1px solid var(--rule);margin-bottom:16px}
.tabs a{padding:7px 0 9px;color:var(--ink-3);font:500 12.5px/1 var(--mono);letter-spacing:.02em}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.on{color:var(--ink);box-shadow:inset 0 -2px 0 var(--ink)}

.blk{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:14px 16px}
.blk-t{font:500 10.5px/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.blk-t .r{margin-left:auto;text-transform:none;letter-spacing:0}
.banner{border:1px solid var(--verify);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--verify);background:color-mix(in srgb,var(--verify) 8%,transparent)}
.banner.err{border-color:var(--block);color:var(--block);background:color-mix(in srgb,var(--block) 8%,transparent)}
.muted{color:var(--ink-3)}
.mono{font-family:var(--mono);font-size:12px}
.s{font:12px/1.65 var(--mono);color:var(--ink-3)}
.big{font-size:16px}

/* 语料带 */
.band{position:relative;background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:14px 16px 12px;margin-bottom:14px;overflow:hidden}
.band canvas{display:block;width:100%;height:84px;image-rendering:pixelated}
.band-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font:11px/1 var(--mono);color:var(--ink-3)}
.band-legend i{display:inline-block;width:8px;height:8px;margin-right:6px;vertical-align:-1px}

/* 状态：像素方块 + 等宽字 */
.chip{display:inline-flex;align-items:center;gap:6px;font:500 11.5px/1 var(--mono);padding:4px 7px;border-radius:4px;white-space:nowrap;border:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.chip::before{content:"";width:7px;height:7px;background:currentColor}
.c-pending_confirm{color:var(--ink-3);border-style:dashed}
.c-todo{color:var(--todo)} .c-doing{color:var(--doing)} .c-to_verify{color:var(--verify)} .c-done{color:var(--done)}
.c-blocked{color:var(--block)} .c-cancelled{color:var(--cancel);text-decoration:line-through}
.basis{display:inline-block;font:500 10.5px/1.5 var(--mono);padding:1px 6px;border-radius:4px;white-space:nowrap}
.b-user{background:var(--ink);color:var(--surface)} .b-manual{background:var(--accent);color:var(--accent-ink)}
.b-text{background:var(--surface-2);color:var(--ink);box-shadow:inset 0 0 0 1px var(--rule-2)} .b-ai{box-shadow:inset 0 0 0 1px var(--rule-2);color:var(--ink-2)}

/* 按钮：主按钮实心，其余描边（ThreeUI 的 Copy Prompt 风格） */
.btn{display:inline-flex;align-items:center;gap:4px;font:500 12px/1.4 var(--mono);padding:6px 11px;border-radius:6px;border:1px solid var(--rule-2);background:transparent;color:var(--ink);cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--surface-2);text-decoration:none}
.btn.pri{background:var(--pri);border-color:var(--pri);color:var(--pri-ink)}
.btn.pri:hover{opacity:.9}
.btn.dg{color:var(--block);border-color:color-mix(in srgb,var(--block) 50%,transparent)}
.btn[disabled]{opacity:.55;cursor:progress}
.link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font:500 12px/1.4 var(--mono);white-space:nowrap}
.link:hover{text-decoration:underline}
input[type=text],input[type=date],select,textarea{background:var(--surface);border:1px solid var(--rule-2);border-radius:6px;padding:6px 9px;max-width:100%}
textarea{width:100%;min-height:120px;font:12.5px/1.65 var(--mono)}
label{display:grid;gap:5px;font-size:12.5px;color:var(--ink-2)}
.check{display:flex;gap:6px;align-items:center}

/* 列表行 */
.line{display:grid;grid-template-columns:86px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--rule)}
.line:first-child{border-top:0;padding-top:0}
.task{display:grid;grid-template-columns:86px minmax(0,1fr) minmax(0,190px) auto;gap:12px;align-items:center;padding:9px 6px;margin:0 -6px;border-top:1px solid var(--rule);cursor:pointer;border-radius:6px}
.task:hover{background:var(--surface-2)}
.task:hover .nm{color:var(--accent)}
.task .nm{font-weight:500}
@media (max-width:600px){.task{grid-template-columns:86px minmax(0,1fr) auto}.task .src{display:none}}
.sep{font:500 10.5px/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3);padding:14px 0 6px;border-top:1px solid var(--rule)}
.bar{display:flex;gap:2px;height:8px;margin:2px 0 8px}
.bar i{display:block;min-width:0}
.next{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 0;border-top:1px solid var(--rule)}
.next:first-child{border-top:0;padding-top:0}
.next .no{font:700 13px/1.6 var(--pixel);color:var(--accent)}
.q{border-left:2px solid var(--rule-2);padding:2px 0 2px 10px;color:var(--ink-2);white-space:pre-wrap;word-break:break-word}
.hist{display:grid;grid-template-columns:96px auto minmax(0,1fr);gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--rule)}
.hist:first-child{border-top:0}
.ver{display:grid;gap:6px}
.vi{display:flex;justify-content:space-between;gap:10px;padding:7px 10px;border-radius:6px;background:var(--surface-2)}
.vi.cancelled{text-decoration:line-through;color:var(--ink-3);background:transparent;box-shadow:inset 0 0 0 1px var(--rule)}
.vi.added{box-shadow:inset 2px 0 0 var(--done);background:color-mix(in srgb,var(--done) 10%,transparent)}
.versions{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font:500 10.5px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);background:var(--surface-2)}
tr:last-child td{border-bottom:0}
.tbl{overflow-x:auto;border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
.dot{display:inline-block;width:7px;height:7px;margin-right:7px}
.d-ok{background:var(--done)} .d-off{box-shadow:inset 0 0 0 1.5px var(--ink-3)}

/* 原文侧栏、浮层、提示 */
.drawer{width:360px;background:var(--surface);border-left:1px solid var(--rule);padding:18px;position:sticky;top:0;height:100vh;overflow:auto}
@media (max-width:1100px){.drawer{position:fixed;right:0;top:0;z-index:5;box-shadow:-12px 0 32px rgba(0,0,0,.25);max-width:92vw}}
.msg{border:1px solid var(--rule);border-radius:8px;padding:10px 12px;background:var(--ground);margin-bottom:10px;display:grid;gap:6px}
.msg .q{max-height:280px;overflow:auto}
.modal{position:fixed;inset:0;background:rgba(5,6,9,.6);display:grid;place-items:center;padding:16px;z-index:10}
.modal .card{background:var(--surface);border-radius:10px;padding:20px;width:min(760px,100%);max-height:90vh;overflow:auto;display:grid;gap:12px;border:1px solid var(--rule-2)}
.modal textarea{min-height:340px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--pri);color:var(--pri-ink);padding:8px 14px;border-radius:6px;font:500 12.5px/1.4 var(--mono);z-index:20}
.empty{padding:32px;text-align:center;color:var(--ink-3)}
@media (prefers-reduced-motion:no-preference){.btn,.nav a,.task{transition:background .12s,border-color .12s}}
/* 在线演示的角标：固定在右下角，不挤占布局 */
.demo-bar{position:fixed;right:16px;bottom:16px;z-index:15;display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--rule-2);border-radius:6px;padding:6px 12px;font:500 12px/1.4 var(--mono);color:var(--ink-2);box-shadow:0 4px 18px rgba(0,0,0,.12)}
