:root{--bg:#0b0a18;--bg-2:#15132a;--panel:#1d1b38;--panel-edge:#2c2956;--ink:#f3eedc;--ink-dim:#a8a3c4;--yellow:#ffd83d;--pink:#ff3b7a;--cyan:#3ae0e0;--green:#59e07a;--red:#ff5b3b;--rail:#6a5a3a}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);min-height:100vh;image-rendering:pixelated;-webkit-font-smoothing:none;margin:0;padding:0;font-family:VT323,ui-monospace,monospace;font-size:20px;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:9999;mix-blend-mode:multiply;background:repeating-linear-gradient(#0000002e 0 2px,#0000 2px 4px);position:fixed;inset:0}body:after{content:"";pointer-events:none;z-index:9998;background:radial-gradient(#0000 55%,#0000008c 100%);position:fixed;inset:0}.pixel{letter-spacing:.02em;font-family:"Press Start 2P",monospace}button,input{font-family:inherit}.app{max-width:1280px;margin:0 auto;padding:28px 24px 80px}.topbar{border-bottom:4px dashed var(--panel-edge);justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;padding-bottom:14px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand-mark{background:var(--yellow);width:44px;height:44px;position:relative;box-shadow:inset 0 -8px #c79f00,0 0 0 4px #000}.brand-mark:before,.brand-mark:after{content:"";background:#000;width:10px;height:10px;position:absolute;bottom:-10px;box-shadow:0 4px #000}.brand-mark:before{left:6px}.brand-mark:after{right:6px}.brand h1{color:var(--ink);text-shadow:3px 3px #000;margin:0;font-size:16px;line-height:1.4}.brand h1 .sub{color:var(--cyan);margin-top:6px;font-size:10px;display:block}.topbar-meta{color:var(--ink-dim);text-align:right;font-size:20px}.topbar-meta strong{color:var(--yellow)}.syncpill{padding:6px 8px;font-family:"Press Start 2P",monospace;font-size:9px;display:inline-block;box-shadow:0 0 0 3px #000}.syncpill.on{background:var(--green);color:#052a10}.syncpill.off{background:var(--red);color:#2a0010;animation:.8s steps(2,end) infinite blink}.cabinet{background:var(--panel);box-shadow:inset 0 0 0 4px var(--panel-edge), 0 8px 0 #000;border:4px solid #000;padding:18px;position:relative}.cabinet-screen{background:#050410;border:4px solid #000;padding:24px 18px 14px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 4px #1b1a3d,inset 0 0 60px #3ae0e014}.screen-label{color:var(--cyan);opacity:.7;font-size:9px;position:absolute;top:8px;left:14px}.screen-label.r{color:var(--pink);left:auto;right:14px}.reels-wrap{gap:12px;margin-top:18px;margin-bottom:22px;display:grid}.reel{background:#0e0c22;border:3px solid #000;height:64px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #2c2956}.reel-window{position:absolute;inset:0}.reel-strip{will-change:transform;position:absolute;top:0;left:0;right:0}.reel-cell{height:64px;color:var(--ink);text-shadow:3px 3px #000;border-bottom:2px dashed #1d1b38;justify-content:center;align-items:center;font-family:"Press Start 2P",monospace;font-size:18px;display:flex}.reel.locked .reel-cell.win{color:var(--yellow);animation:.4s steps(2,end) infinite blink}.reel-glow{pointer-events:none;background:linear-gradient(#050410e6 0%,#05041000 25% 75%,#050410e6 100%);position:absolute;inset:0}.reel-marker{border-top:8px solid #0000;border-bottom:8px solid #0000;border-left:10px solid var(--pink);filter:drop-shadow(2px 0 #000);width:0;height:0;position:absolute;top:50%;left:-6px;transform:translateY(-50%)}.reel-marker.r{left:auto;right:-6px;transform:translateY(-50%)scaleX(-1)}@keyframes blink{50%{color:var(--ink)}}.track-area{height:120px;margin-top:4px;position:relative}.rails{background:linear-gradient(#0b0a18 0 4px,#0000 4px) 0 0/8px 14px repeat-x,linear-gradient(#000 0 3px,#0000 3px) 0 4px/100% 14px no-repeat,linear-gradient(#000 0 3px,#0000 3px) 0 10px/100% 14px no-repeat;background-color:var(--rail);height:14px;image-rendering:pixelated;position:absolute;bottom:18px;left:0;right:0}.rails:before{content:"";z-index:-1;background:repeating-linear-gradient(90deg,#0000 0 14px,#2a1d10 14px 22px);position:absolute;inset:-4px 0}.train{z-index:2;align-items:flex-end;gap:4px;display:flex;position:absolute;bottom:18px;left:0;transform:translate(calc(100vw + 100%))}.train.in{animation:2.4s cubic-bezier(.18,.6,.22,1) forwards train-arrive}@keyframes train-arrive{0%{transform:translate(calc(100vw + 100%))}55%{transform:translate(38%)}82%{transform:translate(-1.8%)}90%{transform:translate(1.2%)}96%{transform:translate(-.5%)}to{transform:translate(0)}}.train.in .engine{animation:.28s steps(2,end) 7 chuff}@keyframes chuff{0%,to{translate:0}50%{translate:0 -2px}}.smoke{opacity:0;background:#d6d2ea;border-radius:50%;width:12px;height:12px;animation:1.4s linear infinite smoke;position:absolute}@keyframes smoke{0%{opacity:.9;transform:translate(0)scale(.6)}to{opacity:0;transform:translate(-40px,-50px)scale(1.6)}}.engine{background:var(--red);width:96px;height:72px;position:relative;box-shadow:inset 0 -10px #b03017,inset 0 6px #ff8a72,0 0 0 4px #000}.engine .cab{background:#2b2848;width:38px;height:26px;position:absolute;top:-22px;left:4px;box-shadow:inset 0 -6px #1a1830,0 0 0 4px #000}.engine .cab:after{content:"";background:var(--cyan);position:absolute;inset:6px 8px 8px;box-shadow:inset 2px 2px #93f0f0}.engine .chimney{background:#2b2848;width:14px;height:22px;position:absolute;top:-20px;right:18px;box-shadow:0 0 0 4px #000}.engine .chimney:before{content:"";background:#2b2848;height:6px;position:absolute;top:-6px;left:-4px;right:-4px;box-shadow:0 0 0 4px #000}.engine .light{background:var(--yellow);width:10px;height:14px;box-shadow:0 0 0 4px #000, 0 0 12px var(--yellow);position:absolute;top:18px;right:-6px}.engine .stripe{background:var(--yellow);height:6px;box-shadow:0 8px 0 var(--yellow);position:absolute;top:30px;left:0;right:0}.wheels{justify-content:space-between;display:flex;position:absolute;bottom:-14px;left:4px;right:4px}.wheel{width:18px;height:18px;box-shadow:inset 0 0 0 3px var(--ink), 0 0 0 3px #000;background:#0b0a18;border-radius:50%;position:relative}.wheel:after{content:"";background:var(--ink);border-radius:50%;position:absolute;inset:5px}.car{background:var(--cyan);color:#052424;text-align:center;justify-content:center;align-items:center;width:92px;height:60px;padding:0 6px;font-family:"Press Start 2P",monospace;font-size:9px;line-height:1.4;transition:transform .2s,background .2s;display:flex;position:relative;box-shadow:inset 0 -8px #1aa4a4,inset 0 6px #93f0f0,0 0 0 4px #000}.car.alt{background:var(--pink);color:#2a0010;box-shadow:inset 0 -8px #b3194c,inset 0 6px #ff8ab2,0 0 0 4px #000}.car.empty{color:var(--ink-dim);background:#1d1b38;box-shadow:inset 0 -8px #0f0e22,inset 0 6px #2c2956,0 0 0 4px #000}.car.filled.bump{animation:.4s cabump}@keyframes cabump{0%{transform:translateY(0)}30%{transform:translateY(-10px)}60%{transform:translateY(2px)}to{transform:translateY(0)}}.coupling{background:#000;align-self:center;width:6px;height:6px}.control-row{flex-wrap:wrap;align-items:center;gap:18px;margin-top:18px;display:flex}.pick-count{color:var(--ink-dim);align-items:center;gap:10px;font-size:22px;display:flex}.pick-count .num{color:var(--yellow);text-align:center;background:#0e0c22;border:3px solid #000;min-width:48px;padding:8px 12px;font-family:"Press Start 2P",monospace;font-size:22px;box-shadow:inset 0 0 0 3px #2c2956}.pick-count button{background:var(--panel);width:36px;height:36px;color:var(--ink);cursor:pointer;border:3px solid #000;font-family:"Press Start 2P",monospace;font-size:14px;box-shadow:inset 0 -4px #0f0e22,inset 0 4px #2c2956}.pick-count button:active{box-shadow:inset 0 4px #0f0e22,inset 0 -4px #2c2956}.btn-start{background:var(--yellow);color:#2a1d00;cursor:pointer;letter-spacing:.08em;border:4px solid #000;padding:18px 28px;font-family:"Press Start 2P",monospace;font-size:18px;transition:transform 80ms,box-shadow 80ms;box-shadow:inset 0 -8px #c79f00,inset 0 6px #fff2a8,0 6px #000}.btn-start.small{padding:12px 18px;font-size:12px;box-shadow:inset 0 -6px #c79f00,inset 0 4px #fff2a8,0 4px #000}.btn-start:hover{filter:brightness(1.05)}.btn-start:active{transform:translateY(4px);box-shadow:inset 0 -8px #c79f00,inset 0 6px #fff2a8,0 2px #000}.btn-start:disabled{color:#1d1b38;cursor:not-allowed;background:#4a4570;box-shadow:inset 0 -8px #2c2956,inset 0 6px #6a649a,0 6px #000}.btn{background:var(--panel);color:var(--ink);cursor:pointer;border:3px solid #000;padding:8px 14px;font-family:VT323,monospace;font-size:18px;box-shadow:inset 0 -4px #0f0e22,inset 0 4px #2c2956}.btn:hover{background:#26234a}.btn:active{box-shadow:inset 0 4px #0f0e22,inset 0 -4px #2c2956}.btn.danger{color:var(--red)}.btn.tiny{padding:4px 8px;font-size:14px}.lockbtn{padding:12px;font-family:"Press Start 2P",monospace;font-size:10px}.lockbtn.unlocked{color:var(--green)}.err-line{color:var(--red);margin-top:12px;font-size:18px}.text-input{color:var(--ink);background:#0e0c22;border:3px solid #000;flex:1;padding:8px 10px;font-size:18px;box-shadow:inset 0 0 0 3px #2c2956}.text-input:focus{box-shadow:inset 0 0 0 3px var(--cyan);outline:none}.grid{grid-template-columns:1.1fr 1fr;gap:18px;margin-top:24px;display:grid}.panel{background:var(--panel);box-shadow:inset 0 0 0 4px var(--panel-edge), 0 6px 0 #000;border:4px solid #000;padding:16px}.panel h2{color:var(--cyan);justify-content:space-between;align-items:center;gap:10px;margin:0 0 14px;font-family:"Press Start 2P",monospace;font-size:12px;display:flex}.panel h2 .badge{color:var(--ink-dim);font-family:VT323,monospace;font-size:18px}.pool{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.pool-card{background:#0e0c22;border:3px solid #000;align-items:center;gap:10px;padding:8px 10px;display:flex;position:relative;box-shadow:inset 0 0 0 3px #2c2956}.pool-card .avatar{color:#000;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-family:"Press Start 2P",monospace;font-size:12px;display:flex;box-shadow:0 0 0 3px #000}.pool-card .name{color:var(--ink);flex:1;font-size:22px}.pool-card .status{background:var(--green);color:#052a10;padding:4px 6px;font-family:"Press Start 2P",monospace;font-size:8px;box-shadow:0 0 0 2px #000}.pool-card .status.ooo{background:var(--red);color:#2a0010}.pool-card .status.cool{background:var(--pink);color:#2a0010}.pool-card.ooo .name{color:var(--ink-dim);text-decoration:line-through}.pool-card.cool .name{color:var(--ink-dim)}.pool-card .toggle{color:var(--ink-dim);cursor:pointer;background:0 0;border:none;padding:0 2px;font-family:inherit;font-size:18px}.pool-card .toggle:hover{color:var(--ink)}.pool-card .toggle.del{font-size:14px}.history-list{max-height:360px;padding-right:6px;overflow-y:auto}.history-list::-webkit-scrollbar{width:10px}.history-list::-webkit-scrollbar-track{background:#0e0c22}.history-list::-webkit-scrollbar-thumb{background:#2c2956;border:2px solid #0e0c22}.history-entry{border-left:4px solid var(--cyan);background:#0e0c22;margin-bottom:10px;padding:10px 12px}.history-entry .meta{color:var(--yellow);justify-content:space-between;gap:8px;margin-bottom:6px;font-family:"Press Start 2P",monospace;font-size:9px;display:flex}.history-entry .names{color:var(--ink);font-size:20px;line-height:1.4}.history-entry .names span{border-left:3px solid var(--pink);background:#2c2956;margin:2px 4px 2px 0;padding:2px 8px;display:inline-block}.history-empty{color:var(--ink-dim);text-align:center;padding:30px 10px;font-size:18px}.json-row{border-top:2px dashed #2c2956;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;display:flex}.confetti-layer{pointer-events:none;z-index:5;position:absolute;inset:0;overflow:hidden}.confetto{will-change:transform, opacity;width:8px;height:8px;position:absolute}.marquee{text-align:center;color:var(--yellow);letter-spacing:.1em;z-index:4;pointer-events:none;font-family:"Press Start 2P",monospace;font-size:9px;position:absolute;top:4px;left:0;right:0}.marquee.warn{color:var(--pink)}.cabinet.shake{animation:.4s shake}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,-3px)}80%{transform:translate(3px,3px)}}.modal-overlay{z-index:10000;background:#050410c7;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);box-shadow:inset 0 0 0 4px var(--panel-edge), 0 8px 0 #000;border:4px solid #000;width:100%;max-width:380px;padding:22px}.modal-title{color:var(--yellow);margin-bottom:12px;font-family:"Press Start 2P",monospace;font-size:13px}.modal-sub{color:var(--ink-dim);margin:0 0 14px;font-size:18px}.modal .text-input{width:100%}.modal-error{color:var(--red);margin-top:10px;font-size:16px}.modal-actions{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}@media (width<=880px){.grid,.pool{grid-template-columns:1fr}.brand h1{font-size:14px}}
