:root{--bg:#141110;--panel:#cfc4a8;--ink:#1c1712;--amber:#ffb238;--red:#d42b1f;--term:#7dff8a}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(ellipse at 50% 30%,#2a201b,#0b0908 70%);color:#e9dfcf;font-family:'IBM Plex Mono',monospace;min-height:100vh}
.grain{pointer-events:none;position:fixed;inset:0;z-index:50;background:radial-gradient(transparent 55%,rgba(0,0,0,.6));mix-blend-mode:multiply}
header{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:2px solid #000;background:#0e0b0a;flex-wrap:wrap}
.logo{width:40px;color:var(--amber)}
.title{flex:1;min-width:220px}.t1{font-weight:700;letter-spacing:.06em;font-size:14px}.t2{font-size:11px;opacity:.6;font-weight:200}
.hdr-right{display:flex;gap:10px;font-size:11px;align-items:center;flex-wrap:wrap}
.live{color:var(--red);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.2}}
.badge{border:1px solid var(--amber);color:var(--amber);padding:2px 6px}
main{display:grid;grid-template-columns:1fr 330px;gap:18px;padding:18px;max-width:1300px;margin:auto}
@media(max-width:860px){main{grid-template-columns:1fr}}
.stage{position:relative}
.hazard{height:10px;background:repeating-linear-gradient(45deg,#f2c300 0 14px,#111 14px 28px)}
.tray{background:#1d1917;padding:16px;border:1px solid #000;box-shadow:inset 0 0 40px #000}
canvas{width:100%;display:block;aspect-ratio:20/13.5;cursor:crosshair;touch-action:none;border-radius:6px}
.hint{font-size:12px;opacity:.6}
.desc{font-family:'Crimson Pro',serif;font-size:17px}
.redact{background:#000;color:#000;cursor:help;position:relative}
.redact:hover{color:transparent}.redact:hover::after{content:attr(data-r);position:absolute;left:0;top:0;white-space:nowrap;color:var(--amber);background:#000;padding:0 3px}
.console{background:var(--panel);color:var(--ink);padding:14px;border-radius:4px;box-shadow:0 0 0 3px #8a7f66,0 10px 30px #000}
.console h3{margin:0 0 10px;font-size:13px;letter-spacing:.2em;border-bottom:2px solid var(--ink)}
label{display:flex;justify-content:space-between;font-size:11px;font-weight:700;margin-top:8px}
input[type=range]{width:100%;accent-color:var(--red)}
.row{display:flex;gap:6px;margin:8px 0}.row button{flex:1}
button{font-family:inherit;font-size:11px;font-weight:700;padding:7px;border:2px solid var(--ink);background:#e8dfc7;color:var(--ink);cursor:pointer}
button:active{transform:translateY(1px)}
.tog.on{background:var(--ink);color:var(--amber)}
.big{width:100%;padding:12px;background:#3a2c26;color:#fff;user-select:none;-webkit-user-select:none;touch-action:none}
.big.held{background:var(--red)}
.nixies{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:10px}
.nixies div{background:#120d08;padding:4px 7px;border-radius:3px}
.nixies .wide{grid-column:span 2}
.nixies small{display:block;font-size:9px;color:#8a7458}
.nixies span{font-family:'VT323',monospace;font-size:22px;color:#ff8c2a;text-shadow:0 0 6px #ff6a00}
details{margin-top:8px;border-top:2px dashed var(--ink);padding-top:6px}
summary{font-weight:700;font-size:12px;cursor:pointer}
#checks label{justify-content:flex-start;gap:6px;font-weight:400}
.stamp{border:3px solid #0a7a2a;color:#0a7a2a;font-weight:700;text-align:center;transform:rotate(-4deg);margin:8px;padding:4px}
.hidden{display:none}
.danger{width:100%;background:var(--red);color:#fff;margin-top:6px}
#replace{width:100%;margin-top:6px}
.logwrap{max-width:1300px;margin:0 auto 20px;padding:0 18px}
.logbar{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.15em;padding:6px 0}
.logbar button{margin-left:6px;background:#222;color:var(--term);border-color:var(--term)}
#log{background:#030603;color:var(--term);font-family:'VT323',monospace;font-size:18px;height:180px;overflow:auto;padding:8px;border:1px solid #1a3a1a}
#log .warn{color:var(--amber)}#log .bad{color:#ff5a4a}#log .note{color:#9fd4ff}
.noteRow{display:flex;gap:6px;margin-top:6px}
.noteRow input{flex:1;background:#030603;color:var(--term);border:1px solid #1a3a1a;font-family:inherit;padding:8px}
.noteRow button{background:#222;color:var(--term);border-color:var(--term)}
footer{text-align:center;font-size:11px;opacity:.6;padding:14px}
footer a{color:var(--amber)}