:root{--vh: 1vh}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overscroll-behavior:none;background-color:var(--bg, #0b1220)}html,body{touch-action:manipulation;overflow-x:hidden;max-width:100%}body{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);box-sizing:border-box}input,textarea,[contenteditable],.selectable{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}button,[role=button],a,label,summary{touch-action:manipulation}button,input,select,textarea{font-family:inherit;font-size:inherit}input,textarea,select{font-size:max(16px,1em)}button,[role=button]{min-height:44px;min-width:44px;cursor:pointer}.board,.field,canvas,.drag-surface{touch-action:none}.control-layer{position:fixed;inset:0;z-index:30;pointer-events:none;touch-action:none}.control-layer>*{pointer-events:auto}.safe-inset{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}[hidden]{display:none!important}:root{--bg: #0b1220;--panel: #111c2e;--panel2: #16233a;--steel: #243244;--line: #22314c;--amber: #f0b429;--hot: #ff8c42;--core: #56b4e9;--ichor: #6ee7b7;--breach: #ff6b6b;--text: #e7ecf5;--dim: #8ea0bd;--radius: 14px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:radial-gradient(120% 90% at 50% -10%,#14223c 0%,var(--bg) 60%);color:var(--text);font-family:ui-rounded,Segoe UI,system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}#app{min-height:calc(var(--vh, 1vh) * 100);display:flex;flex-direction:column}.main-content{flex:1 0 auto;display:flex;flex-direction:column}h1,h2{margin:0}button{font:inherit;color:inherit}.btn{appearance:none;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:12px 18px;border-radius:12px;font-weight:700;cursor:pointer;transition:transform .05s ease,background .15s ease,border-color .15s ease}.btn:active{transform:translateY(1px) scale(.99)}.btn.primary{background:linear-gradient(180deg,var(--amber),#d99a10);color:#201400;border-color:#d99a10}.btn.ghost{background:transparent;color:var(--dim);border-color:transparent}.btn.ghost:hover{color:var(--text)}.btn.sm{padding:7px 12px;border-radius:9px;min-height:36px;font-size:.85rem}.btn:disabled{opacity:.5;cursor:default}.menu{max-width:560px;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 20px 24px;width:100%;text-align:center;display:flex;flex-direction:column;gap:14px}.title{font-size:clamp(2.6rem,12vw,4rem);font-weight:900;letter-spacing:-.02em;margin-top:8px;color:var(--amber);text-shadow:0 3px 0 #7a5500,0 0 30px rgba(240,180,41,.25)}.title span{color:var(--core);text-shadow:0 3px 0 #17557c,0 0 30px rgba(86,180,233,.25)}.tagline{color:var(--dim);margin:0;line-height:1.5}.modes{display:flex;flex-direction:column;gap:10px;text-align:left}.mode{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:12px;cursor:pointer;background:var(--panel);border:1.5px solid var(--line);color:var(--text)}.mode b{font-size:1.05rem}.mode span{color:var(--dim);font-size:.82rem;line-height:1.35}.mode.on{border-color:var(--amber);background:#1a2946;box-shadow:0 0 0 1px var(--amber) inset}.menu-actions{display:flex;gap:10px}.menu-actions .btn{flex:1}.namebox{display:flex;flex-direction:column;gap:4px;color:var(--dim);font-size:.8rem;text-align:left}.namebox input{background:var(--panel);border:1.5px solid var(--line);color:var(--text);border-radius:10px;padding:10px 12px}.menu-links{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}.best{color:var(--amber);font-weight:700;min-height:1.2em;margin:0}.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#040810b8;padding:20px;backdrop-filter:blur(3px)}.modal-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;max-width:460px;width:100%;display:flex;flex-direction:column;gap:12px;max-height:86vh;overflow-y:auto}.modal-card h2{font-size:1.4rem}.how{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:9px;line-height:1.45}.how b{color:var(--amber)}.how i{color:var(--core);font-style:normal}.how-ctl{color:var(--dim);font-size:.85rem}.fine{color:var(--dim);font-size:.82rem;line-height:1.45}.fine a,.tagline a{color:var(--core)}.screen{max-width:480px;margin:0 auto;padding:24px 20px;width:100%}.room-entry,.lobby{display:flex;flex-direction:column;gap:14px}.re-head,.lobby-head{text-align:center}.re-title,.lobby-title{font-size:1.5rem}.re-sub,.lobby-sub{color:var(--dim);font-size:.88rem;margin:4px 0 0}.lobby-code{color:var(--amber);letter-spacing:.15em;font-weight:900}.lobby-btn{appearance:none;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:13px 16px;border-radius:12px;font-weight:700;cursor:pointer;min-height:48px}.lobby-btn.primary{background:linear-gradient(180deg,var(--amber),#d99a10);color:#201400;border-color:#d99a10}.lobby-btn.ghost{background:transparent;border-color:transparent;color:var(--dim)}.re-divider{text-align:center;color:var(--dim);font-size:.78rem;position:relative}.re-divider span{background:var(--bg);padding:0 10px;position:relative;z-index:1}.re-divider:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}.re-join{display:flex;gap:8px}.re-input{flex:1;background:var(--panel);border:1.5px solid var(--line);color:var(--text);border-radius:10px;padding:12px;text-transform:uppercase;letter-spacing:.12em;font-weight:700}.re-error{color:var(--breach);font-size:.82rem;min-height:1em;margin:0;text-align:center}.lobby-invite{display:flex;gap:8px}.lobby-link{flex:1;background:var(--panel);border:1.5px solid var(--line);color:var(--dim);border-radius:10px;padding:10px;font-size:.82rem}.lobby-players{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.lobby-player{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 12px}.lobby-player.is-self{border-color:var(--amber)}.lobby-dot{width:10px;height:10px;border-radius:50%;background:#40506e;flex-shrink:0}.lobby-dot.ready{background:var(--ichor);box-shadow:0 0 8px var(--ichor)}.lobby-name{flex:1;font-weight:600}.lobby-badge{font-size:.62rem;font-weight:800;letter-spacing:.06em;padding:2px 6px;border-radius:6px;background:var(--steel);color:var(--dim)}.lobby-badge.ok{background:#1c3a2c;color:var(--ichor)}.lobby-searching,.lobby-wait{display:flex;align-items:center;gap:9px;color:var(--dim);font-size:.86rem;justify-content:center}.lobby-actions{display:flex;flex-direction:column;gap:8px}.lobby-flash{text-align:center;color:var(--ichor);min-height:1.1em;font-size:.85rem;opacity:0;transition:opacity .2s}.lobby-flash.show{opacity:1}.lobby-mode{margin-top:6px;display:flex;flex-direction:column;gap:6px;text-align:center;color:var(--dim);font-size:.82rem}.lm-modes{display:flex;gap:6px;justify-content:center}.lm{padding:8px 14px;border-radius:9px;border:1.5px solid var(--line);background:var(--panel);color:var(--text);font-weight:700;cursor:pointer}.lm.on{border-color:var(--amber);background:#1a2946}.lm-blurb{color:var(--dim)}.spinner{width:18px;height:18px;border:2.5px solid var(--line);border-top-color:var(--amber);border-radius:50%;display:inline-block;animation:spin .8s linear infinite}.spinner.sm{width:14px;height:14px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.play{height:calc(var(--vh, 1vh) * 100);display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.hud{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--panel);border-bottom:1px solid var(--line)}.hud-l{flex-shrink:0}.hud-mid{flex:1;min-width:0}.hud-r{display:flex;align-items:center;gap:8px;flex-shrink:0}.wavebox{display:flex;flex-direction:column;line-height:1.05}.wave-n{font-weight:900;font-size:1.05rem}.wave-sub{color:var(--dim);font-size:.72rem}.corebar{position:relative;height:22px;border-radius:8px;background:#0c1526;border:1px solid var(--line);overflow:hidden}.corebar-fill{position:absolute;inset:0;width:100%;background:var(--core);transition:width .18s ease}.corebar-txt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.6)}.res{display:flex;align-items:center;gap:3px;font-weight:800;font-size:.9rem;min-width:42px}.res-ic{font-size:.9rem}.res-ic.scrap{color:var(--amber)}.res-ic.ammo{color:var(--hot)}.icon{width:40px;height:40px;min-width:40px;min-height:40px;border-radius:10px;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-weight:900;letter-spacing:1px;cursor:pointer}.board-wrap{flex:1;min-height:0;position:relative;overflow:hidden}#cv{display:block;width:100%;height:100%;touch-action:none}.big{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(3rem,16vw,6rem);font-weight:900;color:var(--amber);text-shadow:0 0 30px rgba(240,180,41,.5);pointer-events:none;z-index:5}.big.pop{transform:scale(.6);opacity:0}.big.go{transition:transform .28s cubic-bezier(.2,1.4,.5,1),opacity .2s;transform:scale(1);opacity:1}.flash{position:absolute;left:0;right:0;bottom:10px;text-align:center;color:var(--amber);font-weight:800;font-size:.9rem;pointer-events:none;opacity:0;transition:opacity .2s;text-shadow:0 1px 3px rgba(0,0,0,.8);z-index:5}.flash.show{opacity:1}.toolbar{flex-shrink:0;display:flex;gap:5px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line)}.tool{flex:1 1 0;min-width:0;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);border-radius:11px;cursor:pointer;padding:4px 2px}.tool[aria-pressed=true]{border-color:var(--amber);background:#1a2946;box-shadow:0 0 0 1px var(--amber) inset}.tool.poor{opacity:.5}.tool-lbl{font-weight:800;font-size:.82rem}.tool-cost{font-size:.66rem;color:var(--amber);font-weight:700}.tool.launch{flex:1.4 1 0;background:linear-gradient(180deg,var(--hot),#d96a2a);border-color:#d96a2a;color:#1c0d00}.tool.launch .tool-cost{color:#3a1a00}.tool.launch.ready{animation:pulse 1.3s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #ff8c4280}50%{box-shadow:0 0 0 5px #ff8c4200}}.overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#040810bf;padding:20px;backdrop-filter:blur(3px)}.overlay .modal-card{max-width:320px;text-align:center}.results{max-width:520px;margin:0 auto;padding:28px 20px;width:100%;display:flex;flex-direction:column;gap:12px;text-align:center}.rs-title{font-size:1.8rem;color:var(--breach)}.rs-head{font-size:1.05rem;margin:0}.rs-head b{color:var(--amber)}.rs-reason{color:var(--dim)}.rs-best{color:var(--amber);font-weight:800;margin:0}.rs-note{color:var(--dim);font-size:.86rem;margin:0}.rs-rows{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:6px}.rs-row{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 12px;text-align:left}.rs-row.is-self{border-color:var(--amber)}.rs-dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}.rs-name{font-weight:700;min-width:62px}.rs-contrib{display:flex;flex-wrap:wrap;gap:4px 10px;color:var(--dim);font-size:.76rem;margin-left:auto;justify-content:flex-end}.rs-foot{color:var(--dim);font-size:.88rem;margin:0}.rs-wait{display:flex;align-items:center;gap:9px;justify-content:center;color:var(--dim);font-size:.85rem}.rs-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:6px}.rs-actions .btn{flex:1 1 40%}.site-footer{flex-shrink:0;text-align:center;padding:16px;color:var(--dim);font-size:.78rem}.site-footer a{color:var(--core);text-decoration:none}body.playing .site-footer{display:none!important}
