:root{
  --bg:#f4f6f8; --panel:#ffffff; --ink:#1b2530; --muted:#5b6874; --line:#d9dfe5; --soft:#eaf0f4;
  --accent:#2c6e8f; --accent-ink:#ffffff; --hl:#fff4d6; --hl-line:#e3b341;
  --valid:#2e7d4f; --invalid:#b3261e; --uncertain:#9a6400;
  --valid-bg:#e5f3ea; --invalid-bg:#fbe7e5; --uncertain-bg:#fbf0dc;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#11171d; --panel:#18212a; --ink:#e3e9ee; --muted:#9aa8b4; --line:#2c3843; --soft:#1f2a34;
    --accent:#6fb3d6; --accent-ink:#0d1419; --hl:#3a3120; --hl-line:#c9a24a;
    --valid:#6cc592; --invalid:#f08a80; --uncertain:#e0b057;
    --valid-bg:#1b3326; --invalid-bg:#3a1f1d; --uncertain-bg:#382c17;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#11171d; --panel:#18212a; --ink:#e3e9ee; --muted:#9aa8b4; --line:#2c3843; --soft:#1f2a34;
  --accent:#6fb3d6; --accent-ink:#0d1419; --hl:#3a3120; --hl-line:#c9a24a;
  --valid:#6cc592; --invalid:#f08a80; --uncertain:#e0b057;
  --valid-bg:#1b3326; --invalid-bg:#3a1f1d; --uncertain-bg:#382c17;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;padding-inline:16px;padding-block:0 32px}
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);border-bottom:1px solid var(--line);margin-inline:-16px;padding:10px 16px;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
h1{font-size:17px;font-weight:600;margin:0;letter-spacing:.01em}
.pill{font-family:var(--mono);font-size:12px;color:var(--muted)}
.grow{flex:1 1 auto}
select,button,textarea{font:inherit;color:inherit}
select{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:4px 8px}
button{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer}
button:hover{border-color:var(--accent)}
button:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
.bar{height:6px;background:var(--soft);border-radius:3px;overflow:hidden;width:160px}
.bar>i{display:block;height:100%;background:var(--accent);width:0}
main{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;margin-top:16px;align-items:start}
@media (max-width:900px){main{grid-template-columns:1fr}}
section h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px;font-weight:600}
.reviews{display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 150px);overflow:auto;padding-right:4px}
@media (max-width:900px){.reviews{max-height:none}}
.rev{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.rev.trigger{background:var(--hl);border-color:var(--hl-line)}
.rev .meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline;font-size:12px;color:var(--muted)}
.rev .eid{font-family:var(--mono);font-weight:500;color:var(--ink)}
.rev .item{font-weight:600;margin:2px 0}
.rev .cats{font-size:12px;color:var(--muted)}
.stars{font-family:var(--mono);color:var(--uncertain)}
.tag{font-size:11px;font-family:var(--mono);padding:1px 6px;border-radius:10px;background:var(--soft);color:var(--ink)}
.tag.t{background:var(--hl-line);color:#1b1b1b}
.right{display:flex;flex-direction:column;gap:16px}
.mem{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 0;margin:0;list-style:none}
.mem li{padding:5px 12px;display:flex;gap:10px}
.mem li.hit{background:var(--hl)}
.mid{font-family:var(--mono);font-size:12px;color:var(--muted);min-width:3.2em}
.op{background:var(--panel);border:2px solid var(--accent);border-radius:8px;padding:12px 14px}
.op .kind{font-family:var(--mono);font-weight:600;font-size:13px;color:var(--accent)}
.op .row{margin-top:6px}
.op .lbl{font-size:12px;color:var(--muted);display:block}
.op .old{text-decoration:line-through;color:var(--muted)}
.decide{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg button{flex:1 1 0;min-width:96px;padding:8px 10px;font-weight:600}
.seg button kbd,.chips button kbd{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:6px;font-weight:400}
.seg button.on[data-v="VALID"]{background:var(--valid-bg);border-color:var(--valid);color:var(--valid)}
.seg button.on[data-v="INVALID"]{background:var(--invalid-bg);border-color:var(--invalid);color:var(--invalid)}
.seg button.on[data-v="UNCERTAIN"]{background:var(--uncertain-bg);border-color:var(--uncertain);color:var(--uncertain)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{font-size:12px;padding:4px 8px}
.chips button.on{background:var(--invalid-bg);border-color:var(--invalid);color:var(--invalid);font-weight:600}
textarea{width:100%;min-height:52px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;resize:vertical}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.status{font-size:12px;color:var(--muted)}
.status.ok{color:var(--valid)} .status.err{color:var(--invalid)}
details.guide{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px}
details.guide summary{cursor:pointer;font-weight:600}
details.guide dl{margin:8px 0 0;display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;font-size:13px}
details.guide dt{font-family:var(--mono);font-size:12px;font-weight:500}
details.guide dd{margin:0;color:var(--muted)}
.empty{padding:40px;text-align:center;color:var(--muted)}
.note-ro{font-size:12px;color:var(--muted)}
.feedback{border-radius:8px;padding:10px 12px;border:1px solid var(--line);background:var(--bg)}
.feedback.right{border-color:var(--valid);background:var(--valid-bg)}
.feedback.wrong{border-color:var(--invalid);background:var(--invalid-bg)}
.feedback b{display:block;margin-bottom:4px}
.qcwrap{max-width:1100px;margin:16px auto 0;display:flex;flex-direction:column;gap:10px}
.tablewrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px}
table{border-collapse:collapse;width:100%;font-size:13px;font-variant-numeric:tabular-nums}
th,td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{font-size:12px;color:var(--muted);font-weight:600}
td.flag{color:var(--invalid);font-weight:600;white-space:normal}
td.ok{color:var(--valid);font-weight:600}
.lab{font-family:var(--mono);font-size:12px}
.zh{color:var(--muted);font-size:13px;margin-top:3px;border-left:2px solid var(--line);padding-left:8px}
.mem li .zh{margin-top:2px}
.tr input{vertical-align:middle}
.exportbox{border:1px dashed var(--accent);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.exportbox textarea{min-height:90px;font-family:var(--mono);font-size:11px}
.pill.warn{color:var(--uncertain);font-weight:600}
.guidenote{margin:8px 0 0;font-size:12px;color:var(--uncertain)}
@media (prefers-reduced-motion:no-preference){.bar>i{transition:width .3s}}
