.scene-art,.ghost-trap-art{--scene-ink: var(--color-text-primary);--scene-muted: var(--color-text-secondary);--scene-accent: var(--color-state-selected);--scene-accent-strong: var(--color-action-primary);--scene-accent-soft: color-mix(in srgb, var(--scene-accent) 14%, transparent);--scene-accent-faint: color-mix(in srgb, var(--scene-accent) 7%, transparent);--scene-line: color-mix(in srgb, var(--scene-ink) 46%, transparent);--scene-surface: var(--color-background-surface);--scene-canvas: var(--color-background-canvas);position:relative;display:grid;grid-template-columns:minmax(150px,1.15fr) minmax(0,.85fr);min-height:176px;overflow:hidden;border:1px solid var(--color-border-default);border-radius:var(--radius-2xl);background:var(--scene-surface);color:var(--scene-ink);box-shadow:var(--shadow-card);isolation:isolate}.scene-art:before,.ghost-trap-art:before{position:absolute;z-index:-1;inset:0;background:linear-gradient(135deg,var(--scene-accent-faint),transparent 48%),linear-gradient(315deg,var(--scene-canvas),transparent 64%);content:"";pointer-events:none}.scene-art-compact,.ghost-trap-compact{grid-template-columns:minmax(120px,1fr) minmax(0,1fr);min-height:132px;border-radius:var(--radius-xl)}.scene-art-hero{grid-template-columns:minmax(240px,1.25fr) minmax(0,.75fr);min-height:238px}.scene-art-visual,.ghost-trap-visual{position:relative;display:grid;min-width:0;min-height:100%;place-items:center;padding:14px;overflow:hidden}.scene-art-visual:after,.ghost-trap-visual:after{position:absolute;right:-26px;bottom:-42px;width:160px;height:160px;border:1px solid color-mix(in srgb,var(--scene-accent) 18%,transparent);border-radius:50%;content:"";pointer-events:none}.scene-art-copy,.ghost-trap-copy{display:grid;align-content:center;gap:7px;min-width:0;padding:20px 20px 20px 4px}.scene-art-eyebrow,.ghost-trap-eyebrow{color:var(--scene-muted);font-family:var(--primitive-font-family-mono);font-size:var(--primitive-font-size-11);font-weight:var(--primitive-font-weight-600);letter-spacing:.1em;line-height:1.4}.scene-art-copy h3,.ghost-trap-copy h3{margin:0;color:var(--scene-ink);font-size:clamp(18px,3vw,24px);letter-spacing:-.05em;line-height:1.2}.scene-art-copy p,.ghost-trap-copy p{max-width:24ch;margin:0;color:var(--scene-muted);font-size:var(--primitive-font-size-13);line-height:1.5}.scene-art-svg,.ghost-trap-svg{display:block;width:min(100%,320px);height:auto;overflow:visible}.scene-art-compact .scene-art-svg{width:min(100%,246px)}.scene-art-hero .scene-art-svg{width:min(100%,390px)}.scene-art-halo{fill:var(--scene-accent-faint)}.scene-art-surface{fill:var(--scene-surface);stroke:color-mix(in srgb,var(--scene-accent) 24%,transparent);stroke-width:2}.scene-art-stroke,.scene-art-ray{fill:none;stroke:var(--scene-line);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4}.scene-art-dashed{stroke-dasharray:5 7}.scene-art-bubble{fill:var(--scene-surface);stroke:var(--scene-line);stroke-width:2.4}.scene-art-bubble-left{animation:scene-art-drift-left var(--primitive-duration-420) var(--motion-easing-standard) both}.scene-art-bubble-right{animation:scene-art-drift-right var(--primitive-duration-420) var(--motion-easing-standard) both}.scene-art-dot{stroke:var(--scene-surface);stroke-width:2}.scene-art-dot-blue,.scene-art-check,.scene-art-shield{fill:var(--scene-accent-soft);stroke:var(--scene-accent-strong)}.scene-art-dot-neutral{fill:var(--scene-muted)}.scene-art-spark{fill:var(--scene-accent-strong);stroke:none;animation:scene-art-twinkle var(--primitive-duration-420) var(--motion-easing-standard) both}.scene-art-spark-two{animation-delay:.12s}.scene-art-night{--scene-ink: var(--primitive-color-neutral-0);--scene-muted: var(--primitive-color-neutral-400);--scene-accent: var(--primitive-color-blue-100);--scene-accent-strong: var(--primitive-color-blue-300);--scene-surface: var(--color-background-night);--scene-canvas: var(--color-background-night);border-color:var(--primitive-color-neutral-800);background:var(--color-background-night)}.scene-art-night .scene-art-halo{fill:color-mix(in srgb,var(--primitive-color-blue-600) 13%,transparent)}.scene-art-moon{fill:var(--scene-accent-soft);stroke:var(--scene-accent-strong);stroke-width:2}.scene-art-star{fill:var(--scene-accent-strong);animation:scene-art-twinkle var(--primitive-duration-420) var(--motion-easing-standard) both}.scene-art-star-two{animation-delay:.16s}.scene-art-sun{fill:color-mix(in srgb,var(--color-status-warning) 72%,var(--scene-surface));stroke:var(--color-status-warning);stroke-width:2}.scene-art-hill{stroke:color-mix(in srgb,var(--scene-accent) 46%,var(--scene-ink));stroke-width:2}.scene-art-hill-back{fill:var(--scene-accent-faint)}.scene-art-hill-front{fill:var(--scene-surface)}.scene-art-ray{stroke:var(--color-status-warning);stroke-width:2.6}.scene-art-orbit{fill:none;stroke:var(--scene-accent);stroke-width:1.8}.scene-art-orbit-dashed{stroke-dasharray:3 7}.scene-art-shield{fill:var(--scene-accent-soft);stroke-width:2.6}.scene-art-check{fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.scene-art-mafia-win{--scene-accent: var(--color-role-mafia);--scene-accent-strong: var(--color-action-destructive)}.scene-art-mafia-win .scene-art-halo{fill:color-mix(in srgb,var(--color-role-mafia) 12%,transparent)}.scene-art-crown{fill:var(--scene-accent-soft);stroke:var(--scene-accent-strong);stroke-linejoin:round;stroke-width:2.8}.scene-art-crown-band{fill:var(--scene-accent-strong);stroke:var(--scene-accent-strong);stroke-width:2}.scene-art-gem{fill:var(--scene-surface);stroke:var(--scene-accent-strong);stroke-width:2}.scene-art-ghost{--scene-accent: var(--color-state-dead);--scene-accent-strong: var(--color-state-selected);--scene-surface: var(--color-background-night);--scene-canvas: var(--color-background-night);border-color:var(--color-border-default);background:var(--color-background-night);color:var(--primitive-color-neutral-0)}.scene-art-ghost .scene-art-ink,.scene-art-ghost .scene-art-copy h3{color:var(--primitive-color-neutral-0)}.scene-art-ghost .scene-art-copy p,.scene-art-ghost .scene-art-eyebrow{color:var(--primitive-color-neutral-400)}.scene-art-ghost-visual{position:relative;display:grid;width:min(100%,180px);height:100%;min-height:172px;place-items:center}.scene-art-ghost-visual img{position:relative;z-index:1;width:min(82%,152px);height:min(82%,152px);object-fit:contain;filter:drop-shadow(0 10px 16px color-mix(in srgb,var(--scene-accent) 22%,transparent));animation:scene-art-float 3.2s ease-in-out infinite}.scene-art-ghost-ring{position:absolute;border:1px solid color-mix(in srgb,var(--scene-accent-strong) 60%,transparent);border-radius:50%;transform:rotate(-18deg)}.scene-art-ghost-ring-one{width:120px;height:58px}.scene-art-ghost-ring-two{width:142px;height:70px;transform:rotate(26deg);opacity:.5}.scene-art-ghost-star{position:absolute;z-index:2;color:var(--scene-accent-strong);font-family:var(--primitive-font-family-mono);font-size:18px;line-height:1}.scene-art-ghost-star-one{top:28px;right:14px}.scene-art-ghost-star-two{bottom:32px;left:18px;font-size:28px}.ghost-trap-art{--scene-accent: var(--color-state-dead);--scene-accent-strong: var(--color-state-selected);min-height:144px}.ghost-trap-visual{min-height:144px}.ghost-trap-copy{padding-left:4px}.ghost-trap-ready{--scene-accent: var(--color-state-selected)}.ghost-trap-triggered{--scene-accent: var(--color-status-warning);--scene-accent-strong: var(--color-action-destructive)}.ghost-trap-triggered:before{background:linear-gradient(135deg,color-mix(in srgb,var(--scene-accent) 12%,transparent),transparent 50%),linear-gradient(315deg,var(--scene-canvas),transparent 64%)}.ghost-trap-svg{width:min(100%,280px)}.ghost-trap-orbit{fill:none;stroke:color-mix(in srgb,var(--scene-accent) 48%,transparent);stroke-dasharray:2 7;stroke-linecap:round;stroke-width:2}.ghost-trap-frame{fill:var(--scene-accent-faint);stroke:var(--scene-accent-strong);stroke-linejoin:round;stroke-width:2.8}.ghost-trap-target{fill:var(--scene-surface);stroke:var(--scene-accent-strong);stroke-dasharray:4 5;stroke-width:2.4}.ghost-trap-cross{fill:none;stroke:var(--scene-accent-strong);stroke-linecap:round;stroke-width:2}.ghost-trap-spark{fill:var(--scene-accent-strong);animation:scene-art-twinkle var(--primitive-duration-420) var(--motion-easing-standard) both}.ghost-trap-target-triggered{fill:color-mix(in srgb,var(--scene-accent) 16%,var(--scene-surface));stroke-dasharray:none;stroke-width:3}.ghost-trap-bolt{fill:var(--scene-accent-strong);stroke:var(--scene-surface);stroke-linejoin:round;stroke-width:1.5}.ghost-trap-crack{fill:none;stroke:var(--scene-accent-strong);stroke-linecap:round;stroke-width:2.6}@keyframes scene-art-drift-left{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes scene-art-drift-right{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes scene-art-twinkle{0%{opacity:0;transform:scale(.82);transform-origin:center}to{opacity:1;transform:scale(1);transform-origin:center}}@keyframes scene-art-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@media(max-width:480px){.scene-art,.ghost-trap-art{grid-template-columns:minmax(110px,.95fr) minmax(0,1.05fr)}.scene-art-copy,.ghost-trap-copy{padding:16px 14px 16px 0}.scene-art-copy p,.ghost-trap-copy p{font-size:12px}.scene-art-visual,.ghost-trap-visual{padding:8px}.scene-art-compact,.ghost-trap-compact{grid-template-columns:minmax(96px,.85fr) minmax(0,1.15fr)}}@media(prefers-reduced-motion:reduce){.scene-art-bubble-left,.scene-art-bubble-right,.scene-art-spark,.scene-art-star,.scene-art-ghost-visual img,.ghost-trap-spark{animation:none}}:root{--primitive-color-neutral-0: #ffffff;--primitive-color-neutral-50: #fafbfc;--primitive-color-neutral-100: #f4f6f8;--primitive-color-neutral-200: #eceff3;--primitive-color-neutral-300: #e2e6eb;--primitive-color-neutral-400: #d5dae1;--primitive-color-neutral-500: #c9cfd8;--primitive-color-neutral-600: #a8aeb8;--primitive-color-neutral-700: #5c6572;--primitive-color-neutral-800: #3a4657;--primitive-color-neutral-900: #23272e;--primitive-color-neutral-950: #17191d;--primitive-color-neutral-1000: #0b0d10;--primitive-color-blue-50: #eef2fd;--primitive-color-blue-100: #c3d0f6;--primitive-color-blue-300: #8fb0ff;--primitive-color-blue-600: #1b4dd8;--primitive-color-blue-700: #143aa3;--primitive-color-red-50: #fdecee;--primitive-color-red-100: #f4b8c0;--primitive-color-red-300: #ff8592;--primitive-color-red-600: #d7263d;--primitive-color-overlay-scrim: rgba(11,13,16,.55);--primitive-font-family-sans: "IBM Plex Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--primitive-font-family-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--primitive-font-size-11: 11px;--primitive-font-size-12: 12px;--primitive-font-size-13: 13px;--primitive-font-size-14: 14px;--primitive-font-size-15: 15px;--primitive-font-size-17: 17px;--primitive-font-size-18: 18px;--primitive-font-size-21: 21px;--primitive-font-size-26: 26px;--primitive-font-size-32: 32px;--primitive-font-size-62: 62px;--primitive-font-line-height-1: 1;--primitive-font-line-height-1-15: 1.15;--primitive-font-line-height-1-2: 1.2;--primitive-font-line-height-1-25: 1.25;--primitive-font-line-height-1-3: 1.3;--primitive-font-line-height-1-4: 1.4;--primitive-font-line-height-1-45: 1.45;--primitive-font-line-height-1-55: 1.55;--primitive-font-weight-500: 500;--primitive-font-weight-600: 600;--primitive-font-weight-700: 700;--primitive-font-variant-numeric-tabular: tabular-nums;--primitive-space-2: 2px;--primitive-space-4: 4px;--primitive-space-6: 6px;--primitive-space-8: 8px;--primitive-space-10: 10px;--primitive-space-12: 12px;--primitive-space-14: 14px;--primitive-space-16: 16px;--primitive-space-20: 20px;--primitive-space-24: 24px;--primitive-space-32: 32px;--primitive-space-40: 40px;--primitive-dimension-12: 12px;--primitive-dimension-14: 14px;--primitive-dimension-18: 18px;--primitive-dimension-22: 22px;--primitive-dimension-24: 24px;--primitive-dimension-26: 26px;--primitive-dimension-30: 30px;--primitive-dimension-44: 44px;--primitive-dimension-52: 52px;--primitive-dimension-60: 60px;--primitive-dimension-84: 84px;--primitive-dimension-240: 240px;--primitive-dimension-270: 270px;--primitive-dimension-320: 320px;--primitive-dimension-360: 360px;--primitive-radius-4: 4px;--primitive-radius-8: 8px;--primitive-radius-10: 10px;--primitive-radius-12: 12px;--primitive-radius-14: 14px;--primitive-radius-18: 18px;--primitive-radius-999: 999px;--primitive-border-width-1: 1px;--primitive-border-width-1-5: 1.5px;--primitive-border-width-2: 2px;--primitive-shadow-card: 0 1px 2px rgba(11,13,16,.06);--primitive-shadow-raised: 0 8px 22px rgba(11,13,16,.07);--primitive-shadow-float: 0 18px 40px rgba(11,13,16,.12);--primitive-shadow-accent: 0 18px 44px rgba(215,38,61,.24);--primitive-duration-120: .12s;--primitive-duration-200: .2s;--primitive-duration-320: .32s;--primitive-duration-420: .42s;--primitive-easing-standard: cubic-bezier(.2,0,0,1);--primitive-easing-exit: cubic-bezier(.4,0,1,1);--primitive-z-index-0: 0;--primitive-z-index-100: 100;--primitive-z-index-800: 800;--primitive-z-index-900: 900;--primitive-z-index-1000: 1000;--primitive-breakpoint-390: 390px;--primitive-breakpoint-600: 600px;--primitive-breakpoint-900: 900px;--color-background-canvas: var(--primitive-color-neutral-100);--color-background-surface: var(--primitive-color-neutral-0);--color-background-elevated: var(--primitive-color-neutral-0);--color-background-night: var(--primitive-color-neutral-1000);--color-background-overlay: var(--primitive-color-overlay-scrim);--color-text-primary: var(--primitive-color-neutral-1000);--color-text-secondary: var(--primitive-color-neutral-700);--color-text-inverse: var(--primitive-color-neutral-0);--color-text-disabled: var(--primitive-color-neutral-600);--color-border-default: var(--primitive-color-neutral-700);--color-border-strong: var(--primitive-color-neutral-1000);--color-border-focus: var(--primitive-color-blue-600);--color-action-primary: var(--primitive-color-blue-600);--color-action-secondary: var(--primitive-color-neutral-0);--color-action-destructive: var(--primitive-color-red-600);--color-action-disabled: var(--primitive-color-neutral-200);--color-status-success: var(--primitive-color-blue-600);--color-status-warning: var(--primitive-color-red-600);--color-status-error: var(--primitive-color-red-600);--color-status-info: var(--primitive-color-blue-600);--color-state-alive: var(--primitive-color-neutral-1000);--color-state-dead: var(--primitive-color-neutral-600);--color-state-selected: var(--primitive-color-blue-600);--color-role-citizen: var(--primitive-color-neutral-1000);--color-role-mafia: var(--primitive-color-red-600);--color-role-police: var(--primitive-color-blue-600);--color-role-doctor: var(--primitive-color-blue-600);--typography-caption-font-family: var(--primitive-font-family-sans);--typography-caption-font-size: var(--primitive-font-size-11);--typography-caption-line-height: var(--primitive-font-line-height-1-4);--typography-caption-font-weight: var(--primitive-font-weight-500);--typography-label-font-family: var(--primitive-font-family-sans);--typography-label-font-size: var(--primitive-font-size-12);--typography-label-line-height: var(--primitive-font-line-height-1-45);--typography-label-font-weight: var(--primitive-font-weight-600);--typography-body-sm-font-family: var(--primitive-font-family-sans);--typography-body-sm-font-size: var(--primitive-font-size-13);--typography-body-sm-line-height: var(--primitive-font-line-height-1-55);--typography-body-sm-font-weight: var(--primitive-font-weight-500);--typography-body-font-family: var(--primitive-font-family-sans);--typography-body-font-size: var(--primitive-font-size-14);--typography-body-line-height: var(--primitive-font-line-height-1-55);--typography-body-font-weight: var(--primitive-font-weight-500);--typography-body-lg-font-family: var(--primitive-font-family-sans);--typography-body-lg-font-size: var(--primitive-font-size-15);--typography-body-lg-line-height: var(--primitive-font-line-height-1-55);--typography-body-lg-font-weight: var(--primitive-font-weight-500);--typography-title-sm-font-family: var(--primitive-font-family-sans);--typography-title-sm-font-size: var(--primitive-font-size-18);--typography-title-sm-line-height: var(--primitive-font-line-height-1-3);--typography-title-sm-font-weight: var(--primitive-font-weight-700);--typography-title-font-family: var(--primitive-font-family-sans);--typography-title-font-size: var(--primitive-font-size-21);--typography-title-line-height: var(--primitive-font-line-height-1-25);--typography-title-font-weight: var(--primitive-font-weight-700);--typography-title-lg-font-family: var(--primitive-font-family-sans);--typography-title-lg-font-size: var(--primitive-font-size-26);--typography-title-lg-line-height: var(--primitive-font-line-height-1-2);--typography-title-lg-font-weight: var(--primitive-font-weight-700);--typography-display-font-family: var(--primitive-font-family-sans);--typography-display-font-size: var(--primitive-font-size-32);--typography-display-line-height: var(--primitive-font-line-height-1-15);--typography-display-font-weight: var(--primitive-font-weight-700);--typography-numeric-sm-font-family: var(--primitive-font-family-mono);--typography-numeric-sm-font-size: var(--primitive-font-size-14);--typography-numeric-sm-line-height: var(--primitive-font-line-height-1);--typography-numeric-sm-font-weight: var(--primitive-font-weight-600);--typography-numeric-sm-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-font-family: var(--primitive-font-family-mono);--typography-numeric-font-size: var(--primitive-font-size-17);--typography-numeric-line-height: var(--primitive-font-line-height-1);--typography-numeric-font-weight: var(--primitive-font-weight-600);--typography-numeric-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-lg-font-family: var(--primitive-font-family-mono);--typography-numeric-lg-font-size: var(--primitive-font-size-32);--typography-numeric-lg-line-height: var(--primitive-font-line-height-1);--typography-numeric-lg-font-weight: var(--primitive-font-weight-600);--typography-numeric-lg-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-xl-font-family: var(--primitive-font-family-mono);--typography-numeric-xl-font-size: var(--primitive-font-size-62);--typography-numeric-xl-line-height: var(--primitive-font-line-height-1);--typography-numeric-xl-font-weight: var(--primitive-font-weight-600);--typography-numeric-xl-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--spacing-2: var(--primitive-space-2);--spacing-4: var(--primitive-space-4);--spacing-6: var(--primitive-space-6);--spacing-8: var(--primitive-space-8);--spacing-10: var(--primitive-space-10);--spacing-12: var(--primitive-space-12);--spacing-14: var(--primitive-space-14);--spacing-16: var(--primitive-space-16);--spacing-20: var(--primitive-space-20);--spacing-24: var(--primitive-space-24);--spacing-32: var(--primitive-space-32);--spacing-40: var(--primitive-space-40);--size-control-sm: var(--primitive-dimension-30);--size-control-md: var(--primitive-dimension-44);--size-control-lg: var(--primitive-dimension-52);--size-avatar-xs: var(--primitive-dimension-24);--size-avatar-sm: var(--primitive-dimension-30);--size-avatar-md: var(--primitive-dimension-60);--size-avatar-lg: var(--primitive-dimension-84);--size-icon-xs: var(--primitive-dimension-12);--size-icon-sm: var(--primitive-dimension-14);--size-icon-md: var(--primitive-dimension-18);--size-icon-lg: var(--primitive-dimension-22);--size-icon-xl: var(--primitive-dimension-26);--size-card-target-width: var(--primitive-dimension-240);--size-card-target-height: var(--primitive-dimension-320);--size-card-role-width: var(--primitive-dimension-270);--size-card-role-height: var(--primitive-dimension-360);--radius-xs: var(--primitive-radius-4);--radius-sm: var(--primitive-radius-8);--radius-md: var(--primitive-radius-10);--radius-lg: var(--primitive-radius-12);--radius-xl: var(--primitive-radius-14);--radius-2xl: var(--primitive-radius-18);--radius-full: var(--primitive-radius-999);--border-hairline: var(--primitive-border-width-1);--border-strong: var(--primitive-border-width-1-5);--border-emphasis: var(--primitive-border-width-2);--shadow-card: var(--primitive-shadow-card);--shadow-raised: var(--primitive-shadow-raised);--shadow-float: var(--primitive-shadow-float);--shadow-accent: var(--primitive-shadow-accent);--motion-duration-fast: var(--primitive-duration-120);--motion-duration-base: var(--primitive-duration-200);--motion-duration-slow: var(--primitive-duration-320);--motion-duration-card-flip: var(--primitive-duration-420);--motion-easing-standard: var(--primitive-easing-standard);--motion-easing-exit: var(--primitive-easing-exit);--z-index-base: var(--primitive-z-index-0);--z-index-sticky: var(--primitive-z-index-100);--z-index-overlay: var(--primitive-z-index-800);--z-index-modal: var(--primitive-z-index-900);--z-index-toast: var(--primitive-z-index-1000);--breakpoint-sm: var(--primitive-breakpoint-390);--breakpoint-md: var(--primitive-breakpoint-600);--breakpoint-lg: var(--primitive-breakpoint-900);--role-card-police-fill: var(--color-role-police);--role-card-doctor-border: var(--color-role-doctor);--role-card-doctor-fill: var(--color-background-surface)}[data-theme=dark]{--color-background-canvas: var(--primitive-color-neutral-950);--color-background-surface: var(--primitive-color-neutral-900);--color-background-elevated: var(--primitive-color-neutral-800);--color-background-night: var(--primitive-color-neutral-1000);--color-background-overlay: var(--primitive-color-overlay-scrim);--color-text-primary: var(--primitive-color-neutral-0);--color-text-secondary: var(--primitive-color-neutral-300);--color-text-inverse: var(--primitive-color-neutral-1000);--color-text-disabled: var(--primitive-color-neutral-600);--color-border-default: var(--primitive-color-neutral-400);--color-border-strong: var(--primitive-color-neutral-0);--color-border-focus: var(--primitive-color-blue-100);--color-action-primary: var(--primitive-color-blue-100);--color-action-secondary: var(--primitive-color-neutral-950);--color-action-destructive: var(--primitive-color-red-100);--color-action-disabled: var(--primitive-color-neutral-800);--color-status-success: var(--primitive-color-blue-100);--color-status-warning: var(--primitive-color-red-100);--color-status-error: var(--primitive-color-red-100);--color-status-info: var(--primitive-color-blue-100);--color-state-alive: var(--primitive-color-neutral-0);--color-state-dead: var(--primitive-color-neutral-600);--color-state-selected: var(--primitive-color-blue-100);--color-role-citizen: var(--primitive-color-neutral-0);--color-role-mafia: var(--primitive-color-red-100);--color-role-police: var(--primitive-color-blue-100);--color-role-doctor: var(--primitive-color-blue-100);--typography-caption-font-family: var(--primitive-font-family-sans);--typography-caption-font-size: var(--primitive-font-size-11);--typography-caption-line-height: var(--primitive-font-line-height-1-4);--typography-caption-font-weight: var(--primitive-font-weight-500);--typography-label-font-family: var(--primitive-font-family-sans);--typography-label-font-size: var(--primitive-font-size-12);--typography-label-line-height: var(--primitive-font-line-height-1-45);--typography-label-font-weight: var(--primitive-font-weight-600);--typography-body-sm-font-family: var(--primitive-font-family-sans);--typography-body-sm-font-size: var(--primitive-font-size-13);--typography-body-sm-line-height: var(--primitive-font-line-height-1-55);--typography-body-sm-font-weight: var(--primitive-font-weight-500);--typography-body-font-family: var(--primitive-font-family-sans);--typography-body-font-size: var(--primitive-font-size-14);--typography-body-line-height: var(--primitive-font-line-height-1-55);--typography-body-font-weight: var(--primitive-font-weight-500);--typography-body-lg-font-family: var(--primitive-font-family-sans);--typography-body-lg-font-size: var(--primitive-font-size-15);--typography-body-lg-line-height: var(--primitive-font-line-height-1-55);--typography-body-lg-font-weight: var(--primitive-font-weight-500);--typography-title-sm-font-family: var(--primitive-font-family-sans);--typography-title-sm-font-size: var(--primitive-font-size-18);--typography-title-sm-line-height: var(--primitive-font-line-height-1-3);--typography-title-sm-font-weight: var(--primitive-font-weight-700);--typography-title-font-family: var(--primitive-font-family-sans);--typography-title-font-size: var(--primitive-font-size-21);--typography-title-line-height: var(--primitive-font-line-height-1-25);--typography-title-font-weight: var(--primitive-font-weight-700);--typography-title-lg-font-family: var(--primitive-font-family-sans);--typography-title-lg-font-size: var(--primitive-font-size-26);--typography-title-lg-line-height: var(--primitive-font-line-height-1-2);--typography-title-lg-font-weight: var(--primitive-font-weight-700);--typography-display-font-family: var(--primitive-font-family-sans);--typography-display-font-size: var(--primitive-font-size-32);--typography-display-line-height: var(--primitive-font-line-height-1-15);--typography-display-font-weight: var(--primitive-font-weight-700);--typography-numeric-sm-font-family: var(--primitive-font-family-mono);--typography-numeric-sm-font-size: var(--primitive-font-size-14);--typography-numeric-sm-line-height: var(--primitive-font-line-height-1);--typography-numeric-sm-font-weight: var(--primitive-font-weight-600);--typography-numeric-sm-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-font-family: var(--primitive-font-family-mono);--typography-numeric-font-size: var(--primitive-font-size-17);--typography-numeric-line-height: var(--primitive-font-line-height-1);--typography-numeric-font-weight: var(--primitive-font-weight-600);--typography-numeric-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-lg-font-family: var(--primitive-font-family-mono);--typography-numeric-lg-font-size: var(--primitive-font-size-32);--typography-numeric-lg-line-height: var(--primitive-font-line-height-1);--typography-numeric-lg-font-weight: var(--primitive-font-weight-600);--typography-numeric-lg-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--typography-numeric-xl-font-family: var(--primitive-font-family-mono);--typography-numeric-xl-font-size: var(--primitive-font-size-62);--typography-numeric-xl-line-height: var(--primitive-font-line-height-1);--typography-numeric-xl-font-weight: var(--primitive-font-weight-600);--typography-numeric-xl-font-variant-numeric: var(--primitive-font-variant-numeric-tabular);--spacing-2: var(--primitive-space-2);--spacing-4: var(--primitive-space-4);--spacing-6: var(--primitive-space-6);--spacing-8: var(--primitive-space-8);--spacing-10: var(--primitive-space-10);--spacing-12: var(--primitive-space-12);--spacing-14: var(--primitive-space-14);--spacing-16: var(--primitive-space-16);--spacing-20: var(--primitive-space-20);--spacing-24: var(--primitive-space-24);--spacing-32: var(--primitive-space-32);--spacing-40: var(--primitive-space-40);--size-control-sm: var(--primitive-dimension-30);--size-control-md: var(--primitive-dimension-44);--size-control-lg: var(--primitive-dimension-52);--size-avatar-xs: var(--primitive-dimension-24);--size-avatar-sm: var(--primitive-dimension-30);--size-avatar-md: var(--primitive-dimension-60);--size-avatar-lg: var(--primitive-dimension-84);--size-icon-xs: var(--primitive-dimension-12);--size-icon-sm: var(--primitive-dimension-14);--size-icon-md: var(--primitive-dimension-18);--size-icon-lg: var(--primitive-dimension-22);--size-icon-xl: var(--primitive-dimension-26);--size-card-target-width: var(--primitive-dimension-240);--size-card-target-height: var(--primitive-dimension-320);--size-card-role-width: var(--primitive-dimension-270);--size-card-role-height: var(--primitive-dimension-360);--radius-xs: var(--primitive-radius-4);--radius-sm: var(--primitive-radius-8);--radius-md: var(--primitive-radius-10);--radius-lg: var(--primitive-radius-12);--radius-xl: var(--primitive-radius-14);--radius-2xl: var(--primitive-radius-18);--radius-full: var(--primitive-radius-999);--border-hairline: var(--primitive-border-width-1);--border-strong: var(--primitive-border-width-1-5);--border-emphasis: var(--primitive-border-width-2);--shadow-card: var(--primitive-shadow-card);--shadow-raised: var(--primitive-shadow-raised);--shadow-float: var(--primitive-shadow-float);--shadow-accent: var(--primitive-shadow-accent);--motion-duration-fast: var(--primitive-duration-120);--motion-duration-base: var(--primitive-duration-200);--motion-duration-slow: var(--primitive-duration-320);--motion-duration-card-flip: var(--primitive-duration-420);--motion-easing-standard: var(--primitive-easing-standard);--motion-easing-exit: var(--primitive-easing-exit);--z-index-base: var(--primitive-z-index-0);--z-index-sticky: var(--primitive-z-index-100);--z-index-overlay: var(--primitive-z-index-800);--z-index-modal: var(--primitive-z-index-900);--z-index-toast: var(--primitive-z-index-1000);--breakpoint-sm: var(--primitive-breakpoint-390);--breakpoint-md: var(--primitive-breakpoint-600);--breakpoint-lg: var(--primitive-breakpoint-900)}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}html{min-width:320px;background:var(--color-background-canvas)}body{margin:0;min-width:320px;min-height:100vh;background:var(--color-background-canvas);color:var(--color-text-primary);font-family:var(--primitive-font-family-sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--color-border-focus);outline-offset:3px}button:disabled{cursor:not-allowed}button:not(:disabled){cursor:pointer}img{display:block;max-width:100%}.app-shell{min-height:100vh}.app-main{width:min(100%,600px);margin:0 auto;padding:calc(20px + env(safe-area-inset-top)) 16px calc(32px + env(safe-area-inset-bottom))}.app-main.is-board{width:min(100%,1200px)}.page-stack{display:grid;gap:16px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;margin-bottom:20px}.brand{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--color-text-primary);text-decoration:none;font-weight:700;letter-spacing:-.03em;padding:0;border:0;background:transparent}.brand-wordmark{display:block;width:120px;height:32px}.eyebrow{margin:0 0 4px;color:var(--color-text-secondary);font-family:var(--primitive-font-family-mono);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.muted{color:var(--color-text-secondary)}.small{font-size:12px}.center{text-align:center}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.card{border:1px solid var(--color-border-default);border-radius:14px;background:var(--color-background-surface);box-shadow:var(--shadow-card);padding:18px}.card-title{margin:0 0 12px;font-size:18px;line-height:1.3;letter-spacing:-.02em}.card p:last-child{margin-bottom:0}.hero{display:grid;gap:22px;padding:28px 4px 20px}.hero h1{max-width:12ch;margin:0;font-size:clamp(34px,11vw,52px);line-height:1.07;letter-spacing:-.06em}.hero h1 em{color:var(--color-role-mafia);font-style:normal}.hero-copy{max-width:34ch;margin:0;color:var(--color-text-secondary);font-size:15px}.hero-orbit{display:flex;align-items:center;gap:8px;min-height:74px}.hero-orbit .avatar:nth-child(2){margin-left:-18px}.hero-orbit .avatar:nth-child(3){margin-left:-18px}.hero-orbit .avatar:nth-child(4){margin-left:-18px}.hero-orbit-label{margin-left:8px;color:var(--color-text-secondary);font-family:var(--primitive-font-family-mono);font-size:11px}.home-actions{display:grid;gap:12px}.home-divider{display:flex;align-items:center;gap:12px;color:var(--color-text-secondary);font-size:12px}.home-divider:before,.home-divider:after{height:1px;flex:1;background:var(--color-border-default);content:""}.feature-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.feature-item{min-height:78px;padding:12px 10px;border-radius:10px;background:var(--color-background-canvas)}.feature-item strong{display:block;margin-top:6px;font-size:12px}.feature-item span{color:var(--color-text-secondary);font-size:11px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:12px 18px;border:1.5px solid transparent;border-radius:14px;font-weight:700;transition:transform var(--motion-duration-fast),background var(--motion-duration-fast),border-color var(--motion-duration-fast),opacity var(--motion-duration-fast)}.button:active:not(:disabled){transform:scale(.98)}.button-primary{background:var(--color-action-primary);color:var(--color-text-inverse)}.button-primary:hover:not(:disabled){filter:brightness(.92)}.button-secondary{border-color:var(--color-border-strong);background:var(--color-action-secondary);color:var(--color-text-primary)}.button-secondary:hover:not(:disabled){background:var(--color-background-canvas)}.button-destructive{background:var(--color-action-destructive);color:var(--color-text-inverse)}.button-ghost{min-height:44px;padding:8px 12px;background:transparent;color:var(--color-text-secondary)}.button:disabled{background:var(--color-action-disabled);color:var(--color-text-disabled);opacity:.85}.icon-button{display:inline-grid;place-items:center;width:44px;height:44px;flex:0 0 44px;padding:0;border:1px solid var(--color-border-default);border-radius:12px;background:var(--color-background-surface);transition:background var(--motion-duration-fast),transform var(--motion-duration-fast)}.icon-button:hover:not(:disabled){background:var(--color-background-canvas)}.icon-button:active:not(:disabled){transform:scale(.95)}.icon-button:disabled{color:var(--color-text-disabled);background:var(--color-action-disabled)}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.field{display:grid;gap:6px}.field-label{color:var(--color-text-secondary);font-size:12px;font-weight:600}.field input,.field select{width:100%;min-height:52px;border:1.5px solid var(--color-border-strong);border-radius:12px;background:var(--color-background-surface);color:var(--color-text-primary);padding:12px 14px}.field input::placeholder{color:var(--color-text-disabled)}.field input[aria-invalid=true]{border-color:var(--color-status-error)}.field-message{color:var(--color-text-secondary);font-size:12px}.field-error{color:var(--color-status-error);font-weight:600}.select-wrap{position:relative}.select-wrap select{appearance:none;padding-right:40px}.select-wrap>span{position:absolute;top:50%;right:14px;transform:translateY(-56%);pointer-events:none}.form-stack{display:grid;gap:14px}.form-actions{display:grid;gap:10px;margin-top:8px}.form-actions.two{grid-template-columns:1fr 1fr}.rematch-waiting{align-self:center;margin:0;text-align:center}.room-config-summary{display:grid;gap:14px}.room-config-summary h2{margin:0}.room-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.room-config-grid>div{display:grid;gap:2px;min-height:52px;padding:10px 12px;border-radius:10px;background:var(--color-background-canvas)}.room-config-grid dt{color:var(--color-text-secondary);font-size:11px}.room-config-grid dd{margin:0;font-weight:700}.room-config-discussion{grid-column:1 / -1}.theme-control{min-inline-size:0;margin:0;display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--color-border-default);border-radius:999px;background:var(--color-background-surface)}.segmented-field{min-inline-size:0;margin:0;border:0}.theme-control button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--color-text-secondary)}.theme-control button.is-active{background:var(--color-text-primary);color:var(--color-background-surface)}.phase-banner{display:flex;align-items:center;gap:14px;padding:20px;border-radius:14px;background:var(--color-background-surface);box-shadow:var(--shadow-card)}.phase-banner h1{margin:0;font-size:26px;line-height:1.2;letter-spacing:-.04em}.phase-banner p:last-child{margin:3px 0 0;color:var(--color-text-secondary)}.phase-mark{display:grid;place-items:center;width:54px;height:54px;flex:0 0 54px;border-radius:18px;background:var(--color-background-canvas);color:var(--color-state-selected);font-size:26px}.phase-night_action{color:var(--primitive-color-neutral-0);background:var(--color-background-night)}.phase-night_action .phase-mark{background:var(--color-background-elevated);color:var(--primitive-color-neutral-0)}.phase-night_action p,.phase-night_action .eyebrow{color:var(--primitive-color-neutral-400)}.phase-game_over .phase-mark{color:var(--color-role-mafia)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px}.topbar-tools{display:flex;align-items:center;gap:6px}.connection-banner{display:flex;align-items:center;gap:8px;margin:-4px 0 4px;padding:9px 12px;border-radius:10px;background:var(--color-background-surface);color:var(--color-text-secondary);font-size:12px}.connection-banner.is-offline{color:var(--color-status-error)}.session-terminal{display:grid;gap:12px}.session-terminal h1,.session-terminal p{margin:0}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--color-status-success)}.status-dot.is-warn{background:var(--color-status-warning)}.avatar{display:inline-grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--color-text-primary);color:var(--color-background-surface);font-family:var(--primitive-font-family-mono);font-weight:600}.avatar-xs{width:24px;height:24px;font-size:10px}.avatar-sm{width:30px;height:30px;font-size:12px}.avatar-md{width:60px;height:60px;font-size:20px}.avatar-lg{width:84px;height:84px;font-size:27px}.avatar.is-dead{background:var(--color-background-canvas);color:var(--color-state-dead);border:1.5px dashed var(--color-state-dead);text-decoration:line-through}.badge{display:inline-flex;align-items:center;gap:4px;width:fit-content;min-height:24px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.badge-neutral{background:var(--color-background-canvas);color:var(--color-text-secondary)}.badge-blue,.badge-success{background:color-mix(in srgb,var(--color-state-selected) 14%,transparent);color:var(--color-state-selected)}.badge-red{background:color-mix(in srgb,var(--color-role-mafia) 14%,transparent);color:var(--color-role-mafia)}.badge-dead{background:var(--color-background-canvas);color:var(--color-state-dead);text-decoration:line-through}.stepper{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0}.stepper-controls{display:flex;align-items:center;gap:10px}.stepper-controls strong{display:inline-flex;align-items:baseline;justify-content:center;min-width:54px;font-family:var(--primitive-font-family-mono);font-size:20px}.stepper-controls small{margin-left:3px;color:var(--color-text-secondary);font-family:var(--primitive-font-family-sans);font-size:11px;font-weight:500}.segmented-field{display:grid;gap:6px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;border-radius:12px;background:var(--color-background-canvas)}.segmented button{min-height:44px;padding:8px;border:0;border-radius:9px;background:transparent;color:var(--color-text-secondary);font-size:12px;font-weight:600}.segmented button.is-active{background:var(--color-background-surface);color:var(--color-text-primary);box-shadow:var(--shadow-card)}.progress-wrap{display:grid;gap:6px}.progress-label{display:flex;justify-content:space-between;color:var(--color-text-secondary);font-size:12px}.progress{height:8px;overflow:hidden;border-radius:999px;background:var(--color-background-canvas)}.progress span{display:block;height:100%;border-radius:inherit;background:var(--color-state-selected);transition:width var(--motion-duration-base)}.lobby-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.lobby-title h1{margin:0;font-size:26px;letter-spacing:-.05em}.room-code{display:inline-flex;align-items:center;gap:5px;padding:8px 10px;border-radius:8px;background:var(--color-background-canvas);font-family:var(--primitive-font-family-mono);font-weight:600;letter-spacing:.08em}.participant-list{display:grid;gap:6px}.player-row{display:flex;align-items:center;gap:9px;width:100%;min-height:52px;padding:8px;border:1px solid transparent;border-radius:10px;background:transparent;text-align:left}button.player-row:hover,.player-row.is-selected{border-color:var(--color-state-selected);background:color-mix(in srgb,var(--color-state-selected) 9%,transparent)}.player-name{overflow:hidden;flex:1;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.player-name.is-dead{color:var(--color-state-dead);text-decoration:line-through}.player-trailing{color:var(--color-text-secondary);font-size:12px}.lobby-room-link{display:grid;align-items:center;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;gap:14px}.lobby-room-link>div:first-child{min-width:0}.lobby-room-link .form-actions.two{grid-template-columns:1fr}.lobby-room-link .button{min-width:0;white-space:nowrap}.qr-box{display:grid;place-items:center;width:128px;height:128px;flex:0 0 128px;padding:8px;border-radius:12px;background:var(--primitive-color-neutral-0)}.qr-box img{width:100%;height:100%;object-fit:contain}.qr-placeholder{display:grid;place-items:center;width:100%;height:100%;border:3px solid var(--primitive-color-neutral-1000);background:repeating-linear-gradient(45deg,var(--primitive-color-neutral-1000) 0 3px,var(--primitive-color-neutral-0) 3px 7px);color:var(--primitive-color-neutral-0);font-family:var(--primitive-font-family-mono);font-size:10px;text-shadow:0 1px var(--primitive-color-neutral-1000)}.role-reveal{display:grid;gap:18px;justify-items:center;text-align:center}.role-reveal>p{max-width:30ch;margin:0;color:var(--color-text-secondary)}.role-sync{display:grid;gap:8px;width:min(100%,360px);min-height:180px;place-content:center;text-align:center}.role-card{display:grid;gap:12px;width:min(100%,270px);min-height:360px;padding:18px;border:1.5px solid var(--color-border-default);border-radius:18px;background:var(--color-background-surface);color:var(--color-text-primary);box-shadow:var(--shadow-raised);text-align:left}.role-card-loading{display:grid;place-content:center;gap:8px;text-align:center}button.role-card{cursor:pointer}.role-card.is-selected{border-color:var(--color-state-selected);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-state-selected) 18%,transparent),var(--shadow-raised)}.role-card-top{display:flex;justify-content:space-between;color:var(--color-text-secondary);font-family:var(--primitive-font-family-mono);font-size:10px;letter-spacing:.08em}.role-art{display:grid;place-items:center;min-height:184px;overflow:hidden;border-radius:12px;background:var(--color-background-canvas)}.role-art img{width:100%;height:100%;object-fit:contain}.role-art-back{min-height:184px;background:var(--color-text-primary);color:var(--color-background-surface)}.role-art-back svg{width:48px;height:48px}.role-art-mafia{border:1px solid color-mix(in srgb,var(--color-role-mafia) 34%,transparent)}.role-art-police,.role-art-doctor{border:1px solid color-mix(in srgb,var(--color-state-selected) 34%,transparent)}.role-card-role{font-size:26px;font-weight:700;letter-spacing:-.06em}.role-card p{margin:0;color:var(--color-text-secondary);font-size:13px}.role-card .role-card-hidden{margin-top:auto;color:var(--color-text-primary);font-weight:600}.role-reveal-progress{display:grid;gap:6px;width:min(100%,270px)}.game-section{display:grid;gap:12px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-head h2{margin:0;font-size:18px;letter-spacing:-.03em}.timer{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;gap:7px;width:fit-content;min-height:44px;padding:8px 12px;border-radius:12px;background:var(--color-background-surface);color:var(--color-text-primary);box-shadow:var(--shadow-card);white-space:nowrap}.timer svg{width:18px;height:18px;color:var(--color-state-selected)}.timer-label{color:var(--color-text-secondary);font-size:11px}.timer-value{font-family:var(--primitive-font-family-mono);font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}.timer-compact{min-height:30px;padding:4px 8px;gap:4px;border-radius:8px;box-shadow:none}.timer-compact svg{width:14px;height:14px}.timer-compact .timer-value{font-size:14px}.timer.is-urgent{color:var(--color-status-error)}.timer.is-urgent svg{color:currentColor}.early-vote{display:grid;gap:10px;border:1px solid color-mix(in srgb,var(--color-state-selected) 32%,var(--color-border-default));background:color-mix(in srgb,var(--color-state-selected) 7%,var(--color-background-surface))}.early-vote-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.vote-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vote-continue-note{align-self:center;margin:0;text-align:center}.vote-choice{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:62px;padding:10px 12px;border:1px solid var(--color-border-default);border-radius:10px;background:var(--color-background-surface)}.vote-choice strong{font-size:14px}.vote-choice.selected{border-color:var(--color-state-selected);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-state-selected) 16%,transparent)}.vote-choice input{width:20px;height:20px;accent-color:var(--color-state-selected)}.deck-wrap{display:flex;align-items:center;gap:8px;width:100%}.card-deck{display:grid;flex:1 1 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;overflow:hidden;padding:4px 0 12px;scroll-snap-type:x mandatory}.deck-arrow{margin-top:-8px}.target-card{display:grid;width:100%;min-width:0;place-items:center;gap:8px;min-height:210px;padding:12px 8px;border:1.5px solid var(--color-border-default);border-radius:14px;background:var(--color-background-surface);color:var(--color-text-primary);box-shadow:var(--shadow-card);scroll-snap-align:center}.target-card.is-selected{border-color:var(--color-state-selected);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-state-selected) 18%,transparent),var(--shadow-card)}.target-card.is-disabled{opacity:.5}.target-index{align-self:start;color:var(--color-text-secondary);font-family:var(--primitive-font-family-mono);font-size:10px}.target-name{max-width:100%;overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.target-state{color:var(--color-text-secondary);font-size:11px}.target-disabled-reason{max-width:100%;overflow:hidden;color:var(--color-status-error);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.abstain-button{width:100%}.action-status{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:12px;border-radius:10px;background:var(--color-background-canvas)}.action-status strong{font-size:13px}.action-status span{color:var(--color-text-secondary);font-size:12px}.night-card{border-color:var(--color-border-default);background:var(--color-background-night);color:var(--primitive-color-neutral-0)}.night-card .field-label,.night-card .muted{color:var(--primitive-color-neutral-400)}.night-card .target-card{background:var(--color-background-elevated);border-color:var(--color-border-default);color:var(--primitive-color-neutral-0)}.night-card .target-state{color:var(--primitive-color-neutral-400)}.mafia-hint{color:var(--color-role-mafia)}.night-info{display:grid;gap:10px;padding:12px;border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:color-mix(in srgb,var(--primitive-color-neutral-0) 8%,transparent)}.night-info .section-head{margin-bottom:0}.night-info p{margin:0}.night-info-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.night-info-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px;border-top:1px solid color-mix(in srgb,var(--color-border-default) 60%,transparent);font-size:12px}.execution-result{display:grid;justify-items:center;gap:12px;padding:28px 18px;text-align:center}.result-symbol{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:var(--color-background-canvas);color:var(--color-role-mafia);font-size:32px}.execution-result h2{margin:0;font-size:24px;letter-spacing:-.05em}.execution-result p{margin:0;color:var(--color-text-secondary)}.ghost-panel{display:grid;gap:14px;border:1px solid color-mix(in srgb,var(--color-role-mafia) 40%,var(--color-border-default));background:color-mix(in srgb,var(--color-role-mafia) 7%,var(--color-background-surface))}.app-main.ghost-view{background:var(--color-background-night)}.ghost-view .ghost-panel{border-color:var(--color-border-default);background:var(--color-background-night);color:var(--primitive-color-neutral-0)}.ghost-view .ghost-panel .muted,.ghost-view .ghost-panel .ghost-heading p{color:var(--primitive-color-neutral-400)}.ghost-heading{display:flex;align-items:center;gap:12px}.ghost-heading h2{margin:0;font-size:20px}.ghost-heading p{margin:3px 0 0;color:var(--color-text-secondary);font-size:12px}.ghost-targets{display:grid;gap:8px}.ghost-targets .player-row{border:1px solid var(--color-border-default);background:var(--color-background-surface)}.winner{text-align:center;padding:20px}.winner h2{margin:0;font-size:32px;letter-spacing:-.07em}.winner p{margin:8px 0 0;color:var(--color-text-secondary)}.role-recap{display:grid;gap:4px}.role-recap .player-row{border-bottom:1px solid var(--color-border-default);border-radius:0}.role-recap-role{margin-left:auto;color:var(--color-text-secondary);font-size:12px;font-weight:600}.modal-layer{position:fixed;z-index:900;inset:0;display:grid;place-items:end center;padding:16px 16px calc(16px + env(safe-area-inset-bottom))}.modal-scrim{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--color-background-overlay)}.modal{position:relative;width:min(100%,480px);padding:22px;border-radius:18px;background:var(--color-background-elevated);box-shadow:var(--shadow-float)}.modal-icon{display:grid;place-items:center;width:40px;height:40px;margin-bottom:12px;border-radius:12px;background:var(--color-background-canvas);color:var(--color-state-selected)}.modal h2{margin:0;font-size:20px}.modal p{margin:8px 0 18px;color:var(--color-text-secondary)}.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shake-status{grid-column:1 / -1;margin:0}.shake-guide{grid-column:1 / -1;display:block;width:100%;max-height:210px;border-radius:14px;object-fit:contain}.toast{position:fixed;z-index:1000;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));left:16px;display:flex;align-items:center;gap:8px;width:min(100% - 32px,480px);margin:0 auto;padding:12px 14px;border:1px solid var(--color-border-default);border-radius:12px;background:var(--color-background-elevated);box-shadow:var(--shadow-float);font-size:13px}.toast svg{flex:0 0 18px;color:var(--color-state-selected)}.toast-error svg{color:var(--color-status-error)}.toast-success svg{color:var(--color-status-success)}.toast .icon-button{width:30px;height:30px;min-width:30px;margin-left:auto;border:0;background:transparent}.board-shell{min-height:100vh;background:var(--color-background-canvas)}.board-grid{display:grid;gap:18px;margin-top:24px;min-width:0}.board-grid>*{min-width:0}.board-header{display:flex;align-items:center;justify-content:space-between;gap:18px}.board-header h1{margin:0;font-size:clamp(28px,5vw,44px);letter-spacing:-.06em}.board-header .room-code{font-size:22px}.board-status{display:flex;align-items:center;gap:12px;color:var(--color-text-secondary)}.board-error{display:grid;gap:8px}.board-error p{margin:0}.board-phase{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:26px;border-radius:18px;background:var(--color-background-surface);box-shadow:var(--shadow-raised)}.board-phase h2{margin:0;font-size:clamp(36px,7vw,68px);letter-spacing:-.08em;line-height:1}.board-phase p{margin:8px 0 0;color:var(--color-text-secondary);font-size:16px}.board-phase .timer{min-height:72px;padding:14px 18px}.board-phase .timer-value{font-size:32px}.board-phase-info{display:grid;gap:10px}.board-phase-info h2{margin:0;font-size:clamp(24px,4vw,40px);letter-spacing:-.06em}.board-phase-info p{margin:0}.board-result-players{display:grid;gap:6px;margin-top:4px}.board-result-player{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:8px 0;border-bottom:1px solid var(--color-border-default)}.board-live{display:grid;gap:12px}.board-live h2{margin:0;font-size:21px}.board-players{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.board-player{display:flex;align-items:center;gap:10px;min-height:70px;min-width:0;padding:12px;border:1px solid var(--color-border-default);border-radius:12px;background:var(--color-background-surface)}.board-player.is-dead{opacity:.58}.board-player .player-name{min-width:0;overflow-wrap:anywhere;font-size:15px}.board-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--color-text-secondary);font-size:12px}.board-qr{display:flex;align-items:center;gap:14px;min-width:0}.board-qr>div{min-width:0}.board-qr .qr-box{width:clamp(180px,20vw,220px);height:clamp(180px,20vw,220px);flex-basis:clamp(180px,20vw,220px)}@media(max-width:360px){html,body{min-width:0}.lobby-room-link{grid-template-columns:1fr}.lobby-room-link .form-actions.two{grid-template-columns:1fr 1fr}.lobby-room-link .button{padding-inline:8px}.lobby-room-link>.qr-box{justify-self:center}.target-card{gap:6px;padding-inline:4px}.target-card .avatar-lg{width:64px;height:64px;font-size:20px}}@media(max-width:599px){.is-board .topbar-tools .badge{display:none}.board-header>div{min-width:0}.board-qr{flex-direction:column;align-items:stretch}.board-qr .qr-box{align-self:center}.board-phase{grid-template-columns:minmax(0,1fr)}.board-phase .timer{justify-self:start}.board-footer{flex-wrap:wrap}}@media(min-width:600px){.app-main{padding:calc(28px + env(safe-area-inset-top)) 24px calc(48px + env(safe-area-inset-bottom))}.hero{padding-top:54px}.home-actions{grid-template-columns:1fr 1fr}.home-actions .button-primary{grid-column:span 2}.modal-layer{place-items:center}.board-grid{grid-template-columns:1fr 1fr;align-items:start}.board-header,.board-phase,.board-footer{grid-column:1 / -1}.board-phase{grid-template-columns:1fr auto}}@media(min-width:1000px){.board-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}.board-phase{grid-column:auto;align-self:stretch}.board-phase-info{grid-column:1 / -1}.board-grid>.scene-art-hero{height:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto;animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}}
