/* Desktop fallback positions. The natural-flow rail below takes over after mount. */
@media(min-width:900px){
 :root{--g-top:80px;--g-bottom:24px}
 #app{max-width:none;width:100%;margin:0;box-shadow:none}
 #app.g-app .g-topbar{left:0;right:0;padding:16px 28px;height:var(--g-top);gap:12px;background:linear-gradient(var(--g-night),transparent)}
 #app.g-app .g-topbar h1{font-size:20px;letter-spacing:-.03em}
 #app.g-app .g-topbar :is(.icon-button,.back){width:48px;height:48px;min-width:48px}
 #app.g-app .g-topbar [data-sound],#app.g-app .g-topbar :is(.sound-toggle,.sh-sound,.mamoru-sound,.zero-sound,.dotchi-sound,.kuru-sound,.kz-sound){height:48px;min-height:48px;width:52px;min-width:52px;flex-basis:52px;font-size:11px}
 #app.g-app :is(.run-hud,.mamoru-mission,.mamoru-hud,.seiha-overview,.seiha-run,.zero-intro-copy,.zero-hud,.saigo-head,.sh-heading,.sh-run-hud,.kz-intro,.kz-hud,.race-intro,.race-stage-top){left:28px;right:auto;top:calc(var(--g-top) + 14px);width:304px;padding:12px 0;border-radius:0;background:linear-gradient(var(--g-glass),transparent)}
 #app.g-app :is(.g-reward,.kazoku .kz-live,.kazoku .kz-result-top,.kazoku .kz-board-top){left:28px;right:auto;top:calc(var(--g-top) + 14px);width:312px;text-align:left;padding:8px 0;background:linear-gradient(var(--g-glass),transparent)}
 #app.g-app .g-reward :is(.result-score,.mamoru-result-score,.seiha-result-score,.zero-total){font-size:44px;justify-content:flex-start;margin-top:18px}
 #app.g-app .g-reward :is(.result-rank,.mamoru-result-held,.zero-reached,.seiha-result-head h2){font-size:24px;line-height:1.6;text-wrap:balance;word-break:keep-all}
 #app.g-app .g-reward :is(.g-earned-stars,.mamoru-stars){justify-content:flex-start;margin-left:0}
 #app.g-app .g-reward .seiha-rating{justify-content:flex-start}
 #app.g-app :is(.g-reward,.kz-result-top) :is(.best-first,.best-update){margin-left:0;margin-right:0}
 #app.g-app :is(.g-result-dock,.setup-panel,.seiha-setup,.zero-panel,.zero-setup,.saigo-panel,.sh-setup,.kazoku .kz-board-dock,.mamoru-plan-footer,.g-attack-dock){left:auto;right:28px;bottom:var(--g-bottom);width:340px;max-height:calc(100dvh - 120px);margin:0}
 #app.g-app .g-result-dock{padding-top:14px;background:linear-gradient(transparent,var(--g-night))}
 #app.g-app .g-main-action{font-size:20px}
 #app.g-app :is(.map-tools,.seiha-tools,.sh-map-tools,.saigo-map-tools,.race-map-tools,.kuru-map-tools){top:calc(var(--g-top) + 20px);right:398px}
 #app.g-app .run-controls{left:28px;bottom:100px;top:auto}
 #app.g-app .oku-scene>.playback-controls{right:28px;left:auto;width:340px;bottom:var(--g-bottom)}
 #app.g-app .oku-place-actions{grid-template-columns:90px minmax(0,1fr)}
 #app.g-app .oku-place-actions .primary{font-size:18px}
 #app.g-app .mamoru-mission{padding:12px 14px;border-radius:16px}
 #app.g-app .mamoru-origin{left:28px;top:calc(var(--g-top) + 110px)}
 #app.g-app .mamoru-map-reset{right:398px;top:calc(var(--g-top) + 20px)}
 #app.g-app .mamoru-tray-host{left:auto;right:28px;width:340px}
 #app.g-app .mamoru-running .mamoru-hud{left:28px;right:auto;top:calc(var(--g-top) + 14px);width:312px;padding:12px 0}
 #app.g-app .mamoru-running .mamoru-playback-host{left:auto;right:28px;bottom:var(--g-bottom);width:340px}
 #app.g-app .mamoru-running .mamoru-run-buttons{right:28px;left:auto;bottom:calc(var(--g-bottom) + 100px);top:auto}
 #app.g-app .mamoru-stage-screen .mamoru-intro{top:calc(var(--g-top) + 90px);left:28px}
 #app.g-app .mamoru-mode-switch{left:28px;right:auto;top:calc(var(--g-top) + 12px);width:312px}
 #app.g-app .mamoru-stage-list{left:380px;right:28px;bottom:calc(var(--g-bottom) + 65px);padding:16px 0}
 #app.g-app .mamoru-stage-screen>.mamoru-mission-picker{left:auto;right:28px;width:340px;bottom:var(--g-bottom)}
 #app.g-app .mamoru-stage-screen>[data-data]{left:28px;right:auto;top:auto;bottom:var(--g-bottom)}
 #app.g-app .mamoru-pass{padding:120px 380px 140px 80px;align-items:flex-start;text-align:left}
 #app.g-app .mamoru-pass h2{font-size:48px}
 #app.g-app .mamoru-pass>[data-receive]{left:auto;right:28px;width:340px;bottom:100px}
 #app.g-app .mamoru-pass .mamoru-pass-rule{left:auto;right:28px;width:340px;bottom:24px}
 #app.g-app .mamoru-attack>h2,#app.g-app .mamoru-attack>.mamoru-round-label,#app.g-app .mamoru-attack>.mamoru-private-note{left:28px;width:312px;right:auto}
 #app.g-app .seiha-run-buttons{left:28px;bottom:100px;position:fixed}
 #app.g-app .seiha-playback{right:28px;left:auto;width:340px;bottom:var(--g-bottom)}
 #app.g-app .seiha-run .seiha-count{font-size:56px}
 #app.g-app .zero-tools{right:398px;bottom:40px;top:auto}
 #app.g-app .zero-intro-copy h2{font-size:28px;line-height:1.65}
 #app.g-app .dotchi-scoreline{top:calc(var(--g-top) + 14px);left:28px;right:auto;width:300px;padding:0}
 #app.g-app .dotchi-goal{left:28px;right:auto;width:300px;top:calc(var(--g-top) + 96px);padding:0}
 #app.g-app .dotchi-prompt{left:28px;right:auto;width:300px;top:calc(var(--g-top) + 145px);padding:0}
 #app.g-app .dotchi[data-phase="intro"] .dotchi-prompt{top:calc(var(--g-top) + 90px)}
 #app.g-app .dotchi-body{left:auto;right:28px;bottom:var(--g-bottom);width:370px;padding:12px 0 0;max-height:calc(100dvh - 110px)}
 #app.g-app .dotchi-map-reset{right:426px;top:calc(var(--g-top) + 20px)}
 #app.g-app .dotchi-record-line{flex-wrap:wrap;white-space:normal}
 #app.g-app .dotchi-record-line .dotchi-best-update{position:static;margin:4px 0 0;font-size:11px;max-width:100%}
 #app.g-app .dotchi-choices.has-long-name.is-answered .dotchi-choice{grid-template-columns:minmax(0,1fr) minmax(110px,145px)}
 #app.g-app .saigo-head{width:312px}
 #app.g-app .saigo-panel{padding:14px;max-height:calc(100dvh - 120px)}
 #app.g-app .sh-answer{left:28px;right:auto;top:calc(var(--g-top) + 14px);width:320px;height:144px}
 #app.g-app .sh-explorer>[data-comparison]{right:28px;left:auto;bottom:calc(var(--g-bottom) + 85px);width:340px}
 #app.g-app .sh-explorer-actions{right:28px;left:auto;width:340px;bottom:var(--g-bottom)}
 #app.g-app .sh-result-map .sh-map-tools{right:398px;top:calc(var(--g-top) + 20px)}
 #app.g-app .sh-run-controls{left:auto;right:28px;width:340px;bottom:var(--g-bottom)}
 #app.g-app .sh-run-hud{padding:14px;width:312px}
 #app.g-app .sh-meters{grid-template-columns:repeat(2,minmax(0,1fr))}
 #app.g-app .kazoku .kz-board-top{width:320px}
 #app.g-app .kazoku .kz-board-dock{padding:10px 0 0}
 #app.g-app .kazoku .kz-map-tools{right:398px;top:calc(var(--g-top) + 20px)}
 #app.g-app .kazoku .kz-rating{justify-content:flex-start;gap:10px}
 #app.g-app .kazoku .kz-result-top .g-result-ribbon{margin-bottom:20px}
 #app.g-app .kizuke .kz-tools{right:28px;top:calc(var(--g-top) + 20px)}
 #app.g-app .kizuke .kz-intro,#app.g-app .kizuke .kz-hud{left:28px;right:auto;width:312px;top:calc(var(--g-top) + 16px)}
 #app.g-app .kizuke .kz-setup{left:auto;right:28px;width:340px;bottom:var(--g-bottom)}
 #app.g-app .kizuke .kz-hud-label{font-size:12px}
 #app.g-app .kizuke .kz-elapsed{font-size:56px}
 #app.g-app .kizuke .kz-wait{inset:auto 28px var(--g-bottom) auto;width:340px}
 #app.g-app .race-setup .race-intro{left:28px;top:calc(var(--g-top) + 14px);width:312px;padding:0}
 #app.g-app .race-fighter-picks{left:auto;right:28px;width:340px;top:calc(var(--g-top) + 16px)}
 #app.g-app .race-fighter-card{height:136px}
 #app.g-app .race-setup .race-map-tools{right:398px;top:calc(var(--g-top) + 20px)}
 #app.g-app .race-condition{right:28px;left:auto;width:340px;bottom:calc(var(--g-bottom) + 145px)}
 #app.g-app .race-go{right:28px;left:auto;width:340px;bottom:calc(var(--g-bottom) + 62px)}
 #app.g-app .race-mission-picker{right:28px;left:auto;width:340px;bottom:var(--g-bottom)}
 #app.g-app .race-engine{right:28px;left:auto;width:340px;bottom:calc(var(--g-bottom) + 240px)}
 #app.g-app .race-stage-top{left:28px;right:auto;width:320px;top:calc(var(--g-top) + 16px)}
 #app.g-app .race .race-scoreboard,#app.g-app .race[data-review="true"] .race-scoreboard{left:auto;right:28px;top:calc(var(--g-top) + 16px);width:350px}
 #app.g-app .race .race-event,#app.g-app .race[data-review="true"] .race-event{left:auto;right:28px;top:calc(var(--g-top) + 165px);width:350px}
 #app.g-app .race-result-top{text-align:left}
 #app.g-app .race-winner{font-size:26px}
 #app.g-app .race-victory-art{grid-template-columns:82px minmax(0,1fr);gap:10px}
 #app.g-app .race-victory-pictures{height:100px}
 #app.g-app .race-winning-count{font-size:33px}
 #app.g-app .race-compare-controls{left:calc(50% - 180px);right:auto;bottom:calc(var(--g-bottom) + 40px);width:360px}
 #app.g-app .race-stage-tools,#app.g-app .race-result-primary{left:auto;right:28px;bottom:var(--g-bottom);width:350px}
 #app.g-app .g-race-record{left:auto;right:28px;bottom:calc(var(--g-bottom) + 83px);width:350px}
 #app.g-app .race-review-panel{left:auto;right:28px;width:350px;bottom:calc(var(--g-bottom) + 145px)}
 #app.g-app .race-running-condition{left:28px;top:calc(var(--g-top) + 120px);max-width:300px}
 #app.g-app .kuru-station-search{left:28px;right:auto;width:312px;top:calc(var(--g-top) + 16px)}
 #app.g-app .kuru-origins{left:28px;right:auto;width:312px;top:calc(var(--g-top) + 110px)}
 #app.g-app .kuru-result{left:28px;right:auto;width:312px;max-width:312px;top:calc(var(--g-top) + 180px)}
 #app.g-app .kuru-empty{left:28px;right:auto;width:312px;top:calc(var(--g-top) + 190px)}
 #app.g-app .kuru-timeline{right:28px;left:auto;width:350px;bottom:calc(var(--g-bottom) + 58px)}
 #app.g-app .g-kuru-record{right:28px;left:auto;width:350px;bottom:var(--g-bottom)}
 #app .g-title-screen .g-home-header{padding:24px 40px 0}
 #app .g-title-screen .g-brand{font-size:40px}
 .g-title-screen .g-home-world{background-position:center}
 .g-title-screen .g-city{width:100%;height:100%;opacity:.6}
 .g-title-screen .g-title-copy{position:absolute;top:21%;left:7%;width:420px;margin:0;text-align:left}
 .g-title-screen .g-title-copy h1{font-size:38px;line-height:1.6;margin-top:20px}
 .g-title-screen .g-title-copy p{font-size:15px;margin-top:20px}
 .g-title-screen .g-character-scene{position:absolute;inset:13% 5% 8% 47%}
 .g-title-screen .g-character{padding:0}
 .g-title-screen .g-character img{max-height:600px;max-width:100%;height:100%}
 .g-title-screen .g-title-actions{position:absolute;left:7%;bottom:8%;width:380px;padding:0;background:none}
 #app .g-title-actions .g-home-play{min-height:76px;font-size:30px}
 .g-world-header{padding:18px 28px;height:80px}
 .g-world-header .g-brand{font-size:30px;margin-right:auto;margin-left:10px}
 .g-journey{top:100px;left:28px;right:auto;width:312px;justify-content:flex-start;flex-wrap:wrap}
 .g-journey>span{font-size:12px;padding:8px 14px}.g-journey b{font-size:18px}
 .g-world-heading{top:190px;left:28px;width:312px;right:auto}
 .g-world-heading h1{font-size:28px;line-height:1.7}
 .g-world-heading button{position:relative;right:auto;top:auto;margin-bottom:8px}
 .g-world-board{inset:125px 375px 100px 360px}
 #app .g-world-portal{width:180px;min-height:140px}
 .g-portal-art{width:100px;height:100px}
 #app .g-world-portal strong{font-size:15px;max-width:200px}
 .g-world-choice{left:auto;right:28px;bottom:90px;width:312px;background:linear-gradient(transparent,var(--g-night))}
 .g-world-chosen h2{font-size:27px;line-height:1.6}
 .g-world-chosen p{font-size:13px}.g-world-chosen .g-world-record{font-size:12px;margin:16px 0 6px}
 .g-world-chosen>[data-world-route]{font-size:13px}
 .g-world-footer{left:28px;right:28px;bottom:16px;font-size:13px}
 .g-world-footer>span{font-size:12px}
 .tech-header{padding:16px 32px;height:80px}
 .tech-header>strong{font-size:20px}
 #app.g-app .tech-header .button{min-height:48px;font-size:15px;min-width:150px}
 .tech-reading{display:grid;grid-template-columns:230px minmax(0,820px);gap:48px;justify-content:center;padding:0 36px 80px}
 .tech-toc{display:block;overflow:auto;position:sticky;top:104px;align-self:start;max-height:calc(100dvh - 128px);padding:10px 0;border:0}
 .tech-toc>p{display:block;font-size:12px;color:var(--g-gold);margin-bottom:15px}
 .tech-toc button{display:block;width:100%;margin:4px 0;border:0;background:none;min-height:44px;font-size:12px}
 .tech-toc button:hover{background:var(--g-panel)}
 .tech-hero{padding:55px 0 40px}
 .tech-hero h1{font-size:46px;line-height:1.5}
 .tech-reading p{font-size:15px;line-height:2.1;max-width:760px}
 .tech-big-number{font-size:76px;margin-top:28px}
 .tech-big-number small{font-size:24px}
 #app.g-app .tech-hero>.primary{width:auto;padding-inline:28px;font-size:19px}
 .tech-reading h2{font-size:28px}.tech-reading article>section{padding:40px 0;scroll-margin-top:100px}
 .tech-reading table{font-size:14px}.tech-reading th,.tech-reading td{padding:14px 18px}
 .tech-reading pre{font-size:14px;padding:22px}.tech-reading .tech-source{font-size:12px}
 .tech-demo-invite{grid-template-columns:minmax(0,1fr) 230px;align-items:center}
 .tech-sim-modes{top:100px;left:28px;right:auto;width:286px}
 .tech-sim-hud{top:165px;left:28px;right:auto;width:286px;padding:12px 0;background:linear-gradient(var(--g-glass),transparent)}
 .tech-sim-hud h1{font-size:24px}.tech-sim-number b{font-size:40px}
 .tech-sim-hud>[data-sim-sub]{font-size:11px;line-height:1.9}
 .tech-sim-counts{display:grid;gap:12px;font-size:11px}.tech-sim-counts b{font-size:16px;display:block}
 #app .tech-sim-settings[open]{position:absolute;inset:100px 28px auto auto;margin:0;width:320px;max-width:none;max-height:calc(100dvh - 230px);border-radius:20px;box-shadow:0 5px var(--g-deep);overflow:auto}
 .tech-sim-settings .sheet-head{padding:12px 16px}
 .tech-sim-settings .sheet-head h2{font-size:16px}
 .tech-sim-settings .sheet-body{padding:16px}
 #app .tech-sim-settings [data-sim-close]{display:none}
 .tech-sim-parameters{gap:9px}
 .tech-sim-action{left:auto;right:28px;bottom:24px;width:320px}
 .tech-sim-time-dock{left:360px;right:380px;bottom:24px}
 .tech-sim-tools{right:375px;top:100px}
 #app .tech-sim .tech-header>[data-sim-settings]{display:none}
}
@media(min-width:1600px){
 #app.g-app :is(.g-result-dock,.setup-panel,.seiha-setup,.zero-panel,.zero-setup,.saigo-panel,.sh-setup,.kazoku .kz-board-dock,.mamoru-plan-footer){width:380px;right:40px}
 #app.g-app :is(.g-reward,.run-hud,.mamoru-hud,.kazoku .kz-live,.kazoku .kz-result-top){left:40px;width:350px}
 .g-world-board{inset:130px 440px 100px 410px}.g-world-choice{width:350px;right:40px}
}
@media(min-width:900px) and (max-width:1099px){
 .g-world-board{inset:125px 295px 90px 290px}
 .g-world-choice{width:260px;right:20px}
 .g-world-heading,.g-journey{left:20px;width:250px}
 #app .g-world-portal{width:140px;min-height:120px}
 .g-portal-art{width:80px;height:80px}
 #app .g-world-portal strong{font-size:13px}
}
@media(min-width:900px){
 #app.g-app .race-compare-tools{right:398px;top:calc(var(--g-top) + 20px);bottom:auto}
 #app.g-app :is(.mamoru-clock,.kazoku .kz-live-head,.run-clock,.kuru-question){font-size:14px}
 #app.g-app .kazoku .kz-live .kz-probability>p:first-child{font-size:14px}
 #app.g-app .kazoku .kz-people{gap:8px}
 #app.g-app .kazoku .kz-person{min-height:128px}
 #app.g-app .kazoku .kz-person>strong{font-size:13px}
 #app.g-app .kazoku .kz-person-safe{font-size:19px}
}

.tech-sim-sidebar{display:contents}

/* The desktop rail uses natural flow; its controls never share map space. */
@media(min-width:900px){
 #app.g-app .g-stage{--g-rail-width:clamp(340px,28vw,420px);--g-map-reserve:calc(var(--g-rail-width) + 48px)}
 #app.g-app .g-desktop-rail{position:absolute;z-index:12;top:96px;right:24px;bottom:auto;width:var(--g-rail-width);max-height:calc(100dvh - 120px);display:flex;flex-direction:column;gap:14px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:0 0 8px;isolation:isolate;background:transparent;border-radius:18px}
 #app.g-app :is(.g-rail-top,.g-rail-bottom){display:flex;flex-direction:column;gap:14px;flex:none;min-width:0}
 #app.g-app .g-rail-bottom{margin-top:0}
 #app.g-app .g-desktop-rail .g-rail-panel{position:relative!important;inset:auto!important;width:100%!important;min-width:0;max-width:none!important;height:auto;max-height:none!important;margin:0!important;transform:none!important;flex:none;box-sizing:border-box}
 #app.g-app .g-desktop-rail :is(.g-reward,.run-hud,.mamoru-hud,.seiha-run,.sh-heading,.saigo-head,.kz-hud,.kz-live,.kz-result-top,.kuru-result,.race-intro,.race-stage-top){padding:16px;background:var(--g-panel);border-radius:18px;text-align:left}
 #app.g-app .g-desktop-rail :where(p:not(.num),small,label,.g-record-button){font-size:14px;line-height:1.65}
 #app.g-app .g-desktop-rail :is(.g-main-action,.primary){font-size:20px;min-height:60px}
 #app.g-app .g-stage .tokyo-map,#app.g-app .saigo-canvas{clip-path:none;mask-image:linear-gradient(to right,#000 calc(100% - var(--g-map-reserve) - 48px),rgba(0,0,0,.3) 100%)}
 #app.g-app :is(.map-tools,.seiha-tools,.sh-map-tools,.saigo-map-tools,.race-map-tools,.race-compare-tools,.kuru-map-tools,.mamoru-map-reset,.dotchi-map-reset,.zero-tools,.kazoku .kz-map-tools,.kizuke .kz-tools){right:var(--g-map-reserve);top:100px;bottom:auto}
 #app.g-app .g-desktop-rail .place-row{display:grid;grid-template-columns:48px minmax(0,1fr) 72px;gap:8px}
 #app.g-app .g-desktop-rail .placement-token{width:48px;height:56px}
 #app.g-app .g-desktop-rail .place-row [data-search]{padding:8px;font-size:12px}
 #app.g-app .g-desktop-rail .place-name{font-size:18px;line-height:1.5}
 #app.g-app .saigo{max-width:none;width:100%;margin:0}
 #app.g-app .saigo-legend{left:24px;right:auto;bottom:24px}
 #app.g-app .g-desktop-rail .mamoru-stage-list{display:grid;grid-template-columns:1fr;overflow:visible;padding:0;gap:12px}
 #app.g-app .g-desktop-rail .mamoru-stage{width:100%;min-width:0;min-height:118px}
 #app.g-app .g-desktop-rail .mamoru-tray-host{overflow:visible}
 #app.g-app .g-desktop-rail .mamoru-tray-host .mamoru-deck{grid-template-columns:1fr;max-height:min(350px,calc(100dvh - 550px))}
 #app.g-app .g-desktop-rail .mamoru-tray-host .mamoru-deck{display:grid;overflow-y:auto;overflow-x:hidden;min-height:150px}
 #app.g-app .mamoru-touch-screen .g-desktop-rail .mamoru-card{min-height:174px;padding-bottom:36px}
 #app.g-app .g-desktop-rail .mamoru-touch-hint{position:static;font-size:12px;padding:0 12px}
 #app.g-app .g-desktop-rail [hidden]{display:none!important}
 #app.g-app .g-desktop-rail .seiha-run-buttons{position:static;inset:auto;display:flex;gap:8px;margin-bottom:12px}
 #app.g-app .g-desktop-rail .seiha-clock{position:static;flex-direction:row;align-items:baseline;gap:10px}
 #app.g-app .g-desktop-rail .seiha-rating{position:static;display:flex;margin-top:16px;text-align:left}
 #app.g-app .g-desktop-rail .run-controls{display:flex;gap:8px;flex-wrap:wrap}
 #app.g-app .g-desktop-rail .race-compare-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 #app.g-app .race-curtain-label.is-right{right:calc(var(--g-map-reserve) + 12px)}
 #app.g-app .race-curtain-label{top:155px}
 .g-title-screen .g-title-copy,.g-title-screen .g-title-actions{left:max(7%,calc(50% - 620px))}
 .g-title-screen .g-title-copy{width:clamp(380px,35vw,560px)}
 .g-title-screen .g-title-copy h1{font-size:clamp(34px,3vw,52px)}
 .g-title-screen .g-character-scene{inset:12% max(5%,calc(50% - 670px)) 8% 47%}
 .g-title-screen .g-character img{max-height:780px}
 .g-world-board{inset:125px 365px 100px 24px}
 .g-world-heading,.g-journey{left:auto;right:24px;width:300px}
 .g-world-heading{top:185px}
 .g-world-choice{right:24px;width:300px;bottom:80px}
}
@media(min-width:900px){
 .tech-sim{--g-rail-width:clamp(340px,28vw,420px);--g-map-reserve:calc(var(--g-rail-width) + 48px)}
 .tech-sim-modes,.tech-sim-hud,.tech-sim-action,.tech-sim-time-dock{left:auto;right:24px;width:var(--g-rail-width)}
 .tech-sim-modes{top:100px}
 .tech-sim-hud{top:165px;padding:16px;background:var(--g-panel);border-radius:18px}
 .tech-sim-sidebar{position:absolute;top:100px;right:24px;width:var(--g-rail-width);max-height:calc(100dvh - 124px);overflow:auto;display:flex;flex-direction:column;gap:16px;z-index:10}
 .tech-sim-sidebar :is(.tech-sim-modes,.tech-sim-hud,.tech-sim-time-dock,.tech-sim-action){position:relative;inset:auto;width:100%;flex:none;margin:0}
 .tech-sim-sidebar .tech-sim-action .primary{width:100%}
 .tech-sim-tools{right:calc(var(--g-rail-width) + 48px)}
 .tech-sim-map .tokyo-map{clip-path:none;mask-image:linear-gradient(to right,#000 calc(100% - var(--g-map-reserve) - 48px),rgba(0,0,0,.3) 100%)}
 #app .tech-sim .tech-header>[data-sim-settings],#app .tech-sim-settings [data-sim-close]{display:inline-grid}
 #app .tech-sim-settings[open]{position:fixed;inset:90px 24px 24px auto;width:min(500px,calc(100vw - 48px));max-height:none;margin:0}
}
