:root{--bg: #0f2433;--panel: rgba(14, 34, 47, .9);--panel-solid: #12303f;--glass: rgba(15, 36, 50, .72);--card: rgba(255, 255, 255, .06);--card-2: rgba(255, 255, 255, .1);--line: rgba(255, 255, 255, .1);--text: #eef5f8;--muted: #9db4c0;--accent: #ffc94a;--green: #3ecf8e;--blue: #4aa8ff;--red: #ff6b5b;--violet: #a78bfa;--radius: 16px;--tabbar: 64px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font:14px/1.4 Inter,SF Pro Text,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none;user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit;cursor:pointer}h2{font-size:17px;margin:14px 0 8px;letter-spacing:.2px}h3{font-size:13px;margin:14px 0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-weight:700}.small{font-size:12px}.boot{height:100%;display:grid;place-content:center;text-align:center;gap:10px;color:var(--muted);background:radial-gradient(circle at 50% 40%,#1f4b5f,#0c1d29)}.boot-logo{font-size:56px;animation:bob 1.2s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-6px)}}.app{position:relative;height:100%;display:grid;grid-template-rows:1fr calc(var(--tabbar) + var(--safe-b))}.app.wide{grid-template-columns:1fr 430px;grid-template-rows:1fr auto}.map-area{position:relative;overflow:hidden;grid-row:1;grid-column:1}.app.wide .map-area{grid-row:1 / span 2}.map-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab}.map-canvas:active{cursor:grabbing}.side{grid-column:2;grid-row:1;overflow-y:auto;background:linear-gradient(180deg,#123241,#0e2534);border-left:1px solid var(--line)}.drawer{position:absolute;inset:0 0 calc(var(--tabbar) + var(--safe-b)) 0;overflow-y:auto;background:linear-gradient(180deg,#0e2634f7,#0a1c28fa);z-index:15;animation:fade-up .18s ease-out;padding-top:var(--safe-t)}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}}.panel{padding:8px 16px 32px;max-width:760px;margin:0 auto}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tabbar{grid-row:2;display:flex;background:#091822f5;border-top:1px solid var(--line);padding-bottom:var(--safe-b);z-index:20}.app.wide .tabbar{grid-column:2;border-left:1px solid var(--line)}.tab{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--muted);min-height:56px;position:relative}.tab.active:before{content:"";position:absolute;top:0;width:32px;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}.hud{position:absolute;top:calc(8px + var(--safe-t));left:8px;right:8px;display:flex;align-items:center;gap:6px;z-index:10;pointer-events:none}.hud>*{pointer-events:auto}.hud-spacer{flex:1;pointer-events:none}.hud-level{position:relative;width:46px;height:46px;border-radius:50%;border:0;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:grid;place-items:center;font-weight:800;font-size:17px;box-shadow:0 4px 14px #0000004d}.hud-level span{position:relative}.hud-level .ring{position:absolute;inset:1px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:#ffffff1f;stroke-width:4}.ring-fg{fill:none;stroke:var(--violet);stroke-width:4;stroke-linecap:round;transition:stroke-dasharray .4s}.hud-level.ready{box-shadow:0 0 0 2px var(--accent),0 4px 14px #0000004d}.hud-level .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);animation:pulse 1.2s infinite}@keyframes pulse{50%{transform:scale(1.25)}}.hud-stat{display:flex;align-items:center;gap:5px;padding:7px 11px 7px 8px;border-radius:999px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:0;font-size:14px;box-shadow:0 4px 14px #00000040;white-space:nowrap}.hud-stat.danger b{color:var(--red)}.hud-btn{background:var(--glass)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.task-card{position:absolute;top:calc(62px + var(--safe-t));left:8px;width:min(380px,calc(100% - 70px));background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:var(--radius);padding:10px 12px;z-index:9;box-shadow:0 8px 24px #0000004d;border:1px solid rgba(255,255,255,.08)}.task-card.done{border-color:#3ecf8e99;box-shadow:0 0 0 1px #3ecf8e4d,0 8px 24px #0000004d}.task-card.finale{border-color:var(--accent)}.task-head{display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:none;border:0;padding:0;text-align:left;width:100%}.task-head b{font-size:15px}.task-step{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;font-weight:700}.task-hint{font-size:12.5px;color:#cfe0e8;margin:4px 0 8px}.task-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;gap:8px}.task-reward{display:flex;gap:10px;font-size:13px}.map-controls{position:absolute;right:10px;top:calc(64px + var(--safe-t));display:flex;flex-direction:column;gap:8px;z-index:9}.fab{width:44px;height:44px;border-radius:14px;border:0;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:grid;place-items:center;box-shadow:0 4px 14px #0000004d}.train-strip{position:absolute;left:0;right:0;bottom:8px;display:flex;gap:8px;overflow-x:auto;padding:0 8px;z-index:9;scrollbar-width:none}.train-strip::-webkit-scrollbar{display:none}.strip-chip{position:relative;flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:4px 12px 4px 4px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);overflow:hidden;min-height:48px}.strip-chip img{width:60px;height:32px;object-fit:contain}.strip-chip.idle{border-color:#3ecf8e8c}.strip-chip.empty{width:48px;justify-content:center;padding:0;color:var(--muted);border-style:dashed}.strip-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.strip-text small{color:var(--muted);font-size:11px}.strip-chip.idle small{color:var(--green)}.strip-bar{position:absolute;left:0;bottom:0;height:3px;background:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:12px;padding:11px 16px;font-weight:700;min-height:44px;transition:transform .08s,filter .15s,opacity .15s;white-space:nowrap}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn-sm{padding:7px 12px;min-height:36px;font-size:13px;border-radius:10px}.btn-block{width:100%}.btn-primary{background:linear-gradient(180deg,#4cd99b,#22a86c);color:#062a1a;box-shadow:0 3px #17784c}.btn-gold{background:linear-gradient(180deg,#ffd96a,#f2a922);color:#3a2500;box-shadow:0 3px #b97a0c}.btn-secondary{background:var(--card-2);color:var(--text)}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}.btn-danger{background:linear-gradient(180deg,#ff7f70,#d9473a);color:#fff}.icon-btn{width:40px;height:40px;border-radius:12px;border:0;background:var(--card);display:grid;place-items:center;flex:0 0 auto}.icon-btn:disabled{opacity:.4}.link{background:none;border:0;color:var(--blue);padding:4px 0;display:inline-flex;align-items:center;gap:4px}.link:disabled{color:var(--muted);opacity:.6}.sheet-wrap{position:absolute;inset:0 0 calc(var(--tabbar) + var(--safe-b)) 0;z-index:30;display:flex;align-items:flex-end;background:#040c1240;animation:fade .15s}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-height:82%;display:flex;flex-direction:column;background:linear-gradient(180deg,#16384a,#102a3a);border-radius:22px 22px 0 0;box-shadow:0 -10px 40px #00000073;border-top:3px solid var(--accent);animation:slide-up .22s cubic-bezier(.2,.9,.3,1.1)}.sheet-wide{max-height:66%}@keyframes slide-up{0%{transform:translateY(40%);opacity:0}}.app.wide .sheet-wrap{inset:0 430px 0 0;align-items:stretch;justify-content:flex-start;background:transparent;pointer-events:none;padding:70px 0 16px 16px}.app.wide .sheet{pointer-events:auto;width:440px;max-height:100%;border-radius:20px;border-top-width:3px}.sheet-head{display:flex;align-items:flex-start;gap:10px;padding:14px 14px 8px 18px;position:relative}.sheet-grip{position:absolute;top:6px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:#fff3}.sheet-title{flex:1;font-size:18px;font-weight:800;padding-top:4px}.sheet-sub{font-size:12.5px;color:var(--muted);font-weight:500;margin-top:2px}.sheet-body{overflow-y:auto;padding:0 18px 20px;flex:1}.sheet-actions{position:sticky;bottom:-20px;padding:12px 0 4px;background:linear-gradient(180deg,#102a3a00,#102a3a 30%)}.dot-inline{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;margin:8px 0;display:flex;flex-direction:column;gap:8px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:8px}.row-gap{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.row-gap.center{justify-content:center}.callout{border-radius:12px;padding:10px 12px;background:#4aa8ff1f;border:1px solid rgba(74,168,255,.3);margin:8px 0;font-size:13px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.callout.warn{background:#ff6b5b1f;border-color:#ff6b5b59}.callout.good{background:#3ecf8e1f;border-color:#3ecf8e59}.empty{color:var(--muted);padding:14px;text-align:center;border:1px dashed var(--line);border-radius:12px;margin:8px 0}.progress{position:relative;height:14px;border-radius:8px;background:#ffffff1a;overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffd96a,#f2a922);transition:width .4s}.progress-label{position:absolute;inset:0;display:grid;place-items:center;font-size:10.5px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.6)}.coins,.xp{display:inline-flex;align-items:center;gap:3px;font-weight:700}.coins{color:#ffd96a}.xp{color:#c4b5fd}.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--card-2);white-space:nowrap}.tag-gold{background:#ffc94a33;color:#ffd96a}.tag-green{background:#3ecf8e2e;color:#6ee7b7}.tag-blue{background:#4aa8ff2e;color:#93c5fd}.tag-red{background:#ff6b5b33;color:#fca5a5}.tag-violet{background:#a78bfa33;color:#c4b5fd}.chip-inline{display:inline-flex;align-items:center;gap:4px;font-weight:700}.good-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:999px;background:var(--card-2)}.good-chip.warn b{color:var(--red)}.good-icon{flex:0 0 auto;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:10px 0;font-size:13px}.kv>span{color:var(--muted)}.stepper{display:flex;align-items:center;gap:8px;flex:1}.stepper input[type=range]{flex:1;accent-color:var(--accent);min-width:60px}.stepper-val{min-width:28px;text-align:right;font-size:18px}.qty-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0}.qty-row>.cargo-bar{flex-basis:100%}.cargo-bar{height:10px;border-radius:6px;background:repeating-linear-gradient(90deg,#ffffff14 0 10%,#ffffff24 10% 10.5%);overflow:hidden}.cargo-bar i{display:block;height:100%;border-radius:inherit;transition:width .25s}.train-list{display:flex;flex-direction:column;gap:8px}.train-row{display:flex;gap:10px;align-items:center;padding:8px;border-radius:14px;background:var(--card);border:1px solid var(--line);cursor:pointer}.train-row img{width:96px;height:52px;object-fit:contain;flex:0 0 auto}.train-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.train-row-title{display:flex;gap:6px;align-items:baseline}.train-row-status{font-size:12.5px;display:flex;align-items:center;gap:4px}.train-row-status.idle{color:var(--green)}.train-row-status.wait,.train-row-status.depart{color:#ffb547}.train-row.empty-slot{border-style:dashed}.slot-plus{width:96px;height:52px;display:grid;place-items:center;color:var(--muted)}.log{list-style:none;padding:0;margin:0;font-size:12.5px;display:flex;flex-direction:column;gap:4px}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.pick{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:12px 8px;border-radius:14px;border:1px solid var(--line);background:var(--card)}.pick small{color:var(--muted)}.pick-goods{display:flex;gap:2px}.train-pick{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.train-chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;padding:6px 10px;border-radius:14px;border:2px solid transparent;background:var(--card);min-width:116px}.train-chip img{width:96px;height:50px;object-fit:contain}.train-chip small{color:var(--muted);font-size:11px}.train-chip.active{border-color:var(--accent);background:#ffc94a1a}.train-chip:disabled{opacity:.4}.line-pick{display:flex;flex-direction:column;gap:6px}.line-chip{display:flex;align-items:center;gap:10px;text-align:left;padding:8px 10px;border-radius:12px;border:2px solid transparent;background:var(--card)}.line-chip span{display:flex;flex-direction:column}.line-chip small{color:var(--muted)}.line-chip.active{border-color:var(--accent)}.routes{display:flex;flex-direction:column;gap:8px}.route{text-align:left;border-radius:14px;padding:10px 12px;border:2px solid transparent;background:var(--card);display:flex;flex-direction:column;gap:4px}.route.active{border-color:var(--accent);background:#ffc94a14}.route-tags{display:flex;gap:4px}.route-path{font-weight:700}.route-stats{display:flex;gap:12px;font-size:12.5px;color:var(--muted)}.route-eta{display:flex;flex-direction:column;font-size:12.5px}.route-eta small{color:var(--muted)}.warn-text{color:#ffb547!important}.ok-text{color:var(--green)!important}.contract{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:8px 0}.contract.story{border-color:#ffc94a8c;background:linear-gradient(135deg,#ffc94a1f,#ffffff0a)}.contract-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.contract-reward{margin-left:auto;display:flex;gap:8px;font-size:13px}.contract-line{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line)}.contract-line:first-of-type{border-top:0}.contract-line-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.line-bar{display:flex;height:6px;border-radius:4px;overflow:hidden;background:#ffffff1a}.line-bar .d{background:var(--green)}.line-bar .t{background:repeating-linear-gradient(45deg,#ffc94a 0 4px,#e09b14 4px 8px)}.contract-wrap{position:relative}.contract-wrap>.link{display:flex;align-items:center;margin:-4px 12px 8px auto}.event-box{margin-top:18px;border-radius:16px;padding:2px 12px 12px;border:1px solid color-mix(in srgb,var(--ev) 50%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--ev) 18%,transparent),transparent)}.event-track{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}.ev-tier{text-align:center;padding:8px 4px;border-radius:12px;background:var(--card);display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px}.ev-tier.got{background:#3ecf8e33;outline:1px solid var(--green)}.edge-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}.res-list{list-style:none;padding:0;margin:0}.res-list li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.trip-thumb{display:block;width:220px;height:120px;margin:0 auto;object-fit:contain}.timeline{display:flex;flex-direction:column;gap:2px;margin:10px 0;border-left:2px solid var(--line);padding-left:10px}.tl-item{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 8px;border-radius:8px;color:var(--muted)}.tl-item.done{opacity:.55}.tl-item.active{background:#ffc94a24;color:var(--text)}.tl-item.wait{color:#ffb547}.tl-item.stop{color:var(--text);background:var(--card)}.wh-bar{display:flex;height:12px;border-radius:7px;overflow:hidden;background:#ffffff14;margin-bottom:8px}.wh-bar i,.legend i{display:block;height:100%}.wh-bar .a,.legend .a{background:#4cc38a}.wh-bar .b,.legend .b{background:repeating-linear-gradient(45deg,#7c9cff 0 4px,#5a78e0 4px 8px)}.wh-bar .c,.legend .c{background:repeating-linear-gradient(45deg,#ffc94a 0 4px,#e09b14 4px 8px)}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;margin:6px 0}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:12px;height:12px;border-radius:3px}.inv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.inv-item{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 4px;border-radius:12px;border:1px solid var(--line);background:var(--card)}.inv-item small{color:var(--muted);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.factory{display:flex;gap:10px;padding:10px;margin:8px 0;border-radius:16px;background:var(--card);border:1px solid var(--line);transition:box-shadow .3s}.factory.hl{box-shadow:0 0 0 2px var(--accent)}.factory.locked .factory-img{opacity:.6}.factory-img{width:92px;height:75px;object-fit:contain;flex:0 0 auto;background:radial-gradient(ellipse at 50% 70%,rgba(126,178,90,.35),transparent 70%);border-radius:12px}.factory-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.factory-main>.row-between{width:100%}.recipes-mini{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px}.recipe-mini{display:inline-flex;align-items:center;gap:2px}.rm-in{display:inline-flex;align-items:center;color:var(--muted)}.rm-arrow{color:var(--muted);margin:0 2px}.queue{display:flex;gap:6px;width:100%;max-width:100%}.q-slot{position:relative;width:64px;height:64px;border-radius:12px;background:#0003;border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;font-size:11px}.q-slot.empty{border-style:dashed;color:var(--muted)}.q-slot.running{border-color:#3ecf8e99}.q-qty{position:absolute;top:2px;right:5px;font-size:11px}.q-bar{position:absolute;bottom:0;left:0;height:4px;background:var(--green)}.q-actions{display:flex;gap:4px}.q-actions button{border:0;background:var(--card-2);border-radius:6px;width:22px;height:20px;padding:0;font-size:11px}.seg{display:flex;gap:6px;margin-bottom:10px}.seg button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px;border-radius:12px;border:2px solid transparent;background:var(--card)}.seg button.active{border-color:var(--accent)}.recipe-card{background:var(--card);border-radius:16px;padding:12px}.recipe-out{display:flex;align-items:center;gap:12px;margin-bottom:6px}.inputs{display:flex;flex-direction:column;gap:6px}.input-row{display:flex;align-items:center;justify-content:space-between;border:0;background:none;padding:0;text-align:right}.input-row.missing .muted{color:var(--red)}.tree-node{margin:4px 0}.depot-card .big-level{font-size:34px;font-weight:800;line-height:1}.depot-stats{display:flex;flex-direction:column;align-items:flex-end;font-size:12.5px;color:var(--muted)}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:74px;border-radius:14px;border:1px solid var(--line);background:var(--card);padding:6px}.slot img{width:90px;height:46px;object-fit:contain}.slot.empty{border-style:dashed;color:var(--muted)}.slot.locked{opacity:.5;color:var(--muted)}.ad-card{flex-direction:row;align-items:center}.ad-card>div{flex:1}.trains-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.train-card{display:flex;flex-direction:column;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,#7eb25a29,#ffffff0a 55%);overflow:hidden;text-align:left;padding:0}.train-card img{width:100%;height:86px;object-fit:contain}.train-card.owned{border-color:#3ecf8e80}.train-card.locked img{filter:grayscale(.8) brightness(.7)}.train-card-body{padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;align-items:flex-start}.train-card-body>.row-between{width:100%}.train-stats{display:flex;gap:10px;font-size:12.5px}.xp-note{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}.toggle{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);position:relative;cursor:pointer}.toggle input{position:absolute;opacity:0}.toggle i{width:46px;height:28px;border-radius:14px;background:#ffffff26;position:relative;transition:background .2s}.toggle i:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}.toggle input:checked+i{background:var(--green)}.toggle input:checked+i:after{transform:translate(18px)}.help{padding-left:18px;font-size:13px;display:flex;flex-direction:column;gap:6px}.version{margin-top:16px;text-align:center}.toasts{position:absolute;left:50%;top:calc(64px + var(--safe-t));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:60;pointer-events:none;width:min(92vw,420px)}.toast{padding:9px 14px;border-radius:12px;background:#0a1a24eb;border:1px solid var(--line);font-size:13px;box-shadow:0 8px 20px #00000059;animation:toast-in .25s ease-out;text-align:center}.toast-error{border-color:#ff6b5b99;color:#ffd0ca}.toast-success,.toast-contract{border-color:#3ecf8e99}.toast-event{border-color:#a78bfa99}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.daily-card{flex-direction:row;align-items:center;justify-content:space-between;text-align:left;border-color:#a78bfa80;background:linear-gradient(135deg,#a78bfa2e,#ffffff08);width:100%}.daily-card b{display:block;margin-top:4px}.puzzle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}.puzzle-tile{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px 8px;border-radius:14px;border:1px solid var(--line);background:var(--card);min-height:92px}.puzzle-tile small{font-size:11px;color:var(--muted);text-align:center;line-height:1.2}.pt-num{position:absolute;top:5px;left:8px;font-size:11px;font-weight:800;color:var(--muted)}.medal{display:inline-grid;place-items:center;border-radius:50%;color:#ffffffe6}.medal.none{border:2px dashed rgba(255,255,255,.18)}.medal.gold{background:radial-gradient(circle at 35% 30%,#fff1a8,#f5b400 60%,#b47a00);box-shadow:0 0 12px #ffc40080}.medal.silver{background:radial-gradient(circle at 35% 30%,#fff,#b8c4cc 60%,#7c8b95)}.medal.bronze{background:radial-gradient(circle at 35% 30%,#ffd2a8,#cd7f32 60%,#8a4f17)}.puzzle-screen{position:absolute;inset:0;z-index:50;background:radial-gradient(circle at 30% 20%,#1c4558,#0c1f2b 70%);display:flex;flex-direction:column;padding-top:var(--safe-t);animation:fade .2s}.pz-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}.pz-title{flex:1;display:flex;flex-direction:column}.pz-title small{color:var(--muted)}.pz-clock{display:flex;align-items:center;gap:6px;font-weight:800;font-size:18px;padding:6px 12px;border-radius:12px;background:var(--card-2)}.pz-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto}@media(min-width:900px){.pz-body{display:grid;grid-template-columns:1.2fr 1fr;grid-template-rows:1fr;overflow:hidden}.pz-side{overflow-y:auto}}.pz-map{padding:8px;display:flex;flex-direction:column;gap:6px;min-height:0;flex:0 0 auto}.pz-map>svg{width:100%;height:clamp(240px,52vh,420px);flex-shrink:0;background:radial-gradient(ellipse at center,#7eb25a40,#ffffff05);border-radius:18px}@media(min-width:900px){.pz-map>svg{height:auto;max-height:calc(100vh - 160px)}}.pz-rail{stroke:#cfd8dc;stroke-width:1.1;stroke-linecap:round}.pz-rail.single{stroke:#ffb547;stroke-width:1.6;stroke-dasharray:2.5 1.2}.pz-rail.busy{stroke:#ff6b5b}.pz-preview{stroke:#ffc94a73;stroke-width:6;stroke-linecap:round}.pz-dur{fill:#12303f;stroke:#fff6;stroke-width:.5}.pz-dur-t{fill:#fff;font-size:4.4px;font-weight:700;text-anchor:middle}.pz-single-t{fill:#ffb547;font-size:3.2px;text-anchor:middle}.pz-node{fill:#f1ece0;stroke:#5a4a3a;stroke-width:.8}.pz-node.depot{fill:#2e7d5b;stroke:#ffc94a}.pz-node.wh{fill:#c9965d}.pz-name{fill:#eef5f8;font-size:4px;font-weight:600;text-anchor:middle;paint-order:stroke;stroke:#0009;stroke-width:.8}.pz-badge{fill:#c2410c;font-size:5px;font-weight:800;text-anchor:middle}.pz-train{cursor:pointer}.pz-train circle{stroke:#fff;stroke-width:.7}.pz-train.idle circle{stroke:#ffc94a;stroke-width:1}.pz-train.sel circle{stroke-width:1.6}.pz-train-t{fill:#fff;font-size:3.6px;font-weight:800;text-anchor:middle;pointer-events:none}.pz-stock{font-size:12px;display:flex;flex-wrap:wrap;gap:4px 14px}.pz-stock-item{display:inline-flex;align-items:center;gap:2px;margin-right:6px}.pz-side{padding:8px 12px 20px;display:flex;flex-direction:column;gap:10px;flex:0 0 auto}.pz-help{padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.pz-help summary{cursor:pointer;min-height:44px;align-content:center;font-weight:700}.pz-help ol{margin:8px 0 0;padding-left:20px}.pz-help li+li{margin-top:6px}.pz-orders{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px}.pz-order{display:flex;align-items:center;gap:8px;text-align:left;padding:8px 10px;border-radius:12px;border:2px solid transparent;background:var(--card)}.pz-order-main{flex:1;display:flex;flex-direction:column;min-width:0}.pz-order-main small{color:var(--muted)}.pz-order-dl{font-weight:800;font-size:12.5px;white-space:nowrap}.pz-order.sel{border-color:var(--accent)}.pz-order.urgent .pz-order-dl{color:#ffb547}.pz-order.assigned{opacity:.85;background:#4aa8ff1a}.pz-order.delivered{background:#3ecf8e24}.pz-order.late{background:#ff6b5b24}.pz-order:disabled{cursor:default}.pz-assign{background:var(--card);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px}.pz-trains{display:flex;gap:6px}.pz-tbtn{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px;border-radius:12px;border:2px solid transparent;background:var(--card-2);font-weight:700;font-size:13px;text-align:left}.pz-tbtn i{width:12px;height:12px;border-radius:50%;background:var(--c)}.pz-tbtn small{font-weight:500;color:var(--muted);font-size:11px}.pz-tbtn.sel{border-color:var(--c)}.pz-tbtn:disabled{opacity:.4}.pz-options{display:flex;flex-direction:column;gap:6px}.pz-opt{display:flex;justify-content:space-between;gap:8px;text-align:left;padding:10px;border-radius:12px;border:1px solid var(--line);background:#00000026;font-size:13px}.pz-opt small{color:var(--muted)}.pz-opt.ok b{color:var(--green)}.pz-opt.bad b{color:var(--red)}.pz-actions{display:flex;justify-content:space-between;gap:8px}.pz-actions .btn-primary{flex:1}.pz-result{position:absolute;inset:0;display:grid;place-items:center;background:#040c1299;animation:fade .2s;padding:16px}.pz-result-card{width:min(420px,100%);background:linear-gradient(180deg,#1a4256,#102a3a);border-radius:22px;padding:24px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;box-shadow:0 20px 60px #00000080;animation:pop .35s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{transform:scale(.8);opacity:0}}.pz-result-card h2{margin:4px 0;font-size:24px}.pz-reward{font-size:18px}@media(max-width:380px){.hide-xs{display:none}.hud-stat{padding:6px 9px 6px 6px;font-size:13px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.offline-pill{color:#ffd0ca;border:1px solid rgba(255,107,91,.6);animation:pulse 1.6s infinite}.service-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.service-card{background:var(--card, #203d4b);padding:14px;border-radius:12px;margin:10px 0;display:flex;flex-direction:column;gap:8px}.season-tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.service-card p{margin:2px 0}.palette{display:inline-flex;align-items:center;gap:5px;margin:6px}.palette i{display:inline-block;width:24px;height:24px;border-radius:5px;border:1px solid #ffffff55}.sheet-body select,.sheet-body textarea,.sheet-body input:not([type=checkbox]):not([type=range]){box-sizing:border-box;max-width:100%;min-height:44px;padding:10px;border-radius:8px;border:1px solid #557480;background:#162d3a;color:#fff;font-size:16px}.depot-preview{width:100%;max-width:360px;height:auto;object-fit:contain}.service-card img{max-width:100%;object-fit:contain}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-BFJ833Px.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-pikrkGSb.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font: "Nunito Variable", "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--bg: #0e2430;--ink-900: #0b1f29;--ink-800: #0f2a36;--ink-700: #143644;--ink-600: #1b4352;--ink-500: #245263;--panel-solid: #12303d;--glass: rgba(13, 37, 48, .86);--card: rgba(232, 240, 226, .06);--card-2: rgba(232, 240, 226, .11);--line: rgba(226, 236, 218, .12);--line-strong: rgba(240, 226, 186, .28);--text: #f6f1e4;--muted: #a9bfc2;--accent: #f6bf4c;--accent-ink: #4a3104;--green: #4fd194;--green-deep: #1f8a59;--blue: #7cc4ff;--red: #ff7a68;--violet: #b59bff;--coin: #ffcf4d;--radius: 18px;--tabbar: 64px;--shadow-1: 0 6px 18px rgba(3, 16, 22, .28);--shadow-2: 0 18px 50px rgba(3, 14, 20, .45);--hi: inset 0 1px rgba(255, 250, 230, .08);--ease-spring: cubic-bezier(.25, 1.35, .45, 1)}html,body,#app{font:500 15px/1.4 var(--font);letter-spacing:.1px;font-optical-sizing:auto}b,strong{font-weight:800}h2{font-size:19px;font-weight:900;letter-spacing:0;margin:18px 0 10px}h3{font-size:13px;font-weight:900;letter-spacing:1px;color:#c9d6cf;opacity:.8}.small{font-size:13.5px}.muted{color:var(--muted)}button:focus-visible,.sheet-body input:focus-visible,.sheet-body select:focus-visible,.sheet-body textarea:focus-visible{outline:2px solid #ffe2a0;outline-offset:3px}.boot{background:radial-gradient(ellipse 80% 55% at 50% 38%,rgba(246,191,76,.16),transparent 60%),radial-gradient(circle at 50% 120%,#1f5a52,transparent 60%),linear-gradient(180deg,#123544,#0b1f29);color:var(--text);gap:14px;padding:24px}.boot b{font-size:20px;font-weight:900}.boot-title{font-size:26px;font-weight:900;letter-spacing:.2px;line-height:1.1}.boot-title small{display:block;font-size:13px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.boot-track{position:relative;width:220px;height:64px;margin:0 auto}.boot-track:after{content:"";position:absolute;left:0;right:0;bottom:6px;height:6px;border-radius:3px;background:repeating-linear-gradient(90deg,#6b5a46 0 6px,transparent 6px 14px),linear-gradient(#a5b3b8,#a5b3b8) 0 0 / 100% 2px no-repeat;opacity:.8}.boot-loco{position:absolute;bottom:12px;left:50%;margin-left:-44px;width:88px;height:44px;animation:boot-ride 1.4s ease-in-out infinite}@keyframes boot-ride{50%{transform:translateY(-2px)}}.boot-bar{width:180px;height:6px;border-radius:3px;margin:2px auto 0;background:#ffffff1a;overflow:hidden;position:relative}.boot-bar:after{content:"";position:absolute;inset:0;width:40%;border-radius:inherit;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:boot-scan 1.1s ease-in-out infinite}@keyframes boot-scan{0%{transform:translate(-100%)}to{transform:translate(250%)}}.btn{--edge: rgba(0, 0, 0, .25);position:relative;border-radius:14px;padding:11px 18px;min-height:46px;font-weight:900;font-size:15px;letter-spacing:.15px;box-shadow:0 3px 0 var(--edge),0 6px 14px #00121a38,inset 0 1px #ffffff59;transition:transform .08s,box-shadow .08s,filter .15s}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--edge),0 3px 8px #00121a33,inset 0 1px #ffffff4d}.btn:disabled{opacity:.5;filter:saturate(.4);box-shadow:none}.btn-sm{min-height:44px;padding:8px 14px;font-size:14px;border-radius:12px}.btn-primary{--edge: #187349;background:linear-gradient(180deg,#6ee0a6,#34b678 70%,#2ea86e);color:#06301c;border:0}.btn-gold{--edge: #b3700e;background:linear-gradient(180deg,#ffe08a,#f6bf4c 65%,#eeac2c);color:var(--accent-ink);border:0}.btn-secondary{--edge: rgba(3, 18, 25, .55);background:linear-gradient(180deg,#2a5a6b,#1f4757);color:var(--text);border:1px solid rgba(190,220,214,.16)}.btn-ghost{--edge: transparent;background:#e8f0e20f;color:var(--text);border:1px solid rgba(232,240,226,.16);box-shadow:none}.btn-ghost:active:not(:disabled){box-shadow:none}.btn-danger{--edge: #9b2c22;background:linear-gradient(180deg,#ff958a,#e5574a);color:#fff}@media(hover:hover){.btn:not(:disabled):hover{filter:brightness(1.06) saturate(1.05)}.icon-btn:hover,.fab:hover,.hud-stat:is(button):hover{filter:brightness(1.15)}}.icon-btn{width:44px;height:44px;border-radius:14px;background:#e8f0e214;border:1px solid rgba(232,240,226,.1);color:var(--text)}.link{color:var(--blue);font-weight:800;min-height:44px}.card,.factory,.service-card,.train-card,.contract,.recipe-card,.pz-assign,.pz-help{background:linear-gradient(160deg,#e8f0e216,#e8f0e209);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--hi),0 4px 14px #03121a24}.service-card{padding:16px}.callout{border-radius:14px;font-size:14px;line-height:1.4;background:#7cc4ff1a;border-color:#7cc4ff47}.callout.good{background:#4fd1941f;border-color:#4fd19459}.callout.warn{background:#ff7a681f;border-color:#ff7a6861}.empty{border-radius:16px;font-size:14px}.tag{font-size:12px;font-weight:900;padding:4px 10px;letter-spacing:.2px}.tag-green{background:#4fd1942e;color:#86f0bd}.tag-gold{background:#f6bf4c33;color:#ffd979}.progress{height:16px;border-radius:9px;background:#0210166b;box-shadow:inset 0 1px 3px #00000059;border:0}.progress-thin{height:6px}.progress-fill{background:linear-gradient(180deg,#ffe08a,#f2ad2e);box-shadow:inset 0 1px #ffffff73;transition:width .5s var(--ease-spring)}.progress-label{font-size:11.5px;font-weight:900;letter-spacing:.3px}.coins{color:var(--coin);font-weight:900}.xp{color:#cdbaff;font-weight:900}.good-chip{background:#e8f0e217;border:1px solid rgba(232,240,226,.12);font-weight:700}.good-icon{filter:drop-shadow(0 1px 1px rgba(1,22,29,.3))}.stepper-val{font-weight:900;font-size:20px}.stepper input[type=range]{height:32px}.sheet-body select,.sheet-body textarea,.sheet-body input:not([type=checkbox]):not([type=range]){box-sizing:border-box;max-width:100%;min-height:46px;padding:10px 12px;border-radius:12px;border:1px solid rgba(190,220,214,.22);background:#0f2833;color:var(--text);font:inherit;font-size:16px}.sheet-body textarea{width:100%}.toggle{min-height:52px;font-weight:700}.toggle i{background:#e8f0e229}.app{grid-template-rows:1fr calc(var(--tabbar) + var(--safe-b))}.tabbar{position:relative;background:linear-gradient(180deg,#153947,#0e2a36);border-top:1px solid rgba(240,226,186,.1);box-shadow:0 -10px 30px #03101640;padding:0 4px var(--safe-b);gap:2px}.tab{flex:1 1 0;min-width:max-content;min-height:var(--tabbar);padding:6px 2px 4px;gap:3px;font-size:14px;font-weight:800;color:#9fb6ba;transition:color .15s}.tab.active:before{display:none}.tab-icon{position:relative;display:grid;place-items:center;width:54px;height:30px;border-radius:15px;transition:background .2s,transform .2s var(--ease-spring)}.tab.active{color:var(--accent)}.tab.active .tab-icon{background:#f6bf4c2e;box-shadow:inset 0 0 0 1px #f6bf4c4d}.tab:active .tab-icon{transform:scale(.92)}.tab-label{white-space:nowrap;line-height:1.1}.tab-badge{position:absolute;top:-5px;right:6px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#ff7a45;color:#fff;font:900 12px/20px var(--font);font-style:normal;text-align:center;box-shadow:0 0 0 2px #12323f;animation:badge-in .35s var(--ease-spring)}@keyframes badge-in{0%{transform:scale(.3)}}.side,.drawer{background:radial-gradient(ellipse 120% 40% at 50% 0,rgba(246,191,76,.07),transparent 70%),linear-gradient(180deg,#143846,#0f2b37)}.side-head,.drawer .side-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 18px;min-height:60px;border-bottom:1px solid var(--line);background:#143846f5;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);position:sticky;top:0;z-index:2}.side-head b{font-size:19px;font-weight:900}.drawer{top:calc(64px + var(--safe-t));padding-top:0;border-radius:22px 22px 0 0;border-top:1px solid rgba(240,226,186,.18);box-shadow:0 -12px 34px #030e1459;animation:drawer-in .24s cubic-bezier(.2,.9,.3,1);overscroll-behavior:contain}.drawer .side-head{border-radius:22px 22px 0 0}@keyframes drawer-in{0%{transform:translateY(26px);opacity:0}}.panel{padding:4px 16px 32px}.panel>h2:first-child,.panel>.panel-head:first-child h2{margin-top:14px}.hud{top:calc(10px + var(--safe-t));left:10px;right:10px;gap:6px}.hud-level,.hud-stat,.hud-btn,.fab,.strip-chip{background:linear-gradient(180deg,#1b4352f0,#0d2530f0);border:1px solid rgba(240,226,186,.14);box-shadow:0 6px 16px #0310164d,var(--hi);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--text)}.hud-level{width:48px;height:48px;flex-shrink:0;font-size:18px;font-weight:900}.hud-level .ring{inset:2px}.ring-bg{stroke:#b59bff2e}.ring-fg{stroke:var(--violet);filter:drop-shadow(0 0 3px rgba(181,155,255,.6))}.hud-level.ready{box-shadow:0 0 0 2px var(--accent),0 0 18px #f6bf4c73}.hud-level .dot{border-color:var(--ink-800)}.hud-stat{min-height:44px;padding:0 14px 0 8px;gap:7px;font-size:16px;font-weight:900;font-variant-numeric:tabular-nums}.hud-stat b{font-weight:900}.hud-stat svg{flex:0 0 auto}.hud-coins b{color:#ffe7a3}.hud-btn{width:44px;height:44px;border-radius:15px}.offline-pill{font-size:13px}.task-card{top:calc(66px + var(--safe-t));left:10px;width:min(390px,calc(100% - 76px));padding:12px 14px 12px 16px;border-radius:20px;background:linear-gradient(160deg,#193f4af5,#0c242ff5);border:1px solid rgba(240,226,186,.2);box-shadow:0 12px 30px #03101652,var(--hi),inset 4px 0 0 var(--accent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:task-in .35s var(--ease-spring)}@keyframes task-in{0%{transform:translateY(-8px) scale(.98);opacity:0}}.task-card.done{border-color:#4fd19499;box-shadow:0 0 0 1px #4fd1944d,0 0 26px #4fd19438,0 12px 30px #03101652,inset 4px 0 0 var(--green)}.task-card.finale{background:linear-gradient(140deg,#3b5a4c,#163746);border-color:#f6bf4c99}.task-head{gap:2px;color:inherit;min-height:0}.task-top{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}.task-step{font-size:11.5px;font-weight:900;letter-spacing:1px;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-chevron{flex:0 0 auto;color:var(--muted);transition:transform .2s}.task-card.collapsed .task-chevron{transform:rotate(180deg)}.task-head b{font-size:17px;font-weight:900;line-height:1.2}.task-hint{font-size:14px;line-height:1.38;color:#d5e2df;margin:6px 0 10px}.task-live{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;color:#a7f0cb;margin:-4px 0 10px}.task-live i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 #4fd19499;animation:live 1.6s infinite}@keyframes live{70%{box-shadow:0 0 0 7px #4fd19400}to{box-shadow:0 0 #4fd19400}}.task-foot{margin-top:10px}.task-reward{gap:12px;font-size:15px}.task-card .btn{flex:0 0 auto}.task-card.done .btn-gold{animation:cta-glow 1.6s ease-in-out infinite}@keyframes cta-glow{50%{box-shadow:0 3px 0 var(--edge),0 0 22px #f6bf4ca6,inset 0 1px #ffffff59}}.task-card.collapsed{padding-top:10px;padding-bottom:10px}.task-card.collapsed .task-mini{display:flex}.task-mini{display:none;align-items:center;gap:10px;margin-top:8px}.task-card .task-hint-line{display:block;width:100%;min-height:0;padding:0;border:0;background:none;text-align:left;font:inherit;font-size:13.5px;color:#c9d8d5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:3px 0 0;-webkit-line-clamp:unset}.task-card.collapsed .task-live{margin:6px 0 0}.task-card.collapsed .task-head b{font-size:16px}.task-mini .progress{flex:1}.map-controls{top:calc(66px + var(--safe-t));right:10px}.fab{width:46px;height:46px;border-radius:15px}.train-strip{bottom:10px;padding:4px 10px;gap:8px}.strip-chip{border-radius:16px;min-height:54px;padding:4px 14px 4px 6px;gap:8px;transition:transform .12s}.strip-chip:active{transform:scale(.97)}.strip-chip img{width:64px;height:34px}.strip-text b{font-size:14.5px;font-weight:900}.strip-text small{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}.strip-chip.idle{border-color:#4fd194b3;box-shadow:0 0 0 1px #4fd19440,0 6px 16px #0310164d}.strip-chip.idle{animation:idle-ping 2.4s ease-out infinite}@keyframes idle-ping{0%{box-shadow:0 0 #4fd1948c,0 6px 16px #0310164d}60%,to{box-shadow:0 0 0 10px #4fd19400,0 6px 16px #0310164d}}.strip-chip.empty{width:54px;border-style:dashed;border-color:#f0e2ba4d;color:var(--accent)}.strip-bar{height:4px;background:linear-gradient(90deg,#f6bf4c,#ffe08a);border-radius:0 2px 2px 0}.sheet-wrap{background:#030c1152}.sheet{background:radial-gradient(ellipse 120% 50% at 0 0,rgba(124,196,180,.09),transparent 60%),linear-gradient(170deg,#1a4352,#11303d);border:1px solid rgba(240,226,186,.16);border-bottom:0;border-radius:26px 26px 0 0;box-shadow:var(--shadow-2),var(--hi);animation:slide-up .28s cubic-bezier(.2,.9,.3,1.05)}.sheet:before{content:"";position:absolute;inset:0 24px auto;height:3px;border-radius:0 0 3px 3px;background:var(--accent);opacity:.85}.sheet{position:relative}.sheet-head{padding:18px 14px 10px 20px;background:none}.sheet-grip{top:8px;background:#f0e2ba4d}.sheet-title{font-size:21px;font-weight:900;line-height:1.2;letter-spacing:0}.sheet-sub{font-size:14px;font-weight:700;margin-top:4px}.sheet-body{padding:0 20px 22px}.sheet-actions{bottom:-22px;padding:14px 0 10px;background:linear-gradient(180deg,#11303d00,#11303d 34%)}.sheet-actions .btn{width:100%;min-height:54px;font-size:16.5px}.toasts{top:auto;bottom:calc(var(--tabbar) + var(--safe-b) + 90px);gap:8px;width:min(92vw,440px)}.toast{display:flex;align-items:center;gap:10px;text-align:left;padding:11px 16px 11px 12px;border-radius:16px;font-size:14.5px;font-weight:800;background:#0a1e28f2;border:1px solid rgba(240,226,186,.16);box-shadow:0 12px 28px #000a106b;animation:toast-in .32s var(--ease-spring)}.toast:before{content:"";flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--blue);box-shadow:0 0 10px currentColor}.toast-success:before,.toast-contract:before,.toast-deliver:before{background:var(--green);color:var(--green)}.toast-haul:before,.toast-produce:before{background:var(--accent);color:var(--accent)}.toast-event:before{background:var(--violet);color:var(--violet)}.toast-error{border-color:#ff7a6899;color:#ffe0da}.toast-error:before{background:var(--red);color:var(--red)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px) scale(.96)}}#fx-layer{position:fixed;inset:0;pointer-events:none;z-index:200}.fly{position:fixed;left:-11px;top:-11px;width:22px;height:22px;border-radius:50%;will-change:transform}.fly-coin{background:radial-gradient(circle at 35% 30%,#fff5c2,#ffcf4d 45%,#d18a0e);box-shadow:0 0 0 2px #7a4c0073 inset,0 2px 6px #00000059}.fly-xp{border-radius:4px;transform-origin:center;background:radial-gradient(circle at 40% 35%,#f1eaff,#b59bff 60%,#7553e0);clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 100%,50% 76%,20% 100%,30% 60%,0 38%,38% 36%)}.fly-box{border-radius:6px;background:linear-gradient(180deg,#e6b36a,#b17a3a)}.celebrate{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);min-width:min(300px,86vw);max-width:92vw;padding:20px 26px 18px;border-radius:24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text);background:radial-gradient(ellipse 90% 70% at 50% 0,rgba(246,191,76,.35),transparent 70%),linear-gradient(180deg,#1f4d5c,#123341);border:1px solid rgba(246,191,76,.55);box-shadow:0 0 0 6px #f6bf4c14,0 24px 60px #000a108c;animation:celebrate-in .5s var(--ease-spring)}.celebrate:before{content:"";position:absolute;inset:-40px;z-index:-1;background:conic-gradient(from 0deg,transparent 0 8%,rgba(246,191,76,.16) 8% 12%,transparent 12% 20%,rgba(246,191,76,.16) 20% 24%,transparent 24% 33%,rgba(246,191,76,.16) 33% 37%,transparent 37% 45%,rgba(246,191,76,.16) 45% 49%,transparent 49% 58%,rgba(246,191,76,.16) 58% 62%,transparent 62% 70%,rgba(246,191,76,.16) 70% 74%,transparent 74% 83%,rgba(246,191,76,.16) 83% 87%,transparent 87%);border-radius:50%;mask:radial-gradient(circle,#000 30%,transparent 70%);-webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);animation:rays 6s linear infinite}@keyframes rays{to{transform:rotate(360deg)}}.celebrate b{font-size:23px;font-weight:900;line-height:1.15}.celebrate.big b{font-size:28px}.celebrate span{font-size:14.5px;font-weight:700;color:#d5e2df}.celebrate-chips{display:flex;gap:8px;margin-top:6px}.celebrate-chips em{font-style:normal;font-weight:900;font-size:17px;padding:6px 14px;border-radius:999px;background:#00000040}.c-coin{color:var(--coin);display:inline-flex;align-items:center;gap:6px}.c-coin:before{content:"";width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff5c2,#ffcf4d 45%,#d18a0e);box-shadow:inset 0 0 0 1.5px #7a4c0073}.c-xp{color:#d8c8ff}.celebrate.out{animation:celebrate-out .35s ease-in forwards}@keyframes celebrate-in{0%{opacity:0;transform:translate(-50%,-40%) scale(.7)}}@keyframes celebrate-out{to{opacity:0;transform:translate(-50%,-62%) scale(.92)}}.factory{display:grid;grid-template-columns:84px minmax(0,1fr);gap:4px 12px;padding:12px;margin:10px 0;align-items:start}.factory-img{grid-row:span 2;width:84px;height:68px;border-radius:14px;background:radial-gradient(ellipse at 50% 72%,rgba(126,178,90,.38),transparent 70%)}.factory-main{display:contents}.factory-main>.row-between,.factory-main>.recipes-mini,.factory-main>.muted,.factory-main>.btn:not(.btn-secondary){grid-column:2}.factory-main>.row-between b{font-size:16.5px;font-weight:900}.factory-main>.row-between{align-self:end;flex-wrap:wrap;row-gap:4px;min-width:0}.recipes-mini{font-size:13.5px;font-weight:800}.factory-main>.queue,.factory-main>.btn-secondary{grid-column:1 / -1}.factory.locked{opacity:.86}.factory.locked .factory-main>.muted{font-size:14px}.factory.hl{box-shadow:0 0 0 2px var(--accent),0 0 24px #f6bf4c40}.queue{min-width:0;overflow-x:auto;padding:8px 0 2px;gap:8px;scrollbar-width:none}.queue::-webkit-scrollbar{display:none}.q-slot{flex:0 0 76px;width:76px;height:76px;border-radius:16px;font-size:14px;font-weight:900;background:linear-gradient(160deg,#04161e73,#04161e40);box-shadow:inset 0 2px 6px #000c124d;font-variant-numeric:tabular-nums}.q-slot.empty{border:1.5px dashed rgba(240,226,186,.28);color:var(--accent);background:#f6bf4c0a}.q-slot.empty~.q-slot.empty{color:#f0e2ba73;border-color:#f0e2ba24;background:transparent}.q-slot.empty:active{transform:scale(.95)}.q-slot.running{border-color:#4fd194b3;box-shadow:inset 0 0 0 1px #4fd19433,0 0 14px #4fd1942e}.q-qty{top:4px;right:7px;font-size:12.5px;font-weight:900}.q-bar{height:5px;background:linear-gradient(90deg,#34b678,#6ee0a6)}.q-actions button{width:44px;height:44px;border-radius:10px;font-size:15px;font-weight:900;color:var(--text)}.q-slot:has(.q-actions){flex-basis:104px;width:104px}.inv-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}.inv-item{border-radius:14px;padding:8px 4px 6px;background:linear-gradient(160deg,#e8f0e214,#e8f0e208);color:var(--text)}.inv-item b{font-size:17px;font-weight:900}.inv-item small{font-size:12.5px;font-weight:700}.wh-bar{height:14px;border-radius:8px;background:#0210166b;box-shadow:inset 0 1px 3px #00000059}.recipe-eta{display:flex;align-items:center;gap:8px;margin:6px 0 2px;font-size:15px;color:#ffe2a0}.input-row{min-height:48px;gap:10px}.recipe-need{display:flex;align-items:center;gap:6px;font-weight:800;font-size:14px}.recipe-need .ok-text,.recipe-need .warn-text{font-weight:900}.contract{padding:12px 14px;margin:10px 0}.contract.story{border-color:#f6bf4c8c;background:linear-gradient(140deg,#f6bf4c29,#e8f0e20a)}.contract-head b{font-size:16.5px;font-weight:900}.contract-reward{font-size:14.5px}.contract-line{font-size:14px;gap:12px}.contract-wrap>.link{margin:-6px 6px 6px auto;justify-content:flex-end;min-height:44px}.line-bar{height:7px;background:#02101666}.train-row,.pick,.train-chip,.line-chip,.route,.slot,.puzzle-tile,.pz-order,.ev-tier,.seg button{background:linear-gradient(160deg,#e8f0e216,#e8f0e209);border-radius:16px}.train-chip.active,.line-chip.active,.route.active,.seg button.active,.pz-order.sel{border-color:var(--accent);background:linear-gradient(160deg,#f6bf4c29,#f6bf4c0d);box-shadow:0 0 0 1px #f6bf4c33,0 6px 16px #f6bf4c14}.train-chip,.line-chip,.route{transition:transform .12s,border-color .15s}.train-chip:active,.line-chip:active,.route:active,.puzzle-tile:active,.pick:active{transform:scale(.98)}.route-path{font-weight:900;font-size:15px}.route-stats,.route-eta,.train-row-status,.log,.tl-item,.kv,.res-list li,.legend{font-size:13.5px}.train-chip small,.puzzle-tile small,.pz-tbtn small,.inv-item small,.strip-text small{font-size:12.5px}.slots{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}.slot{min-width:0;font-weight:800}.slot img{max-width:100%}.depot-card .big-level{font-size:40px;font-weight:900}.train-card{overflow:hidden}.train-card>img{background:radial-gradient(ellipse at 50% 70%,rgba(186,199,159,.22),transparent 63%)}.train-card.owned{border-color:#4fd19473}.train-card.locked{opacity:.72}.train-card-body b{font-weight:900}.train-stats span{display:inline-flex;align-items:center;gap:6px;background:#0418223d;border-radius:8px;padding:4px 8px}.service-tabs{gap:8px}.service-tabs .btn{min-height:44px}.daily-card{border-color:#b59bff80;background:linear-gradient(135deg,#b59bff33,#e8f0e208)}.puzzle-tile{min-height:96px;font-weight:800}.puzzle-tile.daily{border-color:var(--violet)}.puzzle-screen{background:radial-gradient(ellipse at top left,#21505c,#0e2a36 70%)}.pz-head{min-height:64px;background:#143846e6}.pz-title b{font-size:17px;font-weight:900}.pz-clock{font-variant-numeric:tabular-nums;background:#f6bf4c24;color:#ffe2a0;border:1px solid rgba(246,191,76,.3)}.pz-map>svg{border:1px solid rgba(240,226,186,.18);box-shadow:var(--hi),0 8px 24px #04131b40}.pz-node{stroke:#d7d9b4;stroke-width:.65}.pz-dur{fill:#1d4250;stroke:#bacab9}.pz-train:focus-visible{outline:none;filter:drop-shadow(0 0 2px #f2d895)}.pz-train.idle circle{stroke:#e0e4c4b3;stroke-width:.45}.pz-train.sel circle{stroke:#f2d895;stroke-width:.8}.pz-opt,.pz-tbtn{min-height:48px}.pz-actions{flex-wrap:wrap}.pz-actions .btn{flex:1 1 auto;min-width:0}.pz-result-card{background:radial-gradient(ellipse 90% 60% at 50% 0,rgba(246,191,76,.25),transparent 70%),linear-gradient(180deg,#1f4d5c,#123341);border:1px solid rgba(246,191,76,.45)}.app.wide{grid-template-columns:1fr;grid-template-rows:1fr}.app.wide .map-area{grid-row:1;grid-column:1}.app.wide .tabbar,.app.wide .side{grid-column:1 / -1;grid-row:1 / -1}.app.wide .tabbar{position:absolute;z-index:25;left:50%;bottom:16px;transform:translate(-50%);padding:6px;gap:4px;border-radius:24px;border:1px solid rgba(240,226,186,.16);background:linear-gradient(180deg,#1b4352f2,#0d2530f5);box-shadow:0 16px 40px #030e1473,var(--hi);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:left .25s cubic-bezier(.2,.9,.3,1)}.app.wide.menu-open .tabbar{left:calc((100% - 446px)/2)}.app.wide .tab{flex:0 0 auto;flex-direction:row;gap:8px;min-height:52px;padding:0 18px 0 10px;border-radius:18px;font-size:15px}.app.wide .tab-icon{width:38px;height:38px;border-radius:13px}.app.wide .tab.active{background:#f6bf4c1f}.app.wide .tab.active .tab-icon{background:#f6bf4c38}@media(hover:hover){.app.wide .tab:not(.active):hover{background:#e8f0e20f;color:var(--text)}}.app.wide .side{position:absolute;top:0;right:0;bottom:0;width:430px;z-index:20;overflow-y:auto;border-left:1px solid rgba(240,226,186,.14);box-shadow:-16px 0 40px #030e1459;animation:side-in .24s cubic-bezier(.2,.9,.3,1)}@keyframes side-in{0%{transform:translate(30px);opacity:0}}.app.wide .side .panel{padding-bottom:40px}.app.wide .train-strip{bottom:92px;left:0;right:auto;max-width:calc(100% - 20px)}.app.wide.menu-open .train-strip{max-width:calc(100% - 460px)}.app.wide .toasts{top:calc(16px + var(--safe-t));bottom:auto}.app.wide.menu-open .toasts{left:calc((100% - 446px)/2)}.app.wide.menu-open .hud,.app.wide.menu-open .map-controls{right:446px}.app.wide .sheet-wrap{inset:0;justify-content:flex-end;align-items:stretch;padding:72px 16px 16px 0;background:transparent;pointer-events:none}.app.wide .sheet{width:430px;max-height:100%;border-radius:24px;border-bottom:1px solid rgba(240,226,186,.16);animation:side-in .24s cubic-bezier(.2,.9,.3,1)}.app.wide .sheet-grip{display:none}.app.wide .task-card{width:380px}@media(pointer:coarse){.map-controls .fab:not(:last-child){display:none}}@media(pointer:coarse)and (max-width:999px){.task-card{width:calc(100% - 78px)}}@media(max-width:480px){.hud{gap:5px}.hud .hide-xs{display:none}.hud-stat{font-size:15px;padding:0 12px 0 7px;gap:6px}.task-hint{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}}@media(max-width:374px){:root{--tabbar: 60px}.tab-icon{width:44px}.hud-level{width:44px;height:44px}.hud-stat{font-size:14px;padding:0 9px 0 6px;gap:4px}.hud-stat svg{width:18px;height:18px}.hud-btn{width:40px;height:44px}.hud .hud-btn+.hud-btn{margin-left:-1px}.panel{padding-left:12px;padding-right:12px}.sheet-body{padding:0 14px 20px}.pz-actions .btn{padding-left:10px;padding-right:10px;font-size:14px}}@media(max-width:359px){.hud{left:6px;right:6px;gap:4px}.hud-level{width:42px;height:42px;font-size:16px}.hud-stat{font-size:13.5px;padding:0 8px 0 5px;gap:4px}.hud-btn{width:40px}}@media(max-height:500px)and (orientation:landscape){:root{--tabbar: 54px}.tab{flex-direction:row;gap:6px;min-height:54px}.tab-icon{width:40px;height:32px}.hud{top:calc(6px + var(--safe-t));left:calc(8px + env(safe-area-inset-left,0px));right:calc(8px + env(safe-area-inset-right,0px))}.hud-level{width:42px;height:42px;font-size:16px}.hud-stat,.hud-btn{min-height:40px;height:40px}.hud-stat{font-size:14.5px}.task-card{top:calc(54px + var(--safe-t));left:calc(8px + env(safe-area-inset-left,0px));width:min(340px,46vw);padding:8px 12px 8px 14px}.task-head b{font-size:15px}.task-hint{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;margin:4px 0 6px}.task-foot{margin-top:6px}.map-controls{top:calc(54px + var(--safe-t))}.fab{width:40px;height:40px}.train-strip{bottom:6px}.strip-chip{min-height:46px}.drawer{top:calc(54px + var(--safe-t))}.drawer .side-head{min-height:48px;padding-top:4px;padding-bottom:4px}.sheet{max-height:92%;width:min(560px,100%);margin:0 auto}.sheet-wrap{justify-content:center}.toasts{bottom:calc(var(--tabbar) + 62px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
