:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#eef0e5;background:#101310;font-synthesis:none;font-weight:450;--muted:#8d968b;--line:#30372f;--acid:#d7fb69;--ct:#73c9e5;--t:#e89470}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.35;cursor:default}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--acid);outline-offset:4px}button,input{border-radius:3px}button{border:0}a{color:inherit}input{background:#101610;border:1px solid #404a3d;color:#fff;padding:15px 16px;min-width:0;outline:none}input:focus{border-color:var(--acid)}.hidden{display:none!important}.mono,.eyebrow,.chip{font-family:SFMono-Regular,Consolas,monospace}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.primary{min-height:52px;background:var(--acid);color:#19200e;font-weight:750;padding:16px 23px;display:inline-flex;justify-content:center;align-items:center;gap:20px;transition:background .2s,transform .2s}.primary:hover:not(:disabled){background:#e4ff9a;transform:translateY(-1px)}.secondary{background:#252d24;color:#edf2e6;border:1px solid #455040;padding:12px 16px;min-height:44px}.ghost{background:transparent;color:#c4cdbd;min-height:44px;padding:10px 14px;border:1px solid #3a4235}.ghost:hover{color:var(--acid);border-color:#7d8a6a}.arrow{font-size:24px;font-weight:400;line-height:1}.brand{display:flex;align-items:center;gap:11px;font-size:20px;font-weight:900;letter-spacing:-.7px}.brand-mark{height:30px;width:30px;position:relative;transform:rotate(-8deg);background:var(--acid);clip-path:polygon(0 0,100% 0,100% 29%,34% 29%,34% 42%,82% 42%,82% 69%,34% 69%,34% 100%,0 100%)}.brand span{color:var(--acid)}.landing{min-height:100svh;max-width:1600px;margin:auto;padding:0 5vw;overflow:hidden}.topbar{height:94px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:2}.top-right{display:flex;align-items:center;gap:25px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--acid);margin-right:8px;box-shadow:0 0 10px #d7fb6955}.tiny{font-size:11px;color:var(--muted)}.hero{display:grid;grid-template-columns:1fr 1.13fr;min-height:650px;align-items:center;gap:32px}.hero-copy{position:relative;z-index:2;padding:58px 0}.hero-copy .eyebrow{color:var(--acid);display:flex;align-items:center;gap:12px}.eyebrow-line{width:24px;height:1px;background:currentColor}.hero h1{font-size:clamp(42px,5.1vw,76px);line-height:1.02;letter-spacing:-3.3px;margin:28px 0 25px;font-weight:850}.hero h1 em{font-style:normal;color:var(--acid)}.hero-desc{font-size:15px;line-height:1.75;max-width:380px;color:#a8b1a3;margin:0 0 28px}.entry-form{display:grid;gap:10px;max-width:375px}.entry-form label{font-size:11px;letter-spacing:.4px;color:#c3cbbd}.name-row{display:flex;gap:8px}.name-row input{flex:1;width:100%}.input-symbol{padding:14px 17px;border:1px solid #404a3d;color:var(--acid);background:#1b2218;font-size:19px}.entry-form .primary{margin-top:4px;justify-content:space-between}.join-link{background:transparent;color:#a9b89c;padding:12px 0;text-align:left;font-size:12px}.join-link:hover{color:var(--acid)}.join-row{display:flex;gap:8px}.join-row input{width:100%;font-size:12px}.fineprint{color:#6e7d66;font-size:10px;line-height:1.7;margin-top:11px;letter-spacing:.3px}.hero-visual{height:552px;position:relative;margin-right:-35px;align-self:center}.visual-grid{position:absolute;inset:-45px;background-image:linear-gradient(#52604c18 1px,transparent 1px),linear-gradient(90deg,#52604c18 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:radial-gradient(ellipse,black 30%,transparent 70%);mask-image:radial-gradient(ellipse,black 30%,transparent 70%)}.map-preview{position:absolute;inset:15px -30px -10px -15px;width:calc(100% + 45px);height:calc(100% - 5px);filter:drop-shadow(0 25px 35px #0008)}.visual-label{position:absolute;left:10px;top:8px;display:flex;align-items:center;gap:12px;color:#a7b398;font-size:10px;letter-spacing:1px}.visual-label:before{content:"";display:block;width:6px;height:6px;background:var(--acid)}.visual-note{position:absolute;bottom:24px;right:30px;border-left:2px solid var(--acid);padding:4px 0 4px 12px;color:#d5dfc9;font-size:12px;line-height:1.8}.visual-note small{display:block;color:#6c7b65;font-size:9px;letter-spacing:1px}.map-stamp{position:absolute;right:12px;top:25px;font-size:11px;color:#65735d;writing-mode:vertical-rl;letter-spacing:2px}.rules-strip{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.rule{display:flex;gap:19px;padding:25px 24px 27px 0}.rule+.rule{border-left:1px solid var(--line);padding-left:30px}.rule-number{font-size:11px;color:#70825e;padding-top:4px}.rule h3{font-size:13px;margin:0 0 7px;font-weight:600}.rule p{font-size:11px;color:#8b9681;line-height:1.7;margin:0;max-width:240px}.landing-footer{display:flex;justify-content:space-between;padding:23px 0;font-size:10px;color:#64725d;letter-spacing:.5px}.toast{position:fixed;z-index:100;left:50%;bottom:26px;transform:translate(-50%);max-width:min(92vw,500px);background:#e8eddc;color:#20281b;box-shadow:0 8px 40px #0007;padding:14px 20px;font-size:13px;border-left:4px solid var(--acid)}.toast:empty{display:none}.lobby{max-width:1120px;margin:auto;padding:0 32px 50px;min-height:100svh}.lobby-heading{display:flex;align-items:flex-end;justify-content:space-between;margin:48px 0 26px;gap:20px}.lobby h1{font-size:40px;letter-spacing:-1.7px;margin:10px 0}.lobby-summary{font-size:13px;color:#9aa690;line-height:1.7}.invite-box{display:flex;gap:8px;align-items:center;background:#1b2218;border:1px solid #35402e;padding:6px 6px 6px 15px}.invite-box code{color:var(--acid);font-size:15px;letter-spacing:2px}.teams{display:grid;grid-template-columns:1fr 1fr;gap:24px}.team-panel{background:#171e17;border:1px solid #303a2e;padding:22px}.team-heading{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px;border-bottom:1px solid #333f2d}.team-heading h2{font-size:16px;letter-spacing:.5px;margin:0}.team-ct h2{color:var(--ct)}.team-t h2{color:var(--t)}.team-heading button{font-size:11px;padding:9px 12px;min-height:34px}.slot{display:flex;align-items:center;gap:14px;padding:19px 0;border-bottom:1px solid #2b3526}.slot:last-child{border-bottom:0}.avatar{width:34px;height:34px;background:#73c9e512;border:1px solid #73c9e53b;color:var(--ct);display:grid;place-items:center;font-size:12px}.team-t .avatar{background:#e8947012;border-color:#e894703b;color:var(--t)}.slot-name{font-size:13px;flex:1}.slot-name small{display:block;font-size:9px;color:#7b8b6f;margin-top:5px;letter-spacing:1px}.slot-status{font-size:10px;color:#7f9071}.slot-status.ready{color:var(--acid)}.lobby-actions{display:flex;gap:12px;align-items:center;margin-top:24px}.lobby-actions .hint{flex:1;font-size:11px;color:#829276;line-height:1.7}.lobby-actions .primary{min-width:190px}.lobby-legend{border-top:1px solid var(--line);margin-top:35px;padding-top:22px;font-size:11px;display:flex;gap:25px;color:#859579}.lobby-legend b{color:#c3d5ae;font-weight:500}.game{position:fixed;inset:0;background:#050807;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.game-stage{position:absolute;inset:58px 0 56px}.game-stage canvas{display:block;margin:auto}.game-hud{height:58px;position:absolute;left:0;right:0;top:0;z-index:5;background:#111810ef;border-bottom:1px solid #2b3b26;display:flex;justify-content:space-between;align-items:center;padding:0 24px;gap:10px}.game-hud .brand{font-size:15px}.game-hud .brand-mark{height:22px;width:22px}.scoreboard{display:flex;align-items:center;gap:25px}.team-score{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ct)}.team-score.t{color:var(--t)}.team-score b{font-size:25px}.round-time{text-align:center;min-width:90px}.round-time strong{font-size:20px;font-weight:500;letter-spacing:2px}.round-time small{display:block;font-size:8px;color:#839475;margin-top:3px;letter-spacing:1px}.hud-actions{display:flex;align-items:center;gap:6px}.hud-actions button{font-size:10px;min-height:32px;padding:7px 10px}.hud-actions .ping{font-size:9px;color:#85957a;margin-right:7px}.game-bottom{position:absolute;bottom:0;left:0;right:0;height:56px;display:flex;justify-content:space-between;align-items:center;padding:0 24px;background:#111810ef;border-top:1px solid #2b3b26;z-index:5;font-size:10px;color:#92a281}.game-bottom .callsign{font-size:11px;color:var(--acid);letter-spacing:1px}.weapon{display:flex;align-items:center;gap:14px}.weapon-status{font-size:9px;color:var(--acid)}.weapon-icon{width:42px;height:12px;clip-path:polygon(0 0,100% 0,100% 40%,50% 40%,50% 100%,30% 100%,30% 40%,0 40%);background:var(--acid)}.center-message{position:absolute;top:24%;left:50%;transform:translate(-50%);text-align:center;z-index:6;pointer-events:none;width:90%;text-shadow:0 3px 20px #000}.center-message strong{display:block;font-size:clamp(26px,5vw,56px);font-weight:800;letter-spacing:-2px;color:var(--acid)}.center-message small{display:block;color:#c1ceb5;font-size:12px;margin-top:10px}.spectator{position:absolute;left:50%;bottom:80px;transform:translate(-50%);z-index:9;background:#1a2519f5;padding:10px 17px;border:1px solid #4e613d;font-size:11px;display:flex;gap:15px;align-items:center}.spectator button{background:none;border:0;color:var(--acid);font-size:20px}.match-result{position:absolute;inset:0;z-index:15;display:grid;place-items:center;background:#070e09df;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.result-card{width:min(420px,90vw);text-align:center;background:#172016;border:1px solid #526140;padding:45px 25px}.result-card h2{font-size:32px;letter-spacing:-1px}.result-score{font-size:70px;font-weight:700;letter-spacing:8px;color:var(--acid);margin:15px 0 26px}.result-card button{width:100%;margin-top:10px}.touch-controls{display:none;position:absolute;inset:0;z-index:8;pointer-events:none}.stick{pointer-events:auto;position:absolute;bottom:90px;width:114px;height:114px;border:1px solid #97b07870;border-radius:50%;background:#18331b35;touch-action:none}.stick-move{left:24px}.stick-aim{right:108px}.stick:before,.stick:after{content:"";position:absolute;background:#a5bc8a25}.stick:before{height:1px;left:12px;right:12px;top:50%}.stick:after{width:1px;top:12px;bottom:12px;left:50%}.stick-knob{position:absolute;left:37px;top:37px;width:38px;height:38px;border-radius:50%;background:#d7fb693b;border:1px solid #d7fb6980;pointer-events:none}.stick-label{position:absolute;top:calc(100% + 8px);width:100%;text-align:center;font-size:8px;letter-spacing:1.4px;color:#a4bb8c;pointer-events:none}.fire{position:absolute;right:18px;bottom:100px;width:70px;height:70px;border-radius:50%;border:2px solid var(--acid);background:#cce96033;color:var(--acid);font-size:27px;pointer-events:auto;touch-action:none}.fire:active{background:#d7fb6980}.rotate-screen{display:none;position:fixed;inset:0;background:#10190afc;z-index:60;align-items:center;justify-content:center;text-align:center;padding:30px;flex-direction:column;gap:18px}.rotate-icon{font-size:55px;color:var(--acid)}.rotate-screen p{max-width:260px;font-size:13px;color:#a5b391;line-height:1.7}.connection-overlay{position:absolute;inset:58px 0 56px;background:#060e09e8;z-index:30;display:grid;place-items:center;text-align:center;font-size:20px;color:var(--acid)}.connection-overlay small{display:block;font-size:12px;margin-top:12px;color:#9cac8c}@media(pointer:coarse){.touch-controls{display:block}.desktop-hint{display:none}.game-hud,.game-bottom{padding:0 14px}.game-stage{inset:48px 0 35px}.game-hud{height:48px}.game-bottom{height:35px}.game-bottom .weapon{display:none}.game-bottom .callsign{font-size:9px}.spectator{bottom:45px}.hud-actions .ping{display:none}}@media(pointer:coarse)and (orientation:portrait){.game:not(.hidden) .rotate-screen{display:flex}}@media(max-width:1000px){.hero h1{letter-spacing:-2px}.hero{gap:5px;min-height:610px}.hero-visual{height:480px;margin-right:-50px}.hero-copy{padding:45px 0}.top-right .tiny{display:none}.visual-note{right:45px}.rule{gap:12px}.rule+.rule{padding-left:20px}}@media(max-width:700px){.landing{padding:0 6vw}.topbar{height:74px}.hero{display:flex;flex-direction:column;align-items:stretch;gap:0;min-height:0}.hero-copy{padding:40px 0 0}.hero h1{font-size:49px;letter-spacing:-2.3px}.hero-desc{font-size:14px;max-width:340px;margin-bottom:24px}.entry-form{max-width:none}.hero-visual{height:350px;width:100%;margin:24px 0 0;align-self:auto}.map-preview{inset:0;width:100%;height:100%}.visual-label{left:0;top:0}.visual-note{bottom:0;right:0}.map-stamp{right:0;top:18px}.rules-strip{grid-template-columns:1fr;margin-top:20px}.rule,.rule+.rule{padding:20px 0;border-left:0}.rule+.rule{border-top:1px solid #273022}.rule p{max-width:none}.landing-footer{font-size:8px;gap:15px}.lobby{padding:0 16px 30px}.lobby-heading{margin:30px 0 20px;align-items:start;flex-direction:column}.lobby h1{font-size:34px}.teams{gap:10px}.team-panel{padding:12px}.team-heading{gap:8px;flex-direction:column;align-items:start;padding-bottom:12px}.team-heading h2{font-size:13px}.slot{gap:8px;padding:15px 0}.avatar{width:23px;height:27px;font-size:10px}.slot-name{font-size:11px}.slot-status{font-size:8px}.lobby-actions{flex-wrap:wrap}.lobby-actions .hint{flex-basis:100%}.lobby-actions button{flex:1}.lobby-legend{gap:14px;flex-wrap:wrap}.game-hud .brand{display:none}.scoreboard{gap:14px}.team-score{font-size:9px;gap:7px}.hud-actions button{padding:7px}.round-time{min-width:65px}.game-hud{gap:4px}.center-message{top:23%}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.game-hud,.game-bottom{padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right))}.stick-move{left:max(24px,env(safe-area-inset-left))}.fire{right:max(18px,env(safe-area-inset-right))}@media(pointer:coarse){.hud-actions button{min-width:44px;min-height:44px}.team-heading button{min-height:44px}.stick{bottom:max(90px,calc(65px + env(safe-area-inset-bottom)))}.fire{bottom:max(100px,calc(75px + env(safe-area-inset-bottom)))}}.match-result{align-items:safe center;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom))}@media(pointer:coarse)and (orientation:portrait){.game:not(.hidden):has(.match-result:not(.hidden)) .rotate-screen{display:none}}
