:root{--paper: #f0e9d8;--paper-2: #ebe2cd;--ink: #1d1b17;--ink-2: #3d3931;--ink-3: #6b6557;--rule: #c9bfa8;--line3: #b83a7a;--line4: #1d5b8e;--line6: #2f7a4a;--flm: #c48a1f;--cmd: #6d4aa0;--station: #f7f1de;--board-bg: #141210;--board-text: #f0b429;--board-dim: #7a5a12}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;background:var(--paper);color:var(--ink);font-family:DM Sans,system-ui,sans-serif;overflow:hidden;-webkit-font-smoothing:antialiased}#root{width:100vw;height:100vh;position:relative}.train-cursor,.train-cursor *{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'><g transform='rotate(-12 16 16)'><rect x='5' y='9' width='22' height='14' rx='4' ry='4' fill='%23f5ecd6' stroke='%23222' stroke-width='1.6'/><rect x='7.5' y='11.5' width='6' height='5' rx='1' fill='%23222'/><rect x='15.5' y='11.5' width='6' height='5' rx='1' fill='%23222'/><rect x='23' y='11.5' width='3' height='5' rx='1' fill='%23222'/><rect x='5' y='20' width='22' height='1.4' fill='%23c9a14a'/><circle cx='10' cy='24' r='2' fill='%23222'/><circle cx='22' cy='24' r='2' fill='%23222'/><rect x='2.5' y='14' width='3' height='4' rx='1' fill='%23c9a14a' stroke='%23222' stroke-width='1'/></g></svg>") 16 16,pointer!important}@keyframes paneExpand{0%{transform:scale(.12);opacity:0}60%{opacity:1}to{transform:scale(1);opacity:1}}@keyframes paneFadeIn{0%{opacity:0}to{opacity:1}}@keyframes doorIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{50%{opacity:.35}}.led-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#f0b429;margin-right:8px;vertical-align:middle;animation:blink 1.4s infinite}.station{transition:transform .22s cubic-bezier(.2,.8,.2,1);transform-box:fill-box;transform-origin:center}.station:hover{transform:scale(1.12)}@keyframes stationPulse{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}@keyframes recPulse{0%,to{opacity:1}50%{opacity:.3}}
