@import url('https://fonts.googleapis.com/css2?family=Black+Ops+One&family=IBM+Plex+Mono:wght@600;700&display=swap');
:root{--yellow:#ffd52f;--blue:#20a8ff;--red:#ff343e;--purple:#b454ff;--ink:#05070b;--cream:#fff6d9;--green:#62ef66}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#030406;color:var(--cream);font-family:'IBM Plex Mono',monospace}body{background:radial-gradient(circle at 50% 12%,#25130e 0,#08070b 45%,#030406 85%);overscroll-behavior:none;touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}header{height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 max(10px,calc((100vw - 760px)/2));background:#050505;border-bottom:2px solid #3b2a19;position:relative;z-index:5}header a,header button{font:700 10px 'IBM Plex Mono';color:var(--yellow);text-decoration:none;letter-spacing:.04em}header button{background:#16110e;border:1px solid #6c4c27;padding:7px 9px}.header-actions{display:flex;gap:6px}main{min-height:calc(100vh - 46px);padding:10px}.cabinet{width:min(720px,100%);margin:auto;background:#0a0909;border:3px solid #5b3c1d;box-shadow:0 0 0 3px #120c07,0 18px 60px #000;padding:8px;position:relative}.cabinet:before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 37px,#ffffff06 38px 39px),linear-gradient(#ffffff04,#0000 20%,#0008);mix-blend-mode:screen}.marquee{display:flex;align-items:center;justify-content:center;gap:14px;text-align:left;padding:3px 8px 8px;border-bottom:2px solid #5b3c1d}.marquee h1{font:clamp(30px,7vw,54px)/.9 'Black Ops One';color:var(--yellow);margin:0;letter-spacing:.04em;text-shadow:3px 3px #5d1600}.marquee p{font-size:9px;margin:5px 0 0;color:#cbb78f;letter-spacing:.08em}.pick-logo,.big-pick{width:46px;height:54px;background:var(--yellow);clip-path:polygon(50% 0,100% 14%,85% 72%,50% 100%,15% 72%,0 14%);position:relative;transform:rotate(-90deg);filter:drop-shadow(3px 3px #641900)}.pick-logo:after,.big-pick:after{content:"";position:absolute;right:-1px;top:17px;border-top:11px solid transparent;border-bottom:11px solid transparent;border-right:18px solid #0a0909}.hud{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;padding:5px 2px}.hud span{display:block;font-size:8px;color:#9f8f78}.hud strong{display:block;font-size:18px;color:#fff}.hud>div:first-child span{color:var(--red)}.hud>div:nth-child(2) span{color:var(--yellow)}.hud>div:last-child span{color:var(--blue)}.stage-name{text-align:center;color:#d3bc92;font:10px 'IBM Plex Mono';padding:2px 0 6px;letter-spacing:.15em}.screen-wrap{position:relative;background:radial-gradient(circle at 50% 44%,#10213a 0,#030912 52%,#000 100%);border:2px solid #8b5a2d;box-shadow:inset 0 0 55px #000,0 0 22px #0a83cc33;overflow:hidden;max-height:calc(100vh - 272px);aspect-ratio:17/19;margin:auto;max-width:620px}canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none}.crt{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,#0000 0,#0000 2px,#0004 3px);opacity:.32;mix-blend-mode:multiply}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#000b;z-index:3;padding:18px}.overlay.hidden{display:none}.overlay-card{text-align:center;background:#0c0907ee;border:2px solid #88602a;padding:18px;max-width:390px;box-shadow:8px 8px #000}.overlay-card .big-pick{width:70px;height:82px;margin:0 auto 10px}.overlay-card h2{font:clamp(36px,9vw,64px)/.9 'Black Ops One';color:var(--yellow);margin:4px 0;text-shadow:4px 4px #671a00}.overlay-card p{font-size:11px;line-height:1.55;color:#dfceb0}.overlay-card b{color:var(--green)}.overlay-card small{display:block;color:#9d8d76;font-size:8px;margin-top:10px}.primary{border:3px solid #fff;background:var(--red);color:#fff;padding:12px 20px;font:18px 'Black Ops One';box-shadow:5px 5px #000;cursor:pointer}.message{font:clamp(30px,8vw,64px) 'Black Ops One';color:var(--yellow);text-align:center;text-shadow:4px 4px #000}.legend{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:7px 0 4px;font-size:7px;text-align:center;color:#c8b797}.legend span{display:flex;align-items:center;justify-content:center;gap:4px}.enemy{width:11px;height:11px;display:inline-block;border-radius:4px 4px 2px 2px}.broken{background:var(--green)}.battery{background:var(--red)}.cable{background:var(--blue)}.hum{background:var(--purple)}.bottom-bar{display:flex;justify-content:space-between;align-items:center;padding:2px 4px;color:#a9977f;font-size:9px}.lives{display:inline-flex;gap:3px;vertical-align:middle}.life-pick{display:inline-block;width:12px;height:14px;background:var(--yellow);clip-path:polygon(50% 0,100% 14%,85% 72%,50% 100%,15% 72%,0 14%);transform:rotate(-90deg)}#boostText{color:var(--green)}.control-deck{display:flex;align-items:center;justify-content:center;gap:18px;width:min(350px,94%);height:116px;margin:9px auto 2px;padding:9px 16px;background:linear-gradient(160deg,#49321d 0%,#25190f 22%,#120d09 58%,#070504 100%);border:2px solid #76512a;border-radius:9px 9px 18px 18px;box-shadow:inset 0 2px #a8783b55,inset 0 -8px 18px #000,0 7px 0 #050403,0 10px 20px #000;position:relative;touch-action:none;user-select:none}.control-deck:before{content:"";position:absolute;inset:7px;border:1px solid #ffffff0a;border-radius:6px 6px 14px 14px;pointer-events:none}.deck-label{font:8px 'IBM Plex Mono';color:#8c765c;letter-spacing:.18em;writing-mode:vertical-rl;transform:rotate(180deg)}.joystick{width:94px;height:94px;position:relative;display:grid;place-items:center;touch-action:none;cursor:grab}.joystick:active{cursor:grabbing}.joy-gate{position:absolute;width:70px;height:70px;border-radius:50%;background:radial-gradient(circle,#050505 0 33%,#1f1b17 35% 49%,#070605 51% 67%,#3e3122 69% 72%,#0a0806 74%);box-shadow:inset 0 4px 10px #000,0 2px 0 #69451f}.joy-stick{position:absolute;left:50%;top:50%;width:14px;height:50px;margin-left:-7px;margin-top:-40px;transform-origin:50% 40px;transform:rotate(0deg);transition:transform .055s linear;filter:drop-shadow(5px 7px 3px #0009)}.joy-stick:before{content:"";position:absolute;left:3px;top:18px;width:8px;height:30px;background:linear-gradient(90deg,#555,#ddd 45%,#666);border-radius:5px}.joy-ball{position:absolute;left:-9px;top:-3px;width:32px;height:32px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#ff6748 0 10%,#e52218 22%,#8a0905 65%,#360100 100%);border:2px solid #3e0502;box-shadow:inset -5px -7px 10px #0008,0 5px 6px #000b}.joy-arrow{position:absolute;font:10px 'IBM Plex Mono';color:#6f5b43;pointer-events:none}.joy-up{top:0;left:50%;transform:translateX(-50%)}.joy-down{bottom:0;left:50%;transform:translateX(-50%)}.joy-left{left:0;top:50%;transform:translateY(-50%)}.joy-right{right:0;top:50%;transform:translateY(-50%)}.deck-copy{display:flex;flex-direction:column;gap:5px;text-align:left;min-width:105px}.deck-copy strong{font:18px 'Black Ops One';color:var(--yellow);text-shadow:2px 2px #591800}.deck-copy span{font:7px 'IBM Plex Mono';color:#88745b;letter-spacing:.1em}.control-deck.active .joy-ball{box-shadow:inset -5px -7px 10px #0008,0 0 20px #ff5522cc,0 5px 6px #000b}.control-deck.active{border-color:#b97b35;box-shadow:inset 0 2px #ffc36b33,inset 0 -8px 18px #000,0 7px 0 #050403,0 10px 24px #000,0 0 20px #ff8a2030}.control-deck.active .deck-copy span{color:#d8c5a5}
.tip{text-align:center;font-size:7px;color:#786e5f;margin:6px 0 1px}@media(max-width:700px){header{height:40px}main{padding:4px}.cabinet{padding:5px;border-width:2px}.marquee{padding-bottom:4px}.marquee h1{font-size:30px}.marquee p{font-size:7px}.pick-logo{width:30px;height:36px}.pick-logo:after{top:11px;border-top-width:7px;border-bottom-width:7px;border-right-width:12px}.hud{padding:3px 2px}.hud strong{font-size:15px}.screen-wrap{max-height:calc(100vh - 285px);max-width:100%}.legend{font-size:6px;padding:4px 0}.control-deck{display:flex}.tip{display:none}}@media(max-width:420px) and (max-height:760px){.marquee p,.stage-name,.legend{display:none}.screen-wrap{max-height:calc(100vh - 238px)}.control-deck{height:104px;margin-top:5px}.joystick{width:88px;height:88px}.joy-gate{width:66px;height:66px}}
.screen-wrap{background:radial-gradient(circle at 50% 40%,#19120b 0,#090706 52%,#010101 100%);box-shadow:inset 0 0 70px #000,0 0 0 2px #24170d,0 0 28px #137fc344}.hud strong{text-shadow:0 0 12px #ffffff30}.stage-name{background:linear-gradient(90deg,transparent,#25180d88,transparent)}#boostText{font-weight:700;text-shadow:0 0 10px currentColor}.control-deck{background:linear-gradient(155deg,#5b4025 0%,#2d1e12 20%,#130d09 58%,#060403 100%)}

/* v79 direct-maze touch controls */
.screen-wrap{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none}
canvas{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none}
.control-deck{display:none!important}
.touch-guide{width:min(500px,96%);margin:8px auto 2px;padding:8px 12px;display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center;background:linear-gradient(180deg,#1b140d,#090706);border:1px solid #6e4b27;border-radius:8px;box-shadow:inset 0 1px #d7983d33,0 5px 14px #0008;color:#b9a487}
.touch-guide .finger-dot{grid-row:1/3;font-size:20px;color:#ffd52f;text-shadow:0 0 12px #ffd52faa}
.touch-guide strong{font:10px 'IBM Plex Mono';color:#ffd52f;letter-spacing:.05em}
.touch-guide span:last-child{font:7px 'IBM Plex Mono';color:#8f7d65;margin-top:2px}
@media(max-width:700px){.screen-wrap{max-height:calc(100vh - 190px);max-width:100%}.touch-guide{margin-top:6px;padding:7px 10px}.tip{display:none}}
@media(max-width:420px) and (max-height:760px){.screen-wrap{max-height:calc(100vh - 160px)}.touch-guide{padding:6px 9px;margin-top:4px}.touch-guide strong{font-size:9px}.touch-guide span:last-child{display:none}}

/* v80: lock the browser viewport while actively steering */
html,body{overscroll-behavior:none}
body.game-touch-lock{position:fixed;left:0;right:0;width:100%;overflow:hidden;touch-action:none}
body.game-touch-lock .game-shell,
body.game-touch-lock .screen-wrap,
body.game-touch-lock canvas{touch-action:none!important;overscroll-behavior:none!important}
