:root{--font-sans: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", "WenQuanYi Zen Hei", sans-serif;--shell: #fff;--canvas: #ecebe7;--paper: #fff;--card: #fff;--soft: #f2f0ea;--soft-2: #e9e6de;--ink: #1a1f1c;--ink-2: #414a44;--muted: #6f7872;--faint: #a2a9a4;--line: #e3e0d8;--line-strong: #d2cec4;--theme: #2c6a4e;--theme-hover: #235a41;--theme-ink: #24583f;--theme-wash: #e8f1ec;--theme-line: #bcd7c7;--on-theme: #fff;--good: var(--theme);--good-ink: var(--theme-ink);--good-wash: var(--theme-wash);--good-line: var(--theme-line);--danger: #b03c34;--danger-ink: #8f2e27;--danger-wash: #fbeeec;--danger-line: #ebc2bc;--on-danger: #fff;--wolf-seat: #fbe3e0;--self: #3a63a5;--self-ink: #2a4e8a;--self-wash: #edf3fd;--self-line: #7d9fd8;--on-self: #fff;--target: #b8780e;--target-ink: #7a4f05;--target-wash: #fff4da;--target-line: #d49a29;--on-target: #fff;--magic: #74569c;--magic-ink: #5d4285;--magic-wash: #f4eefb;--magic-line: #cfbde6;--god: #a9802d;--god-ink: #896a2e;--god-wash: #fff5de;--god-line: #e6cf9c;--dead: #59616b;--dead-wash: #e8eaec;--dead-wash-2: #dfe2e6;--dead-line: #aab1b9;--moon: #efe8d4;--backdrop: rgb(16 20 18 / .44);--shadow-xs: 0 1px 2px rgb(26 31 28 / .06);--shadow-sm: 0 1px 2px rgb(26 31 28 / .05), 0 6px 16px -8px rgb(26 31 28 / .16);--shadow-md: 0 2px 6px -2px rgb(26 31 28 / .08), 0 18px 40px -16px rgb(26 31 28 / .24);--shadow-lg: 0 40px 90px -30px rgb(14 20 16 / .5), 0 8px 24px -12px rgb(14 20 16 / .18);--shadow-theme: 0 10px 22px -12px rgb(28 74 52 / .7);--ring: 0 0 0 3px rgb(44 106 78 / .2);--disc: 40px;--ease: cubic-bezier(.2, .7, .2, 1);font-family:var(--font-sans);color:var(--ink);background:var(--shell);font-synthesis:none;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{overflow:hidden}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer;color:inherit;border:0;background:none;transition:background-color .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease)}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible{outline:2px solid var(--theme);outline-offset:3px}input:focus,select:focus{outline:none;border-color:var(--theme)!important;box-shadow:var(--ring)}h1,h2,h3,p{margin:0}svg{flex-shrink:0;vertical-align:middle}:where(svg.lucide[stroke-width="2"]){stroke-width:1.75}a{color:var(--theme-ink);text-decoration:none}::selection{background:#2c6a4e33}.app-shell{height:100dvh;max-width:880px;margin:0 auto;display:flex;flex-direction:column;background:var(--shell);position:relative}.app-header{height:64px;min-height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line);background:var(--shell)}.brand{display:flex;align-items:center;gap:11px;padding:0}.brand-mark{display:block;flex-shrink:0;width:36px;height:36px;border-radius:12px;overflow:hidden;background:linear-gradient(150deg,#357a59,#1f4d39 55%,#112a1f);box-shadow:var(--shadow-theme)}.brand-mark img{display:block;width:100%;height:100%}.brand strong{font-size:23px;font-weight:700;letter-spacing:4px;color:var(--ink)}.header-actions{display:flex;align-items:center;gap:8px}.icon-button{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:50%;color:var(--muted)}@media(hover:hover){.icon-button:hover{background:var(--soft-2);color:var(--ink)}}.icon-button.enabled{background:var(--theme-wash);color:var(--theme-ink)}.profile-button{width:34px;height:34px;border-radius:50%;background:linear-gradient(150deg,#3a7d5d,#1f4b37);color:var(--moon);font-size:15px;font-weight:700;margin-left:3px;box-shadow:var(--shadow-sm)}@media(hover:hover){.profile-button:hover{box-shadow:var(--ring)}}.main-content{flex:1;min-height:0;padding:28px 32px max(20px,env(safe-area-inset-bottom));overflow:hidden}.home-page,.room-page,.roles-page,.rules-page{display:flex;flex-direction:column;height:100%;min-height:0;gap:18px}.eyebrow{display:block;font:600 11px/1.5 var(--font-sans);letter-spacing:.18em;color:var(--theme-ink);margin-bottom:8px}.page-intro{flex-shrink:0}.page-intro h1{font-size:30px;line-height:1.35;font-weight:700;letter-spacing:.03em;color:var(--ink)}.page-intro h1>span{color:var(--theme-ink)}.page-intro p{font-size:13px;color:var(--muted);margin-top:8px;line-height:1.6}.section-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px;flex-shrink:0}.section-label h2{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--ink)}.section-label h2:before{content:"";width:4px;height:14px;border-radius:2px;background:var(--theme)}.section-label>span{font-size:11px;color:var(--muted);padding:2px 10px;border-radius:999px;background:var(--soft-2);font-variant-numeric:tabular-nums}.home-buttons,.lobby-actions,.action-buttons{display:flex;gap:10px}.home-buttons>*{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border-radius:999px;border:1px solid transparent;font-size:15px;font-weight:600;letter-spacing:.04em;white-space:nowrap}.btn:disabled{box-shadow:none}.btn.primary{background:var(--theme);border-color:var(--theme);color:var(--on-theme)}.btn.primary:hover:not(:disabled){background:var(--theme-hover);border-color:var(--theme-hover)}.btn.primary:disabled{background:var(--soft-2);border-color:var(--soft-2);color:var(--muted);opacity:1}.btn.secondary{background:var(--card);border-color:var(--line-strong);color:var(--ink)}.btn.secondary:hover:not(:disabled){background:var(--soft);border-color:var(--faint)}.btn.secondary:active:not(:disabled){background:var(--soft-2)}.full{width:100%}.room-page{gap:12px}.room-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-shrink:0}.room-summary h1{font-size:22px;font-weight:700;letter-spacing:.03em;line-height:1.3;max-width:550px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.room-summary p{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);margin-top:6px}.room-code{letter-spacing:.12em;font:600 11px/1.4 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink-2);padding:1px 8px 1px 9px;border-radius:999px;background:var(--soft-2)}.connection-dot{width:7px;height:7px;border-radius:50%;background:var(--good)}.connection-dot.offline{background:var(--target)}.invite-button{display:flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:600;border:1px solid var(--line-strong);border-radius:999px;padding:10px 14px;color:var(--ink);background:var(--card);flex-shrink:0;min-height:40px}.invite-button svg{color:var(--theme-ink)}@media(hover:hover){.invite-button:hover{border-color:var(--theme-line);background:var(--theme-wash)}}.phase-strip{position:relative;overflow:hidden;display:flex;align-items:center;gap:13px;background:linear-gradient(120deg,var(--theme-wash),var(--card) 80%);border:1px solid var(--theme-line);border-radius:18px;padding:13px 15px;flex-shrink:0;min-height:66px}.phase-strip.your-turn{border-color:var(--theme);background:linear-gradient(120deg,color-mix(in srgb,var(--theme) 16%,var(--card)),var(--card) 85%)}.phase-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:var(--theme-ink);background:var(--card);box-shadow:var(--shadow-xs);flex-shrink:0}.phase-icon>svg{width:20px;height:20px}.phase-strip h2{font-size:18px;display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.04em;line-height:1.3;color:var(--ink)}.phase-strip h2 small{font-size:10px;color:var(--theme-ink);font-weight:600;background:var(--card);border-radius:999px;padding:2px 9px;white-space:nowrap;letter-spacing:.04em}.phase-strip p{font-size:11px;color:var(--ink-2);margin-top:5px;line-height:1.5}.phase-strip>div{flex:1;min-width:0}.ready-count{font:700 24px/1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--theme-ink);white-space:nowrap}.ready-count small{font-size:10px;font-weight:500;margin-left:2px;color:var(--muted)}.seat-grid{--disc: 40px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:10px;flex:1;min-height:0}.seat-grid.count-6{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.seat-grid.count-9{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}.seat{--disc-bg: var(--soft-2);--disc-ink: var(--ink-2);border:1px dashed var(--line-strong);border-radius:16px;background:transparent;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px;min-height:0;min-width:0;gap:4px;color:var(--ink)}.seat:disabled{opacity:1}.seat.occupied{background:var(--card);border-style:solid;border-color:var(--line);box-shadow:var(--shadow-xs)}.seat.my-seat{background:var(--self-wash);border-color:var(--self-line)}.seat.chosen{border:2px solid var(--target-line);background:var(--target-wash);padding:9px}@media(hover:hover){.seat.actionable:hover{border-color:var(--target-line);box-shadow:var(--shadow-sm)}}.seat.dead{background:var(--dead-wash);border-color:var(--dead-line);color:var(--dead)}.seat.dead .seat-avatar,.seat.dead .seat-name{opacity:.45}.seat-top{display:flex;align-items:center;justify-content:space-between;width:100%;height:17px;flex-shrink:0;color:var(--ink)}.seat-top>strong{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.seat-top small{font-size:9px;font-weight:400;margin-left:2px;color:var(--muted)}.seat-top>svg{color:var(--target)}.mine-label{font-size:9px;font-weight:700;line-height:1.3;padding:1px 6px;border-radius:999px;background:var(--self);color:var(--on-self)}.seat-avatar{display:grid;place-items:center;flex:1;min-height:0;max-height:58px;width:100%;color:var(--faint);container-type:size}.seat-avatar svg{max-height:100%;width:24px;height:24px;stroke-width:1.5}.seat-avatar[data-initial]:before{content:attr(data-initial);display:grid;place-items:center;width:min(var(--disc),100cqh,76cqw);aspect-ratio:1;border-radius:50%;background:var(--disc-bg);color:var(--disc-ink);font:700 min(17px,44cqh)/1 var(--font-sans);overflow:hidden}.my-seat{--disc-bg: var(--self);--disc-ink: var(--on-self)}.seat-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:var(--ink);line-height:1.3;flex-shrink:0}.seat-state{font-size:9px;color:var(--muted);flex-shrink:0;line-height:1.3}.target-check{position:absolute;left:6px;bottom:6px;color:var(--target);pointer-events:none}.wolf-vote-badge{position:absolute;top:8px;right:6px;display:block;background:var(--danger);color:#fff;border-radius:999px;padding:1px 5px;font-size:9px;font-weight:700;font-variant-numeric:tabular-nums}.wolf-team{background:var(--card);border:1px solid var(--line);padding:9px 11px;border-radius:16px;flex-shrink:0}.wolf-team-title{display:flex;align-items:center;gap:6px;color:var(--ink);font-size:12px;font-weight:600;letter-spacing:.04em}.wolf-team-title>svg{color:var(--danger)}.wolf-team-title small{font-size:10px;font-weight:400;color:var(--muted);margin-left:auto;letter-spacing:0}.wolf-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:8px}.wolf-choices>span{display:flex;align-items:center;justify-content:center;gap:3px;background:var(--soft-2);color:var(--ink-2);border-radius:999px;font-size:9px;padding:6px 2px;white-space:nowrap}.wolf-choices>span.confirmed{background:var(--danger-wash);color:var(--danger-ink);font-weight:600}.wolf-choices strong{font-weight:700}.choice-dot{width:4px;height:4px;border-radius:50%;background:var(--faint)}.room-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;min-height:36px;padding:2px 14px;border:1px solid var(--line);border-radius:999px;background:var(--card)}.room-tools button,.room-tools>span{display:flex;align-items:center;gap:5px;color:var(--ink-2);font-size:12px;font-weight:500;min-height:27px;padding:2px 0}.room-tools svg{color:var(--theme-ink)}.room-tools button:hover{color:var(--ink)}.room-action-bar{flex-shrink:0;min-height:46px}.lobby-actions>.btn{flex:1}.waiting-label{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--card);border-radius:16px;min-height:46px;padding:10px;color:var(--ink-2);font-size:12px;line-height:1.5}.waiting-label>svg{color:var(--theme-ink)}.action-buttons>.primary{flex:1}.action-buttons>.secondary{min-width:86px}.narration-controls{display:flex;align-items:center;gap:12px}.narration-controls>.btn{flex:1;font-size:13px;padding:0 8px}.text-button{font-size:12px;font-weight:600;color:var(--theme-ink);padding:8px 0;white-space:nowrap}.text-button:hover{color:var(--theme-hover)}.witch-controls{border:1px solid var(--line);background:var(--card);border-radius:16px;padding:9px 12px;flex-shrink:0}.witch-controls p{font-size:12px;color:var(--ink-2);margin-bottom:7px}.potion-options{display:flex;gap:8px}.potion-options>button{--tone: var(--theme);--tone-ink: var(--theme-ink);--tone-wash: var(--theme-wash);display:flex;align-items:center;justify-content:center;gap:5px;flex:1;border:1px solid var(--line-strong);border-radius:999px;background:var(--card);color:var(--ink-2);font-size:12px;font-weight:600;min-height:36px}.potion-options>button>svg{color:var(--tone-ink)}.potion-options>button.selected{border:2px solid var(--tone-ink);background:var(--tone-wash);color:var(--tone-ink)}.role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:15px;flex:1;min-height:0}.role-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--role-accent, currentColor) 28%,var(--card));border-radius:18px;gap:10px;min-height:0;padding:15px;background:var(--role-wash, var(--card));color:var(--role-ink, currentColor)}@media(hover:hover){.role-card:not(:disabled):not(.thief-card):hover{box-shadow:var(--shadow-sm);border-color:color-mix(in srgb,var(--role-accent, currentColor) 55%,var(--card))}}.role-card-icon{display:grid;place-items:center;flex:0 0 auto;width:46px;height:46px;border-radius:50%;color:var(--role-ink, currentColor);background:color-mix(in srgb,var(--role-accent, currentColor) 16%,var(--card))}.role-card-icon>svg{width:24px;height:24px}.role-card h3{font-size:18px;line-height:1.3;font-weight:700;letter-spacing:.08em;color:var(--role-ink, inherit)}.role-card small{font-size:10px;color:var(--muted);letter-spacing:.04em}.role-arrow{position:absolute;right:12px;top:12px;color:var(--role-accent, currentColor)}.rose,.violet,.sage,.sand,.blue,.stone{background:var(--role-wash);color:var(--role-accent)}.rule-list{border:1px solid var(--line);border-radius:18px;overflow:auto;min-height:0;flex-shrink:1;background:var(--card)}.rule-item+.rule-item{border-top:1px solid var(--line)}.rule-item>button{display:flex;align-items:center;gap:15px;width:100%;text-align:left;padding:18px;background:var(--card)}.rule-item>button>span{font-size:15px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;color:var(--theme-ink);min-width:24px}.rule-item strong{font-size:16px;font-weight:700;letter-spacing:.04em;color:var(--ink);flex:1}.rule-item>button>svg{color:var(--faint);transition:transform .2s var(--ease)}.rule-item.expanded>button>svg{transform:rotate(180deg);color:var(--theme-ink)}.rule-item.expanded>button{background:var(--soft)}.rule-item p{padding:0 18px 19px 57px;font-size:13px;line-height:1.9;color:var(--ink-2);background:var(--soft)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:22px;background:var(--backdrop);backdrop-filter:blur(8px) saturate(1.1);-webkit-backdrop-filter:blur(8px) saturate(1.1)}.modal{position:relative;max-width:450px;width:100%;background:var(--paper);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow-lg);padding:30px;max-height:calc(100dvh - 44px);overflow:auto;color:var(--ink);scrollbar-width:thin}.modal-close{position:absolute;top:14px;right:14px;color:var(--muted);background:var(--soft);z-index:1}.modal h2{font-size:24px;line-height:1.4;font-weight:700;letter-spacing:.04em;padding-right:10px;color:var(--ink)}.modal .eyebrow{padding-right:16px}.modal-description{font-size:13px;color:var(--muted);line-height:1.8;margin:8px 0 20px}.field{display:block;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--ink-2);margin-top:15px}.field input:not([type=range]),.invite-input{width:100%;display:block;margin-top:8px;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:11px 14px;font-size:15px;color:var(--ink);min-height:46px;transition:border-color .18s var(--ease),box-shadow .18s var(--ease),background-color .18s var(--ease)}.field input:not([type=range]):focus,.invite-input:focus{background:var(--card)}.field input::placeholder{color:var(--faint)}.field input[type=range]{display:block;width:100%;accent-color:var(--theme);margin:12px 0 22px}fieldset{padding:0;border:0;margin:16px 0 0}legend{font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:8px;padding:0}.mode-select{display:flex;gap:9px}.mode-select>button{flex:1;display:flex;align-items:center;gap:9px;padding:12px;border-radius:16px;border:1px solid var(--line-strong);background:var(--card);color:var(--ink);text-align:left;font-size:13px;font-weight:600}.mode-select>button>svg{color:var(--theme-ink)}.mode-select>.selected{border-color:var(--theme);background:var(--theme-wash);color:var(--theme-ink)}.mode-select small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:4px}.form-submit{margin-top:22px}.form-error{padding:10px 13px;border-radius:14px;background:var(--danger-wash);color:var(--danger-ink);font-size:12px;line-height:1.6;margin-top:12px}.modal-note{font-size:11px;line-height:1.85;color:var(--muted);margin-top:20px}.separated{margin-top:10px}.identity-card{position:relative;overflow:hidden;isolation:isolate;width:100%;height:190px;border:1px solid #1d4432;border-radius:22px;background:radial-gradient(90% 70% at 50% 40%,#2f6a4f,#1c4633 58%,#112c20);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;margin:20px 0;color:var(--moon);box-shadow:var(--shadow-md)}.identity-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 18% 22%,rgb(255 255 255 / .5) 0 1px,transparent 1.5px),radial-gradient(circle at 78% 30%,rgb(255 255 255 / .45) 0 1px,transparent 1.5px),radial-gradient(circle at 64% 78%,rgb(255 255 255 / .35) 0 1px,transparent 1.5px),radial-gradient(circle at 30% 70%,rgb(255 255 255 / .3) 0 1px,transparent 1.5px);pointer-events:none;z-index:-1}.identity-card-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#ffffff1a}.identity-card-icon>svg{width:28px;height:28px}.identity-card strong{font-size:26px;font-weight:700;letter-spacing:.12em;color:#fbfaf4}.identity-card small{font-size:12px;letter-spacing:.08em;color:#efe8d4c7}.identity-card-camp{font-style:normal;font-size:11px;font-weight:600;letter-spacing:.1em;padding:2px 10px;border-radius:999px;color:var(--role-ink, var(--moon));background:color-mix(in srgb,var(--role-accent, #ffffff) 18%,transparent);margin-top:-4px}.identity-team,.hidden-wolf-team,.identity-intel,.identity-skill-hint,.narration-text,.identity-memo,.board-role-counts{background:var(--soft);border-radius:14px;color:var(--ink-2)}.identity-team{font-size:12px;line-height:1.8;text-align:left;margin:10px 0;padding:10px 13px}.identity-intel{font-size:12px;line-height:1.8;padding:10px 13px;margin:10px 0 20px;max-height:180px;overflow:auto}.narration-text{font-size:18px;line-height:2;color:var(--ink);padding:20px;margin:20px 0}.help-list{padding-left:22px;color:var(--ink);margin:23px 0}.help-list li{padding-left:6px;margin-bottom:17px;font-size:15px}.help-list li::marker{color:var(--theme-ink);font-weight:600;font-size:14px}.help-list strong{font-weight:700;color:var(--ink)}.help-list p{font-size:12px;line-height:1.8;color:var(--muted);margin-top:6px}.role-detail-icon{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;margin-bottom:23px;color:var(--role-ink);background:color-mix(in srgb,var(--role-accent) 18%,var(--paper))}.role-description{font-size:14px;line-height:2;color:var(--ink-2);margin:17px 0 26px}.result-backdrop{z-index:70}.toast{position:fixed;bottom:90px;left:50%;transform:translate(-50%);padding:12px 18px;border-radius:999px;background:#181e1bf0;box-shadow:0 18px 40px -16px #0a0e0c99;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:90;display:flex;align-items:center;gap:9px;font-size:13px;font-weight:500;line-height:1.6;color:#f1f4f2;max-width:calc(100vw - 36px);width:max-content}.toast svg{color:#8fd0ad}.modal:is(.seer-result,.hunter-status,.gargoyle-night-status,.mechanical-night-status,.thief-choice,.gun-prompt,.last-words-prompt){text-align:center}.modal:is(.result-good,.gargoyle-without-knife,.hunter-status-unknown),.moderator-feedback.tone-good{--tone: var(--good);--tone-ink: var(--good-ink);--tone-wash: var(--good-wash);--tone-line: var(--good-line);--tone-panel: #f1f8f3;--tone-button: var(--theme);--tone-button-hover: var(--theme-hover);--tone-icon: var(--card)}.modal:is(.result-wolf,.gargoyle-with-knife,.hunter-status-blocked),.moderator-feedback.tone-wolf{--tone: var(--danger);--tone-ink: var(--danger-ink);--tone-wash: var(--danger-wash);--tone-line: var(--danger-line);--tone-panel: #fdf1ef;--tone-button: #b03c34;--tone-button-hover: #973028;--tone-icon: var(--card)}.modal.result-special,.moderator-feedback.tone-special{--tone: var(--magic);--tone-ink: var(--magic-ink);--tone-wash: var(--magic-wash);--tone-line: var(--magic-line);--tone-panel: #eee5f7;--tone-button: #74569c;--tone-button-hover: #634685;--tone-icon: var(--card)}.modal.result-empty,.moderator-feedback.tone-empty{--tone: #6b6b6b;--tone-ink: #4d4d4d;--tone-wash: #e9e9e9;--tone-line: #cfcfcf;--tone-panel: #f4f4f4;--tone-button: #666;--tone-button-hover: #555;--tone-icon: #fff}.sky-night :is(.modal:is(.result-good,.gargoyle-without-knife,.hunter-status-unknown),.moderator-feedback.tone-good){--tone-panel: #17291f;--tone-icon: var(--tone-wash)}.sky-night :is(.modal:is(.result-wolf,.gargoyle-with-knife,.hunter-status-blocked),.moderator-feedback.tone-wolf){--tone-panel: #3a2021;--tone-button: #8a3a34;--tone-button-hover: #9c433c;--tone-icon: var(--tone-wash)}.sky-night :is(.modal.result-special,.moderator-feedback.tone-special){--tone-panel: #35283f;--tone-line: #7f669a;--tone-button: #73518e;--tone-button-hover: #8560a1;--tone-icon: var(--tone-wash)}.sky-night :is(.modal.result-empty,.moderator-feedback.tone-empty){--tone: #d0d0d0;--tone-ink: #e0e0e0;--tone-wash: #3a3a3a;--tone-line: #565656;--tone-panel: #2a2a2a;--tone-button: #5a5a5a;--tone-button-hover: #666;--tone-icon: #333}.modal:is(.result-good,.result-wolf,.result-special,.result-empty,.gargoyle-with-knife,.gargoyle-without-knife,.hunter-status-blocked,.hunter-status-unknown){background-color:var(--tone-panel);background-image:radial-gradient(120% 60% at 50% 0%,color-mix(in srgb,var(--tone) 10%,transparent),transparent 62%);border-color:var(--tone-line)}.modal:is(.result-good,.result-wolf,.result-special,.result-empty,.gargoyle-with-knife,.gargoyle-without-knife,.hunter-status-blocked,.hunter-status-unknown) :is(h2,.eyebrow){color:var(--tone-ink)}.modal:is(.result-good,.result-wolf,.result-special,.result-empty,.gargoyle-with-knife,.gargoyle-without-knife,.hunter-status-blocked,.hunter-status-unknown) .btn.primary:not(:disabled){background:var(--tone-button);border-color:var(--tone-button);color:#fff}.modal:is(.result-good,.result-wolf,.result-special,.result-empty,.gargoyle-with-knife,.gargoyle-without-knife,.hunter-status-blocked,.hunter-status-unknown) .btn.primary:hover:not(:disabled){background:var(--tone-button-hover);border-color:var(--tone-button-hover)}.result-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 18px;border-radius:50%;border:1px solid var(--tone-line, var(--theme-line));background:var(--tone-icon, var(--theme-wash));color:var(--tone, var(--theme))}.result-icon>svg{width:26px;height:26px;stroke-width:1.6}.result-target{font-size:14px;color:var(--muted);margin:10px 0 0}:is(.result-alignment,.gargoyle-status-summary,.hunter-status-summary){display:block;margin:14px 0 16px;font-size:42px;font-weight:800;line-height:1.25;letter-spacing:.1em;color:var(--tone-ink, var(--ink))}.hunter-status-summary{white-space:nowrap}:is(.gargoyle-status-message,.hunter-status-message,.hunter-status-note){margin:0 0 12px;padding:0;font-size:13px;line-height:1.75;color:var(--ink-2);overflow-wrap:anywhere}.hunter-status-note{font-size:12px;color:var(--muted)}h2+:is(.hunter-status-message,.gargoyle-status-message){margin-top:12px}.mechanical-copy-label{display:table;margin:8px auto 12px;padding:3px 12px;border-radius:999px;background:var(--tone-wash, var(--soft-2));color:var(--tone-ink, var(--ink));font-size:12px;font-weight:600}.hidden-wolf-team{margin:0 0 14px;padding:10px 13px;font-size:12px;line-height:1.8}.modal:is(.seer-result,.hunter-status,.gargoyle-night-status,.mechanical-night-status,.thief-choice,.gun-prompt,.last-words-prompt) h2{padding:0;font-size:21px}.modal:is(.seer-result,.hunter-status,.gargoyle-night-status,.mechanical-night-status,.thief-choice,.gun-prompt,.last-words-prompt) .eyebrow{padding:0}.modal:is(.seer-result,.hunter-status,.gargoyle-night-status,.mechanical-night-status,.gun-prompt,.last-words-prompt) .modal-description{font-size:12px;margin:0 0 14px}.gun-prompt :is(.field,.action-buttons),.last-words-prompt .action-buttons{text-align:left}.thief-choice .modal-description{margin:8px 0 16px}@media(min-width:1000px){:root:not([data-sky=night]){background:var(--canvas)}.app-shell{height:calc(100dvh - 40px);margin:20px auto;border:1px solid var(--line);border-radius:30px;overflow:hidden;box-shadow:0 50px 120px -60px #1a1f1c73}.main-content{padding-left:42px;padding-right:42px}.home-page{gap:20px}.page-intro h1{font-size:32px}.seat-grid{--disc: 46px}.seat-name{font-size:13px}.seat-state{font-size:10px}.role-grid{max-height:580px}.room-page{gap:12px}}@media(max-width:600px){.app-header{height:54px;min-height:54px;padding:0 18px}.brand{gap:9px}.brand-mark{width:32px;height:32px;border-radius:11px}.brand strong{font-size:21px}.header-actions{gap:5px}.main-content{padding:18px 18px max(13px,env(safe-area-inset-bottom))}.home-page,.roles-page,.rules-page{gap:15px}.eyebrow{font-size:10px;margin-bottom:7px}.page-intro h1{font-size:26px}.page-intro p{font-size:12px;margin-top:5px}.section-label{margin:0}.section-label h2{font-size:14px}.section-label>span{font-size:10px}.btn{min-height:44px;padding:0 16px;font-size:14px;gap:7px}.home-buttons{gap:9px}.room-page{gap:10px}.room-summary h1{font-size:19px;max-width:240px}.room-summary p{font-size:10px;margin-top:5px;gap:6px}.room-code{font-size:10px}.invite-button{font-size:12px;min-height:36px;padding:8px 12px}.phase-strip{gap:10px;padding:10px 12px;min-height:61px;border-radius:16px}.phase-strip h2{font-size:16px;gap:6px}.phase-strip h2 small{font-size:9px}.phase-strip p{font-size:10px;line-height:1.45;margin-top:4px}.phase-icon{width:34px;height:34px}.phase-icon>svg{width:18px;height:18px}.ready-count{font-size:20px}.ready-count small{font-size:9px}.seat-grid{--disc: 36px;gap:8px}.seat{border-radius:14px;padding:8px 7px;gap:4px}.seat.chosen{padding:7px 6px}.seat-top{height:15px}.seat-top>strong{font-size:14px}.seat-top small{font-size:8px}.mine-label{font-size:8px;padding:1px 5px}.seat-avatar{max-height:45px}.seat-avatar svg{width:22px;height:22px}.seat-name{font-size:11px}.seat-state{font-size:8px}.wolf-vote-badge{top:6px;right:5px;font-size:8px;padding:1px 4px}.room-tools{min-height:34px;padding:2px 12px;gap:8px}.room-tools button,.room-tools>span{font-size:11px;gap:4px;min-height:25px}.room-action-bar{min-height:44px}.wolf-team{padding:8px 9px;border-radius:14px}.wolf-team-title{font-size:11px}.wolf-team-title small{font-size:9px}.wolf-choices{margin-top:7px;gap:4px}.wolf-choices>span{font-size:8px;gap:2px;padding:5px 1px}.waiting-label{font-size:11px;min-height:44px;padding:9px 8px;gap:7px}.narration-controls{gap:9px}.narration-controls>.btn{font-size:12px}.text-button{font-size:11px}.witch-controls{padding:8px 10px}.witch-controls p{font-size:11px;margin-bottom:6px}.potion-options{gap:6px}.potion-options>button{min-height:32px;font-size:11px}.role-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:12px}.role-card{gap:9px;padding:13px;border-radius:16px}.role-card-icon{width:42px;height:42px}.role-card-icon>svg{width:22px;height:22px}.role-card h3{font-size:18px}.role-card small{font-size:10px}.rule-item>button{padding:15px 14px;gap:12px}.rule-item>button>span{font-size:14px}.rule-item strong{font-size:15px}.rule-item p{font-size:12px;line-height:1.9;padding:0 16px 15px 50px}.modal-backdrop{padding:16px}.modal{padding:26px 22px;max-height:calc(100dvh - 32px);border-radius:24px}.modal h2{font-size:22px}.modal-close{top:12px;right:12px}.modal-description{font-size:12px;margin:7px 0 15px}.field{font-size:12px;margin-top:13px}.field input:not([type=range]){font-size:15px;min-height:44px;padding:9px 12px;margin-top:6px}fieldset{margin-top:13px}legend{font-size:12px;margin-bottom:7px}.mode-select>button{padding:10px 9px;gap:7px;font-size:12px}.mode-select small{font-size:9px;margin-top:3px}.form-submit{margin-top:18px}.modal-note{font-size:10px;margin-top:16px}.identity-card{height:184px;gap:10px;margin:17px 0}.identity-card-icon{width:46px;height:46px}.identity-card-icon>svg{width:24px;height:24px}.identity-card strong{font-size:24px}.identity-card small,.identity-intel{font-size:11px}.narration-text{font-size:17px;padding:17px;margin:18px 0}.role-description{font-size:13px}.toast{bottom:83px;font-size:12px;padding:11px 16px}}@media(max-height:730px){.main-content{padding-top:13px;padding-bottom:max(10px,env(safe-area-inset-bottom))}.home-page,.roles-page,.rules-page{gap:12px}.page-intro h1{font-size:24px}.room-page{gap:8px}.room-summary h1{font-size:18px}.phase-strip{padding:9px 11px;min-height:55px}.phase-strip h2{font-size:15px}.phase-strip p{font-size:10px;margin-top:3px}.seat-grid{--disc: 30px;gap:6px}.seat{padding:6px;gap:3px}.seat.chosen{padding:5px}.seat-avatar svg{width:18px;height:18px}.seat-top{height:14px}.seat-top>strong{font-size:13px}.seat-name{font-size:10px}.seat-state{font-size:8px}.room-tools{min-height:30px;padding:1px 12px}.room-tools button,.room-tools>span{min-height:23px}.wolf-team{padding:6px 8px}.wolf-choices{margin-top:5px}.wolf-choices>span{padding:4px 1px}.role-card{gap:7px}.role-card h3{font-size:16px}.rule-item>button{padding-top:13px;padding-bottom:13px}:is(.modal-create,.modal-configure){padding-top:22px;padding-bottom:20px}:is(.modal-create,.modal-configure) .modal-description{margin-bottom:9px}:is(.modal-create,.modal-configure) .field{margin-top:10px}:is(.modal-create,.modal-configure) fieldset{margin-top:11px}:is(.modal-create,.modal-configure) .form-submit{margin-top:15px}}@media(max-height:620px){.page-intro .eyebrow{display:none}.main-content{padding-top:10px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.home-page{gap:10px}.room-page{gap:6px}.seat-avatar{display:none}.seat{gap:3px}.phase-strip{min-height:48px;padding:7px 10px}.phase-icon{width:28px;height:28px}.phase-icon>svg{width:16px;height:16px}.room-summary h1{font-size:17px}.room-summary p{margin-top:4px}.room-tools button,.room-tools>span{min-height:20px}.wolf-team-title small{font-size:8px}.role-grid{gap:8px}.role-card-icon{width:34px;height:34px}.role-card-icon>svg{width:18px;height:18px}:is(.modal-create,.modal-configure) .eyebrow{display:none}:is(.modal-create,.modal-configure) .modal-description{display:none}:is(.modal-create,.modal-configure) .field{margin-top:9px}:is(.modal-create,.modal-configure) fieldset{margin-top:9px}:is(.modal-create,.modal-configure) .mode-select>button{padding:8px}:is(.modal-create,.modal-configure) .form-submit{margin-top:12px}}@media(max-width:360px){.main-content{padding-left:13px;padding-right:13px}.section-label>span{font-size:9px}.phase-strip p{font-size:9px}.wolf-choices>span{font-size:7px}.room-tools button,.room-tools>span{font-size:10px}.modal{padding-left:18px;padding-right:18px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.config-tabs{display:flex;gap:4px;padding:4px;margin:16px 0 8px;background:var(--soft-2);border-radius:999px}.config-tabs button{flex:1;min-height:34px;border-radius:999px;color:var(--muted);font-size:13px;font-weight:600}.config-tabs button:hover{color:var(--ink)}.config-tabs button[aria-selected=true]{background:var(--card);color:var(--theme-ink);box-shadow:var(--shadow-sm)}.config-panel{min-height:260px}.config-hint{font-size:12px;line-height:1.8;color:var(--muted);margin:12px 0 4px}.config-total{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:13px;padding:12px 0}.config-total strong{color:var(--theme-ink);font-variant-numeric:tabular-nums}.config-total span{margin-left:auto;font-size:11px;color:var(--muted)}.config-total.invalid,.config-total.invalid strong,.config-total.invalid span{color:var(--danger-ink)}.role-counters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.role-counters label{border-radius:14px;background:var(--soft);padding:9px;display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--ink-2)}.role-counters select{height:34px;border:1px solid var(--line-strong);border-radius:10px;background:var(--card);color:var(--ink);padding:0 6px;width:100%;font-size:14px;font-variant-numeric:tabular-nums}.rule-setting{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:13px}.rule-setting select{background:var(--card);border:1px solid var(--line-strong);border-radius:10px;padding:7px 8px;font-size:12px;color:var(--ink);max-width:65%}.rule-setting input{width:19px;height:19px;accent-color:var(--theme)}.board-rules{color:var(--ink-2);font-size:13px;line-height:1.9;margin:18px 0}.board-rules p+p{margin-top:12px}.discussion-actions{display:flex;gap:6px}.discussion-actions>*{flex:1;min-width:0}.discussion-actions>.btn{padding:0 12px;font-size:13px}.explode-button,.gun-button{background:var(--danger-wash);color:var(--danger-ink);border:1px solid var(--danger-line)}:is(.explode-button,.gun-button):hover:not(:disabled){border-color:var(--danger)}.sheriff-label{font-size:8px;font-weight:700;background:var(--target-wash);color:var(--target-ink);padding:1px 6px;border-radius:999px;white-space:nowrap}.speech-list{max-height:50dvh;overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--card)}.speech-list p{display:flex;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);font-size:15px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}.speech-list p:last-child{border-bottom:0}.speech-list span{font-size:12px;font-weight:400;color:var(--muted)}.role-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}.role-card{padding:10px}.role-card h3{font-size:17px}.role-card small{font-size:10px}.many-seats .seat-avatar{display:none}.many-seats .seat{padding:5px;gap:2px}.many-seats .seat-name{font-size:9px}.many-seats .seat-state{font-size:7px}.many-seats .seat-top{height:13px}.many-seats .seat-top strong{font-size:12px}.many-seats .seat-top small{font-size:7px;margin-left:1px}.many-seats .wolf-vote-badge{font-size:7px;top:4px;right:3px}.wolf-choices{display:flex;flex-wrap:wrap}.wolf-choices>span{flex:1;min-width:18%;max-width:32%}.room-tools{gap:5px}.room-tools button{white-space:nowrap}:is(.modal-create,.modal-configure){max-width:460px}:is(.modal-create,.modal-configure) form{display:flex;flex-direction:column}:is(.modal-create,.modal-configure) .config-panel{min-height:0}.config-panel .field:first-child{margin-top:8px}.config-panel fieldset+.rule-setting{margin-top:8px}@media(max-height:730px){.many-seats .seat{padding:4px;gap:1px}.many-seats .seat-state{display:none}.role-card h3{font-size:15px}.role-card small{font-size:9px}.config-tabs{margin-top:10px}.config-panel{min-height:220px}}@media(max-height:620px){.role-card h3{font-size:14px}.role-card small{font-size:8px}.config-tabs button{min-height:30px}.rule-setting{min-height:38px;font-size:12px}.config-hint{font-size:11px;margin-top:8px}.config-total{padding:9px 0}.role-counters label{padding:7px}.role-counters select{height:30px}.many-seats .seat-top{height:12px}.many-seats .seat-name{font-size:8px}}.crowded-wolves{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}.crowded-wolves>span{flex:0 0 23%;max-width:none}.many-players .seat-name{max-width:100%}.many-players .seat-state{display:none}@media(max-height:730px){.many-players{gap:6px}.many-players .witch-controls{padding:6px 8px}.many-players .seat-grid{gap:5px}}@media(max-height:620px){.many-players,.many-players .seat-grid{gap:4px}.many-players .seat-top>svg{width:9px;height:9px}.many-players .sheriff-label{font-size:6px;padding:1px}.many-players .mine-label{font-size:6px;padding:1px 2px}}.seat.police-candidate{--disc-bg: var(--card);--disc-ink: var(--magic-ink);background:var(--magic-wash);border:1px solid var(--magic-line);color:var(--magic-ink)}.seat.police-withdrawn{--disc-bg: var(--card);--disc-ink: var(--target-ink);background:var(--target-wash);border:1px solid var(--target-line);color:var(--target-ink)}.seat.police-off{--disc-bg: var(--card);--disc-ink: var(--good-ink);background:var(--good-wash);border:1px solid var(--good-line);color:var(--good-ink)}.seat.police-candidate .seat-name,.seat.police-candidate .seat-state,.seat.police-candidate .seat-top{color:var(--magic-ink)}.seat.police-withdrawn .seat-name,.seat.police-withdrawn .seat-state,.seat.police-withdrawn .seat-top{color:var(--target-ink)}.seat.police-off .seat-name,.seat.police-off .seat-state,.seat.police-off .seat-top{color:var(--good-ink)}.seat.wolf-mate{--disc-bg: var(--danger);--disc-ink: var(--on-danger);background:var(--wolf-seat);border:1px solid var(--danger);color:var(--danger-ink);box-shadow:none}.seat.wolf-mate.seat-unavailable .seat-avatar{opacity:1}.seat.wolf-mate .seat-unavailable-reason{background:color-mix(in srgb,var(--danger) 18%,transparent);color:var(--danger-ink)}.seat.wolf-mate .seat-name,.seat.wolf-mate .seat-state,.seat.wolf-mate .seat-top,.seat.wolf-mate .seat-avatar{color:var(--danger-ink)}.seat.dead{--disc-bg: var(--dead-wash-2);--disc-ink: var(--dead);background:repeating-linear-gradient(135deg,var(--dead-wash),var(--dead-wash) 7px,var(--dead-wash-2) 7px,var(--dead-wash-2) 9px);border:1px solid var(--dead-line);color:var(--dead);box-shadow:none}.seat.dead .seat-name,.seat.dead .seat-state,.seat.dead .seat-top{color:var(--dead);opacity:1}.seat.dead .seat-name{text-decoration:line-through}.seat.dead .seat-avatar{color:var(--dead);opacity:.6}.potion-options>.potion-skip{--tone: var(--ink);--tone-ink: var(--ink);--tone-wash: var(--soft-2)}.potion-options>.potion-save{--tone: var(--good);--tone-ink: var(--good-ink);--tone-wash: var(--good-wash)}.potion-options>.potion-poison{--tone: var(--magic);--tone-ink: var(--magic-ink);--tone-wash: var(--magic-wash)}.potion-options>button:disabled{opacity:.4}.finished-actions{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px}.finished-actions>.btn{min-width:0;padding-inline:8px;white-space:normal}.finished-actions>.btn>svg{flex-shrink:0}.modal-recap{max-width:560px}.many-players .seat.wolf-mate .seat-state,.many-players .seat.police-candidate .seat-state,.many-players .seat.police-withdrawn .seat-state,.many-players .seat.police-off .seat-state,.many-players .seat.dead .seat-state{display:block;font-size:7px}.many-players .seat.wolf-mate .seat-name{display:none}.nickname-backdrop{z-index:100}.nickname-welcome .modal-description{font-size:13px}.nickname-welcome .field{font-size:12px}.nickname-welcome .field input{font-size:16px;min-height:50px}.nickname-welcome .form-submit{min-height:50px}.has-identity-error{overflow-y:auto}.reveal-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.reveal-actions>.btn{flex:1;padding:0 9px;font-size:13px}.identity-history{margin:18px 0;color:var(--ink)}.identity-history h3{font-size:17px;font-weight:700;letter-spacing:.04em}.history-hint,.history-empty{font-size:12px;line-height:1.8;color:var(--muted);margin-top:7px}.night-history-list{max-height:240px;overflow:auto;margin:10px 0}.night-history-list section{background:var(--soft);border-radius:14px;padding:10px 13px;margin-bottom:8px}.night-history-list strong{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--theme-ink)}.night-history-list p{font-size:13px;line-height:1.8;margin-top:4px;color:var(--ink-2);overflow-wrap:anywhere}.seat.confirming-identity .seat-state{display:block;font-size:8px}.many-players .seat.confirming-identity .seat-state{font-size:7px}.seat.my-seat:not(.wolf-mate):not(.dead){--disc-bg: var(--self);--disc-ink: var(--on-self);background:var(--self-wash);border:2px solid var(--self-line)}.seat.my-seat:not(.wolf-mate):not(.dead) .seat-name,.seat.my-seat:not(.wolf-mate):not(.dead) .seat-top{color:var(--self-ink)}.seat.chosen:not(.dead){--disc-bg: var(--target);--disc-ink: var(--on-target);background:var(--target-wash);border:2px solid var(--target-line);box-shadow:0 10px 22px -14px color-mix(in srgb,var(--target) 90%,transparent)}.seat.chosen:not(.dead) .seat-name,.seat.chosen:not(.dead) .seat-top,.seat.chosen:not(.dead) .seat-state,.seat.chosen:not(.dead) .target-check{color:var(--target-ink)}.narration-controls .btn{min-height:36px}.lobby-hero{position:relative;overflow:hidden;isolation:isolate;flex-shrink:0;display:flex;flex-direction:column;gap:20px;padding:26px 24px 22px;border-radius:26px;color:#eef3ef;background:radial-gradient(90% 120% at 100% 0%,#2f6a4f 0%,transparent 60%),linear-gradient(160deg,#163126,#10221b 55%,#0b1813);box-shadow:var(--shadow-md)}.lobby-hero:before{content:"";position:absolute;inset:0 0 auto auto;width:38%;height:34%;z-index:-1;background:radial-gradient(circle at 18% 18%,rgb(255 255 255 / .7) 0 1px,transparent 1.5px),radial-gradient(circle at 46% 8%,rgb(255 255 255 / .5) 0 1px,transparent 1.5px),radial-gradient(circle at 30% 62%,rgb(255 255 255 / .45) 0 1px,transparent 1.5px),radial-gradient(circle at 70% 78%,rgb(255 255 255 / .35) 0 1px,transparent 1.5px),radial-gradient(circle at 92% 92%,rgb(255 255 255 / .4) 0 1px,transparent 1.5px),radial-gradient(circle at 8% 88%,rgb(255 255 255 / .3) 0 1px,transparent 1.5px);pointer-events:none}.lobby-hero:after{content:"";position:absolute;z-index:-1;right:22px;top:20px;width:74px;height:74px;border-radius:50%;box-shadow:inset -14px 9px 0 0 var(--moon),0 0 50px 4px #efe8d429;transform:rotate(-12deg);pointer-events:none}.lobby-hero-copy{display:flex;flex-direction:column;gap:8px;padding-right:76px}.lobby-hero-kicker{font-size:11px;font-weight:600;letter-spacing:.22em;color:#9fd3b4}.lobby-hero h1{font-size:30px;line-height:1.25;font-weight:800;letter-spacing:.06em;color:#fbfcfa}.lobby-hero p{font-size:13px;line-height:1.7;color:#eef3efb8}.lobby-buttons{flex-shrink:0}.lobby-hero .lobby-buttons>.btn{min-height:50px;font-size:15px}.lobby-hero .lobby-buttons>.btn.primary{background:#fbfcfa;border-color:#fbfcfa;color:#1c4d37;box-shadow:0 10px 24px -12px #0009}.lobby-hero .lobby-buttons>.btn.primary:hover:not(:disabled){background:#e8f1ec;border-color:#e8f1ec}.lobby-hero .lobby-buttons>.btn.secondary{background:#ffffff14;border-color:#eef3ef4d;color:#fbfcfa;box-shadow:none}.lobby-hero .lobby-buttons>.btn.secondary:hover:not(:disabled){background:#ffffff24}.lobby-hero .lobby-buttons svg{stroke-width:2.2}.lobby-page>.section-label{flex-shrink:0;margin-top:4px}.lobby-room-list{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:10px}.lobby-room-card{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;min-height:78px;padding:14px 16px 14px 14px;border:1px solid var(--line);border-radius:20px;text-align:left;background:var(--card)}@media(hover:hover){.lobby-room-card:hover:not(:disabled){border-color:var(--theme-line);box-shadow:var(--shadow-sm)}}.lobby-room-icon{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border-radius:14px;color:var(--theme-ink);background:var(--theme-wash)}.lobby-room-info{flex:1;min-width:0}.lobby-room-info>strong{display:block;font-size:16px;font-weight:700;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.lobby-room-info>small{display:block;margin-top:6px;font-size:11px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.lobby-room-join{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}.lobby-room-join>span:first-child{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.lobby-room-progress{display:block;width:64px;height:4px;border-radius:999px;background:var(--soft-2);overflow:hidden}.lobby-room-progress>i{display:block;height:100%;border-radius:inherit;background:var(--theme)}.lobby-room-join>strong{display:flex;align-items:center;justify-content:flex-end;gap:3px;font-size:12px;color:var(--theme-ink);font-weight:700}.lobby-empty{margin:auto;text-align:center;font-size:13px;color:var(--muted);padding:28px 10px}.lobby-status{font-size:12px;color:var(--target-ink);line-height:1.6}.lobby-room-card:disabled{opacity:.65}@media(max-width:600px){.lobby-hero{padding:22px 20px 18px;gap:16px;border-radius:24px}.lobby-hero:after{right:16px;top:16px;width:58px;height:58px;box-shadow:inset -11px 7px 0 0 var(--moon),0 0 40px 2px #efe8d429}.lobby-hero-copy{gap:6px;padding-right:58px}.lobby-hero h1{font-size:26px}.lobby-hero p{font-size:12px}.lobby-hero .lobby-buttons>.btn{min-height:48px;font-size:15px}}@media(max-height:730px){.lobby-hero{padding-top:18px;padding-bottom:16px;gap:14px}.lobby-hero h1{font-size:24px}}@media(max-height:620px){.lobby-hero p,.lobby-hero-kicker{display:none}.lobby-hero{padding:16px 16px 14px;gap:12px}.lobby-hero:after{top:10px;width:46px;height:46px;box-shadow:inset -9px 6px 0 0 var(--moon),0 0 30px 2px #efe8d429}.lobby-hero h1{font-size:22px}.lobby-hero .lobby-buttons>.btn{min-height:44px}}@media(max-width:350px){.lobby-room-card{padding:12px;gap:8px}.lobby-room-icon{width:38px;height:38px;border-radius:12px}.lobby-room-info>small{font-size:10px}.lobby-room-info>strong{font-size:14px}}.room-summary>div:first-child{flex:1;min-width:0}.room-header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.room-summary p{white-space:nowrap}.room-summary h1{max-width:100%}.room-summary-compact>div:first-child{display:flex;align-items:center;gap:10px}.room-page .room-summary-compact h1{flex:0 1 auto;min-width:3em}.room-page .room-summary.room-summary-compact p{flex:0 0 auto;margin-top:0}.room-back-button{position:relative;flex-shrink:0;width:30px;height:30px;margin:0 -6px;color:var(--ink-2)}.room-back-button:before{content:"";position:absolute;top:-7px;right:-7px;bottom:-7px;left:-7px}@media(max-width:350px){.room-header-actions .invite-button{padding:7px;gap:3px}.room-summary{gap:7px}.room-summary p{gap:3px}}.lobby-room-sections{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:24px}.lobby-room-section{flex-shrink:0;display:flex;flex-direction:column;gap:12px}.lobby-room-section .lobby-room-list{flex:none;overflow:visible}.lobby-room-section .section-label{margin:0}.lobby-room-section .lobby-empty{width:100%;padding:20px 10px;border:1px dashed var(--line-strong);border-radius:20px}.lobby-legal{flex-shrink:0;margin-top:auto;display:flex;justify-content:center;gap:16px;padding:4px 0 8px;font-size:12px}.lobby-legal>a{color:var(--muted)}.lobby-legal>a:hover{color:var(--theme-ink)}.modal-sound .music-toggle{display:flex;align-items:center;justify-content:space-between;min-height:36px}.modal-sound .music-toggle input[type=checkbox]{display:block;width:22px;height:22px;min-height:22px;margin:0;padding:0;accent-color:var(--theme)}html{transition:background-color 1.2s ease}html[data-sky=night]{background:#0e1411}.app-shell{transition:background-color 1.2s ease}.app-shell.sky-night{background:#0e1411}.app-header{transition:background-color 1.2s ease,border-color 1.2s ease}.room-summary h1,.brand strong,.room-tools button{transition:color 1.2s ease}@media(prefers-reduced-motion:reduce){html,.app-shell,.app-header,.room-summary h1,.brand strong,.room-tools button{transition:none}}.sky-night,.broadcast-night{color-scheme:dark;--shell: #0e1411;--canvas: #0e1411;--paper: #161e1a;--card: #18211c;--soft: #121a16;--soft-2: #1f2a24;--ink: #ecf1ee;--ink-2: #c3cec7;--muted: #8d9b93;--faint: #5e6c64;--line: #24302a;--line-strong: #33423a;--theme: #2f7b57;--theme-hover: #378a63;--theme-ink: #8fd0ad;--theme-wash: #17291f;--theme-line: #2f5541;--on-theme: #fff;--good: var(--theme);--good-ink: var(--theme-ink);--good-wash: var(--theme-wash);--good-line: var(--theme-line);--danger: #f0958a;--danger-ink: #ffc2b8;--danger-wash: #2c1a19;--danger-line: #6b3a36;--on-danger: #2b0d0b;--wolf-seat: #3d1c1c;--self: #8db4ff;--self-ink: #cfe0ff;--self-wash: #15223a;--self-line: #4d72b6;--on-self: #0b1630;--target: #f2c76b;--target-ink: #ffe3a6;--target-wash: #2a2313;--target-line: #c99a3c;--on-target: #2a1d05;--magic: #c9aef0;--magic-ink: #e5d6fb;--magic-wash: #221b2e;--magic-line: #5b4880;--god: #e5cb91;--god-ink: #e5cb91;--god-wash: #3a311f;--god-line: #716043;--dead: #bfc6cc;--dead-wash: #1a201d;--dead-wash-2: #212824;--dead-line: #4b5550;--backdrop: rgb(3 6 4 / .66);--shadow-xs: 0 1px 2px rgb(0 0 0 / .4);--shadow-sm: 0 1px 2px rgb(0 0 0 / .3), 0 8px 18px -10px rgb(0 0 0 / .7);--shadow-md: 0 2px 6px -2px rgb(0 0 0 / .4), 0 18px 40px -16px rgb(0 0 0 / .75);--shadow-lg: 0 40px 100px -30px rgb(0 0 0 / .9);--shadow-theme: 0 10px 24px -12px rgb(0 0 0 / .8);--ring: 0 0 0 3px rgb(143 208 173 / .22);color:var(--ink)}.phase-strip,.seat,.wolf-team,.witch-controls,.waiting-label,.modal,.identity-card,.night-history-list section{transition:background-color .6s ease,color .6s ease,border-color .3s ease,box-shadow .3s ease}.sky-night .phase-strip{background-image:radial-gradient(circle at 52% 24%,rgb(255 255 255 / .5) 0 1px,transparent 1.5px),radial-gradient(circle at 66% 72%,rgb(255 255 255 / .35) 0 1px,transparent 1.5px),radial-gradient(circle at 80% 30%,rgb(255 255 255 / .45) 0 1px,transparent 1.5px),radial-gradient(circle at 92% 76%,rgb(255 255 255 / .3) 0 1px,transparent 1.5px),linear-gradient(120deg,#1a2f24,#121b17 80%)}.sky-night .phase-strip.your-turn{background-image:radial-gradient(circle at 52% 24%,rgb(255 255 255 / .5) 0 1px,transparent 1.5px),radial-gradient(circle at 80% 30%,rgb(255 255 255 / .45) 0 1px,transparent 1.5px),linear-gradient(120deg,#22412f,#141f19 85%)}.sky-night .phase-icon{background:var(--soft)}.sky-night .seat.dead{box-shadow:none}.sky-night .identity-card{border-color:#2a4f3d}.identity-card:not(.revealed){transition:none}.identity-card.revealed.identity-role{background:var(--role-wash);border-color:color-mix(in srgb,var(--role-accent) 50%,var(--role-wash));color:var(--role-ink);box-shadow:var(--shadow-sm)}.identity-card.revealed.identity-role:after{display:none}.identity-card.revealed.identity-role>.identity-card-icon{background:color-mix(in srgb,var(--role-accent) 18%,var(--paper))}.identity-card.revealed.identity-role strong{color:var(--role-ink)}.identity-card.revealed.identity-role small{color:var(--role-ink);opacity:.75}.sky-night .toast{background:#1e2823f5;box-shadow:0 18px 40px -16px #000000d9}@media(max-width:600px){.modal-backdrop:not(.result-backdrop){align-items:flex-end;padding:max(16px,env(safe-area-inset-top)) 0 0}.modal-backdrop:not(.result-backdrop)>.modal{max-width:none;max-height:calc(100dvh - max(16px,env(safe-area-inset-top)));border-radius:28px 28px 0 0;border-bottom:0;padding-top:30px;padding-bottom:max(24px,calc(env(safe-area-inset-bottom) + 16px))}.modal-backdrop:not(.result-backdrop)>.modal:before{content:"";position:absolute;top:9px;left:50%;width:38px;height:4px;border-radius:999px;background:var(--line-strong);transform:translate(-50%)}.modal-backdrop:not(.result-backdrop) .modal-close{top:16px}.modal-backdrop:not(.result-backdrop)>.modal.modal-required:before{content:none}}.announcement-text{font-size:17px;line-height:1.9;margin:18px 0;white-space:pre-wrap;color:var(--ink);background:var(--soft);border-radius:16px;padding:16px 18px}.announcement-prompt h3{font-size:14px;font-weight:700;letter-spacing:.04em;color:var(--ink);margin:16px 0 10px}.announcement-seats,.announcement-order{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.announcement-seats span{padding:7px 12px;border-radius:999px;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.announcement-seats .candidate{background:var(--magic-wash);color:var(--magic-ink)}.announcement-seats .withdrawn{background:var(--target-wash);color:var(--target-ink)}.speech-options{display:grid;gap:10px;margin-top:14px}.speech-option{display:grid;gap:6px;text-align:left;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);font:inherit;cursor:pointer}.speech-option:hover:not(:disabled){border-color:var(--theme);background:var(--theme-wash)}.speech-option:disabled{opacity:.6;cursor:default}.speech-option>strong{display:flex;align-items:baseline;gap:8px;font-size:16px}.speech-option>strong small{font-size:12px;font-weight:500;color:var(--muted)}.speech-option>span{display:flex;flex-wrap:wrap;gap:4px;font-size:14px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}.speech-option>span small{margin-right:4px;color:var(--theme-ink);font-weight:400}.announcement-direction{color:var(--muted);font-size:12px;line-height:1.6;margin-bottom:12px}.announcement-order span{font-size:17px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.announcement-order small{margin-right:8px;color:var(--theme-ink);font-weight:400}.announcement-prompt>.btn{margin-top:12px}.last-words-prompt .action-buttons{margin-top:22px}:is(.last-words-prompt,.gun-prompt,.announcement-private) .action-buttons>.btn{flex:1}.ballot-groups{display:flex;flex-direction:column;gap:8px;margin:16px 0}.ballot-group{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;padding:10px;border:1px solid var(--line);border-radius:18px;background:var(--card)}.ballot-group.top-voted{border-color:var(--theme-line);background:var(--theme-wash)}.ballot-target{display:flex;flex-direction:column;justify-content:center;gap:4px;padding-left:4px;border-right:1px solid var(--line)}.ballot-target strong{font-size:18px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.ballot-target small{font-size:12px;font-weight:600;color:var(--theme-ink);font-variant-numeric:tabular-nums}.ballot-voters{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.ballot-voters>span{display:flex;align-items:center;gap:4px;padding:6px 10px;background:var(--soft-2);border-radius:12px;font-size:13px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.ballot-group.top-voted .ballot-voters>span:not(.sheriff-vote){background:var(--card)}.ballot-voters>.sheriff-vote{background:var(--target-wash);color:var(--target-ink)}.ballot-voters small{font-size:9px;font-weight:600;color:var(--target-ink)}.ballot-group.abstained{background:var(--soft)}.ballot-group.abstained .ballot-target strong,.ballot-group.abstained .ballot-target small{color:var(--muted)}.announcement-private{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.announcement-private h2{font-size:19px}.announcement-private select{width:100%;min-height:44px;padding:8px;border:1px solid var(--line-strong);border-radius:12px;background:var(--card);color:var(--ink)}.announcement-private .action-buttons{margin-top:12px}.announcement-private .modal-description{margin-bottom:12px}.announcement-prompt{display:flex;flex-direction:column;overflow:hidden}.announcement-prompt>h2,.announcement-prompt>.eyebrow,.announcement-prompt>.dismiss-announcement{flex-shrink:0}.announcement-body{min-height:0;overflow:auto;overscroll-behavior:contain}.ballot-headings{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;padding:0 10px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em;margin-top:16px}.ballot-headings+.ballot-groups{margin-top:8px}.badge-change-notice{margin:14px 0;padding:14px 16px;border-radius:16px;background:var(--target-wash);color:var(--target-ink)}.badge-change-notice h3{display:flex;align-items:center;gap:8px;margin:0 0 9px;font-size:16px;font-weight:700}.badge-change-notice p{font-size:14px;line-height:1.7;overflow-wrap:anywhere}.badge-change-notice p+p{margin-top:8px}.broadcast-screen{position:relative;height:100dvh;width:100%;padding:clamp(22px,4vw,64px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(20px,4vh,48px);text-align:center;transition:background-color 1.2s,color 1.2s;overflow:hidden}.broadcast-day{background-color:#fff;background-image:radial-gradient(900px 520px at 50% -10%,rgb(44 106 78 / .1),transparent 62%);color:#1a1f1c}.broadcast-night{background-color:#0e1411;background-image:radial-gradient(circle at 12% 18%,rgb(255 255 255 / .6) 0 1px,transparent 1.6px),radial-gradient(circle at 28% 62%,rgb(255 255 255 / .35) 0 1px,transparent 1.6px),radial-gradient(circle at 46% 10%,rgb(255 255 255 / .5) 0 1px,transparent 1.6px),radial-gradient(circle at 70% 26%,rgb(255 255 255 / .45) 0 1px,transparent 1.6px),radial-gradient(circle at 86% 64%,rgb(255 255 255 / .4) 0 1px,transparent 1.6px),radial-gradient(circle at 60% 88%,rgb(255 255 255 / .3) 0 1px,transparent 1.6px),radial-gradient(900px 560px at 50% -14%,rgb(47 123 87 / .22),transparent 62%);color:#ecf1ee}.broadcast-period{display:flex;align-items:center;gap:.8em;font-size:clamp(20px,3vw,40px);font-weight:700;flex-shrink:0;letter-spacing:.3em;color:var(--theme-ink);padding-left:.3em}.broadcast-period:before,.broadcast-period:after{content:"";width:clamp(28px,6vw,90px);height:1px;background:linear-gradient(90deg,transparent,currentColor)}.broadcast-period:after{transform:scaleX(-1)}.broadcast-text{flex:1 1 0;min-height:0;width:100%;max-width:1400px;display:flex;flex-direction:column;overflow-y:auto;font-size:clamp(30px,5.5vw,86px);line-height:1.5;font-weight:700;letter-spacing:.06em}.broadcast-text>span{margin:auto;max-width:100%;overflow-wrap:anywhere;white-space:pre-wrap}.broadcast-controls{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:520px}.broadcast-controls p{font-size:14px;line-height:1.6;color:var(--muted)}.broadcast-controls .btn{min-height:52px;padding:0 30px}.broadcast-invite-link{width:100%;padding:12px;border:1px solid var(--line-strong);border-radius:14px;background:var(--soft);font-size:14px;overflow-wrap:anywhere}.broadcast-screen{padding-bottom:max(88px,calc(72px + env(safe-area-inset-bottom)))}@media(max-height:500px){.broadcast-screen{padding-top:14px;padding-bottom:max(72px,calc(64px + env(safe-area-inset-bottom)));gap:10px}.broadcast-period{font-size:18px}}.broadcast-volume{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:10;text-align:left}.broadcast-volume-button{float:right;background:var(--card);border-color:var(--line-strong);color:var(--ink-2);box-shadow:var(--shadow-sm);min-height:48px;padding:0 18px}.broadcast-volume-panel{width:min(320px,calc(100vw - 32px));max-height:calc(100dvh - 96px);overflow-y:auto;margin-bottom:12px;padding:18px;border:1px solid var(--line);border-radius:22px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow-lg)}.broadcast-volume-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.broadcast-volume-heading h2{font-size:19px;font-weight:700}.broadcast-volume-heading .icon-button{width:44px;height:44px}.broadcast-volume-panel label{display:block;font-size:15px;font-weight:600;margin-top:12px}.broadcast-volume-panel label span{float:right;font-variant-numeric:tabular-nums;color:var(--muted)}.broadcast-volume-panel input{display:block;width:100%;height:40px;margin:4px 0;accent-color:var(--theme)}.broadcast-volume-panel p{font-size:12px;line-height:1.6;color:var(--muted);margin-top:8px}.role-sections{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px 2px 10px}.role-section+.role-section{margin-top:26px}.role-group-title{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:700;letter-spacing:.14em;line-height:1.5;margin:0 0 12px;color:var(--ink)}.role-group-title:after{content:"";height:1px;background:var(--line);flex:1}.role-grid{grid-template-rows:none;grid-auto-rows:minmax(132px,auto);align-content:start;max-height:none}.config-role-group+.config-role-group{margin-top:18px}.config-role-group .role-group-title{font-size:13px;color:var(--ink-2)}.private-action-hint{display:flex;align-items:flex-start;gap:7px;color:var(--ink-2);font-size:12px;line-height:1.7;margin:0 0 8px;padding:8px 12px;border-radius:14px;background:var(--soft-2)}.private-action-hint svg{margin-top:3px;color:var(--theme-ink)}.identity-role-help{font-size:13px;line-height:1.9;color:var(--ink-2);margin:14px 0}.discussion-actions{flex-wrap:wrap}@media(max-width:600px){.role-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(124px,auto)}.private-action-hint{font-size:11px;line-height:1.5;padding:6px 10px;margin-bottom:6px}}.magician-controls{margin:0 0 8px;padding:8px 12px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink)}.magician-pair{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;line-height:1.5;font-weight:700;font-variant-numeric:tabular-nums}.magician-pair small{font-size:11px;white-space:nowrap;font-weight:600;color:var(--muted)}.magician-used{margin-top:4px;font-size:11px;line-height:1.5;color:var(--muted)}.seat.swap-used{border-style:dashed;opacity:.6}@media(max-width:600px){.magician-controls{padding:6px 10px;margin-bottom:6px}.magician-pair{font-size:12px}.magician-used{font-size:10px}}@media(max-height:620px){.magician-controls{padding:5px 8px}.magician-pair{font-size:11px}.magician-used{font-size:9px;margin-top:2px}}.idiot-reveal-notice{padding:14px 16px;margin:0 0 14px;border-radius:16px;background:var(--good-wash);color:var(--good-ink)}.idiot-reveal-notice h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:18px;font-weight:700}.idiot-reveal-notice p{font-size:13px;line-height:1.85}@media(max-width:600px){.idiot-reveal-notice{padding:11px 13px;margin-bottom:11px}.idiot-reveal-notice h3{font-size:16px}.idiot-reveal-notice p{font-size:12px}}.game-focused{--game-gutter: clamp(12px, 3vw, 24px)}.game-focused .main-content{padding:max(12px,env(safe-area-inset-top)) max(var(--game-gutter),env(safe-area-inset-right)) 0 max(var(--game-gutter),env(safe-area-inset-left))}.game-focused .room-page{gap:8px;overflow:hidden}.game-focused .room-summary h1{font-size:19px}.game-focused .room-summary p{margin-top:3px}.game-focused .phase-strip{min-height:56px;padding:9px 12px}.game-focused .room-tools{min-height:38px;padding:0 4px;gap:4px}.game-focused .room-tools button{min-width:40px;min-height:36px;justify-content:center;gap:4px;font-size:12px;padding:2px 8px}.game-focused .room-tools button:first-child{justify-content:flex-start}.game-focused .room-tools button:last-child{justify-content:flex-end}.game-focused .room-tools svg{flex-shrink:0}.game-focused .seat-grid{flex:1 1 0;min-height:156px;gap:clamp(6px,1vw,10px)}.game-focused .room-action-bar{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;min-height:0;max-height:45dvh;margin-inline:calc(-1 * var(--game-gutter));padding:10px var(--game-gutter) max(10px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:transparent;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.game-focused .room-action-bar>*{flex-shrink:0}.game-focused .room-action-bar :is(.private-action-hint,.magician-controls){margin:0}.game-focused .room-action-bar .action-buttons{gap:8px;flex-wrap:wrap}.game-focused .room-action-bar .action-buttons>.btn{flex:1 1 96px;min-width:0;min-height:46px;padding:9px 12px;white-space:normal;line-height:1.4}.game-focused .room-action-bar .btn svg{flex-shrink:0}.game-focused .room-action-bar .waiting-label{min-height:44px}.room-action-bar:has(>button,>:not(.narration-controls) button,.wolf-team,.private-action-hint,.magician-controls,.special-role-controls,.waiting-label:not(.narration-waiting))>:is(.narration-waiting,.narration-controls.night-voice-ready){display:none}.game-focused .room-action-bar .narration-controls{gap:8px}.game-focused .room-action-bar .narration-controls>.btn{min-height:44px}.game-focused .room-action-bar .potion-options>button{min-height:40px}.game-focused .room-action-bar .wolf-team-title{flex-wrap:wrap;row-gap:3px}.game-focused .room-action-bar .wolf-team-title small{white-space:normal}.game-focused .room-action-bar .magician-pair{flex-wrap:wrap;row-gap:2px}.modal-backdrop.night-action-backdrop{align-items:center;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.night-action-backdrop>.modal{display:flex;flex-direction:column;width:100%;max-width:440px;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(12px,env(safe-area-inset-bottom)));margin:0;padding:26px 24px 22px;border-radius:28px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.night-action-backdrop>.modal>*{flex-shrink:0}.night-action-backdrop>.modal>.btn:last-child{position:sticky;bottom:0;flex-shrink:0;width:100%;min-height:48px;margin-top:6px;padding:10px 12px;white-space:normal;line-height:1.5}.identity-skill-hint{display:flex;align-items:flex-start;gap:8px;margin:14px 0;padding:11px 13px;font-size:12px;line-height:1.75}.identity-skill-hint svg{flex-shrink:0;margin-top:3px;color:var(--theme-ink)}@media(max-width:600px){.game-focused .room-summary h1{font-size:18px}.game-focused .room-tools button{font-size:11px;padding:2px 6px}.game-focused .room-action-bar{gap:6px;padding-top:8px}.night-action-backdrop>.modal{padding:22px 20px 20px}:is(.result-alignment,.gargoyle-status-summary,.hunter-status-summary){font-size:38px}:is(.gargoyle-status-message,.hunter-status-message){font-size:12px}.hunter-status-note{font-size:11px}.identity-skill-hint{font-size:11px;padding:9px 10px}.last-words-prompt .action-buttons,.last-words-content .action-buttons{flex-wrap:wrap}.last-words-prompt .action-buttons>.btn,.last-words-content .action-buttons>.btn{flex:1 1 120px;white-space:normal;padding:10px}}@media(max-width:360px){.game-focused .room-tools button{font-size:10px;padding:2px 4px}}@media(max-height:620px){.game-focused .main-content{padding-top:max(8px,env(safe-area-inset-top))}.game-focused .room-page{gap:6px}.game-focused .room-summary h1{font-size:17px;line-height:1.2}.game-focused .room-summary p{margin-top:2px}.game-focused .phase-strip{min-height:46px;padding:6px 10px}.game-focused .phase-strip h2{line-height:1.2}.game-focused .phase-strip p{margin-top:2px}.game-focused .phase-strip h2 small{padding:1px 8px}.game-focused .room-tools,.game-focused .room-tools button{min-height:32px}.game-focused .room-action-bar{gap:6px;padding-top:8px}.game-focused .room-action-bar .private-action-hint{font-size:10px;line-height:1.5;padding:6px 8px}.night-action-backdrop>.modal{padding:18px 20px 16px}.result-icon{width:44px;height:44px;margin-bottom:12px}.result-icon>svg{width:22px;height:22px}:is(.result-alignment,.gargoyle-status-summary,.hunter-status-summary){margin:10px 0 12px;font-size:32px}}@media(max-height:480px){.game-focused .main-content{overflow-y:auto}.game-focused .room-page{height:auto;min-height:100%;overflow:visible}.game-focused .seat-grid{flex:0 0 156px}.game-focused .room-action-bar{position:sticky;bottom:0;max-height:50dvh}}.lobby-guide-links,.board-guide-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;flex-shrink:0}.lobby-guide-links>button{display:flex;align-items:center;gap:12px;min-width:0;min-height:66px;padding:12px 14px;border:1px solid var(--line);border-radius:20px;background:var(--card);color:var(--theme-ink);text-align:left}.guide-link-icon{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--theme-wash);color:var(--theme-ink)}.guide-link-icon>svg{width:20px;height:20px}.lobby-guide-links>button>span:not(.guide-link-icon){flex:1;min-width:0}.lobby-guide-links strong{display:block;color:var(--ink);font-size:16px;font-weight:700;letter-spacing:.08em;line-height:1.4}.lobby-guide-links small{display:block;margin-top:2px;color:var(--muted);font-size:11px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lobby-guide-links>button>svg:last-child{width:14px;height:14px;color:var(--faint)}@media(hover:hover){.lobby-guide-links>button:hover{border-color:var(--theme-line);box-shadow:var(--shadow-sm)}}.board-guide-links{margin:16px 0}.board-guide-links>button{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;min-height:44px;padding:9px 10px;border:1px solid var(--line-strong);border-radius:999px;background:var(--card);color:var(--ink);font-size:13px;font-weight:600;line-height:1.5}.board-guide-links>button>svg{color:var(--theme-ink)}.board-guide-links>button:hover{border-color:var(--theme-line)}.guide-back-button{display:inline-flex;align-items:center;align-self:flex-start;flex-shrink:0;gap:7px;min-height:40px;max-width:100%;padding:8px 16px 8px 12px;border:1px solid var(--line-strong);border-radius:999px;background:var(--card);color:var(--ink);font-size:13px;font-weight:600;line-height:1.5;text-align:left}.guide-back-button>svg{color:var(--theme-ink)}.guide-back-button:hover{border-color:var(--theme-line)}@media(max-width:600px){.lobby-guide-links,.board-guide-links{gap:8px}.lobby-guide-links>button{gap:10px;padding:10px 12px;min-height:62px;border-radius:18px}.guide-link-icon{width:36px;height:36px}.guide-link-icon>svg{width:18px;height:18px}.lobby-guide-links strong{font-size:15px}.lobby-guide-links small{font-size:10px}.lobby-guide-links>button>svg:last-child{display:none}}@media(max-width:360px){.lobby-guide-links>button{gap:7px;padding:9px}.guide-link-icon{width:32px;height:32px}.guide-link-icon>svg{width:16px;height:16px}.board-guide-links>button{gap:5px;font-size:12px}}.blood-moon-notice{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:8px 12px;border-radius:14px;background:var(--danger-wash);color:var(--danger-ink);font-size:12px;font-weight:500;line-height:1.6}.blood-moon-notice svg{flex-shrink:0;color:var(--danger)}.mechanical-night-status .gargoyle-status-message,.mechanical-copy-detail{line-height:1.8}:is(.modal-create,.modal-configure){display:flex;flex-direction:column;overflow:hidden}:is(.modal-create,.modal-configure) form{min-height:0;overflow:hidden}:is(.modal-create,.modal-configure) form>:is(h2,.create-progress,.create-back,.selected-board-heading,.config-tabs,.form-error,.form-submit){flex-shrink:0}:is(.modal-create,.modal-configure) .config-panel{overflow-y:auto;overscroll-behavior:contain;padding-right:3px}.create-progress{display:flex;align-items:center;gap:10px;list-style:none;margin:16px 0 20px;padding:0}.create-progress li{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;font-weight:600}.create-progress li+li:before{content:"";width:18px;height:1px;margin-right:3px;background:var(--line-strong)}.create-progress li>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--soft-2);font:700 11px var(--font-sans)}.create-progress li[aria-current]{color:var(--theme-ink)}.create-progress li[aria-current]>span{background:var(--theme);color:var(--on-theme)}.create-count-step h3,.board-picker-heading h3{font-size:18px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.create-count-step>p{font-size:12px;color:var(--muted);line-height:1.7;margin:6px 0 18px}.player-count-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.player-count-options>button{min-height:56px;border:1px solid var(--line);border-radius:18px;background:var(--card);color:var(--ink);font:700 24px var(--font-sans);font-variant-numeric:tabular-nums}.player-count-options small{margin-left:3px;font-size:11px;font-weight:500;color:var(--muted)}.player-count-options>button:hover{border-color:var(--theme);background:var(--theme-wash);color:var(--theme-ink)}.create-back{display:inline-flex;align-items:center;align-self:flex-start;gap:5px;padding:0 0 12px;color:var(--theme-ink);font-size:12px;font-weight:600}.create-board-step{display:flex;flex-direction:column;min-height:0}.board-picker-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-shrink:0;margin-bottom:12px}.custom-board-entry{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:7px 13px;border:1px solid var(--line-strong);border-radius:999px;color:var(--ink);font-size:12px;font-weight:600;background:var(--card)}.custom-board-entry>svg{color:var(--theme-ink)}.preset-board-list{display:flex;flex-direction:column;gap:10px;overflow-y:auto;min-height:0;overscroll-behavior:contain;padding:2px 3px 2px 1px}.preset-board-card{display:flex;flex-direction:column;gap:8px;width:100%;flex-shrink:0;text-align:left;border:1px solid var(--line);border-radius:18px;padding:14px 16px;background:var(--card)}.preset-board-card:hover{border-color:var(--theme-line);box-shadow:var(--shadow-sm)}.preset-board-title{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--theme-ink)}.preset-board-title strong{font-size:16px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.preset-board-roles{display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.6;color:var(--ink-2)}.preset-board-notes{border-top:1px solid var(--line);padding-top:7px;color:var(--muted);font-size:11px;line-height:1.65}.no-preset-boards{margin:10px 0 8px;font-size:13px;line-height:1.8;color:var(--muted)}.selected-board-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}.selected-board-heading>strong{font-size:16px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.selected-board-heading>button{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;color:var(--theme-ink);padding:5px 0}@media(max-width:360px),(max-height:620px){.create-progress{margin:12px 0 14px;gap:8px}.create-progress li+li:before{width:10px}.player-count-options{gap:8px}.player-count-options>button{min-height:48px}.preset-board-card{padding:11px 12px;gap:6px}.preset-board-title strong{font-size:14px}.preset-board-roles{font-size:11px}}.role-counters .role-unavailable{opacity:.5}.role-counters select:disabled{cursor:not-allowed}.rule-explanation .rule-ability{color:var(--ink-2);line-height:1.9}.rule-notes{margin-top:14px;font-size:12px;line-height:1.85;color:var(--muted)}.rule-notes ul{margin:0;padding-left:18px}.rule-notes li+li{margin-top:7px}.rule-notes li::marker{color:var(--theme-ink)}.rule-terms{margin:14px 0 0;line-height:1.85;color:var(--ink-2)}.rule-terms>div+div{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.rule-terms dt{font-weight:700;color:var(--ink)}.rule-terms dd{margin:4px 0 0;overflow-wrap:anywhere}.rule-item .rule-explanation{padding:0 18px 19px 57px;background:var(--soft);font-size:13px}.rule-item .rule-explanation p{padding:0;background:transparent;font-size:inherit}.role-description .rule-ability{font-size:14px}.identity-role-help .rule-notes{font-size:12px}.board-role-counts{padding:12px 14px;color:var(--ink);font-weight:600}.board-rule{margin-top:18px}.board-rule h3{font-size:16px;font-weight:700;letter-spacing:.04em;color:var(--ink);margin-bottom:7px}.board-rule .rule-notes{margin-top:10px;font-size:12px}@media(max-width:600px){.rule-item .rule-explanation{padding:0 16px 15px 50px;font-size:12px}.role-description .rule-ability{font-size:13px}}.seat-cell{position:relative;min-width:0;min-height:0;container-type:size}.seat-cell>.seat{width:100%;height:100%}.seat-grid .seat.seat-unavailable:disabled{cursor:not-allowed;border-style:dashed;box-shadow:none}.seat-unavailable .seat-avatar{opacity:.4}.seat .seat-unavailable-reason{display:block;flex-shrink:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 6px;border-radius:999px;background:var(--soft-2);color:var(--ink-2);font-size:8px;line-height:1.3}.many-players .seat .seat-unavailable-reason{font-size:7px;padding:1px 3px}.room-header-actions .room-profile-button{flex-shrink:0;margin-left:0}.lobby-actions{flex-wrap:wrap}.lobby-actions>.btn{flex:1 1 120px}.seat-cell.has-operation-status{--operation-size: 16px;--operation-inset: 4px}.seat-operation-status{position:absolute;right:var(--operation-inset);bottom:var(--operation-inset);display:inline-flex;align-items:center;justify-content:center;width:var(--operation-size);height:var(--operation-size);padding:2px;border-radius:50%;line-height:1;pointer-events:none}.seat-operation-status>svg{width:10px;height:10px;stroke-width:2.4}.seat-operation-status.is-pending{background:var(--target-wash);color:var(--target-ink);box-shadow:inset 0 0 0 1px var(--target-line)}.seat-operation-status.is-done{background:var(--good);color:var(--on-theme)}.seat-cell .target-check{top:auto;right:auto;left:6px;bottom:6px;width:12px;height:12px}.many-seats .target-check{left:3px;bottom:4px;width:10px;height:10px}.seat .wolf-vote-badge{top:auto;right:4px;bottom:4px}.many-seats .seat .wolf-vote-badge{right:3px;bottom:3px;padding:1px 2px}@media(max-width:360px){.many-seats .seat .wolf-vote-badge{font-size:6px}}.many-seats .seat-cell.has-operation-status{--operation-size: 14px;--operation-inset: 3px}.many-seats .seat-operation-status>svg{width:8px;height:8px}@container (max-height: 70px){.seat-cell.has-operation-status>.seat :is(.seat-name,.seat-state){align-self:flex-start;max-width:calc(100% - 18px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-cell:has(.wolf-vote-badge)>.seat :is(.seat-name,.seat-state){align-self:flex-start;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-cell .target-check{display:none}}.offline-seat-grid .seat{cursor:default}.game-focused .offline-bar{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;max-height:45dvh;margin-inline:calc(-1 * var(--game-gutter));padding:10px var(--game-gutter) max(10px,env(safe-area-inset-bottom));border-top:1px solid var(--line);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.offline-bar>*{flex-shrink:0}.offline-player{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card)}.offline-player-icon{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border-radius:50%;background:var(--theme-wash);color:var(--theme-ink)}.offline-player h2{font-size:15px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.offline-player p{margin-top:3px;font-size:12px;line-height:1.65;color:var(--ink-2)}.offline-notice{padding:12px 14px;border:1px solid var(--theme-line);border-radius:16px;background:var(--theme-wash)}.offline-notice .eyebrow{margin-bottom:2px}.offline-notice h3{font-size:15px;font-weight:700;color:var(--ink)}.offline-notice p{margin-top:6px;font-size:13px;line-height:1.75;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}.offline-notice .offline-notice-badge{display:flex;align-items:flex-start;gap:6px;color:var(--target-ink)}.offline-notice .offline-notice-badge>svg{flex-shrink:0;margin-top:4px}.offline-notice .offline-notice-order{font-size:12px;color:var(--ink-2)}.offline-notice-ballot{margin-top:8px;font-size:12px}.offline-notice-ballot summary{cursor:pointer;color:var(--theme-ink);font-weight:600}.offline-notice-ballot .ballot-groups{margin:8px 0 0}@media(max-width:380px){.offline-player{padding:10px 12px;gap:10px}.offline-player p{font-size:11px}.offline-notice p{font-size:12px}}.field.skill-target-field{--target-background: var(--card);--target-border: var(--line-strong);--target-text: var(--ink);--target-muted: var(--ink-2);--target-focus: var(--theme);display:flex;flex-direction:column;gap:8px;margin:16px 0 18px;color:var(--target-muted);font-size:12px;font-weight:500;line-height:1.5}.skill-target-control{position:relative;display:block;min-width:0}.field.skill-target-field select{-moz-appearance:none;appearance:none;-webkit-appearance:none;display:block;width:100%;max-width:100%;min-height:48px;margin:0;padding:11px 42px 11px 14px;border:1px solid var(--target-border);border-radius:12px;background:var(--target-background);box-shadow:var(--shadow-xs);color:var(--target-text);font-size:16px;line-height:1.5;text-overflow:ellipsis;cursor:pointer}.skill-target-control>svg{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--target-muted);pointer-events:none}.field.skill-target-field select:focus{border-color:var(--target-focus)!important;outline:2px solid var(--target-focus);outline-offset:2px;box-shadow:none}.field.skill-target-field select:disabled{cursor:not-allowed;opacity:.55}.skill-target-control:has(select:disabled)>svg{opacity:.55}.sky-night .field.skill-target-field{color-scheme:dark}.special-role-controls{display:grid;gap:14px;width:100%}.thief-cards,.gift-abilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.thief-card{min-width:0;min-height:166px;padding:16px 10px;border-width:2px;color:var(--role-ink);background:var(--role-wash);border-color:color-mix(in srgb,var(--role-accent) 35%,var(--role-wash));box-shadow:var(--shadow-xs)}.thief-card .role-card-icon{color:var(--role-accent)}.thief-card small{line-height:1.6;opacity:1}.thief-card-status{display:flex;align-items:center;justify-content:center;gap:4px;min-height:32px;font-size:11px;line-height:1.5}.thief-card.selected,.thief-card:focus-visible{border-color:var(--role-ink);box-shadow:none;outline:none}.thief-card.selected{background:color-mix(in srgb,var(--role-accent) 12%,var(--role-wash))}.thief-card:disabled{opacity:1;border-style:dashed}.thief-card:disabled .role-card-icon{opacity:.6}.thief-choice .thief-cards{margin-bottom:14px}.thief-choice .rule-explanation{margin-bottom:14px;text-align:left;font-size:13px}.special-role-controls>.magician-pair{padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--soft);color:var(--ink)}.special-role-controls>.magician-pair small{color:var(--muted)}.gift-abilities{grid-template-columns:repeat(3,minmax(0,1fr))}.gift-abilities button{display:flex;gap:6px;justify-content:center;align-items:center;padding:12px 4px;border:1px solid var(--line-strong);background:var(--card);color:var(--ink-2);box-shadow:none}.gift-abilities button>svg{color:var(--role-ink)}.gift-abilities button:hover:not(.selected):not(:disabled){background:var(--soft)}.gift-abilities button.selected{border-color:var(--role-accent);background:var(--role-wash);color:var(--role-ink);font-weight:600}.gift-abilities button:focus-visible{outline:2px solid var(--role-accent);outline-offset:3px}.gift-abilities button:disabled{opacity:1;border-style:dashed}.identity-memo{margin:12px 0;padding:12px 16px;text-align:center;font-size:12px}.identity-memo strong{display:block;margin-top:6px;font-size:24px;font-weight:600;letter-spacing:.12em;color:var(--ink)}.identity-memo small{display:block;margin-top:4px;color:var(--muted)}.recap-title,.recap-title-badge{--title-ink: var(--good-ink);--title-wash: var(--good-wash);--title-line: var(--good-line);background:var(--title-wash);color:var(--title-ink)}.recap-title-normal{--title-ink: var(--self-ink);--title-wash: var(--self-wash);--title-line: var(--self-line)}.recap-title-hard{--title-ink: var(--target-ink);--title-wash: var(--target-wash);--title-line: var(--target-line)}.recap-title-easter_egg{--title-ink: var(--magic-ink);--title-wash: var(--magic-wash);--title-line: var(--magic-line)}.recap-title-badge{position:absolute;top:0;right:8px;transform:translateY(-50%);display:inline-flex;align-items:center;gap:3px;max-width:calc(100% - 16px);padding:1px 4px;border:1px solid var(--title-line);border-radius:4px;font-size:8px;font-weight:600;line-height:1.4;white-space:nowrap;cursor:pointer;touch-action:manipulation}.recap-title-badge:before{content:"";position:absolute;top:-5px;right:0;bottom:-5px;left:0}.recap-title-badge>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}.recap-title-count{flex-shrink:0;font-variant-numeric:tabular-nums}.recap-titles-dialog{text-align:left;font-size:14px;font-weight:400;position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:min(420px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:24px;overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow-lg)}.recap-titles-dialog::backdrop{background:var(--backdrop);-webkit-backdrop-filter:blur(8px) saturate(1.1);backdrop-filter:blur(8px) saturate(1.1)}.recap-titles-close{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--soft);color:var(--muted)}.recap-titles-heading{margin-bottom:16px;padding-right:24px}.recap-titles-heading>span{font:600 11px/1.5 var(--font-sans);letter-spacing:.18em;color:var(--theme-ink)}.recap-titles-dialog .recap-titles-heading>h2{margin:6px 0 0;padding:0;font-size:19px;line-height:1.4;font-weight:700;letter-spacing:.04em;overflow-wrap:anywhere}.recap-titles-list{display:grid;gap:10px}.recap-title{min-width:0;border:1px solid var(--title-line);border-radius:16px;overflow:hidden}.recap-titles-dialog .recap-title>h3{margin:0;padding:10px 14px;border:0;background:none;color:var(--title-ink);font-size:14px;font-weight:700;line-height:1.5;letter-spacing:.04em;overflow-wrap:anywhere}.recap-titles-dialog .recap-title-description{margin:0;padding:10px 14px 12px;border-top:1px solid var(--title-line);color:var(--ink-2);background:var(--card);font-size:12px;line-height:1.8;overflow-wrap:anywhere}.recap-title-description>span{display:block;margin-bottom:4px;color:var(--title-ink);font-size:10px;font-weight:600;letter-spacing:.06em}.role-palette-rose,.role-detail-icon.rose{--role-ink: #985d56;--role-wash: #fcf3f0;--role-accent: #b5786a}.role-palette-violet,.role-detail-icon.violet{--role-ink: #78628f;--role-wash: #f5f2fa;--role-accent: #9785b4}.role-palette-sage,.role-detail-icon.sage{--role-ink: #617c50;--role-wash: #f1f6ed;--role-accent: #86a172}.role-palette-sand,.role-detail-icon.sand{--role-ink: #867144;--role-wash: #faf6ec;--role-accent: #b39a63}.role-palette-blue,.role-detail-icon.blue{--role-ink: #47719a;--role-wash: #f0f5f9;--role-accent: #7d9fbb}.role-palette-stone,.role-detail-icon.stone{--role-ink: #707454;--role-wash: #f5f5f0;--role-accent: #9c9f84}.sky-night :is(.role-palette-rose,.role-detail-icon.rose){--role-accent: #efb7b4}.sky-night :is(.role-palette-violet,.role-detail-icon.violet){--role-accent: #d8c2ed}.sky-night :is(.role-palette-sage,.role-detail-icon.sage){--role-accent: #b6d8bb}.sky-night :is(.role-palette-sand,.role-detail-icon.sand){--role-accent: #e4d0a6}.sky-night :is(.role-palette-blue,.role-detail-icon.blue){--role-accent: #b5d5ec}.sky-night :is(.role-palette-stone,.role-detail-icon.stone){--role-accent: #ced8cf}.sky-night :is(.role-palette-rose,.role-palette-violet,.role-palette-sage,.role-palette-sand,.role-palette-blue,.role-palette-stone,.role-detail-icon){--role-ink: var(--role-accent);--role-wash: color-mix(in srgb, var(--role-accent) 12%, var(--paper))}.seat-grid.finished-seat-grid{overflow-y:auto;padding:7px 1px 1px;row-gap:12px}.game-focused .seat-grid.finished-seat-grid{min-height:0;row-gap:12px}.seat.finished-seat{padding:7px;gap:4px}.seat.finished-seat .seat-avatar,.seat.finished-seat.dead .seat-avatar{display:grid;flex:1 0 24px;min-height:24px;max-height:40px;color:var(--role-ink, var(--ink-2));opacity:1}.seat.finished-seat .seat-avatar svg{width:28px;height:28px}.seat.finished-seat .seat-name,.seat.finished-seat.dead .seat-name{color:var(--role-ink, var(--ink));opacity:1;text-decoration:none}.seat.finished-seat .seat-nickname{display:block;max-width:100%;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;line-height:1.3;color:var(--ink-2)}.seat.finished-seat .seat-state{display:block}.many-seats .seat.finished-seat{padding-inline:3px}.seat-title-badge{position:absolute;top:0;right:5px;transform:translateY(-50%);max-width:calc(100% - 10px);padding:1px 4px;border:1px solid var(--good-line);border-radius:4px;background:var(--good-wash);color:var(--good-ink);font-size:8px;line-height:1.4;font-weight:600;white-space:nowrap;cursor:pointer;touch-action:manipulation}.seat-title-badge:before{content:"";position:absolute;top:-5px;right:0;bottom:-5px;left:0}.seat-title-badge>span{display:block;overflow:hidden;text-overflow:ellipsis}.seat-title-normal{background:var(--self-wash);color:var(--self-ink);border-color:var(--self-line)}.seat-title-hard{background:var(--target-wash);color:var(--target-ink);border-color:var(--target-line)}.seat-title-easter_egg{background:var(--magic-wash);color:var(--magic-ink);border-color:var(--magic-line)}.moderator-player-grid.finished-seat-grid{grid-auto-rows:minmax(118px,auto);padding-top:7px;row-gap:12px}.moderator-console{flex:1;min-height:0;display:flex;flex-direction:column}.app-shell{--say-wash: #dcece2;--sign-wash: #ece2f9}.app-shell.sky-night{--say-wash: #24432f;--sign-wash: #3b2e54}.moderator-panels{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;display:flex;flex-direction:column;gap:10px;padding:0 1px 14px;scrollbar-gutter:stable;scrollbar-width:thin;scroll-padding-top:56px}.moderator-panels>*{flex-shrink:0}.moderator-jump-nav{position:sticky;top:0;z-index:2;display:flex;gap:4px;padding:4px;border-radius:999px;background:var(--soft-2);box-shadow:0 0 0 4px var(--shell)}.moderator-jump-nav>button{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:34px;padding:4px 6px;border-radius:999px;color:var(--ink-2);font-size:12px;font-weight:600;white-space:nowrap}.moderator-jump-nav>button>svg{color:var(--theme-ink)}@media(hover:hover){.moderator-jump-nav>button:hover{background:var(--card);color:var(--ink)}}.moderator-roster,.moderator-script,.moderator-workbench{scroll-margin-top:12px}.moderator-panel{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px}.moderator-panel *{min-width:0}.moderator-panel :is(p,span,strong,small,em,legend,h3){overflow-wrap:anywhere}.moderator-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;min-height:30px}.moderator-panel-head h2{display:flex;align-items:center;gap:7px;font-size:15px;font-weight:700;letter-spacing:.04em;color:var(--ink);white-space:nowrap}.moderator-panel-head h2>svg{color:var(--theme-ink)}.moderator-panel-head>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--muted);padding:2px 10px;border-radius:999px;background:var(--soft-2)}.moderator-private-tag{display:inline-flex;align-items:center;gap:4px}.moderator-private-tag>svg{color:var(--magic-ink)}.moderator-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.moderator-step{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr);gap:12px;padding:12px;border-radius:14px}.moderator-step:not(:last-child):after{content:"";position:absolute;left:24.5px;top:42px;bottom:-8px;width:1px;background:var(--line)}.moderator-step-marker{position:relative;z-index:1;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--soft-2);color:var(--ink-2);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.moderator-step-body{min-width:0}.moderator-step h3{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;margin:3px 0 8px;font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--ink)}.moderator-step h3 small{font-size:11px;font-weight:500;letter-spacing:0;color:var(--muted);font-variant-numeric:tabular-nums}.moderator-step.is-current{box-shadow:inset 0 0 0 2px var(--theme-line)}.moderator-step.is-current .moderator-step-marker{background:var(--theme);color:var(--on-theme)}.moderator-step.is-current h3,.moderator-step.is-current h3 small{color:var(--theme-ink)}.moderator-step.is-attention{box-shadow:inset 0 0 0 2px var(--target-line)}.moderator-step.is-attention .moderator-step-marker{background:var(--target);color:var(--on-target)}.moderator-step.is-attention h3,.moderator-step.is-attention h3 small{color:var(--target-ink)}.moderator-step.is-done .moderator-step-marker{background:var(--theme-wash);color:var(--theme-ink)}.moderator-read-aloud{font-size:18px;font-weight:500;line-height:1.75;color:var(--ink);overflow-wrap:anywhere}.moderator-read-aloud p+p{margin-top:8px}.moderator-read-aloud p[data-kind=ballot]{font-size:14px;font-weight:400;line-height:1.75;color:var(--ink-2)}.moderator-read-aloud p.is-fallback{font-size:13px;font-weight:400;color:var(--muted)}.moderator-line-tag{display:inline-block;vertical-align:2px;margin-right:8px;padding:0 8px;border-radius:999px;background:var(--soft-2);color:var(--ink-2);font-size:11px;font-weight:600;line-height:20px;letter-spacing:.04em}.moderator-closing{font-size:18px;font-weight:600;line-height:1.6;color:var(--muted)}.moderator-step.is-current .moderator-closing{color:var(--ink)}.moderator-step-note{font-size:12px;line-height:1.7;color:var(--ink-2)}.moderator-ballot{margin-top:10px;font-size:12px}.moderator-ballot summary{display:inline-flex;align-items:center;gap:4px;cursor:pointer;list-style:none;color:var(--theme-ink);font-weight:600}.moderator-ballot summary::-webkit-details-marker{display:none}.moderator-ballot[open] summary>svg{transform:rotate(90deg)}.moderator-ballot .ballot-headings{margin-top:10px}.moderator-ballot .ballot-groups{margin:8px 0 0}.moderator-progress{height:4px;margin:0 0 10px;border-radius:4px;background:color-mix(in srgb,var(--line-strong) 60%,transparent);overflow:hidden}.moderator-progress>span{display:block;height:100%;background:var(--theme);transition:width .2s ease}.moderator-step.is-attention .moderator-progress>span{background:var(--target)}.moderator-chips,.moderator-record-list{display:flex;flex-wrap:wrap;gap:6px}.moderator-chips+.moderator-record-list,.moderator-progress+.moderator-record-list{margin-top:2px}.moderator-chips+.moderator-record-list{margin-top:10px}.moderator-chip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:5px 12px;border:1px solid var(--target-line);border-radius:999px;background:var(--card);color:var(--target-ink);font-size:12px;line-height:1.4}.moderator-chip strong{font-weight:700;font-variant-numeric:tabular-nums}.moderator-chip span{color:var(--ink-2)}.moderator-chips.is-compact{gap:5px}.moderator-chips.is-compact .moderator-chip{justify-content:center;min-width:34px;padding:5px 9px}@media(hover:hover){.moderator-chip:hover:not(:disabled){background:var(--target-wash)}}.moderator-record-list>span{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:var(--card);color:var(--ink-2);font-size:11px;font-variant-numeric:tabular-nums}.moderator-record-list>span.is-confirmed{color:var(--theme-ink);font-weight:600}.moderator-speech{display:flex;flex-direction:column;gap:9px}.moderator-speech>p{font-size:12px;font-weight:600;color:var(--ink-2)}.moderator-speech>div{display:flex;flex-wrap:wrap;gap:6px}.moderator-speech>div>span{padding:4px 10px;border-radius:999px;background:var(--card);color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.moderator-private-notes{margin-top:10px;padding:9px 12px;border-radius:12px;background:var(--card);color:var(--ink-2);font-size:12px;line-height:1.7}.moderator-private-notes strong{display:flex;align-items:center;gap:5px;margin-bottom:2px;color:var(--magic-ink);font-size:11px;font-weight:600}.moderator-private-notes p+p{margin-top:4px}.moderator-actor-card{position:relative;display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:12px;border:1px solid transparent;border-radius:14px;background:var(--soft);cursor:pointer}.moderator-actor-card:focus-within{border-color:var(--theme)}@media(hover:hover){.moderator-actor-card:hover{border-color:var(--line-strong)}}.moderator-actor-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.moderator-actor-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}.moderator-actor-card strong{font-size:16px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.moderator-actor-card small{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.moderator-actor-switch{display:inline-flex;align-items:center;gap:2px;flex-shrink:0;font-size:11px;font-weight:600;color:var(--theme-ink)}.moderator-actor-card>select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.moderator-actor-card .moderator-role-disc{width:34px;height:34px}.moderator-actor-card .moderator-role-disc>svg{width:18px;height:18px}.moderator-actor-card.tone-wolf .moderator-actor-role{color:var(--danger-ink)}.moderator-actor-card.tone-special .moderator-actor-role{color:var(--magic-ink)}.moderator-actor-card.tone-god .moderator-actor-role{color:var(--god-ink)}.moderator-actor-card.is-out{background:var(--dead-wash)}.moderator-state-pill{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600}.moderator-state-pill.is-pending{background:var(--target-wash);color:var(--target-ink)}.moderator-state-pill.is-complete{background:var(--theme-wash);color:var(--theme-ink)}.moderator-auto-hint{margin:-4px 0 12px;font-size:11px;line-height:1.7;color:var(--target-ink)}.moderator-actor-controls{display:flex;flex-direction:column;gap:12px}.moderator-recorded-choice,.moderator-revision{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:14px;background:var(--soft);font-size:12px;line-height:1.7}.moderator-recorded-choice>p{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--theme-ink)}.moderator-recorded-choice small{font-size:11px;color:var(--muted)}.moderator-revision h3{font-size:14px}.moderator-revision-notice{padding:8px 10px;border-radius:10px;background:var(--target-wash);color:var(--target-ink)}.moderator-console .btn{min-height:44px;font-size:13px;white-space:normal;line-height:1.5;letter-spacing:0;padding:8px 14px}.moderator-console .action-buttons{flex-wrap:wrap;gap:8px}.moderator-console .action-buttons>.btn{flex:1 1 auto}.moderator-console .btn.is-selected,.moderator-console .btn[aria-pressed=true]{border-color:var(--theme);color:var(--theme-ink);background:var(--theme-wash)}.moderator-action-hint{display:flex;gap:8px;padding:9px 12px;border-radius:12px;background:var(--soft);font-size:12px;line-height:1.7;color:var(--ink-2)}.moderator-action-hint>svg{flex-shrink:0;margin-top:4px;color:var(--magic-ink)}.moderator-action-hint p+p{margin-top:4px}.moderator-reveal>p,.moderator-last-words>p,.moderator-skill-confirm>p{font-size:12px;line-height:1.7;color:var(--ink-2)}.moderator-targets{border:0;padding:0;margin:0;min-width:0}.moderator-targets legend{padding:0;margin-bottom:8px;font-size:12px;font-weight:700;color:var(--ink)}.moderator-targets>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.moderator-targets button{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 9px;min-width:0;min-height:50px;border:1px solid var(--line-strong);border-radius:12px;background:var(--card);color:var(--ink)}.moderator-targets button>strong{font-size:13px;font-variant-numeric:tabular-nums}.moderator-targets button>span{width:100%;font-size:10px;color:var(--muted);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-align:left}.moderator-targets button>svg{position:absolute;right:7px;top:9px;color:var(--target-ink)}@media(hover:hover){.moderator-targets button:hover:not(:disabled):not(.is-selected){border-color:var(--target-line)}}.moderator-targets button.is-selected{border:2px solid var(--target-line);padding:7px 8px;background:var(--target-wash)}.moderator-targets button.is-selected>strong{color:var(--target-ink)}.moderator-targets button:disabled{opacity:1;border-style:dashed;background:var(--soft);color:var(--faint)}.moderator-targets button:disabled>span{color:var(--faint)}.moderator-targets>p,.moderator-target-summary{font-size:12px;line-height:1.6;color:var(--muted);margin-top:6px}.moderator-empty{font-size:12px;line-height:1.8;color:var(--muted);padding:4px 0}.moderator-thief,.moderator-witch,.moderator-last-words,.moderator-skill-confirm,.moderator-reveal{display:flex;flex-direction:column;gap:11px}.moderator-thief>p,.moderator-witch>p{display:flex;align-items:center;gap:6px;font-size:12px;line-height:1.7;color:var(--ink-2)}.moderator-witch>p>svg{color:var(--magic-ink)}.moderator-thief-cards,.moderator-potions{display:flex;gap:7px}.moderator-thief-cards>button,.moderator-potions>button{flex:1}.moderator-speech-choice{display:flex;flex-direction:column;gap:10px}.moderator-speech-choice>p{font-size:13px;line-height:1.6;color:var(--ink-2)}.moderator-speech-choice .speech-options{margin-top:0}.moderator-day-skills{padding:12px;border-radius:14px;background:var(--soft);display:flex;flex-direction:column;gap:10px}.moderator-day-skills h3{font-size:12px;font-weight:600;color:var(--ink-2)}.moderator-console .moderator-danger{color:var(--danger-ink);border-color:var(--danger-line)}.moderator-skill-confirm{padding:12px;border-radius:12px;background:var(--card)}.moderator-console .skill-target-field{margin:0}.moderator-private-profile{font-size:11px;color:var(--muted);line-height:1.8;padding-top:4px}.moderator-private-profile summary{cursor:pointer;display:flex;align-items:center;gap:6px;list-style:none;font-weight:600;color:var(--ink-2)}.moderator-private-profile summary::-webkit-details-marker{display:none}.moderator-private-profile summary>svg:first-child{color:var(--magic-ink)}.moderator-private-profile summary>svg:last-child{margin-left:auto}.moderator-private-profile[open] summary>svg:last-child{transform:rotate(90deg)}.moderator-private-profile>div{margin-top:8px;padding:9px 12px;border-radius:12px;background:var(--soft)}.moderator-private-profile>div>p+p{margin-top:5px}.moderator-feedback{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 16px 16px;border:1px solid var(--tone-line);border-radius:18px;background-color:var(--tone-panel);background-image:radial-gradient(120% 60% at 50% 0%,color-mix(in srgb,var(--tone) 10%,transparent),transparent 62%)}.moderator-feedback .result-icon{width:48px;height:48px;margin-bottom:10px}.moderator-feedback .result-icon>svg{width:22px;height:22px}.moderator-feedback .eyebrow{display:flex;align-items:center;gap:4px;margin-bottom:4px;color:var(--tone-ink);letter-spacing:.12em}.moderator-feedback h3{font-size:17px;font-weight:700;letter-spacing:.04em;color:var(--tone-ink)}.moderator-feedback-body{width:100%;margin:8px 0 2px;font-size:13px;line-height:1.75;color:var(--ink-2);overflow-wrap:anywhere}.moderator-feedback-body>p+p{margin-top:6px}.moderator-result{display:block;margin:4px 0 10px;font-size:22px;font-weight:800;line-height:1.4;letter-spacing:.06em;color:var(--tone-ink)}.moderator-result strong{font-size:30px;letter-spacing:.08em}.moderator-feedback-hint{margin:6px 0 12px;font-size:11px;line-height:1.6;color:var(--muted)}.moderator-feedback .btn.primary:not(:disabled){background:var(--tone-button);border-color:var(--tone-button);color:#fff}.moderator-feedback .btn.primary:hover:not(:disabled){background:var(--tone-button-hover);border-color:var(--tone-button-hover)}.moderator-player-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.moderator-player{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:0;padding:9px 10px;text-align:left;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink)}@media(hover:hover){.moderator-player:hover:not(:disabled):not(.is-active){border-color:var(--line-strong);box-shadow:var(--shadow-xs)}}.moderator-player.is-pending{border-color:var(--target-line);background:var(--target-wash)}.moderator-player.is-out{border-color:var(--dead-line);background:var(--dead-wash);color:var(--dead)}.moderator-player.is-active{border:2px solid var(--theme);padding:8px 9px}.moderator-player:disabled{opacity:1}.moderator-player-top{display:flex;align-items:center;gap:4px;width:100%;min-height:18px}.moderator-player-top>strong{font-size:15px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}.moderator-player-top>strong small{font-size:9px;font-weight:400;margin-left:1px;color:var(--muted)}.moderator-player-top>svg{color:var(--target)}.moderator-life{margin-left:auto;font-size:10px;color:var(--theme-ink)}.moderator-life.is-out{color:var(--dead);background:var(--dead-wash-2);border-radius:999px;padding:0 6px;line-height:18px}.moderator-player-identity{display:flex;align-items:center;gap:6px;min-width:0}.moderator-role-disc{flex:0 0 auto;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--theme-wash);color:var(--theme-ink)}.moderator-role-disc>svg{width:14px;height:14px}.tone-wolf>.moderator-role-disc,.tone-wolf .moderator-player-identity>.moderator-role-disc{background:var(--danger-wash);color:var(--danger-ink)}.tone-god>.moderator-role-disc,.tone-god .moderator-player-identity>.moderator-role-disc{background:var(--god-wash);color:var(--god-ink)}.tone-special>.moderator-role-disc,.tone-special .moderator-player-identity>.moderator-role-disc{background:var(--magic-wash);color:var(--magic-ink)}.is-out .moderator-role-disc{background:var(--dead-wash-2);color:var(--dead)}.moderator-player-role{min-width:0;font-size:13px;font-weight:700;line-height:1.4;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.moderator-player-role.is-wolf{color:var(--danger-ink)}.tone-special .moderator-player-role{color:var(--magic-ink)}.tone-god .moderator-player-role{color:var(--god-ink)}.is-out .moderator-player-role{color:var(--dead)}.moderator-player-name{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.moderator-player-status{min-height:14px;font-size:10px;line-height:1.4;color:var(--muted)}.moderator-player-status.is-pending{color:var(--target-ink);font-weight:700}.moderator-player-status.is-complete{color:var(--theme-ink)}.moderator-advance{flex-shrink:0;display:flex;flex-direction:column;gap:8px;margin-inline:calc(-1 * var(--game-gutter, 0px));padding:10px var(--game-gutter, 0px) max(10px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}.moderator-advance-status{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;line-height:1.5;color:var(--ink-2)}.moderator-advance-status>svg{flex-shrink:0;color:var(--muted)}.moderator-advance-status.is-pending,.moderator-advance-status.is-pending>svg{color:var(--target-ink)}.moderator-advance-status.is-ready,.moderator-advance-status.is-ready>svg{color:var(--theme-ink)}.moderator-advance .btn{min-height:46px}.room-page.is-moderating>.finished-actions{flex-shrink:0;padding-bottom:max(10px,env(safe-area-inset-bottom))}.moderator-flow-legend{margin:-4px 0 10px;font-size:11px;line-height:22px;color:var(--muted)}.moderator-flow{gap:4px}.moderator-flow.moderator-read-aloud{font-size:14px;font-weight:400}.moderator-flow>li{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr);gap:12px;padding:9px 12px;border-radius:14px}.moderator-flow>li:not(:last-child):after{content:"";position:absolute;left:24.5px;top:36px;bottom:-6px;width:1px;background:var(--line)}.moderator-flow .moderator-step-marker{margin-top:2px}.moderator-say{font-size:18px;font-weight:600;line-height:1.75;color:var(--ink)}.moderator-say-text{padding:1px 6px;border-radius:6px;background:var(--say-wash);color:var(--ink);-webkit-box-decoration-break:clone;box-decoration-break:clone}.moderator-sign{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;max-width:100%;margin-left:6px;padding:1px 9px;border-radius:8px;background:var(--sign-wash);color:var(--magic-ink);font-size:.84em;font-weight:700;line-height:1.75;vertical-align:1px}.moderator-sign>svg{flex-shrink:0}.moderator-sign small{padding:0 6px;border-radius:999px;background:var(--card);font-size:10px;font-weight:600;line-height:18px}.moderator-sign.is-draft{outline:1.5px dashed var(--magic-line);outline-offset:-1.5px}.moderator-sign.is-placeholder{background:transparent;color:var(--muted);font-weight:500;outline:1px dashed var(--line-strong);outline-offset:-1px}.moderator-flow-legend .moderator-say-text,.moderator-flow-legend .moderator-sign{margin:0 2px;padding:0 6px;font-size:11px;line-height:19px}.moderator-cue{display:flex;align-items:flex-start;gap:7px;margin-top:5px;font-size:12px;line-height:1.65;color:var(--ink-2)}.moderator-say+.moderator-cue{margin-top:4px}.moderator-cue-tag{flex:0 0 auto;display:inline-block;padding:0 7px;border-radius:999px;background:var(--sign-wash);color:var(--magic-ink);font-size:10px;font-weight:700;line-height:19px;letter-spacing:.08em}.moderator-cue>.moderator-cue-tag{margin-top:1px}.moderator-flow-line.is-cue-only .moderator-step-marker{background:transparent;color:var(--magic-ink)}.moderator-flow-line.is-current{box-shadow:inset 0 0 0 2px var(--theme-line)}.moderator-flow-line.is-current .moderator-step-marker{background:var(--theme);color:var(--on-theme)}.moderator-flow-line.is-attention{box-shadow:inset 0 0 0 2px var(--target-line)}.moderator-flow-line.is-attention .moderator-step-marker{background:var(--target);color:var(--on-target)}.moderator-flow-line.is-current .moderator-cue{color:var(--ink)}.moderator-flow-results p{font-size:15px;line-height:1.7;color:var(--ink)}.moderator-flow-results p+p{margin-top:6px}.moderator-flow-work{background:var(--soft)}.moderator-flow-work.is-attention .moderator-step-marker{background:var(--target-wash);color:var(--target-ink)}.moderator-flow-work.is-done .moderator-step-marker{background:var(--theme-wash);color:var(--theme-ink)}.moderator-work>h3{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;margin:3px 0 8px;font-size:13px;font-weight:700;color:var(--ink)}.moderator-work>h3 small{font-size:11px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}.moderator-step.is-attention .moderator-work>h3,.moderator-step.is-attention .moderator-work>h3 small{color:var(--target-ink)}.moderator-step.is-current:not(.is-attention) .moderator-work>h3{color:var(--theme-ink)}.moderator-read-aloud p[data-kind=cue-say]{margin-top:8px}.moderator-step-body>.moderator-cue{margin-top:8px}.moderator-signup{display:flex;flex-direction:column;gap:10px}.moderator-signup-hint{font-size:12px;line-height:1.7;color:var(--ink-2)}.moderator-signup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}.moderator-signup-seat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:66px;padding:9px 10px;border:1px solid var(--line-strong);border-radius:14px;background:var(--card);color:var(--ink);text-align:left}.moderator-signup-seat strong{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.moderator-signup-seat strong small{font-size:9px;font-weight:400;margin-left:1px;color:var(--muted)}.moderator-signup-seat span{width:100%;font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.moderator-signup-seat em{font-style:normal;font-size:11px;font-weight:600;color:var(--muted)}.moderator-signup-seat.is-on{border:2px solid var(--magic-line);padding:8px 9px;background:var(--magic-wash);color:var(--magic-ink)}.moderator-signup-seat.is-on em,.moderator-signup-seat.is-on strong small{color:var(--magic-ink)}.moderator-signup-summary{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding:9px 12px;border-radius:12px;background:var(--soft);font-size:12px;color:var(--ink-2)}.moderator-signup-summary>span:first-child{font-weight:600;color:var(--magic-ink)}.moderator-reveal-button{margin-bottom:8px}.player-reveal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;flex-direction:column;padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom));background:var(--shell)}.player-reveal-stage{position:relative;flex:1;min-height:0;container-type:size}.player-reveal-sheet{--pad: clamp(16px, 5cqmin, 40px);position:absolute;left:50%;top:50%;width:100cqw;height:100cqh;box-sizing:border-box;container-type:size;overflow:hidden auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,3cqmin,28px);padding:var(--pad);border:1px solid var(--line);border-radius:28px;background:var(--paper);text-align:center;transform:translate(-50%,-50%) rotate(var(--turn, 0deg));transition:transform .3s var(--ease)}.player-reveal.is-sideways .player-reveal-sheet{width:100cqh;height:100cqw}.player-reveal-sheet>*{flex-shrink:0;max-width:100%}.player-reveal-sheet .eyebrow{margin:0;font-size:clamp(12px,3.2cqmin,20px);letter-spacing:.2em}.player-reveal-sheet h2{font-size:clamp(20px,7cqmin,52px);font-weight:700;line-height:1.3;letter-spacing:.06em;color:var(--ink)}.player-reveal-note{font-size:clamp(14px,4.4cqmin,30px);line-height:1.7;color:var(--ink-2)}.player-reveal-verdict{display:flex;flex-direction:column;align-items:center;gap:clamp(4px,2cqmin,16px)}.player-reveal-verdict>span{font-size:clamp(16px,6cqmin,44px);color:var(--muted)}.player-reveal-verdict>strong{font-size:max(36px,min(30cqh,calc(84cqw / (var(--chars, 2) * 1.1))));font-weight:800;line-height:1.15;letter-spacing:.1em;white-space:nowrap;color:var(--ink)}.player-reveal-verdict.tone-good>strong{color:var(--good-ink)}.player-reveal-verdict.tone-wolf>strong{color:var(--danger-ink)}.player-reveal-verdict.tone-special>strong{color:var(--magic-ink)}.player-reveal-sheet .thief-cards{flex:1 1 auto;width:100%;min-height:min(160px,40cqh);max-height:52cqh;text-align:center}.player-reveal-sheet .thief-card{height:100%;min-height:0;gap:clamp(6px,2cqmin,18px)}.player-reveal-sheet .thief-card h3{font-size:clamp(18px,8cqmin,56px)}.player-reveal-sheet .thief-card small{font-size:clamp(11px,3cqmin,20px)}.player-reveal-sheet .thief-card .role-card-icon{width:clamp(46px,14cqmin,110px);height:clamp(46px,14cqmin,110px)}.player-reveal-sheet .thief-card .role-card-icon>svg{width:52%;height:52%}.player-reveal-sheet .thief-card-status{font-size:clamp(11px,3cqmin,20px)}.player-reveal-sheet .rule-explanation{width:100%;text-align:left;font-size:clamp(13px,3.6cqmin,22px)}.player-reveal-sheet .rule-notes{margin-top:.6em;font-size:.85em}.player-reveal-tools{flex-shrink:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding-top:10px}.player-reveal-tools>button{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border:1px solid var(--line-strong);border-radius:999px;background:var(--card);color:var(--ink-2);font-size:13px}.player-reveal-tools>button[aria-pressed=true]{border-color:var(--theme);background:var(--theme-wash);color:var(--theme-ink);font-weight:700}.player-reveal-tools>.player-reveal-close{border-color:var(--theme);background:var(--theme);color:var(--on-theme)}@media(max-width:420px){.player-reveal-tools>button{flex:1 1 0;justify-content:center;padding:8px 6px;font-size:12px}.player-reveal-tools>.player-reveal-close{flex-basis:100%}}@media(prefers-reduced-motion:reduce){.player-reveal-sheet{transition:none}}@media(max-width:759px){.room-page.is-moderating.is-live{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);gap:0 8px}.room-page.is-moderating.is-live>*{grid-column:1 / -1;min-width:0}.room-page.is-moderating.is-live>.room-summary{grid-row:1;grid-column:1;margin-bottom:8px}.room-page.is-moderating.is-live>.room-tools{grid-row:1;grid-column:2;margin-bottom:8px}.room-page.is-moderating.is-live>.phase-strip{display:none}.room-page.is-moderating.is-live>.blood-moon-notice{grid-row:2;margin-bottom:8px}.room-page.is-moderating.is-live>.moderator-console{grid-row:3;min-height:0}.room-page.is-moderating.is-live .room-summary :is(h1,.room-header-actions),.room-page.is-moderating.is-live .room-summary p>span:not(.room-code):not(.connection-dot){display:none}.room-page.is-moderating.is-live .room-summary{height:100%}.room-page.is-moderating.is-live .room-summary p{gap:5px}}@media(min-width:760px){.app-shell.moderating{max-width:none}.moderator-panels{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"guide work" "roster roster";gap:12px;overflow:hidden;padding:0 0 12px}.moderator-jump-nav{display:none}.moderator-script{grid-area:guide}.moderator-workbench{grid-area:work}.moderator-roster{grid-area:roster;max-height:40vh}.moderator-player-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}.moderator-panel{min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin}.moderator-panels.is-finished{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"guide roster"}.moderator-panels.is-finished .moderator-roster{max-height:none}.moderator-advance{flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.moderator-advance .btn{flex:0 0 auto;width:auto;min-width:300px;max-width:46%}.moderator-read-aloud,.moderator-closing{font-size:19px}}@media(min-width:1000px){.app-shell.moderating{width:100%;height:100dvh;margin:0;border:0;border-radius:0;box-shadow:none}.moderator-panels{grid-template-columns:minmax(0,1fr) minmax(0,.95fr) minmax(0,1.25fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"guide work roster";gap:12px}.moderator-roster{max-height:none}.moderator-player-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.room-page.is-moderating{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto minmax(0,1fr) auto;column-gap:12px}.room-page.is-moderating>*{grid-column:1 / -1;min-width:0}.room-page.is-moderating>.room-summary{grid-row:1}.room-page.is-moderating>.phase-strip{grid-row:2;grid-column:1}.room-page.is-moderating>.room-tools{grid-row:2;grid-column:2;align-self:center;gap:14px;padding-inline:16px}.room-page.is-moderating>.blood-moon-notice{grid-row:3}.room-page.is-moderating>.moderator-console{grid-row:4;min-height:0}.room-page.is-moderating>.finished-actions{grid-row:5}}@media(min-width:1200px){.moderator-panels{gap:14px}.moderator-read-aloud,.moderator-closing{font-size:20px}.moderator-say{font-size:19px}}@media(max-width:380px){.moderator-panel{padding:12px}.moderator-step{gap:10px;padding:10px}.moderator-step:not(:last-child):after{left:22.5px}.moderator-read-aloud,.moderator-closing,.moderator-say{font-size:16px}.moderator-flow>li{gap:10px;padding:8px 10px}.moderator-flow>li:not(:last-child):after{left:22.5px}.moderator-player-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}.moderator-player{padding:8px}.moderator-player.is-active{padding:7px}.moderator-targets>div{grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}.moderator-panel-head{flex-wrap:wrap}.moderator-console .btn{padding-inline:10px}}.invite-qr-code{display:block;width:240px;max-width:100%;height:auto;aspect-ratio:1;margin-inline:auto;padding:8px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:var(--shadow-sm);flex-shrink:0}.invite-qr-code-error{margin:0;text-align:center;color:var(--muted)}.action-countdown{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:var(--soft-2);color:var(--muted);font-size:12px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap;transition:background-color .3s ease,color .3s ease,border-color .3s ease,padding .3s ease}.action-countdown strong{min-width:2ch;text-align:right;font-weight:700}.action-countdown small{font-size:10px;font-weight:500}.action-countdown.is-urgent{gap:4px;padding:5px 12px;border-color:var(--danger);background:var(--danger);color:var(--on-danger);box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 24%,transparent)}.action-countdown.is-urgent strong{font-size:22px;line-height:1;animation:action-countdown-tick .45s ease-out}.action-countdown.is-urgent small{font-size:11px;font-weight:600}@keyframes action-countdown-tick{0%{transform:scale(1.3)}}@media(max-width:350px){.phase-strip .action-countdown{gap:2px;padding:3px 7px}.phase-strip .action-countdown svg{display:none}.phase-strip .action-countdown strong{min-width:0}.phase-strip .action-countdown.is-urgent{padding:4px 8px}.phase-strip .action-countdown.is-urgent strong{font-size:18px}}.action-countdown.is-floating{position:fixed;top:max(10px,env(safe-area-inset-top));left:50%;z-index:80;transform:translate(-50%);box-shadow:var(--shadow-md)}.action-countdown.is-floating.is-urgent{box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 24%,transparent),var(--shadow-md)}.has-floating-countdown{--countdown-space: 46px}.has-floating-countdown .modal-backdrop{padding-top:calc(22px + var(--countdown-space))}.has-floating-countdown .modal{max-height:calc(100dvh - 44px - var(--countdown-space))}.has-floating-countdown .modal-backdrop.night-action-backdrop{padding-top:calc(max(12px,env(safe-area-inset-top)) + var(--countdown-space))}.has-floating-countdown .night-action-backdrop>.modal{max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(12px,env(safe-area-inset-bottom)) - var(--countdown-space))}@media(max-width:600px){.has-floating-countdown .modal-backdrop:not(.result-backdrop){padding-top:calc(max(16px,env(safe-area-inset-top)) + var(--countdown-space))}.has-floating-countdown .modal-backdrop:not(.result-backdrop)>.modal{max-height:calc(100dvh - max(16px,env(safe-area-inset-top)) - var(--countdown-space))}}@media(prefers-reduced-motion:reduce){.action-countdown{transition:none}.action-countdown.is-urgent strong{animation:none}}.host-tool-title{display:flex;align-items:center;gap:9px}.host-tool-title>svg{flex-shrink:0}.host-member-select{display:block;width:100%;min-height:44px;margin:8px 0 16px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--soft);color:inherit;font:inherit;font-size:16px}.modal-recap{max-width:680px;padding:26px;overscroll-behavior:contain}.modal-recap:has(.recap-tabs){height:calc(100dvh - 44px);scrollbar-gutter:stable}.game-recap{color:var(--ink)}.recap-summary{--side: var(--good-ink);--side-wash: var(--good-wash);--side-line: var(--good-line);display:flex;align-items:center;gap:12px;margin:16px 0;padding:12px 14px;background:var(--side-wash);border:1px solid var(--side-line);border-radius:18px}.recap-summary[data-side=wolf]{--side: var(--danger-ink);--side-wash: var(--danger-wash);--side-line: var(--danger-line)}.recap-summary[data-side=third-party]{--side: var(--magic-ink);--side-wash: var(--magic-wash);--side-line: var(--magic-line)}.recap-summary>div{min-width:0}.recap-summary-icon{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--card);color:var(--side);box-shadow:var(--shadow-xs)}.recap-summary-icon>svg{width:20px;height:20px}.recap-summary strong{display:block;font-size:18px;font-weight:700;letter-spacing:.06em;color:var(--ink)}.recap-tabs{display:flex;gap:4px;padding:4px;background:var(--soft-2);border-radius:999px;margin:16px 0 12px}.recap-tabs>button{display:flex;flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;min-height:36px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}@media(hover:hover){.recap-tabs>button:hover{color:var(--ink)}}.recap-tabs>button[aria-selected=true]{background:var(--card);color:var(--theme-ink);box-shadow:var(--shadow-sm)}.game-recap button:focus-visible,.game-recap summary:focus-visible{outline:2px solid var(--theme);outline-offset:2px}.game-recap [role=tabpanel]:focus{outline:none}.recap-events{--recap-night-panel: color-mix(in srgb, var(--self-wash) 55%, var(--soft));--recap-day-panel: var(--soft);--recap-setup-panel: var(--soft)}.recap-period{background:var(--recap-setup-panel);border-radius:20px;padding:12px;margin-top:14px;scroll-margin-top:12px}.recap-period-night{background:var(--recap-night-panel)}.recap-period-day{background:var(--recap-day-panel)}.recap-period-heading{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding:0 2px;color:var(--ink)}.recap-period-icon{display:grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--card);color:var(--theme-ink);box-shadow:var(--shadow-xs)}.recap-period-icon>svg{width:17px;height:17px}.game-recap .recap-period-heading h3{font-size:16px;color:inherit;padding:0;margin:0;font-weight:700;letter-spacing:.06em}.recap-period-events{display:flex;flex-direction:column;gap:8px}.recap-event{--recap-accent: var(--muted);--recap-wash: var(--soft-2);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;overflow:hidden;box-shadow:var(--shadow-xs)}.recap-tone-good,.recap-tone-heal{--recap-accent: var(--good-ink);--recap-wash: var(--good-wash)}.recap-tone-danger{--recap-accent: var(--danger-ink);--recap-wash: var(--danger-wash)}.recap-tone-magic{--recap-accent: var(--magic-ink);--recap-wash: var(--magic-wash)}.recap-tone-blue{--recap-accent: var(--self-ink);--recap-wash: var(--self-wash)}.recap-tone-orange{--recap-accent: var(--target-ink);--recap-wash: var(--target-wash)}.recap-action-row{display:grid;grid-template-columns:minmax(0,1fr) 95px minmax(0,1fr);gap:8px;align-items:center}.recap-player-group{min-width:0;display:flex;flex-direction:column;gap:8px}.recap-player{--camp: var(--good-ink);--camp-wash: var(--good-wash);display:flex;align-items:center;gap:8px;min-width:0;color:var(--camp)}.recap-player-danger{--camp: var(--danger-ink);--camp-wash: var(--danger-wash)}.recap-player-magic{--camp: var(--magic-ink);--camp-wash: var(--magic-wash)}.recap-player-gold{--camp: var(--god-ink);--camp-wash: var(--god-wash)}.recap-player-number{display:grid;grid-auto-flow:column;align-items:baseline;place-content:center;flex:0 0 auto;width:39px;height:39px;padding:0;white-space:nowrap;letter-spacing:-.03em;font-size:20px;line-height:1;font-weight:700;border-radius:12px;background:color-mix(in srgb,var(--camp) 8%,var(--camp-wash));font-variant-numeric:tabular-nums}.recap-player-number>small{font-size:8px;margin-left:1px;font-weight:500;letter-spacing:0}.recap-player-info{display:flex;flex-direction:column;gap:5px;min-width:0}.recap-player-info>strong{font-size:12px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.recap-player-info>strong>em{display:inline-block;font-size:8px;font-style:normal;font-weight:700;line-height:1.5;color:var(--on-self);background:var(--self);padding:0 5px;margin-left:4px;border-radius:999px;vertical-align:middle}.recap-player-info>strong>em.recap-identity-lucky{color:var(--target-ink);background:var(--target-wash)}.recap-player-info>strong>em.recap-identity-lover{color:var(--magic-ink);background:var(--magic-wash)}.recap-player-info>strong>em.recap-identity-thief{color:var(--role-ink);background:var(--role-wash)}.recap-player-info>span{font-size:11px;color:var(--muted);line-height:1.5;overflow-wrap:anywhere}.recap-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--recap-accent);text-align:center}.recap-action>strong{font-size:12px;font-weight:700;line-height:1.5}.recap-action>svg{width:58px;height:23px}.recap-role-choice-rows{row-gap:10px}.recap-role-choice-actor{grid-row:1 / 3;min-width:0}.recap-role-icon{margin-right:3px}.recap-role-option{min-width:0;padding:12px 6px;border:1px solid color-mix(in srgb,var(--role-accent, var(--muted)) 28%,var(--card));border-radius:12px;background:var(--role-wash, var(--soft));color:var(--role-ink, var(--muted));text-align:center;overflow-wrap:anywhere}.recap-role-option>strong{display:inline-flex;align-items:center;justify-content:center;gap:4px;max-width:100%;font-size:12px;font-weight:700}.recap-role-discarded-options{display:grid;gap:6px;min-width:0}.recap-role-discarded{border-style:dashed}.recap-choice-discarded{color:var(--muted)}.recap-collective{font-size:14px;color:var(--recap-accent);font-weight:700;letter-spacing:.04em;text-align:center;padding:11px 0}.recap-collective-wolf{color:var(--danger-ink)}.recap-no-target{font-size:12px;color:var(--muted);line-height:1.7;text-align:center;padding:9px 5px;border:1px dashed var(--line-strong);border-radius:12px;overflow-wrap:anywhere}.recap-target{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0}.recap-target>.recap-player-group{width:100%}.recap-target>.recap-no-target{width:100%}.game-recap .recap-action-result{display:inline-block;font-size:10px;font-weight:600;color:var(--recap-accent);background:var(--recap-wash);line-height:1.6;margin:0;padding:2px 8px;border:0;border-radius:999px;overflow-wrap:anywhere}.recap-vote-details{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.recap-detail-label{font-size:10px;font-weight:600;letter-spacing:.06em;color:var(--muted);display:block;margin-bottom:8px}.recap-vote-group{display:grid;grid-template-columns:minmax(0,1.45fr) 22px minmax(0,1fr);gap:6px;align-items:center;padding:9px 0}.recap-vote-group+.recap-vote-group{border-top:1px dashed var(--line)}.recap-voters{display:flex;flex-direction:column;gap:9px;min-width:0}.recap-voter{display:block;min-width:0}.recap-vote-arrow{color:var(--faint)}.recap-player-compact{gap:6px}.recap-player-compact .recap-player-number{font-size:15px;width:32px;height:32px;border-radius:10px}.recap-player-compact .recap-player-info{gap:2px}.recap-player-compact .recap-player-info>strong{font-size:10px}.recap-player-compact .recap-player-info>span{font-size:10px}.recap-vote-weight,.recap-received-votes{display:inline;font-size:inherit;font-weight:600;white-space:nowrap}.recap-vote-weight{color:var(--target-ink)}.recap-received-votes{color:var(--theme-ink)}.recap-player-info>.recap-weighted-nickname{display:flex;align-items:baseline;min-width:0;gap:1px}.recap-weighted-nickname>.recap-player-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recap-weighted-nickname>.recap-vote-weight,.recap-weighted-nickname>.recap-received-votes,.recap-weighted-nickname>.recap-withdrawn{flex-shrink:0;font-size:9px}.recap-sheriff-icon{display:inline-block;color:var(--target);margin-left:4px;vertical-align:-2px;flex-shrink:0}.recap-election-date{font-size:10px;color:var(--target-ink)}.recap-abstain{font-size:11px;color:var(--muted);text-align:center}.recap-resolution-heading,.recap-notice-heading{display:flex;align-items:flex-start;gap:10px;line-height:1.8}.recap-resolution-heading>strong,.recap-notice-heading>strong{font-size:12px;font-weight:700;flex-shrink:0;color:var(--recap-accent)}.recap-resolution-heading>span,.recap-notice-heading>span{font-size:11px;color:var(--muted);overflow-wrap:anywhere}.recap-resolution>.recap-player-group{margin-top:10px;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:12px}.recap-resolution>.recap-player-group>.recap-player{flex:0 1 auto;max-width:100%}.recap-card-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;color:var(--ink);text-align:left}.recap-card-heading>strong{font-size:13px;font-weight:700;letter-spacing:.04em}.recap-skill-heading{display:flex;align-items:center;gap:6px}.recap-skill-heading>svg{color:var(--recap-accent)}.recap-idiot-card{--recap-accent: var(--role-ink);--recap-wash: var(--role-wash)}.recap-idiot-card .recap-player{--camp: var(--role-ink);--camp-wash: var(--role-wash)}.recap-badge-card{--recap-accent: var(--target-ink);--recap-wash: var(--target-wash)}.recap-badge-destroyed{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%;padding:10px 5px;color:var(--muted)}.recap-badge-destroyed>strong{font-size:11px;font-weight:600;color:var(--ink-2)}.recap-badge-destroyed>span{font-size:10px;color:var(--muted)}.recap-linked-deaths{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}.recap-result-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:600;line-height:1.6;background:var(--recap-wash);color:var(--recap-accent)}.recap-election-outcome{background:var(--target-wash);color:var(--target-ink)}.recap-signup-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.recap-signup-group{padding:10px;background:var(--soft);border-radius:12px;min-width:0}.recap-signup-group h4{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:0 0 10px;color:var(--magic-ink);font-size:12px;font-weight:700;letter-spacing:.04em}.recap-signup-group[data-joined=false] h4{color:var(--good-ink)}.recap-signup-group h4>span{padding:1px 8px;border-radius:999px;background:var(--card);font-size:10px;font-weight:500;letter-spacing:0;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.recap-signup-players{display:flex;flex-direction:column;gap:10px}.recap-withdrawn{display:inline;color:var(--target-ink);white-space:nowrap}.recap-group-empty{display:block;padding:8px 0;text-align:center;color:var(--faint);font-size:11px}.recap-death-players{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.recap-death-player{display:grid;flex:0 1 auto;width:max-content;max-width:min(100%,260px);grid-template-columns:auto minmax(0,1fr) fit-content(45%);column-gap:5px;row-gap:4px;min-width:min(100%,220px);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:left}.recap-death-player>.recap-player,.recap-death-player .recap-player-info{display:contents}.recap-death-player .recap-player-number{grid-column:1;grid-row:1 / 3;align-self:center}.recap-death-player .recap-player-info>strong{grid-column:2 / 4;grid-row:1;min-width:0}.recap-death-player .recap-player-info>span{grid-column:2;grid-row:2;align-self:end;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recap-death-reason{grid-column:3;grid-row:2;justify-self:end;align-self:end;min-width:0;max-width:100%;color:var(--danger-ink);background:var(--danger-wash);border-radius:999px;padding:2px 8px;font-size:10px;font-weight:600;line-height:1.6;overflow-wrap:anywhere;text-align:center}.recap-duel-card .recap-duel-player{display:flex;flex-direction:column;justify-content:center;align-self:stretch;gap:6px;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 6px;text-align:left}.recap-duel-player .recap-duel-status{align-self:flex-end}.recap-event.recap-victory-card{--recap-accent: var(--ink-2);--recap-victory-tint: var(--soft-2);--recap-victory-line: var(--line);display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:14px;padding:24px 18px;border-color:var(--recap-victory-line);text-align:center}.recap-victory-card[data-side=village]{--recap-accent: var(--good-ink);--recap-victory-tint: var(--good-wash);--recap-victory-line: var(--good-line)}.recap-victory-card[data-side=wolf]{--recap-accent: var(--danger-ink);--recap-victory-tint: var(--danger-wash);--recap-victory-line: var(--danger-line)}.recap-victory-card[data-side=third-party]{--recap-accent: var(--magic-ink);--recap-victory-tint: var(--magic-wash);--recap-victory-line: var(--magic-line)}.recap-victory-emblem{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;border:1px solid var(--recap-victory-line);background:var(--recap-victory-tint);color:var(--recap-accent)}.recap-victory-heading{min-width:0;max-width:100%}.recap-victory-eyebrow{display:block;color:var(--recap-accent);font:600 11px/1.5 var(--font-sans);letter-spacing:.18em}.game-recap .recap-victory-title{margin:6px 0 0;padding:0;border:0;background:none;color:var(--recap-accent);font-size:22px;font-weight:700;line-height:1.4;letter-spacing:.06em;overflow-wrap:anywhere}.recap-victory-condition{width:100%;border-top:1px solid var(--line);padding-top:14px}.game-recap .recap-victory-reason{margin:0;padding:0;border:0;color:var(--ink-2);font-size:13px;line-height:1.8;overflow-wrap:anywhere}.recap-peaceful,.recap-election-result{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 0;color:var(--good-ink);text-align:center}.recap-peaceful>strong,.recap-election-result>strong{font-size:14px;font-weight:700;letter-spacing:.04em;overflow-wrap:anywhere}.recap-election-result{color:var(--target-ink)}.recap-election-result>svg{flex-shrink:0}.recap-status-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:center;gap:12px}.recap-status-message{display:flex;flex-direction:column;gap:5px;font-size:11px;line-height:1.8;color:var(--muted);overflow-wrap:anywhere}.recap-status-message>strong{color:var(--ink-2);font-size:12px;font-weight:700}.recap-note{display:flex;align-items:flex-start;gap:8px;padding:10px;color:var(--faint)}.recap-note>svg{flex-shrink:0;margin-top:3px}.game-recap .recap-note p{font-size:12px;line-height:1.8;color:var(--ink-2);padding:0;margin:0;border:0;overflow-wrap:anywhere}.recap-empty{font-size:12px;color:var(--muted);line-height:1.8;margin:15px 0}.game-recap .recap-roles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:12px 0 0}.game-recap .recap-roles>div{position:relative;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;min-width:0;box-shadow:var(--shadow-xs)}.recap-roster-status{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-top:11px;border-top:1px solid var(--line);padding-top:8px;font-size:10px;color:var(--muted)}.recap-player-fate{display:flex;align-items:flex-start;gap:4px;min-width:0;line-height:1.6}.recap-player-fate>svg{flex-shrink:0;margin-top:1px}.recap-player-fate>span{overflow-wrap:anywhere}.recap-survived{color:var(--theme-ink)}.recap-deceased{color:var(--dead)}.game-recap .recap-outcome{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;white-space:nowrap;font-size:10px;line-height:1.6;font-weight:600;color:var(--muted);margin:0}.game-recap .recap-won{color:var(--good-ink)}@media(max-width:600px){.modal-recap{padding:24px 14px 18px}.recap-summary{padding:10px 12px;gap:10px}.recap-summary-icon{width:34px;height:34px}.recap-summary-icon>svg{width:18px;height:18px}.recap-summary strong{font-size:16px}.recap-event.recap-victory-card{padding:22px 14px}.recap-period{padding:9px;border-radius:16px}.recap-period-heading{gap:8px;margin-bottom:9px}.recap-period-icon{width:28px;height:28px}.recap-period-icon>svg{width:15px;height:15px}.game-recap .recap-period-heading h3{font-size:15px}.recap-event{padding:12px 9px;border-radius:14px}.recap-action-row{grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);gap:5px}.recap-player{gap:5px}.recap-player-number{font-size:19px;width:37px;height:37px}.recap-player-info>strong{font-size:12px}.recap-player-info>span{font-size:10px}.recap-action>strong{font-size:11px}.recap-action>svg{width:43px}.recap-collective{font-size:12px}.recap-no-target{font-size:10px;padding:7px 3px}.game-recap .recap-roles>div{padding:10px 8px;border-radius:14px}.game-recap .recap-roles .recap-player-info>strong{font-size:11px}.recap-resolution-heading,.recap-notice-heading{gap:7px}.recap-signup-group,.recap-death-player{padding:8px 6px}}@media(max-width:350px){.modal-recap{padding-left:10px;padding-right:10px}.recap-period{padding:7px}.recap-event{padding-left:6px;padding-right:6px}.recap-action-row{grid-template-columns:minmax(0,1fr) 53px minmax(0,1fr);gap:4px}.recap-player-info>strong{font-size:11px}.recap-player-number{font-size:17px;width:34px;height:34px}.recap-vote-group{grid-template-columns:minmax(0,1.45fr) 17px minmax(0,1fr);gap:3px}}.recap-ratings{min-width:0}.game-recap .recap-ratings-intro{margin:15px 0 12px;padding:0;border:0;font-size:12px;line-height:1.8;color:var(--muted)}.game-recap .recap-ratings-note{margin:12px 0 0;padding:0;border:0;font-size:11px;line-height:1.8;color:var(--muted);overflow-wrap:anywhere}.game-recap .recap-ratings-status{display:flex;align-items:center;gap:11px;margin:0;padding:20px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink-2);font-size:12px;line-height:1.8;box-shadow:var(--shadow-xs)}.recap-ratings-status>svg{flex-shrink:0;color:var(--theme-ink)}.recap-ratings-status>div{display:flex;flex-direction:column;gap:4px;min-width:0}.recap-ratings-status strong{font-size:12px;font-weight:600}.recap-ratings-status span{font-size:11px;color:var(--muted)}.recap-ratings-spinner{animation:recap-ratings-spin 1.1s linear infinite}.recap-ratings-error{padding:15px;border:1px solid var(--danger-line);border-radius:14px;background:var(--card)}.game-recap .recap-ratings-error>p{margin:0 0 12px;padding:0;border:0;color:var(--danger-ink);font-size:12px;line-height:1.8;overflow-wrap:anywhere}.recap-ratings-error>.recap-ratings-retry{min-height:35px;padding:8px 12px;font-size:11px}.recap-ratings-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px;line-height:1.8;text-align:left}.recap-ratings-caption{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.recap-ratings-player-column{width:23%}.recap-ratings-role-column{width:14%}.recap-ratings-score-column{width:10%}.recap-ratings-table th{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--muted);padding:9px 7px;border-bottom:1px solid var(--line-strong)}.recap-ratings-table td{padding:13px 7px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}.recap-ratings-table th:first-child,.recap-ratings-table td:first-child{padding-left:4px}.recap-ratings-table th:last-child,.recap-ratings-table td:last-child{padding-right:4px}.recap-ratings-table tbody tr:last-child td{border-bottom:0}.recap-rating-player>strong{font-weight:600;color:var(--ink)}.recap-rating-player>em,.recap-rating-player>.recap-rating-award{display:inline-block;margin-left:4px;padding:0 6px;border-radius:999px;font-size:9px;font-weight:700;line-height:1.7;font-style:normal;vertical-align:middle;white-space:nowrap}.recap-rating-player>em{color:var(--on-self);background:var(--self)}.recap-rating-mine{background:var(--self-wash)}.recap-rating-role{color:var(--ink-2)}.recap-ratings-table .recap-rating-score{font-size:17px;font-weight:600;line-height:1.35;font-variant-numeric:tabular-nums;white-space:nowrap}.recap-rating-value{display:block}.recap-rating-score.recap-rating-high{color:#008f32}.recap-rating-score.recap-rating-low{color:#c92a2a}.recap-rating-score.recap-rating-gold{color:#c58b00}.recap-rating-award{background:#fff1c2;color:#c58b00;letter-spacing:.04em}.recap-rating-evaluation{color:var(--ink-2)}.recap-rating-mobile-label{display:none}@keyframes recap-ratings-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.recap-ratings-spinner{animation:none}}@media(max-width:600px){.recap-ratings-table,.recap-ratings-table thead,.recap-ratings-table tbody{display:block}.recap-ratings-table colgroup{display:none}.recap-ratings-table tr{display:grid;grid-template-columns:minmax(0,1fr) 64px 44px;gap:6px}.recap-ratings-table thead tr{padding:5px 4px 8px;border-bottom:1px solid var(--line-strong)}.recap-ratings-table th{padding:0;border:0}.recap-ratings-table th:last-child{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.recap-ratings-table tbody tr{padding:13px 4px;border-bottom:1px solid var(--line)}.recap-ratings-table tbody tr:last-child{border-bottom:0}.recap-ratings-table td,.recap-ratings-table td:first-child,.recap-ratings-table td:last-child,.recap-ratings-table th:first-child{padding:0;border:0;min-width:0}.recap-ratings-table .recap-rating-evaluation{grid-column:1 / -1;padding-top:2px;font-size:12px}.recap-rating-mobile-label{display:inline;margin-right:8px;font-size:10px;color:var(--faint)}}@media(max-width:350px){.recap-tabs{gap:3px}.recap-tabs>button{gap:4px;font-size:12px}.recap-ratings-table tr{grid-template-columns:minmax(0,1fr) 56px 38px}}.tone-theme{--tone: var(--theme);--tone-ink: var(--theme-ink);--tone-wash: var(--theme-wash);--tone-line: var(--theme-line);--tone-icon: var(--theme-wash)}.tone-danger{--tone: var(--danger);--tone-ink: var(--danger-ink);--tone-wash: var(--danger-wash);--tone-line: var(--danger-line);--tone-icon: var(--danger-wash)}.tone-warn{--tone: var(--target);--tone-ink: var(--target-ink);--tone-wash: var(--target-wash);--tone-line: var(--target-line);--tone-icon: var(--target-wash)}.account-spin{animation:account-spin 1s linear infinite}@keyframes account-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.account-spin{animation:none}}.account-row-icon{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border-radius:12px;background:var(--theme-wash);color:var(--theme-ink)}.account-row-icon>svg{width:19px;height:19px}.account-avatar{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;border-radius:50%;background:linear-gradient(150deg,#3a7d5d,#1f4b37);color:var(--moon);font-size:16px;font-weight:700;box-shadow:var(--shadow-xs)}.account-chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:var(--soft-2);color:var(--muted);font-size:11px;line-height:1.6;font-variant-numeric:tabular-nums;white-space:nowrap}.account-tag{display:inline-flex;align-items:center;padding:0 7px;border-radius:999px;background:var(--theme-wash);color:var(--theme-ink);font-size:10px;font-weight:600;line-height:18px;letter-spacing:.04em;white-space:nowrap}.btn.account-compact{min-height:34px;padding:0 14px;font-size:12px;gap:6px}.btn.account-danger{background:var(--danger-wash);border-color:var(--danger-line);color:var(--danger-ink)}.btn.account-danger:hover:not(:disabled){border-color:var(--danger)}.account-danger-text{color:var(--danger-ink)}.account-danger-text:hover:not(:disabled){color:var(--danger)}.account-facts{list-style:none;margin:0 0 4px;padding:12px 14px;border-radius:14px;background:var(--soft);text-align:left}.account-facts li{display:flex;gap:8px;font-size:12px;line-height:1.75;color:var(--ink-2)}.account-facts li+li{margin-top:6px}.account-facts svg{margin-top:3px;color:var(--theme-ink)}.account-facts li.warn svg{color:var(--target-ink)}.account-divider{display:flex;align-items:center;gap:12px;margin:24px 0 12px;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.04em}.account-divider:before,.account-divider:after{content:"";flex:1;height:1px;background:var(--line)}.account-dialog{max-width:400px;text-align:center}.account-dialog h2{padding:0;font-size:21px;line-height:1.45}.account-dialog h2 em{font-style:normal;color:var(--theme-ink);font-variant-numeric:tabular-nums}.account-dialog .eyebrow{padding:0}.account-dialog .modal-description{margin:8px 0 16px}.account-dialog .form-error{text-align:left}.account-dialog-actions{display:flex;flex-direction:column;gap:10px;margin-top:18px}.account-dialog-actions>.text-button{min-height:40px}.account-dialog .account-facts{margin-bottom:0}.identity-login.compact{text-align:left}.identity-login-buttons{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:10px}.identity-login-buttons>.btn{min-height:44px;padding:0 12px;font-size:14px}.identity-login-buttons>.btn>svg{color:var(--theme-ink)}.identity-login-buttons>.btn.selected{border-color:var(--theme);background:var(--theme-wash);color:var(--theme-ink)}.identity-login-hint{margin-top:10px;color:var(--muted);font-size:11px;line-height:1.8}.account-options{display:flex;flex-direction:column;gap:10px}.account-option{display:flex;align-items:center;gap:12px;width:100%;min-height:72px;padding:12px 14px;border:1px solid var(--line);border-radius:18px;background:var(--card);text-align:left}.account-option>svg:last-child{flex:0 0 auto;color:var(--faint);transition:transform .2s var(--ease)}.account-option.expanded{border-color:var(--theme);background:var(--theme-wash)}.account-option.expanded>svg:last-child{transform:rotate(90deg);color:var(--theme-ink)}.account-option.expanded .account-row-icon{background:var(--card)}@media(hover:hover){.account-option:hover:not(:disabled){border-color:var(--theme-line);box-shadow:var(--shadow-sm)}}.account-option-text{flex:1;min-width:0}.account-option-text strong{display:block;color:var(--ink);font-size:15px;font-weight:700;letter-spacing:.04em;line-height:1.5}.account-option-text small{display:block;margin-top:2px;color:var(--muted);font-size:11px;line-height:1.6}.identity-code-form{margin-top:2px}.identity-code-form .field input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:15px;letter-spacing:.02em}.identity-code-form .field input::placeholder{font-family:var(--font-sans);letter-spacing:0;font-size:14px}.identity-code-form>.btn{margin-top:12px}.account-switch{display:flex;flex-direction:column;align-items:stretch;margin:14px 0 12px;text-align:left}.account-switch-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card)}.account-switch-row.target{border-color:var(--theme-line);background:var(--theme-wash)}.account-switch-row>span:not(.account-avatar){flex:1;min-width:0}.account-switch-row small{display:block;color:var(--muted);font-size:11px;line-height:1.5}.account-switch-row strong{display:block;color:var(--ink);font-size:15px;font-weight:700;line-height:1.5;overflow-wrap:anywhere}.account-switch-row em{flex:0 0 auto;font-style:normal;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.account-switch-arrow{display:grid;place-items:center;align-self:center;width:26px;height:26px;margin:-5px 0;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--theme-ink);position:relative;z-index:1}.identity-switch-confirm.inline{text-align:center}.identity-switch-confirm.inline h2{font-size:21px}.legacy-history-notice{position:relative;display:flex;gap:12px;flex-shrink:0;padding:14px;border-radius:18px;background:var(--soft);text-align:left}.legacy-history-notice.available .account-row-icon{background:var(--theme);color:var(--on-theme)}.legacy-history-body{flex:1;min-width:0}.legacy-history-body strong{display:block;padding-right:26px;color:var(--ink);font-size:14px;font-weight:700;line-height:1.5}.legacy-history-body p{margin-top:4px;color:var(--ink-2);font-size:12px;line-height:1.75}.legacy-history-body .legacy-history-error{color:var(--danger-ink)}.legacy-history-body>.btn{margin-top:10px}.legacy-history-close{position:absolute;top:8px;right:8px;width:30px;height:30px}.nickname-welcome .legacy-history-notice,.account-security .legacy-history-notice{margin-top:18px}.lobby-page>.legacy-history-notice{margin-bottom:-4px}.modal-account-security{max-width:560px;height:calc(100dvh - 44px);scrollbar-gutter:stable}.account-security>h2{padding-right:40px}.account-loading{display:flex;align-items:center;gap:8px;margin-top:18px;color:var(--muted);font-size:13px}.account-status{display:flex;align-items:flex-start;gap:14px;padding:16px;border-radius:20px;background:var(--soft)}.account-status.protected{background:var(--theme-wash)}.account-status-icon{display:grid;place-items:center;flex:0 0 auto;width:46px;height:46px;border-radius:50%;background:var(--card);color:var(--target-ink);box-shadow:var(--shadow-xs)}.account-status.protected .account-status-icon{color:var(--theme-ink)}.account-status-icon>svg{width:23px;height:23px}.account-status>div{min-width:0}.account-status strong{display:block;color:var(--ink);font-size:15px;font-weight:700;letter-spacing:.04em;line-height:1.5}.account-status.protected strong{color:var(--theme-ink)}.account-status p{margin-top:3px;color:var(--ink-2);font-size:12px;line-height:1.75}.account-status .account-chip{margin-top:10px;background:var(--card)}.account-success{display:flex;align-items:flex-start;gap:8px;margin-top:12px;padding:10px 13px;border-radius:14px;background:var(--theme-wash);color:var(--theme-ink);font-size:12px;line-height:1.6}.account-success>svg{margin-top:1px}.account-group{margin-top:26px}.account-group-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.account-group-head h3{display:flex;align-items:center;gap:8px;margin:0;color:var(--ink);font-size:15px;font-weight:700;letter-spacing:.04em}.account-group-head h3:before{content:"";width:4px;height:14px;border-radius:2px;background:var(--theme)}.account-group-note{margin:6px 0 12px;color:var(--muted);font-size:12px;line-height:1.8}.account-list{list-style:none;margin:0 0 12px;padding:0;border:1px solid var(--line);border-radius:18px;background:var(--card);overflow:hidden}.account-row{display:flex;align-items:center;gap:12px;padding:12px 10px 12px 14px}.account-row+.account-row{border-top:1px solid var(--line)}.account-row-main{flex:1;min-width:0}.account-row-main strong{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--ink);font-size:14px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.account-row-main small{display:block;margin-top:2px;color:var(--muted);font-size:11px;line-height:1.6;overflow-wrap:anywhere}.account-row-action{flex:0 0 auto;min-height:36px;padding:0 8px;border-radius:999px;color:var(--danger-ink);font-size:12px;font-weight:600}@media(hover:hover){.account-row-action:hover:not(:disabled){background:var(--danger-wash)}}.account-empty{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding:14px;border:1px dashed var(--line-strong);border-radius:18px;color:var(--faint)}.account-empty>span{color:var(--muted);font-size:12px;line-height:1.7}.account-empty strong{display:block;color:var(--ink);font-size:14px;font-weight:600}.account-verify{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;color:var(--muted);font-size:11px;line-height:1.7}.account-verify>span{display:flex;align-items:flex-start;gap:6px}.account-verify>span>svg{margin-top:2px;color:var(--theme-ink)}.account-verify>.text-button{flex:0 0 auto}.account-ticket{padding:16px;border-radius:18px;background:var(--soft)}.account-ticket-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--ink-2);font-size:12px;font-weight:600}.account-ticket-head>span{color:var(--theme-ink);font-variant-numeric:tabular-nums}.account-ticket-code{display:block;width:100%;margin:10px 0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:600 15px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em;text-align:center;word-break:break-all;resize:none}.account-ticket-code::placeholder{font-family:var(--font-sans);font-weight:400;letter-spacing:0;color:var(--faint)}.account-ticket-bar{display:block;height:4px;border-radius:999px;background:var(--soft-2);overflow:hidden}.account-ticket-bar>i{display:block;height:100%;border-radius:inherit;background:var(--theme);transition:width 1s linear}.account-ticket>p{margin-top:10px;color:var(--muted);font-size:11px;line-height:1.75}.account-ticket-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.account-footer{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}.account-footer>.text-button{display:inline-flex;align-items:center;gap:5px;min-height:40px}.account-legal{display:flex;gap:16px;margin-top:8px;font-size:12px}.account-legal>a{color:var(--muted)}.account-legal>a:hover{color:var(--theme-ink)}.invite-preview{display:flex;align-items:center;gap:12px;margin:14px 0 0;padding:12px 14px;border-radius:16px;background:var(--soft)}.invite-preview>span:last-child{min-width:0}.invite-preview small{display:block;color:var(--muted);font-size:11px;line-height:1.5}.invite-preview strong{display:block;color:var(--ink);font-size:15px;font-weight:700;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-preview em{display:block;color:var(--ink-2);font-size:11px;font-style:normal;line-height:1.6}.app-invite-download{margin-top:20px}.app-invite-open{display:flex;align-items:center;justify-content:center;min-height:40px;margin-top:12px}.identity-screen-shell{display:flex;overflow-y:auto;background:var(--soft)}.identity-screen{width:100%;max-width:440px;margin:auto;padding:clamp(22px,6vw,32px);border:1px solid var(--line);border-radius:28px;background:var(--paper);box-shadow:var(--shadow-md);text-align:center}.identity-screen-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:26px}.identity-screen-brand>.brand-mark{width:34px;height:34px;border-radius:11px}.identity-screen-brand>strong{color:var(--ink);font-size:19px;font-weight:700;letter-spacing:4px}.identity-screen h2{color:var(--ink);font-size:21px;font-weight:700;letter-spacing:.04em;line-height:1.45}.identity-screen .modal-description{margin:8px 0 0}.identity-screen .form-error{text-align:left}.identity-screen-hint{margin:10px 0 16px;color:var(--muted);font-size:12px;line-height:1.75}.identity-screen>.btn+.btn{margin-top:10px}.identity-screen .identity-login{margin-top:2px}.identity-screen .identity-login-hint{text-align:center}.identity-screen-restart{margin-top:14px;padding-top:6px;border-top:1px solid var(--line)}.identity-screen-restart>.text-button{min-height:40px;color:var(--muted)}.identity-screen .account-dialog{text-align:center}.app-login-open{margin-top:20px}.app-login-fallback{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);text-align:left}.app-login-fallback>p:first-child{margin-bottom:10px;color:var(--muted);font-size:12px;line-height:1.75}.app-login-fallback>.btn{margin-top:10px}.app-login-fallback>.identity-screen-hint{margin-bottom:0;text-align:center}.home-page>.identity-inline{max-width:none;margin:0;flex-shrink:0;box-shadow:none}@media(max-width:600px){.account-group{margin-top:22px}.account-option{min-height:66px;padding:10px 12px}.account-status{padding:14px;gap:12px}.account-status-icon{width:42px;height:42px}.identity-screen-shell{padding:16px}}@media(max-width:360px){.identity-login-buttons{grid-auto-flow:row}}.wechat-browser-gate{height:100vh;height:100dvh;display:flex;flex-direction:column;gap:20px;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));overflow-y:auto;background:var(--soft)}.wechat-menu-hint{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-shrink:0;color:var(--theme-ink);font-size:14px}.wechat-browser-card{width:100%;max-width:480px;margin:auto;padding:clamp(20px,5vw,32px);border:1px solid var(--line);border-radius:24px;background:var(--paper);box-shadow:var(--shadow-md);flex-shrink:0}.wechat-browser-brand{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:16px;font-weight:600;letter-spacing:3px;margin-bottom:20px}.wechat-browser-mark{display:block;flex:0 0 auto;width:30px;height:30px;border-radius:9px;overflow:hidden;background:linear-gradient(150deg,#357a59,#112a1f)}.wechat-browser-mark>img{display:block;width:100%;height:100%}.wechat-browser-card h1{font-size:clamp(20px,5vw,24px);font-weight:600;line-height:1.5}.wechat-browser-description{margin-top:12px;color:var(--muted);font-size:14px;line-height:1.8}.wechat-browser-steps{margin:18px 0;padding-left:22px;font-size:14px;line-height:1.8;color:var(--ink-2)}.wechat-browser-steps li::marker{color:var(--theme-ink);font-weight:600}.wechat-browser-steps li+li{margin-top:10px}.wechat-browser-copy-hint{margin-bottom:16px;color:var(--muted);font-size:13px;line-height:1.8}.wechat-browser-card .btn{min-height:48px}.wechat-browser-card .form-error+.btn{margin-top:10px}.wechat-browser-copy-status{margin-top:10px;color:var(--theme-ink);font-size:12px;line-height:1.7}.wechat-browser-copy-status:empty{margin-top:0}.wechat-browser-link{display:block;width:100%;margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;resize:none;background:var(--soft);color:var(--ink);font:inherit;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.wechat-browser-link:focus-visible{outline:2px solid var(--theme);outline-offset:3px}.wechat-link-status{display:flex;gap:12px;margin-top:16px;padding:14px;border-radius:18px;background:var(--soft);text-align:left}.wechat-link-status>div{flex:1;min-width:0}.wechat-link-icon{display:grid;place-items:center;flex:0 0 auto;width:36px;height:36px;border-radius:12px;background:var(--card);color:var(--muted)}.wechat-link-status.ready{background:var(--theme-wash)}.wechat-link-status.ready .wechat-link-icon{color:var(--theme-ink)}.wechat-link-status.expired{background:var(--target-wash)}.wechat-link-status.expired .wechat-link-icon{color:var(--target-ink)}.wechat-link-status strong{display:block;color:var(--ink);font-size:14px;font-weight:700;line-height:1.6}.wechat-link-status.ready strong{color:var(--theme-ink)}.wechat-link-status p{margin-top:2px;color:var(--ink-2);font-size:12px;line-height:1.75;font-variant-numeric:tabular-nums}.wechat-link-status .text-button{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:6px 0}.wechat-browser-card .legacy-history-notice{margin-top:16px}.wechat-browser-card .btn.account-compact{min-height:34px}.modal-player-history{max-width:560px;height:calc(100dvh - 44px);scrollbar-gutter:stable}.player-history-profile{display:flex;align-items:center;gap:14px;margin-bottom:22px;padding-right:20px}.player-history-avatar{display:grid;place-items:center;width:48px;height:48px;flex-shrink:0;border-radius:50%;background:linear-gradient(150deg,#3a7d5d,#1f4b37);color:var(--moon);font-size:20px;font-weight:700;box-shadow:var(--shadow-sm)}.player-history-profile>div{min-width:0}.player-history-profile strong{display:block;font-size:17px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}.player-history-links{display:flex;flex-wrap:wrap;align-items:center}.player-history-links button{display:inline-flex;align-items:center;min-height:32px;color:var(--theme-ink);font-size:12px;font-weight:600;padding:4px 0}.player-history-links button+button:before{content:"";width:3px;height:3px;margin:0 9px;border-radius:50%;background:var(--faint)}.player-history-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;border:1px solid var(--line);border-radius:16px;background:var(--card);padding:14px 5px;margin-bottom:16px;box-shadow:var(--shadow-xs)}.player-history-stats>span{text-align:center;color:var(--muted);font-size:11px}.player-history-stats>span+span{border-left:1px solid var(--line)}.player-history-stats strong{display:block;color:var(--ink);font:600 22px/1.2 var(--font-sans);font-variant-numeric:tabular-nums;margin-bottom:4px}.player-history-list{display:flex;flex-direction:column;gap:10px}.player-history-pagination{display:flex;justify-content:center;padding-top:16px}.player-history-pagination .btn{min-height:40px;font-size:13px}.player-history-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);border-radius:14px;padding:13px 12px;background:var(--card);box-shadow:var(--shadow-xs)}.player-history-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.player-history-result{display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0;width:38px;color:var(--muted);font-size:11px;font-weight:500}.player-history-result.won{color:var(--good)}.player-history-result.lost{color:var(--danger)}.player-history-game{flex:1;min-width:0}.player-history-game>strong{display:block;font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}.player-history-room-name{overflow-wrap:anywhere}.player-history-game>span,.player-history-game>time{display:block;font-size:11px;color:var(--muted);margin-top:5px;line-height:1.5}.player-history-game>time{font-variant-numeric:tabular-nums;color:var(--faint)}.player-history-game>.player-history-score{color:var(--ink-2)}.player-history-score strong{font:600 14px var(--font-sans);font-variant-numeric:tabular-nums;margin-left:4px;color:var(--ink)}.player-history-card>svg{color:var(--faint)}.player-history-empty{display:flex;flex-direction:column;align-items:center;gap:13px;padding:35px 0;text-align:center;color:var(--faint);border:1px dashed var(--line-strong);border-radius:16px;background:var(--soft)}.player-history-empty strong{font-size:15px;font-weight:600;color:var(--ink)}.player-history-empty p{font-size:12px;line-height:1.8;color:var(--muted)}.player-history-status{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px;padding:25px 0;font-size:13px;color:var(--muted);text-align:center;line-height:1.8}.player-history-status>p{flex-basis:100%}.player-history-spinner{animation:player-history-spin 1s linear infinite}@keyframes player-history-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.player-history-spinner{animation:none}}.player-history-back{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 0 8px;color:var(--theme-ink);font-size:13px;font-weight:600}.player-history-match{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:18px;overflow-wrap:anywhere}.player-history-detail .game-recap{margin-top:10px}html,body,#root{touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;text-size-adjust:100%}#root *{touch-action:inherit}@media(any-pointer:coarse){#root :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]):not([type=color]),select,textarea){font-size:max(16px,1em)}}
