:root{
  --bg:#0f1116; --panel:#171a21; --panel2:#1d212a; --line:#2b313d;
  --ink:#e8e6e1; --dim:#a7adb9; --faint:#767d8b;
  --wood:#d8b98a; --tama:#c0574f; --gold:#e0b457; --good:#6fc48a; --bad:#e07a6a;
  --doc:#6fc48a; --mea:#7fb6e8; --der:#c9a0e8; --cal:#e0b457; --rec:#e07a6a;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font:15px/1.62 "Hiragino Sans","Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.wrap{max-width:940px;margin:0 auto;padding:26px 18px 70px}
header{margin:10px 0 26px}
h1{font-size:38px;line-height:1.1;margin:0 0 12px;letter-spacing:-.015em}
h2{font-size:22px;margin:0 0 12px;letter-spacing:-.01em}
h3{font-size:16px;margin:20px 0 8px;color:var(--gold)}
p{margin:0 0 12px}
.lede{font-size:17px;color:var(--dim);max-width:70ch}
.small{font-size:13.5px;color:var(--dim)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.94em}
a{color:#8fc4f5}
ul{margin:0 0 12px;padding-left:20px}
li{margin-bottom:7px}
blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--gold);background:var(--panel2);color:var(--dim)}
blockquote .src{display:block;margin-top:6px;font-size:12.5px;color:var(--faint)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;margin:0 0 20px}
.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 12px}
.bar label{font-size:13px;color:var(--dim)}
.bar label.tight{margin-left:8px}
select,button,input[type=range]{font:inherit;background:var(--panel2);color:var(--ink);
  border:1px solid var(--line);border-radius:8px;padding:7px 11px}
button{cursor:pointer}
button:hover{border-color:#43506a}
button.primary{background:var(--gold);color:#241c05;border-color:var(--gold);font-weight:600}
button.primary:hover{background:#eec263}
input[type=range]{padding:0;width:150px;accent-color:var(--gold)}
.stage{position:relative;border-radius:10px;overflow:hidden;background:#12141a;border:1px solid var(--line)}
canvas{display:block;width:100%;height:auto;background:#12141a;touch-action:none}
.verdict{position:absolute;left:50%;top:16px;transform:translateX(-50%);
  padding:9px 18px;border-radius:999px;font-weight:600;font-size:15px;
  background:rgba(18,20,26,.93);border:1px solid var(--line);max-width:88%;text-align:center}
.verdict[hidden]{display:none!important}
.verdict.ok{color:var(--good);border-color:#2f6b48}
.verdict.no{color:var(--bad);border-color:#6b3a30}
.keys{display:inline-block;padding:1px 6px;border:1px solid var(--line);border-radius:5px;
  background:var(--panel2);font-family:ui-monospace,Menlo,monospace;font-size:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}
@media (max-width:720px){.grid2{grid-template-columns:1fr}h1{font-size:30px}}
.tbl{width:100%;border-collapse:collapse;margin:10px 0;font-size:13.5px}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.tbl th{color:var(--faint);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.tbl td.num,.tbl th.num{text-align:right;font-family:ui-monospace,Menlo,monospace}
.scroll{overflow-x:auto}
.correct{border-left:3px solid var(--gold);padding:10px 14px;background:rgba(224,180,87,.07);border-radius:0 8px 8px 0}
.gap{border-left:3px solid var(--mea);padding:10px 14px;background:rgba(127,182,232,.07);border-radius:0 8px 8px 0}
.fail{border-left:3px solid var(--bad);padding:10px 14px;background:rgba(224,122,106,.07);border-radius:0 8px 8px 0}
.eq{font-family:ui-monospace,Menlo,monospace;background:var(--panel2);padding:10px 14px;border-radius:8px;
  overflow-x:auto;font-size:13.5px;color:#d8dce6}
.tally{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.chip{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel2);font-size:13px}
.chip b{font-family:ui-monospace,Menlo,monospace}
.chip.DOCUMENTED{border-color:#2f6b48;color:var(--doc)}
.chip.MEASURED{border-color:#2f5570;color:var(--mea)}
.chip.DERIVED{border-color:#4d3a68;color:var(--der)}
.chip.CALIBRATED{border-color:#6b5520;color:var(--cal)}
.chip.RECONSTRUCTED{border-color:#6b3a30;color:var(--bad)}
.chip.total{border-color:#43506a;color:var(--ink)}
.provwrap{max-height:460px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.prov{width:100%;border-collapse:collapse;font-size:12.5px}
.prov td{border-bottom:1px solid var(--line);padding:6px 9px;vertical-align:top}
.prov tr:last-child td{border-bottom:none}
.tag{display:inline-block;padding:1px 7px;border-radius:5px;font-size:10.5px;font-weight:700;letter-spacing:.05em}
.tag.DOCUMENTED{background:rgba(111,196,138,.16);color:var(--doc)}
.tag.MEASURED{background:rgba(127,182,232,.16);color:var(--mea)}
.tag.DERIVED{background:rgba(201,160,232,.16);color:var(--der)}
.tag.CALIBRATED{background:rgba(224,180,87,.16);color:var(--cal)}
.tag.RECONSTRUCTED{background:rgba(224,122,106,.16);color:var(--bad)}
.qual{color:var(--gold);font-size:11px;font-weight:700;letter-spacing:.04em}
.scanout{margin-top:10px;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--dim);
  line-height:1.45;white-space:pre-wrap;word-break:break-word}
.counts{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px}
.kyu{width:100%;border-collapse:collapse;font-size:13px}
.kyu th,.kyu td{border-bottom:1px solid var(--line);padding:5px 8px;text-align:left}
.kyu th{color:var(--faint);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}
.kyu td.g{font-weight:700;color:var(--gold);white-space:nowrap}
.kyu td .done{color:var(--good)}
.kyu tr.cur{background:rgba(224,180,87,.06)}
footer{margin-top:26px;padding-top:16px;border-top:1px solid var(--line)}
.pad{margin-top:10px}
.pad button{min-height:44px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.pad button.held{outline:2px solid var(--gold)}
select{max-width:100%;min-width:0;text-overflow:ellipsis}
