:root{color-scheme:dark;--ink:#edf3ff;--muted:#a1b2c8;--mint:#a5f0dc;--coral:#ffb492;--line:#b6d8e432;--bg:#0a101e}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,sans-serif}body{background:radial-gradient(ellipse at 35% 20%,#142b44,transparent 65%),var(--bg)}[hidden]{display:none!important}button,input,select{font:inherit;color:inherit}button,a,input,select{touch-action:manipulation}button{min-height:48px;padding:12px 16px;border-radius:15px;background:#193244;border:1px solid #a5d3d95c;cursor:pointer;font-weight:750}button:hover{background:#24485b}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--mint);outline-offset:3px}.primary{background:var(--mint);color:#0c343b;border-color:var(--mint)}.primary:hover{background:#c1ffed}.primary span{float:right;font-size:22px;line-height:1}.text-button{background:none;border-color:transparent;color:var(--muted);margin-top:12px}.error{color:#ffd0bd;min-height:1.5em;margin:14px 0;overflow-wrap:anywhere}.fine{color:var(--muted);font-size:14px;margin:12px 0}.mint{color:var(--mint)}#team-header{max-width:1200px;margin:auto;padding:max(20px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) 10px max(24px,env(safe-area-inset-left));display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-size:11px;line-height:1.2;letter-spacing:2px}.brand span{font-size:42px;color:var(--mint)}.team-badge{font-size:10px;font-weight:800;letter-spacing:1.6px;color:var(--muted)}#lobby{max-width:1100px;margin:30px auto;padding:16px 24px 50px;display:grid;grid-template-columns:1fr 1.05fr;gap:70px;align-items:start}.hero{padding:30px 0}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:var(--muted);margin:0 0 22px}h1{font-size:clamp(44px,6.4vw,76px);line-height:1.02;letter-spacing:-3px;margin:0 0 30px;font-weight:900}h1 em{color:var(--mint);font-style:normal}.hero>p:not(.eyebrow){font-size:20px;color:var(--muted);line-height:1.5}.orbit-art{display:flex;gap:30px;align-items:center;justify-content:center;max-width:300px;height:200px}.orbit-art img{width:86px;filter:drop-shadow(0 12px 25px #89ffe328);transform:rotate(-15deg)}.orbit-art img:last-child{transform:translateY(25px) rotate(18deg)}.orbit-art span{color:var(--coral);font-size:30px}.panel{background:linear-gradient(145deg,#15283eea,#0f1d30f5);border:1px solid var(--line);border-radius:25px;padding:28px;box-shadow:0 30px 65px #03091255;min-width:0}h2{font-size:27px;line-height:1.15;letter-spacing:-.7px;margin:0 0 24px}h3{font-size:17px}.panel-title{display:flex;justify-content:space-between;gap:12px;align-items:start}.panel-title span{font-size:12px;text-align:right;overflow-wrap:anywhere}.panel label{display:block;color:var(--muted);font-size:13px;font-weight:650;margin-bottom:8px}input,select{display:block;width:100%;min-width:0;min-height:49px;border:1px solid var(--line);border-radius:12px;background:#0a1729;padding:11px 13px;font-size:16px}form .primary,#quick-match{width:100%;margin:12px 0 0}.field-row,.split-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-row label{min-width:0}.field-row select{margin-top:8px}.split-actions{margin-top:20px}.join-row{margin:26px 0 0;border-top:1px solid var(--line);padding-top:20px}.join-row>div{display:grid;grid-template-columns:1fr auto;gap:10px}#pilots-panel{margin-top:22px}.card-list{display:grid;gap:9px;margin-top:12px}.pilot-card{border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;justify-content:space-between;align-items:center;gap:10px;min-width:0}.pilot-card span{overflow-wrap:anywhere}.pilot-card small{display:block;color:var(--muted);font-size:11px}.pilot-card button{flex-shrink:0;padding:9px 13px;font-size:13px}.room-code-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#08172a;border:1px solid var(--line);border-radius:14px;padding:13px;flex-wrap:wrap}.room-code-row>span{font-size:9px;letter-spacing:1px;color:var(--muted)}.room-code-row strong{color:var(--mint);font:750 22px ui-monospace,monospace;letter-spacing:2px}.room-code-row button{font-size:11px;min-height:40px;padding:8px}.members{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.member{border:1px solid var(--line);border-radius:17px;padding:16px;min-width:0}.member strong{display:block;overflow-wrap:anywhere}.member small{display:block;color:var(--muted);margin:7px 0 0}.member.ready{border-color:var(--mint);background:#a5f0dc0b}#room-connection{font-size:13px;color:var(--mint)}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.result-grid small{display:block;font-size:10px;color:var(--muted);letter-spacing:1px}.result-grid strong{font-size:34px}.playing #team-header,.playing #lobby{display:none}.playing{overflow:hidden}#team-play{height:100vh;height:100svh;max-width:1160px;margin:0 auto;display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto;padding:max(7px,env(safe-area-inset-top)) max(7px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));gap:0}.team-hud{background:#142238;border:1px solid var(--line);border-radius:20px 20px 0 0;padding:9px 14px}.team-names{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;color:var(--mint)}.team-names b{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.team-names span{color:var(--muted);flex-shrink:0}.game-numbers{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:5px}.game-numbers small{display:block;font-size:9px;letter-spacing:1.5px;color:var(--muted);font-weight:800}.game-numbers strong{font-size:22px;font-weight:850;line-height:1.15}.game-numbers button{min-height:44px;min-width:44px;padding:7px;font-size:19px;background:#a5f0dc0b}.team-stage{min-width:0;min-height:0;background:#0a1425;border-left:1px solid var(--line);border-right:1px solid var(--line);overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none}.team-dock{background:#12283a;border:1px solid var(--line);border-radius:0 0 20px 20px;padding:8px 9px 10px}.team-dock>p{height:18px;margin:0 0 7px;font-size:11px;color:var(--mint);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dock-row{display:flex;gap:6px;align-items:stretch;min-height:54px}.dock-row>*{flex:1;min-width:0;touch-action:none}.dock-row button{padding:8px 4px;font-size:clamp(11px,2.8vw,14px);border-radius:12px;min-height:54px;white-space:normal;overflow-wrap:normal}.dock-row button small{display:block;font-size:10px;font-weight:500;color:inherit;margin-bottom:3px}.dock-row button[aria-pressed=true]{background:var(--mint);color:#10333d;border-color:var(--mint)}#team-nova{flex:.75;border-color:#ffb49299;color:var(--coral)}#team-aim{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed #a5f0dc75;border-radius:12px;color:var(--mint)}#team-aim small,#team-fire small{font-size:10px;letter-spacing:1px}#team-aim strong{font-size:11px}#team-fire{background:#244a50}#team-fire.hot{background:#4c3425;color:var(--coral)}#team-stick{position:relative;min-width:60px;border-radius:50%;max-width:74px;height:66px;border:2px solid #a5f0dc70;background:#a5f0dc0b;touch-action:none}#team-knob{position:absolute;left:50%;top:50%;width:25px;height:25px;border-radius:50%;background:var(--mint);transform:translate(-50%,-50%);pointer-events:none}#rescue-controls>span{align-self:center;text-align:center;font-size:10px;letter-spacing:1px;color:var(--muted)}#rescue-controls button{font-size:28px}body:not(.playing) #team-play{display:none!important}
@media(max-width:760px){#lobby{display:block;margin:0 auto;padding:0 16px 35px;max-width:560px}.hero{padding:14px 9px 8px;position:relative}.hero .eyebrow{margin:0 0 15px}h1{font-size:48px;letter-spacing:-2px;margin:0 0 16px}.hero>p:not(.eyebrow){font-size:16px;max-width:210px}.orbit-art{position:absolute;right:0;bottom:5px;gap:7px;width:120px;height:110px}.orbit-art img{width:43px}.orbit-art span{font-size:14px}.panel{padding:23px 20px;border-radius:22px}h2{font-size:25px}.team-badge{font-size:8px;letter-spacing:1px}#team-header{padding-left:20px;padding-right:20px}.brand span{font-size:34px}.brand b{font-size:9px}.members{gap:8px}.member{padding:12px}.room-code-row strong{font-size:19px}.room-code-row>span{display:none}}
@media(max-width:340px){#team-header{gap:8px}.hero .orbit-art{display:none}.field-row,.split-actions{grid-template-columns:1fr}.game-numbers{gap:8px}.game-numbers strong{font-size:18px}.dock-row{gap:4px}.dock-row button{font-size:10px;padding:6px 3px}.team-hud{padding:8px 9px}.team-names{font-size:9px}}
@media(min-width:600px) and (max-height:550px){#team-play{grid-template-columns:minmax(0,1fr) 164px;grid-template-rows:auto minmax(0,1fr)}.team-hud{grid-column:1 / -1}.team-stage{grid-column:1;grid-row:2;border-bottom:1px solid var(--line);border-radius:0 0 0 20px}.team-dock{grid-column:2;grid-row:2;border-radius:0 0 20px 0;display:flex;flex-direction:column;justify-content:center;gap:8px}.team-dock>p{white-space:normal;height:auto;max-height:46px;line-height:1.3}.dock-row{display:grid;grid-template-columns:1fr;gap:7px;min-height:0}.dock-row button{min-height:44px;font-size:12px;padding:6px}.dock-row button small{display:none}#team-aim{min-height:46px}#team-stick{justify-self:center;width:64px;height:58px}#brawl-controls{grid-template-columns:1fr 1fr}#team-stick{grid-column:1 / -1}#brawl-controls button:last-child{grid-column:1 / -1}.team-names{display:none}.game-numbers{margin:0}.game-numbers strong{font-size:20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.hit{color:#ffb492;text-shadow:0 0 14px #ffb492;}
@media(max-width:340px){#flight-controls{display:grid;grid-template-columns:1fr 1fr}#flight-controls button{font-size:12px;min-height:44px}}

.session-menu .hero{display:none}.session-menu #lobby{display:block;max-width:610px}.audio-row{margin:0 0 20px}.audio-row button{font-size:13px;min-height:44px}

.invite-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 0}.invite-actions button,.email-invite{min-height:48px;font-size:14px}.email-invite{display:flex;align-items:center;justify-content:center;padding:12px 14px;border:1px solid #a5d3d95c;border-radius:15px;background:#193244;color:var(--ink);font-weight:750;text-decoration:none;text-align:center}.email-invite:hover{background:#24485b}.invite-help{margin:9px 0;font-size:12px}#invite-status:empty{display:none}#invite-fallback{margin:14px 0}#invite-message{display:block;width:100%;min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#0a1729;color:var(--ink);font:14px/1.5 system-ui,sans-serif;resize:vertical;overflow-wrap:anywhere}#copy-invite-message{margin-top:10px;width:100%}.invitation-banner{padding:14px;border:1px solid #a5f0dc66;border-radius:14px;background:#a5f0dc0a;color:var(--mint);font-size:14px;overflow-wrap:anywhere}.invitation-banner p{margin:0 0 12px}.invitation-banner button{width:100%}#incoming-room{margin:0 0 20px}@media(max-width:340px){.invite-actions{grid-template-columns:1fr}}
.room-code-row button{min-height:44px}

#playing-names{display:flex;align-items:center;gap:8px;min-width:0}#playing-p1,#playing-p2{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}#playing-p1{color:#72edff}#playing-p2{color:#ffbd52}#playing-you{flex-shrink:0;border:1px solid #edf3ff66;background:#071421;color:#fff;padding:1px 4px;border-radius:4px;font-size:9px}

#team-warp{border-color:#78e8ff;color:#baf5ff}#team-warp.warp-active{opacity:1;background:#123b50}#flight-controls{grid-template-columns:repeat(5,minmax(0,1fr))}#flight-controls button{min-width:0;padding-inline:3px;font-size:12px}
@media(min-width:600px) and (max-height:550px){#flight-controls{grid-template-columns:repeat(2,minmax(0,1fr))}#team-warp{grid-column:1/-1}#team-warp small{display:block}}
@media(max-width:340px){#flight-controls{grid-template-columns:repeat(2,minmax(0,1fr))}#team-warp{grid-column:1/-1}}

.game-numbers .bonus-live{display:block;font-size:10px;line-height:1.2;letter-spacing:0;color:#a5f0dc;white-space:nowrap}.result-bonuses{color:#ffe69d;font-weight:650}

#landing-controls, #landing-controls button{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}

/* The whole pad owns the hold, including its label and icon. */
#grapple-hold{box-sizing:border-box;width:100%;min-width:0;height:100%;min-height:54px;max-height:82px;display:flex;align-items:center;justify-content:center;gap:12px;border:2px solid #8fdcca;border-radius:14px;background:#193d46;color:#e7fff8;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font:600 15px/1.12 system-ui;cursor:pointer;padding:5px 9px}
#grapple-hold[hidden]{display:none!important}
#grapple-hold>*{pointer-events:none}
#grapple-hold svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
#grapple-hold span{display:grid;gap:3px;text-align:left}
#grapple-hold strong{font-size:clamp(16px,2.7vw,21px)}
#grapple-hold small{font-size:12px;font-weight:550}
#grapple-hold[aria-pressed=true]{color:#092a29;background:#97e9cc;border-color:#d4fff1;box-shadow:inset 0 0 0 2px #49988c}
#grapple-hold:focus-visible{outline:3px solid #ffde86;outline-offset:2px}
