:root{--bg:#0b1424;--panel:#0a1221db;--panel-solid:#0f1b30;--line:#ffffff1f;--line-strong:#ffffff3d;--text:#eef3f8;--muted:#9fb0c3;--accent:#ff6b35;--accent-ink:#1a0d06;--gold:#ffd166;--hud:#b4ffd2;--danger:#ff5a4f;--r:14px;--display:"Chakra Petch", system-ui, sans-serif;--body:"Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--body);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0}body{touch-action:none;overflow:hidden}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.app{position:fixed;inset:0}.game-host{position:absolute;inset:0}.game-host canvas{display:block;position:absolute;inset:0}.hud-canvas{pointer-events:none}.panel{background:var(--panel);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);touch-action:pan-y;border-radius:20px;width:min(760px,100% - 32px);max-height:calc(100% - 32px);padding:24px;position:absolute;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 30px 80px #00000073}.panel.small{text-align:center;width:min(360px,100% - 32px)}.panel h2,.panel h3,.brand h1{font-family:var(--display);letter-spacing:.01em;margin:0}.panel h3{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:8px;font-size:13px}.panel section+section{margin-top:20px}.brand{align-items:center;gap:16px;margin-bottom:20px;display:flex}.brand h1{font-size:34px;line-height:1}.tag{color:var(--muted);margin:6px 0 0;font-size:15px}.field{flex-direction:column;gap:6px;display:flex}.field>span{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.field.inline{flex-direction:row;justify-content:space-between;align-items:center;gap:12px}.field input,.field select,.join input{border:1px solid var(--line-strong);background:#ffffff0f;border-radius:10px;min-height:44px;padding:0 14px}.field select option{background:var(--panel-solid)}.btn{border:1px solid var(--line-strong);cursor:pointer;background:#ffffff12;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-weight:600;transition:background .15s,border-color .15s,transform 80ms;display:inline-flex}.btn:hover:not(:disabled){background:#ffffff21}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){background:#ff8150}.btn.ghost{background:#0a12218c}.btn.big{min-height:52px;font-size:16px}.icon-btn{width:44px;padding:0}.link{color:var(--gold);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.row{flex-wrap:wrap;justify-content:flex-end;gap:12px;display:flex}.planes,.modes{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.plane-card,.mode-card{text-align:left;border-radius:var(--r);border:1px solid var(--line);cursor:pointer;background:#ffffff0a;flex-direction:column;gap:6px;min-height:44px;padding:14px;display:flex}.plane-card.on,.mode-card.on{border-color:var(--accent);background:#ff6b351f}.plane-card strong,.mode-card strong{font-family:var(--display);font-size:18px}.plane-card .blurb,.mode-card span:last-child{color:var(--muted);font-size:13px;line-height:1.4}.mode-icon{color:var(--accent)}.bars{gap:4px;margin-top:4px;display:grid}.bar{color:var(--muted);grid-template-columns:52px 1fr;align-items:center;gap:8px;font-size:11px;display:grid}.bar-track{background:#ffffff1a;border-radius:3px;height:5px;overflow:hidden}.bar-fill{background:var(--gold);height:100%;display:block}.segs,.mount-pick{flex-wrap:wrap;gap:8px;display:flex}.seg{border:1px solid var(--line);cursor:pointer;background:#ffffff0a;border-radius:12px;flex:1 1 0;justify-content:center;align-items:center;gap:8px;min-width:120px;min-height:44px;padding:0 12px;font-weight:600;display:inline-flex}.seg.on{border-color:var(--accent);color:#fff;background:#ff6b3524}.note{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 0;font-size:13px;display:flex}.actions{grid-template-columns:1fr 1fr 1fr;gap:12px;display:grid}.join{gap:8px;display:flex}.join input{text-transform:uppercase;letter-spacing:.2em;width:100%;min-width:0;font-family:var(--display);text-align:center;font-weight:700}.foot{color:var(--muted);justify-content:space-between;margin-top:20px;font-size:13px;display:flex}.foot a{color:var(--gold)}.lobby-head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.lobby-head>div{flex:1}.sub{color:var(--muted);margin:4px 0 0;font-size:14px}.players,.results{gap:6px;margin:0 0 16px;padding:0;list-style:none;display:grid}.players li,.results li{background:#ffffff0a;border-radius:10px;align-items:center;gap:10px;min-height:44px;padding:10px 12px;display:flex}.results li.me{background:#ff6b3524}.swatch{border-radius:3px;flex:none;width:12px;height:12px}.pname{flex:1;font-weight:600}.pplane,.pstat{color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.place{font-family:var(--display);width:22px;color:var(--gold);font-weight:700}.pill{color:var(--gold);vertical-align:middle;background:#ffd1662e;border-radius:99px;margin-left:8px;padding:2px 8px;font-size:11px}.host-settings{gap:12px;display:grid}.error{color:var(--danger)}.results-panel h2{align-items:center;gap:10px;margin-bottom:16px;display:flex}.setup{padding:16px max(16px, env(safe-area-inset-right)) 24px max(16px, env(safe-area-inset-left));touch-action:pan-y;background:linear-gradient(#0b1424eb,#0b1424fa);flex-direction:column;gap:16px;display:flex;position:absolute;inset:0;overflow-y:auto}.setup-head{align-items:center;gap:12px;display:flex}.setup-head h2{font-family:var(--display);margin:0}.setup-grid{grid-template-columns:1.2fr 1fr;gap:16px;display:grid}.cam-box,.preview-box{border-radius:var(--r);border:1px solid var(--line);background:#070d18;min-height:260px;position:relative;overflow:hidden}.cam-canvas{object-fit:cover;aspect-ratio:4/3;width:100%;height:100%;display:block}.cam-msg{text-align:center;color:var(--muted);place-items:center;padding:24px;display:grid;position:absolute;inset:0}.cam-msg.error{color:var(--danger)}.cal-steps{gap:8px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.cal-step{border:1px solid var(--line);background:#0a1221cc;border-radius:10px;flex:1;align-items:center;gap:8px;padding:8px 10px;font-size:14px;font-weight:600;display:flex;position:relative;overflow:hidden}.cal-step.active{border-color:var(--gold)}.cal-step.ok{border-color:var(--hud);color:var(--hud)}.cal-dot{background:#ffffff1a;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:12px;display:grid}.cal-bar{background:var(--gold);height:3px;transition:width .1s;position:absolute;bottom:0;left:0}.jet-preview{position:absolute;inset:0 0 64px}.setup-instr{border-top:1px solid var(--line);background:#0a1221e6;align-items:center;min-height:64px;margin:0;padding:12px 16px;font-size:15px;line-height:1.4;display:flex;position:absolute;bottom:0;left:0;right:0}.gesture-list{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.gesture{border:1px solid var(--line);background:#ffffff0a;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;transition:background .12s,border-color .12s;display:flex}.gesture.on{border-color:var(--hud);background:#b4ffd229}.g-icon{color:var(--accent);place-items:center;display:grid}.gesture.on .g-icon{color:var(--hud)}.g-text{color:var(--muted);flex-direction:column;font-size:12px;display:flex}.g-text strong{color:var(--text);font-size:14px}.setup-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.slider{color:var(--muted);align-items:center;gap:12px;min-height:44px;font-size:14px;display:flex}.slider input{width:180px;accent-color:var(--accent)}.slider .val{font-variant-numeric:tabular-nums;width:44px}.top-buttons{top:max(10px, env(safe-area-inset-top));left:max(10px, env(safe-area-inset-left));gap:8px;display:flex;position:absolute}.chips{left:50%;bottom:max(14px, env(safe-area-inset-bottom));pointer-events:none;align-items:center;gap:6px;display:flex;position:absolute;transform:translate(-50%)}.chip{border:1px solid var(--line);font-family:var(--display);color:var(--muted);background:#0a122199;border-radius:10px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:600;display:inline-flex}.chip.on{color:#08130d;background:var(--hud);border-color:var(--hud)}.chip.warn{background:var(--danger);border-color:var(--danger);color:#fff}.hp{border:1px solid var(--line);background:#0006;border-radius:4px;width:90px;height:8px;overflow:hidden}.hp-fill{height:100%;transition:width .2s;display:block}.touch{pointer-events:none;justify-content:space-between;height:46%;display:flex;position:absolute;inset:auto 0 0}.pad{pointer-events:auto;touch-action:none;place-items:center;width:50%;height:100%;display:grid;position:relative}.pad-hint{color:#ffffff73;font-size:13px}.knob{background:#ffffff1f;border:2px solid #fff9;border-radius:50%;width:64px;height:64px}.tbuttons{pointer-events:auto;padding:0 max(14px, env(safe-area-inset-right)) 56px 0;grid-template-columns:repeat(3,60px);align-content:end;gap:10px;display:grid}.tbtn{border:1px solid var(--line-strong);touch-action:none;background:#0a12218c;border-radius:50%;place-items:center;width:60px;height:60px;display:grid}.tbtn.fire{background:#ff6b358c}@media (width<=720px){.panel{padding:16px}.planes,.modes,.actions,.setup-grid{grid-template-columns:1fr}.gesture-list{grid-template-columns:repeat(2,1fr)}.brand h1{font-size:28px}}@media (height<=480px){.panel{top:16px;transform:translate(-50%)}.setup-grid{grid-template-columns:1.2fr 1fr}.gesture-list{grid-template-columns:repeat(5,1fr)}.g-text span{display:none}}.btn.toggled{border-color:var(--gold);color:var(--gold)}
