:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151c;--surface:#1a1e28;--border:#2c3240;--text:#e6e9f0;--muted:#98a1b3;--accent:#6ea8fe;--danger:#ff8a80;--danger-border:#7a3b38;--calm:#8fd19e;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.4}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--text);margin:0}.app{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;max-width:1200px;margin:0 auto;padding:24px;display:grid}.stage{flex-direction:column;align-items:center;gap:14px;display:flex}.ring{aspect-ratio:1;width:min(100%,100vh - 150px);min-width:260px;position:relative}.ring canvas{touch-action:manipulation;width:100%;height:100%;display:block}.readout{pointer-events:none;font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.readout-time{font-size:2.2rem;font-weight:600}.readout dl{gap:4px;margin:0;display:grid}.readout dl div{justify-content:space-between;gap:18px;display:flex}.readout dt{color:var(--muted)}.readout dd{margin:0}.legend{width:min(100%,420px);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:10px;font-size:.85rem;display:flex}.legend-bar{border-radius:5px;flex:1;height:10px}.status{min-height:1.4em;color:var(--muted);text-align:center;margin:0}.status.fault{color:var(--danger)}.panel{flex-direction:column;gap:16px;display:flex}.panel-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.panel-head h1{margin:0;font-size:1.4rem}.panel-head p{color:var(--muted);margin:2px 0 0}.panel-actions{gap:8px;display:flex}.transport{align-items:center;gap:8px;display:flex}.rate{flex:1;min-width:0;margin-left:8px}button{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:7px 14px}button:hover{border-color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{border-color:var(--accent);background:var(--accent);color:#0c1322;min-width:78px;font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}fieldset{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:0;padding:12px 16px 16px}legend{padding:0 6px;font-weight:600}.sliders{gap:12px;display:grid}.sliders+button{margin-top:14px}.slider{gap:4px;display:grid}.slider-head{justify-content:space-between;gap:12px;display:flex}.slider output{color:var(--muted);font-variant-numeric:tabular-nums}.slider input{width:100%;accent-color:var(--accent);margin:0}.note{color:var(--muted);margin:0 0 10px;font-size:.85rem}.error{color:var(--danger);margin:10px 0 0;font-size:.9rem}dialog{border:1px solid var(--border);background:var(--surface);width:min(640px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--text);border-radius:12px;padding:0}dialog::backdrop{background:#05070cb3}.dialog-body{padding:20px 24px 24px}.dialog-body p{margin:0 0 14px}.dialog-body .note{margin:14px 0 0}.dialog-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.dialog-head h2{margin:0;font-size:1.2rem}.dialog-close{background:0 0;padding:4px 10px}.table-scroll{overflow-x:auto}.presets{border-collapse:collapse;font-variant-numeric:tabular-nums;white-space:nowrap;width:100%}.presets th,.presets td{border-bottom:1px solid var(--border);text-align:left;padding:6px 12px 6px 0;font-weight:400}.presets thead th{color:var(--muted);font-size:.85rem}.presets tbody th{font-weight:600}.outcome{text-align:left;width:100%;padding:5px 10px}.outcome.absorbed{color:var(--calm)}.outcome.jam{border-color:var(--danger-border);color:var(--danger)}.info{margin:0}.info dt{margin-top:14px;font-weight:600}.info dt:first-child{margin-top:0}.info dd{color:var(--muted);margin:2px 0 0}@media (width<=860px){.app{grid-template-columns:minmax(0,1fr);padding:16px}.ring{width:min(100%,560px)}}@media (width<=600px){.dialog-body{padding:16px}.presets{white-space:normal;font-size:.85rem}.presets th,.presets td{padding-right:8px}.outcome{padding:4px 6px}}
