:root{--void:#0e1116;--concrete:#242c36;--concrete-lit:#2f3945;--slab:#39434f;--edge:#4b5765;--sun:#f0c069;--sun-soft:rgba(240,192,105,.13);--trace:#5fd3bd;--ink:#c3ccd6;--ink-dim:#6d7986}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{background:var(--void);color:var(--ink);font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif;display:flex;flex-direction:column;align-items:center;padding:14px 12px 20px;gap:12px;-webkit-font-smoothing:antialiased}header{width:100%;max-width:720px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}h1{font-size:15px;font-weight:800;letter-spacing:.14em;color:var(--ink)}h1 span{color:var(--sun)}.sub{font-size:11px;color:var(--ink-dim);letter-spacing:.04em}.stage{position:relative;width:100%;max-width:720px}canvas{display:block;width:100%;background:var(--void);border:1px solid #1d242d;image-rendering:pixelated;touch-action:manipulation;cursor:crosshair}.toast{position:absolute;left:50%;top:14px;transform:translate(-50%,-6px);background:#f0c069f0;color:#20180a;font-size:12px;font-weight:700;letter-spacing:.06em;padding:6px 14px;border-radius:2px;opacity:0;pointer-events:none;transition:opacity .35s,transform .35s}.toast.on{opacity:1;transform:translate(-50%)}.hud{width:100%;max-width:720px;display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}.readout{flex:1 1 auto;display:flex;gap:0;border:1px solid #1d242d;background:#141a21}.cell{padding:7px 12px;border-right:1px solid #1d242d;display:flex;flex-direction:column;gap:2px;min-width:84px}.cell:last-child{border-right:0}.k{font-size:9px;letter-spacing:.14em;color:var(--ink-dim)}.v{font-size:15px;font-weight:700;font-family:ui-monospace,SF Mono,monospace;color:var(--ink)}.v.hot{color:var(--sun)}.v.trace{color:var(--trace)}button{font-family:inherit;font-size:11px;letter-spacing:.08em;font-weight:700;background:#141a21;color:var(--ink);border:1px solid #2b3540;padding:9px 14px;cursor:pointer}button:hover{border-color:var(--trace);color:var(--trace)}button:focus-visible{outline:2px solid var(--trace);outline-offset:2px}button.item .cost{color:var(--ink-dim);font-size:9px;margin-left:3px}button.item.on{border-color:var(--sun);color:var(--sun)}button.item.on .cost{color:var(--sun)}button[disabled]{opacity:.4;cursor:default}button[disabled]:hover{border-color:#2b3540;color:var(--ink)}.help{width:100%;max-width:720px;font-size:11.5px;line-height:1.75;color:var(--ink-dim)}.help b{color:var(--ink);font-weight:700}.help .rule{color:var(--trace)}@media (prefers-reduced-motion:reduce){.toast{transition:none}}#debug-root{width:100%;max-width:720px}.dbg{border:1px solid #1d242d;background:#111721;font-size:11px;line-height:1.6;color:var(--ink);display:flex;flex-direction:column}.dbg h2{font-size:10px;letter-spacing:.16em;color:var(--sun);padding:7px 10px;border-bottom:1px solid #1d242d;font-weight:800;display:flex;justify-content:space-between;align-items:center}.dbg section{padding:8px 10px;border-bottom:1px solid #1a2029}.dbg section:last-child{border-bottom:0}.dbg .title{font-size:9px;letter-spacing:.14em;color:var(--ink-dim);margin-bottom:6px}.dbg .row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.dbg button{padding:5px 9px;font-size:10px}.dbg button.on{border-color:var(--trace);color:var(--trace);background:#152029}.dbg label{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--ink-dim)}.dbg input[type=range]{flex:1 1 90px;accent-color:var(--trace);min-width:80px}.dbg .num{font-family:ui-monospace,monospace;color:var(--ink);min-width:22px;text-align:right}.dbg .slider{display:flex;align-items:center;gap:8px;margin-bottom:4px}.dbg .slider .name{width:74px;color:var(--ink-dim);font-size:10px;letter-spacing:.06em}.dbg .kv{display:grid;grid-template-columns:78px 1fr;gap:2px 8px;font-family:ui-monospace,monospace;font-size:10.5px}.dbg .kv .kk{color:var(--ink-dim)}.dbg .legend{display:flex;gap:10px;font-size:10px;color:var(--ink-dim)}.dbg .swatch{display:inline-block;width:10px;height:2px;vertical-align:middle;margin-right:4px}.dbg select{font-family:inherit;font-size:10.5px;background:#141a21;color:var(--ink);border:1px solid #2b3540;padding:4px 6px}.dbg .hint{color:var(--ink-dim);font-size:10px}
