@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Barlow:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--paper:#f5e5c8;--yellow:#f4bd38;--blue:#72b6ec;--orange:#ef9b60}*{box-sizing:border-box}body{margin:0;background:#111419;color:var(--paper);font-family:'Barlow',Arial,sans-serif;background-image:radial-gradient(ellipse at top,#343331 0,transparent 70%);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px 28px}.shell{width:min(1500px,100%);box-shadow:0 15px 80px #0008;border:1px solid #51483b;border-radius:12px;overflow:hidden;background:#1b1e22}.top{display:flex;align-items:center;gap:28px;padding:16px 22px;background:linear-gradient(#292c30,#1c1f23);border-bottom:1px solid #504b42}.brand{display:flex;gap:12px;align-items:center;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:25px;letter-spacing:.35px;white-space:nowrap}.brand svg{width:48px;color:var(--yellow)}.brand small{display:block;font:600 10px 'Barlow',sans-serif;letter-spacing:2.5px;color:#afa493;margin-top:3px}.mode{border-left:1px solid #655b4d;padding-left:26px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:19px}.mode span{display:block;font:500 10px 'Barlow',sans-serif;letter-spacing:1.5px;color:#a8a69f;margin-top:4px}.top-actions{margin-left:auto;display:flex;gap:8px}button{font:700 14px 'Barlow Condensed',Arial,sans-serif;letter-spacing:.6px;color:var(--paper);background:#292c2e;border:1px solid #6e6250;border-radius:5px;padding:9px 13px;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#41403b}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--yellow);outline-offset:3px}.scorebar{display:flex;align-items:center;gap:30px;padding:12px 30px;background:#202327;border-bottom:2px solid #6d5b3e}.score{display:flex;align-items:center;gap:12px;flex:1;border:1px solid #67747f;border-radius:7px;padding:6px 12px;background:#283847;position:relative;min-width:0}.score.player-orange{background:#423128;border-color:#946448}.portrait{width:39px;height:42px;background-image:url('assets/recruits.png');background-size:140px 70px;background-repeat:no-repeat;border-radius:5px;flex-shrink:0;overflow:hidden;color:transparent}.portrait.blue{background-position:-15px -4px}.portrait.orange{background-position:-83px -4px}.score strong{font:800 24px 'Barlow Condensed',sans-serif;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score small{display:block;font-size:10px;letter-spacing:.6px;color:#b3c6d4}.score b{margin-left:auto;font:700 29px 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums}.holder-badge{display:none;color:#211b10;font-size:34px;line-height:1}.score.holder{background:linear-gradient(#ffda62,#e9ac24);color:#211b10;border-color:#ffe5a0;box-shadow:0 0 0 2px #33270e,0 0 18px #e9ac2422}.holder small{color:#5e471f}.holder .holder-badge{display:block}.round{text-align:center;min-width:170px}.round>span{font:700 34px 'Barlow Condensed';font-variant-numeric:tabular-nums}.round small{display:block;font:600 13px 'Barlow Condensed';letter-spacing:.6px}.progress{height:3px;background:#4a4439;margin-top:5px;border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--yellow)}.stage{position:relative;background:#6d675b;overflow:hidden}canvas{display:block;width:100%;height:100%;outline:none!important}.toast{position:absolute;bottom:22px;right:22px;background:#25251fed;border:1px solid #e3b94b;border-radius:7px;padding:12px 18px;font-weight:700;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none}.toast.visible{opacity:1;transform:none}.countdown{position:absolute;inset:0;display:grid;place-items:center;font:800 110px 'Barlow Condensed';text-shadow:0 5px 0 #322920,0 0 30px #0008;pointer-events:none}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;background:#10182169;backdrop-filter:blur(3px)}.hidden{display:none!important}.panel{width:640px;max-width:100%;background:linear-gradient(145deg,#2b2c2cfa,#1d2125fa);border:1px solid #b69964;border-radius:12px;padding:28px 34px;text-align:center;box-shadow:0 18px 70px #0008}.eyebrow{font:700 12px 'Barlow Condensed';letter-spacing:2.5px;color:#c4a873}h1{font:800 58px/.98 'Barlow Condensed',sans-serif;margin:14px 0}h1 em{font-style:normal;color:var(--yellow)}p{line-height:1.65;font-size:15px;color:#d4cdc0}.names{display:grid;grid-template-columns:1fr 1fr;gap:18px;text-align:left;margin:22px 0}.names label{font-size:11px;font-weight:700;letter-spacing:1px}.blue-label{color:var(--blue)}.orange-label{color:var(--orange)}input{display:block;width:100%;background:#13191f;border:1px solid #64635b;border-radius:4px;color:var(--paper);padding:10px 12px;font:700 19px 'Barlow Condensed';margin:6px 0 10px}.names label span{font-size:10px;font-weight:400;letter-spacing:0;color:#c4c1b9;line-height:2}.primary{background:linear-gradient(#ffda65,#edb130);color:#241c11;border:1px solid #ffe2a0;box-shadow:0 3px 0 #9e6b16;padding:13px 24px;font-size:20px;min-width:220px}.primary:hover{background:#ffdf7a}.primary:disabled{opacity:.5;cursor:wait}.panel-note{font-size:11px;color:#aaa69b;margin-top:17px}.compact{width:430px;padding:30px}.compact h2{font:800 45px/1.05 'Barlow Condensed';margin:17px 0;color:#f5c44d}.quiet{display:block;margin:15px auto 0;border:0;background:transparent;color:#c4bda8;font-size:13px}.compact p{white-space:pre-line}footer{display:flex;justify-content:space-between;align-items:center;padding:14px 23px;background:linear-gradient(#292b2e,#1b1e22);border-top:2px solid #736044;gap:15px}footer>div{display:flex;align-items:center;gap:10px;font-size:11px}footer b{font:700 20px 'Barlow Condensed';max-width:120px;overflow:hidden;text-overflow:ellipsis}footer span{color:#c7c1b5}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.blue-dot{background:var(--blue)}.orange-dot{background:var(--orange)}.footer-center{color:#9b9486;letter-spacing:1.6px;font:600 12px 'Barlow Condensed'}kbd{border:1px solid #877b65;border-radius:3px;padding:1px 4px;font:600 10px 'Barlow';color:#f4e7ce;display:inline-block}.below{display:flex;justify-content:space-between;gap:20px;padding:9px 18px;color:#8f918f;background:#14181c;font-size:10px}.sep{padding:0 6px}@media(max-width:1000px){body{padding:8px}.mode{display:none}.top{padding:12px 16px}.scorebar{gap:15px;padding:8px 14px}.score strong{font-size:20px}.score b{font-size:24px}.footer-center{display:none}.panel{padding:18px 26px}h1{font-size:44px;margin:9px 0}.names{margin:14px 0}.eyebrow{font-size:10px}.panel p{margin:8px 0}.panel-note{margin-top:12px}.below span:last-child{display:none}}@media(max-width:650px){.brand{font-size:19px}.brand svg{width:32px}.brand small{font-size:8px}.top-actions button{font-size:11px;padding:6px}.scorebar{gap:8px}.portrait{display:none}.score{padding:5px 8px;gap:5px}.score strong{font-size:17px}.score small{font-size:8px}.round{min-width:110px}.round>span{font-size:26px}.score b{font-size:20px}.round small{font-size:10px}.panel{padding:16px}h1{font-size:38px}.names{gap:10px}.names label span{font-size:8px}footer>div{flex-wrap:wrap;gap:5px}footer>div>span:last-child{display:none}.toast{font-size:12px;bottom:10px;right:10px}.holder-badge{font-size:20px}}
/* Couch roster and compact four-player scoreboard. */
.matchbar{display:flex;gap:20px;align-items:center;padding:12px 20px;border-bottom:2px solid #6d5b3e;background:#202327}.matchbar .round{min-width:145px}.scorebar{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0;border:0}.score{background:color-mix(in srgb,var(--player) 15%,#202327);border-color:color-mix(in srgb,var(--player) 60%,#51483b);gap:9px;padding:5px 9px}.score strong{font-size:19px}.score small{font-size:9px}.score b{font-size:25px;white-space:nowrap}.player-number{display:grid;place-items:center;background:var(--player);color:#161b20;width:28px;height:28px;border-radius:50%;font:800 20px 'Barlow Condensed';flex-shrink:0}.score.holder{border-color:#ffe5a0}.score.holder .player-number{background:#463613;color:#ffe7a7}.couch-panel{width:780px;padding:20px 28px}.couch-panel h1{font-size:44px;margin:10px 0;line-height:1.05}.couch-panel .intro{margin:7px 0 12px;font-size:14px}.join-hint{padding:10px;background:#111a20;border:1px dashed #79715e;border-radius:6px;margin-bottom:12px}.join-hint b{font:700 19px 'Barlow Condensed';color:#f4ca66}.join-hint span{display:block;font-size:11px;color:#bbb5a8;margin-top:3px}.roster{display:grid;grid-template-columns:1fr 1fr;gap:10px}.roster-row{display:flex;align-items:center;gap:8px;padding:8px;background:#151b20;border:1px solid color-mix(in srgb,var(--player) 45%,#373b3d);border-radius:6px;text-align:left}.roster-row label{flex:1;min-width:0}.roster-row input{margin:0 0 4px;padding:5px 7px;font-size:18px;border-color:#4f5350}.roster-row small{display:block;font-size:9px;letter-spacing:.25px;color:var(--player)}.roster-row button{font:600 23px Arial;padding:0 5px;background:transparent;border:0;color:#a99e8b}.lobby-actions{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin:12px 0 7px}.lobby-actions button{font-size:12px;padding:6px 9px}.device-status{font-size:11px;line-height:1.5;color:#c5bda9;min-height:24px;margin-bottom:8px}.panel-note{line-height:1.5}.primary:disabled,button:disabled{opacity:.5;cursor:default}.primary:disabled:hover{background:linear-gradient(#ffda65,#edb130)}#pauseReason{color:#f4ca66;font-size:14px;line-height:1.4}footer{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:10px 18px;gap:10px}footer>div{display:flex;flex-direction:column;align-items:flex-start;gap:2px}footer b{max-width:100%;font-size:17px}footer span{font-size:9px}.couch-panel{margin:auto}.compact{margin:auto}.scorebar:has(.score:nth-child(3)){grid-template-columns:repeat(4,minmax(0,1fr))}.scorebar:has(.score:nth-child(3)) .score{flex-wrap:wrap;gap:4px}.scorebar:has(.score:nth-child(3)) .score>div{width:calc(100% - 34px)}.scorebar:has(.score:nth-child(3)) .score>b{margin:0 0 0 32px}.scorebar:has(.score:nth-child(3)) .score small{min-height:22px}.score strong{max-width:100%}
@media(max-width:1000px){.matchbar{padding:8px;gap:10px}.matchbar .round{min-width:110px}.couch-panel{padding:16px 22px}.couch-panel h1{font-size:36px}.scorebar:has(.score:nth-child(3)){grid-template-columns:repeat(2,minmax(0,1fr))}.scorebar:has(.score:nth-child(3)) .score{flex-wrap:nowrap}.scorebar:has(.score:nth-child(3)) .score>b{margin-left:auto}.scorebar:has(.score:nth-child(3)) .score small{min-height:0}}
@media(max-width:650px){.roster{grid-template-columns:1fr}.couch-panel{padding:14px}.couch-panel h1{font-size:30px}.matchbar{flex-direction:column}.round{width:100%}.matchbar .round>span{font-size:25px}.scorebar{width:100%}.score small{font-size:8px}.score strong{font-size:16px}.score b{font-size:21px}footer{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-row input{font-size:16px}}
.hud-portrait{width:40px;height:45px;flex-shrink:0;object-fit:contain}.scorebar:has(.score:nth-child(3)) .score>div{width:calc(100% - 44px)}.scorebar:has(.score:nth-child(3)) .score>b{margin-left:45px}.score .weapon-state{color:#ffd981;font-size:9px;min-height:0!important}.score.holder .weapon-state{color:#58401b}.score.holder .hud-portrait{filter:drop-shadow(0 0 3px #fff5)}.compact{width:480px;padding:22px}.compact p{font-size:13px;line-height:1.45}.compact h2{margin:9px 0}.compact .quiet{margin-top:8px}
.brand .legacy-mark[hidden]{display:none}.brand .leader-mark{width:44px;height:51px;object-fit:contain;flex-shrink:0}@media(max-width:650px){.brand .leader-mark{width:33px;height:39px}}
.nav-link{display:inline-flex;align-items:center;justify-content:center;font:700 14px 'Barlow Condensed',Arial,sans-serif;letter-spacing:.6px;color:var(--paper);text-decoration:none;background:#292c2e;border:1px solid #6e6250;border-radius:5px;padding:9px 13px;white-space:nowrap}.nav-link:hover{background:#41403b}.nav-link:focus-visible,a:focus-visible{outline:2px solid var(--yellow);outline-offset:3px}.brand-link{text-decoration:none;color:var(--paper)}.back-to-game{margin-left:auto}.about-body{align-items:flex-start}.about-shell{max-width:1000px}.about-content{max-width:790px;margin:auto;padding:46px 44px}.about-content h1{font-size:76px;margin:18px 0 24px}.about-content h2{font:800 31px 'Barlow Condensed',sans-serif;margin:0 0 12px;color:var(--paper)}.about-content p{font-size:16px;line-height:1.75}.about-content .about-lead{font-size:22px;font-weight:600;color:var(--paper);line-height:1.5;margin-bottom:32px}.about-content section{margin:30px 0}.about-facts{border-left:3px solid #a99064;padding-left:22px}.source-link{font-size:12px;line-height:1.6;color:#cbb384}.satire-card{padding:26px;background:#302b24;border:1px solid #7c663e;border-radius:9px}.satire-card h2{margin-top:10px}.satire-card blockquote{font:600 26px/1.45 'Barlow Condensed',sans-serif;margin:15px 0 20px;color:#f3cf75}.satire-card .satire-note{font-size:12px;line-height:1.65;color:#bdb4a5;margin-bottom:0}.about-cta{border-top:1px solid #51483b;padding-top:30px;margin-top:40px}.about-cta .primary{display:inline-block;text-decoration:none;text-align:center}.about-cta p{font-size:12px;color:#aaa292}.about-footer{display:flex;justify-content:space-between;font-size:12px}.about-footer a{color:#f5cf75}@media(max-width:650px){.top-actions{gap:4px}.top-actions .nav-link{font-size:11px;padding:6px}.top{gap:10px}.about-content{padding:28px 22px}.about-content h1{font-size:58px}.about-content .about-lead{font-size:19px}.about-content p{font-size:15px}.satire-card{padding:20px}.satire-card blockquote{font-size:23px}.back-to-game{font-size:11px;padding:8px}.about-shell .brand{font-size:17px}}
@media(max-width:650px){.top{flex-wrap:wrap}.top-actions{margin-left:0;width:100%;justify-content:flex-end}}

/* Arena selection uses the same backgrounds and cover layout as the actual match. */
.couch-panel{width:870px;padding:16px 24px}.couch-panel h1{font-size:35px;margin:7px 0}.couch-panel .intro{font-size:12px;margin:5px 0 9px}.map-heading{display:flex;align-items:center;justify-content:space-between;margin:7px 0;color:#cbb585;font:700 12px 'Barlow Condensed';letter-spacing:1px}.map-heading button{padding:4px 8px;font-size:11px}.map-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:10px}.map-card{padding:0 0 7px;text-align:left;overflow:hidden;letter-spacing:0;background:#181e22;border:2px solid #5b584d;transition:border-color .15s}.map-card[aria-pressed=true]{border-color:#f6c84f;background:#373124;box-shadow:0 0 0 1px #8c702f}.map-card canvas{width:100%;height:auto;aspect-ratio:280/152;max-height:95px;object-fit:cover}.map-card strong{display:block;font-size:17px;padding:5px 9px 2px}.map-card small{display:block;font:600 8px 'Barlow',sans-serif;color:#c1b7a4;padding:0 9px;line-height:1.4}.join-hint{padding:6px;margin-bottom:8px}.join-hint b{font-size:16px}.lobby-actions{margin:8px 0 5px}.couch-panel .panel-note{margin-top:10px;font-size:10px}.score .boost-state{color:#8cebd2;font-size:9px}.score .boost-state.crash{color:#d8aceb}.score.holder .boost-state{color:#224a3c}.score.holder .boost-state.crash{color:#5f2c68}@media(max-width:650px){.couch-panel{padding:12px}.map-choices{gap:5px}.map-card strong{font-size:13px;padding:5px}.map-card small{font-size:7px;padding:0 5px}.map-card canvas{max-height:60px}.couch-panel h1{font-size:28px}}

.score .spree-state{color:#eed59c;font-size:9px}.score.holder .spree-state{color:#59431c}.matchbar .round{min-width:160px}

.roster-row select{display:block;width:100%;background:#13191f;border:1px solid #4f5350;border-radius:4px;color:var(--paper);padding:5px 7px;font:700 18px 'Barlow Condensed',sans-serif;margin:0 0 4px}.roster-row select:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}

.toast{max-width:min(680px,90%);line-height:1.4}.map-card small{min-height:23px}

.mobile-choice{display:flex;justify-content:center;align-items:center;gap:8px;font-size:13px;margin:8px}.mobile-choice input{width:auto;margin:0;accent-color:#f3c34c}#touchControls{display:none;touch-action:none;user-select:none;-webkit-user-select:none}#touchControls.active{display:flex;justify-content:space-between;align-items:center;background:#19232a;padding:12px max(18px,env(safe-area-inset-left));gap:15px}#touchControls button,#touchControls [data-aim]{touch-action:none;user-select:none;-webkit-user-select:none}.dpad{display:grid;grid-template-columns:repeat(3,52px);grid-template-rows:repeat(3,48px);gap:3px}.dpad button{font-size:24px;padding:0;background:#354958;border:2px solid #8aafbd}.dpad button:nth-child(1){grid-area:1/2}.dpad button:nth-child(2){grid-area:2/1}.dpad button:nth-child(3){grid-area:2/3}.dpad button:nth-child(4){grid-area:3/2}.touch-right{display:flex;align-items:center;gap:12px}[data-aim]{width:105px;height:105px;display:grid;place-content:center;text-align:center;border:2px solid #ae9473;border-radius:50%;background:radial-gradient(#536168,#24313c);font-size:13px;font-weight:bold}[data-fire]{width:78px;height:78px;border-radius:50%;background:#bd633b;font-size:17px}.pressed{filter:brightness(1.6)}.irradiated{box-shadow:inset 0 0 12px #c6eb68}.mobile-mode .lobby-actions,.mobile-mode .roster-row>button,.mobile-mode .join-hint,.mobile-mode .panel-note,.mobile-mode #playerControls,.mobile-mode .below{display:none}.mobile-mode .top{padding:8px;gap:10px}.mobile-mode .brand{font-size:17px}.mobile-mode .brand small{display:none}.mobile-mode .scorebar{grid-template-columns:1fr 1fr}.mobile-mode .matchbar{flex-direction:row;padding:5px;gap:5px}.mobile-mode .matchbar .round{min-width:80px;width:80px}.mobile-mode .round small{font-size:8px}.mobile-mode .score b{font-size:21px}.mobile-mode .score strong{font-size:16px}.mobile-mode .hud-portrait{display:none}.mobile-mode .score small{font-size:7px}.mobile-mode .couch-panel h1{font-size:27px}.mobile-mode .roster{grid-template-columns:1fr 1fr}.mobile-mode .roster-row{padding:5px}.mobile-mode .roster-row select{font-size:16px}.mobile-mode .toast{font-size:10px;padding:6px;bottom:6px;right:6px}@media(max-width:420px){.dpad{grid-template-columns:repeat(3,42px);grid-template-rows:repeat(3,42px)}[data-aim]{width:85px;height:85px}[data-fire]{width:65px;height:65px}.touch-right{gap:6px}#touchControls.active{padding:8px}.mobile-mode .matchbar .round{min-width:65px;width:65px}.mobile-mode .score{padding:4px}.mobile-mode .score strong{font-size:14px}.mobile-mode .score b{font-size:18px}}
.mobile-mode:has(#pause:not(.hidden)) #touchControls,.mobile-mode:has(#result:not(.hidden)) #touchControls{display:none}


.connection-bar{padding:12px 20px;background:#141c23;border-bottom:1px solid #65573e}.connection-bar>div{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.connection-bar b{color:#f4ca62;font:700 16px 'Barlow Condensed',sans-serif}.connection-bar span{font-size:12px}.connection-bar form{display:flex;gap:6px;align-items:center}.connection-bar input{width:90px;margin:0;font-size:20px;text-transform:uppercase;text-align:center;letter-spacing:3px}.connection-bar p:empty{display:none}.connection-bar p{margin:7px 0 0;color:#ffd084;font-size:13px}#currentCode{font-size:25px;letter-spacing:5px}#connectionChoices>span{color:#b9b5a9}.room-roster{margin:8px 0;padding:10px;background:#121a20;border:1px solid #617482;border-radius:6px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.room-roster span{padding:5px 8px;background:#293c48;font-size:12px}.room-roster .offline{background:#684d35}.session-board{padding:15px 24px;border-top:1px solid #615640;background:#171d23}.session-board h2{font:700 24px 'Barlow Condensed';margin:0}.session-board p{font-size:12px;margin:5px 0 10px}.session-board table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}.session-board td,.session-board th{padding:6px;border-bottom:1px solid #3c4247}.session-board th{color:#efc96d}.session-board button{margin-top:12px}.online-mode .panel-note{display:none}.online-mode .join-hint span{display:none}.online-mode .eyebrow{letter-spacing:1px}.online-mode #resetSession{display:none}.online-mode .session-board{display:block}.online-mode #touchControls.active{display:flex}.mobile-mode .connection-bar{padding:8px}.mobile-mode .connection-bar button{font-size:12px;padding:7px}.mobile-mode .connection-bar>div{gap:6px}.mobile-mode .connection-bar>div>b{font-size:13px}.mobile-mode .connection-bar input{width:76px}.mobile-mode .session-board{padding:10px}.network-wait{position:absolute;top:8px;left:50%;transform:translateX(-50%);background:#1f2428ed;color:#ffdc79;padding:8px 15px;border:1px solid #b99853;border-radius:6px;font-size:13px;z-index:4;pointer-events:none}


.about-rules{padding-left:22px;line-height:1.65;color:#d4cdc0}.about-rules li{padding-left:5px;margin:11px 0}.about-rules strong{color:#f4d58d}

.net-diag{position:absolute;left:8px;bottom:8px;margin:0;max-width:calc(100% - 16px);background:#111619e6;color:#bfe9d4;border:1px solid #4d7a67;border-radius:6px;padding:6px 9px;font:11px/1.45 ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;z-index:5;pointer-events:none}

/* ==== Viewport-fitted game layout (index.html only) ====
   The page never scrolls: header, HUD, arena and touch controls share 100dvh.
   Sizes follow the available height via clamp(); the lobby switches to steps
   (tabs) from JS only when its content genuinely does not fit. */
body.game-page{display:block;min-height:0;height:100vh;height:100dvh;padding:0;margin:0;background:#111419}
.game-page .shell{width:100%;max-width:none;height:100vh;height:100dvh;display:flex;flex-direction:column;border:0;border-radius:0;box-shadow:none;overflow:hidden;
 padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#1b1e22}
.game-page .shell:fullscreen{width:100vw;height:100vh;height:100dvh}
.game-page .top,.game-page .connection-bar,.game-page .matchbar,.game-page #touchControls{flex:none}
.game-page .top{gap:clamp(10px,2vw,24px);padding:clamp(4px,.9dvh,10px) clamp(10px,1.6vw,22px);flex-wrap:nowrap}
.game-page .brand{font-size:clamp(17px,2.7dvh,24px)}
.game-page .brand .leader-mark{height:clamp(26px,4.6dvh,46px);width:auto}
.game-page .brand small{margin-top:1px}
.game-page .mode{font-size:clamp(14px,2.2dvh,18px)}
.game-page .top-actions{gap:6px}
.game-page .top-actions button,.game-page .top-actions .nav-link{padding:6px 10px;font-size:13px;min-height:36px}
.game-page .connection-bar{padding:clamp(4px,.8dvh,10px) clamp(10px,1.6vw,20px)}
.game-page .connection-bar>div{gap:8px}
.game-page .connection-bar button{min-height:36px;padding:6px 11px}
.game-page .connection-bar input{padding:5px 8px;font-size:18px}
.game-page footer#playerControls{display:none}

/* Arena: fills what is left, keeps 1400:760, never cropped or stretched. */
.game-page .stage{flex:1 1 auto;min-height:0;display:grid;place-items:center;background:#121518;container-type:size}
.game-page #arena{width:100%;height:100%;object-fit:contain}
@supports (width:1cqh){.game-page #arena{width:min(100cqw,calc(100cqh * 1400 / 760));height:auto;aspect-ratio:1400/760;object-fit:fill}}
.game-page .countdown{font-size:clamp(48px,16cqh,110px)}
.game-page .overlay{padding:clamp(6px,1.4dvh,16px)}

/* Screen states, set from game.js. */
.screen-lobby .matchbar{display:none}
.screen-match .top,.screen-match .connection-bar{display:none}

/* Compact in-match HUD with constant height (no arena jump when a status appears). */
.game-page .matchbar{gap:clamp(6px,1vw,14px);padding:4px clamp(6px,1vw,14px);align-items:center}
.game-page .matchbar .round{min-width:0;width:clamp(66px,9vw,150px);flex:none}
.game-page .round>span{font-size:clamp(20px,3.6dvh,32px);line-height:1}
.game-page .round small{font-size:clamp(8px,1.2dvh,12px);line-height:1.2}
.game-page .scorebar{gap:6px}
.game-page .scorebar .score{flex-wrap:nowrap!important;gap:7px;padding:3px 8px;align-items:center}
.game-page .score>div{flex:1;min-width:0;width:auto!important;display:flex;flex-wrap:wrap;column-gap:6px;align-content:center;height:calc(clamp(14px,2.2dvh,19px)*1.15 + 2*11px);overflow:hidden}
.game-page .score strong{flex-basis:100%;font-size:clamp(14px,2.2dvh,19px);line-height:1.15}
.game-page .score small{font-size:9px!important;line-height:11px;min-height:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.game-page .score small[id^=state]{flex-basis:100%}
.game-page .score small:empty{display:none}
.game-page .score>b{margin:0 0 0 auto!important;font-size:clamp(17px,3dvh,26px)}
.game-page .hud-portrait{width:auto;height:clamp(26px,5dvh,44px)}
.hud-actions{display:flex;gap:5px;flex:none}
.icon-btn{display:grid;place-items:center;width:40px;height:40px;padding:0}
.icon-btn svg{width:20px;height:20px}
.fs-toggle .fs-exit,.is-fullscreen .fs-toggle .fs-enter{display:none}
.is-fullscreen .fs-toggle .fs-exit{display:inline}
.muted .sound-waves{opacity:.15}
.no-fullscreen .fs-toggle,.no-fullscreen .fs-offer{display:none!important}
.fs-offer{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:6;background:#1f2428f0;border-color:#e3b94b;color:#ffdc79;min-height:40px;box-shadow:0 4px 18px #0008}
.game-page .network-wait{top:56px}
.game-page .network-wait:not(.hidden)~.fs-offer{top:56px}

/* Lobby: head + steps + always-visible start. */
.game-page #lobby .couch-panel{width:min(1180px,100%);max-height:100%;margin:0;display:flex;flex-direction:column;padding:clamp(8px,1.8dvh,20px) clamp(12px,2vw,26px);text-align:left}
.lobby-head{flex:none;text-align:center}
.game-page .couch-panel .eyebrow{font-size:11px}
.game-page .couch-panel h1{font-size:clamp(22px,4.4dvh,40px);margin:2px 0 3px;line-height:1.05}
.game-page .couch-panel .intro{margin:0 0 4px;font-size:13px;line-height:1.4}
.game-page .mobile-choice{margin:2px 0 6px;min-height:32px}
.game-page .mobile-choice input{width:20px;height:20px}
.lobby-tabs{display:none;flex:none;gap:6px;margin:2px 0 8px}
.lobby-tabs button{flex:1;min-height:40px;font-size:14px}
.lobby-tabs button[aria-selected=true]{background:#4a3f25;border-color:#f6c84f;color:#ffe3a0}
.lobby-body{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(8px,1.5dvh,16px) clamp(12px,2vw,24px);align-content:start}
.lobby-pane{min-width:0}
#pane-session{grid-column:1/-1}
.lobby-pane:has(#sessionBoard.hidden),.game-page:has(#sessionBoard.hidden) #tab-session{display:none}
.game-page .map-heading{margin:0 0 6px}
.game-page .map-heading button{min-height:32px}
.game-page .map-choices{margin:0;gap:8px}
.game-page .map-card canvas{width:100%;height:auto;aspect-ratio:280/152;max-height:clamp(40px,13dvh,128px);object-fit:cover}
.game-page .map-card strong{font-size:clamp(13px,2dvh,17px);padding:4px 8px 1px}
.game-page .map-card small{min-height:0}
.game-page .join-hint{padding:6px 8px;margin:0 0 8px}
.game-page .roster{gap:8px}
.game-page .roster-row{padding:6px 8px}
.game-page .roster-row select{min-height:34px}
.game-page .roster-row button{min-width:34px;min-height:34px}
.game-page .lobby-actions{margin:8px 0 0;justify-content:flex-start}
.game-page .lobby-actions button{min-height:36px;padding:6px 10px}
.game-page .room-roster{margin:8px 0 0}
.game-page .session-board{padding:8px 10px;border:1px solid #615640;border-radius:6px}
.game-page .session-board h2{font-size:19px}
.game-page .session-board p{margin:2px 0 6px}
.game-page .session-board td,.game-page .session-board th{padding:3px 6px}
.game-page .session-board button{margin-top:6px}
.lobby-foot{flex:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 16px;padding-top:clamp(6px,1.2dvh,12px);text-align:center}
.lobby-foot .device-status{flex-basis:100%;min-height:0;margin:0}
.lobby-foot .primary{min-height:46px}
.game-page .couch-panel .panel-note{flex-basis:100%;margin-top:2px}
/* Steps mode (JS adds .lobby-tabbed only when the side-by-side lobby overflows). */
.lobby-tabbed .lobby-tabs{display:flex}
.lobby-tabbed .lobby-body{grid-template-columns:minmax(0,1fr);overflow:auto}
.lobby-tabbed .lobby-pane:not(.active){display:none}
.lobby-tabbed .map-card canvas{max-height:clamp(44px,20dvh,150px)}
@media(max-width:760px){.lobby-body{grid-template-columns:minmax(0,1fr)}.game-page .lobby-actions{justify-content:center}}
@media(max-height:560px){.game-page .couch-panel .eyebrow,.game-page .couch-panel .intro,.game-page .couch-panel .panel-note,.game-page .brand small,.game-page .mode{display:none}.game-page .couch-panel h1{font-size:20px}.game-page .join-hint span{display:none}.lobby-foot .primary{min-height:42px;padding:8px 20px;font-size:17px}}

/* Pause: actions first, long rules in their own region (multi-column on wide screens). */
.game-page .pause-panel,.game-page .result-panel{width:min(980px,100%);max-height:100%;margin:0;display:flex;flex-direction:column;padding:clamp(10px,2dvh,22px)}
.game-page .result-panel{width:min(760px,100%)}
.pause-top{flex:none}
.game-page .compact h2{font-size:clamp(26px,5dvh,45px);margin:2px 0 6px}
.pause-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:6px 0}
.pause-actions button{min-height:42px}
.pause-actions .primary{min-width:0}
.pause-secondary{display:flex;justify-content:center;gap:14px}
.pause-secondary .quiet,.game-page .result-panel .quiet{display:inline-block;margin:0;min-height:36px}
.rules{flex:1 1 auto;min-height:0;overflow:auto;margin-top:8px;border-top:1px solid #4d4537;text-align:left}
.game-page .rules-text{margin:8px 0 0;column-width:250px;column-gap:24px;font-size:clamp(11px,1.6dvh,13px);line-height:1.45;white-space:normal}
.game-page #resultText{flex:1 1 auto;min-height:0;overflow:auto;column-width:230px;column-gap:20px;margin:4px 0 8px;font-size:clamp(11px,1.7dvh,13px)}
.game-page .result-panel .primary{flex:none;align-self:center;min-height:46px}
.game-page .result-panel .quiet{align-self:center;margin-top:6px}

/* Touch controls: portrait = strip under the arena; landscape = side columns. */
.game-page #touchControls.active{padding:6px max(12px,env(safe-area-inset-left)) 6px max(12px,env(safe-area-inset-right))}
@media(orientation:landscape) and (max-height:600px){
 .touch-active .shell{display:grid;--side:clamp(118px,17vw,160px);grid-template-columns:var(--side) minmax(0,1fr) var(--side);grid-template-rows:auto minmax(0,1fr)}
 .touch-active .matchbar{grid-column:1/-1;grid-row:1;padding:2px 6px}
 .touch-active .stage{grid-column:2;grid-row:2}
 .touch-active #touchControls.active{grid-column:1/-1;grid-row:2;display:flex;justify-content:space-between;align-items:flex-end;background:transparent;pointer-events:none;padding:6px;z-index:3}
 .touch-active #touchControls>*{pointer-events:auto}
 .touch-active .dpad{grid-template-columns:repeat(3,36px);grid-template-rows:repeat(3,38px)}
 .touch-active .touch-right{flex-direction:column-reverse;align-items:center;gap:8px}
 .touch-active [data-aim]{width:88px;height:88px}
 .touch-active [data-fire]{width:66px;height:66px}
 .game-page .hud-portrait{display:none}
 .game-page .matchbar .round small{display:none}
}
@media(max-width:700px){.hud-wide{display:none}.game-page .matchbar .round small{display:none}.game-page .scorebar:has(.score:nth-child(3)){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.game-page .top{flex-wrap:wrap;row-gap:4px}.game-page .matchbar{flex-direction:row}.game-page .round{width:auto}}
@media(max-height:430px){.game-page .couch-panel h1{display:none}.game-page .top{padding:2px 10px}.game-page .brand .leader-mark{height:28px}.game-page .top-actions button,.game-page .top-actions .nav-link{min-height:34px;padding:4px 8px;font-size:12px}.game-page .connection-bar{padding:3px 10px}.game-page .connection-bar button,.game-page .connection-bar input{min-height:34px;padding:3px 8px}.game-page .connection-bar>div>span{display:none}.game-page .mobile-choice{margin:0 0 4px}.lobby-tabs{margin:0 0 6px}.lobby-tabs button{min-height:36px}.game-page .map-heading{margin-bottom:4px}.lobby-tabbed .map-card canvas,.game-page .map-card canvas{max-height:clamp(36px,15dvh,70px)}.game-page .map-card small{display:none}.mobile-mode .lobby-foot .device-status{display:none}.lobby-foot{padding-top:4px}}
@media(max-width:560px){.game-page .matchbar{flex-wrap:wrap;row-gap:4px}.game-page .matchbar .round{order:1;flex:1;text-align:left}.game-page .hud-actions{order:2}.game-page .scorebar{order:3;flex-basis:100%}.game-page .round .progress{max-width:160px}}
.online-mode .couch-panel .intro,.online-mode .couch-panel .mobile-choice{display:none}
