/* A family card-game palette, keeping the original purple identity.
   Rounded panels: 24px; controls: 14px; chips and badges: full radius.
   Design variance 3 / motion 2 / density 3: legibility comes first. */
:root{color-scheme:light;--paper:#faf7ee;--surface:#fffdf8;--ink:#292039;--muted:#685e73;--purple:#56369b;--purple-light:#eee7f8;--line:#8e7d9f;--yellow:#f2cb57;--yellow-light:#fff3c9;--text:1.0625rem}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:ui-rounded,"SF Pro Rounded",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:var(--text);line-height:1.5;-webkit-tap-highlight-color:transparent}button,input,summary{font:inherit}button,summary{cursor:pointer}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--purple);outline-offset:4px}h1,h2,p{margin:0}h1{font-size:clamp(2.3em,7.8vw,3.1em);line-height:1.05;letter-spacing:-.045em;font-weight:850;overflow-wrap:anywhere}h1:focus{outline:none}h2{font-size:1.1em;font-weight:750;letter-spacing:-.02em}p{overflow-wrap:anywhere}a{color:inherit}button{border:0}input{width:100%;min-width:0;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);padding:13px 15px;min-height:48px}input::placeholder{color:var(--muted)}.hidden{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app{max-width:590px;margin:0 auto;padding:24px max(20px,env(safe-area-inset-left)) max(24px,env(safe-area-inset-bottom))}.app-header{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:36px}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:1.05em;font-weight:650;line-height:1.1;letter-spacing:-.025em}.brand strong{display:block;font-size:.64em;letter-spacing:.19em;margin-top:5px}.brand-mark{display:grid;place-items:center;background:var(--purple);color:var(--surface);border-radius:16px;width:49px;height:49px;font-size:1.8em;font-weight:800;padding-bottom:4px}.screen{display:flex;flex-direction:column;gap:24px;animation:arrive .16s ease-out}.intro{margin-bottom:6px}.intro p{margin-top:14px;color:var(--muted);font-size:1.05em}.setup-section{display:flex;flex-direction:column;gap:13px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading h2{display:flex;align-items:center;gap:11px}.step{font-size:.66em;color:var(--purple);font-weight:800;background:var(--purple-light);border-radius:8px;padding:4px 7px;letter-spacing:.04em}.count{font-size:.76em;color:var(--muted);white-space:nowrap}.player-list{display:flex;flex-wrap:wrap;gap:8px}.player-chip{display:flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:0 4px 0 13px;font-size:.87em;font-weight:650;max-width:100%}.player-chip>span{overflow-wrap:anywhere}.remove-player{display:grid;place-items:center;background:transparent;color:var(--muted);width:44px;min-width:44px;height:44px;border-radius:99px;font-size:1.3em}.remove-player:hover{background:var(--purple-light);color:var(--purple)}.add-player{display:flex;gap:8px}.microcopy{font-size:.76em;color:var(--muted);line-height:1.45}.category-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.category-card{display:flex;align-items:center;gap:9px;min-height:57px;background:var(--surface);border:1.5px solid var(--line);border-radius:14px;padding:12px;text-align:left;font-size:.85em;font-weight:650}.category-card:last-child{grid-column:1/-1}.category-icon{font-size:1.3em;flex-shrink:0}.category-card.active{border-color:var(--purple);background:var(--purple-light);box-shadow:inset 0 0 0 .5px var(--purple)}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-card{position:relative;display:flex;flex-direction:column;gap:7px;align-items:flex-start;text-align:left;border:1.5px solid var(--line);border-radius:20px;background:var(--surface);padding:17px 15px}.mode-card strong{font-size:1em}.mode-card>span:last-child{font-size:.78em;color:var(--muted);line-height:1.4}.mode-symbol{font-size:1.55em;font-weight:850;line-height:1;width:32px;margin-bottom:3px;color:var(--purple)}.mode-card.active{background:var(--purple-light);border-color:var(--purple);box-shadow:inset 0 0 0 .5px var(--purple)}.mode-card.active:after{content:'✓';position:absolute;top:15px;right:15px;color:var(--purple);font-weight:800}
summary{min-height:48px;display:flex;align-items:center;gap:12px;font-weight:650;list-style:none}summary::-webkit-details-marker{display:none}summary:after{content:'+';margin-left:auto;font-size:1.3em;color:var(--purple)}details[open]>summary:after{content:'−'}.option-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-top:1px solid var(--line)}.option-row strong{font-size:.9em}.option-row p{font-size:.76em;color:var(--muted);margin-top:4px}.toggle-button,.segmented button{font-size:.84em;min-height:44px;min-width:52px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-weight:700}.toggle-button[aria-pressed=true],.segmented button.active{background:var(--purple);color:var(--surface);border-color:var(--purple)}.segmented{display:flex;gap:5px}.button{min-height:54px;display:flex;align-items:center;justify-content:center;gap:14px;border-radius:14px;padding:13px 18px;font-weight:750;font-size:1em;transition:transform .12s ease,background .12s ease}.button:active:not(:disabled){transform:translateY(2px)}.primary{background:var(--purple);color:#fff}.primary:hover:not(:disabled){background:#472b83}.primary>span{margin-left:auto}.secondary{background:var(--surface);border:1.5px solid var(--line);color:var(--purple)}.secondary:hover{background:var(--purple-light)}.full{width:100%}.how-to{font-size:.86em;color:var(--muted)}.how-to>summary{justify-content:center;min-height:44px}.how-to>summary:after{margin-left:0;font-size:1em}.how-to p{margin:10px 0}.app-footer{text-align:center;font-size:.72em;color:var(--muted);margin-top:38px}
.topline{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;flex-wrap:wrap}.badge{display:inline-block;font-size:.76em;font-weight:700;background:var(--purple-light);color:var(--purple);padding:7px 12px;border-radius:99px;align-self:flex-start}.player-label{font-size:.84em;font-weight:650;overflow-wrap:anywhere}.text-button{display:inline-flex;align-items:center;justify-content:center;background:transparent;min-height:44px;color:var(--purple);padding:8px 0;font-size:.82em;font-weight:700;text-decoration:underline;text-underline-offset:4px}.centered{text-align:center;align-items:center}.centered .badge{align-self:center}.centered .topline .badge{align-self:auto}.support-copy{color:var(--muted);line-height:1.55;font-size:1em}.eyebrow{font-size:.8em;font-weight:700;color:var(--muted)}.card-stack{position:relative;width:130px;height:164px;margin:20px auto 4px}.back-card,.front-card{position:absolute;width:116px;height:151px;border-radius:20px}.back-card{background:var(--yellow);transform:rotate(-13deg);left:0;top:6px}.front-card{background:var(--purple);color:var(--surface);transform:rotate(8deg);left:12px;display:grid;place-items:center;font-size:4em;font-weight:750;box-shadow:0 10px 20px #56369b20}.secret-card{background:var(--purple-light);border:1.5px solid var(--purple);border-radius:24px;padding:35px 24px;min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center}.secret-card.sneak{background:var(--yellow-light);border-color:#977100}.secret-word{font-size:clamp(2em,8vw,2.8em);line-height:1.1;font-weight:850;letter-spacing:-.04em;color:var(--purple);overflow-wrap:anywhere;max-width:100%}.secret-card.sneak .secret-word{color:var(--ink)}.secret-card>p:last-of-type{font-size:.9em;color:var(--muted)}.partner-banner{font-size:.85em;padding-top:16px;border-top:1px solid var(--line);width:100%}.button-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.first-speaker{display:flex;flex-direction:column;gap:5px;background:var(--purple-light);border-radius:20px;padding:20px}.first-speaker>span{font-size:.8em;color:var(--muted)}.first-speaker strong{font-size:1.2em;color:var(--purple)}.vote-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.suspect-card{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;min-height:73px;border:1.5px solid var(--line);border-radius:16px;background:var(--surface);padding:16px;font-weight:650;font-size:1em;overflow-wrap:anywhere}.suspect-card.selected{background:var(--purple-light);border-color:var(--purple)}.suspect-check{display:grid;place-items:center;border:1.5px solid var(--line);border-radius:99px;width:25px;height:25px;flex-shrink:0;font-size:.8em}.selected .suspect-check{border-color:var(--purple);background:var(--purple);color:#fff}.guess-symbol,.result-symbol{background:var(--yellow);color:var(--ink);display:grid;place-items:center;border-radius:24px;width:95px;height:95px;font-size:3.4em;font-weight:850;transform:rotate(-7deg);margin:5px 0}.caught-names{font-size:1.1em;font-weight:700;color:var(--purple)}.word-sealed{padding:20px;width:100%;border:1.5px dashed var(--line);border-radius:20px}.word-sealed>span{font-size:2em;letter-spacing:.18em;color:var(--purple)}.word-sealed p{font-size:.82em;color:var(--muted)}.guess-actions{display:flex;flex-direction:column;gap:10px;width:100%}.result-words{display:flex;flex-direction:column;gap:10px;background:var(--purple-light);padding:25px;border-radius:24px;width:100%}.result-words>strong{font-size:2.1em;font-weight:850;letter-spacing:-.04em;color:var(--purple);line-height:1.2;overflow-wrap:anywhere}.decoy-row{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:15px;margin-top:10px;font-size:.85em;text-align:left}.decoy-row>span{color:var(--muted)}.result-details{width:100%;font-size:.88em;text-align:left}.result-details p{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--line)}.result-details p>span{color:var(--muted)}.result-details strong{text-align:right}.toast{position:fixed;top:max(16px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:10;width:min(92%,530px);display:flex;align-items:center;gap:16px;background:var(--ink);color:#fff;border-radius:16px;padding:15px 18px;box-shadow:0 10px 35px #29203930;font-size:.9em}.toast>button{margin-left:auto;background:transparent;color:#fff;font-size:1.4em;min-width:44px;min-height:44px}
.add-player .button{flex-shrink:0;white-space:nowrap}
.clear-list{align-self:flex-end;margin-top:-9px;margin-bottom:-11px;min-height:44px;font-size:.76em}.empty-players{font-size:.9em;color:var(--muted);padding:18px 0}
/* Full-viewport game. Content is paginated by available space, never clipped
   to make larger text look as if it fits. */
html,body{height:100%;overflow:hidden}.app{height:100dvh;display:flex;flex-direction:column;padding:16px 20px max(12px,env(safe-area-inset-bottom));gap:0}.app-header{flex-shrink:0;margin-bottom:18px;gap:10px}.app-header .brand{font-size:1rem}.app-header #accessibilityBtn{font-size:max(14px,.7em);padding:6px}.screen{flex:1;min-height:0;overflow:hidden;gap:16px;animation:none}.screen h1{font-size:clamp(1em,min(7vw,7dvh),2.6em)}.setup-section,.intro,.pagination-split{display:contents!important}.intro p{margin-top:0}.page-hidden{display:none!important}.roster-actions{display:flex;justify-content:space-between;gap:16px}.page-navigation{flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;padding-top:12px}.page-navigation .button{min-height:48px;font-size:.86em;padding:10px}.page-navigation>span{font-size:.75em;color:var(--muted);text-align:center}.page-navigation.single-page{display:none}.round-tools{flex-shrink:0;text-align:center}.round-tools:not(:has(>button:not(.hidden))){display:none}.named-card{width:100%;min-height:240px;border:2px solid var(--purple);background:var(--purple-light);border-radius:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:24px;padding:26px 20px;color:var(--ink);text-align:center}.named-card strong{font-size:clamp(1.35em,7vw,2.5em);line-height:1.15;letter-spacing:-.03em;overflow-wrap:anywhere}.named-card .tap-label{font-size:.85em;color:var(--purple);font-weight:650}.named-card:hover{box-shadow:inset 0 0 0 1px var(--purple)}#revealScreen .secret-card{animation:card-flip .22s ease-out}#guessScreen{gap:16px}#guessScreen .guess-symbol,#resultScreen .result-symbol{width:64px;height:64px;font-size:2.4em;margin:0}#guessScreen .word-sealed{padding:12px}#guessScreen .word-sealed>span{font-size:1.3em}#guessScreen .caught-names{font-size:1em}.order-list,.review-list,.accessibility-options{display:flex;flex-direction:column;gap:9px;width:100%}.order-row{display:flex;align-items:center;gap:12px;border:1.5px solid var(--line);border-radius:14px;padding:8px 10px;background:var(--surface);min-height:60px;text-align:left}.order-name{flex:1;min-width:0;overflow-wrap:anywhere;font-weight:650}.order-row button{flex-shrink:0;min-width:44px;min-height:44px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-size:1.1em}.review-player{width:100%;min-height:60px;text-align:left;justify-content:space-between}.access-row{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:62px;border-bottom:1px solid var(--line);padding:10px 0}.access-row>label,.access-row>span{font-size:.95em;font-weight:650}.access-row select{font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:12px;min-height:48px;max-width:55%;padding:7px}select:focus-visible{outline:3px solid var(--purple);outline-offset:3px}.secret-card.sneak{border-color:var(--purple)}button,input,select,summary{min-height:44px}.step,.badge,.count{white-space:normal}.button-row{gap:12px}.result-details p{flex-wrap:wrap}.mode-grid,.category-grid,.vote-grid{min-width:0;width:100%}.secret-card.pagination-split>.secret-word{align-self:center}.secret-card.pagination-split{display:contents}.toast{border:2px solid var(--purple);background:var(--ink);color:var(--paper)}.toast>button{color:var(--paper)}
@keyframes card-flip{from{transform:perspective(800px) rotateY(-75deg);opacity:.3}to{transform:perspective(800px) rotateY(0);opacity:1}}@media(max-height:600px){.app{padding:8px 14px}.app-header{margin-bottom:8px}.brand-mark{width:36px;height:36px;font-size:1.5em}.brand strong{font-size:.6em}.screen{gap:10px}.named-card,.secret-card{min-height:140px;padding:18px}.guess-symbol,.result-symbol{display:none!important}.page-navigation{padding-top:6px}.mode-grid,.category-grid,.vote-grid{grid-template-columns:1fr}}@media(forced-colors:active){button,input,select,.named-card,.secret-card,.mode-card,.category-card,.suspect-card{border:2px solid ButtonText}.active,.selected{outline:3px solid Highlight;outline-offset:-3px}.primary{background:ButtonFace;color:ButtonText}.page-navigation{border-top:1px solid CanvasText}}
@keyframes arrive{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(max-width:360px){.app{padding-left:16px;padding-right:16px}.category-grid,.vote-grid{grid-template-columns:1fr}.mode-card{padding:14px 12px}}

.page-empty{display:none!important}.text-fragment{display:block;overflow-wrap:anywhere}
.player-chip{cursor:grab;touch-action:pinch-zoom}.player-chip.dragging{opacity:.5}.player-chip.drag-target{outline:3px solid var(--purple);outline-offset:2px}.remove-player{cursor:pointer;touch-action:manipulation}.app{height:var(--viewport-height,100dvh);position:relative;top:var(--viewport-top,0px)}.compact-control{padding:6px!important;gap:6px!important;min-height:44px!important;min-width:0!important;overflow-wrap:anywhere}.named-card.compact-control{min-height:0!important}.named-card.compact-control .eyebrow,.named-card.compact-control .tap-label{display:none}.named-card.compact-control strong{font-size:1em}.mode-card.compact-control .mode-symbol{display:none}.mode-card.compact-control>span:last-child{display:none}.page-navigation{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}@media(max-width:340px){.brand>span:last-child{display:none}.brand-mark{font-size:26px}.app{padding-left:12px;padding-right:12px}.page-navigation .button{padding:6px;min-width:44px}.screen{gap:10px}.category-grid{grid-template-columns:1fr}}
@media(forced-colors:active){button,input,select,summary{color:ButtonText!important;background:ButtonFace!important;border-color:ButtonText!important}.secret-card,.named-card,.result-words{color:CanvasText;background:Canvas;border-color:CanvasText}.active,.selected{outline:3px solid Highlight}.page-navigation button:focus-visible{outline-color:Highlight}}
.remove-player{width:2.75rem;height:2.75rem;min-width:44px;min-height:44px;line-height:1}.player-chip.dragging{opacity:.25;border-style:dashed}.player-chip.drag-target{outline:3px dashed var(--purple);outline-offset:3px;background:var(--purple-light)}.drag-ghost{position:fixed;z-index:20;margin:0;pointer-events:none;opacity:1;background:var(--purple-light);border:2px solid var(--purple);box-shadow:0 10px 22px #29203940;transform:scale(1.04);transition:none}.drag-ghost .remove-player{visibility:hidden}
.control-description{display:contents}.compact-control{line-height:1.1}
.player-name{font:inherit;color:inherit;background:transparent;text-align:left;padding:0;overflow-wrap:anywhere;min-width:0;cursor:grab;touch-action:pinch-zoom}.player-move-menu{position:fixed;inset:auto;margin:0;width:min(18rem,calc(100vw - 16px));padding:8px;border:2px solid var(--purple);border-radius:16px;background:var(--surface);color:var(--ink);box-shadow:0 5px 0 var(--line);z-index:30}.player-move-menu>button{display:block;width:100%;padding:8px 12px;border-radius:8px;background:transparent;color:var(--purple);text-align:left;font:inherit}.player-move-menu>button:hover:not(:disabled){background:var(--purple-light)}.player-move-menu>button:disabled{color:var(--muted);opacity:.55}.player-move-menu>button:last-child{border-top:1px solid var(--line);border-radius:0;margin-top:4px}.player-move-menu[hidden]{display:none}

/* Keep the preferred cream/purple/yellow palette. OS text scaling, contrast,
   forced colors and reduced motion still apply throughout the game.
   Apple system body enables Dynamic Type in supporting WebKit environments. */
html{font-size:100%}@supports(font:-apple-system-body){html{font:-apple-system-body}}
:root{--primary-ink:#fff} .primary,.brand-mark,.toggle-button[aria-pressed=true],.segmented button.active,.selected .suspect-check{color:var(--primary-ink)}
@media(prefers-contrast:more){:root{--ink:#170d24;--muted:#45374f;--line:#7b6c86;--purple:#442281}button,input,select{border-width:2px}}
@media(prefers-reduced-transparency:reduce){.toast{box-shadow:none}}
@media(max-width:400px){.mode-grid,.vote-grid{grid-template-columns:1fr}}
.screen{padding:4px}.named-card{min-height:min(240px,35dvh);gap:18px}.named-card .eyebrow,.named-card .tap-label{flex-shrink:0}.named-card strong{font-size:1.8em}
@media(max-height:600px){.named-card .eyebrow,.named-card .tap-label{display:none}.named-card{min-height:0;padding:12px}.named-card strong{font-size:1.2em}}
.word-meaning{font-size:.9em;color:var(--muted);line-height:1.45;max-width:32ch;align-self:center}.decoy-group{width:100%}.decoy-group .word-meaning{margin:10px auto 0}
.round-tools .text-button{font-size:.9em;min-height:48px;padding:8px 16px;background:var(--surface);border:1px solid var(--line);border-radius:99px;text-decoration:none}

/* Compact setup branding. During a round, the player's card owns the space. */
.app{padding-top:max(8px,env(safe-area-inset-top))}
.app-header{margin-bottom:8px}.brand{min-height:44px}.brand-mark{width:32px;height:32px;border-radius:10px;font-size:1.3em;padding-bottom:2px}
#passScreen .named-card,#revealScreen .secret-card{flex-grow:1;flex-shrink:0}
.pagination-measuring .named-card,.pagination-measuring .secret-card{flex-grow:0!important}
#discussionScreen .first-speaker{display:grid;grid-template-columns:minmax(0,1fr);gap:4px 16px;padding:18px}
#discussionScreen .first-speaker>span,#discussionScreen .first-speaker>strong{grid-column:1}
#discussionScreen>.primary{margin-top:auto}
.round-tools{padding-top:8px}
@media(max-width:360px){#discussionScreen .first-speaker{gap:4px 10px;padding:14px}}

.sneak-choice{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;width:100%;border-top:1px solid var(--line)}.sneak-choice strong{font-weight:750}.sneak-choice .microcopy{margin-top:4px}.options-list{display:flex;flex-direction:column;gap:0;width:100%}#optionsScreen .option-row{padding:18px 0;width:100%}#optionsScreen .option-row:first-child{border-top:0}#moreOptionsBtn>span{margin-left:auto}

/* Card hues follow the player, keeping covered cards independent of secret roles. */
.named-card[data-card-tone=lavender],.secret-card[data-card-tone=lavender]{background:#eee8fb}
.named-card[data-card-tone=butter],.secret-card[data-card-tone=butter]{background:#fff1c7}
.named-card[data-card-tone=peach],.secret-card[data-card-tone=peach]{background:#f8e4d8}
.named-card[data-card-tone=sage],.secret-card[data-card-tone=sage]{background:#e5efe3}
@media(forced-colors:active){.named-card[data-card-tone],.secret-card[data-card-tone]{background:Canvas}}

/* Raised controls reserve their bottom edge in normal layout, including measurement. */
:is(.button,.category-card,.mode-card,.suspect-card,.toggle-button,.segmented button,.round-tools .text-button){--button-edge:var(--line);border:2px solid var(--line);margin-bottom:4px;box-shadow:0 4px 0 var(--button-edge);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}
.button.primary,.category-card.active,.mode-card.active,.suspect-card.selected,.toggle-button[aria-pressed=true],.segmented button.active{border-color:var(--purple);--button-edge:#392064}
:is(.button,.category-card,.mode-card,.suspect-card,.toggle-button,.segmented button,.round-tools .text-button):active:not(:disabled){transform:translateY(2px);box-shadow:0 2px 0 var(--button-edge)}

/* An inset frame and a soft cast give both sides of a player's card the same finish. */
.named-card,.named-card:hover,.secret-card{border:2px solid var(--purple);margin-bottom:6px;box-shadow:inset 0 0 0 4px var(--surface),inset 0 0 0 6px var(--purple),0 3px 4px -2px #56369b36}
.named-card:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 0 0 4px var(--surface),inset 0 0 0 6px var(--purple),0 1px 4px -2px #56369b36}
@media(prefers-reduced-motion:reduce){:is(.button,.category-card,.mode-card,.suspect-card,.toggle-button,.segmented button,.round-tools .text-button,.named-card):active:not(:disabled){transform:none}}
@media(forced-colors:active){:is(.button,.category-card,.mode-card,.suspect-card,.toggle-button,.segmented button,.round-tools .text-button,.named-card,.secret-card){box-shadow:none;border-color:ButtonText}}

/* Rooms use the same named, pageable controls as the shared-phone game. */
.room-people{display:flex;flex-direction:column;gap:12px}.room-link{overflow-wrap:anywhere;min-height:44px;padding:8px 0}.round-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.room-people>.button,.room-people>p{width:100%}#joinRoomCode{text-transform:uppercase;letter-spacing:.12em}.suspect-card{overflow-wrap:anywhere}.toast{flex-wrap:wrap}#undoRosterBtn{font-weight:750;color:var(--purple)}

.named-card:disabled{opacity:1;cursor:default}

.phones-shortcut{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:0;min-width:0;min-height:44px;padding:5px 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--purple);font-size:.78em;font-weight:700;text-align:right;overflow-wrap:anywhere}.phones-shortcut small{font-size:.82em;font-weight:500;color:var(--muted)}.join-help{width:100%;color:var(--muted);font-size:.9em}.join-help>p,.join-help>label,.join-help>input,.join-help>button,.join-help>a{margin-top:12px}.join-help>label{display:block}

/* Give the welcome screen room to breathe on larger displays. */
@media (min-width:64rem) and (min-height:40rem) {
  .app:has(#entryScreen:not(.hidden)) { max-width:52rem; }
  #entryScreen { justify-content:safe center; gap:1.25rem; }
}

/* A focused field stays rendered while other pagination candidates are measured.
   Fixed positioning removes its hidden measurement branch from normal flow. */
.pagination-measuring .pagination-focus-held:is(.page-hidden,.page-empty){display:block!important;position:fixed!important;inset:0 auto auto 0!important;opacity:0!important;pointer-events:none!important}
