.reboot-app,.tw-tower{--paper: #fafbf8;--paper-2: #f1f3ee;--ink: #233d36;--ink-2: #5b7069;--ink-3: rgba(35, 61, 54, .32);--hair: rgba(35, 61, 54, .1);--lift-teal: #117e72;--lift-coral: #c44e3b;--lift-violet: #7257c7;--lift-gold: #d49a12;--up: #117e72;--down: #c44e3b;--danger: #d2432c;--radius: 14px;--ease: cubic-bezier(.2, .7, .2, 1);--game-paper: var(--paper);--shadow: 0 10px 34px rgba(35, 61, 54, .14), 0 1px 2px rgba(35, 61, 54, .08)}html,body,#root{margin:0;height:100%;overflow:hidden}body:has(.reboot-app){background:#fafbf8}.reboot-app,.reboot-app *{box-sizing:border-box}.reboot-app{position:relative;height:100vh;height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;background:var(--paper);color:var(--ink);font-family:Avenir Next,PingFang SC,Hiragino Sans GB,system-ui,sans-serif;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overflow:hidden;user-select:none;-webkit-user-select:none}.reboot-app>.game-header{grid-row:1;grid-column:1}.reboot-app>.round-progress{grid-row:2;grid-column:1}.reboot-app>.game-board{grid-row:3;grid-column:1}.reboot-app>.game-dock{grid-row:4;grid-column:1}:where(.reboot-app) button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.reboot-app button:disabled{cursor:default;opacity:.38}.reboot-app :focus-visible{outline:2.5px solid var(--ink);outline-offset:2px}.game-header{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:max(6px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) 4px max(14px,env(safe-area-inset-left));font-size:15px;font-weight:600;letter-spacing:.02em}.game-header>*{display:flex;align-items:center;gap:10px;min-width:0}.game-header small{font-size:12px;font-weight:500;color:var(--ink-2)}.game-header{padding-right:calc(max(14px,env(safe-area-inset-right)) + 84px)}.game-header h1{margin:0;font-size:17px;font-weight:800;letter-spacing:.14em;display:flex;align-items:center;gap:6px}.stage-mark{font-size:13px;color:var(--ink-2)}.stage-dots{display:inline-flex;gap:4px}.stage-dots i{width:7px;height:7px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--ink-3)}.stage-dots i.passed{background:var(--ink);box-shadow:none}.delivered-counter{font-size:16px}.delivered-counter strong{font-weight:800}.secondary-controls{grid-row:1;grid-column:1;justify-self:end;align-self:start;z-index:2;display:flex;padding:max(2px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) 0 0}.secondary-controls .icon-control{width:40px;height:44px;color:var(--ink-3)}.round-progress{display:flex;align-items:center;gap:10px;min-height:20px;padding:0 max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left));font-size:11.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}.round-progress:empty{height:3px;min-height:3px;margin:0 14px;padding:0;border-radius:2px;background:linear-gradient(to right,var(--ink) calc(var(--progress, 0) * 100%),var(--hair) 0)}.round-track{flex:1;height:3px;border-radius:2px;background:var(--hair);overflow:hidden}.round-track>i{display:block;height:100%;background:var(--ink);border-radius:2px}.traffic-phase{display:inline-flex;align-items:center;gap:3px}.game-board{position:relative;min-height:0;min-width:0}.tw-tower{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.tw-tower-svg{display:block;touch-action:none;font-family:inherit}.tw-floor .tw-badge{fill:var(--paper);stroke:var(--ink);stroke-width:1.6;transition:fill .25s,stroke .25s}.tw-floor .tw-badge-num{font-size:12.5px;font-weight:700;fill:var(--ink);text-anchor:middle}.tw-floor .tw-platform{stroke:var(--hair);stroke-width:1;stroke-linecap:round}.tw-floor .tw-pressure{fill:none;stroke:var(--danger);stroke-width:3;stroke-linecap:round;transition:stroke-dasharray .3s var(--ease),opacity .3s}.tw-floor.tw-locked .tw-badge{fill:none;stroke:var(--ink-3);stroke-dasharray:2 3}.tw-floor.tw-locked .tw-badge-num{fill:var(--ink-3);font-weight:500}.tw-floor .tw-lock,.tw-floor .tw-cafe{fill:none;stroke:var(--ink-3);stroke-width:1.2;stroke-linejoin:round}.tw-floor .tw-cafe{stroke:var(--ink-2)}.tw-venue{fill:none;stroke:var(--ink-2);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}.tw-budget-preview{font-size:13px;font-weight:600;pointer-events:none}.track-resource{display:flex;align-items:center;gap:3px;min-height:44px;color:var(--ink);font-size:13px}.track-resource small{font-size:10px;color:var(--ink-2)}.tw-floor.tw-failed .tw-badge{fill:var(--danger);stroke:var(--danger)}.tw-floor.tw-failed .tw-badge-num{fill:#fff}.tw-floor .tw-overflow{font-size:11px;font-weight:700;fill:var(--ink-2)}.tw-floor .tw-overflow.tw-hot{fill:var(--danger)}.tw-pax circle{stroke:var(--paper);stroke-width:1}.tw-pax.tw-up circle{fill:var(--up)}.tw-pax.tw-down circle{fill:var(--down)}.tw-pax text{fill:#fff;font-weight:700;text-anchor:middle;pointer-events:none}.tw-interchange{fill:var(--paper);stroke:var(--ink-3);stroke-width:1.5}.tw-pax.tw-transfer circle{fill:var(--paper);stroke-width:1.6}.tw-pax.tw-up.tw-transfer circle{stroke:var(--up)}.tw-pax.tw-down.tw-transfer circle{stroke:var(--down)}.tw-pax.tw-up.tw-transfer text{fill:var(--up)}.tw-pax.tw-down.tw-transfer text{fill:var(--down)}.tw-pax.tw-born .tw-pax-body{animation:rb-born .42s var(--ease) both;transform-box:fill-box;transform-origin:center}@keyframes rb-born{0%{transform:scale(.2);opacity:0}60%{transform:scale(1.18);opacity:1}to{transform:scale(1)}}.tw-lane-band{fill:currentColor;opacity:.07}.tw-lane-empty{fill:none;stroke:var(--ink-3);stroke-width:1.4;stroke-dasharray:3 5}.tw-shaft{transition:opacity .2s}.tw-shaft.tw-muted{opacity:.4}.tw-shaft .tw-channel{fill:currentColor;opacity:.13}.tw-shaft .tw-channel.tw-preview{opacity:.2}.tw-shaft .tw-line{stroke:currentColor;stroke-width:4;stroke-linecap:round}.tw-shaft .tw-cut{stroke:currentColor;stroke-width:2;stroke-dasharray:2 5;stroke-linecap:round;opacity:.45}.tw-shaft .tw-trail{stroke:currentColor;stroke-linecap:round;opacity:.22}.tw-shaft .tw-stop{fill:var(--paper);stroke:currentColor;stroke-width:2.6}.tw-shaft .tw-pass{fill:var(--paper);stroke:currentColor;stroke-width:1.2;opacity:.8}.tw-shaft .tw-pass.tw-off{opacity:.25}.tw-shaft.tw-on .tw-pass{stroke-width:1.6;opacity:1}.tw-ghost .tw-channel{fill:currentColor;opacity:.1;stroke:currentColor;stroke-width:1.5;stroke-dasharray:4 4;stroke-opacity:.6}.tw-ghost .tw-line{stroke:currentColor;stroke-width:4;stroke-linecap:round;opacity:.55}.tw-ghost .tw-ghost-stop{fill:var(--paper);stroke:currentColor;stroke-width:2.2}.tw-ghost.tw-short .tw-ghost-stop{stroke-dasharray:2 2}.tw-ghost .tw-ghost-label{font-size:12px;font-weight:700;fill:currentColor}.tw-ghost.tw-guide .tw-channel{opacity:.07;animation:rb-breathe 2.4s ease-in-out infinite}.tw-ghost.tw-guide .tw-ghost-stop{stroke-dasharray:3 3}.tw-ghost.tw-guide .tw-finger{fill:var(--ink);opacity:0;transform-box:fill-box;transform-origin:center;animation:rb-drag 2.4s var(--ease) infinite}@keyframes rb-breathe{50%{opacity:.16}}@keyframes rb-drag{0%{transform:translateY(0) scale(.6);opacity:0}14%{transform:translateY(0) scale(1);opacity:.2}70%{transform:translateY(var(--dy)) scale(1);opacity:.2}86%,to{transform:translateY(var(--dy)) scale(.6);opacity:0}}.tw-car-body{fill:var(--paper);stroke:currentColor;stroke-width:2.2}.tw-car.tw-express .tw-car-body{stroke-width:3.2}.tw-car .tw-seat{fill:var(--ink-3)}.tw-pop{font-size:13px;font-weight:800;fill:var(--ink);pointer-events:none;animation:rb-pop 1.3s var(--ease) both}.tw-pop.tw-express{fill:var(--lift-gold)}@keyframes rb-pop{0%{opacity:0;transform:translateY(4px)}15%{opacity:1;transform:translateY(0)}70%{opacity:1}to{opacity:0;transform:translateY(-10px)}}.tw-cell{fill:transparent;cursor:pointer;outline:none}@media(hover:hover){.tw-cell:hover{fill:currentColor;fill-opacity:.06}}.tw-cell:focus-visible{stroke:var(--ink);stroke-width:2;stroke-dasharray:4 3}.tw-build-cell{cursor:crosshair;color:var(--ink)}.tw-is-dragging .tw-cell:hover{fill:transparent}.tw-handle{cursor:ns-resize;outline:none}.tw-handle-hit{fill:transparent}.tw-handle-grip{fill:currentColor;stroke:var(--paper);stroke-width:2;transition:transform .15s var(--ease);transform-box:fill-box;transform-origin:center}.tw-handle:hover .tw-handle-grip,.tw-handle.tw-live .tw-handle-grip{transform:scale(1.25)}.tw-handle:focus-visible .tw-handle-grip{stroke:var(--ink)}.game-dock{display:flex;align-items:center;justify-content:center;gap:6px;min-height:60px;padding:6px max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));border-top:1px solid var(--hair)}.game-dock{flex-wrap:wrap;row-gap:0}.game-dock .spacer{flex:1}.play-controls{display:flex;align-items:center;gap:2px}.game-dock>.context-bar{padding:0;min-height:44px;overflow:visible}.lift-selector{display:flex;gap:4px}.lift-selector button{--lift: var(--ink);min-width:44px;height:44px;padding:0 10px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:800;color:var(--lift);box-shadow:inset 0 0 0 2px var(--lift);transition:background-color .15s,color .15s}.lift-selector button[aria-pressed=true]{background:var(--lift);color:#fff}.lift-selector button:nth-child(4)[aria-pressed=true],.gift-targets button:nth-child(4) span{color:var(--ink)}.lift-selector button small{font-size:10.5px;font-weight:700;opacity:.8}.lift-selector button:nth-child(4n+1),.gift-targets button:nth-child(4n+1){--lift: var(--lift-teal)}.lift-selector button:nth-child(4n+2),.gift-targets button:nth-child(4n+2){--lift: var(--lift-coral)}.lift-selector button:nth-child(4n+3),.gift-targets button:nth-child(4n+3){--lift: var(--lift-violet)}.lift-selector button:nth-child(4n+4),.gift-targets button:nth-child(4n+4){--lift: var(--lift-gold)}.build-control{height:44px;padding:0 14px 0 12px;border-radius:22px;display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:700;background:var(--ink);color:var(--paper)!important}.build-control>b,.build-control .token{min-width:20px;height:20px;padding:0 5px;border-radius:10px;display:inline-grid;place-items:center;font-size:12px;background:var(--paper);color:var(--ink)}.build-control.active,.build-control[aria-pressed=true]{background:var(--paper);color:var(--ink)!important;box-shadow:inset 0 0 0 2px var(--ink)}.build-control.active>b,.build-control[aria-pressed=true]>b,.build-control[aria-pressed=true] .token{background:var(--ink);color:var(--paper)}.build-control:disabled{background:var(--paper-2);color:var(--ink-3)!important;opacity:1}.build-control:disabled>b{background:transparent;color:var(--ink-3)}.icon-control,.sound-button{width:44px;height:44px;border-radius:50%;display:inline-grid;place-items:center;color:var(--ink-2);font-size:13px;font-weight:700;transition:background-color .15s,color .15s}.icon-control:hover,.sound-button:hover{background:var(--paper-2);color:var(--ink)}.icon-control[aria-pressed=true]{background:var(--ink);color:var(--paper)}.icon-control.muted,.sound-button.muted{color:var(--ink-3)}.context-bar{display:flex;align-items:center;justify-content:center;gap:10px;min-height:34px;padding:0 14px;font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.context-bar strong{color:var(--ink);font-weight:700}.hint-banner{position:absolute;z-index:5;left:50%;top:10px;transform:translate(-50%);max-width:min(92%,420px);padding:8px 14px;border-radius:18px;background:var(--ink);color:var(--paper);font-size:13px;font-weight:600;line-height:1.35;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:var(--shadow);pointer-events:none;animation:rb-hint .35s var(--ease) both}.hint-banner:not(.notice){background:#fafbf8e6;color:var(--ink-2);box-shadow:0 0 0 1px var(--hair);font-weight:500}.hint-banner:empty{display:none}@keyframes rb-hint{0%{opacity:0;transform:translate(-50%,-6px)}}.reboot-app .overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:20px;background:#fafbf8b8;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:rb-fade .2s ease both}@keyframes rb-fade{0%{opacity:0}}.reboot-app .dialog,.reward-panel,.end-panel{position:relative;max-height:calc(100% - 8px);overflow-y:auto;color:var(--ink);width:min(100%,380px);padding:22px 20px 18px;border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow),0 0 0 1px var(--hair);display:grid;gap:14px;text-align:center;animation:rb-rise .3s var(--ease) both}@keyframes rb-rise{0%{opacity:0;transform:translateY(10px)}}.reward-panel h2,.end-panel h2{margin:0;font-size:20px;font-weight:800;letter-spacing:.02em}.reward-panel p,.end-panel p{margin:0;font-size:14px;color:var(--ink-2);line-height:1.45}.end-panel strong{font-size:40px;font-weight:800;line-height:1}.end-panel button,.reward-panel>button{justify-self:center;height:46px;padding:0 26px;border-radius:23px;background:var(--ink);color:var(--paper)!important;font-weight:700}.gift-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px}.gift-options button{display:grid;justify-items:center;gap:6px;padding:16px 8px 12px;border-radius:12px;box-shadow:inset 0 0 0 1.5px var(--hair);font-size:13px;font-weight:700;color:var(--ink);transition:box-shadow .15s,transform .15s var(--ease)}.gift-options button:hover,.gift-options button[aria-pressed=true]{box-shadow:inset 0 0 0 2px var(--ink);transform:translateY(-1px)}.gift-options button small{font-size:11.5px;font-weight:500;color:var(--ink-2);line-height:1.3}.reward-summary{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--ink)}.end-score{display:flex;align-items:baseline;justify-content:center;gap:8px}.end-score span{font-size:14px;color:var(--ink-2)}.reboot-app .main-action{justify-self:center;display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 24px;border-radius:23px;background:var(--ink);color:var(--paper)!important;font-weight:700}.reward-back{justify-self:center;min-height:40px;padding:0 14px;font-size:13px;color:var(--ink-2)!important}.gift-icon{width:56px;height:48px;color:var(--ink)}.gift-options button strong{font-size:14px}.gift-targets{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.gift-targets button{--lift: var(--ink);min-height:48px;padding:0 12px;border-radius:12px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--hair)}.gift-targets button span{width:26px;height:26px;border-radius:13px;display:grid;place-items:center;background:var(--lift);color:#fff;font-weight:800;font-size:12px}.gift-targets button:not(:disabled):hover{box-shadow:inset 0 0 0 2px var(--lift)}.reboot-app .dialog .dialog-title{margin:0 40px;font-size:19px;font-weight:800}.close-help{position:absolute;top:8px;right:8px}.help-diagrams{display:grid;grid-template-columns:1fr 1fr;gap:10px}.help-diagrams>div{display:grid;justify-items:center;gap:6px;padding:12px 6px;border-radius:12px;background:var(--paper-2);font-size:13px}.restart-actions{display:flex;justify-content:center;gap:10px}.restart-actions>button:not(.main-action){height:46px;padding:0 18px;border-radius:23px;box-shadow:inset 0 0 0 1.5px var(--hair);font-weight:600}@media(max-width:520px){.game-header{min-height:42px;font-size:14px}.game-dock{gap:2px;min-height:56px}.lift-selector button{min-width:44px;padding:0 8px}.build-control{padding:0 11px 0 9px}.icon-control,.sound-button,.game-dock .icon-control.muted{width:44px}.context-bar{min-height:30px;font-size:12px}}@media(max-height:620px){.game-header{min-height:38px}.game-dock{min-height:52px}}@media(prefers-reduced-motion:reduce){.reboot-app *,.tw-tower *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}.tw-ghost.tw-guide .tw-finger{display:none}.tw-pop{animation:none}}
