*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0d0d1a;--panel: #16213e;--border: #2a2a6e;--accent: #534ab7;--accent2: #7b6fd4;--gold: #ffcc00;--green: #44ff88;--red: #ff4444;--text: #e0e0ff;--muted: #6666aa}html,body{width:100%;height:100%;background:var(--bg);color:var(--text);font-family:Share Tech Mono,monospace;overflow:hidden;touch-action:manipulation;-webkit-user-select:none;user-select:none}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.06) 2px,rgba(0,0,0,.06) 4px);pointer-events:none;z-index:999}h1{font-size:40px}h2{font-size:36px}h3{text-transform:uppercase;font-size:20px}.btn{border:1px solid var(--border);padding:10px 15px;color:var(--text);background-color:var(--border);text-decoration:none;border-radius:12px;text-transform:uppercase;margin-top:1rem;display:block;width:fit-content}.container{max-width:550px;width:100%;padding:1rem;background:var(--muted);border-radius:12px}#lobby>section:not(#lobby-section){display:flex;align-items:center;justify-content:center}#footer{gap:8px}#play-rogue-bot,#play-details,#play-free,#footer{background:url(../assets/bg2.png) center / cover no-repeat}@media (max-width: 768px){#play-rogue-bot,#play-details,#play-free,#footer{background-image:url(../assets/bg2-mob.jpg)}}@media (hover: none) and (pointer: coarse){#lobby>section:not(#lobby-section){align-items:flex-end;padding-bottom:clamp(48px,10vh,80px)}}#lobby{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;transition:opacity .4s ease;z-index:1000}#lobby.hidden{opacity:0;pointer-events:none}#lobby>section{scroll-snap-align:start;width:100%;height:100vh;min-height:100vh}#lobby-section{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px}#lobby-bg-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1}#lobby-section:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0d0d1a8c;z-index:0}#lobby-section .logo,#lobby-section .tagline,#lobby-section .card{position:relative;z-index:1}.logo{display:block;width:clamp(350px,50vw,640px);height:auto;margin:0 auto 8px;filter:drop-shadow(0 0 40px rgba(83,74,183,.9)) drop-shadow(0 0 80px rgba(83,74,183,.4))}.tagline{display:block;width:clamp(360px,38vw,420px);height:auto;margin:-50px auto clamp(28px,6vh,52px)}.card{background:var(--muted);border:0;border-radius:12px;padding:1rem;width:100%;max-width:470px;display:flex;flex-direction:column;align-items:center}.card>div{width:100%}button{box-sizing:border-box;cursor:pointer;width:50%;font-family:Share Tech Mono,monospace}.robot-preview-frame{position:relative;width:128px;height:128px;border:0;border-top-left-radius:12px;border-top-right-radius:12px;background:var(--bg);overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0;align-self:center}.robot-preview-frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--robot-tint, transparent);mix-blend-mode:multiply;pointer-events:none;border-radius:inherit}.robot-preview-sprite{width:128px;height:128px;background-image:url(../assets/sprites/player/robot.png);background-repeat:no-repeat;background-size:auto 128px;background-position:0 0;animation:robot-idle .8s steps(1) infinite;image-rendering:pixelated}@keyframes robot-idle{0%{background-position:0 0}50%{background-position:-128px 0}}.field-label{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#fff;margin-bottom:8px}#name-input{width:100%;background:var(--bg);color:#fff;border:0;border-bottom-left-radius:12px;border-bottom-right-radius:12px;padding:clamp(12px,3vw,16px) 18px;font-size:clamp(16px,4vw,20px);font-family:Share Tech Mono,monospace;outline:none;text-align:center;transition:border-color .2s;-webkit-user-select:text;user-select:text}#name-input:focus{border-color:var(--accent2)}#name-input::placeholder{color:#fff}.robot-row{display:flex;gap:clamp(6px,2vw,10px);justify-content:center}.robot-swatch{width:clamp(48px,10vw,64px);height:clamp(48px,10vw,64px);border-radius:12px;border:3px solid transparent;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center}.robot-swatch img{width:100%;height:100%;object-fit:cover}.robot-swatch.active{border-color:#fff}.robot-swatch.locked{opacity:.35;cursor:not-allowed;filter:grayscale(1)}.colour-row{display:flex;flex-wrap:wrap;gap:0}.swatch{width:28px;height:28px;border-radius:0;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s;-webkit-tap-highlight-color:transparent;box-sizing:border-box}.swatch:hover{transform:scale(1.15);z-index:1;position:relative}.swatch.active{border-color:#fff;transform:scale(1.15);z-index:1;position:relative}#join-btn{font-size:22px}#status{text-align:center;font-size:13px;color:var(--muted);min-height:18px;letter-spacing:.05em}#status.error{color:var(--red)}#connecting{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;background:var(--bg);transition:opacity .4s}#connecting.hidden{opacity:0;pointer-events:none}#connecting .logo{width:min(420px,70vw)}#game-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:none;flex-direction:column;background:#0d0d1a}#game-wrap.visible{display:flex}#game{flex:1;overflow:hidden}#hamburger-btn{position:fixed;top:14px;right:14px;width:38px;height:38px;background:transparent;cursor:pointer;z-index:9991;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:border-color .2s,background .2s;-webkit-tap-highlight-color:transparent;border:0}#hamburger-btn:hover{border-color:var(--accent);background:#534ab74d}#hamburger-btn span{width:18px;height:2px;background:var(--text);transition:background .2s,transform .2s,opacity .2s}#hamburger-btn:hover span{background:var(--text)}#side-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:800;opacity:0;pointer-events:none;transition:opacity .3s ease}#side-menu-backdrop.open{opacity:1;pointer-events:auto}#side-menu{position:fixed;top:0;right:0;bottom:0;width:min(280px,80vw);background:var(--panel);border-left:1px solid var(--border);z-index:9992;display:flex;flex-direction:column;gap:12px;padding:64px 18px 24px;transform:translate(100%);transition:transform .3s ease;box-shadow:-8px 0 24px #0006}#side-menu.open{transform:translate(0)}#side-menu-close{position:absolute;top:14px;right:14px;width:32px;height:32px;border:0;border-radius:12px;background:none;color:var(--text);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s,border-color .2s}#side-menu-close:hover{color:var(--text);border-color:var(--accent)}.menu-btn{width:100%;border:0;background:transparent;color:var(--text);font-size:20px;letter-spacing:.05em;padding:12px 14px;border-radius:12px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:color .2s,border-color .2s,background .2s;-webkit-tap-highlight-color:transparent}.menu-btn:hover{color:var(--text);border-color:var(--accent);background:#534ab74d}#changelog-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9993;align-items:center;justify-content:center}#changelog-modal.open{display:flex}.changelog-panel{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;width:90vw;max-width:680px;height:85vh;display:flex;flex-direction:column;box-shadow:0 0 40px #534ab759}#changelog-iframe{flex:1;border:none;border-radius:12px;width:100%;background:var(--bg)}#settings-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9993;align-items:center;justify-content:center}#settings-modal.open{display:flex}.settings-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000bf;cursor:pointer}.settings-panel{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;width:90vw;max-width:400px;max-height:85vh;overflow-y:auto;box-shadow:0 0 40px #534ab759}.settings-title{font-family:Orbitron,sans-serif;font-size:15px;letter-spacing:.15em;color:#fff;display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.settings-close-btn{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:0;line-height:1;transition:color .15s;text-align:right}.settings-close-btn:hover{color:var(--red)}.settings-section-label{font-size:10px;letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-bottom:14px}.key-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.key-row-label{flex:1;font-size:13px;color:var(--text)}.key-row-hint{font-size:11px;color:var(--muted);min-width:72px;text-align:right}.key-cell{min-width:66px;padding:6px 10px;background:var(--bg);border:1px solid var(--accent);border-radius:12px;color:var(--gold);font-family:Share Tech Mono,monospace;font-size:13px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;user-select:none;-webkit-user-select:none}.key-cell:hover{border-color:var(--accent2);background:#534ab733}.key-cell.capturing{border-color:var(--gold);background:#ffcc001a;color:var(--muted);animation:key-pulse .7s ease-in-out infinite}@keyframes key-pulse{0%,to{opacity:1}50%{opacity:.35}}.settings-divider{border:none;border-top:1px solid var(--border);margin:16px 0}.settings-reset-btn{width:100%;padding:10px;background:none;border:1px solid var(--border);border-radius:12px;color:var(--muted);font-family:Share Tech Mono,monospace;font-size:12px;letter-spacing:.08em;cursor:pointer;transition:border-color .15s,color .15s}.settings-reset-btn:hover{border-color:var(--gold);color:var(--gold)}.mobile-ref-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.mobile-ref-item{display:flex;align-items:center;gap:9px;background:var(--bg);border-radius:12px;padding:8px 10px}.mobile-ref-icon{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}.mobile-ref-icon.ri-jump{border:2px solid #44ff88;color:#4f8}.mobile-ref-icon.ri-shoot{border:2px solid #ffcc00;color:#fc0}.mobile-ref-icon.ri-light{border:2px solid #4488ff;color:#48f}.mobile-ref-icon.ri-dash{border:2px solid #ff4444;color:#f44}.mobile-ref-icon.ri-dpad{border:2px solid var(--accent);color:var(--accent2);border-radius:12px}.mobile-ref-action{font-size:12px;color:var(--text)}#touch-controls{display:none;height:132px;background:#0d0d1af2;border-top:2px solid #2a2a6e;padding:8px 28px;align-items:center;justify-content:space-between;flex-shrink:0}#touch-controls.visible{display:flex}.ctrl-btn{display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:none;-webkit-user-select:none;user-select:none}.ctrl-side{display:flex;flex-direction:column;align-items:stretch;gap:5px}.shoulder-btn{height:24px;border-radius:12px;border:2px solid var(--accent);background:#534ab72e;color:var(--accent2);font-family:Share Tech Mono,monospace;font-size:12px;font-weight:700;letter-spacing:.14em}.dpad{display:flex;gap:6px;align-items:center}.dpad-btn{width:50px;height:50px;border-radius:12px;border:2px solid var(--accent);background:#534ab733;color:#fff;font-size:22px}.face-grid{display:grid;grid-template-columns:repeat(2,42px);grid-template-rows:repeat(2,42px);gap:5px}.face-btn{border-radius:50%;border:2px solid var(--accent);background:#534ab733;color:#fff;font-size:18px}.face-btn.f-jump{border-color:#4f8;background:#44ff8826;color:#4f8}.face-btn.f-shoot{border-color:#fc0;background:#ffcc0026;color:#fc0}.face-btn.f-light{border-color:#48f;background:#4488ff26;color:#48f}.face-btn.f-dash{border-color:#f44;background:#ff444426;color:#f44}.ctrl-btn.pressed,.ctrl-btn:active{filter:brightness(2.2)}@media (max-width: 480px){#touch-controls{padding:8px 16px;height:128px}.shoulder-btn{height:22px;font-size:11px}.dpad-btn{width:43px;height:43px;font-size:18px}.face-grid{grid-template-columns:repeat(2,37px);grid-template-rows:repeat(2,37px);gap:4px}.face-btn{font-size:15px}.container{margin-left:1rem;margin-right:1rem}}
