:root{--font-ui:ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--fs-xs:1.2rem;--fs-s:1.4rem;--fs-m:1.6rem;--fs-l:2rem;--fs-xl:2.4rem;--fs-xxl:3rem;--fs-hero:3.4rem;--c-ink:#0d0f14;--c-paper:#f7f3e8;--c-white:#fff;--c-black:#000;--c-text-2:#dfe6f2;--c-muted:#8b93a7;--c-surface-0:#0b0d13;--c-surface-1:#131824;--c-surface-2:#1a2233;--c-surface-3:#23293a;--c-surface-4:#2e3547;--c-surface-5:#4d5666;--c-panel:#0e1118db;--c-line-soft:#ffffff12;--c-line:#ffffff24;--c-line-strong:#ffffff38;--c-rim:#ffffff80;--c-shadow:#00000080;--c-scrim:#000000a6;--c-shadow-deep:#000000d9;--c-accent:#ffd23f;--c-accent-hi:#ffe066;--c-accent-2:#f0a91d;--c-accent-edge:#b8891a;--c-accent-ink:#1a1405;--c-reward:#9b6dff;--c-reward-hi:#b993ff;--c-reward-edge:#5e3db8;--c-reward-ink:#12082a;--c-good:#58bd6d;--c-good-hi:#93e8a2;--c-good-edge:#237a2c;--c-good-text:#b7ff5a;--c-good-ink:#06240f;--c-danger:#e8443c;--c-danger-hi:#ff8a84;--c-danger-edge:#8f231d;--c-danger-text:#ff9a6a;--c-info:#6fd4ff;--c-info-hi:#9dfbff;--c-info-2:#2e9dff;--cop-blue:#2e7dff;--cop-red:#ff3b3b;--c-pick:#3a2230;--c-pick-2:#241722;--c-map:#2b4a6b;--c-map-2:#1d3550;--c-map-3:#16283e;--r-s:.4rem;--r-m:.8rem;--r-l:1.2rem;--r-xl:1.6rem;--r-pill:99.9rem;--sp-1:.4rem;--sp-2:.8rem;--sp-3:1.2rem;--sp-4:1.6rem;--sp-5:2.4rem;--sp-6:3.2rem;--tap:4.4rem;--accent:var(--c-accent);--accent-2:var(--c-danger-text);--ink:var(--c-ink);--paper:var(--c-paper)}body.has-touch button:not(#ui *):not(.touch-btn){min-width:44px;min-height:44px}*{box-sizing:border-box;margin:0;padding:0}html{font-size:calc(10px * var(--u,1))}body{font-size:var(--fs-m)}html,body{overscroll-behavior:none;background:var(--c-ink);width:100%;height:100%;font-family:var(--font-ui);color:var(--paper);-webkit-font-smoothing:antialiased;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:default;overflow:hidden}input,textarea,select,[contenteditable]{user-select:auto;-webkit-touch-callout:default}#app{width:100vw;height:100vh;position:relative}#scene{touch-action:none;width:100%;height:100%;display:block}#scene.dragging{cursor:grabbing}.hidden{display:none!important}kbd{text-align:center;background:var(--c-line);border:1px solid var(--c-line-strong);border-radius:var(--r-s);min-width:2.4rem;font-family:var(--font-ui);font-size:var(--fs-xs);border-bottom-width:.3rem;padding:.3rem .7rem;display:inline-block}.segmented{grid-template-columns:repeat(4,1fr);gap:.6rem;display:grid}.segmented button{font-family:var(--font-ui);font-size:var(--fs-xs);letter-spacing:.6px;border-radius:var(--r-m);border:.2rem solid var(--c-line-strong);background:var(--c-panel);min-height:4.6rem;color:var(--paper);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;padding:.6rem .2rem}@media (width<=720px){.segmented{grid-template-columns:repeat(2,1fr)}}@media (height<=560px){.segmented button{min-height:4.4rem}}.tuner{z-index:40;border:1px solid var(--c-line);border-radius:var(--r-m);width:min(47rem,95vw);max-height:calc(100vh - 13.2rem);font-size:var(--fs-xs);color:var(--paper);backdrop-filter:blur(.3rem);background:#0a0c11ed;padding:1rem 1.2rem 1.2rem;line-height:1.4;position:absolute;top:11.8rem;left:1.4rem;overflow-y:auto}.tuner-head{align-items:baseline;gap:var(--sp-2);margin-bottom:.8rem;display:flex}.tuner-head b{letter-spacing:.24rem;color:var(--accent)}.tuner-hint{font-size:var(--fs-xs);opacity:.5;letter-spacing:.6px}.tuner-modes{gap:.5rem;margin-bottom:.8rem;display:flex}.tuner-mode{cursor:pointer;font-family:inherit;font-size:var(--fs-xs);letter-spacing:1px;color:#f7f3e8b3;background:var(--c-line-soft);border:1px solid var(--c-line);border-radius:var(--r-s);flex:1;padding:.5rem 0}.tuner-mode:hover{background:var(--c-line)}.tuner-mode.on{background:var(--accent);border-color:var(--accent);color:var(--ink)}.tuner-live{font-size:var(--fs-xs);color:var(--c-good-hi);border-radius:var(--r-s);font-variant-numeric:tabular-nums;background:#0006;margin-bottom:.8rem;padding:.5rem .7rem}.tuner-preview{font-size:var(--fs-xs);opacity:.9;align-items:center;gap:.7rem;margin-bottom:1rem;display:flex}.tuner-preview label{align-items:center;gap:var(--sp-1);white-space:nowrap;display:flex}.tuner-preview input[type=range]{flex:1;min-width:4rem}.t-prev-val{text-align:right;font-variant-numeric:tabular-nums;opacity:.8;min-width:5.2rem}.tuner-grid{grid-template-columns:7.4rem minmax(0,1fr) minmax(0,1fr);align-items:center;gap:.5rem .7rem;display:grid}.tuner-colhead{font-size:var(--fs-xs);letter-spacing:.14rem;opacity:.55;text-align:center}.tuner-rowlabel{font-size:var(--fs-xs);opacity:.75}.tuner-cell{align-items:center;gap:.5rem;min-width:0;display:flex}.tuner-cell.span2{grid-column:2/span 2}.tuner-cell input[type=range]{flex:1 1 0;min-width:0}.tuner-cell input[type=number]{width:5rem;font-family:inherit;font-size:var(--fs-xs);text-align:right;color:var(--paper);background:var(--c-line-soft);border:1px solid var(--c-line);border-radius:var(--r-s);flex:0 0 5rem;padding:.2rem .3rem}.tuner input[type=range]{accent-color:var(--accent);cursor:pointer;height:1.6rem}.tuner-more{margin-top:1rem}.tuner-more summary{cursor:pointer;font-size:var(--fs-xs);letter-spacing:.12rem;opacity:.6;padding:.3rem 0}.tuner-more .tuner-grid{margin-top:.6rem}.tuner-actions{gap:.6rem;margin-top:1.1rem;display:flex}.tuner-btn{cursor:pointer;font-family:inherit;font-size:var(--fs-xs);letter-spacing:.12rem;color:var(--ink);background:var(--accent);border-radius:var(--r-s);border:none;flex:1;padding:.6rem 0}.tuner-btn:hover{background:var(--c-accent-hi)}.tuner-mini{cursor:pointer;font-family:inherit;font-size:var(--fs-xs);letter-spacing:.8px;color:#f7f3e8d9;background:var(--c-line-soft);border:1px solid var(--c-line);border-radius:var(--r-s);padding:.3rem .6rem}.tuner-mini:hover{background:var(--c-line)}.tuner-note{min-height:1.3rem;font-size:var(--fs-xs);color:var(--accent);opacity:.85;margin-top:.6rem}.tuner-json{resize:vertical;width:100%;height:13rem;font-family:inherit;font-size:var(--fs-xs);color:var(--paper);background:var(--c-shadow);border:1px solid var(--c-line);border-radius:var(--r-s);margin-top:.6rem;padding:.6rem;line-height:1.35}.t-apply{margin-top:.5rem}.boot-shield{z-index:2147483000;color:#fff;background:radial-gradient(at 50% 40%,#1a55b4,#041436);place-items:center;font-family:Lilita One,Nunito,system-ui,sans-serif;transition:opacity .4s ease-out;display:grid;position:fixed;inset:0}.boot-shield.gone{opacity:0;pointer-events:none}.boot-in{text-align:center;flex-direction:column;align-items:center;width:min(62rem,100vw - 6rem);display:flex}.boot-logo{filter:drop-shadow(0 0 2.2rem #3cbeff8c);flex-direction:column;align-items:center;line-height:.82;display:flex;transform:rotate(-3deg)}.boot-logo span{--o:#04143a;text-shadow:-.45rem -.45rem 0 var(--o), .45rem -.45rem 0 var(--o), -.45rem .45rem 0 var(--o), .45rem .45rem 0 var(--o), 0 -.56rem 0 var(--o), 0 .56rem 0 var(--o), -.56rem 0 0 var(--o), .56rem 0 0 var(--o), 0 1.2rem 0 var(--o)}.boot-logo .l1{color:#ffd84a;letter-spacing:.08em;font-size:5.6rem}.boot-logo .l2{font-size:14rem}.boot-bar{background:#0a1a45;border-radius:1rem;width:100%;height:3rem;margin:4.4rem 0 1.4rem;position:relative;overflow:hidden;box-shadow:0 0 0 .3rem #031230,inset 0 .3rem #00000059}#boot-fill{background:linear-gradient(#fff09a 0 .3rem,#ffd22e .3rem 52%,#f5ab12 52%);border-radius:.8rem;width:4%;transition:width .45s ease-out;position:absolute;top:0;bottom:0;left:0}.boot-text{color:#cfe2ff;text-shadow:0 .2rem #031230;font-size:2.2rem}.boot-tip{color:#cfe2ff;opacity:0;min-height:2.6em;margin-top:2.6rem;font-size:1.9rem;line-height:1.3;transition:opacity .45s}.boot-tip.show{opacity:.9}.boot-tip b{color:#ffd84a}.tuner-fx{width:min(43rem,95vw);left:auto;right:1.4rem}.fx-events{flex-wrap:wrap}.fx-events .tuner-mode{font-size:var(--fs-xs);letter-spacing:.5px;flex:28%}.fx-assign{align-items:flex-start;gap:.7rem;margin-bottom:.7rem;display:flex}.fx-chips{flex-wrap:wrap;flex:1;gap:.5rem;min-width:0;display:flex}.fx-empty{font-size:var(--fs-xs);opacity:.45}.fx-chip{border:1px solid var(--c-line);border-radius:var(--r-s);background:var(--c-line-soft);align-items:stretch;display:inline-flex;overflow:hidden}.fx-chip button{cursor:pointer;font-family:inherit;font-size:var(--fs-xs);color:#f7f3e8d9;background:0 0;border:0;padding:.3rem .7rem}.fx-chip button:hover{background:var(--c-line)}.fx-chip.on{border-color:var(--accent)}.fx-chip.on button{color:var(--accent)}.fx-chip .fx-x{opacity:.55;border-left:1px solid var(--c-line);padding:.3rem .6rem}.fx-chip .fx-x:hover{opacity:1;color:var(--c-danger-text)}.fx-addrow{align-items:center;gap:.6rem;margin-bottom:.9rem;display:flex}.fx-rep{align-items:center;gap:var(--sp-1);font-size:var(--fs-xs);opacity:.8;white-space:nowrap;display:flex}.tuner-fx select{min-width:0;font-family:inherit;font-size:var(--fs-xs);color:var(--paper);background:var(--c-line-soft);border:1px solid var(--c-line);border-radius:var(--r-s);flex:1;padding:.3rem .4rem}.fx-sheetbar{gap:.9rem;margin-bottom:.9rem;display:flex}.fx-preview{border:1px solid var(--c-line);border-radius:var(--r-s);flex:0 0 8.8rem;width:8.8rem;height:8.8rem}.fx-sheetside{flex-direction:column;flex:1;gap:.5rem;min-width:0;display:flex}.fx-selname{color:var(--accent);font-size:var(--fs-xs);letter-spacing:.8px}.fx-blend{gap:.5rem;display:flex}.fx-blend .tuner-mini{flex:1}.fx-blend .tuner-mini.on{background:var(--accent);border-color:var(--accent);color:var(--ink)}.fx-colors{gap:.5rem;display:flex}.fx-color{flex:1}.fx-color input[type=color]{cursor:pointer;border:1px solid var(--c-line);border-radius:var(--r-s);background:0 0;width:100%;height:2rem;padding:0}.fx-grid{grid-template-columns:7.4rem minmax(0,1fr)}.fx-grid.fx-off{opacity:.35}.fx-numbers{margin-top:0}.fx-numbers .tuner-grid{margin-top:.6rem}.tuner-sandbox{width:min(36rem,95vw)}.sb-h{font-size:var(--fs-xs);letter-spacing:.16rem;color:var(--accent);opacity:.8;margin:1.1rem 0 .5rem;font-weight:700}.sb-h:first-of-type{margin-top:.4rem}.sb-zones,.sb-cars,.sb-acts{flex-wrap:wrap;gap:.5rem;display:flex}.sb-zones .tuner-mini,.sb-cars .tuner-mini{flex:30%}.sb-cars .tuner-mini.on{background:var(--accent);border-color:var(--accent);color:var(--ink)}.sb-acts .tuner-mini{flex:22%}.sb-row{align-items:center;gap:.7rem;margin-top:.7rem;display:flex}.sb-row input[type=range]{flex:1;min-width:4rem}.sb-row .tuner-rowlabel{flex:0 0 5.4rem}.sb-arrive-val,.sb-time-val,.sb-wanted-val{text-align:right;font-size:var(--fs-xs);opacity:.85;font-variant-numeric:tabular-nums;flex:0 0 6.2rem}.sb-wanted-val{flex-basis:2rem}.sb-check{font-size:var(--fs-xs);opacity:.85;cursor:pointer;align-items:center;gap:.6rem;margin-top:.6rem;display:flex}.sb-live{line-height:1.5}.sb-warn{color:var(--c-danger-text)}.tuner-audio{width:min(42rem,95vw);left:auto;right:1.4rem}.au-cues{flex-wrap:wrap;gap:.5rem;display:flex}.au-cues .tuner-mini{font-size:var(--fs-xs);letter-spacing:.4px;flex:30%;justify-content:center;align-items:center;gap:.5rem;display:flex}.au-cue.au-muted{opacity:.55}.au-tag{font-style:normal;font-size:var(--fs-xs);letter-spacing:.8px;color:var(--c-danger-text)}.au-tag:empty{display:none}.tuner-mini.au-hit{background:var(--accent);border-color:var(--accent);color:var(--ink)}.tuner-mini.au-missing{opacity:.3;text-decoration:line-through}.au-family{align-items:flex-start;gap:.7rem;margin-top:.5rem;display:flex}.au-fam{font-size:var(--fs-xs);letter-spacing:.8px;opacity:.5;flex:0 0 5.2rem;padding-top:.4rem}.au-chips{gap:var(--sp-1);flex-wrap:wrap;flex:1;min-width:0;display:flex}.au-chips .tuner-mini{font-size:var(--fs-xs)}.au-loop .au-on{flex:0 0 8.4rem;margin-top:0}.au-loop-val{text-align:right;font-size:var(--fs-xs);opacity:.85;font-variant-numeric:tabular-nums;flex:0 0 9.6rem}#scene.can-grab{cursor:grab}#scene.grabbing{cursor:grabbing}
