:root{--g0: #0f1114;--g1: #15181c;--g2: #1b1f24;--g3: #252a31;--rule: #2c323a;--ink: #d6dbe1;--ink-2: #8b949e;--ink-3: #5c6670;--sky: #0ea5e9;--sky-dim: #0b5f86;--amber: #f5a524;--red: #ef4444;--green: #3fb27f;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "IBM Plex Sans", system-ui, sans-serif;--tape-h: 30px;--rail-w: 188px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:linear-gradient(180deg,rgba(14,165,233,.035),transparent 240px),radial-gradient(1200px 600px at 70% -10%,#1a1e23,var(--g0));color:var(--ink);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.dim{color:var(--ink-3)}.ok{color:var(--green)}.warn{color:var(--amber)}.bad{color:var(--red)}.grain{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.tape{position:fixed;top:0;left:0;right:0;height:var(--tape-h);z-index:20;display:grid;grid-template-columns:var(--rail-w) 1fr auto;align-items:stretch;background:var(--g1);border-bottom:1px solid var(--rule)}.tape__tag{display:flex;align-items:center;padding:0 14px;gap:8px;font:600 11px var(--mono);letter-spacing:.12em;color:var(--sky);border-right:1px solid var(--rule)}.tape__tag:before{content:"";width:6px;height:6px;background:var(--sky);border-radius:50%}.tape__window{overflow:hidden;position:relative}.tape__track{display:flex;width:max-content;height:100%;align-items:center;animation:tape-roll 48s linear infinite;will-change:transform;contain:layout paint}.tape:hover .tape__track{animation-play-state:paused}@keyframes tape-roll{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.q{display:inline-flex;gap:8px;padding:0 18px;font:12px var(--mono);border-right:1px solid var(--g3);white-space:nowrap}.q b{color:var(--ink-2);font-weight:500}.q .up{color:var(--green)}.q .dn{color:var(--red)}.tape__clock{display:flex;align-items:center;padding:0 14px;font-size:12px;color:var(--ink-2);border-left:1px solid var(--rule)}.rail{position:fixed;top:var(--tape-h);bottom:0;left:0;width:var(--rail-w);z-index:10;display:flex;flex-direction:column;background:var(--g1);border-right:1px solid var(--rule)}.rail__mark{padding:16px 14px 18px;border-bottom:1px solid var(--rule)}.rail__mark span{display:block;font-size:20px;font-weight:600;letter-spacing:.18em;color:var(--ink)}.rail__mark small{font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:var(--ink-3)}.rail__go{display:flex;align-items:center;gap:10px;padding:9px 14px;color:var(--ink-2);text-decoration:none;font-weight:500;border-left:2px solid transparent}.rail__go:hover{color:var(--ink);background:var(--g2)}.rail__go.is-on{color:var(--ink);border-left-color:var(--sky);background:linear-gradient(90deg,rgba(14,165,233,.1),transparent)}kbd{font:10px var(--mono);color:var(--ink-3);border:1px solid var(--g3);padding:0 4px;border-radius:2px}.rail__foot{margin-top:auto;padding:12px 14px;border-top:1px solid var(--rule);display:grid;gap:6px}.kv{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.kv b{color:var(--ink);font-weight:500;text-transform:none;letter-spacing:0}.toggle{margin-top:4px;padding:5px;font:11px var(--mono);letter-spacing:.1em;color:var(--ink-2);background:var(--g2);border:1px solid var(--g3);cursor:pointer}.toggle[aria-pressed=true]{color:var(--amber);border-color:var(--amber)}.board{margin:var(--tape-h) 0 0 var(--rail-w);padding:1px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--g0);min-height:calc(100vh - var(--tape-h));align-content:start}.pane{background:var(--g1);box-shadow:0 0 0 1px var(--rule);padding:0 0 12px;scroll-margin-top:calc(var(--tape-h) + 8px)}.pane--wide{grid-column:1 / -1}.pane__hd{display:flex;align-items:baseline;gap:12px;padding:8px 12px;margin-bottom:10px;background:var(--g2);border-bottom:1px solid var(--rule)}.pane__hd h2{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.pane__hd .dim{font-size:10px;letter-spacing:.1em}.flag,.runstate{margin-left:auto;font:600 10px var(--mono);letter-spacing:.12em;padding:2px 6px;color:var(--sky);border:1px solid var(--sky-dim)}.readouts{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:0 12px}.ro{padding:8px 10px;border-right:1px solid var(--rule)}.ro:last-child{border-right:0}.ro label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.ro output{display:block;font-size:20px;font-weight:500;color:var(--ink)}.ro--key output{color:var(--sky)}.ro--key.is-amber output{color:var(--amber)}.ro--key.is-red output{color:var(--red)}.gauge{margin:14px 12px 4px}.gauge__scale{display:flex;justify-content:space-between;font-size:10px;color:var(--ink-3);margin-bottom:4px}.gauge__bar{position:relative;height:16px;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),var(--g3) calc(10% - 1px) 10%),var(--g0);border:1px solid var(--rule);overflow:visible}.gauge__fill{position:absolute;left:0;top:0;bottom:0;width:100%;background:linear-gradient(90deg,var(--sky-dim),var(--sky));transform-origin:left center;transform:scaleX(.6667);transition:transform .18s cubic-bezier(.2,.7,.2,1),background-color .18s;will-change:transform}.gauge__fill.is-amber{background:linear-gradient(90deg,#7a5310,var(--amber))}.gauge__fill.is-red{background:linear-gradient(90deg,#7a1f1f,var(--red))}.gauge__line{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--amber);left:50%}.gauge__line span{position:absolute;top:-16px;left:4px;font-size:10px;color:var(--amber);white-space:nowrap}.grid{width:calc(100% - 24px);margin:0 12px;border-collapse:collapse;font-size:12px}.grid th,.grid td{padding:5px 6px;border-bottom:1px solid var(--g3);text-align:left}.grid th{color:var(--ink-3);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.grid--rows thead th{border-bottom-color:var(--rule)}.grid--rows tbody tr:hover{background:var(--g2)}.grid td.mono,.grid--rows td:nth-child(n+2){font-family:var(--mono)}.cell{width:100%;padding:3px 6px;background:var(--g0);color:var(--ink);border:1px solid var(--g3);font-size:12px}.cell:focus{outline:none;border-color:var(--sky)}.fine{margin:8px 12px 0;font-size:11px;color:var(--ink-3)}.shock{display:grid;grid-template-columns:auto 1fr 56px;align-items:center;gap:10px;margin:0 12px 10px;font-size:11px;color:var(--ink-3);text-transform:uppercase}.shock output{text-align:right;color:var(--ink);font-size:13px}input[type=range]{accent-color:var(--sky);width:100%}.exec{display:grid;grid-template-columns:280px 1fr;gap:12px;padding:0 12px}.exec__ctl{display:grid;gap:8px;align-content:start}.exec__ctl .fine{margin:0}.go{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;font:600 12px var(--mono);letter-spacing:.1em;cursor:pointer;color:var(--g0);background:var(--sky);border:0}.go kbd{color:var(--g0);border-color:#0000004d}.go:hover{background:#38bdf8}.go:disabled{background:var(--g3);color:var(--ink-3);cursor:progress}.tty{min-height:260px;max-height:420px;overflow:auto;padding:10px 12px;background:#0b0d10;border:1px solid var(--rule);font-size:12px;line-height:1.55;color:#9fb3c4;white-space:pre-wrap;word-break:break-all}.tty .ln-step{color:var(--sky)}.tty .ln-err{color:var(--red)}.runstate.is-running{color:var(--amber);border-color:var(--amber)}.runstate.is-completed{color:var(--green);border-color:var(--green)}.runstate.is-rejected{color:var(--red);border-color:var(--red)}@media (max-width: 1000px){.board{grid-template-columns:1fr}.readouts{grid-template-columns:repeat(3,1fr)}.exec{grid-template-columns:1fr}}@media (max-width: 700px){:root{--rail-w: 0px}.rail,.tape__tag{display:none}.tape{grid-template-columns:1fr auto}}@media (prefers-reduced-motion: reduce){.tape__track{animation:none}.gauge__fill{transition:none}}
