:root{font-family:Inter,Helvetica Neue,Arial,Hiragino Kaku Gothic ProN,Noto Sans,sans-serif;color:#f5f4df;background:#bedfe1;font-synthesis:none;font-weight:400;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}html,body,#app{width:100%;height:100%;height:100dvh;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:none}#app{position:fixed;inset:0;height:auto}button{font:inherit;color:inherit;cursor:pointer;border:0;touch-action:none}button:focus-visible{outline:3px solid #f2cb72;outline-offset:4px}svg{width:24px;height:24px;flex:none}kbd{font:10px monospace;opacity:.5;border:1px solid #ffffff30;border-radius:4px;padding:2px 4px}#viewport,canvas,#hud{position:absolute;inset:0;width:100%;height:100%}#hud{pointer-events:none}#hud button{pointer-events:auto}header{position:absolute;top:max(18px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));right:max(24px,env(safe-area-inset-right));display:flex;align-items:center;gap:12px}.brand{display:flex;gap:12px;align-items:center;background:#19363bef;box-shadow:0 8px 28px #102e3215;padding:12px 18px;border-radius:12px}.brand>svg{width:29px;height:36px;color:#a6d5bf}.brand strong{display:block;font-size:19px;letter-spacing:2px}.brand small{font-size:12px;padding:3px 6px;border:1px solid #819d8e;border-radius:4px;margin-left:6px}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:600;color:#a9beb5}.brand .eyebrow{font-size:8px;letter-spacing:1.7px}.route-summary{display:flex;gap:10px;align-items:center;margin-left:auto;border-radius:24px;background:#19363bdc;padding:10px 15px;font-size:11px;font-variant-numeric:tabular-nums}.live-dot,.door-status i{width:6px;height:6px;background:#f0c97e;border-radius:50%;display:inline-block}.live-dot{background:#8acdb2}.divider{height:13px;width:1px;background:#ffffff30}.icon-button,.camera-button{display:flex;gap:9px;align-items:center;justify-content:center;height:43px;background:#19363bef;border:1px solid #ffffff18;border-radius:8px;font-size:11px;padding:0 13px}.icon-button{font-weight:700;font-size:19px}.speed-limit{position:absolute;right:max(26px,env(safe-area-inset-right));top:107px;display:grid;justify-items:center;gap:6px;color:#253b3b;font-size:10px;font-weight:600}.speed-limit strong{display:grid;place-items:center;background:#fff8e7;border:5px solid #c76550;border-radius:50%;width:56px;height:56px;font-size:25px}.mirror{position:absolute;top:43%;width:145px;height:87px;border:5px solid #243b42;border-bottom-width:17px;border-radius:13px;background:transparent;box-shadow:0 7px #1c3136,0 12px 20px #152d3430;overflow:visible}.mirror-left{left:max(22px,env(safe-area-inset-left))}.mirror-right{right:max(22px,env(safe-area-inset-right))}.mirror-view{position:absolute;inset:0}.mirror>span{position:absolute;bottom:-14px;left:0;width:100%;text-align:center;color:#becbc2;font-size:8px;letter-spacing:2px}.pillar{position:absolute;top:0;bottom:115px;width:14px;background:#263d40;opacity:.95}.pillar-left{left:-8px;transform:rotate(-9deg);transform-origin:bottom}.pillar-right{right:-8px;transform:rotate(9deg);transform-origin:bottom}.dash-top{position:absolute;bottom:0;left:-3%;width:106%;height:160px;background:#425652;border-top:7px solid #728278;border-radius:50% 50% 0 0/30% 30% 0 0;box-shadow:0 -5px 20px #1e343329}.dashboard{position:absolute;bottom:0;width:100%;height:135px;background:linear-gradient(#273d3d,#1d3032);border-radius:40% 40% 0 0/20% 20% 0 0;display:flex;align-items:center;justify-content:center;gap:23px;padding-bottom:max(34px,var(--safe-bottom))}.instrument{width:120px}.instrument .eyebrow{font-size:7px}.instrument>div{display:flex;align-items:baseline;gap:7px}.instrument strong{font-size:50px;line-height:1;letter-spacing:-2px;font-weight:400;font-variant-numeric:tabular-nums}.instrument>div>span{font-size:10px;color:#94aaa0}.speed-bar{height:3px;background:#4d6257;margin-top:8px}.speed-bar i{height:3px;background:#a9d7b6}.trip{display:flex;gap:17px;align-items:center}.trip>span{border:1px solid #7e9b84;border-radius:5px;color:#b1d1ae;font-size:18px;padding:4px 9px}.trip small{display:block;color:#8caaa0;font-size:8px}.trip strong{font-size:12px;font-weight:400;display:block;margin-top:6px}.vent{width:55px;height:27px;border-radius:5px;background:repeating-linear-gradient(0deg,#142b2e 0px 3px,#41564f 4px 5px);border:4px solid #172f31;margin:0 20px}.pedals{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:max(26px,env(safe-area-inset-left));right:max(26px,env(safe-area-inset-right));display:flex;justify-content:space-between;align-items:flex-end}.pedal{display:flex;align-items:center;justify-content:center;flex-direction:column;width:145px;height:105px;gap:8px;border-radius:15px;border:1px solid #ffffff25;box-shadow:0 5px #0b252ac0;font-size:14px}.pedal svg{width:27px;height:27px}.pedal kbd{font-size:8px}.brake{background:#4b5d5f}.throttle{background:#a6c9a1;color:#203f39;box-shadow:0 5px #527461}.pressed{transform:translateY(3px);filter:brightness(1.25);box-shadow:none}.door-button{display:flex;align-items:center;gap:10px;padding:9px 17px;border-radius:7px;background:#425b53;border:1px solid #ffffff1a;font-size:11px;min-height:38px}.door-button svg{width:19px;height:19px}.door-status{position:absolute;bottom:154px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:9px;font-size:10px;background:#243c3de8;padding:8px 14px;border-radius:20px;white-space:nowrap}.door-status #boarding{color:#c6d0ba;border-left:1px solid #ffffff25;padding-left:9px}.door-status .closed{background:#a4d2b0}.over-limit{color:#f3b271}.hidden{display:none!important}.screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#112b32d9;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);z-index:20}.screen h1{font-size:clamp(26px,5vw,46px);letter-spacing:5px;margin:16px 0}.screen p{font-size:12px;letter-spacing:3px;color:#baccc0;margin:0 0 30px}.title-mark{width:68px;height:68px;border:1px solid #a8c6ad80;border-radius:18px;display:grid;place-items:center;margin-bottom:24px;color:#b8d7ad}.title-mark svg{width:36px;height:40px}.primary{background:#c8dfae;color:#243e37;border-radius:8px;min-width:230px;padding:17px 23px;font-size:14px;font-weight:600;display:flex;gap:35px;align-items:center;justify-content:space-between;box-shadow:0 6px 25px #0b252529}.screen dl{width:330px;max-width:85vw;margin:14px 0 26px}.screen dl>div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #ffffff17;font-size:12px}.screen dt{color:#adc1b5}.screen dd{margin:0}#portrait{display:none;position:absolute;inset:0;background:#1c363a;z-index:100;align-items:center;justify-content:center;flex-direction:column;gap:20px;font-size:15px}#portrait>div{font-size:60px;color:#c5dba8}.third-person .mirror,.third-person .pillar,.third-person .dash-top,.third-person .vent{display:none}.third-person .dashboard{background:#1d363be8;left:50%;width:310px;transform:translate(-50%);height:135px;border-radius:15px 15px 0 0}.third-person .door-status{bottom:145px}@media(orientation:portrait){#portrait{display:flex}}@media(max-height:500px){header{top:max(10px,env(safe-area-inset-top));left:max(15px,env(safe-area-inset-left));right:max(15px,env(safe-area-inset-right))}.brand{padding:8px 12px;gap:9px}.brand strong{font-size:15px}.brand>svg{height:27px;width:23px}.brand .eyebrow{font-size:6px}.route-summary{padding:8px 12px}.camera-button,.icon-button{height:36px}.speed-limit{top:78px}.speed-limit strong{width:45px;height:45px;font-size:22px;border-width:4px}.mirror{top:46%;width:112px;height:69px}.mirror-left{left:max(15px,env(safe-area-inset-left))}.mirror-right{right:max(15px,env(safe-area-inset-right))}.dash-top{height:121px}.dashboard{height:105px;padding-bottom:27px;gap:14px}.instrument strong{font-size:38px}.instrument{width:94px}.pedals{bottom:max(11px,env(safe-area-inset-bottom));left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right))}.pedal{width:126px;height:84px;gap:5px;font-size:12px}.pedal svg{height:22px}.door-button{padding:6px 13px;min-height:32px}.door-status{bottom:118px;font-size:9px;padding:6px 12px}.vent{width:37px;margin:0 8px}.third-person .dashboard{height:105px}.third-person .door-status{bottom:112px}.screen h1{font-size:29px;margin:10px 0}.title-mark{width:52px;height:52px;margin-bottom:15px}.screen dl{margin:4px 0 15px}.screen dl>div{padding:7px 0}.primary{padding:13px 20px}.screen p{margin-bottom:23px}}@media(pointer:coarse){kbd{display:none}}header{top:max(8px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));height:auto;align-items:flex-start;gap:8px}.brand{padding:6px 10px 5px;gap:7px;border-radius:8px;align-items:center}.brand>div{display:flex;flex-direction:column;gap:1px}.brand .eyebrow,.brand small{display:none}.brand strong{font-size:13px;letter-spacing:.5px}.brand>svg{width:20px;height:25px}.route-summary{margin:0;padding:0;gap:5px;background:none;border-radius:0;font-size:10px;line-height:12px;color:#c9dacc}.route-summary #time{color:#f5f4df}.camera-button,.icon-button{height:40px}.speed-limit{top:59px;right:max(16px,env(safe-area-inset-right));gap:3px;font-size:9px}.speed-limit strong{width:42px;height:42px;font-size:21px;border-width:4px}.mirror{top:112px;width:120px;height:154px;border:4px solid #243b42;border-radius:10px;box-shadow:0 4px #1c3136}.mirror-left{left:max(12px,env(safe-area-inset-left))}.mirror-right{right:max(12px,env(safe-area-inset-right))}.dash-top{height:106px}.dashboard,.third-person .dashboard{left:0;width:100%;transform:none;height:96px;padding:0 0 max(8px,var(--safe-bottom));background:#1d3032ed;border-radius:0;gap:16px}.vent{display:none}.instrument{width:84px}.instrument strong{font-size:35px}.trip{gap:9px}.trip>span{font-size:16px}.trip strong{font-size:11px}.pedals{bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));display:grid;grid-template-columns:140px 1fr 94px 94px;gap:10px;align-items:end}.door-button{grid-column:1;grid-row:1;min-height:62px;justify-content:center;padding:10px 8px;gap:6px;font-size:12px}.brake{grid-column:3;grid-row:1}.throttle{grid-column:4;grid-row:1}.pedal{width:94px;height:78px;border-radius:12px;font-size:12px;gap:5px}.pedal svg{width:22px;height:22px}.pedals kbd{display:none}.door-status,.third-person .door-status{bottom:110px;left:50%;max-width:calc(100% - 210px);padding:6px 10px;font-size:10px;white-space:normal}.door-status #boarding{display:none}.secondary{margin-top:12px;padding:13px 20px;min-height:44px;border:1px solid #a1b9ad;border-radius:8px;background:#2d4949;font-size:14px}@media(max-height:360px){.mirror{top:98px;height:126px;width:100px}.speed-limit{top:53px}.dash-top{height:91px}.dashboard,.third-person .dashboard{height:calc(73px + max(8px,var(--safe-bottom)))}.pedal{height:65px}.door-button{min-height:55px}.door-status,.third-person .door-status{bottom:94px}}@media(min-height:501px){.mirror{width:144px;height:210px;top:155px}.pedals{grid-template-columns:160px 1fr 116px 116px}.pedal{width:116px;height:90px}.dashboard,.third-person .dashboard{height:calc(102px + max(8px,var(--safe-bottom)))}.dash-top{height:120px}.door-status,.third-person .door-status{bottom:125px}}@media(max-width:720px){.brand strong{font-size:11px}.route-summary{display:none}.pedals{grid-template-columns:132px 1fr 80px 80px;gap:8px}.pedal{width:80px}.dashboard,.third-person .dashboard{justify-content:flex-start;padding-left:max(145px,calc(env(safe-area-inset-left) + 133px));gap:10px}.trip>span{display:none}.trip{max-width:65px}}.speed-limit{top:auto;bottom:max(22px,calc(env(safe-area-inset-bottom) + 10px));right:auto;left:calc(50% + 108px)}.speed-limit>span{display:none}.speed-limit strong{width:38px;height:38px;font-size:19px;border-width:3px}.door-button{display:grid;grid-template-columns:19px 1fr;column-gap:6px;row-gap:3px;align-content:center}.door-button>svg{grid-column:1;grid-row:1}.door-button>span{grid-column:2;grid-row:1}.door-button>small{grid-column:1/-1;grid-row:2;font-size:10px;color:#c1d9c8}@media(max-width:720px){.speed-limit{left:calc(50% + 12px)}}.speed-limit{z-index:2}.pedal{position:relative;overflow:hidden;--pedal-amount:0%}.pedal:before{content:"";position:absolute;inset:auto 0 0;height:var(--pedal-amount);background:#ffffff32;pointer-events:none}.pedal>*{position:relative}.pedal-readout{font-size:8px;font-weight:400;white-space:nowrap}.pedal.pressed{transform:none;box-shadow:inset 0 0 0 2px #fff8;filter:none}.pedals{column-gap:48px}.pedal:before{content:"";display:block;position:absolute;inset:-2px auto auto -13px;height:0;width:0;border-left:5.5px solid transparent;border-right:5.5px solid transparent;border-bottom:7px solid #56706c;background:none;pointer-events:none}.pedal:after{content:"";position:absolute;left:-11px;top:6px;bottom:5px;width:7px;border-radius:0 0 4px 4px;background:linear-gradient(to top,#cde7b4 var(--pedal-amount),#56706c var(--pedal-amount));pointer-events:none}.pedal>.pedal-readout{position:absolute;left:-46px;top:50%;transform:translateY(-50%);width:30px;text-align:right;font-size:11px;font-weight:600;color:#f5f4df;pointer-events:none}.dashboard,.third-person .dashboard{padding-right:110px}.speed-limit{left:calc(50% + 40px)}@media(max-width:720px){.dashboard,.third-person .dashboard{padding-right:0}.speed-limit{left:calc(50% + 12px)}}.elevation-credit{font-size:10px;color:inherit;opacity:.65;margin-top:12px}.boot{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#0f2029;color:#eef3ea;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.boot-inner{width:min(420px,90vw);text-align:center;display:flex;flex-direction:column;align-items:center}.boot h1{font-size:clamp(18px,4vw,26px);letter-spacing:3px;margin:14px 0 18px;font-weight:400}.boot p{margin:0;font-size:12px;letter-spacing:2px;color:#b9ccc3;font-variant-numeric:tabular-nums}.boot-bar{width:100%;height:3px;margin-top:14px;background:#26424a;overflow:hidden}.boot-bar i{display:block;height:100%;width:0;background:#c8dfae;transition:width .25s ease}.boot-error{margin-top:16px!important;color:#ffcf9d;line-height:1.9;letter-spacing:1px}.boot .primary{margin-top:20px;min-width:180px;justify-content:center}.boot-note{margin-top:22px!important;font-size:10px;color:#7f978f}.boot-credit{margin-top:10px;font-size:10px;color:#7f978f;opacity:.8}.update-banner{position:absolute;left:50%;transform:translate(-50%);top:max(8px,env(safe-area-inset-top));z-index:30;display:flex;align-items:center;gap:14px;background:#1d3a3fef;border:1px solid #ffffff22;border-radius:9px;padding:10px 12px 10px 18px;font-size:12px;white-space:nowrap}.update-banner .secondary{margin-top:0;padding:9px 16px;min-height:44px}.start-dialog .start-update{position:static;min-height:44px;padding:0 16px;margin:20px 0 12px;border:1px solid #b8c9ca66;border-radius:8px;background:#174551cc;color:var(--text-primary);font-size:14px}.start-update:disabled{opacity:.7}#fatal{z-index:150;background:#0f2029}#fatal p{max-width:min(420px,86vw);text-align:center;line-height:1.9;letter-spacing:1px}.icon-button,.camera-button{min-height:44px;min-width:44px}@media(max-height:500px){.icon-button,.camera-button{height:44px}}.service-status{position:absolute;left:50%;bottom:110px;transform:translate(-50%);padding:7px 14px;background:#17353def;color:#f5edcd;border-radius:8px;font-size:12px;pointer-events:none}#mute{font-size:11px;padding:0 9px;white-space:nowrap;margin-left:auto}@media(max-width:760px){.route-summary{display:none}}@media(max-width:760px){#mute{margin-left:auto}}.signal-loupe{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .18s ease}.signal-loupe.visible{opacity:1}.signal-loupe>svg{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.signal-loupe line{stroke:#f1efcc;stroke-width:1.5;stroke-dasharray:3 3}.signal-loupe-panel{position:absolute;width:96px;padding:5px 7px;background:#142c32f5;border:1px solid #c9dacc;border-radius:9px;box-shadow:0 2px 7px #10242b55}.loupe-lamps{display:flex;justify-content:space-between;gap:6px}.loupe-lamps i{display:block;width:20px;height:20px;border-radius:50%;background:#263b3e;border:1px solid #52615e}.loupe-lamps [data-light=green].lit{background:#39ffa3;box-shadow:0 0 5px #39ffa370}.loupe-lamps [data-light=yellow].lit{background:#ffd44e;box-shadow:0 0 5px #ffd44e70}.loupe-lamps [data-light=red].lit{background:#ff4c40;box-shadow:0 0 5px #ff4c4070}.loupe-arrows{display:flex;justify-content:space-between;margin-top:2px;font-size:18px;line-height:16px;color:#415250}.loupe-arrows .lit{color:#39ffa3}@media(prefers-reduced-motion:reduce){.signal-loupe{transition:none}}.run-stats-strip{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;margin-top:14px;padding-top:9px;border-top:1px solid #ffffff22;font-size:11px;color:#adc1b5}.run-stats-strip b{margin-right:3px;font:600 14px ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums;color:#f5f4df}.run-stats-strip .live{color:#8acdb2}.screen dl>div.hi dd{color:#f3b271;font-weight:600}.result-rank{display:flex;align-items:baseline;gap:10px;margin:-12px 0 16px;font-size:11px;color:#adc1b5}.result-rank b{font:600 24px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:#c8dfae}@media(max-height:400px){.screen h1{margin:4px 0}.screen dl>div{padding:3px 0}.run-stats-strip{margin-top:8px;padding-top:6px}.result-rank{margin:-10px 0 8px}.result-rank b{font-size:18px}}.stop-loupe{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .18s ease}.stop-loupe.visible{opacity:1}.stop-loupe>svg{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.stop-loupe line{stroke:#f1efcc;stroke-width:1.5;stroke-dasharray:3 3}.stop-loupe-panel{position:absolute;min-width:96px;padding:5px 9px;background:#142c32;border:1px solid #c9dacc;border-radius:9px;box-shadow:0 2px 7px #10242b55;color:#f5f4df;display:flex;flex-direction:column;gap:2px;white-space:nowrap}.stop-loupe-panel span{font-size:9px;letter-spacing:.15em;color:#a9beb5}.stop-loupe-panel strong{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}.stop-loupe[data-tone=near] .stop-loupe-panel strong{color:#f3b271}.stop-loupe[data-tone=inside] .stop-loupe-panel strong{color:#8fe39a}.stop-loupe[data-tone=overrun] .stop-loupe-panel strong{color:#ff7a70}@media(prefers-reduced-motion:reduce){.stop-loupe{transition:none}}.pedestrian-loupe .signal-loupe-panel{width:72px}.pedestrian-symbols{display:flex;flex-direction:column;align-items:center;gap:3px}.pedestrian-symbols svg{width:24px;height:24px;color:#40534f;background:#102329;border-radius:3px}.pedestrian-symbols path{fill:none;stroke:currentColor;stroke-width:12;stroke-linecap:round;stroke-linejoin:round}.pedestrian-symbols circle{fill:currentColor}.pedestrian-symbols [data-person=red].lit{color:#ff5548}.pedestrian-symbols [data-person=green].lit{color:#42ffae}.door-switch{grid-column:1;grid-row:1;position:relative;width:132px;height:64px;border:1px solid #3c5a5c;border-radius:10px;background:#152a2d;color:#f5f4df;--door-progress:0}.door-lever{position:absolute;inset:-1px;padding:0;background:transparent;color:inherit;border-radius:inherit}.door-lever>*{pointer-events:none}.door-title{position:absolute;left:8px;top:4px;font-size:9px;letter-spacing:.2em;color:#c9dacc}.door-pos{position:absolute;right:8px;top:3px;font-size:13px;font-weight:700;color:#8fa39c;transition:color .15s}.door-switch[data-state=closed] .door-pos,.door-switch[data-state=open] .door-pos{color:#39ffa3}.door-switch[data-state=opening] .door-pos,.door-switch[data-state=closing] .door-pos{color:#ffd44e}.door-frame{position:absolute;left:50%;top:19px;width:64px;height:32px;transform:translate(-50%);border-radius:3px 3px 0 0;background:#ffe9a8;overflow:hidden;box-shadow:inset 0 0 0 1px #0004;display:block}.door-frame:before{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background:#5a6d64}.door-leaf{position:absolute;top:0;bottom:0;width:50%;background:#b7c7ba;display:block;will-change:transform}.door-leaf:before{content:"";position:absolute;left:5px;right:5px;top:4px;height:14px;background:#7fb4c2;border-radius:1px}.door-leaf-l{left:0;transform:translate(calc(var(--door-progress)*-100%))}.door-leaf-r{right:0;transform:translate(calc(var(--door-progress)*100%))}.door-switch[aria-busy=true] .door-frame{filter:brightness(.85)}.door-switch button:disabled{opacity:1;cursor:wait}.door-switch button:focus-visible{outline:2px solid #a6d5b6;outline-offset:-3px}.door-switch button:active:not(:disabled){box-shadow:inset 0 0 0 2px #39ffa380}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(min-height:361px)and (max-height:383px){.door-switch{height:56px}.door-pos{top:13px}.door-frame{top:17px}}@media(prefers-reduced-motion:reduce){.door-pos{transition:none}}:root{--color-cockpit-800:#19363b;--color-cockpit-600:#425652;--color-text-primary:#f5f4df;--color-text-muted:#a9beb5;--color-action:#c8dfae;--color-action-strong:#378e79;--color-warning:#f3b271}.next-stop{position:absolute;top:max(8px,env(safe-area-inset-top));left:max(204px,calc(env(safe-area-inset-left) + 192px));width:270px;height:64px;padding:5px 10px 0;background:#19363bef;border:1px solid #ffffff1a;border-radius:8px;box-shadow:0 2px 6px #10242b40;color:var(--color-text-primary);display:grid;grid-template-rows:24px 1fr;overflow:hidden}.stop-line{display:flex;align-items:baseline;gap:8px;min-width:0}.stop-context{font-size:10px;color:var(--color-text-muted);flex:none}.next-stop strong{font-size:17px;font-weight:700;white-space:nowrap;flex:none}#next-romaji{font-style:normal;font-size:10px;color:var(--color-text-muted);white-space:nowrap}#remaining{margin-left:auto;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}#remaining.near{color:var(--color-warning)}#remaining.ready{color:var(--color-action)}#stop-count{flex:none;margin-left:auto;font-size:10px;color:var(--color-text-muted);font-variant-numeric:tabular-nums;border-left:1px solid #ffffff1a;padding-left:8px;white-space:nowrap}#stop-count b{color:var(--color-text-primary);font-size:12px}.next-stop.guiding #next-romaji,.next-stop.compact #next-romaji{display:none}.route-window{position:relative;height:30px;overflow:hidden}.route-rail{position:absolute;left:0;right:0;top:6px;height:3px;background:var(--color-cockpit-600)}.route-fill{position:absolute;left:0;top:6px;height:3px;background:var(--color-action-strong)}#route-items{position:absolute;left:0;right:0;top:0;height:100%;display:flex;transition:transform .2s ease}#route-items span{width:33.333%;flex:none;text-align:center;font-size:10px;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#route-items span:before{content:"";display:block;width:8px;height:8px;margin:0 auto 3px;border-radius:50%;background:var(--color-cockpit-800);border:2px solid var(--color-text-muted);position:relative;z-index:1}#route-items span.done:before{background:var(--color-action-strong);border-color:var(--color-action-strong)}#route-items span.next{color:var(--color-text-primary);font-weight:700}#route-items span.next:before{background:var(--color-action);border-color:var(--color-action)}.route-more{position:absolute;right:0;top:0;bottom:0;width:26px;background:linear-gradient(90deg,#19363b00,#19363b 70%)}.route-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--color-cockpit-600)}.route-progress i{display:block;height:100%;background:var(--color-action-strong)}.icon-button svg{width:22px;height:22px}#mute .sound-off{display:none}#mute.muted .sound-off{display:block}#mute.muted .sound-wave{display:none}@media(max-width:720px){.next-stop{left:max(192px,calc(env(safe-area-inset-left) + 180px));width:240px}.next-stop.guiding #stop-count{display:none}}@media(max-height:360px){.next-stop{height:40px;grid-template-rows:24px 0}.route-window{display:none}}@media(prefers-reduced-motion:reduce){#route-items{transition:none}}:root{--safe-bottom:env(safe-area-inset-bottom);--status-gap: calc(env(safe-area-inset-top)*.75) ;--status-top:calc(env(safe-area-inset-top) + var(--status-gap))}.pedals{bottom:max(12px,var(--safe-bottom));grid-template-columns:152px 1fr 100px 72px;column-gap:48px}.stop-service-panel{grid-column:1;grid-row:1;align-self:end;width:152px;height:96px;padding:3px;display:grid;grid-template-rows:32px 56px;background:#19363bf5;border:1px solid #ffffff24;border-radius:10px;box-shadow:0 4px #10292d;color:var(--color-text-primary)}.stop-service-info{min-width:0;padding:1px 7px 2px;display:flex;flex-direction:column;justify-content:center;border-bottom:1px solid #ffffff1d}.stop-service-info span{font-size:8px;line-height:10px;color:var(--color-text-muted)}.stop-service-info strong{margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:13px;font-weight:700;font-variant-numeric:tabular-nums}.stop-service-panel[data-state=approach] .stop-service-info strong,.stop-service-panel[data-state=inside] .stop-service-info strong,.stop-service-panel[data-state=opening] .stop-service-info strong,.stop-service-panel[data-state=closing] .stop-service-info strong,.stop-service-panel[data-state=overrun] .stop-service-info strong{color:var(--color-warning)}.stop-service-panel[data-state=ready] .stop-service-info strong,.stop-service-panel[data-state=complete] .stop-service-info strong,.stop-service-panel[data-state=depart] .stop-service-info strong{color:var(--color-action)}.door-switch{grid-column:1;grid-row:2;width:144px;height:56px;border:0;border-radius:7px;background:#152a2d}.door-switch .door-lever{inset:0}.door-title{top:3px}.door-pos{top:11px}.door-frame{top:17px}.brake{grid-column:3;grid-row:1;width:100px;height:68px}.throttle{grid-column:4;grid-row:1;width:72px;height:68px}.pedal{overflow:visible}.pedal:before,.pedal:after{content:none}.pedal-meter{position:absolute!important;left:-40px;top:0;width:32px;height:100%;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end}.pedal-bar{display:block;height:3px;flex:none;border-radius:4px;background:#607575;opacity:.28}.pedal-bar.lit{background:var(--pedal-color);opacity:1}.pedal>.pedal-readout{left:-43px;top:auto;bottom:3px;transform:none;width:24px;text-align:left;font:600 10px/1 Arial,sans-serif;letter-spacing:-.5px;color:#f5f4df}.pedestrian-loupe .signal-loupe-panel{width:40px}@media(max-width:720px){.dashboard,.third-person .dashboard{padding-left:max(176px,calc(env(safe-area-inset-left) + 164px));padding-right:0}}@media(max-height:500px){.mirror{height:min(154px,calc(100dvh - max(12px,var(--safe-bottom)) - 224px))}}@media(max-height:360px){.mirror{top:98px;height:min(126px,calc(100dvh - max(12px,var(--safe-bottom)) - 210px))}}#hud{--mirror-right-edge:max(12px,env(safe-area-inset-right))}.mirror{z-index:1}.mirror-right,.miss-log{right:var(--mirror-right-edge)}.miss-log{position:absolute;top:calc(83px + calc(max(7px,env(safe-area-inset-top)) + var(--status-gap)));display:flex;flex-direction:column;align-items:flex-end;gap:4px;z-index:6;max-width:min(310px,calc(100% - 24px));font-size:12px;line-height:1.25;text-align:right}.miss-item{display:flex;align-items:center;justify-content:flex-end;gap:5px;max-width:100%;min-height:25px;padding:5px 7px 5px 8px;border-right:3px solid var(--amber);background:#071f2be8;color:var(--text-primary);white-space:nowrap;overflow:hidden;animation:miss-in .18s ease-out both}.miss-item[data-tone=red]{border-right-color:var(--danger)}.miss-icon{min-width:1em;text-align:center;color:var(--amber)}.miss-item[data-tone=red] .miss-icon{color:var(--danger)}.miss-count{font-variant-numeric:tabular-nums;font-weight:700}.miss-text{max-width:260px;overflow:hidden;opacity:1;transition:max-width .16s ease,opacity .12s ease}.miss-item.collapsed .miss-text{max-width:0;opacity:0}@keyframes miss-in{0%{opacity:0;clip-path:inset(0 0 0 12px)}to{opacity:1;clip-path:inset(0)}}.judge-flash{position:absolute;inset:0;pointer-events:none;opacity:0;box-shadow:inset 0 0 90px 30px #d63a2e;z-index:3}.judge-flash.play{animation:judge-flash 1.2s ease-out both}@keyframes judge-flash{0%{opacity:0}12%{opacity:.9}to{opacity:0}}#hud.shake{animation:judge-shake .5s cubic-bezier(.36,.07,.19,.97)}@keyframes judge-shake{10%,90%{transform:translate(-2px,1px)}20%,80%{transform:translate(4px,-2px)}30%,50%,70%{transform:translate(-6px,3px)}40%,60%{transform:translate(6px,-3px)}}.junction-ring{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);width:88px;height:88px;border-radius:50%;background:conic-gradient(#f3b271 var(--ring,100%),#1d3032 0);display:grid;place-items:center;font-size:12px;line-height:1.2;text-align:center;color:#f5f4df;z-index:4}.junction-ring:before{content:"";position:absolute;inset:7px;border-radius:50%;background:#19363bf0}.junction-ring span{position:relative}.junction-ring.fired{background:#e35d52;box-shadow:0 0 22px #e35d52}.instrument{position:relative}.platform-limit{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translate(-50%);display:grid;justify-items:center;gap:1px;padding:2px 4px 3px;border-radius:3px;border:1px solid #f3b271;background:#1d363be8;color:#f3b271;font-size:8px;line-height:1;font-weight:600;white-space:nowrap;pointer-events:none}.platform-limit small{font-size:8px}.platform-limit b{display:flex;align-items:center;gap:2px;font-size:11px;letter-spacing:.08em}.platform-limit svg{width:9px;height:8px}.platform-limit[data-state=confirmed]{background:#e35d52;border-color:#e35d52;color:#fff}.platform-limit[data-state=confirmed] b{font-size:10px;letter-spacing:.02em}#speed[data-platform=confirmed]{color:#e35d52}@media(prefers-reduced-motion:reduce){#hud.shake,.judge-flash.play,.miss-item{animation:none}.miss-text{transition:none}}#result-screen{inset:4px;border-radius:34px;justify-content:center;justify-content:safe center;padding:max(16px,env(safe-area-inset-top)) max(36px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(36px,env(safe-area-inset-left));background:#10282dd9;overflow:hidden}#result-screen h1,#result-screen .result-route,#result-screen .result-message,#result-screen .result-summary,#result-screen .result-rank,#result-screen .primary{flex:none}#result-screen h1{margin:0;font-size:clamp(25px,4vw,39px);line-height:1.1;letter-spacing:.17em}#result-screen .result-route{margin:5px 0 0;font-size:clamp(12px,1.8vw,17px);font-weight:700;letter-spacing:.08em;color:#f3f3e8}#result-screen .result-message{margin:7px 0 10px;font-size:11px;letter-spacing:.08em;color:#a9beb5}.result-summary{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));width:min(620px,100%)!important;max-width:none!important;margin:0 0 10px!important;padding:10px 0;border-top:1px solid #ffffff22;border-bottom:1px solid #ffffff22}.result-summary>div{display:flex!important;flex-direction:column;align-items:center;gap:3px!important;padding:0!important;border:0!important}.result-summary>div+div{border-left:1px solid #ffffff35!important}.result-summary dt{font-size:11px;color:#baccc0}.result-summary dd{font:700 clamp(24px,4vw,32px)/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:#f5f4df;font-variant-numeric:tabular-nums}.result-summary dd:first-letter{letter-spacing:0}.result-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:34px;align-content:start;width:min(620px,100%)!important;max-width:none!important;flex:1 1 auto;min-height:0;margin:0 0 8px!important;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none}.result-details::-webkit-scrollbar{display:none}.result-details>div{gap:12px;min-width:0}.result-details>div.wide{grid-column:1/-1;justify-content:flex-start;gap:0}.result-details>div.wide dt{flex:none;width:8.5em}.result-details>div.wide dd{text-align:left}#result-screen dt{white-space:nowrap}#result-screen dd{text-align:right}.result-details.overflowing{padding-bottom:22px;-webkit-mask-image:linear-gradient(#000 calc(100% - 26px),transparent);mask-image:linear-gradient(#000 calc(100% - 26px),transparent)}#result-screen .result-rank{margin:0 0 8px}.result-actions{margin-top:0}.result-actions .primary{min-width:170px;padding:11px 18px}.result-actions .secondary{min-height:42px;padding-inline:16px}@media(max-height:400px){#result-screen{inset:4px;border-radius:30px;padding-block:12px}#result-screen .result-route{margin-top:3px}#result-screen .result-message{margin:4px 0 7px}.result-summary{padding:7px 0;margin-bottom:6px!important}.result-summary dd{font-size:25px}.result-details{margin-bottom:5px!important}.result-details>div{padding:0!important;font-size:10px;line-height:13px}.result-actions .primary{padding:9px 15px}}.origin-guidance{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);padding:7px 18px;border:2px solid #f0c97e;border-radius:10px;background:#f5f4dff5;color:#19363b;font-size:18px;font-weight:700;line-height:1.3;letter-spacing:.05em;white-space:nowrap;box-shadow:0 4px #10292d99;z-index:3;pointer-events:none;animation:origin-guidance 1.4s ease-in-out infinite alternate}@keyframes origin-guidance{0%{border-color:#f0c97e}to{border-color:#c47f24}}@media(max-height:360px){.origin-guidance{padding:7px 16px;font-size:17px}}@media(prefers-reduced-motion:reduce){.origin-guidance{animation:none}}.start-dialog .start-version{display:block;font-size:12px;line-height:1.6;color:var(--text-secondary);font-variant-numeric:tabular-nums}.result-actions{display:flex;flex:none;align-items:center;justify-content:center;gap:12px}.result-actions .secondary{margin-top:0;padding-block:0;align-self:stretch}.brand strong{font-size:12px}.next-stop{left:50%;transform:translate(-50%)}#camera{position:absolute;right:calc(max(12px,env(safe-area-inset-right)) + 128px);bottom:calc(110px + max(8px,var(--safe-bottom)));width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border-radius:50%}@media(min-height:501px){#camera{right:calc(max(12px,env(safe-area-inset-right)) + 152px)}}@media(max-width:720px){.brand strong{font-size:10px}}:root{--cockpit-950:#071f2b;--cockpit-900:#0b2b38;--cockpit-800:#103744;--cockpit-700:#174551;--cockpit-500:#314a54;--text-primary:#f3f6ef;--text-secondary:#b8c9ca;--text-muted:#80969a;--mint:#6be0bb;--control-primary:#a8efbd;--amber:#ffc75a;--danger:#ff5a4f;--panel-line:#7f9ca51f;color:var(--text-primary);background:#8fcff0}button:focus-visible{outline-color:var(--amber)}header{background:var(--cockpit-950)}.dashboard,.third-person .dashboard{background:transparent}.dashboard,.third-person .dashboard{left:50%;width:min(1600px,100%);transform:translate(-50%)}.dashboard-controls{left:50%;right:auto;width:min(1600px,calc(100% - 24px));transform:translate(-50%)}.screen{background:#0b2b38eb;color:var(--text-primary)}.primary{background:var(--control-primary);color:var(--cockpit-950)}.secondary{background:var(--cockpit-700);border-color:var(--text-muted);color:var(--text-primary)}.update-banner{background:#103744ef;border-color:var(--panel-line)}.boot,#fatal{background:var(--cockpit-950);color:var(--text-primary)}.route-header{--route-shoulder:min(5vw,80px);position:absolute;inset:0 0 auto;width:100%;height:calc(67px + calc(max(7px,env(safe-area-inset-top)) + var(--status-gap)) + 8px);padding:calc(max(7px,env(safe-area-inset-top)) + var(--status-gap)) max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));border-bottom-left-radius:var(--route-shoulder) 12px;border-bottom-right-radius:var(--route-shoulder) 12px;background-color:var(--cockpit-950);background-image:linear-gradient(180deg,var(--cockpit-950) var(--status-top),var(--cockpit-800) var(--status-top),var(--cockpit-950));overflow:hidden}.route-header-inner{width:min(1600px,calc(100% - 2 * var(--route-shoulder)));height:100%;margin:auto;display:grid;grid-template-columns:minmax(210px,1fr) minmax(240px,420px) auto;align-items:center;gap:clamp(8px,2vw,28px)}.route-identity{min-width:0;padding:0;background:none;box-shadow:none}.route-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route-identity .route-summary{display:flex;margin-top:5px}.route-navigation{position:relative;inset:auto;width:auto;height:64px;transform:none;padding-inline:12px;background:#071f2bcc;border-color:var(--panel-line);box-shadow:none}.route-actions{display:flex;gap:8px}.route-actions .icon-button{width:48px;height:48px;padding:0;background:var(--cockpit-800);border-color:#b8c9ca55}.route-actions #mute{margin:0}.route-header+#camera{z-index:2}@media(max-height:360px){.route-header .route-window{display:block}.route-header .route-navigation{height:64px;grid-template-rows:24px 1fr}}@media(max-width:760px){.route-header-inner{width:100%;grid-template-columns:minmax(150px,1fr) minmax(226px,270px) auto;gap:8px}.route-identity .route-summary{display:flex}.route-identity #time,#next-romaji{display:none}.route-actions .icon-button{width:44px;height:44px}.route-navigation{height:64px;padding-inline:8px}}@media(min-width:1200px){.route-header{height:calc(77px + calc(max(7px,env(safe-area-inset-top)) + var(--status-gap)) + 8px)}.route-header-inner{grid-template-columns:minmax(260px,1fr) minmax(360px,520px) minmax(120px,1fr)}.route-actions{justify-self:end}.route-navigation{height:70px}.route-identity strong{font-size:16px}}@media(min-width:1200px)and (min-height:501px){.miss-log{top:calc(93px + calc(max(7px,env(safe-area-inset-top)) + var(--status-gap)))}}#cockpit{--dashboard-shoulder:min(5vw,80px)}#cockpit:before{content:"";position:absolute;left:0;right:0;bottom:0;height:calc(96px + max(12px,var(--safe-bottom)));border-top-left-radius:var(--dashboard-shoulder) 12px;border-top-right-radius:var(--dashboard-shoulder) 12px;background:linear-gradient(180deg,var(--cockpit-800),var(--cockpit-950));border-top:1px solid var(--panel-line);pointer-events:none}.dash-top{display:none}.dashboard,.third-person .dashboard{background:transparent;border-radius:0;z-index:1}.dashboard-controls{z-index:2}.dashboard-service{background:#0b2b38e8;border-color:var(--panel-line);box-shadow:0 4px #051820}.dashboard-driving:before,.dashboard-driving:after{content:"";height:56px;border-left:1px solid var(--panel-line)}.dashboard-driving:before{order:1}.dashboard-driving:after{order:4}.instrument{order:2}.trip{order:3}.trip>span{border-color:var(--text-muted);color:var(--text-primary);background:var(--cockpit-800)}#speed{color:var(--mint)}#speed[data-level=warning]{color:var(--amber)}#speed[data-level=danger]{color:var(--danger)}.speed-bar{background:var(--cockpit-500)}.speed-bar i{background:var(--mint)}.brake{background:var(--cockpit-500);color:var(--text-primary)}.throttle{background:var(--control-primary);color:var(--cockpit-950)}@media(max-height:500px){#hud{--console-bottom:max(6px,var(--safe-bottom));--mirror-top:86px;--mirror-h:min(154px,calc(100dvh - var(--console-bottom) - 168px))}.route-header{height:calc(44px + calc(max(6px,env(safe-area-inset-top)) + var(--status-gap)) + 6px);padding-top:calc(max(6px,env(safe-area-inset-top)) + var(--status-gap));padding-bottom:6px}.route-header-inner{grid-template-columns:minmax(210px,1fr) minmax(240px,420px) auto}.route-identity .route-summary{margin-top:3px}.route-header .route-navigation{height:44px;padding:0 10px;grid-template-rows:none;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:center}.route-header #stop-count{margin-left:0}.route-actions .icon-button{width:44px;height:44px}.mirror{top:var(--mirror-top);height:var(--mirror-h)}#camera{bottom:calc(74px + var(--console-bottom) + 8px)}#cockpit:before{height:calc(74px + var(--console-bottom))}.pillar{bottom:calc(78px + var(--console-bottom))}.dashboard,.third-person .dashboard{height:calc(70px + var(--console-bottom));padding-bottom:var(--console-bottom)}.dashboard-driving:before,.dashboard-driving:after{height:44px}.speed-limit{bottom:calc(var(--console-bottom) + 11px)}.miss-log{top:calc(56px + calc(max(6px,env(safe-area-inset-top)) + var(--status-gap)))}.platform-limit{bottom:calc(100% + 3px);padding:1px 2px;gap:0}.platform-limit small{font-size:7px}.platform-limit b{font-size:10px}.platform-limit svg{width:8px;height:7px}.platform-limit[data-state=confirmed] b{font-size:9px}.pedals{bottom:var(--console-bottom)}.stop-service-panel{height:70px;padding:2px 3px;grid-template-rows:20px 44px}.stop-service-info{padding:0 7px}.stop-service-info span{display:none}.stop-service-info strong{margin-top:0}.door-switch{height:44px}.door-title{top:3px}.door-pos{top:14px}.door-frame{top:6px}}@media(max-height:500px)and (max-width:760px){.route-header-inner{grid-template-columns:minmax(178px,1fr) minmax(226px,340px) auto}}@media(max-height:360px){#hud{--mirror-top:72px;--mirror-h:min(126px,calc(100dvh - var(--console-bottom) - 154px))}.miss-log{font-size:11px}}.mirror{border-color:var(--cockpit-950);box-shadow:inset 0 0 0 1px #b8c9ca45,0 5px #04151d,0 12px 24px #071f2b55}.mirror>span{color:var(--text-secondary)}#camera{background:var(--cockpit-800);border-color:#b8c9ca55;color:var(--text-primary)}.screen p,.screen dt,.result-message,.boot p,.boot-note,.boot-credit{color:var(--text-secondary)}.title-mark{border-color:#6be0bb66;color:var(--mint)}.signal-loupe-panel,.stop-loupe-panel{background:var(--cockpit-950);border-color:#b8c9ca66;color:var(--text-primary)}#portrait{background:var(--cockpit-950);color:var(--text-primary)}#portrait>div{color:var(--mint)}.start-update{background:#174551cc;border-color:#b8c9ca66;color:var(--text-primary)}#result-screen{background:#071f2beb}.result-summary,.result-details>div{border-color:var(--panel-line)}@media(prefers-reduced-motion:reduce){.signal-loupe,.stop-loupe,.door-pos,.boot-bar i{transition-duration:0s}.origin-guidance{animation:none}}.dashboard,.third-person .dashboard{left:50%;width:min(1600px,100%);transform:translate(-50%);background:transparent}#speed[data-platform=confirmed]{color:var(--danger)}.dashboard-controls{left:50%;right:auto;width:min(1600px,calc(100% - (2*max(12px,env(safe-area-inset-left),env(safe-area-inset-right)))));transform:translate(-50%)}#start-screen{--start-safe-top:env(safe-area-inset-top,0px);--start-safe-right:env(safe-area-inset-right,0px);--start-safe-bottom:env(safe-area-inset-bottom,0px);--start-safe-left:env(safe-area-inset-left,0px);display:grid;grid-template-columns:minmax(0,48fr) minmax(0,52fr);grid-template-rows:minmax(0,1fr) auto auto;gap:8px 24px;padding:calc(16px + var(--start-safe-top)) calc(24px + var(--start-safe-right)) calc(8px + var(--start-safe-bottom)) calc(24px + var(--start-safe-left));background:linear-gradient(90deg,#071f2bf5,#0b2b38e8 30%,#0b2b3899 48%,#0b2b3810 70%),linear-gradient(0deg,#071f2bd9,#071f2b66 22%,transparent 46%);-webkit-backdrop-filter:none;backdrop-filter:none;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;color:var(--text-primary)}.start-content{grid-column:1;grid-row:1;align-self:start;display:grid;grid-template-rows:auto auto minmax(0,1fr);min-width:0;max-width:620px;max-height:100%}#start-screen .start-destination{margin:0;color:var(--text-primary);font-size:14px;line-height:1.4;letter-spacing:.08em;font-weight:700}.start-route-group{display:grid;grid-template-columns:4px 1fr;gap:2px 12px;margin:16px 0 0}.start-route-group:before{content:"";grid-row:1/3;background:var(--mint);border-radius:2px}#start-screen .start-title{font-size:clamp(26px,4.2vw,40px);line-height:1.13;letter-spacing:.025em;margin:0;font-weight:800;text-wrap:balance}.start-title span{display:block}#start-screen .start-route{margin:0;color:var(--text-secondary);font-size:14px;line-height:1.4;letter-spacing:.08em}.start-route span{margin:0 8px;color:var(--mint)}.start-course{display:flex;flex-wrap:wrap;gap:6px;margin:0}.start-course-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.start-course label{position:relative;cursor:pointer;touch-action:manipulation}.start-course input{position:absolute;opacity:0;width:1px;height:1px}.start-course label span{display:flex;flex-direction:column;justify-content:center;min-width:108px;min-height:44px;padding:4px 10px;border:1px solid #b8c9ca55;border-radius:7px;background:#071f2bd9;color:var(--text-primary);font-size:14px;font-weight:700;line-height:1.3;letter-spacing:.04em}.start-course label small{color:var(--text-secondary);font-size:12px;font-weight:400;letter-spacing:.02em}.start-course input:checked+span{background:#244d54;border-color:var(--mint);box-shadow:inset 0 -3px var(--mint);color:#eaf9ee}.start-course input:checked+span small{color:#cfe7df}.start-course input:focus-visible+span{outline:2px solid var(--amber);outline-offset:2px}@media(max-height:440px){#start-screen .start-destination{display:none}}@media(max-width:760px),(max-height:440px){.start-course{flex-wrap:nowrap;gap:4px}.start-course label span{min-width:0;padding:2px 6px;font-size:13px;letter-spacing:0}.start-course label small{font-size:10px;letter-spacing:0}}.start-actions{grid-column:2;grid-row:3;align-self:end;justify-self:end;display:flex;align-items:center;gap:8px;flex-wrap:wrap}#start-screen .primary{min-width:160px;min-height:48px;flex:1;max-width:300px;padding:12px 18px;border-radius:10px;font-size:16px;gap:16px;box-shadow:0 6px 24px #071f2b33}.start-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:44px;padding:8px;background:transparent;color:inherit;font-size:14px;line-height:1.4;text-decoration:underline;text-underline-offset:5px;touch-action:manipulation}.start-nagoya{grid-column:1;grid-row:2;align-self:end;justify-self:start;display:grid;grid-template-columns:repeat(2,auto);justify-content:start;gap:4px 6px;margin:0;min-width:0;font-size:14px}.start-nagoya-label{grid-column:1/-1;padding:0 2px;font-size:13px;font-weight:700;line-height:18px;letter-spacing:.04em;color:var(--text-primary);text-shadow:0 1px 4px #071f2b,0 0 2px #071f2b;white-space:nowrap}.start-nagoya label{position:relative;cursor:pointer;touch-action:manipulation}.start-nagoya input{position:absolute;opacity:0;width:1px;height:1px}.start-nagoya label span{display:flex;align-items:center;justify-content:center;min-width:60px;min-height:44px;padding:8px;border:1px solid #b8c9ca55;border-radius:7px;background:#071f2bd9;color:var(--text-primary);white-space:nowrap}.start-nagoya input:checked+span{background:#244d54;border-color:var(--mint);box-shadow:inset 0 -3px var(--mint);color:#eaf9ee}.start-nagoya input:focus-visible+span{outline:2px solid var(--amber);outline-offset:2px}.start-stage{grid-column:2;grid-row:1;align-self:stretch;justify-self:stretch;position:relative;min-width:0;margin:calc(-16px - var(--start-safe-top)) calc(-24px - var(--start-safe-right)) 0 0;touch-action:pan-y}.start-roster{grid-column:2;grid-row:2;align-self:end;justify-self:end;position:relative;display:flex;gap:12px}.start-tile{position:relative;width:64px;height:64px;padding:0;background:#071f2be6;outline:2px solid #b8c9ca55;outline-offset:-2px;overflow:hidden;touch-action:manipulation}.start-tile svg{display:block;width:100%;height:100%}.start-tile:after{content:"";position:absolute;inset:0;background:#071f2b8c;transition:opacity .15s}.start-tile[aria-pressed=true]{outline:3px solid var(--amber);outline-offset:-3px}.start-tile[aria-pressed=true]:after{opacity:0}.start-tile:focus-visible{outline:3px solid var(--mint);outline-offset:-3px}@media(prefers-reduced-motion:reduce){.start-tile:after{transition:none}}.start-footer{grid-column:1;grid-row:3;display:flex;align-items:center;gap:16px;min-height:36px;color:#c1d2d3}.start-footer .start-link{font-size:12px}.start-dialog .elevation-credit{display:flex;align-items:center;width:fit-content;min-height:44px;margin:8px 0 0;font-size:12px;opacity:1;touch-action:manipulation}#start-screen #debug-menu{top:calc(8px + var(--start-safe-top));right:calc(16px + var(--start-safe-right));left:auto;max-width:min(380px,calc(100% - 32px));font-size:12px}.start-dialog{width:min(600px,calc(100% - 32px - env(safe-area-inset-left) - env(safe-area-inset-right)));max-height:calc(100% - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:0;border:1px solid #b8c9ca66;border-radius:16px;background:var(--cockpit-950);color:var(--text-primary);box-shadow:0 20px 80px #0008;overflow:hidden}.start-dialog[open]{display:flex;flex-direction:column}.start-dialog::backdrop{background:#04151dcc}.start-dialog-head{display:flex;align-items:center;justify-content:space-between;flex:none;gap:16px;padding:8px 16px;border-bottom:1px solid #b8c9ca33}.start-dialog-head h2{margin:0;font-size:18px}.start-dialog-head .start-link{text-decoration:none}.start-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:16px 20px;font-size:14px;line-height:1.7}.start-dialog-body h3{margin:0 0 8px;font-size:15px;color:var(--mint)}.start-controls{margin:0 0 24px;display:grid;gap:12px}.start-controls>div{display:grid;grid-template-columns:80px 1fr;gap:12px}.start-controls dt{font-weight:700}.start-controls dd{margin:0;color:var(--text-secondary)}.start-rules p{margin:8px 0 0;color:var(--text-secondary)}.start-info-name{margin:0;font-weight:700}.start-stats-space{height:54px;max-height:100%;min-height:0;padding-top:10px}#start-screen .run-stats-strip{justify-content:flex-start;align-content:flex-start;gap:4px 14px;max-height:100%;margin:0;padding:0;border:0;overflow:hidden;font-size:11px;line-height:18px}#start-screen .run-stats-strip>span{white-space:nowrap}#start-screen .run-stats-strip b{font-size:14px;color:#e1ede6}#start-screen[inert]{pointer-events:none}#start-fade{position:absolute;inset:0;z-index:15;background:#19252a;opacity:0;pointer-events:none}@media(max-height:500px){#start-screen{row-gap:4px}.start-route-group{margin:10px 0 0}.start-actions{flex-wrap:nowrap}#start-screen .primary{min-width:128px;padding:12px}}@media(max-height:440px){#start-screen .start-title{font-size:min(clamp(26px,4.2vw,40px),8vh)}.start-stats-space{height:44px;padding-top:4px}}@media(max-height:360px){#start-screen{gap:4px 16px;padding-top:calc(8px + var(--start-safe-top))}.start-route-group{margin:8px 0 0}#start-screen .start-title{font-size:clamp(24px,3.6vw,28px)}.start-nagoya,.start-roster{grid-column:1/-1;grid-row:2}.start-nagoya{gap:2px 6px}.start-nagoya-label{font-size:12px;line-height:16px}.start-nagoya label span{min-width:52px;padding:8px 6px}.start-footer{gap:8px}.start-tile{width:52px;height:52px}.start-stage{margin-top:calc(-8px - var(--start-safe-top))}}@media(max-width:760px){.start-nagoya,.start-roster{grid-column:1/-1;grid-row:2}.start-nagoya{gap:2px 6px}.start-nagoya-label{font-size:12px;line-height:16px}.start-nagoya label span{min-width:52px;padding:8px 6px}}@media(max-width:760px)and (max-height:500px){.start-route-group{margin:6px 0 0}.start-stats-space{height:44px;padding-top:4px}}@media(min-height:501px)and (min-width:900px){#start-screen{padding-left:calc(5vw + var(--start-safe-left));padding-right:calc(5vw + var(--start-safe-right));gap:24px 40px}#start-screen .primary{max-width:none;flex:none;min-height:56px}.start-stage{margin-right:calc(-5vw - var(--start-safe-right))}#start-screen .start-title{font-size:clamp(40px,4.4vw,68px)}.start-route-group{margin:24px 0 0}}:root{--color-reward:#ffd45c}.stop-loupe-scale{position:relative;display:block;height:8px;margin-top:3px;border-radius:2px;background:#ffffff14;overflow:hidden}.stop-loupe-scale>i{position:absolute;top:0;bottom:0;display:block}.stop-loupe-good{left:var(--good-left);width:var(--good-width);background:#c8dfae4d}.stop-loupe-perfect{left:var(--perfect-left);width:var(--perfect-width);background:var(--color-reward)}.stop-loupe-target{left:50%;width:1px;margin-left:-.5px;background:var(--color-text-primary)}.stop-loupe-marker{left:var(--marker,0%);width:3px;margin-left:-1.5px;top:-1px!important;bottom:-1px!important;border-radius:1px;background:#ff7a70;box-shadow:0 0 0 1px #071f2b}.stop-loupe[data-tone=inside] .stop-loupe-marker{background:#8fe39a}.stop-judge{position:absolute;left:50%;top:36%;display:grid;justify-items:center;gap:3px;padding:7px 18px 8px;border:2px solid currentColor;border-radius:10px;background:#071f2be8;color:var(--color-action);box-shadow:0 4px #04151d99;transform:translate(-50%,-50%);pointer-events:none;z-index:5;white-space:nowrap;opacity:0}.stop-judge[data-judgement=perfect]{color:var(--color-reward)}.stop-judge-label{font:800 26px/1 Inter,Helvetica Neue,Arial,sans-serif;letter-spacing:.12em}.stop-judge-detail{display:flex;gap:10px;align-items:baseline;color:var(--color-text-primary);font-size:13px;font-variant-numeric:tabular-nums}.stop-judge-points{font-weight:700;color:currentColor}.stop-judge[data-judgement=perfect] .stop-judge-points,.stop-judge-multiplier{color:var(--color-reward);font-weight:800}.stop-judge.play{animation:stop-judge 1.2s ease-out both}@keyframes stop-judge{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}22%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-56%) scale(1)}}@keyframes stop-judge-still{0%{opacity:1}to{opacity:0}}@media(max-height:360px){.stop-judge{top:40%;padding:5px 14px 6px}.stop-judge-label{font-size:22px}}@media(prefers-reduced-motion:reduce){.stop-judge.play{animation:stop-judge-still 1.2s step-end both}}.start-course label input+span small.course-best{color:var(--text-secondary);font-size:11px;line-height:1.2;font-variant-numeric:tabular-nums}.start-course label input+span small.course-best.recorded{color:var(--color-reward)}@media(max-width:760px),(max-height:440px){.start-course label input+span small.course-best{font-size:10px}}@property --result-total{syntax:"<integer>";inherits:false;initial-value:0}#result-screen .result-head{display:flex;flex:none;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:2px 14px;width:min(640px,100%)}#result-screen .result-head .result-route,#result-screen .result-head .result-message{margin:0}#result-screen .result-summary{grid-template-columns:repeat(3,minmax(0,1fr));width:min(640px,100%)!important;margin:8px 0!important;padding:7px 0}#result-screen .result-summary>div:first-child dd{font-size:clamp(18px,3vw,24px)}.result-total{counter-reset:result-total var(--result-total);color:var(--color-reward)!important}.result-total:before{content:counter(result-total);content:counter(result-total)/""}.result-total small{margin-left:3px;font-size:12px;color:var(--color-text-muted)}.result-stamp{display:grid;place-items:center;width:1.45em;height:1.35em;border:3px solid currentColor;border-radius:6px;transform:rotate(-8deg);color:var(--color-text-primary)}.result-stamp[data-grade=S]{color:var(--color-reward)}.result-stamp[data-grade=A]{color:var(--color-action)}.result-stamp[data-grade=C]{color:var(--color-text-muted)}.result-body{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:28px;width:min(640px,100%);flex:1 1 auto;min-height:0;margin-bottom:8px}#result-screen .result-breakdown,#result-screen .result-stops{width:auto;max-width:none;min-height:0;margin:0;padding:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none;align-content:start}.result-breakdown::-webkit-scrollbar,.result-stops::-webkit-scrollbar{display:none}#result-screen .result-breakdown>div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;border-bottom:1px solid var(--panel-line);font-size:12px;line-height:16px}#result-screen .result-breakdown dd{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.result-breakdown [data-kind=bonus] dd,.result-breakdown [data-kind=streak] dd{color:var(--color-reward)}.result-breakdown [data-kind=streak] dt{padding-left:1em}.result-breakdown [data-kind=penalty] dd,.result-breakdown [data-kind=penalty] dt{color:var(--color-warning)}#result-screen .result-breakdown dt{white-space:normal}.result-side{display:flex;flex-direction:column;min-height:0;gap:6px}.result-stops{list-style:none;display:grid;flex:0 1 auto}.result-stops li{display:grid;grid-template-columns:minmax(0,1fr) auto 3.8em;gap:8px;align-items:baseline;padding:3px 0;border-bottom:1px solid var(--panel-line);font-size:12px;line-height:16px}.result-stops li>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-stops li>span:last-child{text-align:right;font-variant-numeric:tabular-nums}.result-stops b{font-size:11px;letter-spacing:.06em}.result-stops [data-judgement=perfect] b{color:var(--color-reward)}.result-stops [data-judgement=good] b{color:var(--color-action)}.result-stops [data-judgement=miss] b,.result-stops [data-judgement=passed] b{color:var(--color-warning)}.result-best{display:flex;flex:none;justify-content:space-between;align-items:baseline;gap:8px;margin:0!important;padding:5px 10px;border:1px solid var(--panel-line);border-radius:6px;font-size:12px!important;letter-spacing:.04em!important;color:var(--color-text-primary)!important}.result-best span{font-weight:800;font-variant-numeric:tabular-nums}.result-best[data-kind=new],.result-best[data-kind=first]{border-color:var(--color-reward);background:#ffd45c24;color:var(--color-reward)!important}.result-standing{flex:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;font-size:11px;color:var(--text-secondary)}.result-standing p{display:flex;align-items:baseline;gap:6px;margin:0!important;font-size:11px!important;letter-spacing:0!important}.result-standing b{font:600 16px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--color-action)}#result-screen .result-standing .result-rank{margin:0}.result-standing[data-state=none]{display:none}.result-standing:not([data-state=loading]) .result-standing-wait{display:none}.result-breakdown.overflowing,.result-stops.overflowing{-webkit-mask-image:linear-gradient(#000 calc(100% - 18px),transparent);mask-image:linear-gradient(#000 calc(100% - 18px),transparent)}.result-flash{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;box-shadow:inset 0 0 90px 24px #ffd45c}#result-screen.revealing .result-breakdown>div{animation:result-in .28s ease-out both;animation-delay:calc(var(--i) * var(--row-step))}#result-screen.revealing .result-total{animation:result-count var(--count-ms) ease-out both}#result-screen.revealing .result-stops li{animation:result-in .28s ease-out both;animation-delay:calc(var(--stops-at) + var(--i) * var(--stop-step))}#result-screen.revealing .result-stamp{animation:result-stamp .32s cubic-bezier(.3,1.4,.5,1) var(--stamp-at) both}#result-screen.revealing{animation:judge-shake .5s cubic-bezier(.36,.07,.19,.97) calc(var(--stamp-at) + .25s)}#result-screen.revealing .result-flash{animation:judge-flash 1s ease-out calc(var(--stamp-at) + .2s) both}#result-screen.revealing .result-best{animation:result-in .35s ease-out var(--best-at) both}#result-screen.revealing .result-standing{animation:result-in .35s ease-out var(--standing-at) both}@keyframes result-in{0%{opacity:0}to{opacity:1}}@keyframes result-count{0%{--result-total:0}}@keyframes result-stamp{0%{opacity:0;transform:rotate(-8deg) scale(2.6)}to{opacity:1;transform:rotate(-8deg) scale(1)}}#result-screen.settled,#result-screen.settled *{animation:none!important}@media(prefers-reduced-motion:reduce){#result-screen,#result-screen *{animation:none!important}}@media(max-height:400px){#result-screen .result-summary{margin:5px 0!important;padding:4px 0}#result-screen .result-summary dd{font-size:24px}#result-screen .result-breakdown>div,.result-stops li{padding:2px 0;font-size:11px;line-height:14px}.result-body{margin-bottom:6px}.result-best{padding:3px 8px}.result-side{gap:4px}}.route-identity .route-summary>*{flex:none}.live-score,.live-streak{display:inline-flex;align-items:baseline;gap:2px;font-variant-numeric:tabular-nums;white-space:nowrap}.live-score b{display:inline-block;min-width:2.9em;text-align:right;font-weight:700;color:var(--color-text-primary)}.live-score-unit{font-size:9px}.live-streak{gap:3px}.live-streak-current{display:inline-block;min-width:2.2em;text-align:right;font-weight:800;color:var(--color-reward)}.live-streak-next{font-size:9px;color:var(--color-text-muted)}.live-streak:not([data-state=none]) .live-streak-next{color:var(--color-reward)}.live-score.play[data-change=up] b{animation:live-score-pop .45s ease-out}.live-score.play[data-change=down] b{animation:live-score-shake .45s ease-out}.live-streak.break{animation:live-streak-shake .5s ease-out}.live-streak.break .live-streak-next{animation:live-streak-fade .7s ease-out}@keyframes live-score-pop{0%,40%{color:var(--color-reward)}35%{transform:scale(1.3)}to{transform:none}}@keyframes live-score-shake{0%,70%{color:var(--color-warning)}15%{transform:translate(-3px)}35%{transform:translate(3px)}55%{transform:translate(-2px)}75%{transform:translate(1px)}to{transform:none}}@keyframes live-streak-shake{15%{transform:translate(-3px)}35%{transform:translate(3px)}55%{transform:translate(-2px)}75%{transform:translate(1px)}to{transform:none}}@keyframes live-streak-fade{0%{color:var(--color-reward)}}@media(prefers-reduced-motion:reduce){.live-score.play[data-change] b,.live-streak.break,.live-streak.break .live-streak-next{animation:none}}.result-retry-label{display:flex;flex-direction:column;align-items:flex-start;gap:1px}.result-retry-hint{font-size:11px;font-weight:500;line-height:1.2;opacity:.8;white-space:nowrap}
