.demo-page{overflow:hidden;height:100vh;height:100dvh}#stage{position:fixed;inset:0}#stage canvas{display:block;touch-action:none}.labels-layer{position:absolute;inset:0;pointer-events:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3)}.loading{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--bg);transition:opacity .6s ease}.loading.done{opacity:0;pointer-events:none}.loading-box{display:grid;justify-items:center;gap:14px;color:var(--text-2)}.loading-shaft{position:relative;width:34px;height:64px;border:2px solid var(--border-strong);border-radius:8px}.loading-car{position:absolute;left:4px;right:4px;height:18px;border-radius:4px;background:var(--accent);animation:ride 1.6s cubic-bezier(.65,0,.35,1) infinite alternate}@keyframes ride{0%{top:4px}to{top:38px}}.topbar{position:fixed;top:12px;left:12px;right:12px;z-index:10;display:flex;align-items:center;gap:12px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:10px;padding:6px 14px 6px 8px;border-radius:12px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);backdrop-filter:blur(16px);color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--accent);color:#fff}.brand-mark svg{width:22px;height:22px}.brand-text{font-weight:650;letter-spacing:-.01em;line-height:1.1}.brand-text small{display:block;font-weight:450;font-size:12px;color:var(--text-3)}.scenario select{box-shadow:var(--shadow-sm);background-color:var(--surface);backdrop-filter:blur(16px);min-width:230px}.top-actions{margin-left:auto;display:flex;gap:4px;padding:3px;border-radius:12px;background:var(--surface);border:1px solid var(--border);backdrop-filter:blur(16px);box-shadow:var(--shadow-sm)}.show-sm{display:none}.story{position:fixed;z-index:9;top:70px;left:12px;width:min(390px,calc(100vw - 24px));max-height:calc(100dvh - 160px);overflow:auto;padding:16px 18px 14px}.story.pulse .story-head h1{animation:rise .45s ease}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.scenario-intro{margin:0 0 12px;padding:9px 12px;border-radius:10px;background:var(--accent-soft);color:var(--text);font-size:13.5px}.story-head{display:flex;align-items:center;gap:10px}.story-head h1{margin:0;font-size:21px;font-weight:680;letter-spacing:-.02em;line-height:1.2}.chip{margin-left:auto;padding:2px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-3);font-size:12px;white-space:nowrap}.phase-dot{width:11px;height:11px;flex:none;border-radius:50%;background:var(--text-3);box-shadow:0 0 0 4px color-mix(in srgb,var(--text-3) 18%,transparent)}.phase-dot[data-kind=move]{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:beat 1s ease-in-out infinite}.phase-dot[data-kind=danger]{background:var(--danger);box-shadow:0 0 0 4px var(--danger-soft);animation:beat .5s ease-in-out infinite}@keyframes beat{50%{transform:scale(1.25)}}.phase-text{margin:10px 0 8px;color:var(--text);font-size:15px}.phase-focus{margin:0 0 12px;padding-left:11px;border-left:3px solid var(--lit);color:var(--text-2);font-size:13.5px}.phase-focus:empty{display:none}.timeline{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 10px;padding:0;list-style:none}.timeline li{position:relative;padding:3px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-3);font-size:11.5px;transition:all .3s}.timeline li.done{color:var(--text-2);background:var(--surface-2)}.timeline li.current{color:#fff;background:var(--accent);border-color:transparent;box-shadow:0 2px 10px color-mix(in srgb,var(--accent) 40%,transparent)}.story-actions{display:flex;justify-content:space-between;align-items:center;gap:8px}.story-actions #story-collapse{margin-left:auto;color:var(--text-3)}.story.collapsed .phase-text,.story.collapsed .phase-focus,.story.collapsed .timeline,.story.collapsed .scenario-intro{display:none}.story.collapsed .story-actions{margin-top:8px}.panel{position:fixed;z-index:9;top:70px;right:12px;bottom:84px;width:360px;display:flex;flex-direction:column;overflow:hidden}.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:6px;border-bottom:1px solid var(--border)}.tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px 6px;border:0;border-radius:9px;background:none;color:var(--text-3);font:500 12px var(--font);cursor:pointer;transition:background .18s,color .18s}.tab:hover{color:var(--text);background:var(--surface-2)}.tab.active{color:var(--accent);background:var(--accent-soft)}.tab-body{display:none;overflow:auto;padding:6px 16px 18px}.tab-body.active{display:block;animation:rise .25s ease}.tab-body h3{margin:16px 0 6px;font-size:14px;font-weight:650}.hint{margin:4px 0 10px;color:var(--text-3);font-size:12.5px}.landings{display:grid;gap:4px}.landing-row{display:grid;grid-template-columns:1fr 22px 38px 38px;align-items:center;gap:6px;padding:3px 4px 3px 10px;border-radius:10px;transition:background .3s}.landing-row.here{background:var(--accent-soft)}.landing-row .car-here{width:10px;height:14px;border-radius:3px;justify-self:center}.landing-row.here .car-here{background:var(--accent)}.floor-name{font-size:13.5px;font-weight:550}.call,.cop-btn{display:grid;place-items:center;height:34px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface-solid);color:var(--text-2);cursor:pointer;transition:all .18s}.call{width:34px}.call:hover:not(:disabled),.cop-btn:hover{border-color:var(--lit)}.call:disabled{opacity:.2;cursor:default}.call.lit,.cop-btn.lit{background:var(--lit);border-color:var(--lit);color:#2b1d00;box-shadow:0 0 0 4px color-mix(in srgb,var(--lit) 30%,transparent),0 0 18px color-mix(in srgb,var(--lit) 60%,transparent)}.cop{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:12px;border-radius:12px;background:linear-gradient(160deg,#9aa3ab,#6f7880);max-width:300px}.cop-btn{width:100%;aspect-ratio:1;height:auto;font:650 15px var(--font);color:#1d2329;background:#eef1f3;border-color:#00000040}.cop-btn.wide{grid-column:span 2;aspect-ratio:auto;height:38px;border-radius:999px;font-size:12px;letter-spacing:-.1em}.add-person{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}.add-person label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2)}.add-person select{height:30px;font-size:13px;padding:0 28px 0 10px}.chart-wrap{margin-top:10px;padding:10px 8px 6px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border)}#chart{width:100%;height:190px;display:block}.chart-legend{display:flex;gap:14px;justify-content:center;font-size:12px;color:var(--text-2)}.lg:before{content:"";display:inline-block;width:14px;height:3px;margin-right:6px;vertical-align:middle;border-radius:2px}.lg.v:before{background:#1f6feb}.lg.a:before{background:#e63962}.lg.j:before{background:repeating-linear-gradient(90deg,#d68c00 0 3px,transparent 3px 6px)}.gauges{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.gauge{padding:8px 10px;border-radius:10px;background:var(--surface-solid);border:1px solid var(--border);min-width:0}.gauge .g-label{display:block;font-size:11.5px;color:var(--text-3)}.gauge .g-value{display:block;font:650 16px var(--font);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.gauge .g-sub{display:block;min-height:15px;font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gauge[data-tone=good] .g-value{color:var(--good)}.gauge[data-tone=warn] .g-value{color:var(--warn)}.balance{margin-top:6px}.balance-row{display:grid;grid-template-columns:104px 1fr 62px;align-items:center;gap:8px;margin:6px 0;font-size:12.5px;color:var(--text-2)}.balance-row b{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.bar{height:9px;border-radius:99px;background:var(--surface-2);overflow:hidden}.bar i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .4s ease}#bal-cw{background:#e8a33d}.energy{margin-top:12px;font-size:12.5px;color:var(--text-3)}.chain{position:relative;display:grid;gap:4px;padding-left:18px}.chain:before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:2px;background:var(--good);border-radius:2px}.contact{position:relative;display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:9px;background:var(--surface-solid);border:1px solid var(--border);font-size:13px;transition:all .25s}.contact i{position:absolute;left:-17px;width:12px;height:12px;border-radius:50%;background:var(--good);border:2px solid var(--surface-solid)}.contact.near{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}.contact.open{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 50%,transparent);color:var(--danger)}.contact.open i{background:var(--danger)}.chain-state{margin:10px 0 4px;padding:9px 12px;border-radius:10px;font-size:13px;font-weight:550}.chain-state.ok{background:var(--good-soft);color:var(--good)}.chain-state.cut{background:var(--danger-soft);color:var(--danger)}.row{display:flex;flex-wrap:wrap;gap:8px}.toggles{display:grid;gap:6px}.switch{display:flex;align-items:center;gap:12px;padding:7px 4px;cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.switch .track{position:relative;width:38px;height:22px;flex:none;border-radius:99px;background:var(--border-strong);transition:background .2s}.switch .track:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .22s cubic-bezier(.3,1.4,.5,1)}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(16px)}.sw-text{font-size:13.5px}.sw-text small{display:block;color:var(--text-3);font-size:12px}.segmented{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border)}.segmented button{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border:0;border-radius:7px;background:none;color:var(--text-2);font:500 12.5px var(--font);font-variant-numeric:tabular-nums;cursor:pointer;transition:all .18s}.segmented button.active{background:var(--surface-solid);color:var(--text);box-shadow:var(--shadow-sm)}.segmented .i{width:15px;height:15px}.controlbar{position:fixed;z-index:10;left:50%;bottom:14px;transform:translate(-50%);display:flex;align-items:center;gap:6px;padding:7px;max-width:calc(100vw - 24px);overflow-x:auto;scrollbar-width:none}.controlbar::-webkit-scrollbar{display:none}.controlbar .sep{width:1px;height:22px;flex:none;background:var(--border-strong);margin:0 3px}.views{display:flex;gap:2px}.clock{min-width:52px;padding:0 6px;color:var(--text-3);font:500 12px var(--font);font-variant-numeric:tabular-nums;text-align:right}body.paused #play{animation:beat 1.4s ease-in-out infinite}.tag{pointer-events:auto;padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:550 11.5px var(--font);box-shadow:var(--shadow-sm);backdrop-filter:blur(10px);cursor:pointer;white-space:nowrap;transition:background .2s,color .2s,transform .2s}.tag:hover{transform:translateY(-1px);border-color:var(--accent)}.tag.active{background:var(--lit);border-color:var(--lit);color:#2b1d00;box-shadow:0 0 0 4px color-mix(in srgb,var(--lit) 30%,transparent)}.person-tag{padding:1px 8px;border-radius:999px;background:var(--c, #555);color:#fff;font:600 11px var(--font);box-shadow:0 2px 6px #00000040;pointer-events:none}.info{position:fixed;z-index:11;left:12px;bottom:84px;width:min(390px,calc(100vw - 24px));padding:16px 18px;animation:rise .3s ease}.info h2{margin:0 30px 6px 0;font-size:17px;letter-spacing:-.01em}.info p{margin:0;color:var(--text-2);font-size:14px}.info-close{position:absolute;top:8px;right:8px}.toast{position:fixed;z-index:20;left:50%;bottom:80px;transform:translate(-50%,16px);max-width:min(520px,calc(100vw - 32px));padding:10px 16px;border-radius:12px;background:var(--text);color:var(--bg);font-size:13.5px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}.toast.show{opacity:1;transform:translate(-50%)}@media(max-width:1180px){.views .btn[data-view=inside],.views .btn[data-view=pit]{display:none}}@media(max-width:980px){.controlbar #slowmo span,.controlbar #autocam span,.controlbar #step-mode span{display:none}}@media(max-width:760px){.hide-sm{display:none}.show-sm{display:inline-flex}.topbar{top:8px;left:8px;right:8px;gap:6px}.brand-text small{display:none}.brand{padding:4px 10px 4px 4px}.scenario{flex:1;min-width:0}.scenario select{width:100%;min-width:0}.story{top:60px;left:8px;width:calc(100vw - 16px);max-height:38dvh;padding:12px 14px 10px}.story-head h1{font-size:17px}.phase-text{font-size:14px}.timeline,.scenario-intro,.phase-focus{display:none}.story{max-height:30dvh}body.panel-open .story{opacity:0;pointer-events:none}.panel{inset:auto 8px 70px;width:auto;height:56dvh;transform:translateY(calc(100% + 90px));transition:transform .35s cubic-bezier(.3,.9,.3,1)}body.panel-open .panel{transform:none}.controlbar{left:8px;right:8px;bottom:8px;transform:none;max-width:none}.info{left:8px;bottom:70px;width:calc(100vw - 16px)}.clock{display:none}}.tag.far{opacity:0;pointer-events:none;transform:scale(.9)}
