@font-face{font-family:Vazirmatn;src:url("/fonts/Vazirmatn.ttf") format("truetype");font-weight:100 900;font-display:swap}
@font-face{font-family:Phosphor;src:url("/fonts/Phosphor.woff2") format("woff2");font-weight:normal;font-style:normal;font-display:block}
@font-face{font-family:"Phosphor-Fill";src:url("/fonts/Phosphor-Fill.woff2") format("woff2");font-weight:normal;font-style:normal;font-display:block}
.i-qr:before,.i-users:before,.i-play:before{font-family:Phosphor;font-style:normal;line-height:1;margin-left:8px}
.i-qr:before{content:"\e3e6"}.i-users:before{content:"\e4d6"}.i-play:before{content:"\e3d0"}
.room-code{color:#ffe14a;font-weight:800}
.tv-welcome{max-width:none}
.poster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;width:100%;margin-top:8px}
.poster{position:relative;display:flex;flex-direction:column;gap:6px;padding:0 0 10px;border:2px solid transparent;border-radius:22px;background:#241050;color:inherit;text-align:right;overflow:hidden}
.poster img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#16082f}
.poster strong{font-size:14px;padding:0 10px;line-height:1.6}
.poster small{color:var(--muted);font-size:11px;padding:0 10px;line-height:1.6}
.poster.active{border-color:#ffe14a}
.poster.soon img{filter:saturate(.35) brightness(.78)}
.poster em{position:absolute;top:10px;right:10px;background:#2a1048ee;color:#ffe14a;border-radius:99px;padding:3px 8px;font-size:11px;font-style:normal}
.tv-stage .poster-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:14px}
.landing-posters{grid-column:1 / -1;margin-top:8px}
.landing-posters h2{font-size:22px;margin-bottom:12px}
@media(max-width:1080px){.tv-stage .poster-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.tv-stage .poster-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.poster strong{font-size:12px}}
*{box-sizing:border-box}
:root{font-family:Vazirmatn,Tahoma,"Segoe UI",sans-serif;color:#fff8ea;background:#120326;font-synthesis:none;--bg:#120326;--surface:#1c0445;--surface2:#2a1260;--line:#4c2d86;--muted:#d2c6ea;--ink:#fff8ea;--mint:#ffe14a;--amber:#ffb020;--danger:#f2aaa0}
body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}button,a{touch-action:manipulation}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--amber);outline-offset:4px}
a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:clamp(28px,3.4vw,52px);line-height:1.6;letter-spacing:-1.3px}h2{font-size:23px;line-height:1.7}h3{font-size:17px;line-height:1.8}p{line-height:1.95}small{line-height:1.8}input,select,textarea{width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:13px;background:#16082f;color:var(--ink);min-height:52px}
input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--mint)}input[type=number]{direction:ltr;text-align:right}input::placeholder{color:#b3a4cc}label{display:block;font-size:13px;color:var(--muted);line-height:1.8;margin-bottom:7px}
.loading-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;gap:16px;flex-direction:column}.loading-screen p{color:var(--muted)}.loading-screen .brand-mark{width:128px;height:128px}
.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand strong{font-size:24px;letter-spacing:-1px}.brand small{display:block;color:var(--muted);font-size:10px}.brand-mark{width:52px;height:52px;border:0;border-radius:50%;background:#F6F0E6 url("/games/logo-mark.png") center/86% no-repeat;box-shadow:0 2px 8px #24180F55;flex-shrink:0}.brand-mark:after{content:none}
.app-shell{max-width:1660px;margin:auto;padding:24px 36px 28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px;min-height:52px}.top-actions{display:flex;align-items:center;gap:10px}.eyebrow{font-size:12px;letter-spacing:.3px;color:var(--mint);line-height:1.9}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:"Segoe UI",Tahoma,sans-serif;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate;letter-spacing:3px}.connection{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}.connection:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mint)}.connection.offline:before{background:var(--amber)}.pill{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:99px;font-size:11px;line-height:1.7;background:#3a1d6e;color:var(--muted);white-space:nowrap}.pill.accent{background:#ffe14a17;color:var(--mint)}.pill.amber{background:#ffb02017;color:var(--amber)}.pill.danger{background:#f2aaa017;color:var(--danger)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 20px;background:var(--mint);color:#2a1048;border-radius:13px;font-size:14px;font-weight:bold;text-decoration:none;line-height:1.6}.btn:hover{filter:brightness(1.05)}.btn.secondary{background:#3a1d6e;color:var(--ink)}.btn.outline{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.amber{background:var(--amber);color:#2b2315}.btn.danger{background:#f2aaa01b;color:var(--danger);border:1px solid #f2aaa040}.btn.subtle{background:transparent;color:var(--muted);padding:8px 12px;font-size:12px}.btn.sm{min-height:36px;padding:7px 12px;font-size:11px;border-radius:10px}.btn.block{width:100%}.btn.big{min-height:62px;font-size:17px}.button-row{display:flex;gap:10px;flex-wrap:wrap}.button-row>.btn{flex:1}.icon-btn{background:transparent;border:1px solid var(--line);border-radius:12px;color:var(--muted);padding:10px 13px;min-height:42px;font-size:12px}
.banner{padding:13px 18px;border:1px solid var(--line);border-radius:13px;background:var(--surface);line-height:1.9;font-size:13px;margin-bottom:18px}.banner.amber{border-color:#ffb0204a;color:var(--amber)}.banner.danger{border-color:#f2aaa04a;color:var(--danger)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.section-title h2{font-size:18px}.spacer{height:22px}.divider{border:0;border-top:1px solid var(--line);margin:22px 0}.stack{display:grid;gap:16px}
.tv-layout{display:grid;grid-template-columns:minmax(0,1fr) 276px;gap:24px;align-items:stretch}.tv-stage{background:var(--surface);border:1px solid var(--line);border-radius:26px;padding:32px;min-height:610px;display:flex;flex-direction:column;overflow:hidden}.stage-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}.stage-heading h2{font-size:30px}.stage-main{flex:1}.stage-bottom{padding-top:25px;margin-top:24px;border-top:1px solid var(--line)}.game-kicker{display:flex;align-items:center;gap:10px;margin-bottom:7px}.game-kicker .eyebrow{color:var(--muted)}.giant-word{font-size:clamp(48px,6.6vw,100px);line-height:1.6;letter-spacing:-3px}.tv-welcome{padding-top:12px;max-width:650px}.tv-welcome h1{margin-top:12px}.tv-welcome p{font-size:17px;color:var(--muted);margin:12px 0 32px;max-width:560px}.hero-rule{width:48px;height:4px;background:var(--mint);margin-bottom:24px}.tv-games{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:30px}.tv-game{padding:24px;border:1px solid var(--line);border-radius:18px;display:flex;align-items:center;gap:18px;background:#241050}.tv-game.selected{border-color:var(--mint);background:#ffe14a0b}.tv-game.pantomime.selected{border-color:var(--amber);background:#ffb0200b}.tv-game h3{font-size:21px}.tv-game p{font-size:12px;color:var(--muted);margin-top:3px}.game-icon{width:60px;height:60px;border-radius:17px;display:grid;place-items:center;flex-shrink:0;background:#ffe14a12;color:var(--mint)}.game-icon.amber{background:#ffb02012;color:var(--amber)}.game-icon svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.join-aside{display:flex;flex-direction:column;gap:20px;padding:22px 20px;background:#220c4c;border:1px solid var(--line);border-radius:26px}.join-aside h2{font-size:20px}.join-aside p{font-size:12px;color:var(--muted)}.qr-box{background:white;padding:12px;border-radius:16px;line-height:0;aspect-ratio:1;display:grid;place-items:center}.qr-box img{width:100%;height:100%;max-height:218px;image-rendering:pixelated;object-fit:contain}.room-code{font-size:29px;letter-spacing:5px;text-align:center;padding:14px 0 0;color:var(--ink)}.room-code-label{text-align:center;font-size:10px;color:var(--muted);margin-bottom:9px}.pin-box{border-top:1px solid var(--line);padding-top:18px}.pin-box .mono{font-size:27px;display:block;margin:8px 0;color:var(--amber);text-align:center}.join-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}.join-url{font-size:10px;word-break:break-all;direction:ltr;text-align:left;color:var(--muted);line-height:1.6;max-height:48px;overflow:hidden}.tv-footer{display:flex;justify-content:space-between;gap:14px;font-size:11px;color:#b3a4cc;margin-top:18px;line-height:1.8}
.roster{display:flex;flex-wrap:wrap;gap:10px}.player-chip{display:flex;align-items:center;gap:9px;background:#31185f;border:1px solid transparent;padding:8px 12px 8px 14px;border-radius:99px;font-size:13px;min-height:42px}.player-chip.eliminated{opacity:.48;text-decoration:line-through}.avatar{width:28px;height:28px;border-radius:50%;background:#5a348c;color:var(--mint);display:grid;place-items:center;font-size:13px;flex-shrink:0}.avatar.amber{color:var(--amber);background:#5a348c}.player-chip .host-dot{width:5px;height:5px;border-radius:50%;background:var(--amber)}.player-chip.disconnected{border-color:#ffb02040}.roster-empty{font-size:14px;color:var(--muted);padding:14px 0}
.timer-wrap{text-align:center;padding:12px 0}.timer{font-family:"Segoe UI",Tahoma,sans-serif;direction:ltr;unicode-bidi:isolate;font-size:clamp(70px,10vw,160px);line-height:1.2;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-5px;color:var(--mint)}.timer.amber{color:var(--amber)}.timer.urgent{color:var(--danger)}.timer-caption{font-size:13px;color:var(--muted);margin-top:12px}.timer.paused{opacity:.55}.stage-center{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:320px;gap:18px}.stage-center h2{font-size:32px}.stage-center p{max-width:600px;color:var(--muted);font-size:16px}.ready-count{font-family:"Segoe UI",Tahoma,sans-serif;font-size:70px;font-weight:600;color:var(--mint);line-height:1.2}.progress-track{width:min(500px,90%);height:8px;border-radius:20px;overflow:hidden;background:#4c2d86}.progress-fill{height:100%;background:var(--mint);transition:width .3s}.metric-row{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;margin-top:20px}.metric{font-size:13px;color:var(--muted)}.metric strong{display:block;font-family:"Segoe UI",Tahoma,sans-serif;font-size:32px;color:var(--ink);line-height:1.6}
.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:20px;width:100%;margin:18px 0}.score-team{padding:24px;border:1px solid var(--line);border-radius:18px;text-align:center}.score-team.current{border-color:var(--amber);background:#ffb02008}.score-team.out{opacity:.45}.score-team.hit{border-color:var(--mint)}.score-number{font-family:"Segoe UI",Tahoma,sans-serif;font-size:72px;font-weight:600;color:var(--mint);line-height:1.5}.score-team:nth-child(2) .score-number{color:var(--amber)}.score-team h3{font-size:16px;color:var(--muted)}.score-main{min-width:0}.score-picks{margin-top:6px;font-size:13px;line-height:1.5;color:var(--muted)}.turn-label{font-size:13px;color:var(--amber)}.result-badge{padding:12px 25px;background:#ffe14a19;border-radius:99px;color:var(--mint);font-size:15px}.spy-name-list{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.spy-name-list span{background:#f2aaa017;color:var(--danger);padding:9px 15px;border-radius:99px;font-size:14px}.result-word{font-size:22px;line-height:1.8}
.phone-shell{max-width:650px;margin:0 auto;padding:18px 20px 45px;min-height:100dvh}.phone-shell .topbar{margin-bottom:20px}.phone-shell .brand strong{font-size:21px}.phone-shell .brand-mark{width:44px;height:44px;border:0}.phone-shell .brand small{font-size:9px}.phone-shell .connection{font-size:10px}.phone-title{margin-bottom:22px}.phone-title h1{font-size:31px;letter-spacing:-1px;line-height:1.7}.phone-title p{color:var(--muted);font-size:13px;margin-top:7px}.phone-card{background:var(--surface);border:1px solid var(--line);padding:22px;border-radius:21px;margin-bottom:18px}.phone-card.open{background:transparent;border:0;padding:0}.phone-card h2{font-size:20px}.phone-card p{font-size:13px}.phone-card .timer{font-size:80px;letter-spacing:-3px}.phone-card .timer-wrap{padding:15px 0}.phone-card .timer-caption{font-size:11px}.phone-card .stage-center{min-height:180px;gap:14px}.phone-card .stage-center h2{font-size:25px}.phone-card .stage-center p{font-size:13px}.phone-card .ready-count{font-size:46px}.phone-card .scoreboard{gap:12px;margin:15px 0}.phone-card .score-team{padding:15px 10px}.phone-card .score-number{font-size:42px}.phone-card .score-team h3{font-size:12px}
.segmented{display:flex;background:#120326;padding:5px;border:1px solid var(--line);border-radius:14px;gap:4px;margin-bottom:24px}.seg{flex:1;min-height:45px;border-radius:10px;background:transparent;color:var(--muted);font-size:13px}.seg.active{background:var(--mint);color:#2a1048;font-weight:bold}.form-field{margin-bottom:18px}.form-help{font-size:11px;color:var(--muted);margin-top:7px;line-height:1.9}.error-text{color:var(--danger);font-size:12px;line-height:1.9;margin-bottom:16px}.join-hint{text-align:center;color:var(--muted);font-size:11px;line-height:1.9;margin-top:20px}.join-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px}.join-heading .mono{font-size:18px;color:var(--mint)}
.game-selector{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.game-choice{background:#2a1260;border:1px solid var(--line);border-radius:17px;padding:19px 14px;text-align:right;color:var(--ink);min-height:147px;display:flex;align-items:flex-start;flex-direction:column;gap:10px}.game-choice .game-icon{width:43px;height:43px;border-radius:12px}.game-choice .game-icon svg{width:27px;height:27px}.game-choice strong{font-size:18px;line-height:1.7}.game-choice small{font-size:10px;color:var(--muted);margin-top:-7px}.game-choice.active{border-color:var(--mint);background:#ffe14a0c}.game-choice.pantomime.active{border-color:var(--amber);background:#ffb0200c}
.secret-card{width:100%;border:1px dashed #c9a6f0;background:#ffe14a08;border-radius:20px;min-height:180px;color:var(--ink);padding:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;margin:17px 0;text-align:center}.secret-card strong{font-size:31px;line-height:1.7}.secret-card small{font-size:11px;color:var(--muted);line-height:1.9}.secret-card.is-spy{border-color:#f2aaa078;background:#f2aaa00b}.secret-card.is-spy strong{color:var(--danger)}.secret-card.revealed{border-style:solid}.secret-card .game-icon{width:46px;height:46px}.secret-warning{font-size:11px;color:var(--muted);text-align:center;line-height:2}.secret-card.panto strong{font-size:28px;color:var(--amber)}.secret-card.panto{border-color:#ffb02060;background:#ffb02008;min-height:200px}
.admin{border:1px solid var(--line);border-radius:20px;background:#1a0838;margin-top:20px}.admin>summary{cursor:pointer;padding:18px 20px;font-size:14px;font-weight:bold;display:flex;align-items:center;justify-content:space-between;list-style:none;min-height:60px}.admin>summary::-webkit-details-marker{display:none}.admin>summary:after{content:"+";color:var(--mint);font-size:22px;font-weight:normal}.admin[open]>summary:after{content:"−"}.admin-body{padding:0 20px 20px}.admin-body h3{font-size:14px}.admin-body .section-title{margin-bottom:12px}.admin-body .section-title h2{font-size:15px}.setting-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.setting-grid .form-field{margin:0}.check-row{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:12px;min-height:35px;margin:0}.category-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 12px;margin:10px 0 18px}.category-grid .check-row{font-size:11px;color:var(--muted)}.manage-player{display:flex;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid #4c2d8680}.manage-player:last-child{border-bottom:0}.manage-player .name{flex:1;min-width:0;font-size:13px;line-height:1.8;overflow-wrap:anywhere}.manage-player .name small{color:var(--muted);font-size:10px;display:block}.manage-player select{width:97px;padding:7px 9px;min-height:37px;font-size:10px}.pending-list{margin-top:14px}.pending-box{padding:16px;border:1px solid #ffb02050;background:#ffb02008;border-radius:17px;margin-bottom:18px}.pending-box h3{font-size:14px;color:var(--amber)}.pending-box .manage-player{border-color:#ffb02025}.player-menu{position:relative}.player-menu summary{list-style:none;cursor:pointer;font-size:22px;color:var(--muted);width:30px;text-align:center}.player-menu .menu{position:absolute;left:0;top:32px;z-index:20;min-width:160px;display:grid;gap:6px;padding:8px;background:#3a1d6e;border:1px solid var(--line);border-radius:12px}.player-menu .menu .btn{white-space:nowrap;text-align:right;justify-content:flex-start}
.vote-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.vote-option{border:1px solid var(--line);background:#31185f;color:var(--ink);padding:14px 12px;min-height:62px;border-radius:13px;font-size:14px;display:flex;align-items:center;gap:10px;text-align:right}.vote-option.selected{border-color:var(--mint);background:#ffe14a15}.vote-option:disabled{opacity:.48}.vote-option.selected:disabled{opacity:.9}.vote-received{padding:17px;border:1px solid #ffe14a40;border-radius:15px;background:#ffe14a0b;text-align:center;color:var(--mint);font-size:14px;line-height:1.9;margin-top:18px}
.actor-actions{display:grid;grid-template-columns:1.25fr 1fr;gap:10px}.actor-actions .btn{min-height:66px;font-size:16px}.minor-actions{display:flex;justify-content:center;gap:15px;margin-top:14px;flex-wrap:wrap}.rules-list{padding-right:20px;margin:12px 0 0;color:var(--muted);font-size:12px;line-height:2.25}.rule-note{padding-inline-start:0;margin:18px 0;font-size:12px;color:var(--muted);line-height:2}.rule-note.amber{border-color:var(--amber)}.phone-footer{padding-top:22px;margin-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}.phone-footer small{color:#b3a4cc;font-size:10px}.inline-form{display:flex;gap:8px;margin-top:12px}.inline-form input{flex:1;min-width:0}.inline-form .btn{flex-shrink:0}
.landing{max-width:1000px;margin:auto;padding:30px;min-height:100dvh;display:flex;flex-direction:column}.landing .topbar{margin-bottom:55px}.landing-body{display:grid;grid-template-columns:1.2fr .8fr;gap:55px;align-items:center;flex:1}.landing h1{font-size:clamp(38px,5vw,66px);line-height:1.65;letter-spacing:-2px}.landing .intro{color:var(--muted);margin:19px 0 30px;font-size:15px;max-width:470px}.landing-buttons{display:grid;gap:12px;max-width:330px}.landing-art{padding:30px;border:1px solid var(--line);border-radius:28px;background:var(--surface);transform:rotate(-3deg)}.landing-art .game-icon{width:74px;height:74px;margin-bottom:25px}.landing-art h2{font-size:25px}.landing-art p{font-size:13px;color:var(--muted);margin:11px 0 25px}.art-pips{display:flex;gap:8px}.art-pips span{width:32px;height:8px;background:#5a348c;border-radius:10px}.art-pips span:first-child{background:var(--mint)}.landing-foot{margin-top:55px;font-size:11px;color:#b3a4cc;line-height:2}
#toast{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(20px);max-width:calc(100vw - 32px);width:max-content;background:#fff4c2;color:#2a1048;padding:13px 21px;border-radius:13px;font-size:13px;line-height:1.8;z-index:1000;pointer-events:none;opacity:0;transition:.2s}#toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}#toast.error{background:#f2c3ba;color:#3e211c}
@media(min-width:1800px){.app-shell{max-width:1840px;padding-top:32px}.tv-stage{min-height:740px;padding:45px}.tv-layout{grid-template-columns:minmax(0,1fr) 310px}.join-aside{padding:25px}.qr-box img{max-height:245px}.tv-welcome h1{font-size:62px}.tv-welcome p{font-size:20px}.player-chip{font-size:17px;padding:10px 16px}.tv-game{padding:30px}.tv-game h3{font-size:26px}}
@media(max-width:1080px){.app-shell{padding:20px}.tv-layout{grid-template-columns:minmax(0,1fr) 235px;gap:16px}.tv-stage{padding:24px;min-height:570px}.join-aside{padding:18px 15px;gap:16px}.tv-game{padding:18px 13px;gap:12px}.tv-game h3{font-size:18px}.game-icon{width:46px;height:46px}.tv-game p{font-size:10px}.tv-games{gap:12px}.stage-heading h2{font-size:25px}}
@media(max-width:760px){.app-shell{padding:15px}.tv-layout{grid-template-columns:minmax(0,1fr)}.tv-stage{min-height:480px;border-radius:22px;padding:24px 20px}.join-aside{display:grid;grid-template-columns:120px 1fr;gap:12px 18px;align-items:center;border-radius:22px}.join-aside .qr-section{grid-row:1 / span 3;grid-column:1}.join-aside .qr-box{padding:8px;border-radius:11px}.join-aside .qr-box img{max-height:105px}.join-aside .room-code{font-size:18px;letter-spacing:3px;padding-top:9px}.join-aside .room-code-label{display:none}.join-aside h2{font-size:17px}.join-aside .pin-box{border-top:0;padding:0}.join-aside .pin-box .mono{font-size:23px;text-align:right;margin:2px 0}.join-aside .pin-box p{font-size:10px}.join-aside .join-foot{grid-column:1/-1;padding-top:10px;margin-top:2px}.join-aside .join-foot .join-url{display:none}.tv-footer{font-size:9px}.tv-welcome p{font-size:14px}.tv-welcome h1{font-size:34px}.tv-games{margin-top:20px}.tv-game{flex-direction:column;align-items:flex-start}.tv-stage .timer{font-size:98px}.tv-stage .stage-center{min-height:250px}.tv-stage .stage-center h2{font-size:27px}.tv-stage .stage-center p{font-size:14px}.topbar .brand small{font-size:9px}.top-actions{gap:6px}.top-actions .connection{font-size:9px}.icon-btn{font-size:10px;padding:8px;min-height:36px}.landing{padding:22px}.landing .topbar{margin-bottom:35px}.landing-body{grid-template-columns:1fr;gap:35px}.landing h1{font-size:40px}.landing .intro{font-size:14px}.landing-art{max-width:330px;transform:rotate(-2deg);margin:5px 10px 0}.landing-art p{margin-bottom:18px}.landing-art .game-icon{width:48px;height:48px;margin-bottom:15px}.landing-foot{margin-top:35px}}
@media(max-width:390px){.phone-shell{padding:15px 15px 35px}.phone-card{padding:18px}.phone-title h1{font-size:27px}.phone-shell .brand small{display:none}.phone-shell .topbar{gap:8px}.category-grid{grid-template-columns:1fr 1fr;gap:5px}.game-choice{padding:16px 12px}.vote-option{font-size:12px;padding:10px 9px}.setting-grid{gap:10px}.admin-body{padding:0 15px 16px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
a.icon-btn{display:inline-flex;align-items:center;text-decoration:none}
.account-switch{display:flex;gap:8px;margin-bottom:14px}.account-switch .btn{flex:1}
.profile-heading{font-size:18px;margin:22px 0 10px}
.history-list{display:flex;flex-direction:column;gap:12px}
.history-room{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px}
.history-room h3{font-size:20px;letter-spacing:3px}
.history-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.history-people{font-size:13px;color:var(--muted);margin:4px 0}
.history-results{margin:8px 0 12px;padding:0 18px;font-size:13px;line-height:1.8}
.account-overlay{position:fixed;inset:0;background:#120326e6;z-index:40;overflow:auto;padding:18px 12px 40px}
.account-overlay .overlay-card{max-width:520px}
.admin-shell{max-width:1180px;margin:0 auto;padding:18px 20px 60px}
.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:16px 0 28px}
.admin-stat{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px}
.admin-stat strong{display:block;font-size:28px;line-height:1.3}
.admin-stat span{color:var(--muted);font-size:12px}
.admin-table{width:100%;border-collapse:collapse;font-size:13px}
.admin-table th,.admin-table td{border-bottom:1px solid var(--line);padding:8px 6px;text-align:right;vertical-align:top}
.admin-table th{color:var(--muted);font-weight:normal;font-size:11px}
.admin-actions{display:flex;flex-wrap:wrap;gap:6px}
.admin-note{font-size:12px;color:var(--muted);line-height:1.9;margin:8px 0 18px}
.log-info{color:var(--mint);font-weight:bold}.log-warning{color:var(--amber);font-weight:bold}.log-error{color:var(--danger);font-weight:bold}
.log-detail{font-size:11px;color:var(--muted);line-height:1.7;margin-top:4px;word-break:break-word}
@media print{body{background:white;color:black}.admin,.top-actions,.join-aside,.phone-footer,#toast,.account-overlay{display:none}.phone-shell,.app-shell{max-width:none}.tv-layout{display:block}}


/* Responsive TV and phone presentation. Game state and commands remain unchanged. */
:root{--surface:#21103f;--surface2:#2d1950;--line:#564075;--muted:#d9cde9;--ink:#fffaf0;--mint:#ffe265;--amber:#ffbd59}
html{scroll-padding-block:24px;text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{background:#140a25}
button,a,input,select,summary{touch-action:manipulation}
button,input,select,textarea{font-size:16px}
.btn,.icon-btn,.seg{min-height:48px}
.btn{font-size:16px;border-radius:16px;transition:background-color .16s,transform .16s,border-color .16s}
.btn:active:not(:disabled),.poster:active:not(:disabled){transform:translateY(1px)}
.btn:focus-visible,.poster:focus-visible,summary:focus-visible{outline:3px solid var(--mint);outline-offset:4px}
.btn-icon{width:1.25em;height:1.25em;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.btn-label{min-width:0;overflow-wrap:anywhere}
.timer.paused{opacity:1;color:var(--muted)}
.poster{transition:border-color .18s,background-color .18s,transform .18s;min-width:0}
.poster strong,.poster small{overflow-wrap:anywhere}
.poster.active{background:#453022;border-color:var(--mint)}
.poster.active:after{content:"✓";position:absolute;inset-block-start:10px;inset-inline-start:10px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--mint);color:#261329;font-size:20px;font-weight:800}
input,select,textarea{border-radius:14px;line-height:1.6}
input:focus,select:focus,textarea:focus{border-color:var(--mint)}
label{font-size:15px;color:var(--ink)}
.phone-shell{width:100%;max-width:720px;padding:20px max(18px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));font-size:16px}
.phone-shell .topbar{gap:10px;margin-bottom:22px;flex-wrap:wrap}
.phone-shell .brand strong{font-size:25px}
.phone-shell .brand small{font-size:12px;letter-spacing:0}
.phone-shell .top-actions{gap:8px;flex-wrap:wrap}
.phone-shell .connection{font-size:13px}
.phone-shell .icon-btn{font-size:14px;min-height:44px;padding:10px 14px}
.phone-shell h2,.phone-card h2{font-size:clamp(22px,5.5vw,29px);line-height:1.6}
.phone-card{padding:clamp(18px,4.5vw,28px);border-radius:24px}
.phone-card p,.phone-title p{font-size:16px;line-height:1.85}
.phone-shell .small,.phone-shell .eyebrow,.phone-shell .pill{font-size:14px}
.phone-shell .section-title{flex-wrap:wrap;align-items:center;gap:8px}
.phone-title h1{font-size:clamp(28px,7vw,38px)}
.phone-shell .form-help,.phone-shell .secret-warning,.phone-shell .join-hint,.phone-shell .rule-note,.phone-shell .rules-list,.phone-shell .secret-card small{font-size:14px;line-height:1.85}
.phone-shell .btn.sm,.phone-shell .btn.subtle{min-height:44px;font-size:14px;padding:10px 14px}
.phone-shell .btn.big{min-height:58px;font-size:18px}
.phone-shell .button-row{gap:10px}
.phone-shell .button-row>.btn{flex:1 1 125px}
.phone-shell .poster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.phone-shell .poster strong{font-size:18px;padding:2px 14px}
.phone-shell .poster small{font-size:13px;padding:0 14px 4px}
.phone-shell .poster em{font-size:12px}
.phone-shell .poster img{aspect-ratio:1.2;object-fit:cover}
#app[data-role=host] .phone-card .poster.soon{display:none}
.phone-shell .roster{gap:8px}
.phone-shell .player-chip{font-size:14px;min-height:44px;padding:8px 12px;max-width:100%}
.player-chip>span:not(.avatar){overflow-wrap:anywhere;min-width:0}
.phone-shell .avatar{width:32px;height:32px;font-size:14px}
.phone-shell .secret-card{min-height:210px;padding:24px 18px;border-style:solid;position:relative;overflow:hidden}
.phone-shell .secret-card:before{content:"";position:absolute;width:70px;height:70px;border:1px solid currentColor;border-radius:22px;transform:rotate(25deg);opacity:.09;inset-inline-start:-28px;top:-30px;pointer-events:none}
.phone-shell .secret-card strong,.phone-shell .secret-card.panto strong{font-size:clamp(26px,7vw,38px);overflow-wrap:anywhere;line-height:1.7}
.phone-shell .giant-word{font-size:clamp(22px,6vw,40px);letter-spacing:0;line-height:1.8;overflow-wrap:anywhere}
.phone-shell .secret-card strong[style]{font-size:22px!important}
.phone-shell .secret-card.revealed{background:#302442}
.phone-shell .secret-card.is-spy{background:#3f1e31}
.phone-shell .phone-card .timer{font-size:clamp(72px,20vw,112px);letter-spacing:-3px}
.phone-shell .phone-card .timer-caption{font-size:14px}
.phone-shell .stage-center{min-height:200px}
.phone-shell .phone-card .stage-center h2{font-size:26px}
.phone-shell .phone-card .stage-center p{font-size:16px}
.phone-shell .vote-grid{gap:12px}
.phone-shell .vote-option{font-size:16px;min-height:68px;padding:14px 12px}
.phone-shell .vote-option.selected{border-width:2px;background:#493b30}
.phone-shell .vote-received{font-size:16px}
.phone-shell .score-team{padding:18px 10px;border-radius:18px}
.phone-shell .score-team h3{font-size:16px;overflow-wrap:anywhere}
.phone-shell .score-number{font-size:50px;line-height:1.3}
.phone-shell .turn-label{font-size:16px}
.phone-shell .actor-actions .btn{min-height:68px;font-size:17px}
.phone-shell .admin{border-radius:24px;margin-top:24px}
.phone-shell .admin>summary{min-height:64px;padding:18px 22px;font-size:17px}
.phone-shell .admin-body{padding:0 20px 24px}
.phone-shell .admin-body h3,.phone-shell .admin-body .section-title h2{font-size:17px}
.phone-shell .check-row{min-height:48px;font-size:15px;gap:12px;padding:6px 2px}
.phone-shell .category-grid .check-row{font-size:14px}
.phone-shell input[type=checkbox]{width:23px;height:23px;min-height:23px;flex:none}
.phone-shell .manage-player{gap:10px;padding:14px 0;flex-wrap:wrap}
.phone-shell .manage-player .name{font-size:16px;flex:1 1 100px}
.phone-shell .manage-player .name small{font-size:13px}
.phone-shell .manage-player select{width:120px;min-height:46px;font-size:14px;padding:8px}
.phone-shell .player-menu>summary{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px}
.phone-shell .player-menu .menu{top:50px;min-width:200px}
.phone-shell .pending-box h3{font-size:17px}
.phone-shell .phone-footer{flex-wrap:wrap;gap:14px}
.phone-shell .phone-footer small{font-size:13px}
.host-controls{position:sticky;top:10px;z-index:9;padding:16px;margin-bottom:18px;background:#34234b;border:1px solid #80604b;border-radius:20px}
.host-controls .section-title{margin-bottom:10px!important}
.host-controls .spacer{height:8px!important}
.host-controls .btn{min-height:48px}
.host-controls .form-help{margin:10px 0 0}
.host-controls .button-row{flex-wrap:wrap}
.phone-shell .phone-card>.rule-note{margin-top:12px}
.segmented .seg{font-size:16px;min-height:48px}
.error-text{font-size:15px}
.inline-form{flex-wrap:wrap}
.inline-form input{min-width:140px}
#toast{font-size:15px;max-width:calc(100vw - 32px);line-height:1.8}
.account-overlay{padding-top:max(20px,env(safe-area-inset-top))}
.account-overlay .phone-shell{min-height:auto}
.landing{max-width:1240px}
.landing .intro{font-size:18px}
.landing-posters .poster-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.landing .poster strong{font-size:17px}
.landing .poster small{font-size:14px}
@media(min-width:761px){
.tv-shell{--reading-scale:1;width:100%;max-width:none;padding:clamp(18px,2.3vh,64px) clamp(28px,3vw,120px);font-size:clamp(20px,1.4vw,54px);min-height:100vh;min-height:100dvh}
.tv-shell[data-reading=comfortable]{--reading-scale:1.12}
.tv-shell[data-reading=extra]{--reading-scale:1.25}
.tv-shell .topbar{margin-bottom:clamp(14px,2vh,44px);min-height:48px;gap:20px;flex-wrap:wrap}
.tv-shell .brand{gap:16px}
.tv-shell .brand strong{font-size:clamp(28px,2vw,76px)}
.tv-shell .brand small{font-size:clamp(16px,1vw,38px)}
.tv-shell .brand-mark{width:clamp(72px,5vw,128px);height:clamp(72px,5vw,128px);border:0}
.tv-shell .top-actions{gap:12px;flex-wrap:wrap}
.tv-shell .connection,.tv-shell .icon-btn{font-size:clamp(16px,1vw,38px);line-height:1.5}
.tv-shell .icon-btn{min-height:44px;padding:.55em .85em;border-radius:14px;display:inline-flex;gap:8px;align-items:center;text-decoration:none}
.tv-reading{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--line);border-radius:14px;background:#1c102d}
.tv-reading button{min-width:44px;min-height:40px;padding:6px 10px;border-radius:10px;font-size:clamp(16px,1vw,38px);color:var(--muted);background:transparent}
.tv-reading button[aria-pressed=true]{background:var(--mint);color:#26152a;font-weight:800}
.tv-reading .btn-icon{width:1em;height:1em}
.tv-layout{grid-template-columns:minmax(0,1fr) clamp(245px,20vw,740px);gap:clamp(18px,1.6vw,58px);align-items:start}
.tv-shell .tv-stage{min-height:calc(100vh - clamp(160px,20vh,450px));min-height:calc(100dvh - clamp(160px,20vh,450px));padding:clamp(20px,1.8vw,68px);border-radius:clamp(22px,1.8vw,64px);overflow:visible;background:#21113b}
.tv-shell .stage-heading{gap:20px;margin-bottom:clamp(14px,2vh,44px)}
.tv-shell .stage-heading h2{font-size:clamp(28px,calc(2.2vw * var(--reading-scale)),100px);line-height:1.45}
.tv-shell .game-kicker{gap:12px;flex-wrap:wrap}
.tv-shell .eyebrow,.tv-shell .pill,.tv-shell .small{font-size:clamp(18px,calc(1.15vw * var(--reading-scale)),58px);line-height:1.55;letter-spacing:0}
.tv-shell .pill{padding:.35em .65em;white-space:normal;text-align:center}
.tv-shell .tv-welcome{padding-top:0;max-width:none}
.tv-shell .hero-rule{width:70px;margin-bottom:14px}
.tv-shell .tv-welcome h1{font-size:clamp(34px,calc(3vw * var(--reading-scale)),128px);line-height:1.45;letter-spacing:0;margin:8px 0}
.tv-shell .tv-welcome p{font-size:clamp(22px,calc(1.4vw * var(--reading-scale)),68px);line-height:1.7;max-width:35em;margin:14px 0 20px}
.tv-shell .tv-welcome .poster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}
.tv-shell .poster.soon{display:none}
.tv-shell .tv-welcome .poster{display:grid;grid-template-columns:clamp(85px,6.3vw,240px) minmax(0,1fr);grid-template-rows:auto auto;column-gap:16px;padding:12px;text-align:start;align-items:center;border-radius:20px}
.tv-shell .tv-welcome .poster img{grid-row:1/3;aspect-ratio:1;width:100%;height:auto;border-radius:14px}
.tv-shell .tv-welcome .poster strong{font-size:clamp(22px,calc(1.5vw * var(--reading-scale)),72px);line-height:1.5;padding:0;align-self:end}
.tv-shell .tv-welcome .poster small{font-size:clamp(18px,calc(1.1vw * var(--reading-scale)),54px);line-height:1.5;padding:0;align-self:start;margin-top:5px}
.tv-shell .stage-main{min-width:0}
.tv-shell .stage-center{min-height:0;gap:clamp(12px,1.5vh,32px);padding:clamp(14px,2vh,48px) 0}
.tv-shell .stage-center h2{font-size:clamp(30px,calc(2.15vw * var(--reading-scale)),104px);line-height:1.55;max-width:24em;overflow-wrap:anywhere}
.tv-shell .stage-center p,.tv-shell .stage-main>p{font-size:clamp(22px,calc(1.4vw * var(--reading-scale)),66px);line-height:1.65;max-width:36em}
.tv-shell .stage-main .stage-center[style]{min-height:0!important}
.tv-shell .timer-wrap{padding:clamp(8px,1vh,24px) 0}
.tv-shell .timer{font-size:clamp(112px,min(11.5vw,22vh),460px);line-height:1.15;letter-spacing:-.045em;font-weight:750}
.tv-shell .timer-caption{font-family:Vazirmatn,Tahoma,sans-serif;font-size:clamp(20px,calc(1.25vw * var(--reading-scale)),62px);line-height:1.6;margin-top:8px}
.tv-shell .ready-count{font-size:clamp(68px,7vw,260px);line-height:1.2}
.tv-shell .ready-count>span{font-size:.46em!important}
.tv-shell .progress-track{height:12px;width:80%;max-width:780px}
.tv-shell .stage-bottom{padding-top:clamp(14px,1.6vh,36px);margin-top:clamp(14px,1.7vh,40px)}
.tv-shell .stage-bottom .section-title{gap:15px;flex-wrap:wrap;margin-bottom:12px}
.tv-shell .stage-bottom h3{font-size:clamp(22px,calc(1.4vw * var(--reading-scale)),64px)}
.tv-shell .roster{gap:clamp(8px,.6vw,22px)}
.tv-shell .player-chip{font-size:clamp(20px,calc(1.25vw * var(--reading-scale)),62px);padding:.3em .65em;min-height:0;border-radius:99px;line-height:1.55;max-width:100%;gap:.4em}
.tv-shell .avatar{width:1.7em;height:1.7em;font-size:.78em}
.tv-shell .player-chip small{font-size:.75em}
.tv-shell .game-icon{width:clamp(54px,4vw,150px);height:clamp(54px,4vw,150px);border-radius:20px}
.tv-shell .game-icon svg{width:62%;height:62%;stroke-width:1.8}
.tv-shell .join-aside{position:sticky;top:clamp(18px,2.3vh,64px);padding:clamp(16px,1.3vw,48px);gap:clamp(14px,1.7vh,40px);border-radius:clamp(22px,1.8vw,64px);background:#291442}
.tv-shell .join-aside h2{font-size:clamp(26px,calc(1.7vw * var(--reading-scale)),76px);line-height:1.5;margin:5px 0}
.tv-shell .join-aside p{font-size:clamp(20px,calc(1.15vw * var(--reading-scale)),56px);line-height:1.65}
.tv-shell .join-aside .eyebrow{font-size:clamp(16px,1vw,42px)}
.tv-shell .qr-box{padding:clamp(12px,1vw,36px);border-radius:18px}
.tv-shell .qr-box img{max-height:none;width:100%;height:100%;object-fit:contain}
.tv-shell .room-code{font-size:clamp(30px,2.4vw,96px);letter-spacing:.12em;padding-top:12px;color:var(--mint)}
.tv-shell .room-code-label{font-size:clamp(16px,1vw,42px);line-height:1.6;margin-bottom:0}
.tv-shell .pin-box{padding-top:14px}
.tv-shell .pin-box .mono{font-size:clamp(32px,2.8vw,110px);margin:8px 0 0}
.tv-shell .join-foot{padding-top:14px}
.tv-shell .join-url{display:none}
.tv-shell .scoreboard{gap:16px;margin:16px 0 0}
.tv-shell .score-team{padding:12px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-radius:20px}
.tv-shell .score-team h3{font-size:clamp(22px,calc(1.45vw * var(--reading-scale)),64px);line-height:1.5;overflow-wrap:anywhere}
.tv-shell .score-number{font-size:clamp(48px,4.5vw,170px);line-height:1.15}
.tv-shell .turn-label{font-size:clamp(22px,calc(1.5vw * var(--reading-scale)),66px);line-height:1.6}
.tv-shell .result-badge,.tv-shell .spy-name-list span{font-size:clamp(22px,calc(1.35vw * var(--reading-scale)),66px);line-height:1.5}
.tv-shell .result-word{font-size:clamp(28px,2vw,96px);overflow-wrap:anywhere}
.tv-shell .tv-footer{font-size:clamp(16px,.95vw,36px);line-height:1.6;margin-top:16px;flex-wrap:wrap}
.tv-shell .banner{font-size:clamp(20px,1.3vw,56px)}
.tv-shell .section-title{flex-wrap:wrap}
}
@media(min-width:761px) and (max-height:800px){
.tv-shell{padding-block:16px}.tv-shell .topbar{margin-bottom:12px}.tv-shell .brand small{display:none}
.tv-shell .tv-stage{min-height:calc(100dvh - 155px);padding:18px 22px}.tv-shell .stage-heading{margin-bottom:12px}
.tv-shell .tv-welcome h1{font-size:clamp(32px,3vw,48px);line-height:1.3}.tv-shell .tv-welcome p{margin:10px 0 14px;font-size:22px;line-height:1.5}
.tv-shell .tv-welcome .poster{grid-template-columns:76px 1fr;padding:10px;gap:12px}.tv-shell .tv-welcome .poster strong{font-size:22px}.tv-shell .tv-welcome .poster small{font-size:18px}
.tv-shell .stage-bottom{margin-top:14px;padding-top:12px}.tv-shell .stage-bottom .small{display:none}
.tv-shell .stage-center{padding:10px 0;gap:12px}.tv-shell .stage-center p{font-size:22px;line-height:1.5}
.tv-shell .timer{font-size:min(14vw,21vh)}.tv-shell .timer-caption{font-size:20px}
.tv-shell .join-aside{gap:12px;padding:16px}.tv-shell .join-aside .eyebrow{display:none}.tv-shell .join-aside h2{font-size:26px}
.tv-shell .join-aside p{font-size:20px;line-height:1.5}.tv-shell .join-foot{display:none}.tv-shell .pin-box{padding-top:12px}
.tv-shell .tv-footer{margin-top:10px}.tv-shell .score-team{padding:10px 14px}
}
@media(max-width:760px){
.tv-shell{padding:16px;max-width:none}.tv-shell .topbar{flex-wrap:wrap}.tv-shell .top-actions{flex-wrap:wrap}
.tv-reading{display:flex;gap:4px}.tv-reading button{min-width:44px;min-height:44px;font-size:16px;background:var(--surface2);color:var(--ink);border-radius:10px}
.tv-reading button[aria-pressed=true]{background:var(--mint);color:#261529}
.tv-shell .tv-stage{min-height:0;overflow:visible}.tv-shell .tv-welcome h1{font-size:32px;letter-spacing:0}
.tv-shell .tv-welcome p{font-size:18px}.tv-shell .tv-welcome .poster-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.tv-shell .poster.soon{display:none}.tv-shell .poster strong{font-size:18px}.tv-shell .poster small{font-size:14px}
.tv-shell .join-aside p{font-size:15px}.tv-shell .join-aside h2{font-size:22px}.tv-shell .join-aside .pin-box p{font-size:14px}
.tv-shell .join-aside .room-code{font-size:24px}.tv-shell .join-aside .pin-box .mono{font-size:28px}
.tv-shell .stage-center h2{font-size:28px}.tv-shell .stage-center p{font-size:18px}.tv-shell .tv-footer{font-size:14px}
.landing{padding:22px 18px}.landing .topbar{margin-bottom:32px}.landing .intro{font-size:17px}
}
@media(max-width:374px){
.phone-shell{padding-inline:12px}.phone-card{padding:18px 15px}.phone-shell .brand small{display:none}
.phone-shell .top-actions .connection{font-size:12px}.phone-shell .poster-grid{gap:10px}
.phone-shell .manage-player select{width:100px}.phone-shell .setting-grid{grid-template-columns:1fr}
.phone-shell .category-grid{grid-template-columns:1fr}.phone-shell .vote-option{gap:8px;padding:12px 9px}
.phone-shell .poster strong{font-size:16px}.host-controls{padding:12px}
}
@media(hover:hover){.poster:not(.soon):hover{border-color:var(--mint)}.btn:hover:not(:disabled){filter:brightness(1.08)}}
@keyframes phase-arrive{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
#app.phase-change .stage-main,#app.phase-change .phone-game{animation:phase-arrive .24s ease-out}
@media(prefers-reduced-motion:reduce){#app.phase-change .stage-main,#app.phase-change .phone-game{animation:none}button,.poster{transition:none}}
@media print{.tv-reading,.host-controls{position:static}.tv-shell .join-aside{display:none}}

/* Keep compact TVs readable and preserve all content at increased text sizes. */
@media(min-width:761px){
 .tv-shell .brand small{display:none}
 .tv-shell .stage-heading>div:first-child{display:flex;align-items:center;flex-wrap:wrap;gap:10px 20px}
 .tv-shell .stage-heading h2{order:-1}
 .tv-shell .game-kicker{margin-bottom:0}
 .tv-shell .tv-welcome .poster.soon{display:none}
}
@media(min-width:761px) and (max-height:800px){
 .tv-shell .tv-welcome h1{font-size:calc(32px * var(--reading-scale))}
 .tv-shell .tv-welcome p,.tv-shell .stage-center p{font-size:calc(22px * var(--reading-scale))}
 .tv-shell .timer-caption{font-size:calc(20px * var(--reading-scale))}
 .tv-shell .tv-welcome .poster strong{font-size:calc(22px * var(--reading-scale))}
 .tv-shell .tv-welcome .poster small{font-size:calc(18px * var(--reading-scale))}
 #app[data-phase=panto_ready] .tv-shell .stage-center>.game-icon{display:none}
}
.phone-shell input,.phone-shell select,.phone-shell textarea{scroll-margin-block-start:240px}
@media(max-height:650px){.host-controls{position:static}.phone-shell input,.phone-shell select,.phone-shell textarea{scroll-margin-block-start:24px}}

/* Live game information sits beside the clock, rather than underneath it. */
@media(min-width:761px){
 #app[data-phase=spy_discuss] .stage-main,#app[data-phase=spy_vote] .stage-main,
 #app[data-phase=panto_ready] .stage-main,#app[data-phase=panto_result] .stage-main{
 display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(18px,2vw,64px);align-items:center}
 #app[data-phase=spy_discuss] .stage-main .stage-center,#app[data-phase=spy_vote] .stage-main .stage-center{gap:14px}
 #app[data-phase=panto_ready] .tv-shell .scoreboard,#app[data-phase=panto_result] .tv-shell .scoreboard{grid-template-columns:1fr;margin:0}
 #app[data-phase=panto_play] .stage-main{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:12px clamp(18px,2vw,64px);align-items:center}
 #app[data-phase=panto_play] .stage-main>.section-title{grid-column:1/-1;margin-bottom:8px}
 #app[data-phase=panto_play] .stage-main>.timer-wrap{grid-column:1;grid-row:2/4}
 #app[data-phase=panto_play] .stage-main>p{grid-column:2;grid-row:2;text-align:start!important}
 #app[data-phase=panto_play] .stage-main>.scoreboard{grid-column:2;grid-row:3;grid-template-columns:1fr;margin:0}
 .tv-shell .stage-main .stage-center h2{max-width:100%}
}
@media(min-width:761px) and (max-height:800px){
 #app[data-phase=spy_vote] .tv-shell .stage-center{gap:10px}
 #app[data-phase=spy_vote] .tv-shell .stage-center>.eyebrow{font-size:18px}
 .tv-shell .stage-center h2{font-size:calc(28px * var(--reading-scale));line-height:1.4}
 .tv-shell .stage-bottom h3{font-size:22px}
 .tv-shell .player-chip{font-size:20px;padding:.2em .5em}
}

@media(min-width:761px) and (max-height:800px){
 .tv-shell .stage-bottom{margin-top:10px;padding-top:8px}
 .tv-shell .stage-bottom .section-title{margin-bottom:8px}
}

/* Seven playable games in the TV lobby. */
@media(min-width:761px){
 .tv-shell .tv-welcome .poster-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
 .tv-shell .tv-welcome .poster{display:flex;flex-direction:column;gap:8px;padding:12px;text-align:center}
 .tv-shell .tv-welcome .poster img{width:clamp(64px,4vw,140px);height:clamp(64px,4vw,140px)}
 .tv-shell .tv-welcome .poster strong{align-self:center;font-size:clamp(20px,1.3vw,50px)}
 .tv-shell .tv-welcome .poster small{display:none}
 .tv-shell .tv-welcome h1 br{display:none}
 .tv-shell .tv-welcome h1{font-size:clamp(28px,2.4vw,84px)}
}
