:root{--bg: #10131c;--panel: #1a2030;--panel-2: #222b40;--line: #2c3550;--text: #e9edf6;--muted: #8b94ab;--accent: #3da5ff;--accent-2: #4fd47a;--danger: #ff5a5a}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:Fredoka,system-ui,sans-serif;background:var(--bg);color:var(--text);overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}img{-webkit-user-drag:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;pointer-events:none}.screen{height:100%;height:100dvh;width:100%;position:relative}.lobby,.room{display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto;background:radial-gradient(circle at 50% 20%,#1b2436,#10131c 70%)}.lobby-card,.room-card{width:100%;max-width:440px;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 20px 60px #0006}.logo-img{display:block;width:150px;height:auto;margin:0 auto -6px;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.45))}.logo{font-size:40px;font-weight:700;letter-spacing:3px;text-align:center}.tagline{text-align:center;color:var(--muted);margin:6px 0 20px;font-size:14px}.field{display:block;margin-bottom:18px}.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}input{width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;color:var(--text);padding:12px 14px;font-size:16px;font-family:inherit;outline:none}input:focus{border-color:var(--accent)}input.full{margin-bottom:12px}.lobby-section{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.lobby-section h2{font-size:15px;margin-bottom:12px;color:var(--text)}.player-count{display:flex;align-items:center;justify-content:space-between;margin:12px 0}.player-count>span{color:var(--muted);font-size:14px}.seg,.frac-toggle{display:inline-flex;background:var(--panel-2);border-radius:10px;padding:3px;gap:3px}.seg button,.frac-toggle button{border:none;background:transparent;color:var(--muted);padding:8px 14px;border-radius:8px;font-family:inherit;font-size:14px;cursor:pointer}.seg button.on,.frac-toggle button.on{background:var(--accent);color:#06121f;font-weight:600}.btn{border:1px solid var(--line);background:var(--panel-2);color:var(--text);padding:12px 18px;border-radius:12px;font-family:inherit;font-size:15px;cursor:pointer;transition:transform .05s,background .15s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);color:#06121f;border-color:transparent;font-weight:600}.btn.full{width:100%;margin-top:6px}.btn.ghost{background:transparent}.btn.small{padding:9px 12px;font-size:14px}.hint{color:var(--muted);font-size:13px;margin-top:10px;text-align:center}.hint.warn{color:var(--danger)}.join-row{display:flex;gap:8px}.join-row input{flex:1}.room-list{margin-top:14px;display:flex;flex-direction:column;gap:8px}.room-item{display:flex;align-items:center;gap:12px;text-align:left;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;color:var(--text);font-family:inherit}.room-item:disabled{opacity:.4}.room-code{font-weight:700;letter-spacing:1px;color:var(--accent)}.room-meta{color:var(--muted);font-size:13px}.room-head{display:flex;align-items:center;justify-content:space-between}.room-head h1{font-size:22px}.code-badge{background:var(--panel-2);padding:6px 12px;border-radius:10px;font-size:14px;color:var(--muted)}.code-badge strong{color:var(--accent);letter-spacing:2px}.seat-list{display:flex;flex-direction:column;gap:10px;margin:18px 0}.seat{display:flex;align-items:center;gap:12px;background:var(--panel-2);border:2px solid var(--line);border-radius:12px;padding:12px 14px}.seat.empty{border-style:dashed}.seat-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.seat-dot.ghost{background:var(--line)}.seat-name{flex:1}.seat-name.muted{color:var(--muted)}.seat-x{margin-left:auto;background:transparent;border:none;color:var(--danger);font-size:16px;cursor:pointer}.room-actions{display:flex;flex-direction:column;gap:10px;margin-top:8px}.game{background:var(--bg);display:flex;flex-direction:column}.hud-top{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:flex-start;justify-content:space-between;padding:calc(8px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) 8px calc(10px + env(safe-area-inset-left));gap:10px;pointer-events:none}.hud-top>*{pointer-events:auto}.team-stats{display:flex;flex-wrap:wrap;gap:6px}.team-chip{display:flex;align-items:center;gap:7px;background:#141a28d9;border:1.5px solid var(--line);border-radius:10px;padding:6px 10px;font-size:13px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.team-chip.me{box-shadow:0 0 0 1px #ffffff40 inset}.team-chip.dead{opacity:.4;text-decoration:line-through}.chip-dot{width:11px;height:11px;border-radius:50%}.chip-name{font-weight:500}.chip-num{color:var(--muted);font-size:12px}.hud-right{display:flex;align-items:center;gap:8px}.game-canvas{flex:1;width:100%;height:100%;display:block;touch-action:none}.upgrade-panel{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:10;background:#1a2030f2;border:1px solid var(--line);border-radius:16px;padding:12px 16px;min-width:250px;max-width:calc(100vw - 24px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 12px 40px #00000080}.up-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.up-lvl{color:var(--muted);font-size:13px}.up-stats{display:flex;gap:14px;color:var(--muted);font-size:13px;margin-bottom:10px}.up-alloc{font-size:12px;color:var(--muted);margin-bottom:8px;text-align:center;letter-spacing:1px}.up-buttons{display:flex;gap:8px}.up-buttons .btn{flex:1;min-height:46px}.up-max{color:var(--accent-2);text-align:center;font-size:14px;padding:6px}.up-warn{color:var(--danger);font-size:12px;text-align:center;margin-top:6px}.help-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%);z-index:5;background:#141a28cc;color:var(--muted);font-size:12px;padding:8px 14px;border-radius:20px;max-width:90%;text-align:center;pointer-events:none}.overlay{position:absolute;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#080b12cc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:32px;text-align:center;max-width:360px}.overlay-card h1{font-size:32px;margin-bottom:12px}.overlay-card p{color:var(--muted);margin-bottom:20px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:100;background:var(--danger);color:#fff;padding:12px 20px;border-radius:12px;font-size:14px;box-shadow:0 8px 30px #0006}@media(max-width:560px){.chip-name{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-chip{padding:6px 9px;font-size:12px}.chip-num{font-size:11px}.logo{font-size:34px}.logo-img{width:120px}.frac-toggle button{padding:10px 14px;font-size:15px}.btn.ghost.small{padding:10px 14px}.help-hint{bottom:calc(96px + env(safe-area-inset-bottom));font-size:12px}}@media(pointer:coarse){.frac-toggle button,.seg button{min-height:42px}.btn{min-height:44px}}
