/* Компактная навигация: лендинг, каталог и игровой стол имеют отдельные роли. */
.vio-mark{display:block;flex-shrink:0;background:var(--ink);width:38px;height:30px;mask:url('/assets/brand/mark-white.svg') center/contain no-repeat;-webkit-mask:url('/assets/brand/mark-white.svg') center/contain no-repeat}
.gameplay-brand{font-size:24px;letter-spacing:-1px}.brand-sub{font-size:16px;letter-spacing:-.4px}.hero-art>svg{width:100%;max-height:460px}.hero-art .art-caption{bottom:1%}
.game-card .game-image,.game-card[data-availability] .game-image,.catalog-locked .game-image{filter:none;opacity:1}.game-card[data-availability] .game-image>svg{filter:none;opacity:1}.game-card[data-availability] h3{color:var(--ink)}
/* На внутренних страницах сначала действие, затем второстепенные детали. */
body:not([data-route="home"])>.nav{min-height:76px;gap:16px}
body:not([data-route="home"])>.nav .btn{min-height:44px;padding:10px 18px}
#catalog-page .catalog{padding-top:20px}
#catalog-page .section-heading{margin-bottom:16px}
#catalog-page .company-setup{margin-bottom:16px}
#catalog-page .setup-summary{padding-block:10px}
#catalog-page .filters{margin-bottom:16px}
.join-page{padding-top:10px}
.join-page>.back-link{margin-bottom:4px}
.join-panel{padding:24px}
.join-panel h1{margin-bottom:10px}
.join-panel>.muted{margin-bottom:16px}
@media(max-width:760px){body:not([data-route="home"])>.nav{min-height:64px;gap:10px}body:not([data-route="home"])>.nav .btn{padding:10px 12px}.join-page{padding-top:8px}.join-panel{padding:20px 16px}}
.company-setup{padding:0 20px;margin:0 0 24px;border-radius:16px}.setup-summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;font-weight:750;min-height:52px}.setup-summary::after{content:'+';font-size:20px;font-weight:500}.company-setup[open]>.setup-summary::after{content:'−'}.setup-summary .small{margin-left:auto}.company-setup[open]>:not(summary){margin-bottom:20px}.setup-heading{display:none}.setup-people{margin-top:14px}body[data-route="home"] .mobile-nav{display:none}body[data-route="home"] .footer{padding-bottom:32px}
.game-page{max-width:860px;padding-top:10px;display:flex;flex-direction:column}.game-page[hidden]{display:none}.game-heading-row{order:0;display:flex;align-items:center;gap:10px;position:relative;margin-bottom:8px}.game-heading-row>.back-link{margin:0;padding:0 10px;min-width:44px;height:44px;display:flex;align-items:center;font-size:28px}.game-heading-row>h1{flex:1;min-width:0;overflow-wrap:anywhere;font-size:21px;line-height:1.2;letter-spacing:-.7px}.game-heading-row>#game-player-switch{font-size:12px;padding:8px;min-height:44px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-menu{margin-left:auto;flex-shrink:0;z-index:40}.game-menu>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:13px;font-weight:750;line-height:1;letter-spacing:0;white-space:nowrap}.game-menu-icon{width:18px;height:18px;flex-shrink:0}.game-menu[open]>summary{background:var(--soft);border-color:var(--accent)}.game-menu>summary::-webkit-details-marker{display:none}.game-menu-body{position:fixed;inset:0;width:min(560px,calc(100% - 32px));max-width:none;max-height:calc(100dvh - 48px);margin:auto;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.game-menu-body[open]{display:flex;flex-direction:column}.game-menu-body::backdrop{background:#0007}.team-menu-open,.team-menu-open body{overflow:hidden;overscroll-behavior:none}.team-menu-content{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-height:0;padding:14px 18px max(18px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}.team-menu-content>*{min-width:0}.game-menu-body .btn{width:100%;min-height:44px;padding:10px}.game-menu-body .profile-panel{padding:12px;margin:0;background:var(--bg)}.game-menu-body .profile-heading{font-size:12px}.game-menu-body .profile-chip{min-height:44px;font-size:13px}.game-menu-body .game-after-round{margin:0}.game-menu-body .game-after-round p{font-size:12px}.game-menu-body #game-extra:empty{display:none}
#game-page-content{display:contents}.game-overview{order:1;grid-template-columns:148px minmax(0,1fr);gap:22px;align-items:center;margin:0 0 18px}.game-page-art{width:100%;min-width:0;max-width:100%;height:148px;aspect-ratio:auto;border-radius:18px}.game-page-art>svg{height:90%;width:90%}.game-page-copy{min-width:0;overflow-wrap:anywhere}.game-page-copy h1{font-size:32px;line-height:1.15;letter-spacing:-1px;margin:0 0 8px}.game-page-copy>.small{display:none}.game-page-copy .detail-meta{font-size:12px}.game-page-copy .detail-description{font-size:14px;margin-top:8px;line-height:1.55}.game-live{order:2;margin:0 0 20px}.game-cta{padding:18px;border-radius:16px;gap:16px}.game-cta h2{font-size:18px;margin-bottom:4px}.game-cta p{font-size:13px;margin:0;line-height:1.5}.rules-panel{order:3;margin:0 0 16px;padding:0 18px;border-radius:14px}.rules-panel>summary{font-size:15px;font-weight:750;cursor:pointer;min-height:52px;padding:14px 0}.rules-panel>p{padding-bottom:16px}.rules-panel h2{font-size:18px}.rules-panel .rule-list{font-size:14px;margin-top:0}.rules-panel .related-games{padding-bottom:18px}.game-page.is-playing #game-page-content>.game-overview{display:none}.game-page.is-playing .game-live{margin-top:0}.game-page.is-playing .game-heading-row{margin-bottom:10px}.game-page.is-playing .rules-panel{display:none}.game-page.is-playing.show-rules .rules-panel{display:block}
body[data-route="game"] .mobile-nav,body[data-route="game"]>.footer{display:none}body[data-playing="true"]>.nav{display:none}body[data-route="game"] .game-page{padding-bottom:100px}body[data-playing="true"] .game-page{padding-top:10px}#room-minibar{display:none!important}.game-dock{position:fixed;z-index:20;bottom:0;left:0;right:0;padding:10px max(16px,calc((100vw - 820px)/2)) max(10px,env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}.game-dock>.btn{min-height:48px}.game-dock[hidden]{display:none}body[data-docked="true"] #room-actions>button.btn-primary{display:none}body[data-route="game"] .toast{bottom:88px}.room-state{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:13px;color:var(--muted);margin:12px 0 16px}.room-state strong{color:var(--ink)}.room-state p{flex-basis:100%;margin:0}.spectator-notice,.join-preview{padding:12px 14px;background:var(--blue);border:1px solid var(--line);border-radius:12px;font-size:13px;line-height:1.5;margin:0 0 12px}.join-preview{margin-top:18px}.join-preview strong{display:block;margin-bottom:4px}
/* На первом экране остаются фаза, задача и управление; вспомогательные пояснения находятся в меню. */
.gp-table{padding:16px;border-radius:16px}.gp-topline{margin-bottom:10px}.gp-progress{margin-bottom:12px}.gp-progress-label{margin-bottom:4px}.gp-progress-label:empty{display:none}.gp-interact{margin-top:12px;gap:8px}.gp-experience{display:none}.gp-prompt{font-size:clamp(22px,3vw,28px)}.gp-question-card{padding:20px 16px;min-height:138px}.gp-truth .gp-progress{display:none}.gp-truth .gp-next-step{font-size:12px;margin-top:8px}.gp-word-card{min-height:165px;padding:18px;gap:10px}.gp-button-truth,.gp-button-dare{min-height:130px;padding:18px 12px;gap:8px}.gp-button-truth>svg,.gp-button-dare>svg{width:30px;height:30px}.gp-button-truth>strong,.gp-button-dare>strong{font-size:21px}.gp-next-step{font-size:12px;line-height:1.5;margin-top:8px}.gp-scene-symbol{width:32px;height:32px;margin-bottom:10px}.gp-button-portrait{min-height:82px;padding:8px;gap:5px}.gp-avatar{width:30px;height:30px;font-size:14px}.gp-crystal{width:50px;height:50px;margin-bottom:16px}.gp-crystal>svg{width:26px;height:26px}.gp-friends-emblem{margin-bottom:12px}.gp-friend-face{width:35px;height:35px;font-size:22px}.gp-friend-face:nth-child(2){width:42px;height:42px}.gp-secret{margin-top:12px}.gp-secret-content{font-size:17px;padding-bottom:14px}.gp-night .gp-scene-symbol{width:34px;height:34px}.room-notice:empty{display:none}#room-notice{font-size:12px;margin-top:10px}
@media(max-width:760px){.nav{min-height:72px}.gameplay-brand{font-size:21px}.brand-sub{font-size:13px}.vio-mark{width:32px;height:26px}.wrap{width:calc(100% - 32px)}.hero{padding-top:28px;gap:10px}.hero-art{height:245px;margin-top:6px}.hero-art>svg{height:240px}.hero h1{font-size:42px}.hero-note{margin-bottom:12px}.hero-description{margin-top:14px}.intro-strip{margin-top:12px}.how{margin-top:28px}.catalog .section-heading h2{font-size:28px}.catalog .section-heading p{font-size:12px}.catalog .section-heading{margin-bottom:16px}#catalog-page .catalog{padding-top:16px}.company-setup{padding-inline:14px;margin-bottom:16px}.setup-summary .small{display:none}.company-setup[open]>:not(summary){margin-bottom:16px}.device-modes{gap:6px}.device-mode{padding:10px 8px;min-height:104px}.device-mode small{font-size:11px}.device-mode b{font-size:12px}.setup-people .field-label{margin-top:10px}.game-grid{gap:24px 12px}.game-category{font-size:11px}.game-card .availability-note{font-size:11px}.game-heading-row{margin-bottom:6px}.game-menu-body{width:calc(100% - 16px);max-height:calc(100dvh - 16px);margin:auto 8px 8px;border-radius:18px}.game-page{padding-top:8px}.game-page.is-playing{width:calc(100% - 24px)}.game-overview{grid-template-columns:86px minmax(0,1fr);gap:14px;margin-bottom:14px}.game-page-art{height:90px;border-radius:14px}.game-page-copy h1{font-size:25px;line-height:1.15}.game-page-copy .detail-meta{font-size:12px}.game-page-copy .detail-description{grid-column:1/-1;font-size:13px;line-height:1.5;display:none}.game-cta{padding:14px;display:grid;grid-template-columns:1fr}.game-cta .btn{min-height:46px;font-size:14px}.rules-panel{padding-inline:14px}.game-heading-row>h1{font-size:19px}.game-heading-row>#game-player-switch{max-width:95px}.game-heading-row>.back-link{min-width:34px;padding:0 6px}.gp-table{padding:14px}.gp-topline{font-size:11px}.gp-phase{padding:3px 6px}.gp-clock{font-size:18px}.gp-question-card{min-height:125px;padding:18px 14px}.gp-prompt{font-size:24px;line-height:1.25}.gp-word-text{font-size:30px}.gp-word-card{min-height:150px}.gp-word-counters{margin-top:12px}.gp-team-scores{margin-bottom:12px}.gp-team{padding:7px 9px}.gp-team-roster{font-size:11px}.gp-canvas{max-height:34dvh;width:auto;max-width:100%}.gp-button-portrait{min-height:72px;font-size:12px}.gp-avatar{width:28px;height:28px}.gp-secret-content{font-size:16px}.gp-answer-form{grid-template-columns:1fr}.gp-answer-form .gp-button{min-width:0}.game-dock{padding:8px 12px max(8px,env(safe-area-inset-bottom))}.room-page{padding-top:20px}.room-page-heading{gap:14px;margin-bottom:20px}.room-page-heading h1{font-size:30px}.room-page-heading>.btn{min-height:46px}.roster-panel,.invite-panel{padding:18px}.room-layout{gap:14px}}
@media(max-width:360px){.game-heading-row{gap:4px}.game-heading-row>h1{font-size:17px}.game-heading-row>#game-player-switch{font-size:11px;max-width:78px}.gp-prompt{font-size:22px}.gp-truth-choices{gap:8px}.game-card h3{font-size:13px}.device-modes{grid-template-columns:1fr}.device-mode{min-height:60px}.device-mode svg{width:34px;height:34px}.game-cta h2{font-size:17px}}
@media(prefers-reduced-motion:reduce){.gp-meter>span{transition:none}}

body[data-spectator="true"] #play-inputs,body[data-spectator="true"] .gp-secret{display:none}body[data-playing="true"] #room-notice{display:none}

.game-overview{display:grid}.game-heading-row>.back-link::before{display:none}body[data-docked="true"] #game-cta>.btn{display:none}#game-cta{background:transparent;border:0;padding:4px 0 12px}#game-cta h2{display:none}@media(max-width:760px){.filters{min-width:0;max-width:100%}.filter-scroll{width:100%;max-width:100%;margin-inline:0;padding-inline:0}.game-overview{display:grid}.game-page-art{height:90px;max-width:100%;margin:0}.game-page-copy{text-align:left}}

#catalog-title{font-size:34px;font-weight:750;letter-spacing:-1.2px;line-height:1.2}@media(max-width:760px){#catalog-title{font-size:28px}}

.game-menu-body>*{min-width:0}.game-menu-body .profile-chips{max-width:100%;flex-wrap:wrap;overflow:visible;gap:6px}.game-menu-body .profile-chip{max-width:100%;overflow:hidden}.game-menu-body .profile-heading strong{overflow-wrap:anywhere}

:root[data-theme="dark"] .gp-scene-symbol{color:var(--ink)}:root[data-theme="dark"] .gp-meter>span{background:var(--ink)}

/* Причина остановки и следующий шаг видны рядом с запуском. */
#game-cta{padding:16px;background:var(--soft);border:1px solid var(--line);border-radius:14px}#game-cta h2{display:block;font-size:18px;line-height:1.35;margin:0 0 7px}#game-cta p{font-size:14px;line-height:1.6}#game-start-error:empty{display:none}#game-start-error:not(:empty){margin-top:10px}.preparation-note{padding:14px;background:var(--soft);border:1px solid var(--line);border-radius:12px;font-size:14px;line-height:1.6}.preparation-note strong{display:block;margin-bottom:6px}.preparation-note p+p{margin-top:8px}.preparation-panel{margin:0 0 22px;padding:20px;border:1px solid var(--line);background:var(--soft);border-radius:16px}.preparation-panel h2{font-size:21px;line-height:1.35;margin:7px 0 10px;letter-spacing:-.4px}.preparation-panel>p:not(.small){font-size:14px;line-height:1.65;max-width:78ch}.preparation-panel.is-ready{background:var(--blue)}.preparation-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}.preparation-actions .btn{min-height:46px;padding:10px 16px;font-size:14px}.preparation-actions .btn-text{margin-left:auto}#room-add-form>.field-label{grid-column:1/-1;margin:0}#room-add-form{scroll-margin-block:24px}#room-invite{scroll-margin-block:24px}body[data-preparing="true"] .room-page-heading>div>.small{display:none}body[data-preparing="true"] .room-page-heading h1{font-size:28px}body[data-preparing="true"] .room-page-heading{margin-bottom:20px}
@media(max-width:760px){#game-cta{padding:14px}#game-cta h2{font-size:17px}#game-cta p{font-size:13px}.preparation-panel{padding:16px;margin-bottom:16px}.preparation-panel h2{font-size:19px}.preparation-actions{gap:8px}.preparation-actions .btn{width:100%}.preparation-actions .btn-text{margin-left:0}body[data-preparing="true"] .room-page-heading{align-items:start}body[data-preparing="true"] .room-page-heading>div>p:not(.small){display:none}body[data-preparing="true"] .room-page-heading>.btn{display:none}}

#room-add-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}#room-add-form>.field-label{display:block;font-size:13px;line-height:1.5}#room-add-return{margin-top:14px}

#room-add-name{width:100%;min-width:0;justify-self:stretch}

/* Иллюстрации используют собственную палитру, независимую от текста тёмного интерфейса. */
:root[data-theme="dark"]{--art-ink:#3d352c;--art-paper:#f1eadf;--art-soft:#d5c9b5;--art-blue:#adc3ca;--art-rose:#cfada5;--art-accent:#8f785e;--cover-sand:#bcb097;--cover-sky:#a4bac4;--cover-rose:#c4a5a8;--cover-sage:#a9b8a1;--cover-lilac:#b6aac7;--cover-apricot:#c5ad96}
:root[data-theme="dark"] :is(.game-image,.game-page-art,.landing-game-art,.room-game-art){--card-sand:var(--cover-sand);--card-sky:var(--cover-sky);--card-rose:var(--cover-rose);--card-sage:var(--cover-sage);--card-lilac:var(--cover-lilac);--card-apricot:var(--cover-apricot);border-color:color-mix(in srgb,var(--art-ink) 18%,transparent)}
:root[data-theme="dark"] :is(.game-image,.game-page-art,.landing-game-art,.landing-hero-art,.hero-art,.room-game-art)>svg{--ink:var(--art-ink);--surface:var(--art-paper);--soft:var(--art-soft);--blue:var(--art-blue);--rose:var(--art-rose);--accent:var(--art-accent);color:var(--art-ink)}
:root[data-theme="dark"] .game-image>.game-category{background:var(--art-paper);color:var(--art-ink)}

.game-recommendation{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-top:5px}.game-page-copy .game-recommendation{margin-top:5px}.gp-team-scores.is-cooperative{grid-template-columns:minmax(0,1fr)}

.gp-final-scores.is-cooperative{grid-template-columns:minmax(0,1fr)}

/* Компания: добавление игроков остаётся первым действием, приглашение и игра находятся рядом. */
.room-page{max-width:1120px;padding-top:10px}.room-page>.back-link{font-size:13px;margin-bottom:4px;min-height:44px}.room-page-heading,body[data-preparing="true"] .room-page-heading{align-items:center;gap:16px;margin-bottom:14px}.room-page-heading h1,body[data-preparing="true"] .room-page-heading h1{font-size:30px;line-height:1.2;letter-spacing:-.9px;margin:0}.room-page-heading #room-mode-description{font-size:13px;line-height:1.5;margin-top:7px}.room-page-heading>.btn{min-height:44px;padding:10px 16px;font-size:13px;flex-shrink:0;margin:0}.room-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);align-items:start;gap:20px}.room-side{display:grid;gap:16px;min-width:0}.room-page .roster-panel,.room-page .invite-panel{padding:20px;border-radius:18px;min-width:0}.room-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.room-roster-heading h2{display:flex;gap:10px;align-items:center;font-size:20px;line-height:1.3;letter-spacing:-.4px}.room-roster-heading #participant-count{display:grid;place-items:center;min-width:26px;height:26px;padding:0 7px;border-radius:8px;background:var(--soft);font-size:12px;font-weight:700}.room-roster-heading>.small{font-size:12px;text-align:right}.room-local-entry{padding:14px;background:var(--bg);border:1px solid var(--line);border-radius:12px}.room-local-entry #room-add-form{margin:0;grid-template-columns:minmax(0,1fr) auto;gap:9px}.room-local-entry #room-add-form>.field-label{font-size:13px;font-weight:650;margin:0 0 1px}.room-local-entry .field{min-height:46px;padding:11px 12px;border-radius:10px;font-size:14px;background:var(--surface)}.room-local-entry .btn{min-height:46px;padding:10px 13px;font-size:13px;border-radius:10px}.room-local-entry .btn svg{width:16px;height:16px}.room-local-entry #room-add-help{margin:9px 0 0;font-size:12px;line-height:1.6}.room-local-entry .field-error:empty{display:none}.room-local-entry .field-error:not(:empty){margin-top:9px;font-size:13px;line-height:1.5}.room-local-entry #room-add-return{margin-top:12px}.room-page .participants{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;margin-top:14px}.room-page .participant{display:flex;align-items:center;gap:10px;min-width:0;min-height:76px;padding:12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}.room-page .participant .avatar{width:34px;height:34px;flex-shrink:0;background:var(--soft);font-size:13px}.participant-info{min-width:0;flex:1}.participant-title{display:flex;flex-wrap:wrap;align-items:center;gap:3px 7px}.room-page .participant-name{font-size:14px;line-height:1.4;overflow-wrap:anywhere}.participant-role{font-size:10px;line-height:16px;color:var(--muted);padding:0 5px;background:var(--soft);border-radius:4px}.participant-caption{font-size:12px;line-height:1.5;color:var(--muted);margin:3px 0 0}.participant-waiting{display:block;font-size:11px;line-height:1.5;color:var(--muted);margin-top:5px}.participant.is-waiting .avatar{border:1px dashed var(--muted)}.room-page .remove-local{width:36px;min-width:36px;height:44px;padding:8px;flex-shrink:0;display:grid;place-items:center;color:var(--muted);background:transparent}.room-page .remove-local svg{width:16px;height:16px}.room-side .room-selected{margin:0;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.room-game-overview{display:flex;align-items:center;gap:12px;min-width:0}.room-game-overview>div:last-child{min-width:0}.room-game-art{width:58px;height:58px;display:grid;place-items:center;flex-shrink:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.room-game-art>svg{width:100%;height:100%;display:block}.room-game-overview .small{font-size:11px;line-height:1.4;margin:0 0 5px}.room-side .selected-game-link{font-size:17px;line-height:1.35;letter-spacing:-.3px;overflow-wrap:anywhere;margin:0;min-height:0}.room-side .room-state{font-size:12px;gap:5px 10px;margin:14px 0}.room-side #room-change-game{min-height:42px;font-size:12px;padding:9px 13px}.room-side .invite-panel h2{font-size:18px;line-height:1.35;letter-spacing:-.3px;margin-bottom:7px}.room-side .invite-panel>.small{font-size:12px;line-height:1.5}.room-side .invite{padding:12px;gap:14px;border-radius:12px;margin-top:14px}.room-side .qr-image{width:96px;height:96px;padding:5px;border-radius:8px}.room-side .room-code{font-size:24px;letter-spacing:4px;line-height:1.5}.room-side .invite-copy .small{font-size:11px}.room-side .invite-actions{gap:8px;margin-top:12px}.room-side .invite-actions .btn{min-height:44px;font-size:12px;padding:10px 12px;border-radius:10px}.roster-panel>.preparation-panel{margin:20px 0 0;padding:14px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.roster-panel>.preparation-panel>.small{font-size:12px;line-height:1.5}.roster-panel>.preparation-panel h2{font-size:16px;line-height:1.4;letter-spacing:-.2px;margin:6px 0}.roster-panel>.preparation-panel>p:not(.small){font-size:12px;line-height:1.6}.roster-panel>.preparation-panel .preparation-actions{gap:8px;margin-top:10px}.roster-panel>.preparation-panel .btn{font-size:12px;min-height:40px;padding:8px 10px}.roster-panel>.preparation-panel .btn-text{margin-left:0}.room-page>.leave-room{font-size:12px;min-height:44px;margin-top:14px}
@media(max-width:900px){.room-page .participants{grid-template-columns:minmax(0,1fr)}.room-layout{grid-template-columns:minmax(0,1.35fr) minmax(270px,1fr)}}
@media(max-width:760px){.room-page{padding-top:8px}.room-page>.back-link{margin-bottom:4px}.room-page-heading,body[data-preparing="true"] .room-page-heading{align-items:center;margin-bottom:12px}.room-page-heading h1,body[data-preparing="true"] .room-page-heading h1{font-size:26px}.room-page-heading #room-mode-description,body[data-preparing="true"] .room-page-heading>div>p:not(.small){display:block;font-size:12px;margin-top:5px}.room-page-heading>.btn,body[data-preparing="true"] .room-page-heading>.btn{display:inline-flex;padding:9px 12px;min-height:44px;font-size:12px}.room-layout{grid-template-columns:minmax(0,1fr);gap:14px}.room-page .roster-panel,.room-page .invite-panel{padding:16px;border-radius:16px}.room-roster-heading{margin-bottom:14px}.room-roster-heading h2{font-size:19px}.room-local-entry{padding:12px}.room-local-entry #room-add-form{grid-template-columns:minmax(0,1fr) auto;gap:8px}.room-local-entry #room-add-form>.field-label{font-size:12px}.room-local-entry .field{font-size:16px;padding-inline:10px}.room-local-entry .btn{padding-inline:11px;font-size:12px}.room-local-entry .btn svg{display:none}.room-page .participants{margin-top:10px}.room-page .participant{min-height:68px;padding-block:10px}.room-side{gap:14px}.room-side .room-selected{padding:16px;border-radius:16px}.room-side .invite{display:flex;gap:16px;padding:14px}.room-side .qr-image{width:104px;height:104px}.room-side .room-code{font-size:25px}.roster-panel>.preparation-panel .preparation-actions .btn{width:auto}.room-page>.leave-room{margin-top:10px}}
@media(max-width:360px){.room-page-heading h1,body[data-preparing="true"] .room-page-heading h1{font-size:23px}.room-page-heading{gap:8px}.room-page-heading>.btn{padding-inline:10px}.room-local-entry{padding:10px}.room-page .roster-panel{padding:14px}.room-local-entry .btn{padding-inline:10px}.room-side .qr-image{width:90px;height:90px}.room-side .room-code{font-size:22px;letter-spacing:3px}}

.room-page-heading{flex-direction:row}.room-page-heading>div{min-width:0;flex:1}#room-primary-link{width:auto;flex:0 0 auto;white-space:nowrap}@media(max-width:760px){.room-page-heading,body[data-preparing="true"] .room-page-heading{flex-direction:row}}

.room-page-heading{display:flex}
@media(max-width:760px){.room-layout{display:flex;flex-direction:column;align-items:stretch}.room-side{display:contents}.room-side>.room-selected{order:0;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.room-page .roster-panel{order:1;width:100%}.room-side>.invite-panel{order:2;width:100%}.room-game-overview{grid-column:1/-1;gap:10px}.room-game-art{width:44px;height:44px;border-radius:10px}.room-side .selected-game-link{font-size:15px}.room-side .room-state{margin:0;font-size:11px;gap:4px 9px;align-self:center}.room-side #room-change-game{grid-column:2;align-self:center;min-height:40px;padding:8px 10px;font-size:11px}}

/* Сохраняет иллюстрации целиком в карточках и на телефонах. */
.game-image>img{position:absolute;inset:11% 6%;display:block;width:88%;height:78%;object-fit:contain;object-position:center}.game-page-art,.room-game-art,.detail-art,#home-page .landing-game-art{position:relative}.game-page-art>img,.room-game-art>img,.detail-art>img,#home-page .landing-game-art>img{position:absolute;inset:5%;display:block;width:90%;height:90%;object-fit:contain;object-position:center}#home-page .landing-hero-art>img{display:block;width:100%;height:auto;max-height:480px;object-fit:contain}@media(max-width:760px){#home-page .landing-hero-art>img{max-height:300px}}

/* Настройки остаются компактной строкой до явного раскрытия. */
.game-settings{margin:14px 0;border:1px solid var(--line);border-radius:14px;background:var(--surface);min-width:0}.game-settings>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;font-size:14px;font-weight:700;min-height:48px;list-style:none}.game-settings>summary::-webkit-details-marker{display:none}.game-settings>summary::after{content:'+';font-size:20px;color:var(--muted)}.game-settings[open]>summary::after{content:'−'}.settings-summary{font-size:12px;color:var(--muted);font-weight:500;margin-left:auto;text-align:right}.settings-form{padding:0 16px 16px}.settings-form>.small{margin-bottom:16px}.settings-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.settings-field{display:grid;gap:7px;align-content:start;min-width:0}.settings-label{font-size:13px;font-weight:650}.settings-field .field{width:100%;min-width:0;min-height:46px;font-size:16px;padding:10px 12px}.settings-field small{font-size:11px;line-height:1.5;color:var(--muted)}.settings-switch{grid-template-columns:24px minmax(0,1fr);align-content:center;align-items:center}.settings-switch input{accent-color:var(--accent);width:20px;height:20px;min-height:0;padding:0}.settings-switch small{grid-column:1/-1}.settings-categories{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:20px 0 0;min-width:0}.settings-categories legend{font-size:13px;font-weight:700;margin-bottom:9px}.settings-category{display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;font-size:12px;cursor:pointer}.settings-category:has(input:checked){background:var(--soft);border-color:var(--accent)}.settings-category input{width:16px;height:16px;accent-color:var(--accent)}.settings-category small{color:var(--muted);font-size:10px}.settings-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.settings-actions .btn{font-size:12px;min-height:44px;padding:10px 12px}.settings-form>.field-error:not(:empty){margin-top:12px;font-size:12px}.mafia-control{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px}.mafia-control h2{font-size:22px;line-height:1.3}.mafia-control>.small{margin:8px 0 16px}.mafia-roster{display:grid;gap:8px}.mafia-player{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);font-size:13px}.mafia-player>small{grid-column:1/-1;color:var(--muted);font-size:12px}.mafia-player.is-out{opacity:.6}.mafia-role{font-weight:750;color:var(--accent)}.finish-round-note{font-size:11px;color:var(--muted);line-height:1.5;text-align:center;margin-top:8px}.game-menu-body .settings-form input:disabled,.game-menu-body .settings-form select:disabled{opacity:.8}
@media(max-width:640px){.settings-fields{grid-template-columns:1fr;gap:14px}.settings-summary{font-size:11px;max-width:52%}.settings-form{padding:0 14px 14px}.game-settings>summary{padding:12px 14px;font-size:13px}.mafia-control{padding:16px}.mafia-control h2{font-size:20px}}

/* Восемь символов помещаются в поле; приглашение переносит код целиком при нехватке места. */
.join-panel .field.code{font-size:24px;letter-spacing:4px;padding-inline:10px}
.room-side .invite{flex-wrap:wrap;justify-content:center}
.room-side .invite-copy{flex:0 0 auto;max-width:100%}
.room-side .room-code{font-size:20px;letter-spacing:2px;white-space:nowrap}

/* Исключение участника доступно ведущему через отдельное подтверждение. */
.room-page .remove-local.is-kick{width:auto;min-width:44px;padding:8px;font-size:12px;color:var(--danger)}
.moderation-dialog .dialog-head{padding-bottom:12px}
.moderation-dialog .dialog-body>p{font-size:14px;line-height:1.65}
.moderation-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}

/* Участники видят общий выбор ведущего и сохраняют доступ к правилам каталога. */
.host-selection-note{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.host-selection-note p{font-size:13px;line-height:1.55;max-width:76ch}
.host-selection-note .btn{flex-shrink:0;min-height:44px;padding:10px 13px;font-size:12px}
@media(max-width:760px){.host-selection-note{align-items:stretch;flex-direction:column;gap:10px;padding:12px}.host-selection-note p{font-size:12px}.host-selection-note .btn{align-self:flex-start}}

/* Проверка готовности приходит на все подключённые устройства до раздачи ролей. */
.start-ready-dialog .dialog-head{padding-bottom:10px;gap:12px}.start-ready-clock{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;border-radius:50%;background:var(--soft);font-size:23px;font-weight:800;font-variant-numeric:tabular-nums}.start-ready-game{font-size:21px;font-weight:750;line-height:1.3;margin-bottom:10px}.start-ready-dialog .dialog-body>p:not(.small):not(.start-ready-game){font-size:14px;line-height:1.55}.start-ready-dialog .small{margin-top:10px;line-height:1.55}.start-ready-progress{font-weight:750;margin-top:16px}.start-ready-players{max-height:170px;overflow:auto;margin-top:8px}.start-ready-player{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.start-ready-player>span:first-child{min-width:0;overflow-wrap:anywhere}.start-ready-state{flex-shrink:0;color:var(--muted);font-size:12px}.start-ready-state.ready{color:var(--success);font-weight:750}.start-ready-actions{display:grid;gap:8px;margin-top:18px}.start-ready-actions .btn{min-height:46px}.start-notice{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--soft);font-size:13px;line-height:1.55;margin-bottom:14px}#game-start-notice{order:-1}

/* Открывает QR приглашения на весь экран, сохраняя светлое поле для сканирования. */
.qr-expand{display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0;padding:0;border-radius:9px;background:transparent;font-size:11px;font-weight:650;color:var(--muted)}
.qr-expand>span{padding:2px 4px}.qr-expand:hover>span{color:var(--ink)}
.dialog.qr-viewer{position:fixed;inset:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:0;overflow:auto;background:var(--bg)}
.qr-viewer[open]{display:flex;flex-direction:column}
.qr-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:max(16px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) 12px max(20px,env(safe-area-inset-left));flex-shrink:0}
.qr-viewer-head h2{font-size:20px;line-height:1.3;letter-spacing:-.4px}.qr-viewer-head .btn{min-height:44px;padding:10px 16px;flex-shrink:0}
.qr-viewer-body{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:12px max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));text-align:center}
.qr-viewer-image{display:block;width:min(100%,560px,max(140px,calc(100dvh - 250px)));height:auto;aspect-ratio:1;background:#fff;border:12px solid #fff;border-radius:16px}
.qr-viewer .room-code{font-size:clamp(26px,5vw,38px);letter-spacing:.14em;margin-top:4px;overflow-wrap:anywhere}
body:has(#room-qr-dialog[open]){overflow:hidden}
@media(max-width:480px){.qr-viewer-head{gap:10px}.qr-viewer-head h2{font-size:17px}.qr-viewer-head .btn{font-size:12px;padding:10px 12px}.qr-viewer-body{gap:16px}.qr-viewer-image{border-width:8px}}
@media(max-height:480px) and (orientation:landscape){.qr-viewer-body{display:grid;grid-template-columns:auto minmax(0,240px);gap:12px 28px;align-content:center;flex:1}.qr-viewer-image{grid-column:1;grid-row:1/3;width:min(45vw,max(140px,calc(100dvh - 110px)));max-width:360px}.qr-viewer-body>p{grid-column:2;align-self:end}.qr-viewer-body>div{grid-column:2;align-self:start}}

/* Объясняет срок жизни комнаты и отделяет удаление от обычного выхода. */
.room-lifetime{margin-top:18px;max-width:68ch;line-height:1.6}
.room-management{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
.room-management .leave-room{margin:0}.room-delete{text-decoration:underline;text-underline-offset:3px}
.room-closed-page{max-width:620px;padding:32px 0 48px}.room-closed-page h1{font-size:clamp(28px,5vw,38px);line-height:1.2;letter-spacing:-1px}.room-closed-page .muted{margin-top:16px;line-height:1.7}.room-closed-page .small{margin-top:12px}.room-closed-page .form-actions{display:grid;gap:10px;margin-top:24px}
@media(max-width:760px){.room-closed-page{padding-top:20px}.room-management{gap:4px}.room-management .btn{font-size:12px;min-height:44px;padding:10px}.room-lifetime{font-size:12px}}

/* Команда открывается отдельной панелью поверх игрового стола. */
.game-dock{display:flex;align-items:stretch;gap:10px;z-index:40}
.game-dock>#dock-main{flex:1;min-width:0;width:auto}
.game-dock .game-menu{position:relative;margin:0 0 0 auto;z-index:auto;align-self:stretch}
.game-dock .game-menu>summary{min-height:48px;height:100%;padding:0 14px;gap:8px}
.game-dock .game-menu-icon{width:20px;height:20px}

.team-menu-heading{display:flex;flex:none;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line)}.team-menu-heading>strong{font-size:18px;letter-spacing:-.4px}.team-menu-heading>.icon-btn{font-size:25px;border:1px solid var(--line);width:44px;height:44px}
body[data-route="game"] .game-page{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
@media(max-width:760px){.game-dock{gap:8px}.game-dock>#dock-main{font-size:13px;padding:12px}.game-dock .game-menu>summary{font-size:12px;padding:0 12px;gap:6px}}

/* Убирает дублирующий блок готовности: причина и ошибки запуска находятся у нижней кнопки. */
#game-cta{display:none}
.game-dock{flex-wrap:wrap;row-gap:7px}
.game-dock-note,.game-dock-error{flex:0 0 100%;min-width:0;margin:0;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.game-dock-note{color:var(--muted)}.game-dock-error{color:var(--danger);max-height:90px;overflow:auto;overscroll-behavior:contain}
body[data-route="game"] .game-page{padding-bottom:calc(var(--game-dock-height,100px) + 20px)}




/* Категории видны в начале подготовки и удобно выбираются касанием. */
.settings-form>.settings-categories{margin:0 0 18px}.settings-category:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:3px}.settings-category:has(input:disabled){cursor:default}

/* Роли выбираются перед партией; ночные действия находятся внутри личного экрана. */
.settings-role-group{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;border:0;padding:0;margin:4px 0 0;min-width:0}.settings-role-group>legend{font-size:14px;font-weight:750;margin-bottom:12px}.settings-role-group .settings-field{padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--bg);min-width:0}.settings-role-group .settings-field:has(input:checked){border-color:var(--success);background:color-mix(in srgb,var(--success) 8%,var(--surface))}.settings-role-group small{margin-top:4px}.settings-role-group .settings-field:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:3px}
.gp-mafia-abilities{display:grid;gap:12px}.gp-mafia-ability{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);text-align:left;min-width:0}.gp-mafia-ability .gp-label{margin:0}.gp-mafia-ability-hint{font-size:12px;line-height:1.6;color:var(--muted);margin:0}.gp-mafia-ability .gp-input{width:100%;min-width:0;font-size:16px;min-height:46px}.gp-mafia-ability-controls{display:flex;flex-wrap:wrap;gap:8px}.gp-mafia-ability-controls .gp-button{flex:1;min-height:44px;font-size:12px}.gp-mafia-ability .gp-vote-note{font-size:11px;margin:0}.gp-mafia .gp-secret-content{white-space:pre-line}.mafia-player>small{overflow-wrap:anywhere}
@media(max-width:640px){.settings-role-group{grid-template-columns:1fr}.gp-mafia-ability{padding:12px}.game-menu-body .settings-role-group{grid-template-columns:1fr}}

.settings-category-group{flex:1 1 230px;min-width:0;border:1px solid var(--line);border-radius:10px;padding:0 10px}.settings-category-group>summary{cursor:pointer;font-size:13px;font-weight:700;padding:12px 2px}.settings-category-group>.settings-category{margin:0 0 8px}.settings-category-group>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* Компактная шапка сайта сохраняет доступные зоны нажатия. */
body[data-route]>.nav{min-height:64px;padding-block:4px;gap:12px}
body[data-route]>.nav .nav-left{min-width:0}
body[data-route]>.nav .gameplay-brand{min-height:44px;gap:8px;font-size:22px;white-space:nowrap}
body[data-route]>.nav .brand-sub{display:inline;font-size:13px;line-height:1;letter-spacing:-.2px;margin-left:2px}
body[data-route]>.nav .vio-mark{width:30px;height:26px}
body[data-route]>.nav .icon-btn{width:44px;height:44px;flex-shrink:0}
body[data-route]>.nav .btn{min-height:44px;padding:10px 14px;font-size:13px}
@media(max-width:760px){
 body[data-route]>.nav{min-height:52px;gap:8px}
 body[data-route]>.nav .gameplay-brand{gap:6px;font-size:19px;letter-spacing:-.6px}
 body[data-route]>.nav .brand-sub{font-size:11px;letter-spacing:-.1px}
 body[data-route]>.nav .vio-mark{width:26px;height:24px}
 body[data-route]>.nav .nav-right{gap:4px;flex-shrink:0}
 body[data-route]>.nav .btn{padding-inline:10px;font-size:12px}
}

/* Завершение партии видно рядом с текущей игрой на странице компании. */
.room-side #room-finish-game{grid-column:1/-1;width:100%;min-height:44px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--danger);font-size:13px}
.room-side #room-finish-game:disabled{color:var(--muted);opacity:.65}
.room-finish-help{grid-column:1/-1;margin:0;color:var(--muted);font-size:12px;line-height:1.55}
#finish-game-error:empty{display:none}

.team-menu-meta{display:flex;flex-wrap:wrap;gap:5px 14px;min-width:0}.team-menu-meta p{margin:0;font-size:12px;line-height:1.5}.team-menu-meta #game-session-state{flex-basis:100%;color:var(--muted)}
.team-menu-content .profile-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.team-menu-content .profile-chip{width:100%;justify-content:flex-start;white-space:normal;overflow-wrap:anywhere}.team-menu-content #game-extra{font-size:12px;line-height:1.6;margin:0}
@media(max-width:760px){.team-menu-heading{padding:10px 14px}.team-menu-content{padding:12px 14px max(14px,env(safe-area-inset-bottom))}}

.team-menu-content{scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.team-menu-content::-webkit-scrollbar{width:6px}.team-menu-content::-webkit-scrollbar-track{background:transparent}.team-menu-content::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}.team-menu-content::-webkit-scrollbar-button{display:none}
