:root{--paper:#f5f1e8;--ink:#0a0a0a;--signal:#ff4d00;--s1:4px;--s2:8px;--s3:16px;--s4:24px;--bd:4px;--sh:6px 6px 0 0 var(--ink);--sans:"system-ui","Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:ui-monospace,"DejaVu Sans Mono","Courier New",monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scrollbar-color:var(--ink) var(--paper)}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.4;padding:var(--s4);min-height:100vh}
::selection{background:var(--signal);color:var(--paper)}
*::-webkit-scrollbar{width:12px;height:12px}
*::-webkit-scrollbar-track{background:var(--paper);border-left:3px solid var(--ink)}
*::-webkit-scrollbar-thumb{background:var(--ink);border:3px solid var(--paper)}
.wrap{max-width:1180px;margin:0 auto}
header.top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);border:var(--bd) solid var(--ink);background:var(--paper);box-shadow:var(--sh);padding:var(--s3) var(--s4);margin-bottom:var(--s4);animation:pop .45s both}
.top h1{font-size:clamp(20px,3.2vw,32px);font-weight:800;letter-spacing:-.02em;text-transform:uppercase;line-height:1}
.top .badge{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;border:3px solid var(--ink);background:var(--signal);color:var(--paper);padding:6px 10px}
.top .tag{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;border:3px solid var(--ink);padding:6px 10px;background:var(--paper)}
.top .spacer{flex:1}
.app{display:grid;grid-template-columns:340px minmax(0,1fr);gap:var(--s4);align-items:start}
.col{display:flex;flex-direction:column;gap:var(--s4);min-width:0}
.card{border:var(--bd) solid var(--ink);background:var(--paper);box-shadow:var(--sh);padding:var(--s3);animation:pop .45s both}
.col:nth-child(1) .card:nth-child(1){animation-delay:.02s}
.col:nth-child(1) .card:nth-child(2){animation-delay:.08s}
.col:nth-child(1) .card:nth-child(3){animation-delay:.14s}
.col:nth-child(2) .card{animation-delay:.10s}
.card h2{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;padding-bottom:var(--s2);margin-bottom:var(--s3);border-bottom:3px solid var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:var(--s2)}
.chip{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;border:3px solid var(--ink);background:var(--paper);color:var(--ink);padding:8px 10px;cursor:pointer;box-shadow:3px 3px 0 0 var(--ink);transition:transform .05s,box-shadow .05s;user-select:none}
.chip:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 0 var(--ink)}
.chip:active{transform:translate(3px,3px);box-shadow:0 0 0 0 var(--ink)}
.chip.on{background:var(--signal);color:var(--paper)}
.chip:focus-visible,.btn:focus-visible,.tg:focus-visible{outline:3px solid var(--signal);outline-offset:3px}
.field{margin-top:var(--s3)}
.field .lab{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:var(--s2)}
.field .val{background:var(--ink);color:var(--paper);padding:2px 7px;font-size:12px;min-width:46px;text-align:center}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:26px;background:transparent;cursor:pointer}
input[type=range]:focus{outline:none}
input[type=range]::-webkit-slider-runnable-track{height:10px;background:var(--paper);border:3px solid var(--ink)}
input[type=range]::-moz-range-track{height:10px;background:var(--paper);border:3px solid var(--ink)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-9px;background:var(--signal);border:3px solid var(--ink);box-shadow:3px 3px 0 0 var(--ink)}
input[type=range]::-moz-range-thumb{width:20px;height:20px;background:var(--signal);border:3px solid var(--ink);border-radius:0}
input[type=range]:focus-visible::-webkit-slider-thumb{outline:3px solid var(--signal);outline-offset:2px}
input[type=range]:focus-visible::-moz-range-thumb{outline:3px solid var(--signal);outline-offset:2px}
.btn{font-family:var(--sans);font-weight:800;font-size:13px;letter-spacing:.05em;text-transform:uppercase;border:3px solid var(--ink);background:var(--paper);color:var(--ink);padding:10px 12px;cursor:pointer;box-shadow:4px 4px 0 0 var(--ink);transition:transform .05s,box-shadow .05s}
.btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 0 var(--ink)}
.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 0 var(--ink)}
.btn.primary{background:var(--signal);color:var(--paper)}
.row{display:flex;gap:var(--s2)}
.row>*{flex:1}
.toggles{display:flex;flex-wrap:wrap;gap:var(--s2)}
.tg{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;border:3px solid var(--ink);background:var(--paper);color:var(--ink);padding:7px 9px;cursor:pointer;display:flex;align-items:center;gap:6px;box-shadow:3px 3px 0 0 var(--ink);transition:transform .05s,box-shadow .05s}
.tg:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 0 var(--ink)}
.tg .box{width:12px;height:12px;border:3px solid var(--ink);background:var(--paper)}
.tg.on .box{background:var(--signal)}
.brush .swatch{width:14px;height:14px;border:3px solid var(--ink);background:var(--signal)}
.hint{font-family:var(--mono);font-size:10px;line-height:1.5;letter-spacing:.05em;text-transform:uppercase;opacity:.7;margin-top:var(--s2)}
.stage .head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s3);padding-bottom:var(--s2);border-bottom:3px solid var(--ink)}
.stage .head .t{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
#stageBox{border:var(--bd) solid var(--ink);background:var(--paper);line-height:0;box-shadow:var(--sh)}
#plot{display:block;width:100%;height:auto}
.legend{display:flex;flex-wrap:wrap;gap:var(--s3);margin-top:var(--s3);font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase}
.legend .it{display:flex;align-items:center;gap:6px}
.dot{width:14px;height:14px;border:3px solid var(--ink);border-radius:50%}
.dot.a{background:var(--ink)}
.dot.b{background:var(--signal)}
.hg{color:var(--signal);font-size:14px;letter-spacing:-1px}
.sq{width:16px;height:6px;background:var(--ink);display:inline-block}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s2);margin-top:var(--s3)}
.stat{border:3px solid var(--ink);padding:8px 10px;font-family:var(--mono)}
.stat .k{font-size:10px;letter-spacing:.12em;text-transform:uppercase;opacity:.65}
.stat .v{font-size:18px;font-weight:800;margin-top:2px}
.stat.acc .v{color:var(--signal)}
footer{margin-top:var(--s4);border:var(--bd) solid var(--ink);background:var(--ink);color:var(--paper);padding:var(--s3);font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s2);animation:pop .45s both;animation-delay:.16s}
@keyframes pop{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:860px){.app{grid-template-columns:1fr}body{padding:var(--s3)}}
@media(max-width:420px){.top h1{font-size:20px}.legend{font-size:10px;gap:var(--s2)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
