:root{--bg: #F5F1E5;--corridor: #FFF0D2;--ground: #B9B1A3;--obstacle: #535C55;--exit: #387A5B;--rail: #466C77;--redLine: #AB4640;--blueLine: #326E98;--hsr: #AD641C;--airport: #795285;--warning: #F0BE38;--anger: #B73632;--ink: #293739;--paper: #F5F1E5;--gridDot: #A49D91;--wall: #535C55;--tileSeam: #E4D3AE;--pile: #626D68;--pipe: #7294A2;--brick: #B27B69;--water: #B6D4DB;--column: #EEE6D5;--track: #516675;--shopNews: #42617C;--shopFood: #B9644F;--shopMarket: #527959;--shopMachine: #B65953;--shopTea: #99734C;--riderExit: #536778;--riderEnter: #38564B;--riderTransfer: #95783C;--riderShopping: #8A708D;--fixtureWood: #A78362;--fixtureDisplay: #4C695F;--fixtureCharge: #668491;--font-ui: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--font-sign: "jf-openhuninn", var(--font-ui);--fs-main: 16px;--fs-sub: 14px;--fs-big: 20px;--fs-title: 30px;--radius: 4px;--touch: 48px;--floorbar: 56px}@font-face{font-family:Noto Sans TC;src:url(/fonts/noto-500.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Noto Sans TC;src:url(/fonts/noto-700.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:jf-openhuninn;src:url(/fonts/huninn-400.woff2) format("woff2");font-weight:400;font-display:swap}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-weight:500;font-size:var(--fs-main);overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--warning);outline-offset:1px}[hidden]{display:none!important}#app{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:minmax(0,1fr) calc(var(--floorbar) + env(safe-area-inset-right));grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top top" "stage side" "tools tools"}#app.choosing{grid-template-columns:minmax(0,1fr) calc(224px + env(safe-area-inset-right))}#app.choosing .tools,#app.choosing .side{display:none}.top{grid-area:top;display:flex;align-items:center;gap:8px;min-height:48px;padding:0 max(8px,env(safe-area-inset-right)) 0 max(8px,env(safe-area-inset-left));padding-top:env(safe-area-inset-top);background:var(--paper);border-bottom:2px solid var(--ink);position:relative;z-index:3}.grow{flex:1}.btn{min-width:var(--touch);height:40px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:4px;border:2px solid var(--ink);border-radius:var(--radius);background:var(--paper);font-weight:700;font-size:var(--fs-main)}.btn[aria-pressed=true]{background:var(--warning)}.year{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-height:var(--touch);justify-content:center;padding:0 6px;border:0;background:none}.year-num{font-size:var(--fs-sub);font-weight:700;white-space:nowrap}.year-num b{font-size:var(--fs-big);font-variant-numeric:tabular-nums}.year-prog{display:block;height:4px;width:72px;background:color-mix(in srgb,var(--ink) 15%,transparent)}.year-prog i{display:block;height:100%;width:0;background:var(--ink)}.notice{font-size:var(--fs-sub);font-weight:700;padding:2px 8px;border:2px solid var(--ink);border-radius:var(--radius);background:var(--warning);white-space:nowrap}.anger{display:flex;align-items:center;gap:6px;white-space:nowrap}.anger-lbl{font-size:var(--fs-sub)}.anger-num{font-size:var(--fs-big);font-variant-numeric:tabular-nums;min-width:3.2ch;text-align:right}.anger-meter{display:block;width:min(140px,18vw);height:8px;border:1.5px solid var(--ink);background:var(--paper);background-size:100% 3px;background-repeat:no-repeat;background-position:bottom}.anger-meter i{display:block;height:100%;width:0;background:var(--anger);transition:width .3s}.anger[data-level=high] .anger-meter{height:12px;border-width:2.5px}.anger[data-level=high] .anger-num{color:var(--anger)}.stage{grid-area:stage;position:relative;overflow:hidden;min-height:0}#cv{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}.toast,.preview{position:absolute;left:50%;transform:translate(-50%);bottom:10px;max-width:calc(100% - 24px);padding:6px 12px;font-size:var(--fs-sub);font-weight:700;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast{bottom:58px}.preview{bottom:100px}.preview.strong{background:var(--warning)}.year-pop{position:absolute;left:max(8px,env(safe-area-inset-left));top:6px;padding:8px 12px;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);font-size:var(--fs-sub);display:grid;gap:4px;z-index:2}.pop-row{display:flex;gap:10px}.pop-k{font-weight:700;min-width:5em}.pop-row.strong{font-weight:700}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay>*{pointer-events:auto}.cta{min-height:var(--touch);padding:0 24px;font-size:var(--fs-big);font-weight:700;background:var(--warning);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:3px 3px 0 var(--ink)}.cta:disabled{background:var(--paper);color:color-mix(in srgb,var(--ink) 45%,transparent);box-shadow:none}.card{background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);padding:16px 20px;min-width:260px}.card h2{margin:0;font-size:var(--fs-title)}.card p{margin:4px 0 12px;font-size:var(--fs-sub)}.card dl{display:grid;grid-template-columns:auto auto;gap:4px 16px;margin:0 0 14px}.card dt{font-size:var(--fs-sub)}.card dd{margin:0;font-weight:700;text-align:right}.side{grid-area:side;background:var(--paper);border-left:2px solid var(--ink);padding-right:env(safe-area-inset-right);display:flex;flex-direction:column;justify-content:center;z-index:2}.floors{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 0}.floor{position:relative;width:var(--touch);height:var(--touch);border:2px solid var(--ink);border-radius:var(--radius);background:var(--paper);font-weight:700;font-size:var(--fs-main);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0}.floor[aria-pressed=true]{background:var(--ink);color:var(--paper)}.floor:disabled{border-style:dashed;color:color-mix(in srgb,var(--ink) 40%,transparent)}.floor-warn{position:absolute;top:-8px;right:-8px;display:flex;align-items:center;gap:1px;padding:1px 4px 1px 2px;background:var(--warning);color:var(--anger);border:1.5px solid var(--ink);border-radius:var(--radius);font-size:12px;line-height:1}.floor-warn b{color:var(--ink)}.floor.compare{margin-top:6px;font-size:12px;gap:0}.floor.compare svg{width:20px;height:20px}.tools{grid-area:tools;display:flex;justify-content:center;gap:6px;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));background:var(--paper);border-top:2px solid var(--ink);z-index:3}.tool{position:relative;flex:0 1 auto;min-width:var(--touch);min-height:var(--touch);padding:0 12px 0 14px;display:flex;align-items:center;gap:6px;background:var(--paper);border:2px solid var(--ink);border-left-style:dashed;border-radius:var(--radius);font-weight:700;font-size:var(--fs-main)}.tool[aria-pressed=true]{background:var(--warning);box-shadow:inset 0 0 0 2px var(--ink)}.tool-n{font-variant-numeric:tabular-nums;min-width:1.4ch}.tool.empty:after{content:"";position:absolute;right:4px;bottom:4px;left:4px;border-top:3px solid var(--anger);transform:rotate(-25deg);top:50%;pointer-events:none}.gain{position:absolute;left:50%;top:-6px;transform:translate(-50%,-100%);padding:1px 6px;font-size:var(--fs-sub);font-weight:700;background:var(--warning);border:1.5px solid var(--ink);border-radius:var(--radius);pointer-events:none;animation:gain 1.8s ease-out forwards}@keyframes gain{0%{opacity:0;transform:translate(-50%,-60%)}12%{opacity:1;transform:translate(-50%,-100%)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-140%)}}.side-panel{grid-area:side;background:var(--paper);border-left:2px solid var(--ink);padding:10px max(10px,env(safe-area-inset-right)) 10px 10px;display:flex;flex-direction:column;gap:8px;overflow:auto;z-index:2}.side-panel h2{margin:0;font-size:var(--fs-big)}.opt{text-align:left;display:grid;gap:1px;padding:6px 10px;border:2px solid var(--ink);border-radius:var(--radius);background:var(--paper);font-size:var(--fs-sub)}.opt b{font-size:var(--fs-main)}.opt[aria-pressed=true]{background:var(--warning)}@media (max-height: 400px){.top{min-height:44px}.btn{height:36px}}@media (max-width: 700px){.tool{flex:1 1 0;flex-direction:column;gap:0;padding:4px 2px;justify-content:center}.tool-name{font-size:13px}.tool-n{position:absolute;top:2px;right:4px;font-size:13px}.tools{gap:4px}.anger-meter,.notice,.btn span{display:none}}.overlay.at-bottom{align-items:flex-end;padding-bottom:12px}.minimap{position:absolute;left:max(8px,env(safe-area-inset-left));bottom:8px;border:2px solid var(--ink);border-radius:var(--radius);touch-action:none;cursor:pointer}.zoom{position:absolute;right:8px;bottom:8px;display:flex;gap:6px}.zoom .btn{width:var(--touch);height:var(--touch);padding:0;font-size:var(--fs-big)}.overview-tag{position:absolute;top:8px;left:50%;transform:translate(-50%);padding:4px 10px;font-size:var(--fs-sub);font-weight:700;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);pointer-events:none}@media (max-width: 700px){.minimap{width:90px!important;height:51px!important}}.magnifier{position:absolute;left:0;top:0;width:72px;height:72px;border-radius:50%;border:3px solid var(--ink);box-shadow:0 0 0 2px var(--paper);pointer-events:none;z-index:4}.choose-head{display:grid;gap:0}.choose-year{font-size:var(--fs-sub);font-weight:700}.choose-state{font-size:13px}.opt b{display:flex;justify-content:space-between;align-items:baseline}.opt b small{font-size:13px}.opt-cost.bad{color:var(--anger);font-weight:700}#app.choosing .zoom,#app.choosing .minimap{display:none}.side-panel{gap:6px;padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}.side-panel h2{font-size:var(--fs-main);line-height:1.3}.side-panel .opt{padding:4px 10px;line-height:1.3}.side-panel .cta{font-size:var(--fs-main);margin-top:auto;flex-shrink:0}.coach{position:absolute;bottom:10px;left:50%;transform:translate(-50%);padding:8px 16px;font-size:var(--fs-main);font-weight:700;background:var(--warning);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:3px 3px 0 var(--ink);pointer-events:none;white-space:nowrap;z-index:5}.coach-ring{outline:3px solid var(--warning)!important;outline-offset:2px;animation:ring 1s ease-in-out infinite alternate}@keyframes ring{0%{outline-color:var(--warning)}to{outline-color:var(--ink)}}.anger.emph .anger-meter{height:14px;border-width:3px}#speedBtn{flex-direction:column;gap:0;line-height:1}#speedBtn small{font-size:11px;font-weight:700}#speedBtn.auto{border-style:dashed}#app.result{grid-template-columns:minmax(0,1fr) calc(224px + env(safe-area-inset-right))}#app.result .tools,#app.result .side,#app.result .zoom,#app.result .minimap,#app.result .toast,#app.result .preview,#app.result .coach{display:none!important}#app.result .top>:not(.result-head){display:none}.result-head{display:flex;align-items:center;gap:12px;min-height:48px}.result-head h1{margin:0;font-size:var(--fs-title);line-height:1.1}.result-sub{font-size:var(--fs-sub);font-weight:700}.stamp{display:inline-block;padding:2px 10px;font-size:var(--fs-main);font-weight:700;border:3px solid currentColor;border-radius:var(--radius);transform:rotate(-6deg)}.stamp.ok{color:var(--exit)}.stamp.stop{color:var(--anger)}.result-tabs{position:absolute;top:8px;left:max(8px,env(safe-area-inset-left));display:flex;gap:6px}.result-tabs .btn{min-width:var(--touch);height:36px}.stats{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:4px 0 0}.stats dt{font-size:var(--fs-sub);align-self:center}.stats dd{margin:0;font-size:var(--fs-big);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.rotate-prompt{display:none}.top{padding-top:0}#app{left:env(safe-area-inset-left)}@media (orientation: portrait){#app{visibility:hidden;pointer-events:none}.rotate-prompt{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);z-index:100}}:root{--floorbar: 48px}.top{height:32px;min-height:32px;gap:6px}.top .btn{min-height:28px;height:28px;min-width:32px;padding:0 6px}#pauseBtn{background:var(--paper)}#pauseBtn span{display:none}.tools{height:50px;padding:0 8px;gap:8px}.tool{height:48px;min-height:48px;padding:0 10px}.tool-name{display:none}.undo-build{min-height:42px;white-space:nowrap}.demolition-menu{position:absolute;z-index:8;display:grid;gap:4px;padding:5px;background:var(--paper);border:1px solid var(--ink)}.demolition-menu[hidden],.undo-build[hidden]{display:none}.minimap{bottom:30px}.minimap.collapsed{display:none}.minimap-toggle{position:absolute;left:8px;bottom:2px;width:32px;height:26px;background:var(--paper);border:1px solid var(--ink)}#app.result .minimap-toggle,#app.choosing .minimap-toggle{display:none}.top{height:28px;min-height:28px}.coach{top:8px;bottom:auto}.tool-tour{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9;display:flex;justify-content:flex-end;align-items:center;padding:8px}.tour-sheet{width:250px;border:2px solid var(--ink);background:var(--paper);padding:10px;display:grid;gap:5px}.tour-skip{position:absolute;right:8px;top:4px;z-index:1;background:var(--paper);border:1px solid var(--ink);padding:4px 12px}.tour-active{outline:3px solid var(--warning)}.tour-active .tool-name{display:block;position:absolute;bottom:52px;left:0;padding:3px;background:var(--paper);white-space:nowrap}.tour-demo{position:relative;height:100px;background:var(--ground);overflow:hidden}.demo-hall{position:absolute;left:10px;top:38px;width:200px;height:28px;background:var(--corridor)}.demo-branch{position:absolute;left:100px;top:10px;width:28px;height:55px;background:var(--corridor)}.demo-item{position:absolute;left:99px;top:34px;width:30px;height:30px;background:var(--paper)}.demo-item svg{width:26px;height:26px}.demo-person{position:absolute;top:45px;left:20px;width:7px;height:14px;border-radius:3px;background:var(--ink);animation:demo-walk 3.3s linear infinite}.demo-finger{position:absolute;top:47px;left:30px;width:14px;height:22px;border:2px solid var(--ink);border-radius:8px;background:var(--paper);animation:demo-drag 3.3s infinite}[data-demo=dig] .demo-hall{transform-origin:left;animation:demo-dig 3.3s infinite}[data-demo=fill] .demo-hall{transform-origin:left;animation:demo-dig 3.3s reverse infinite}[data-demo=move]{animation:demo-pan 3.3s infinite}[data-demo=sign] .demo-person{animation-name:demo-lost}[data-demo=sign] .demo-item{border-top:3px dashed var(--warning);animation:demo-tape 3.3s infinite}[data-demo=esc] .demo-person{animation-name:demo-escalator}[data-demo=exit] .demo-item{left:190px;color:var(--exit)}@keyframes demo-walk{to{left:205px}}@keyframes demo-drag{to{left:190px}}@keyframes demo-dig{0%{transform:scaleX(.1)}to{transform:scaleX(1)}}@keyframes demo-pan{50%{transform:translate(-8px)}}@keyframes demo-lost{0%{left:20px;top:45px}25%{left:110px;top:45px}40%{left:110px;top:12px}60%{left:110px;top:45px}to{left:205px;top:45px}}@keyframes demo-tape{0%,40%{opacity:0;transform:rotate(-2deg) scale(1.1)}45%,to{opacity:1;transform:rotate(0) scale(1)}}@keyframes demo-escalator{0%{left:20px}45%{left:110px;transform:scale(1)}55%{left:110px;transform:scale(0)}65%{left:150px;transform:scale(0)}to{left:205px;transform:scale(1)}}.year-num.spring:after{content:attr(data-event);font-size:12px;margin-left:6px;padding:1px 3px;background:var(--redLine);color:var(--corridor)}.achievement{display:grid;gap:4px}.achievement small{font-size:12px}#app.result .side-panel{gap:8px;min-height:0;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) 8px;overflow:hidden}.result-summary{display:flex;flex:1;flex-direction:column;gap:8px;min-height:0;overflow-y:auto}.result-summary>*{flex-shrink:0}#app.result .again{flex-shrink:0;min-height:44px}.result-details summary{cursor:pointer;font-weight:700;padding:6px 0}.result-details .shop-prosperity{margin-top:6px}.failure-cause{margin:0;font-size:14px}#app.result .stats{margin:0;gap:6px}.stamp{animation:stamp-once .22s ease-out both}@keyframes stamp-once{0%{transform:rotate(-7deg) scale(1.5);opacity:0}to{transform:rotate(-7deg) scale(1);opacity:1}}.problem-links{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.problem-link{position:absolute;left:0;top:0;pointer-events:auto}.problem-link.prominent{min-height:26px;padding:2px 6px;white-space:nowrap;background:var(--paper);color:var(--anger);border:1px solid var(--anger);font-size:13px;font-weight:700;z-index:1}.problem-link.quiet{width:7px;height:7px;padding:0;border:1px solid var(--ink);border-radius:50%;background:var(--paper);opacity:.65}.problem-panel{position:absolute;left:8px;top:8px;z-index:8;padding:4px;display:grid;gap:3px;background:var(--paper);border:2px solid var(--ink)}.problem-panel:not([hidden]){max-height:calc(100% - 16px);overflow:auto}.stage:has(.problem-panel:not([hidden])) .warning-banner,.stage:has(.problem-panel:not([hidden])) .coach{visibility:hidden}.problem-row{display:flex;align-items:stretch;gap:4px}.problem-row .btn:first-child{flex:1;justify-content:flex-start}.problem-panel .btn{min-height:36px;height:auto;font-size:14px}.detour-detail{font-size:12px!important}.top .notice{padding:0;background:none;border:0;color:var(--ink);opacity:.75;font-size:12px;overflow:hidden;text-overflow:ellipsis}.top .problem-button{font-size:13px;white-space:nowrap}.problem-button[data-clear=true]{color:var(--exit);border-color:var(--exit)}.game-controls{display:flex;gap:4px;align-items:center;margin-left:auto;order:2}.game-controls .btn{min-width:34px;padding:0 4px}.game-controls .year{min-height:36px}.game-controls .year-prog{width:50px}.live-underground{align-self:center;white-space:nowrap;font-size:11px}.difficulty-options{display:flex;gap:3px;margin:0;border:1px solid var(--wall);padding:2px 4px 4px;background:var(--paper)}.difficulty-options legend{margin-left:4px;padding:0 4px;background:var(--paper);font-size:12px}.difficulty-options label{position:relative}.difficulty-options input{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;width:100%;height:100%;cursor:pointer}.difficulty-options span{display:block;padding:4px 8px;border:1px solid var(--wall);font-size:13px;font-weight:700}.difficulty-options input:checked+span{background:var(--warning)}.difficulty-options input:focus-visible+span{outline:2px solid var(--ink);outline-offset:1px}.live-underground b{display:block;font-size:13px;text-align:center}.result-metric{margin:0;padding:4px 8px;border-left:3px solid var(--exit);display:grid;line-height:1.12;font-size:14px}.result-metric strong{color:var(--exit);font-size:clamp(32px,9vh,46px);font-variant-numeric:tabular-nums}.shop-prosperity{margin:0;padding:4px 0;border-top:1px solid var(--wall);font-size:12px}.year-pop{top:auto;bottom:8px;left:auto;right:8px}.floor-warn{position:static;padding:0;gap:0;border:0;flex-direction:column;font-size:11px;line-height:1.1;color:var(--ink);background:var(--warning);width:100%}.floor-warn[data-severity=high]{background:var(--anger);color:var(--paper)}.floor-warn b{color:inherit}.floor-warn small{font-size:10px}.tool.ranked-tool{box-shadow:inset 0 -3px var(--anger)}@media (max-width: 700px){.tools{gap:4px}.tool{min-width:36px;padding:0 5px;gap:3px}.game-controls .btn{min-width:26px}.undo-build{font-size:12px;padding:0 3px}}.warning-banner{position:absolute;top:4px;left:50%;transform:translate(-50%);z-index:7;max-width:94%;width:max-content;min-height:28px;padding:2px 8px;background:var(--paper);border:1px solid var(--anger);color:var(--anger);font-size:13px;font-weight:700}#app.diagnosing .problem-links,#app.diagnosing .minimap,#app.diagnosing .toast{visibility:hidden}#app.diagnosing .stage,#app.diagnosing .side{pointer-events:none}.obstacle-samples{display:flex;justify-content:space-around;align-items:center;height:100%;font-size:12px}.obstacle-samples span{display:grid;gap:5px;justify-items:center}.obstacle-samples i{width:23px;height:23px;display:block;border:2px solid var(--ink)}.obstacle-samples .pile{border-radius:50%;background:var(--pile);box-shadow:inset 0 0 0 3px var(--column)}.obstacle-samples .pipe{background:var(--pipe);height:12px;margin:6px 0 5px;border-width:2px 5px}.obstacle-samples .heritage{background:var(--brick);border-style:double}.obstacle-samples .water{background:var(--water);border-radius:50% 30%}.obstacle-samples .column{background:var(--column);box-shadow:2px 3px var(--wall)}#app.result .problem-links,#app.result .problem-panel{display:none}.settings-panel{position:absolute;right:8px;top:8px;z-index:12;display:grid;padding:6px;gap:4px;background:var(--paper);border:2px solid var(--ink)}.coach,.tour-sheet b{font-family:var(--font-sign);font-weight:400}.passenger-samples{display:flex;justify-content:space-around;padding-top:16px}.passenger-samples span{display:grid;gap:12px;justify-items:center;color:var(--ink)}.sample{display:block;position:relative;width:10px;height:20px;background:var(--ink);border-radius:5px 5px 0 0}.sample:after{content:"";position:absolute}.sample:after{top:-15px;left:0;font:700 12px var(--font-ui);color:var(--ink)}.sample.exit{background:var(--riderExit)}.sample.enter{background:var(--riderEnter)}.sample.transfer{background:var(--riderTransfer)}.sample.shopping{background:var(--riderShopping)}.sample.exit:after{content:"↗︎"}.sample.enter:after{content:"↙"}.sample.transfer:after{content:"⇄"}.sample.shopping:after{width:8px;height:7px;top:-9px;left:1px;background:var(--riderShopping)}.sample.shopping:before{content:"";position:absolute;width:4px;height:4px;border:1px solid var(--riderShopping);border-radius:4px;top:-12px;left:3px}button.achievement{background:var(--paper);border:0;text-align:left;padding:0}.share-card{min-height:38px;flex-shrink:0}.start-intro{display:grid;justify-items:center;gap:4px}.start-date{background:var(--paper);color:var(--ink);font-size:12px;padding:2px 6px}.tour-progress{display:flex;align-items:center;justify-content:space-between;gap:8px}.tour-next{min-height:36px}.passenger-samples .sample{animation:demo-passenger-bob 2s ease-in-out infinite}.passenger-samples span:nth-child(2n) .sample{animation-delay:-.8s}@keyframes demo-passenger-bob{50%{transform:translateY(4px)}}.tools{height:60px;align-items:center}.tool{height:56px;min-height:56px;flex-direction:column;justify-content:center;gap:1px;padding:2px 14px 2px 10px}.tool svg{width:22px;height:22px}.tool-name{display:block;font-size:11px;font-weight:500;line-height:1.1;white-space:nowrap}.tool[aria-pressed=true] .tool-name{font-weight:700}.tool-n{position:absolute;top:2px;right:3px;font-size:12px;line-height:1}.tour-active .tool-name{position:static;padding:0;background:none}.tool-help{position:fixed;z-index:50;padding:6px 10px;font-size:var(--fs-sub);font-weight:700;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);pointer-events:none}@media (max-width: 700px){.tool{padding:2px 4px}}.esc-mode{display:grid;grid-template-columns:auto repeat(3,auto);gap:4px;align-items:center;font-size:13px;font-weight:700}.esc-mode .btn{display:grid;justify-items:center;gap:0;height:auto;min-height:44px;padding:2px 6px;font-size:12px;font-weight:500}.esc-mode .btn[aria-pressed=true]{background:var(--warning);font-weight:700}.esc-arrows{font-size:16px;font-weight:700;line-height:1.1}.walk-title{font-size:13px;font-weight:700;padding:0 2px 2px;max-width:320px}.esc-mode:has(>.btn:first-child){grid-template-columns:repeat(3,auto)}.broadcast-dirs{display:grid;grid-template-columns:repeat(4,auto);gap:4px}.broadcast-dirs .btn{min-height:44px;font-size:13px}[data-demo=staff] .demo-item{color:var(--ink);background:var(--warning)}[data-demo=broadcast] .demo-person{animation-name:demo-redirect}[data-demo=broadcast] .demo-item{background:var(--warning)}@keyframes demo-redirect{0%{left:20px;top:45px}40%{left:110px;top:45px}to{left:110px;top:6px}}#app.result .top{height:49px;min-height:49px}.result-head .director-portrait{width:34px;height:44px;object-fit:contain}.result-head h1{font-size:clamp(15px,2.7vw,24px)}.result-head h1 small{font-size:.65em}.result-head .result-sub{font-size:clamp(10px,2vw,14px)}.result-share{display:grid;gap:5px}.share-actions{display:flex;align-items:center;flex-wrap:wrap;gap:4px 7px}.share-actions button{padding:4px 9px;min-height:38px}.share-sign{display:flex;align-items:center;min-height:38px;gap:3px;font-size:12px}.share-sign input{accent-color:var(--rail)}.share-name{display:grid;padding:8px;gap:8px;background:var(--paper);border:1px solid var(--wall);font-size:12px}.share-name input{display:block;width:100%;margin-top:4px;min-height:34px;font:500 16px var(--font-ui)}.share-name>div{display:flex;gap:5px}.share-name .cta,.share-name .btn{flex:1;min-height:38px;padding:4px;font-size:13px}.audio-sliders{display:grid;gap:5px;min-width:168px}.audio-sliders label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px;font-size:13px}.audio-sliders input{min-width:0;width:100%;accent-color:var(--exit)}.sound-lab{grid-column:1 / -1;grid-row:1 / -1;display:flex;gap:8px;align-content:flex-start;flex-wrap:wrap;padding:16px;overflow:auto}.sound-lab h1{width:100%;margin:0;font-size:20px}#app:has(.sound-lab){visibility:visible;pointer-events:auto;z-index:101}.pause-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:20;width:min(300px,calc(100% - 24px));max-height:calc(100% - 16px);overflow:auto;display:grid;gap:8px;padding:12px 14px;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:4px 4px 0 var(--ink)}.pause-title{display:flex;align-items:center;gap:6px;font-size:var(--fs-big)}.pause-actions{display:grid;gap:6px}.pause-actions .btn,.pause-actions .cta{min-height:44px;width:100%;font-size:var(--fs-main)}.pause-confirm{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px;border:2px dashed var(--anger);font-size:var(--fs-sub);font-weight:700}.pause-confirm span{grid-column:1 / -1}.pause-confirm .btn{min-height:40px}.pause-confirm .danger{background:var(--anger);color:var(--paper)}.pause-sound{display:grid;gap:6px;padding-top:6px;border-top:1px solid var(--wall);font-size:var(--fs-sub)}.pause-card[hidden]{display:none}@media (min-width: 560px){.pause-card{width:min(520px,calc(100% - 24px));grid-template-columns:1fr 1fr;column-gap:14px}.pause-title{grid-column:1 / -1}.pause-sound{grid-column:2;grid-row:2 / span 2;border-top:0;border-left:1px solid var(--wall);padding:0 0 0 12px;align-content:start}.pause-confirm{grid-column:1}}#app.challenge-mode #yearBtn,#app.challenge-mode .live-underground,#app.challenge-mode .notice{display:none}.challenge-clock{margin-left:auto;padding:2px 10px;font-size:var(--fs-big);font-weight:700;font-variant-numeric:tabular-nums;border:2px solid var(--ink);border-radius:var(--radius);background:var(--paper)}.challenge-clock[data-phase=before]{background:var(--warning)}.challenge-clock[data-phase=after]{background:var(--ink);color:var(--paper)}.challenge-clock[hidden]{display:none}.midnight-flip{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);z-index:15;display:grid;justify-items:center;gap:4px;padding:14px 28px;background:var(--ink);color:var(--paper);border:3px solid var(--warning);border-radius:var(--radius);pointer-events:none;animation:midnight 3.2s ease-out forwards}.midnight-flip b{font-size:40px;line-height:1}.midnight-flip span{display:flex;align-items:center;gap:8px;font-size:var(--fs-big);font-weight:700}.midnight-flip svg{width:56px;height:28px;fill:none;stroke:var(--warning);stroke-width:4}@keyframes midnight{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}20%{transform:translate(-50%,-50%) scale(1)}85%{opacity:1}to{opacity:0}}.challenge-result{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:18;width:min(420px,calc(100% - 24px));max-height:calc(100% - 12px);overflow:auto;display:grid;gap:8px;padding:12px 16px;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:4px 4px 0 var(--ink)}.challenge-result small{font-size:var(--fs-sub);font-weight:700;color:var(--rail)}.challenge-stars{display:flex;gap:6px}.challenge-stars svg{width:40px;height:40px;fill:none;stroke:var(--wall);stroke-width:1.6;stroke-linejoin:round}.challenge-stars svg.on{fill:var(--warning);stroke:var(--ink);animation:star-pop .4s ease-out backwards}.challenge-stars svg.on:nth-child(2){animation-delay:.15s}.challenge-stars svg.on:nth-child(3){animation-delay:.3s}@keyframes star-pop{0%{transform:scale(0)}70%{transform:scale(1.2)}to{transform:scale(1)}}.challenge-head{font-size:var(--fs-big);line-height:1.35}.challenge-metric{display:flex;justify-content:space-between;align-items:baseline;margin:0}.challenge-metric strong{font-size:32px;color:var(--exit);font-variant-numeric:tabular-nums}.challenge-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.challenge-actions .btn,.challenge-actions .cta{min-height:44px}[data-demo=ticket] .demo-branch{display:none}[data-demo=ticket] .demo-item{left:100px;top:6px;width:30px;height:30px;border:2px dashed var(--exit);background:color-mix(in srgb,var(--exit) 15%,transparent);color:var(--exit);animation:demo-booth 4s infinite}[data-demo=ticket] .demo-finger{top:14px;animation:demo-tap-booth 4s infinite}[data-demo=ticket] .demo-person{animation:demo-buy 4s linear infinite}@keyframes demo-booth{0%,28%{border-style:dashed;background:color-mix(in srgb,var(--exit) 15%,transparent);color:var(--exit)}32%,to{border-style:solid;border-color:var(--ink);background:var(--paper);color:var(--ink)}}@keyframes demo-tap-booth{0%{left:30px;opacity:1;transform:scale(1)}25%{left:108px;transform:scale(1)}29%{left:108px;transform:scale(.8)}34%{left:108px;transform:scale(1);opacity:1}40%,to{left:108px;opacity:0}}@keyframes demo-buy{0%,34%{left:20px}52%{left:111px}72%{left:111px}to{left:205px}}.toast{top:auto;bottom:8px;z-index:12}.journal-major.yield,.coach.yield{visibility:hidden}.problem-link{transition:opacity .2s}#app.building .problem-link{opacity:.25;pointer-events:none}#speedBtn,#pauseBtn{flex-direction:column;gap:0;line-height:1;min-width:44px;height:44px}#pauseBtn svg{width:18px;height:18px}.ctl-label{display:block;font-size:10px;font-weight:500;line-height:1.1}#pauseBtn[aria-pressed=true]{background:var(--warning)}.pause-card{left:auto;right:8px;top:8px;bottom:8px;transform:none;width:min(280px,calc(100% - 16px));max-height:none;overflow:auto;grid-template-columns:1fr;align-content:start;gap:6px;padding:10px 12px}@media (min-width: 560px){.pause-card{width:min(300px,calc(100% - 16px));grid-template-columns:1fr}.pause-sound{grid-column:auto;grid-row:auto;border-left:0;padding:6px 0 0;border-top:1px solid var(--wall)}.pause-confirm{grid-column:auto}}.pause-actions{grid-template-columns:1fr 1fr}.pause-actions .cta{grid-column:1 / -1}.pause-actions .btn,.pause-actions .cta{min-height:44px;font-size:var(--fs-sub)}.pause-replay{min-height:40px}.pause-card{bottom:auto;max-height:calc(100% - 16px);padding-block:7px;gap:4px}.pause-sound{grid-template-columns:repeat(2,minmax(0,1fr))}.pause-sound>.btn{min-width:0;padding-inline:6px;font-size:var(--fs-sub)}.pause-audio-settings{grid-column:1 / -1}.pause-audio-settings summary{display:list-item;list-style-position:inside;width:100%;height:auto;min-height:34px;padding:5px 8px;font-size:var(--fs-sub)}.pause-audio-settings[open] .audio-sliders{padding:4px 2px 0}.pause-audio-settings .audio-sliders input{margin-block:0}.pause-card[data-repair=true] .pause-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.pause-card[data-repair=true] .pause-actions .btn{min-width:0;padding-inline:4px}.journal-major{position:absolute;z-index:8;top:5px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:7px;max-width:70%;padding:4px 14px 4px 8px;color:var(--ink);background:var(--paper);border:1px solid var(--wall);border-bottom:4px solid var(--wall);box-shadow:2px 3px #29373928;pointer-events:none}.journal-major:before{content:"";position:absolute;width:34px;height:9px;top:-2px;left:-7px;transform:rotate(-22deg);background:var(--tileSeam)}.journal-major canvas{width:33px;height:auto;flex:none}.journal-major b{display:block;font-size:15px}.journal-major span{display:block;font-size:12px}.journal-minor{position:absolute;z-index:7;right:0;bottom:calc(100% + 4px);padding:3px 7px;border-bottom:2px solid var(--wall);color:var(--ink);background:var(--paper);white-space:nowrap;font-size:11px;pointer-events:none}.recap-year .journal-finish{display:inline-block;width:24px;vertical-align:middle;margin-right:5px}.entry-flow{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;overflow:hidden;background:var(--paper)}.entry-flow>canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.entry-flow[data-phase=home]:after{content:"";position:absolute;z-index:0;top:0;right:0;bottom:0;left:48%;pointer-events:none;background:linear-gradient(90deg,transparent,var(--paper))}.entry-controls,.entry-options,.entry-title,.entry-selection{position:absolute;z-index:1}.entry-controls{top:10px;right:max(12px,env(safe-area-inset-right));display:flex;gap:6px}.entry-controls button,.entry-back{min-width:44px;min-height:40px;background:var(--paper)}.entry-controls svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.8;fill:none;vertical-align:middle}.entry-volume[aria-pressed=true] svg{opacity:.45}.entry-options{z-index:3;top:55px;right:max(12px,env(safe-area-inset-right));display:grid;gap:5px;padding:5px;background:var(--paper);border:2px solid var(--wall)}.entry-title{right:max(4%,calc(env(safe-area-inset-right) + 12px));top:50%;transform:translateY(-42%);width:min(clamp(296px,43%,365px),calc(100% - env(safe-area-inset-right) - 40px));padding:14px 12px 20px;text-align:center;background:var(--paper);border-bottom:7px solid var(--wallTop, var(--wall));box-shadow:4px 5px #29373924}.entry-title:before,.entry-title:after{content:"";position:absolute;width:57px;height:13px;top:2px;left:-12px;background:color-mix(in srgb,var(--tileSeam) 83%,transparent);transform:rotate(-24deg)}.entry-title:after{left:auto;right:-12px;top:auto;bottom:1px}.entry-title h1{margin:0}.entry-title h1 img{display:block;width:100%;height:auto;margin:auto}.entry-title p{margin:9px 0;font-size:clamp(11px,4vh,16px)}.entry-title .cta{min-height:42px;padding:7px 26px}.entry-selection{top:0;right:0;bottom:0;left:0;padding:12px max(16px,env(safe-area-inset-right)) 16px 16px;display:grid;grid-template-rows:auto minmax(0,1fr);justify-items:center;align-items:center;background:color-mix(in srgb,var(--paper) 47%,transparent)}.entry-selection h2{color:var(--paper);background:var(--wall);margin:0 0 8px;font-size:19px;padding:4px 24px;border-radius:3px}.entry-back{position:absolute;left:10px;top:10px;font-size:25px}.entry-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,1.6vw,15px);width:min(94%,695px);max-height:100%}.entry-card{position:relative;min-height:min(60vh,226px);display:grid;grid-template-rows:minmax(32px,1fr) auto auto auto;justify-items:center;align-items:center;gap:clamp(1px,1.8vh,8px);padding:9px 4px;border:2px solid var(--wall);border-bottom-width:6px;border-radius:5px;background:var(--paper);box-shadow:3px 5px #29373924;transition:transform .25s,opacity .25s}.entry-card svg{width:min(54%,88px);height:clamp(34px,19vh,77px);color:var(--rail)}.entry-card b{font-size:clamp(17px,6vh,26px)}.entry-card small{font-size:clamp(10px,3.5vh,14px)}.entry-card[data-preferred=true]{border-color:var(--warning);box-shadow:0 0 0 3px #f0be384d}.entry-gauges{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 9px;font-size:11px}.entry-gauges i{display:inline-block;width:23px;height:8px;border:1px solid var(--wall);background:repeating-linear-gradient(90deg,var(--paper) 0 6px,var(--wall) 6px 7px);vertical-align:middle}.entry-gauges i:before{content:"";display:block;width:var(--level);height:100%;background:repeating-linear-gradient(90deg,var(--rail) 0 6px,var(--paper) 6px 7px)}.entry-gauges [data-level="1"]{--level: 33%}.entry-gauges [data-level="2"]{--level: 66%}.entry-gauges [data-level="3"]{--level: 100%}.entry-flow[data-phase=break]{background:transparent}.entry-flow[data-phase=break]>canvas{display:none}.entry-flow[data-phase=break] .entry-selection{background:transparent;pointer-events:none}.entry-flow[data-phase=break] :is(h2,.entry-back){visibility:hidden}.entry-flow[data-phase=break] .entry-card{opacity:0;transform:translateY(90px)}.entry-flow[data-phase=break] .entry-card.chosen{z-index:2;animation:entry-chosen .34s both}@keyframes entry-chosen{0%{opacity:1;transform:scale(1)}53%{opacity:1;transform:scale(1.12)}to{opacity:0;transform:scale(1.15)}}.entry-break{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;border:0;background:transparent}.entry-break:focus-visible{outline-offset:-3px}.entry-opening-year{position:absolute;top:10px;right:max(16px,env(safe-area-inset-right));background:var(--paper);border:2px solid var(--wall);padding:5px 14px;font-weight:700;animation:opening-year .3s both}@keyframes opening-year{0%{transform:rotateX(85deg)}}.entry-swing{position:absolute;left:50%;top:40%;width:82px;padding:8px;border:2px solid var(--wall);border-radius:50%;background:var(--paper);color:var(--rail);transform-origin:80% 10%;animation:entry-swing var(--break-time) both}@keyframes entry-swing{0%{opacity:0;transform:translate(-50%,-55%) rotate(36deg)}18%{opacity:1;transform:translate(-50%,-55%) rotate(35deg)}40%{opacity:1;transform:translate(-50%,9%) rotate(-25deg)}60%,to{opacity:0;transform:translate(-50%,9%) rotate(-25deg)}}.entry-debris i{position:absolute;top:58%;left:50%;width:14px;height:12px;background:var(--ground);border:1px solid var(--wall);animation:entry-debris var(--break-time) both;--dx: -110px;--dy: -36px}.entry-debris i:nth-child(2n){--dx: 100px}.entry-debris i:nth-child(3n){--dy: 47px}.entry-debris i:nth-child(5n){--dx: 55px;--dy: -85px}.entry-debris i:nth-child(7n){--dx: -58px;--dy: -74px}@keyframes entry-debris{0%,35%{opacity:0;transform:translate(0)}42%{opacity:1}78%,to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(35deg)}}.entry-role{display:flex;position:absolute;align-items:center;gap:8px;bottom:63px;left:50%;transform:translate(-50%);width:max-content;max-width:88%;text-align:left}.entry-role canvas{width:65px;height:auto}.entry-role span{background:var(--paper);border-bottom:3px solid var(--wall);padding:8px;font-size:13px;font-weight:700}@media (prefers-reduced-motion: reduce){.entry-swing,.entry-debris i,.entry-opening-year,.entry-flow[data-phase=break] .entry-card.chosen{animation:none}}.entry-soil{position:absolute;top:47%;left:39%;width:22%;height:18%;background:var(--ground);clip-path:polygon(0 36%,22% 8%,63% 0,92% 21%,100% 70%,71% 96%,20% 85%);animation:entry-soil var(--break-time) both}@keyframes entry-soil{0%,38%{opacity:.85;transform:scale(1)}58%,to{opacity:0;transform:scale(.18)}}.entry-modes{grid-template-columns:repeat(2,minmax(0,1fr));width:min(78%,570px)}.entry-card[data-locked=true]{color:var(--wall);background:color-mix(in srgb,var(--paper) 65%,var(--ground))}.entry-card[data-locked=true] svg{color:inherit}.entry-lock-note{font-size:12px}.entry-objective{display:grid;justify-items:center;gap:10px;background:var(--paper);padding:12px 28px;border:2px solid var(--wall);border-bottom-width:5px}.entry-objective svg{width:70px;height:62px;color:var(--rail)}.entry-break-hold{cursor:default;z-index:3;background:color-mix(in srgb,var(--bg) 90%,transparent)}.entry-break-hold .entry-swing,.entry-break-hold .entry-debris,.entry-break-hold .entry-soil{visibility:hidden}.entry-role-card{position:absolute;z-index:4;left:50%;bottom:14px;transform:translate(-50%);display:flex;align-items:center;gap:14px;width:min(560px,calc(100% - 24px));padding:12px 16px;background:var(--paper);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:4px 4px 0 var(--ink);text-align:left;animation:role-in .25s ease-out}.entry-role-card canvas{width:64px;height:98px;flex:none}.entry-role-card p{margin:0 0 8px;font-size:var(--fs-main);font-weight:700;line-height:1.45}.entry-accept{min-width:120px}@keyframes role-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.completion-recap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:13;border:0;color:var(--ink);background:none}.completion-recap[hidden]{display:none}.recapping .problem-links,.recapping .problem-panel,.recapping .warning-banner,.recapping .minimap-toggle,.recapping .toast,.recapping .preview{visibility:hidden}.recapping .tools,.recapping .side,.recapping .top{pointer-events:none}.recap-year,.completion-recap small{position:absolute;left:50%;transform:translate(-50%);padding:2px 10px;background:var(--paper);border:1px solid var(--wall)}.recap-year{top:8px;font-size:28px;font-weight:700}.completion-recap small{bottom:8px;white-space:nowrap}.recap-stamp{display:none;position:absolute;left:50%;top:49%;transform:translate(-50%,-50%) rotate(-8deg);border:5px solid var(--exit);background:var(--paper);color:var(--exit);padding:4px 24px;font-size:clamp(36px,12vh,70px);letter-spacing:.12em;white-space:nowrap}.stamped .recap-stamp{display:block;animation:recap-stamp .28s ease-out both}@keyframes recap-stamp{0%{transform:translate(-50%,-50%) rotate(-11deg) scale(1.42);opacity:0}to{transform:translate(-50%,-50%) rotate(-8deg) scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.stamped .recap-stamp{animation:none}}
