:root{color-scheme:dark;--ink:#173f4b;--deep:#102d36;--blue:#417583;--cream:#f9ebca;--gold:#f4cf59;--coral:#f07f67;--muted:#adc3c2;--line:#91b2ae42;--paper:#eadcbb;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--deep);color:var(--cream)}
*{box-sizing:border-box}html,body{margin:0;min-width:280px}body{background:radial-gradient(ellipse at 50% 0,#2a5861 0,#153840 42%,#102d36 100%);min-height:100svh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:default}button,a{outline-offset:4px}button:focus-visible,a:focus-visible,.game-shell:focus-visible{outline:3px solid var(--gold)}button[hidden],[hidden]{display:none!important}.game-shell{position:relative;max-width:1280px;margin:0 auto;padding:0 24px 12px;outline:none}.page-header{display:flex;align-items:center;gap:22px;min-height:90px;padding:12px 0}.brand-link{display:flex;align-items:center;gap:9px;color:var(--cream);text-decoration:none;font-size:12px;line-height:1.3;flex-shrink:0}.brand-link img{display:block;object-fit:contain}.brand-link strong{display:block}.game-heading{flex:1}.game-heading h1{margin:0;font-size:clamp(18px,2.25vw,28px);letter-spacing:.025em;font-weight:900;line-height:1.1}.game-heading p{margin:6px 0 0;color:#c5d0bd;font-size:12px}.fiction-badge{font-size:10px;text-transform:uppercase;letter-spacing:.11em;color:var(--gold);border:1px solid #e4c66966;border-radius:3px;padding:6px 8px;white-space:nowrap}.shift-board{display:grid;grid-template-columns:1.1fr 1fr 1.2fr .8fr .8fr .9fr auto;align-items:stretch;background:#102d36;border:1px solid var(--line);border-radius:10px 10px 0 0;box-shadow:0 4px 0 #071c2233;min-height:76px}.hud-stat{display:flex;flex-direction:column;justify-content:center;padding:10px 18px;border-right:1px solid var(--line);position:relative;min-width:0}.hud-label{text-transform:uppercase;font-size:10px;letter-spacing:.08em;color:var(--muted);font-weight:700}.hud-stat strong{font-size:25px;font-weight:850;line-height:1.18;font-variant-numeric:tabular-nums}.time-stat strong{color:var(--gold)}.stat-caption{position:absolute;right:14px;bottom:12px;font-size:10px;color:#b2c6c0}.inventory-stat{padding-right:42px}.inventory-stat img{position:absolute;right:10px;bottom:20px}.utility-controls{display:flex;align-items:center;gap:6px;padding:8px}.utility-button{background:#244f5a;border:1px solid #71999470;border-radius:5px;font-size:11px;min-height:46px;padding:7px 11px;font-weight:700;white-space:nowrap}.utility-button:hover{background:#356570}.utility-button[aria-pressed=true]{color:var(--gold);border-color:#f4cf5970}.play-area{display:grid;grid-template-columns:minmax(0,1fr) 238px;gap:14px;margin-top:14px;align-items:start}.scene-section{width:min(100%,calc((100svh - 288px)*16/9));justify-self:center;min-width:0;border:1px solid #94b4ad55;border-radius:8px;overflow:hidden;box-shadow:0 12px 30px #061d2633;background:#173f4b}.scene-topline,.scene-bottomline{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:25px;padding:4px 11px;font-size:9px;letter-spacing:.12em;font-weight:750;color:#bfd2cc}.scene-topline{background:#163b47}.railway-dots{color:var(--gold);letter-spacing:8px;font-size:6px}.scene-bottomline{justify-content:center;font-size:9px;letter-spacing:0;font-weight:400;color:#c3d1c5;background:#183e48}.moving-dot{height:5px;width:5px;background:#b8e5c0;border-radius:50%;flex-shrink:0}.scene-frame{position:relative;aspect-ratio:16/9;background:#97bba9;overflow:hidden}#arena{display:block;width:100%;height:100%;touch-action:manipulation}.scene-targets{position:absolute;inset:0;pointer-events:none}.scene-target{position:absolute;top:4.8%;width:19%;min-height:56px;border:1px solid #c4d8cf9c;background:#163b47ed;border-radius:6px;box-shadow:0 3px 0 #163b4740;pointer-events:auto;transform:translateX(-50%);padding:7px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.scene-target[data-target=wc1]{left:20%}.scene-target[data-target=wc2]{left:50%}.scene-target[data-target=wc3]{left:80%}.target-name{font-size:16px;font-weight:850;line-height:1.15}.target-state{font-size:10px;font-weight:600;line-height:1.2;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-time{font-size:13px;font-weight:850;line-height:1;font-variant-numeric:tabular-nums;color:var(--gold)}.target-time:empty{display:none}.target-button:hover{filter:brightness(1.12)}.target-button[data-active=true],.target-button.active,.target-button.request-active{border-color:var(--gold);background:#4e5034;color:#fff0b9}.target-button[data-urgent=true],.target-button.urgent{border-color:var(--coral);background:#613e37}.target-button[data-selected=true],.target-button.selected{box-shadow:0 0 0 2px #f4cf59}.target-button[data-state=needs-paper]{border-color:var(--gold)}.scene-cart{position:absolute;left:57.5%;bottom:1.5%;transform:translateX(-50%);pointer-events:auto;min-height:44px;display:flex;align-items:center;gap:6px;min-width:78px;padding:6px 9px;background:#183c47e6;border:1px solid #c2d1bf88;border-radius:5px}.scene-cart .target-name{font-size:12px}.scene-cart .target-state,.scene-cart .target-time{display:none}kbd{font:700 10px system-ui;border:1px solid #9db4ad60;border-radius:3px;min-width:17px;padding:2px 4px;line-height:1;color:#ccd9c4;background:#0f2c344d}.gag{position:absolute;left:50%;bottom:23%;transform:translateX(-50%);margin:0;background:var(--cream);color:var(--ink);border:2px solid var(--ink);box-shadow:2px 3px 0 #163b4760;border-radius:6px;padding:9px 12px;font-size:12px;font-weight:800;pointer-events:none;text-align:center;max-width:85%;z-index:2}.countdown{position:absolute;inset:0;display:grid;place-items:center;color:var(--gold);background:#102d367a;font-size:clamp(68px,12vw,130px);font-weight:950;text-shadow:0 5px 0 #102d36}.target-navigation{display:none}.action-panel{background:var(--cream);color:var(--ink);border:1px solid #fff2d7;border-radius:8px;padding:18px 17px;min-height:256px;display:flex;flex-direction:column;gap:14px;box-shadow:0 8px 0 #071e251a}.action-heading{display:flex;gap:10px;align-items:center;border-bottom:1px solid #274d5733;padding-bottom:10px;font-size:9px;letter-spacing:.07em;font-weight:850}.operation-number{padding:4px 5px;border:1px solid #214f5760;border-radius:3px;font-variant-numeric:tabular-nums}.action-status{margin:0;font-size:16px;line-height:1.25;min-height:40px;font-weight:850}.timing-panel{padding-bottom:3px}.timing-label{font-size:11px;margin:0 0 9px;line-height:1.35;min-height:30px;font-weight:650}.timing-scale{height:38px;position:relative;background:#bdc6ac;border:2px solid var(--ink);border-radius:4px;overflow:visible;margin:0 5px}.timing-band{position:absolute;left:44%;width:28%;height:100%;background:#317965;border-inline:2px solid var(--ink);display:grid;place-items:center;background-image:repeating-linear-gradient(135deg,#ffffff00 0,#ffffff00 5px,#ffffff18 5px,#ffffff18 7px)}.timing-band span{font-size:8px;letter-spacing:.04em;font-weight:850;color:#fff4c9}.timing-marker{position:absolute;left:0;top:-6px;width:4px;height:46px;background:#0d2831;transform:translateX(-50%);box-shadow:0 0 0 1px var(--cream)}.timing-marker:before{content:"";position:absolute;top:-2px;left:-4px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #0d2831}.timing-key{display:flex;justify-content:space-between;gap:2px;margin-top:6px;font-size:8px;font-weight:750;color:#46626b}.refill-button{margin-top:auto;min-height:58px;background:var(--gold);color:var(--ink);border:2px solid var(--ink);border-radius:6px;font-size:20px;font-weight:900;box-shadow:0 4px 0 #1c4554;letter-spacing:.015em}.refill-button:hover:enabled{background:#ffdc65}.refill-button:active:enabled{transform:translateY(2px);box-shadow:0 2px 0 #1c4554}.refill-button:disabled{background:#d4d4b8;color:#697c7c;border-color:#8ea29a;box-shadow:0 3px 0 #b6beaa}.roll-cost{margin:0;font-size:10px;line-height:1.4;color:#526e6f;max-width:185px}.game-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:10px;color:#b4c6bf;min-height:44px}.game-footer p{margin:8px 0}.game-footer a{color:var(--cream);min-height:44px;display:flex;align-items:center;text-underline-offset:3px}.touch-help{display:none}.overlay{position:absolute;inset:0;z-index:10;display:grid;place-items:center;background:#09242de0;backdrop-filter:blur(3px);padding:20px;border-radius:0 0 12px 12px;min-height:100%}.dialog{width:min(100%,490px);max-height:calc(100svh - 40px);overflow:auto;background:var(--cream);color:var(--ink);border:1px solid #fff6dc;box-shadow:0 18px 80px #071d2666;border-radius:10px;padding:25px 30px;outline:none}.ticket-header{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:9px;letter-spacing:.08em;font-weight:850;border-bottom:1px dashed #31586155;padding-bottom:14px;margin-bottom:16px}.ticket-header .fiction-badge{font-size:8px;color:#3d686c;border-color:#4e70776b}.dialog-icon{display:flex;align-items:center;gap:10px}.dialog-icon img{object-fit:contain}.dialog-icon>span{font-size:35px;font-weight:900}.dialog-icon>span>span{font-size:17px;font-weight:650;margin-left:2px}.dialog h2{font-size:26px;line-height:1.12;margin:14px 0 12px;font-weight:900}.dialog>p{font-size:13px;line-height:1.6;margin:0 0 15px}.instructions{list-style:none;counter-reset:steps;margin:0 0 18px;padding:0;display:grid;gap:11px}.instructions li{counter-increment:steps;position:relative;padding-left:31px;font-size:12px;line-height:1.45}.instructions li:before{content:counter(steps);position:absolute;left:0;top:-1px;background:var(--ink);color:var(--cream);width:23px;height:23px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:800}.dialog .best-record{font-size:11px;font-weight:750;margin:0 0 14px;color:#476d70}.dialog .load-status{font-size:12px;font-weight:750;color:#45696d}.dialog-actions{display:flex;flex-direction:column;gap:8px}.primary-button{min-height:56px;background:var(--gold);color:var(--ink);border:2px solid var(--ink);border-radius:6px;box-shadow:0 4px 0 #234958;font-size:16px;font-weight:900;padding:10px 16px}.primary-button:hover{background:#ffda5f}.dialog .privacy-hint{font-size:9px;color:#617a76;line-height:1.4;margin:17px 0 0}.results{display:grid;grid-template-columns:1fr 1fr;gap:8px;border-top:1px solid #214f5733;border-bottom:1px solid #214f5733;padding:13px 0;margin:0 0 14px}.results>div{display:flex;flex-direction:column;gap:5px}.results span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:750;color:#5d7776}.results strong{font-size:27px;font-weight:850}.results>p{grid-column:1/-1;font-size:12px;line-height:1.5;margin:8px 0 0;font-weight:650}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1000px){.game-shell{padding:0 14px 8px}.page-header{gap:15px;min-height:76px}.brand-link span{display:none}.shift-board{grid-template-columns:1fr 1fr 1.2fr .75fr .75fr .85fr auto;min-height:68px}.hud-stat{padding:9px 11px}.hud-stat strong{font-size:22px}.stat-caption{display:none}.hud-label{font-size:9px}.inventory-stat{padding-right:30px}.inventory-stat img{width:24px;height:24px;right:6px;bottom:19px}.utility-button{padding:5px 7px;min-height:44px;font-size:10px}.play-area{grid-template-columns:minmax(0,1fr) 210px;gap:10px;margin-top:10px}.action-panel{padding:13px 12px;gap:10px;min-height:242px}.scene-target{min-height:52px;padding:5px 2px}.target-name{font-size:14px}.target-state{font-size:9px}.target-time{font-size:12px}.scene-topline,.scene-bottomline{min-height:23px;font-size:8px}.game-footer{font-size:9px}}
@media(orientation:landscape) and (max-height:540px){.game-shell{padding:0 10px 5px;max-width:1120px}.page-header{min-height:40px;padding:5px 0;gap:10px}.brand-link img{width:29px;height:29px}.brand-link span{display:none}.game-heading h1{font-size:18px}.game-heading p{display:none}.fiction-badge{padding:4px 6px;font-size:8px}.shift-board{min-height:52px;border-radius:6px}.hud-stat{padding:5px 9px}.hud-label{font-size:8px}.hud-stat strong{font-size:19px}.inventory-stat{padding-right:28px}.inventory-stat img{width:22px;height:22px;bottom:10px}.utility-controls{padding:3px;gap:4px}.utility-button{min-height:44px;font-size:9px;padding:4px 8px}.play-area{margin-top:6px;gap:8px;grid-template-columns:minmax(0,1fr) 188px;align-items:stretch}.scene-section{align-self:center;width:min(100%,calc((100svh - 140px)*16/9));justify-self:center}.scene-topline{min-height:18px;padding:3px 8px;font-size:7px}.scene-bottomline{min-height:15px;padding:2px 4px;font-size:7px}.scene-target{top:3%;width:21%;min-height:50px;padding:3px 2px}.target-name{font-size:12px}.target-state{font-size:9px}.target-time{font-size:11px}.scene-cart{min-height:44px;bottom:1%;padding:3px 7px}.scene-cart .target-name{font-size:10px}.action-panel{min-height:0;padding:10px;gap:8px;align-self:stretch}.action-heading{font-size:8px;gap:6px;padding-bottom:5px}.operation-number{padding:3px}.action-status{font-size:13px;min-height:31px}.timing-label{font-size:10px;margin-bottom:6px;min-height:26px}.timing-scale{height:29px}.timing-marker{height:37px}.timing-band span{font-size:7px}.timing-key{font-size:7px;margin-top:5px}.refill-button{min-height:50px;font-size:18px}.roll-cost{font-size:8px;line-height:1.35}.game-footer{display:none;font-size:8px;min-height:22px}.game-footer p{margin:5px 0}.game-footer a{min-height:22px}.gag{font-size:10px;padding:7px 9px}.overlay{padding:10px}.dialog{max-height:calc(100svh - 20px);width:470px;padding:15px 22px;display:grid;grid-template-columns:1fr 1fr;column-gap:18px;align-items:start}.ticket-header{grid-column:1/-1;padding-bottom:8px;margin-bottom:9px}.dialog-icon{grid-column:1;grid-row:2}.dialog-icon img{width:35px;height:35px}.dialog-icon>span{font-size:24px}.dialog h2{grid-column:1;grid-row:3;font-size:21px;margin:9px 0}.dialog>p#dialog-description{grid-column:1;grid-row:4;font-size:11px;margin:0 0 6px}.instructions{grid-column:2;grid-row:2/5;gap:10px;margin:0}.instructions li{font-size:11px;padding-left:25px}.instructions li:before{width:20px;height:20px}.dialog .best-record{grid-column:1/-1;font-size:10px;margin:9px 0}.dialog .load-status{grid-column:1/-1;margin:5px 0;font-size:11px}.dialog-actions{grid-column:1/-1}.primary-button{min-height:48px;font-size:14px}.dialog .privacy-hint{grid-column:1/-1;font-size:8px;margin:10px 0 0}.results{grid-column:2;grid-row:2/5;margin:0;padding:6px 0}.results strong{font-size:22px}.results>p{font-size:10px;margin:5px 0 0}}
@media(orientation:portrait),(max-width:600px) and (min-height:541px){.game-shell{padding:0 12px 10px}.page-header{gap:10px;min-height:64px;position:relative;padding:10px 0}.brand-link img{width:32px;height:32px}.game-heading h1{font-size:19px}.game-heading p{font-size:10px;margin-top:5px}.page-header>.fiction-badge{display:none}.shift-board{grid-template-columns:1.1fr 1fr 1.15fr;min-height:0;border-radius:7px}.hud-stat{padding:6px 12px;min-height:48px}.hud-stat strong{font-size:22px}.hud-label{font-size:9px}.combo-stat,.secondary-stat{min-height:40px;border-top:1px solid var(--line);padding:5px 12px}.combo-stat strong,.secondary-stat strong{font-size:17px}.utility-controls{grid-column:1/-1;border-top:1px solid var(--line);padding:6px;justify-content:flex-end}.utility-button{min-height:44px;padding:8px 14px;font-size:11px}.inventory-stat{padding-right:35px}.inventory-stat img{width:27px;height:27px;right:8px;bottom:16px}.play-area{grid-template-columns:minmax(0,1fr);gap:10px;margin-top:10px}.scene-section{grid-row:1}.scene-frame{aspect-ratio:16/9}.scene-targets{display:none}.scene-topline{min-height:21px;font-size:8px}.scene-bottomline{min-height:22px;font-size:8px;line-height:1.3}.target-navigation{display:grid;grid-template-columns:1fr 1fr;gap:8px;grid-row:2}.nav-target{position:relative;min-height:62px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;padding:9px 33px 9px 12px;border:1px solid #91b2ae85;background:#214b56;border-radius:6px}.nav-target .target-name{font-size:16px}.nav-target .target-state{font-size:10px}.nav-target .target-time{position:absolute;right:8px;bottom:9px;font-size:13px}.nav-target kbd{position:absolute;right:8px;top:8px;font-size:8px}.cart-target{background:#344f48;border-color:#d2c69080}.action-panel{grid-row:3;min-height:0;padding:13px 14px;gap:10px;display:grid;grid-template-columns:minmax(0,1fr) 108px;align-items:center}.action-heading{grid-column:1/-1;padding-bottom:7px;font-size:8px}.action-status{grid-column:1;grid-row:2;min-height:0;font-size:15px;line-height:1.35}.timing-panel{grid-column:1;grid-row:3}.timing-label{font-size:10px;min-height:0;margin-bottom:8px}.timing-scale{height:30px}.timing-marker{height:38px}.timing-key{font-size:7px}.refill-button{grid-column:2;grid-row:2/4;align-self:stretch;min-height:64px;margin:0;font-size:17px}.roll-cost{grid-column:1/-1;font-size:9px;max-width:none}.game-footer{align-items:flex-start;font-size:9px;gap:10px;line-height:1.4}.keyboard-help{display:none}.touch-help{display:block}.game-footer a{white-space:nowrap}.dialog{padding:23px 23px;max-height:calc(100svh - 28px)}.overlay{padding:14px;position:fixed}.dialog h2{font-size:25px}.dialog>p{font-size:12px}.instructions li{font-size:12px}.gag{font-size:10px;padding:6px 9px;bottom:23%}.countdown{font-size:78px}}
@media(max-width:350px) and (orientation:portrait){.game-heading h1{font-size:17px}.game-heading p{font-size:9px}.game-shell{padding-inline:8px}.hud-stat{padding-inline:9px}.action-panel{grid-template-columns:minmax(0,1fr) 90px;padding-inline:10px}.nav-target .target-name{font-size:14px}.nav-target .target-state{font-size:9px}.dialog{padding:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.refill-button:active:enabled{transform:none}}

.timing-panel.in-band .timing-scale{box-shadow:0 0 0 2px #31796555}.timing-panel:not(.active) .timing-scale{opacity:.45}.inventory-stat.empty strong{color:var(--coral)}#result-message{font-weight:700}.target-button:disabled{cursor:default}.target-button:disabled:hover{filter:none}

/* Dialogue stays outside the playfield: readable on phones, never over controls. */
.banter{min-height:100px;padding:12px 16px;background:#fff0cb;color:#173f4b;border-top:3px solid #173f4b;border-left:6px solid #edbf4f;display:grid;gap:4px;align-content:center}
.banter-speaker{font-size:9px;letter-spacing:.1em;font-weight:900;color:#775822}
.banter-line,.banter-reply{margin:0;line-height:1.35}
.banter-line{font-size:clamp(13px,1.2vw,16px);font-weight:850}
.banter-reply{font-size:clamp(11px,1vw,13px);color:#3e6167}
.banter[data-kind=complaint],.banter[data-kind=urgent]{border-left-color:#be4635;background:#ffdec6}
.banter[data-kind=success],.banter[data-kind=enough]{border-left-color:#36806a}
.passenger-bubbles{position:absolute;inset:0;pointer-events:none}
.passenger-bubble{position:absolute;top:19%;transform:translateX(-50%);width:max-content;max-width:28%;padding:5px 8px;border:2px solid #173f4b;border-radius:9px;background:#fff3d5;color:#173f4b;font-size:clamp(10px,1.05vw,14px);font-weight:950;line-height:1.05;text-align:center;box-shadow:2px 3px 0 #173f4b66}
.passenger-bubble:after{content:"";position:absolute;left:56%;bottom:-8px;width:10px;height:10px;background:inherit;border-right:2px solid #173f4b;border-bottom:2px solid #173f4b;transform:skewY(30deg)}
#bubble-wc1{left:20%}#bubble-wc2{left:50%}#bubble-wc3{left:80%}
.passenger-bubble[data-kind=urgent],.passenger-bubble[data-kind=complaint]{background:#ffbc9d;color:#652c22}
.passenger-bubble[data-kind=success],.passenger-bubble[data-kind=enough]{background:#c8ead1}
@media(orientation:portrait),(max-width:600px) and (min-height:541px){
  .banter{min-height:98px;padding:9px 10px;gap:4px;border-left-width:5px}
  .banter-speaker{font-size:8px}.banter-line{font-size:13px}.banter-reply{font-size:11px}
  .passenger-bubble{top:5%;padding:4px 5px;font-size:10px;border-width:1.5px}
  .target-navigation{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
  .nav-target{min-height:65px;padding:7px 4px;align-items:center;text-align:center;gap:4px}
  .nav-target .target-name{font-size:13px}.nav-target .target-state{font-size:9px}
  .nav-target .target-time{position:static;font-size:11px}.nav-target kbd{display:none}
  .scene-section{width:100%}.scene-bottomline{font-size:8px;letter-spacing:0}
}
@media(orientation:landscape) and (max-height:540px){
  .scene-section{width:min(100%,calc((100svh - 214px)*16/9))}
  .banter{min-height:72px;padding:5px 8px;gap:2px;border-left-width:4px}
  .banter-speaker{font-size:7px}.banter-line{font-size:11px}.banter-reply{font-size:10px}
  .passenger-bubble{top:23%;padding:3px 5px;font-size:9px}
}

