@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}
/* Four fixed seats: Hráč / Bot / Prázdné (slots1). */
.roster.slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.slot-card{border:1px solid #4f5350;border-left:5px solid var(--player);border-radius:6px;background:#1a2026;padding:7px 9px;min-width:0;display:flex;flex-direction:column;gap:6px}
.slot-card.type-empty{opacity:.72;border-left-style:dashed;background:#161a1e}
.slot-card.type-bot{background:#1d1f27}
.slot-top{display:flex;align-items:center;gap:8px;min-width:0}
.slot-top .player-number{flex:none}
.slot-type{display:flex;flex:1;min-width:0;border:1px solid #4f5350;border-radius:4px;overflow:hidden}
.slot-type button{flex:1;min-width:0;min-height:32px;padding:2px 4px;border:0;border-radius:0;background:#13191f;color:#c9bfa9;font:700 14px 'Barlow Condensed',sans-serif;letter-spacing:.04em;cursor:pointer}
.slot-type button+button{border-left:1px solid #4f5350}
.slot-type button[aria-checked="true"]{background:var(--player);color:#141414}
.slot-type button:disabled{opacity:.4;cursor:not-allowed}
.slot-type button:focus-visible,.slot-row select:focus-visible,.slot-action:focus-visible{outline:2px solid #f3c34c;outline-offset:1px}
.slot-fixed{flex:1;font:700 14px 'Barlow Condensed',sans-serif;color:#c9bfa9;letter-spacing:.05em}
.slot-row{display:flex;gap:6px;align-items:center;min-width:0}
.slot-row select{flex:1;min-width:0;min-height:32px;background:#13191f;border:1px solid #4f5350;border-radius:4px;color:var(--paper);padding:2px 6px;font:700 16px 'Barlow Condensed',sans-serif}
.slot-row strong.slot-name{flex:1;min-width:0;font:700 18px 'Barlow Condensed',sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slot-action{flex:none;min-width:32px;min-height:32px}
.bot-badge{flex:none;background:#f3c34c;color:#141414;font:800 12px 'Barlow Condensed',sans-serif;letter-spacing:.08em;padding:2px 6px;border-radius:3px}
.slot-status{display:block;font-size:12px;color:#b7ad97;line-height:1.25}
.score.is-bot strong::after{content:''}
.online-only{display:none}.online-mode .online-only{display:inline-flex}.online-mode .couch-only{display:none}
@media(max-width:520px){.roster.slots{grid-template-columns:1fr;gap:6px}.slot-card{padding:5px 7px;gap:4px}.slot-status{font-size:11px}}
@media(max-height:430px){.roster.slots{gap:5px}.slot-card{padding:4px 6px;gap:3px}.slot-type button,.slot-row select,.slot-action{min-height:28px}.slot-status{display:none}}
.mobile-mode .join-hint{display:none}
@media(max-width:520px){.slot-card.type-empty .slot-status,.slot-card.type-bot .slot-status{display:none}.slot-card .slot-status{font-size:11px}}
@media(max-height:760px){.game-page .join-hint{padding:4px 8px}.game-page .join-hint span{display:none}}
/* Compact seat cards on small screens: one line per seat (type · name), status hidden. */
@media(max-width:520px),(max-height:620px){
 .roster.slots{grid-template-columns:1fr;gap:5px}
 .slot-card{flex-direction:row;align-items:center;gap:6px;padding:4px 6px}
 .slot-top{flex:1.7;gap:5px}.slot-body{flex:1;min-width:84px}
 .slot-type button{min-height:30px;font-size:12px;letter-spacing:0;padding:0 1px}
 .slot-row select,.slot-action{min-height:30px}
 .slot-card .slot-status,.slot-card .bot-badge{display:none}
 .slot-card.type-empty .slot-body::after{content:'nevytvoří postavu';font-size:11px;color:#b7ad97}
 .player-number{width:26px;height:26px;font-size:15px}
}
@media(max-height:620px) and (min-width:1000px){.roster.slots{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-height:700px){.lobby-tabbed .couch-panel .intro,.lobby-tabbed .couch-panel .eyebrow{display:none}}
#pane-players{container-type:inline-size;container-name:seats}
@media(max-height:620px){@container seats (min-width:560px){.roster.slots{grid-template-columns:repeat(2,minmax(0,1fr))}}}
/* ---- NO CRY GAMES studio shell (studio1) ---------------------------------------------- */
.studio-brand{display:flex;align-items:center;gap:10px;color:var(--paper);text-decoration:none;font:800 clamp(17px,2.6dvh,24px)/1 'Barlow Condensed',sans-serif;letter-spacing:.06em;white-space:nowrap;min-width:0}
.studio-brand:hover .studio-logo{transform:rotate(-8deg)}
.studio-logo{width:clamp(30px,5dvh,44px);height:clamp(30px,5dvh,44px);flex:none;transition:transform .2s}
.studio-name small{display:block;font:600 11px 'Barlow',sans-serif;letter-spacing:.04em;color:#c9b993;margin-top:3px;text-transform:none}
.game-id{display:flex;align-items:center;gap:8px;border-left:1px solid #655b4d;padding-left:clamp(10px,1.8vw,22px);min-width:0}
.game-id .leader-mark{height:clamp(24px,4dvh,38px);width:auto;flex:none}
.game-id b{display:block;font:700 clamp(14px,2.1dvh,18px) 'Barlow Condensed',sans-serif;letter-spacing:.04em;white-space:nowrap}
.game-id span{display:block;font:500 10px 'Barlow',sans-serif;letter-spacing:1.2px;color:#a8a69f;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.game-switcher{display:flex;gap:6px}.game-switcher.hidden{display:none}
.game-link{color:var(--paper);text-decoration:none;font:700 13px 'Barlow Condensed',sans-serif;padding:6px 10px;border:1px solid #6e6250;border-radius:5px}
.game-link[aria-current=page]{border-color:var(--yellow);color:#ffe3a0}
@media(max-width:900px){.game-id{display:none}}
@media(max-width:520px){.studio-name small{font-size:10px}.game-page .top{justify-content:space-between}}
@media(max-height:560px){.studio-name small{display:none}}

/* one lobby panel, two views */
.mode-chooser,.mode-detail{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.mode-chooser.hidden,.mode-detail.hidden{display:none}
.chooser-head{text-align:center;flex:none}
.chooser-head h1{margin:2px 0 4px}
.chooser-head .intro{margin:0 0 clamp(8px,1.8dvh,18px)}
.mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,1.4vw,14px);flex:none}
.mode-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;min-height:clamp(96px,19dvh,170px);padding:clamp(10px,1.8dvh,18px) clamp(12px,1.4vw,18px);background:linear-gradient(160deg,#2c2d2c,#1d2024);border:1px solid #8a7550;border-radius:10px;box-shadow:0 6px 18px #0006;transition:border-color .15s,transform .15s,background .15s}
.mode-card svg{width:clamp(30px,5dvh,42px);height:clamp(30px,5dvh,42px);fill:none;stroke:var(--yellow);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mode-card svg .fill{fill:var(--yellow);stroke:none}
.mode-card b{font:800 clamp(19px,3dvh,26px)/1.05 'Barlow Condensed',sans-serif;color:var(--paper);letter-spacing:.02em}
.mode-card span{font:500 clamp(12px,1.8dvh,15px)/1.3 'Barlow',sans-serif;color:#c9bfa9;letter-spacing:0}
.mode-card:hover,.mode-card:focus-visible{border-color:var(--yellow);background:linear-gradient(160deg,#3a3628,#22242a);transform:translateY(-2px);outline:none}
.mode-card:focus-visible{box-shadow:0 0 0 2px var(--yellow)}
@media(max-width:900px){.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-card{min-height:0}}
@media(max-width:420px){.mode-grid{grid-template-columns:1fr;gap:7px}.mode-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;row-gap:2px;align-items:center;padding:10px 12px}.mode-card svg{grid-row:1/3}}
@media(max-height:430px){.mode-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.mode-card{min-height:0;padding:8px 10px;gap:4px}.mode-card span{font-size:11px}.chooser-head .intro{display:none}}

.detail-head{display:flex;align-items:center;gap:clamp(8px,1.5vw,16px);flex:none;margin-bottom:clamp(4px,1dvh,10px);min-width:0}
.back-btn{flex:none;min-height:40px;padding:6px 12px;background:#1b1e22;border-color:#8a7550;font-size:14px}
.back-btn:hover{border-color:var(--yellow)}
.detail-title{min-width:0;text-align:left}
.detail-title h2{margin:0;font:800 clamp(22px,3.6dvh,34px)/1.05 "Barlow Condensed",sans-serif;display:block}
.detail-title p{margin:2px 0 0;font-size:13px;color:#c9bfa9}
@media(max-height:560px){.detail-title p{display:none}.back-btn{min-height:36px}}
@media(max-width:420px){.detail-title p{display:none}}

.online-gate{display:none}
.mode-online:not(.online-mode) .online-gate{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(8px,1.6vw,16px);align-content:start;flex:1 1 auto;min-height:0}
.mode-online:not(.online-mode) .mode-detail .lobby-tabs,.mode-online:not(.online-mode) .mode-detail .lobby-body,.mode-online:not(.online-mode) .mode-detail .lobby-foot{display:none!important}
.gate-card{display:flex;flex-direction:column;gap:8px;align-items:flex-start;text-align:left;background:#1a2026;border:1px solid #6e6250;border-radius:10px;padding:clamp(12px,2dvh,20px)}
.gate-card b{font:800 22px 'Barlow Condensed',sans-serif}
.gate-card span{font-size:13px;color:#c9bfa9}
.gate-card .primary{min-width:0;font-size:18px;padding:11px 20px}
.gate-row{display:flex;gap:8px;width:100%}
.gate-row input{flex:1;min-width:0;width:auto;font:800 24px 'Barlow Condensed',sans-serif;letter-spacing:.3em;text-transform:uppercase;text-align:center;background:#13191f;border:1px solid #6e6250;border-radius:5px;color:var(--paper);padding:6px 8px;min-height:46px}
.online-gate .mobile-choice,.online-gate .connection-error{grid-column:1/-1;margin:0}
.connection-error{min-height:1.2em;color:#ffb38a;font-size:14px;text-align:center}
@media(max-width:600px){.mode-online:not(.online-mode) .online-gate{grid-template-columns:1fr}}
.room-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;flex:none;margin-bottom:8px;padding:6px 10px;border:1px solid #6e6250;border-radius:8px;background:#141c23}
.room-bar.hidden{display:none}
.room-bar b{color:#f4ca62;font:700 18px 'Barlow Condensed',sans-serif}.room-bar b span{letter-spacing:.25em}
.room-bar button{min-height:36px;padding:5px 10px}
.room-bar .quiet{display:inline-block;margin:0;border:1px solid #4f5350}
.room-bar #networkState{font-size:12px;color:#b7ad97}
.mode-bot .join-hint,.mode-keyboards .join-hint{display:none}
body:not(.online-mode) .lobby-actions{display:none}
.mode-bot .roster.slots,.mode-keyboards .roster.slots{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:520px){.mode-bot .roster.slots,.mode-keyboards .roster.slots{grid-template-columns:1fr}}
.slot-fixed{color:#f4ca62}
@media(max-width:520px),(max-height:620px){.slot-card:not(:has(.slot-type)) .slot-top{flex:0 0 auto}.slot-card:not(:has(.slot-type)) .slot-body{flex:1 1 auto}.slot-card:not(:has(.slot-type)) .slot-fixed{min-width:3.2em}}
.chooser-links{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;margin-top:clamp(6px,1.4dvh,14px);font-size:13px}
.chooser-links a{color:#c9bfa9;text-decoration:none;border-bottom:1px solid #6e6250}
.chooser-links a:hover,.chooser-links a:focus-visible{color:var(--paper);border-color:var(--yellow)}
.chooser-links .made-by{color:#8f8676;border-bottom-color:#4a4338}
.noscript{text-align:center;color:#ffb38a}
@media(max-height:430px){.chooser-links{display:none}}
/* Touch: a long press on a control must press it, not select its label or open the callout menu.
   The game page is an app: nothing is selectable except text fields and the room code (so it can be copied). */
body.game-page{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
body.game-page input,body.game-page textarea,#currentCode{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
button,[role=button],.mode-card,label,select,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
/* arsenal1: weapon icon + flamethrower fuel gauge (kept apart from the 10 s validity in the text) */
.weapon-state[data-weapon]:not([data-weapon=""])::before{content:"";display:inline-block;width:1.1em;height:.9em;margin-right:.3em;vertical-align:-.1em;background:center/contain no-repeat}
.weapon-state[data-weapon=shotgun]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Crect x='0' y='5' width='7' height='6' rx='2' fill='%238a5a34'/%3E%3Crect x='6' y='3' width='17' height='4' rx='1' fill='%23ddd'/%3E%3Crect x='6' y='8' width='17' height='4' rx='1' fill='%23ddd'/%3E%3C/svg%3E")}
.weapon-state[data-weapon=flamethrower]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 20'%3E%3Crect x='2' y='3' width='12' height='16' rx='4' fill='%23c04a30'/%3E%3Cpath d='M5 14Q4 8 8 5Q12 8 11 14Z' fill='%23ffb04a'/%3E%3C/svg%3E")}
.weapon-state[data-weapon=mine]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Cellipse cx='12' cy='10' rx='11' ry='5' fill='%236a7360'/%3E%3Cellipse cx='12' cy='7' rx='11' ry='5' fill='%239aa58a'/%3E%3Cellipse cx='12' cy='6' rx='4' ry='2' fill='%23d8c27a'/%3E%3C/svg%3E")}
.weapon-state[data-weapon=flamethrower]{background:linear-gradient(90deg,#ff9a3c55 calc(var(--fuel,0)*100%),transparent 0) left bottom/100% 2px no-repeat}
/* build stamp in the header brand (date · commit) */
.studio-brand .build-version{font:600 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0;color:var(--paper);opacity:.55;align-self:flex-end;margin-bottom:2px;white-space:nowrap}
@media (max-width:520px){.studio-brand .build-version{font-size:9px}}
@media (max-width:400px){.studio-brand .bv-date{display:none}}
/* night1: Den / In der Nacht (one compact row under the maps) and the one-person-per-screen notice */
.time-choice{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 6px}
.time-switch{display:inline-flex;border:2px solid #5b584d;border-radius:6px;overflow:hidden;flex:none}
.time-switch button{border:0;border-radius:0;margin:0;padding:4px 10px;min-height:30px;font-size:12px;background:#181e22;color:#d9cfb9;box-shadow:none}
.time-switch button[aria-checked=true]{background:#373124;color:#ffe08a}
.time-switch button[data-time=night][aria-checked=true]{background:#1d2340;color:#dfe6ff}
.time-switch button:disabled{opacity:.45;cursor:not-allowed}
.time-choice small{font:600 11px/1.3 'Barlow',sans-serif;color:#c1b7a4;min-width:0;flex:1 1 180px}
.night-chosen .time-choice small{color:#c8d2ff}
.night-issue{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:6px 8px;margin:0 0 6px;border:2px solid #8a93d8;border-radius:6px;background:#1b2036;color:#e6eaff;font:600 12px/1.3 'Barlow',sans-serif}
.night-issue span{flex:1 1 200px}
.night-issue button{padding:4px 8px;min-height:30px;font-size:11px}
.night-issue.hidden{display:none}
@media(max-height:430px){.time-choice small{display:none}.time-choice{margin-bottom:3px}.time-switch button{min-height:28px;padding:2px 8px}}
