@font-face{font-family:"Poxast";src:url("../../Poxast-subset.woff2") format("woff2");font-display:swap}
:root{--void:#0b0f09;--deep:#11160e;--ink:#182015;--ink2:#344226;--mid:#718153;--panel2:#9cab72;--panel:#b8c78d;--hi:#d8e8a8}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% 0,#293222,#151a12 52%,#090c07);color:var(--panel);font-family:"Courier New",monospace}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow-x:hidden}button,a{font:inherit}.hidden{display:none!important}
.train-shell{width:min(100%,1180px);margin:auto;padding:18px 14px 46px}.train-topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:16px;margin-bottom:13px;text-transform:uppercase;letter-spacing:1.3px}.back-link{color:var(--panel);text-decoration:none;font-size:11px}.train-title{text-align:center}.train-title span{display:block;color:var(--mid);font-size:10px;margin-bottom:3px}.train-title h1{margin:0;font:400 clamp(27px,5vw,54px)/.9 "Poxast",monospace;color:var(--hi);text-shadow:3px 3px 0 var(--ink2)}.train-help{text-align:right;color:var(--mid);font-size:10px}.machine{background:#303a29;border:5px solid var(--void);box-shadow:7px 7px 0 #070a06;padding:12px}
.hud{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-bottom:9px}.hud-block{min-height:58px;background:var(--panel2);border:3px solid var(--ink);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:var(--ink);box-shadow:inset 0 0 0 2px rgba(216,232,168,.18)}.hud-block span{font-size:7px;letter-spacing:1.2px;color:var(--ink2);margin-bottom:5px}.hud-block strong{font-size:12px;letter-spacing:.7px}.status-panel{min-height:42px;display:flex;gap:10px;align-items:center;background:var(--ink);border:3px solid var(--void);padding:8px 10px;margin-bottom:8px;font-size:10px;line-height:1.35;letter-spacing:.7px}.status-led{width:9px;height:9px;background:var(--hi);box-shadow:0 0 0 2px var(--ink2),0 0 10px rgba(216,232,168,.5);flex:0 0 auto}
.route-board{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:8px}.route-card{min-height:34px;display:flex;align-items:center;padding:7px 9px;border:2px solid var(--ink);background:rgba(156,171,114,.42);color:var(--panel);font-size:8px;letter-spacing:.6px;transition:transform .16s ease,background .16s ease,color .16s ease}.route-card.selected{background:var(--hi);color:var(--ink);transform:translateY(-1px);box-shadow:0 3px 0 var(--ink2)}.route-card.danger{border-style:dashed}.route-card.danger.selected{background:var(--panel2)}
.screen-shell{position:relative;border:5px solid var(--ink);background:var(--void);box-shadow:inset 0 0 0 3px var(--ink2);overflow:hidden}.game-screen{position:relative;aspect-ratio:12/7;background:var(--deep);touch-action:manipulation;overflow:hidden}.game-screen::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:linear-gradient(rgba(216,232,168,.025) 50%,transparent 50%) 0 0/100% 4px;mix-blend-mode:screen}#trainCanvas{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}
.board-overlay{position:absolute;inset:0;z-index:8;display:grid;place-items:center;padding:12px;background:rgba(11,15,9,.55);backdrop-filter:blur(1px);overflow-y:auto}.overlay-card{width:min(92%,620px);max-height:calc(100% - 8px);overflow-y:auto;background:var(--panel);color:var(--ink);border:4px solid var(--ink);box-shadow:8px 8px 0 var(--void),inset 0 0 0 3px rgba(52,66,38,.18);padding:18px;text-align:center}.overlay-kicker{font-size:9px;letter-spacing:2px;color:var(--ink2);margin-bottom:7px}.overlay-card h2{margin:0 0 9px;font-size:clamp(18px,4vw,28px);letter-spacing:1px}.overlay-card p{font-size:10px;line-height:1.5;margin:7px auto;max-width:540px}.diorama-demo{position:relative;height:72px;margin:10px auto 12px;max-width:390px;overflow:hidden;background:rgba(52,66,38,.12);border:2px solid rgba(24,32,21,.35)}.diorama-demo::before,.diorama-demo::after{content:"";position:absolute;left:6%;right:6%;height:3px;background:var(--ink2);transform-origin:left center}.diorama-demo::before{top:48px;transform:rotate(-8deg)}.diorama-demo::after{top:48px;transform:rotate(8deg)}.demo-train{position:absolute;left:34%;top:34px;width:42px;height:15px;background:var(--ink);box-shadow:3px 3px 0 var(--ink2)}.demo-train::before{content:"";position:absolute;left:4px;top:-11px;width:16px;height:12px;background:var(--mid)}.demo-train::after{content:"";position:absolute;left:7px;right:7px;bottom:-5px;height:6px;background:radial-gradient(circle,var(--ink) 0 45%,transparent 48%) 0 0/16px 6px repeat-x}.demo-tree{position:absolute;right:12%;top:10px;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:36px solid var(--mid)}
.pixel-btn{min-height:48px;border:4px solid var(--ink);background:var(--hi);color:var(--ink);font-weight:900;letter-spacing:1px;padding:9px 18px;box-shadow:5px 5px 0 var(--ink2);cursor:pointer;text-transform:uppercase}.pixel-btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink2)}.pixel-btn:disabled{opacity:.48;cursor:not-allowed}.control-deck{display:grid;grid-template-columns:1fr minmax(220px,330px) 1fr;gap:12px;align-items:center;padding:10px 4px 2px}.control-copy{font-size:9px;line-height:1.45;color:var(--mid);letter-spacing:.7px}.control-copy.right{text-align:right}.switch-btn{width:100%;font-size:14px;background:var(--panel)}.route-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:5px 13px;margin-top:9px;padding-top:9px;border-top:2px dashed rgba(184,199,141,.25);color:var(--mid);font-size:8px}.route-legend strong{color:var(--panel)}.result-stats{line-height:1.8!important}.game-info{margin-top:26px}.game-info h2,.game-info h3{color:var(--hi)}
@media(max-width:760px){.train-shell{padding:10px 8px 30px}.train-topbar{grid-template-columns:1fr auto}.train-title{grid-column:2;text-align:right}.train-help{display:none}.machine{padding:8px;border-width:4px}.hud{grid-template-columns:repeat(2,minmax(0,1fr))}.hud-block:last-child{grid-column:1/-1;min-height:42px}.hud-block{min-height:48px}.route-board{gap:5px}.route-card{font-size:7px;min-height:32px;padding:6px}.control-deck{grid-template-columns:1fr minmax(170px,240px)}.control-copy.right{display:none}.overlay-card{padding:14px}}
@media(max-width:420px){.train-title h1{font-size:30px}.train-title span{font-size:8px}.back-link{font-size:9px}.machine{padding:6px}.hud{gap:5px}.hud-block{border-width:2px;min-height:45px}.status-panel{font-size:8px;padding:7px;border-width:2px}.route-card{font-size:6.5px;line-height:1.25}.screen-shell{border-width:3px}.board-overlay{padding:5px}.overlay-card{width:97%;padding:10px;border-width:3px;box-shadow:5px 5px 0 var(--void)}.overlay-card p{font-size:9px;line-height:1.35}.diorama-demo{height:54px;margin:6px auto 8px}.pixel-btn{min-height:44px}.control-deck{grid-template-columns:1fr;padding-top:8px}.control-copy{display:none}.switch-btn{min-height:52px}.route-legend{font-size:7px;gap:4px 8px}}
@media(max-width:340px){.train-shell{padding-left:5px;padding-right:5px}.train-title h1{font-size:26px}.hud-block span{font-size:6px}.overlay-card p{font-size:8px}.diorama-demo{display:none}.route-card{font-size:6px}.route-legend{display:none}}
@media(orientation:landscape) and (max-height:560px){.train-shell{width:min(100%,980px);padding-top:5px}.train-topbar{margin-bottom:5px}.train-title h1{font-size:27px}.machine{padding:6px}.hud{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:5px}.hud-block,.hud-block:last-child{min-height:36px;grid-column:auto}.status-panel{min-height:28px;margin-bottom:4px;padding:3px 7px}.route-board{margin-bottom:4px}.route-card{min-height:24px;padding:3px 6px}.game-screen{height:min(58vh,350px);aspect-ratio:auto}.control-deck{padding-top:5px}.route-legend{display:none}.overlay-card{padding:9px}.overlay-card p{margin:3px auto;line-height:1.25}.diorama-demo{display:none}.pixel-btn{min-height:38px}}
@media(min-width:1200px){.hud-block strong{font-size:14px}.route-card{font-size:9px}}
@media(prefers-reduced-motion:reduce){.game-screen::after{display:none}.route-card{transition:none}}
