:root{--bg:#80b8cf;--panel:#121826;--panel-2:#18213a;--border:#1f2a3d;--border-strong:#2c3a55;--text:#e6edf7;--muted:#8b98ad;--accent:#f5b942;--accent-ink:#1a1405;--danger:#ff5c5c;--ok:#4ade80;--radius:12px;--radius-lg:14px;--font:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--glass:#0b0f1794;--glass-border:#1f2a3dcc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}html{background:var(--bg);-webkit-text-size-adjust:100%}body{overscroll-behavior:none;height:100dvh;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.35;overflow:hidden}[hidden]{display:none!important}h1,h2,p,ol,ul{margin:0}#game{touch-action:none;z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{z-index:10;pointer-events:none;position:fixed;inset:0}.noscript{z-index:100;text-align:center;font-family:var(--font);color:var(--text);background:var(--bg);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.btn{pointer-events:auto;appearance:none;border:1px solid var(--border);background:var(--panel-2);min-height:44px;color:var(--text);font:inherit;letter-spacing:.01em;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-weight:650;display:inline-flex}@media (hover:hover){.btn:hover:not(:disabled){border-color:var(--border-strong)}}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:active:not(:disabled),.btn.is-pressed:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--accent{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn--danger{color:var(--danger);background:#ff5c5c1a;border-color:#ff5c5c66}.btn--ghost{background:0 0}.btn--sm{padding:0 12px;font-size:13px}.btn--icon{width:44px;padding:0;font-size:18px}.btn--big{letter-spacing:.06em;border-radius:var(--radius);min-height:56px;padding:0 28px;font-size:18px;font-weight:800}.btn.is-ghost{visibility:hidden}.hud{padding:calc(8px + var(--safe-top)) calc(10px + var(--safe-right)) 0 calc(10px + var(--safe-left));pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;top:0;left:0;right:0}.hud__row{align-items:stretch;gap:8px;width:100%;max-width:960px;margin:0 auto;display:flex}.stat{background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(6px);border-radius:10px;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0;padding:4px 10px;display:flex}.stat__label{letter-spacing:.14em;color:var(--muted);font-size:10px;font-weight:700}.stat__value{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:22px;font-weight:800;line-height:1.1}.stat--gold{align-items:flex-end}.stat--gold .stat__value{color:var(--accent)}.hud__row--sub .stat{flex:1 1 0;padding:3px 10px}.hud__row--sub .stat__value{font-size:14px;font-weight:700}.stat--guard.is-hidden{display:none}.stat--guard .stat__value{color:#b38f3a}.stat--guard.is-ready .stat__value{color:#ffd166}.engine{background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(6px);border-radius:10px;flex:auto;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;min-width:0;padding:6px 10px;display:grid}.engine__label{letter-spacing:.14em;color:var(--muted);font-size:10px;font-weight:700}.engine__hp{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;font-size:13px;font-weight:700}.bar{background:#ffffff14;border-radius:999px;min-width:40px;height:10px;position:relative;overflow:hidden}.bar--engine{height:14px}.bar--sm{height:8px}.bar__fill{border-radius:inherit;background:var(--ok);width:100%;height:100%}.bar[data-tone=warn] .bar__fill{background:var(--accent)}.bar[data-tone=bad] .bar__fill{background:var(--danger)}@media (max-width:420px){.hud{gap:4px}.stat{padding:3px 8px}.stat__value{font-size:18px}.engine__label{display:none}.engine{grid-template-columns:1fr auto}}.center{text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:14px;padding:0 16px;display:flex;position:absolute;top:24%;left:0;right:0}.banner:not(.is-on),.toast:not(.is-on){display:none}.banner__text{letter-spacing:.14em;color:var(--accent);text-shadow:0 2px #00000073,0 0 36px #f5b94259;padding-left:.14em;font-size:clamp(44px,11vw,104px);font-weight:900;line-height:1}.banner__sub{letter-spacing:.32em;color:var(--text);opacity:.8;margin-top:8px;padding-left:.32em;font-size:12px;font-weight:700}.toast{border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);background:#121826eb;border-radius:999px;max-width:min(92vw,520px);padding:8px 16px;font-size:15px;font-weight:700}.dock{padding:10px calc(10px + var(--safe-right)) calc(10px + var(--safe-bottom)) calc(10px + var(--safe-left));pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:linear-gradient(#0b0f1700 0%,#0b0f1799 30%,#0b0f17eb 100%);flex-direction:column;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.dock__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.dock__aux{-webkit-backdrop-filter:blur(6px);background:#18213ad9}.dock__row{gap:8px;display:flex}.steer{border:1px solid var(--border);background:#121826d9;border-radius:999px;width:88px;padding:10px 12px}.steer__track{background:linear-gradient(to right, #ffffff24 0 49%, var(--accent) 49% 51%, #ffffff24 51% 100%);border-radius:999px;height:4px;display:block;position:relative}.steer__indicator{top:50%;left:calc(50% + (var(--steer,0) * 50%));background:var(--accent);border-radius:50%;width:12px;height:12px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 10px #f5b942cc}.ctl{border-radius:var(--radius-lg);letter-spacing:.04em;-webkit-backdrop-filter:blur(8px);background:#18213aeb;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;min-height:64px;padding:0 8px;font-size:17px;font-weight:800;display:flex}.ctl--speed{pointer-events:auto;cursor:default;flex:1.25 1 0}.speed__head{justify-content:space-between;align-items:baseline;width:min(170px,100%);display:flex}.speed__slider{width:min(170px,100%);accent-color:var(--accent);cursor:ew-resize}.ctl__cap{letter-spacing:.2em;color:var(--muted);font-size:10px;font-weight:700}.ctl__state{font-size:22px;line-height:1}@media (min-width:720px){.dock{border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);background:#121826b8;border-radius:18px;width:min(720px,100vw - 32px);padding:12px;bottom:16px;left:50%;right:auto;transform:translate(-50%)}}.overlay{padding:calc(16px + var(--safe-top)) calc(16px + var(--safe-right)) calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left));-webkit-backdrop-filter:blur(8px);pointer-events:auto;overscroll-behavior:contain;touch-action:pan-y;background:#0b0f179e;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:480px;margin:auto;padding:24px;box-shadow:0 24px 64px #00000080}.panel--narrow{max-width:360px}.brand{letter-spacing:.18em;text-align:center;color:var(--accent);text-shadow:0 0 40px #f5b94240;padding-left:.18em;font-size:clamp(44px,12vw,64px);font-weight:900;line-height:1}.tagline{text-align:center;color:var(--muted);margin:10px 0 20px;font-size:16px}.panel__heading{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:12px;font-weight:800}.panel__title{letter-spacing:.12em;text-align:center;padding-left:.12em;font-size:34px;font-weight:900}.panel__sub{text-align:center;color:var(--muted);margin:6px 0 18px}.overlay--dead .panel__title{color:var(--danger)}.howto{gap:8px;margin:0 0 18px;padding:0;list-style:none;display:grid}.howto li{grid-template-columns:22px 1fr;align-items:start;gap:10px;font-size:14px;display:grid}.howto__n{background:var(--panel-2);border:1px solid var(--border);width:22px;height:22px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:inline-flex}.best{text-align:center;font-variant-numeric:tabular-nums;color:var(--accent);margin:0 0 14px;font-weight:700}.actions{flex-direction:column;gap:10px;display:flex}.actions .btn{width:100%}.hint{text-align:center;color:var(--muted);margin:14px 0 0;font-size:12px}.badge-wrap{justify-content:center;margin:-6px 0 14px;display:flex}.badge{letter-spacing:.08em;color:var(--accent);background:#f5b94224;border:1px solid #f5b94266;border-radius:999px;padding:6px 14px;font-weight:800;display:inline-block}.stats{grid-template-columns:1fr 1fr;gap:8px;margin:0 0 18px;display:grid}.stats__item{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.stats__item:first-child{grid-column:1/-1}.stats__label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.stats__value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}.shop{align-items:stretch;padding:0}.shop__panel{border:0;border-radius:0;flex-direction:column;width:100%;max-width:none;height:100%;min-height:0;margin:0;padding:0;display:flex}.shop__head{padding:calc(12px + var(--safe-top)) calc(12px + var(--safe-right)) 12px calc(16px + var(--safe-left));border-bottom:1px solid var(--border);align-items:center;gap:12px;display:flex}.shop__title{letter-spacing:.14em;font-size:22px;font-weight:900}.shop__gold{font-variant-numeric:tabular-nums;color:var(--accent);margin-left:auto;font-size:20px;font-weight:800}.shop__body{min-height:0;padding:14px calc(16px + var(--safe-right)) 24px calc(16px + var(--safe-left));-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex:auto;overflow-y:auto}.shop__foot{padding:12px calc(16px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(16px + var(--safe-left));border-top:1px solid var(--border);gap:10px;display:flex}.shop__foot .btn{flex:1 1 0}.section{margin-bottom:24px}.section__head{align-items:baseline;gap:10px;margin-bottom:4px;display:flex}.section__title{letter-spacing:.16em;color:var(--muted);font-size:13px;font-weight:800}.section__meta{font-variant-numeric:tabular-nums;color:var(--muted);margin-left:auto;font-size:12px}.section__hint{color:var(--muted);margin:0 0 12px;font-size:13px}.section__hint--warn{color:var(--accent);font-weight:700}.train{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex;position:relative}.car{background:var(--panel-2);border:1px solid var(--border);border-left:4px solid var(--car-color,var(--border));border-radius:12px;grid-template-columns:30px 44px 1fr;grid-template-areas:"idx swatch info""actions actions actions";align-items:center;gap:8px 10px;padding:10px;display:grid;position:relative}.car+.car:before{content:"";background:var(--border-strong);width:3px;height:9px;position:absolute;top:-9px;left:14px}.car--loco{border-color:#f5b94259;border-left-color:var(--car-color,var(--accent))}.car__index{text-align:center;font-variant-numeric:tabular-nums;color:var(--muted);grid-area:idx;font-size:11px;font-weight:800}.car--loco .car__index{color:var(--accent)}.car__swatch{background:var(--car-color,var(--panel));color:#fff;text-shadow:0 1px #00000073;border-radius:10px;grid-area:swatch;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;font-weight:900;display:flex;box-shadow:inset 0 0 0 2px #ffffff24}.car__info{flex-direction:column;grid-area:info;gap:6px;min-width:0;display:flex}.car__name{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.car__title{font-size:15px;font-weight:800}.tag{letter-spacing:.04em;color:var(--muted);background:#ffffff14;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800}.tag--loco{color:var(--accent);background:#f5b94226}.car__hp{grid-template-columns:1fr auto;align-items:center;gap:10px;display:grid}.car__hptext{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted);font-size:12px}.car__actions{flex-wrap:wrap;grid-area:actions;gap:6px;display:flex}.car__actions .btn:not(.btn--accent){background:#1e2a46}.car__actions .btn--sm{flex:1 1 0;min-width:0;padding:0 10px}.car__actions .btn.is-ghost{display:none}.buy-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px;display:grid}.buy{background:var(--panel-2);border:1px solid var(--border);border-top:3px solid var(--car-color,var(--border));border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex}.buy__head{align-items:center;gap:10px;display:flex}.buy__swatch{background:var(--car-color,var(--panel));color:#fff;text-shadow:0 1px #00000073;border-radius:9px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-weight:900;display:flex;box-shadow:inset 0 0 0 2px #ffffff24}.buy__titles{min-width:0}.buy__name{font-size:15px;font-weight:800}.buy__meta{font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px}.buy__desc{color:var(--muted);flex:auto;font-size:13px}.buy__btn{width:100%}.buy.is-unaffordable .buy__btn:disabled{opacity:.35}@media (min-width:720px){.shop{align-items:center;padding:24px}.shop__panel{border:1px solid var(--border);border-radius:var(--radius-lg);max-width:820px;height:min(100%,900px)}.shop__head{padding:14px 14px 14px 20px}.shop__body{padding:18px 20px 24px}.shop__foot{padding:12px 20px}.shop__foot .btn{flex:none;min-width:240px;margin-left:auto}.car{grid-template-columns:30px 44px 1fr auto;grid-template-areas:"idx swatch info actions"}.car__actions{flex-wrap:nowrap}.car__actions .btn--sm{flex:none;padding:0 12px}.car__actions .btn.is-ghost{visibility:hidden;display:inline-flex}}@media (prefers-reduced-motion:no-preference){.btn{transition:transform 80ms,background-color .15s,border-color .15s,opacity .15s}.bar__fill{transition:width .15s linear,background-color .25s}.steer__indicator{transition:left 80ms linear,box-shadow .12s}.banner.is-on{animation:.4s cubic-bezier(.2,.9,.3,1.2) both banner-in}.overlay{animation:.18s ease-out both fade-in}}@keyframes banner-in{0%{transform:translateY(-14px)scale(.9)}to{transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}
