:root{--bg: #080c16;--bg-card: #0c1018;--bg-elevated: #121620;--bg-input: #0e121c;--border: #1c2030;--border-light: #2a3040;--text: #ede9df;--text-warm: #b8b4ad;--text-muted: #7a7a85;--text-faint: #6b6b75;--red: #b91c1c;--red-bright: #ef4444;--red-light: #f5c6c3;--red-dim: #280808;--red-glow: rgba(185, 28, 28, .2);--gold: #c9a045;--gold-dim: #221a06;--gold-glow: rgba(201, 160, 69, .18);--purple: #a855f7;--purple-dim: #1a0a2e;--blue: #2563eb;--blue-dim: #0d1830;--teal: #0d9488;--teal-dim: #071e1c;--teal-glow: rgba(13, 148, 136, .15);--surface: var(--bg-card);--accent: var(--gold);--radius: 5px;--radius-lg: 9px;--font-display: "Bodoni Moda", "Didot", "Playfair Display", Georgia, serif;--font-body: "Josefin Sans", "Inter", system-ui, -apple-system, sans-serif;--font-serif: "Cormorant Garamond", "Crimson Text", Georgia, serif;--transition: .14s ease;--transition-slow: .28s ease;--card-highlight: inset 0 1px 0 rgba(255, 255, 255, .04);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px}@font-face{font-family:Josefin Sans;src:url(/fonts/JosefinSans-Variable.woff2) format("woff2");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Josefin Sans;src:url(/fonts/JosefinSans-Italic-Variable.woff2) format("woff2");font-weight:300 700;font-style:italic;font-display:swap}@font-face{font-family:Bodoni Moda;src:url(/fonts/BodoniModa-Variable.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}@font-face{font-family:Bodoni Moda;src:url(/fonts/BodoniModa-Italic-Variable.woff2) format("woff2");font-weight:400 900;font-style:italic;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Variable.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap}@font-face{font-family:Cormorant Garamond;src:url(/fonts/CormorantGaramond-Italic-Variable.woff2) format("woff2");font-weight:400 600;font-style:italic;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='250' height='250'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='250' height='250' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");opacity:.03;pointer-events:none;z-index:9998}body:after{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 50% 40%,transparent 55%,rgba(4,8,18,.55) 100%);pointer-events:none;z-index:9997}a{color:var(--gold);text-decoration:none}a:hover{color:#d9b458}h1,h2{font-family:var(--font-display);font-weight:700;line-height:1.2;color:var(--text);letter-spacing:-.01em;margin-bottom:16px}h3,h4{font-family:var(--font-body);font-weight:600;line-height:1.25;color:var(--text);margin-bottom:12px}input,select,textarea{background:var(--bg-input);border:1px solid var(--border-light);color:var(--text);border-radius:var(--radius);padding:.6rem .75rem;font-size:16px;font-family:var(--font-body);width:100%;transition:border-color var(--transition),box-shadow var(--transition);outline:none}input:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-glow)}input::placeholder{color:var(--text-faint)}input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold);cursor:pointer}input[type=number]{width:64px;text-align:center}input:disabled{opacity:.5;cursor:not-allowed}input[type=file]{cursor:pointer;padding:0}input[type=file]::file-selector-button{background:var(--surface-alt, #2a2a2e);color:var(--text);border:1px solid var(--border-light);border-radius:var(--radius);padding:.6rem 1rem;font-size:14px;font-family:var(--font-body);cursor:pointer;margin-right:.75rem;transition:background var(--transition)}input[type=file]::file-selector-button:hover{background:var(--surface-hover, #353538)}label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:5px;margin-top:14px}label:first-child{margin-top:0}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;overflow-x:clip}.app-main{flex:1;max-width:900px;width:100%;margin:0 auto;--app-main-pad-x: 16px;padding:28px var(--app-main-pad-x)}app-nav-menu{display:block;position:sticky;top:0;z-index:150}.top-bar{position:relative;background:#080c16eb;border-bottom:1px solid var(--border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:0 24px;height:54px;display:grid;grid-template-columns:auto 1fr auto;align-items:center}.safe-area-cover-top,.safe-area-cover-bottom{position:fixed;left:0;right:0;height:0;z-index:100000;pointer-events:none}.safe-area-cover-top{top:0;background:#080c16d1}.safe-area-cover-bottom{bottom:0;background:#0c0c10d1}@supports (-webkit-touch-callout: none){.safe-area-cover-top,.safe-area-cover-bottom{height:5px}}.top-bar-start{display:flex;align-items:center;gap:12px;min-width:0}.top-bar-actions{display:flex;align-items:center;gap:12px;justify-self:end}.top-bar-nav{display:flex;align-items:center;gap:24px;justify-self:center}.top-bar-nav .nav-link{font-size:13px;font-weight:500;color:var(--text-muted);transition:color var(--transition);white-space:nowrap}.top-bar-nav .nav-link:hover,.top-bar-nav .nav-link.active{color:var(--gold)}.burger-btn{display:none;background:none;border:none;color:var(--text-muted);cursor:pointer;width:36px;height:36px;padding:6px;border-radius:6px;transition:color var(--transition),background var(--transition)}.burger-btn:hover{color:var(--gold);background:#c9a04514}.burger-btn:focus-visible{outline:none}.audio-controls{position:relative;display:flex;align-items:center;height:36px}.audio-toggle-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;width:36px;height:36px;padding:6px;border-radius:6px;transition:color var(--transition),background var(--transition)}.audio-toggle-btn:hover{color:var(--gold);background:#c9a04514}.audio-toggle-btn[aria-pressed=true]{color:var(--gold)}.audio-toggle-btn:focus-visible{outline:none}.audio-panel{position:absolute;top:calc(100% + 6px);right:0;width:260px;max-width:calc(100vw - 24px);background:linear-gradient(180deg,#12161ffa,#0a0d14fa);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:10px;box-shadow:0 12px 32px #0000007a;z-index:200;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;flex-direction:column;gap:10px}.audio-panel-header{display:flex;align-items:center;gap:8px;padding:2px 2px 8px;border-bottom:1px solid rgba(255,255,255,.06)}.audio-now-playing{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.audio-now-playing-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.audio-now-playing-track{font-size:15px;font-weight:500;color:var(--text);font-family:Cormorant Garamond,serif;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.audio-header-mute{flex-shrink:0;width:32px;height:32px;padding:6px;border:1px solid rgba(255,255,255,.12);border-radius:6px;background:#ffffff0a;color:var(--text-warm);cursor:pointer;transition:color var(--transition),background var(--transition),border-color var(--transition)}.audio-header-mute:hover{color:var(--gold);background:#c9a0451a;border-color:#c9a04559}.audio-header-mute[aria-pressed=true]{color:var(--gold);background:#c9a04524;border-color:#c9a04566}.audio-header-mute:focus-visible{outline:none}.audio-panel-sliders{display:flex;flex-direction:column;gap:18px}.audio-slider-row{display:grid;grid-template-columns:52px 1fr 32px;align-items:center;gap:8px}.audio-slider-label{font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.audio-slider{position:relative;height:14px;width:100%;cursor:pointer;touch-action:none;display:flex;align-items:center;outline:none}.audio-slider:focus-visible .audio-slider-thumb{box-shadow:0 0 0 2px #c9a0458c,0 0 4px #c9a04580}.audio-slider-track{position:relative;width:100%;height:3px;background:#ffffff1a;border-radius:2px}.audio-slider-fill{position:absolute;left:0;top:0;bottom:0;background:#ffffff73;border-radius:2px}.audio-slider-thumb{position:absolute;top:50%;width:14px;height:14px;background:var(--gold);border-radius:50%;box-shadow:0 0 4px #c9a04580,0 1px 2px #0006;transform:translate(-50%,-50%);pointer-events:none}.audio-volume-pct{font-size:11px;font-weight:600;color:var(--text-faint);text-align:right;font-variant-numeric:tabular-nums}.audio-panel-tracks{display:flex;flex-direction:column;gap:4px;border-top:1px solid rgba(255,255,255,.06);padding-top:8px}.audio-tracks-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);padding:0 2px}.audio-track-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px;max-height:168px;overflow-y:auto}.audio-track-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:4px;background:transparent;color:var(--text-warm);font:inherit;font-size:12px;font-weight:500;letter-spacing:.02em;cursor:pointer;text-align:left;transition:color var(--transition),background var(--transition)}.audio-track-row:hover{color:var(--text);background:#ffffff0a}.audio-track-row.is-current{color:var(--gold);background:#c9a0450f}.audio-track-row:focus-visible{outline:none}.audio-track-icon{width:12px;height:12px;flex-shrink:0;color:currentColor}.audio-track-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Cormorant Garamond,serif;font-style:italic;font-size:13px}.audio-track-empty{padding:8px;text-align:center;color:var(--text-faint);font-size:11px;font-style:italic}.audio-panel-footer{display:grid;grid-template-columns:1fr 1fr;gap:6px;border-top:1px solid rgba(255,255,255,.06);padding-top:8px}.audio-action-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border:1px solid rgba(255,255,255,.1);border-radius:6px;background:transparent;color:var(--text-warm);font:inherit;font-size:12px;font-weight:600;letter-spacing:.04em;cursor:pointer;transition:color var(--transition),background var(--transition),border-color var(--transition)}.audio-action-btn:hover:not(:disabled){color:var(--gold);background:#ffffff0a;border-color:#c9a0454d}.audio-action-btn:disabled{opacity:.4;cursor:not-allowed}.audio-action-btn svg{width:12px;height:12px;flex-shrink:0}.audio-action-btn:focus-visible{outline:none}.nav-drawer-backdrop{position:fixed;inset:0;z-index:150;background:transparent;cursor:default}.nav-drawer{position:absolute;top:calc(100% - 3px);right:12px;min-width:180px;background:linear-gradient(180deg,#12161ffa,#0a0d14fa);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:4px;box-shadow:0 12px 32px #0000007a;z-index:200;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;flex-direction:column}.nav-drawer-link{display:flex;align-items:center;padding:9px 12px;border-radius:6px;font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--text-warm);transition:color var(--transition),background var(--transition)}.nav-drawer-link:hover{color:var(--text);background:#ffffff0f}.nav-drawer-link.active{color:var(--gold)}.nav-drawer-divider{height:1px;background:#ffffff14;margin:4px 8px}.nav-drawer-link.nav-drawer-supporter{color:var(--gold)}.nav-coffee{justify-self:center;display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-faint);transition:color var(--transition);white-space:nowrap;position:relative;top:2px}.nav-coffee:hover{color:var(--gold)}.nav-coffee:hover .nav-coffee-icon{color:#e25555;opacity:1}.nav-coffee-icon{width:12px;height:12px;flex-shrink:0;opacity:.6;transition:all var(--transition)}.nav-coffee-label{display:inline}.user-menu{position:relative;display:flex;align-items:center;height:36px}.user-menu-auth-link{font-size:12px;font-weight:600;color:var(--text-muted);padding:4px 6px;border-radius:var(--radius);letter-spacing:.04em;transition:color var(--transition),background var(--transition)}.user-menu-auth-link:hover{color:var(--gold);background:#c9a04514}.user-menu-auth-sep{color:var(--text-faint);font-size:12px;-webkit-user-select:none;user-select:none;pointer-events:none}.user-menu-profile{position:relative}.user-menu-backdrop{position:fixed;inset:0;z-index:150;border:none;padding:0;margin:0;background:transparent;cursor:default}.user-menu-toggle{display:flex;align-items:center;gap:8px;min-height:36px;background:transparent;border:1px solid transparent;border-radius:999px;color:var(--text-warm);cursor:pointer;padding:4px 10px 4px 4px;font-size:12px;font-weight:600;transition:color var(--transition),background var(--transition),transform var(--transition)}.user-menu-toggle:hover,.user-menu-toggle.is-open{color:var(--gold);background:#c9a04514}.user-menu-toggle:active{transform:scale(.97)}.user-menu-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:2px}@media(prefers-reduced-motion:reduce){.user-menu-toggle,.user-menu-toggle:active,.lang-toggle:active{transition:none;transform:none}}.user-menu-chevron{width:12px;height:12px;flex-shrink:0;opacity:.6}.user-icon{width:18px;height:18px;flex-shrink:0;opacity:.78}.user-name{max-width:108px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:180px;background:linear-gradient(180deg,#12161ffa,#0a0d14fa);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:10px;box-shadow:0 12px 32px #0000007a;z-index:200;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.user-dropdown-header{padding:6px 6px 10px;display:flex;flex-direction:column;gap:4px}.user-dropdown-label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#ffffff57}.user-dropdown-name{font-size:1.1rem;font-weight:700;color:var(--text);line-height:1.2}.user-dropdown-divider{border:none;border-top:1px solid rgba(255,255,255,.08);margin:6px 4px}.user-dropdown-form{margin:0}.user-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;border-radius:10px;background:transparent;color:var(--text-warm);font:inherit;font-size:13px;font-weight:500;text-align:left;cursor:pointer;appearance:none;transition:color var(--transition),background var(--transition),border-color var(--transition),transform var(--transition)}.user-dropdown-item:hover{color:var(--text);background:linear-gradient(90deg,#ffffff0f,#ffffff05)}.user-dropdown-item-icon{width:16px;height:16px;flex-shrink:0;opacity:.84}.user-dropdown-signout{color:#d1a7a7}.user-dropdown-signout:hover{color:#f3d4d4;background:linear-gradient(90deg,#b91c1c29,#b91c1c0d)}@media(max-width:640px){.user-dropdown{min-width:168px;right:-2px}}.install-app{position:relative;display:flex;align-items:center;animation:fade-in .3s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.install-btn{background:none;border:1px solid var(--border);color:var(--text-muted);cursor:pointer;padding:6px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;transition:color var(--transition),border-color var(--transition),background var(--transition);line-height:0}.install-btn:hover{color:var(--gold);border-color:var(--gold);background:#c9a0450f}.install-icon{width:18px;height:18px}.install-ios-hint{position:absolute;top:100%;right:0;margin-top:8px;background:#0f121cf5;border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;font-size:12px;color:var(--text-warm);white-space:normal;min-width:180px;max-width:240px;box-shadow:0 8px 24px #0006;z-index:200}.language-switcher{position:relative;display:flex;align-items:center;height:36px}.lang-toggle{display:flex;align-items:center;gap:3px;background:none;border:none;color:var(--gold);cursor:pointer;padding:4px 6px;border-radius:3px;font-size:11px;font-weight:600;letter-spacing:.06em;transition:color var(--transition),background var(--transition)}.lang-toggle:hover{background:#c9a0451a}.lang-chevron{width:12px;height:12px;opacity:.6;transition:transform var(--transition)}.lang-chevron.is-open{transform:rotate(180deg)}.lang-backdrop{position:fixed;inset:0;z-index:150;border:none;padding:0;margin:0;background:transparent;cursor:default}.lang-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:120px;background:linear-gradient(180deg,#12161ffa,#0a0d14fa);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:4px;box-shadow:0 12px 32px #0000007a;z-index:200;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.lang-option{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-warm);font:inherit;font-size:12px;font-weight:600;letter-spacing:.04em;cursor:pointer;text-align:left;transition:color var(--transition),background var(--transition)}.lang-option:hover{color:var(--text);background:#ffffff0f}.lang-option.active{color:var(--gold)}.lang-option-name{font-weight:400;color:var(--text-faint);font-size:11px}.top-bar:after{content:"";position:absolute;bottom:0;left:24px;right:24px;height:1px;background:linear-gradient(90deg,transparent,var(--gold) 40%,transparent);opacity:.15}.top-bar .brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:19px;font-weight:700;color:var(--gold);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;transition:color var(--transition)}@media(max-width:960px){.top-bar{padding:0 16px}.top-bar .brand{font-size:17px;gap:8px}.top-bar-nav{gap:18px}}@media(max-width:820px){.top-bar .brand{font-size:15px}.top-bar-nav{gap:14px}.top-bar-nav .nav-link{font-size:12px}}@media(max-width:639px){.top-bar{padding:0 12px;gap:0;grid-template-columns:1fr auto}.top-bar .brand{font-size:14px;gap:6px}.brand-icon{width:16px;height:16px}.nav-coffee-label{display:none}.top-bar-start,.top-bar-actions{gap:2px}.top-bar-nav{display:none}.burger-btn{display:inline-block}.user-menu-toggle{gap:0;padding:4px;min-height:44px;min-width:44px;border-radius:50%;justify-content:center}.user-menu-toggle:active{transform:scale(.94)}.user-name,.user-menu-profile,.user-menu-chevron{display:none}.user-menu-auth-link{min-height:44px;display:inline-flex;align-items:center;padding:4px 8px}.lang-toggle{min-height:44px;min-width:36px;padding:4px 8px;justify-content:center;font-size:12px}.lang-toggle:active{transform:scale(.94)}.lang-chevron{display:none}.install-btn{min-height:44px;min-width:44px;padding:8px;border-color:transparent}.install-btn:hover{border-color:transparent;background:#c9a0451a}.burger-btn{width:44px;height:44px;padding:8px}}@media(max-width:480px){.top-bar .brand{font-size:13px}}@media(max-width:400px){.top-bar .brand{font-size:12px;gap:5px}}@media(max-width:360px){.top-bar .brand{font-size:11px;gap:4px}}.top-bar .brand:hover{color:var(--text)}.brand-icon{width:20px;height:20px;flex-shrink:0;opacity:.85}.btn-primary,.btn-secondary,.btn-danger,.btn-link,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:.6rem 1.4rem;border-radius:var(--radius);font-size:14px;font-weight:600;font-family:var(--font-body);cursor:pointer;border:1px solid transparent;transition:all var(--transition);white-space:nowrap;-webkit-user-select:none;user-select:none;background:none;letter-spacing:.03em}.btn-primary{background:var(--gold);color:#09090b;border-color:var(--gold);box-shadow:0 0 16px var(--gold-glow),0 1px 3px #0006}.btn-primary:hover:not(:disabled){background:#d9b458;color:#09090b;border-color:#d9b458;box-shadow:0 0 24px #c9a0454d,0 2px 6px #0006}.btn-secondary{background:transparent;color:var(--text);border-color:var(--border-light)}.btn-secondary:hover:not(:disabled){border-color:var(--text-muted);background:var(--bg-elevated)}.btn-danger{background:var(--red);color:#fff;border-color:var(--red);box-shadow:0 0 12px var(--red-glow)}.btn-danger:hover:not(:disabled){background:var(--red-bright);border-color:var(--red-bright);box-shadow:0 0 20px #ef444440}.btn-link{background:transparent;color:var(--text-muted);border-color:transparent;padding:.4rem .6rem;font-weight:400}.btn-link:hover:not(:disabled){color:var(--text)}.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--border);padding:.4rem .9rem;font-size:13px}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--border-light)}button:disabled,.btn-primary:disabled{opacity:.3;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-loading{position:relative;pointer-events:none;opacity:.7;cursor:not-allowed;transform:none!important}.btn-loading .btn-text{visibility:hidden}.btn-spinner{position:absolute;display:block;flex-shrink:0;width:18px;height:18px;animation:btn-spin .7s linear infinite}.btn-spinner circle,.btn-spinner path{stroke:currentColor}@keyframes btn-spin{to{transform:rotate(360deg)}}.error-banner{background:var(--red-dim);border:1px solid var(--red);color:var(--red-light);border-radius:var(--radius);padding:10px 14px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px;box-shadow:0 0 12px var(--red-glow)}.error-banner button{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;padding:0 4px;opacity:.7}.error-banner button:hover{opacity:1}@keyframes shimmer-sweep{0%{transform:translate(0)}to{transform:translate(300%)}}@keyframes supporter-star-glow{0%,to{filter:drop-shadow(0 0 2px rgba(201,160,69,.3))}50%{filter:drop-shadow(0 0 8px rgba(201,160,69,.7))}}.shimmer-panel{position:relative;overflow:hidden}.shimmer-panel:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(120deg,transparent 10%,rgba(201,160,69,.1) 40%,rgba(201,160,69,.18) 50%,rgba(201,160,69,.1) 60%,transparent 90%);animation:shimmer-sweep 2.5s linear infinite;pointer-events:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}button.btn-text{background:none;border:none;color:var(--text-muted);font-family:var(--font-body);font-size:13px;cursor:pointer;padding:0;text-decoration:underline;text-decoration-color:transparent;transition:color var(--transition),text-decoration-color var(--transition)}button.btn-text:hover{color:var(--text);text-decoration-color:var(--text-muted)}.player-avatar{position:relative;display:grid;place-items:center;flex:0 0 auto;overflow:hidden;font-weight:800;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 6px 14px #00000024}.player-avatar-face{display:contents}.player-avatar span{font-size:inherit;line-height:1}.player-avatar img{width:100%;height:100%;object-fit:cover}.player-avatar-bot-chip{position:absolute;bottom:2px;right:2px;z-index:4;padding:1px 5px;border-radius:4px;font-size:9px;font-weight:700;letter-spacing:.08em;background:#1e2337e6;color:#9fbaff;border:1px solid rgba(140,170,255,.35);box-shadow:0 1px 2px #00000059;pointer-events:none}.player-avatar--sm .player-avatar-bot-chip,.player-avatar--md .player-avatar-bot-chip{font-size:8px;padding:0 3px;bottom:0;right:0}.player-avatar--portrait .player-avatar-bot-chip{font-size:8px;padding:1px 4px;border-radius:3px;letter-spacing:.06em}.player-avatar--card .player-avatar-bot-chip{top:6px;right:6px;bottom:auto;font-size:10px;padding:2px 6px}.bot-tag{display:inline-block;margin-left:6px;padding:0 5px;border-radius:3px;font-size:9px;font-weight:700;letter-spacing:.08em;background:#1e2337e6;color:#9fbaff;border:1px solid rgba(140,170,255,.35);vertical-align:middle}.player-avatar--sm:not(.player-avatar--custom-portrait) img,.player-avatar--md:not(.player-avatar--custom-portrait) img,.player-avatar--lg:not(.player-avatar--custom-portrait) img{transform:scale(.82);transform-origin:center top}.player-avatar svg{width:62%;height:62%}.player-avatar-status{position:absolute;right:-2px;bottom:-2px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#080a0ef2;border:1px solid rgba(255,255,255,.12);color:var(--text);font-size:10px;font-weight:800;letter-spacing:0;text-transform:none;box-shadow:0 4px 10px #0000004d}.player-avatar--sm{width:36px;height:36px;font-size:11px}.player-avatar--md{width:44px;height:44px;font-size:13px}.player-avatar--lg{width:48px;height:48px;font-size:14px}.player-avatar--portrait{width:64px;height:96px;font-size:17px;letter-spacing:.04em}.player-avatar--rounded{border-radius:14px}.player-avatar--circle{border-radius:50%}.player-avatar--portrait.player-avatar--rounded{border-radius:6px}.player-avatar--portrait img,.player-avatar--card img{object-position:center top}.player-avatar--card{width:140px;aspect-ratio:2 / 3;display:grid;grid-template-rows:1fr;border-radius:10px;overflow:visible;border:2px solid rgba(180,160,120,.18);background:linear-gradient(180deg,#1a1816,#0d0b09);box-shadow:inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d;box-sizing:border-box}.player-avatar--card .player-avatar-face{display:block;grid-row:1;grid-column:1;justify-self:stretch;align-self:stretch;width:100%;height:100%;position:relative;overflow:hidden;border-radius:inherit}.player-avatar--card .player-avatar-face img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.player-avatar--card .player-avatar-face>span{width:100%;height:100%;display:grid;place-items:center;font-size:0}.player-avatar--card .player-avatar-copy{grid-row:1;grid-column:1;align-self:end;justify-self:stretch;width:100%;z-index:2;padding:28px 10px 10px;background:linear-gradient(to top,rgba(0,0,0,.92) 0%,rgba(0,0,0,.86) 22%,rgba(0,0,0,.7) 42%,rgba(0,0,0,.48) 60%,rgba(0,0,0,.26) 76%,rgba(0,0,0,.1) 88%,transparent 100%);display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;pointer-events:none;overflow:hidden;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.player-avatar--card .avatar-caption{font-size:9px;letter-spacing:.06em;padding:3px 6px;min-height:18px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-avatar--card .player-avatar-name{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:700;line-height:1.15;text-shadow:0 2px 8px rgba(0,0,0,.6);letter-spacing:0;text-transform:none;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-avatar--card .player-avatar-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:2px}.player-avatar--gold{color:var(--gold);background:linear-gradient(180deg,#1a1814fa,#100f0df5);border:1px solid rgba(201,160,69,.24)}.player-avatar--muted{color:var(--text-muted);background:linear-gradient(180deg,#181a1efa,#0f1114f5);border:1px solid rgba(255,255,255,.09)}.player-avatar--hidden{color:#b7bec8;background:linear-gradient(180deg,#16181cfa,#0e1014f2);border:1px solid rgba(255,255,255,.12)}.player-avatar--state-hidden{box-shadow:inset 0 1px #ffffff08,0 8px 18px #0000002e}.player-avatar--death,.player-avatar--mafia{color:var(--red-bright);background:#dc3c3c24;border:1px solid rgba(220,60,60,.28)}.player-avatar--villager{color:var(--gold);background:linear-gradient(135deg,#c9a0452e,#c9a04514);border:1px solid rgba(201,160,69,.24)}.player-avatar--don{color:#ff8d8d;background:#b4282829;border:1px solid rgba(220,80,80,.28)}.player-avatar--saved,.player-avatar--doctor{color:var(--teal);background:#0d948824;border:1px solid rgba(13,148,136,.28)}.player-avatar--revived{color:#d8d1c3;background:#a0a5af1f;border:1px solid rgba(160,165,175,.24)}.player-avatar--detective{color:#8aa8ff;background:#648cff24;border:1px solid rgba(100,140,255,.28)}.player-avatar--jester{color:var(--purple);background:#a855f724;border:1px solid rgba(168,85,247,.28)}.player-avatar--mortician{color:#d8d1c3;background:#a0a5af1f;border:1px solid rgba(160,165,175,.24)}.player-avatar--fixer{color:#ff7a7a;background:#aa1e1e2e;border:1px solid rgba(220,60,60,.28)}.player-avatar--state-revealed{box-shadow:inset 0 1px #ffffff0a,0 0 0 1px #ffffff05,0 8px 18px #00000029}.avatar-portrait-fallback{width:100%!important;height:100%!important;position:absolute;inset:0;object-fit:cover;object-position:center 20%;opacity:.35;filter:saturate(.5) brightness(.8)}.player-avatar--card .player-avatar-frame-overlay,.player-avatar--portrait .player-avatar-frame-overlay{position:absolute;inset:0;width:100%;height:100%;background-size:100% 100%;background-position:center;background-repeat:no-repeat;pointer-events:none;z-index:3}.player-avatar--card .player-avatar-frame-overlay{grid-row:1;grid-column:1;justify-self:stretch;align-self:stretch;position:relative;inset:auto}.player-avatar--card.player-avatar--frame-gold-deco .player-avatar-frame-overlay,.player-avatar--card.player-avatar--frame-gold-fan .player-avatar-frame-overlay,.player-avatar--card.player-avatar--frame-gold-step .player-avatar-frame-overlay,.player-avatar--card.player-avatar--frame-gold-jewel .player-avatar-frame-overlay,.player-avatar--portrait.player-avatar--frame-gold-deco .player-avatar-frame-overlay,.player-avatar--portrait.player-avatar--frame-gold-fan .player-avatar-frame-overlay,.player-avatar--portrait.player-avatar--frame-gold-step .player-avatar-frame-overlay,.player-avatar--portrait.player-avatar--frame-gold-jewel .player-avatar-frame-overlay{position:absolute;inset:-7.619% auto auto -11.4285%;width:122.857%;height:115.238%;grid-row:auto;grid-column:auto;justify-self:auto;align-self:auto}.player-avatar--portrait.player-avatar--frame-gold-deco,.player-avatar--portrait.player-avatar--frame-gold-fan,.player-avatar--portrait.player-avatar--frame-gold-step,.player-avatar--portrait.player-avatar--frame-gold-jewel{overflow:visible}.player-avatar--card.player-avatar--frame-basic .player-avatar-frame-overlay{background-image:none}.player-avatar--frame-gold-fan .player-avatar-frame-overlay{background-image:url(/images/frames/frame-gold-fan.svg)}.player-avatar--frame-gold-step .player-avatar-frame-overlay{background-image:url(/images/frames/frame-gold-step.svg)}.player-avatar--frame-gold-jewel .player-avatar-frame-overlay{background-image:url(/images/frames/frame-gold-jewel.svg)}.player-avatar--frame-gold-deco .player-avatar-frame-overlay{background-image:url(/images/frames/frame-gold-deco.svg)}.player-avatar--dead-stamp:not(.player-avatar--card){filter:saturate(.4) brightness(.65)}.player-avatar--card.player-avatar--dead-stamp .player-avatar-face,.player-avatar--card.player-avatar--dead-stamp .player-avatar-frame-overlay{filter:saturate(.4) brightness(.65)}.role-icon{margin-right:2px;transform:translateY(-.06em);fill:currentColor}.dawn-avatar-meta .role-icon,.gameover-avatar-meta .role-icon{display:none}.lobby-container{max-width:480px;margin:40px auto 0;text-align:center}.landing-hero-art .sky-animation{height:auto;aspect-ratio:1200 / 380;min-height:160px;max-height:320px;border:none;border-radius:0;box-shadow:none}.landing-hero-art .sky-skyline{height:95%}@media(min-width:768px){.landing-hero-art .sky-skyline{height:72%}}.lobby-container h1{font-size:52px;font-weight:900;font-variation-settings:"opsz" 96;color:var(--gold);margin-bottom:6px;text-shadow:0 0 40px var(--gold-glow);cursor:default;-webkit-user-select:none;user-select:none}.lobby-container .subtitle{color:var(--text-muted);font-style:italic;font-family:var(--font-serif);font-size:17px;margin-bottom:36px;cursor:default;-webkit-user-select:none;user-select:none}.action-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.action-buttons .btn-primary,.action-buttons .btn-secondary{min-width:160px;padding:.75rem 1.5rem;font-size:16px}.form-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px 32px;text-align:left;box-shadow:var(--card-highlight),0 4px 24px #0006}.play-intro{color:var(--text-muted);font-size:14px;line-height:1.5;margin-bottom:var(--space-md)}.form-card h2{font-family:var(--font-display);font-size:22px;margin-bottom:16px;color:var(--text)}.form-card .btn-primary{width:100%;margin-top:20px;padding:.75rem}.form-card .btn-link{display:block;text-align:center;margin-top:10px;width:100%}.play-alt-divider{display:flex;align-items:center;gap:var(--space-sm);margin:var(--space-lg) 0 var(--space-md);color:var(--text-muted);font-size:12px;letter-spacing:.15em;text-transform:uppercase}.play-alt-divider:before,.play-alt-divider:after{content:"";flex:1;height:1px;background:var(--border)}.play-alt-divider span{padding:0 var(--space-xs)}.play-alt-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}@media(max-width:480px){.play-alt-actions{grid-template-columns:1fr}}.play-alt-btn{display:flex;align-items:center;gap:var(--space-sm);padding:14px;background:var(--bg-elevated, rgba(255,255,255,.02));border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);text-align:left;cursor:pointer;font-family:var(--font-body);transition:all var(--transition)}.play-alt-btn:hover:not(:disabled){border-color:var(--gold);background:#c9a0450f;transform:translateY(-1px);box-shadow:0 2px 12px #0000004d}.play-alt-btn:hover:not(:disabled) .play-alt-icon{color:var(--gold);border-color:var(--gold)}.play-alt-btn:disabled{opacity:.5;cursor:not-allowed}.play-alt-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--border-light);color:var(--text-muted);transition:all var(--transition)}.play-alt-icon svg{width:16px;height:16px}.play-alt-text{display:flex;flex-direction:column;gap:2px;min-width:0}.play-alt-title{font-size:14px;font-weight:600;color:var(--text)}.play-alt-sub{font-size:12px;color:var(--text-muted);line-height:1.3}.code-input{text-transform:uppercase;letter-spacing:.2em;font-size:18px;font-family:monospace;text-align:center}.active-sessions{margin-bottom:28px;text-align:left}.active-sessions h3{font-family:var(--font-display);font-size:15px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;text-align:center}.active-session-card{display:flex;align-items:center;gap:12px;width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 18px;margin-bottom:8px;cursor:pointer;transition:border-color .15s;text-align:left;color:var(--text);font-family:inherit;font-size:inherit}.active-session-card:hover{border-color:var(--gold)}.active-session-card .session-code{font-family:var(--font-display);font-size:16px;color:var(--gold);letter-spacing:.08em;flex-shrink:0}.active-session-card .session-detail{flex:1;font-size:13px;color:var(--text-muted)}.active-session-card .session-action{font-size:13px;color:var(--gold);font-weight:600;flex-shrink:0}.hint{font-size:13px;color:var(--text-faint);font-style:italic;margin:8px 0;line-height:1.5;cursor:default;-webkit-user-select:none;user-select:none}.hint-warning{color:var(--red-bright)}.connecting-state{display:flex;flex-direction:column;align-items:center;gap:14px;padding:28px 0 8px;animation:connecting-fade-in .4s ease-out}.connecting-state p{color:var(--text-muted);font-size:14px;font-weight:500;letter-spacing:.04em}.connecting-spinner{width:32px;height:32px;color:var(--gold);animation:connecting-spin .9s linear infinite}.connecting-spinner svg{width:100%;height:100%}@keyframes connecting-spin{to{transform:rotate(360deg)}}@keyframes connecting-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.supporter-star{width:12px;height:12px;color:var(--gold);flex-shrink:0;vertical-align:middle;margin-left:1px;margin-top:-1px}.user-menu-toggle .supporter-star{margin-left:2px}.user-menu-toggle .user-menu-avatar .player-avatar--sm{width:26px;height:26px}.player-chip .supporter-star,.roster-name .supporter-star{margin-left:1px;margin-top:-2px}.roster-row .supporter-star-tip{flex-shrink:0;margin-left:-6px}.roster-row>.roster-you{flex-shrink:0;margin-left:-6px}.supporter-star-tip{position:relative;display:inline-flex;cursor:help}.supporter-star-tip:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) scale(.95);background:var(--surface-2, #1e1e2e);color:var(--text-primary, #e8e8e8);border:1px solid var(--gold, #d4a843);font-size:.72rem;line-height:1.35;padding:6px 10px;border-radius:6px;white-space:normal;width:max-content;max-width:200px;text-align:center;pointer-events:none;opacity:0;transition:opacity .15s ease,transform .15s ease;z-index:100;box-shadow:0 4px 12px #0006}.supporter-star-tip:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--gold, #d4a843);pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:101}.supporter-star-tip:hover:after,.supporter-star-tip:focus-within:after{opacity:1;transform:translate(-50%) scale(1)}.supporter-star-tip:hover:before,.supporter-star-tip:focus-within:before{opacity:1}.supporter-result{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px}.supporter-result-card{text-align:center;max-width:400px}.supporter-result-card h1{font-family:var(--font-display);font-size:28px;color:var(--text);margin-bottom:12px}.supporter-result-card p{font-size:15px;color:var(--text-muted);line-height:1.6;margin-bottom:28px}.supporter-badge-large{width:56px;height:56px;color:var(--gold);margin:0 auto 20px}.supporter-badge-large svg{width:100%;height:100%}.supporter-badge-pulse{animation:supporter-pulse 1.5s ease-in-out infinite}@keyframes supporter-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.92)}}.supporter-page{max-width:600px;margin:0 auto;padding:48px 24px 40px}.supporter-hero,.supporter-thankyou{text-align:center;margin-bottom:var(--space-lg);padding:var(--space-xl) var(--space-lg);background:var(--surface);border:1px solid var(--border);border-radius:12px}.supporter-hero h1,.supporter-thankyou h1{font-family:var(--font-display);font-size:26px;color:var(--text);margin-bottom:8px}.supporter-hero-sub{font-size:14px;color:var(--text-muted);line-height:1.6;max-width:440px;margin:0 auto}.supporter-thankyou p{font-size:14px;color:var(--text-muted);line-height:1.6}.supporter-thankyou p+p{margin-top:var(--space-sm)}.supporter-since{display:block;width:fit-content;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--gold);background:transparent;border:none;padding:0;margin:var(--space-md) auto 0}.guest-signup-cta-preview{display:flex;align-items:center;justify-content:center;gap:var(--space-md);margin-bottom:var(--space-md)}.guest-signup-cta-arrow{font-size:22px;color:var(--gold);opacity:.7;font-family:var(--font-display, "Bodoni Moda", Georgia, serif)}.supporter-preview{margin-bottom:var(--space-xl)}.supporter-preview-heading{font-family:var(--font-display, "Bodoni Moda", Georgia, serif);font-size:15px;font-weight:600;text-transform:uppercase;letter-spacing:1.4px;color:var(--text-muted);margin:0 0 var(--space-xs);text-align:center}.supporter-preview-subheading{font-size:12px;color:var(--text-muted);margin:0 0 var(--space-md);text-align:center;font-style:italic}.supporter-preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md);max-width:560px;margin:0 auto}.supporter-preview-cell{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-sm);background:#0c1018;border:1px solid rgba(255,255,255,.06);border-radius:10px}.supporter-preview-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);text-align:center}@media(max-width:560px){.supporter-preview-grid{grid-template-columns:repeat(2,1fr)}}.supporter-tier-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-sm);margin-bottom:var(--space-lg)}.supporter-tier-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:var(--space-md) var(--space-sm);border:1px solid var(--border);border-radius:12px;background:#0c101899;text-align:center}.supporter-tier-card--highlight{border-color:#c9a04573;background:#c9a04512;box-shadow:0 0 0 1px #c9a0451f,0 10px 24px #0000003d}.supporter-tier-strip .player-avatar--portrait{width:96px;height:144px}@media(max-width:560px){.supporter-tier-card{padding:var(--space-sm) 6px;gap:6px}.supporter-tier-strip .player-avatar--portrait{width:min(80px,22vw);height:min(120px,33vw)}.supporter-tier-name{font-size:11px;letter-spacing:.5px}.supporter-tier-price{font-size:13px}}.supporter-tier-card--highlight .player-avatar{filter:drop-shadow(0 0 12px rgba(201,160,69,.35))}.supporter-tier-name{font-family:var(--font-display);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);text-align:center;line-height:1.2}.supporter-tier-name .supporter-star{display:inline-block;width:11px;height:11px;margin:0 3px 0 0;vertical-align:-1px}.supporter-tier-card--highlight .supporter-tier-name{color:var(--gold)}.supporter-tier-price{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--text);letter-spacing:.02em}.supporter-tier-card--highlight .supporter-tier-price{color:var(--gold)}.supporter-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:var(--space-lg)}.supporter-compare-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.supporter-compare-table col.supporter-col-feature{width:40%}.supporter-compare-table col.supporter-col-tier{width:20%}.supporter-compare-table th,.supporter-compare-table td{padding:10px 12px;text-align:center;border-bottom:1px solid var(--border)}.supporter-compare-table th:first-child,.supporter-compare-table td:first-child{text-align:left;color:var(--text-muted);font-size:13px}.supporter-compare-table thead th{font-family:var(--font-display);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding-bottom:12px;white-space:nowrap}@media(max-width:560px){.supporter-compare-table{font-size:12px}.supporter-compare-table th,.supporter-compare-table td{padding:8px 4px}.supporter-compare-table thead th{font-size:10px;letter-spacing:.5px;white-space:normal;word-break:break-word}.supporter-compare-table thead .supporter-star{display:none}.supporter-compare-table col.supporter-col-feature{width:40%}.supporter-compare-table col.supporter-col-tier{width:20%}}.supporter-col-highlight{background:#d4af370f}thead .supporter-col-highlight{color:var(--gold)!important;display:table-cell;align-items:center;gap:4px}thead .supporter-col-highlight .supporter-star{width:11px;height:11px;margin-right:2px;vertical-align:-1px}.supporter-compare-table .check{color:var(--text);font-weight:600}.supporter-compare-table .muted{color:var(--text-muted);opacity:.4}.supporter-cta-section{text-align:center;margin-bottom:var(--space-lg);padding:var(--space-lg);background:var(--surface);border:1px solid var(--border);border-radius:12px}.supporter-cta-note{font-size:12px;color:var(--text-muted);margin-bottom:16px}.supporter-cta-btn{min-width:220px}.supporter-bmc-link{display:inline-flex;margin-top:var(--space-lg)}.contact-supporter-badge{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--gold);font-size:13px;font-weight:600;background:#d4af371a;border:1px solid rgba(212,175,55,.25);border-radius:20px;padding:var(--space-xs) var(--space-sm);cursor:default;-webkit-user-select:none;user-select:none}.contact-bmc-link{display:block;margin-top:8px;font-size:12px}.game-container{position:relative;z-index:1;display:grid;grid-template-columns:1fr;gap:14px}.game-page-sky{position:fixed;inset:54px 0 0;z-index:-1;pointer-events:none;overflow:hidden;opacity:0}.game-page-sky.sky-visible{animation:sky-fade-in 1.2s ease-in-out forwards}@keyframes sky-fade-in{0%{opacity:0}to{opacity:.42}}.game-page-sky:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 18%,rgba(100,140,200,.07),transparent 34%);z-index:1}.game-page-sky:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 42%,rgba(0,0,0,.45) 100%),linear-gradient(180deg,#060a1605,#070c1a05 55%,#080c180a 68%,#070a141a 78%,#0609122e 92%,#06091238);z-index:2}.game-page-sky .sky-animation{position:absolute;inset:0;width:100%;height:100%;min-height:100%;border:none;border-radius:0;box-shadow:none}.game-page-sky .sky-skyline{bottom:0;left:0;width:100%;height:calc(clamp(240px,22vw,340px) + 10%);color:#080c16;opacity:1}.game-page-sky .sky-orbit-guide{top:56%;width:74cqw;height:44cqh;opacity:.3}.game-page-sky .sky-body{transform:translate(calc(var(--body-x, 50cqw) - 50%),calc(var(--body-y, 26cqh) - 50%)) translateY(clamp(-80px,-7vh,-46px))}.game-page-sky .sky-stars{z-index:3;opacity:1}.game-page-sky .sky-stars svg{filter:none}.game-page-sky .sky-horizon-mask{display:none}.game-page-sky .sky-sun-body{width:180px;height:180px}.game-page-sky .sky-moon-body{width:160px;height:160px}.big-screen-sky .sky-sun-body{width:clamp(160px,13vw,240px);height:clamp(160px,13vw,240px)}.big-screen-sky .sky-moon-body{width:clamp(140px,11.5vw,220px);height:clamp(140px,11.5vw,220px)}.gameover-dossier-tile .player-avatar--card{width:clamp(78px,6.5vw,140px)}.game-page-sky .sky-stars svg{transform:none}.game-page-sky .sky-horizon-line{display:none}.role-card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 24px;position:relative;overflow:hidden;box-shadow:var(--card-highlight)}.role-card.villager{background:linear-gradient(135deg,var(--bg-card) 0%,var(--gold-dim) 100%);border-color:#c9a0454d;box-shadow:var(--card-highlight),0 0 20px var(--gold-glow)}.role-card.doctor{background:linear-gradient(135deg,var(--bg-card) 0%,#08160e 100%);border-color:#1e3828;box-shadow:var(--card-highlight),0 0 20px var(--teal-glow)}.role-card.detective{background:linear-gradient(135deg,var(--bg-card) 0%,var(--blue-dim) 100%);border-color:#648cff4d;box-shadow:var(--card-highlight),0 0 20px #2563eb26}.role-card.mafia{background:linear-gradient(135deg,var(--bg-card) 0%,#160808 100%);border-color:#3a1010;box-shadow:var(--card-highlight),0 0 20px var(--red-glow)}.role-card.jester{background:linear-gradient(135deg,var(--bg-card) 0%,var(--purple-dim) 100%);border-color:#a855f74d;box-shadow:var(--card-highlight),0 0 20px #a855f726}.role-card.don,.role-card.fixer{background:linear-gradient(135deg,var(--bg-card) 0%,#160808 100%);border-color:#3a1010;box-shadow:var(--card-highlight),0 0 20px var(--red-glow)}.role-card.mortician{background:linear-gradient(135deg,var(--bg-card) 0%,#101218 100%);border-color:#a0a5af4d;box-shadow:var(--card-highlight),0 0 20px #a0a5af1a}.role-card.watcher{background:linear-gradient(135deg,var(--bg-card) 0%,#161a22 100%);border-color:#8ca0c84d;box-shadow:var(--card-highlight),0 0 20px #8ca0c81f}.role-card.bodyguard{background:linear-gradient(135deg,var(--bg-card) 0%,#1f1812 100%);border-color:#be8c504d;box-shadow:var(--card-highlight),0 0 20px #be8c501f}.role-card.executioner{background:linear-gradient(135deg,var(--bg-card) 0%,#1a1614 100%);border-color:#b4a59b4d;box-shadow:var(--card-highlight),0 0 20px #b4a59b1f}.role-card h3{font-size:16px;margin-bottom:6px;font-family:var(--font-body);font-weight:600}.role-card.villager h3{color:var(--gold)}.role-card.doctor h3{color:var(--teal)}.role-card.detective h3{color:#8aa8ff}.role-card.mafia h3,.role-card.don h3,.role-card.fixer h3{color:var(--red-bright)}.role-card.jester h3{color:var(--purple)}.role-card.mortician h3{color:#a0a5af}.role-card.watcher h3{color:#b6c5e3}.role-card.bodyguard h3{color:#d4a574}.role-card.executioner h3{color:#c8b9ac}.role-card h3 strong{font-family:var(--font-display);font-size:22px}.role-card p{color:var(--text-muted);font-style:italic;font-family:var(--font-serif);font-size:16px}.card-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}@media(max-width:480px){.card-grid{grid-template-columns:1fr}}.toggle-card{display:flex;align-items:flex-start;gap:var(--space-sm);padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);cursor:pointer;transition:opacity var(--transition),border-color var(--transition),box-shadow var(--transition),background var(--transition);position:relative;user-select:none;-webkit-user-select:none}.toggle-card:hover:not(.readonly){border-color:var(--border-light)}.toggle-card.off{opacity:.4;filter:saturate(.3)}.toggle-card.off:hover:not(.readonly){opacity:.6}.toggle-card.readonly{cursor:default}.toggle-card-icon{width:28px;height:28px;flex-shrink:0;color:var(--text-muted);margin-top:1px}.toggle-card:not(.off) .toggle-card-icon{color:inherit}.toggle-card-body{flex:1;min-width:0}.toggle-card-name{font-size:14px;font-weight:600;line-height:1.3;color:var(--text)}.toggle-card-desc{font-size:12px;color:var(--text-muted);line-height:1.4;margin-top:2px}.toggle-pill{width:32px;height:18px;border-radius:9px;background:#ffffff14;border:1px solid var(--border);flex-shrink:0;position:relative;transition:background var(--transition),border-color var(--transition);margin-top:3px}.toggle-pill:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-muted);transition:transform var(--transition),background var(--transition)}.toggle-card:not(.off) .toggle-pill{background:var(--gold-dim);border-color:var(--gold)}.toggle-card:not(.off) .toggle-pill:after{transform:translate(14px);background:var(--gold)}.toggle-card.core-role{cursor:default}.toggle-card.mafia.core-role{background:linear-gradient(135deg,var(--bg-elevated) 0%,#160808 100%);border-color:#3a1010}.toggle-card.mafia.core-role .toggle-card-icon,.toggle-card.mafia.core-role .toggle-card-name{color:var(--red-bright)}.toggle-card.villager.core-role{background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--gold-dim) 100%);border-color:#c9a0454d}.toggle-card.villager.core-role .toggle-card-icon,.toggle-card.villager.core-role .toggle-card-name{color:var(--gold)}.toggle-card.don:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#160808 100%);border-color:#3a1010;box-shadow:0 0 12px var(--red-glow)}.toggle-card.don:not(.off) .toggle-card-icon,.toggle-card.don:not(.off) .toggle-card-name{color:var(--red-bright)}.toggle-card.don:not(.off) .toggle-pill{background:#b4282833;border-color:var(--red)}.toggle-card.don:not(.off) .toggle-pill:after{background:var(--red-bright)}.toggle-card.detective:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--blue-dim) 100%);border-color:#648cff4d;box-shadow:0 0 12px #2563eb26}.toggle-card.detective:not(.off) .toggle-card-icon,.toggle-card.detective:not(.off) .toggle-card-name{color:#8aa8ff}.toggle-card.detective:not(.off) .toggle-pill{background:#648cff26;border-color:#8aa8ff}.toggle-card.detective:not(.off) .toggle-pill:after{background:#8aa8ff}.toggle-card.doctor:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#08160e 100%);border-color:#1e3828;box-shadow:0 0 12px var(--teal-glow)}.toggle-card.doctor:not(.off) .toggle-card-icon,.toggle-card.doctor:not(.off) .toggle-card-name{color:var(--teal)}.toggle-card.doctor:not(.off) .toggle-pill{background:#1bb39126;border-color:var(--teal)}.toggle-card.doctor:not(.off) .toggle-pill:after{background:var(--teal)}.toggle-card.jester:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--purple-dim) 100%);border-color:#a855f74d;box-shadow:0 0 12px #a855f726}.toggle-card.jester:not(.off) .toggle-card-icon,.toggle-card.jester:not(.off) .toggle-card-name{color:var(--purple)}.toggle-card.jester:not(.off) .toggle-pill{background:#a855f726;border-color:var(--purple)}.toggle-card.jester:not(.off) .toggle-pill:after{background:var(--purple)}.toggle-card.mortician:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#1a1915 100%);border-color:#a0a5af4d;box-shadow:0 0 12px #a0a5af1f}.toggle-card.mortician:not(.off) .toggle-card-icon,.toggle-card.mortician:not(.off) .toggle-card-name{color:#c3b9a6}.toggle-card.mortician:not(.off) .toggle-pill{background:#c3b9a626;border-color:#c3b9a6}.toggle-card.mortician:not(.off) .toggle-pill:after{background:#c3b9a6}.toggle-card.fixer:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--red-dim) 100%);border-color:#dc3c3c4d;box-shadow:0 0 12px #dc3c3c26}.toggle-card.fixer:not(.off) .toggle-card-icon,.toggle-card.fixer:not(.off) .toggle-card-name{color:var(--red-bright)}.toggle-card.fixer:not(.off) .toggle-pill{background:#dc3c3c26;border-color:var(--red-bright)}.toggle-card.fixer:not(.off) .toggle-pill:after{background:var(--red-bright)}.toggle-card.framer:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--red-dim) 100%);border-color:#dc3c3c4d;box-shadow:0 0 12px #dc3c3c26}.toggle-card.framer:not(.off) .toggle-card-icon,.toggle-card.framer:not(.off) .toggle-card-name{color:var(--red-bright)}.toggle-card.framer:not(.off) .toggle-pill{background:#dc3c3c26;border-color:var(--red-bright)}.toggle-card.framer:not(.off) .toggle-pill:after{background:var(--red-bright)}.toggle-card.poisoner:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--red-dim) 100%);border-color:#dc3c3c4d;box-shadow:0 0 12px #dc3c3c26}.toggle-card.poisoner:not(.off) .toggle-card-icon,.toggle-card.poisoner:not(.off) .toggle-card-name{color:var(--red-bright)}.toggle-card.poisoner:not(.off) .toggle-pill{background:#dc3c3c26;border-color:var(--red-bright)}.toggle-card.poisoner:not(.off) .toggle-pill:after{background:var(--red-bright)}.toggle-card.watcher:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#161a22 100%);border-color:#8ca0c84d;box-shadow:0 0 12px #8ca0c826}.toggle-card.watcher:not(.off) .toggle-card-icon,.toggle-card.watcher:not(.off) .toggle-card-name{color:#b6c5e3}.toggle-card.watcher:not(.off) .toggle-pill{background:#8ca0c826;border-color:#b6c5e3}.toggle-card.watcher:not(.off) .toggle-pill:after{background:#b6c5e3}.toggle-card.bodyguard:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#1f1812 100%);border-color:#be8c504d;box-shadow:0 0 12px #be8c5026}.toggle-card.bodyguard:not(.off) .toggle-card-icon,.toggle-card.bodyguard:not(.off) .toggle-card-name{color:#d4a574}.toggle-card.bodyguard:not(.off) .toggle-pill{background:#be8c5026;border-color:#d4a574}.toggle-card.bodyguard:not(.off) .toggle-pill:after{background:#d4a574}.toggle-card.executioner:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,#1a1614 100%);border-color:#b4a59b4d;box-shadow:0 0 12px #b4a59b26}.toggle-card.executioner:not(.off) .toggle-card-icon,.toggle-card.executioner:not(.off) .toggle-card-name{color:#c8b9ac}.toggle-card.executioner:not(.off) .toggle-pill{background:#b4a59b26;border-color:#c8b9ac}.toggle-card.executioner:not(.off) .toggle-pill:after{background:#c8b9ac}.toggle-card.house-rule:not(.off){background:linear-gradient(135deg,var(--bg-elevated) 0%,var(--gold-dim) 100%);border-color:#c9a0454d;box-shadow:0 0 12px var(--gold-glow)}.toggle-card.house-rule:not(.off) .toggle-card-icon{color:var(--gold)}.mafia-team{margin-top:12px;padding-top:12px;border-top:1px solid #2e1010;font-size:13px;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.mafia-member{background:var(--red-dim);color:var(--red-light);border:1px solid #4a1010;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600}.detective-result{margin-top:12px;padding:10px 14px;border-radius:var(--radius);font-weight:600;font-size:14px}.detective-result.is-mafia{background:var(--red-dim);border:1px solid var(--red);color:var(--red-bright);box-shadow:0 0 10px var(--red-glow)}.detective-result.not-mafia{background:var(--teal-dim);border:1px solid var(--teal);color:var(--teal);box-shadow:0 0 10px var(--teal-glow)}.detective-intel-result{text-align:center;font-family:var(--font-serif);margin-top:var(--space-sm)}.detective-intel-name{display:block;font-weight:700;font-style:normal;font-size:1.8em;margin:4px 0;color:var(--text)}.detective-intel-verdict{display:block;font-size:.88em;font-weight:500;letter-spacing:.02em;margin-top:6px;font-style:italic;font-family:var(--font-serif)}.detective-intel-result.is-mafia .detective-intel-verdict{color:var(--red-bright)}.detective-intel-result.not-mafia .detective-intel-verdict{color:var(--teal)}.sealed-profile-card{position:relative;width:160px;aspect-ratio:2 / 3;display:grid;grid-template-rows:1fr auto;border-radius:10px;overflow:hidden;border:1.5px solid rgba(201,160,69,.2);margin:0 auto;filter:saturate(.15) brightness(.45)}.sealed-profile-card app-player-avatar{display:contents}.sealed-profile-card .player-avatar{grid-row:1 / -1;grid-column:1;width:100%!important;height:100%!important;border-radius:0}.sealed-profile-copy{grid-row:2;grid-column:1;z-index:1;padding:20px 10px 10px;background:linear-gradient(to top,rgba(0,0,0,.92) 35%,rgba(0,0,0,.45) 65%,transparent);display:flex;flex-direction:column;align-items:center;gap:4px}.sealed-profile-name{font-family:var(--font-body);font-size:14px;font-weight:700;color:var(--text-main);text-align:center;text-shadow:0 1px 3px rgba(0,0,0,.6);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sealed-profile-lock{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);z-index:2;font-family:var(--font-display);font-size:80px;font-weight:700;color:#c9a045;opacity:.7;text-shadow:0 0 30px rgba(201,160,69,.5),0 0 60px rgba(201,160,69,.2);pointer-events:none}.sealed-profile-card--revealed{filter:none;margin:0 auto}.sealed-profile-card--revealed .sealed-profile-lock{display:none}.sealed-profile-card--revealed .sealed-profile-badge .avatar-caption--role{color:var(--gold);border-color:#c9a0454d;background:linear-gradient(180deg,#c9a04524,#c9a0450a)}.sealed-profile-card--mafia{border-color:#dc3c3c59}.sealed-profile-card--mafia .sealed-profile-badge .avatar-caption--role{color:var(--red-bright);border-color:#dc3c3c59;background:linear-gradient(180deg,#dc3c3c29,#dc3c3c0a)}.sealed-profile-card--detective{border-color:#648cff59}.sealed-profile-card--detective .sealed-profile-badge .avatar-caption--role{color:#8aa8ff;border-color:#648cff59;background:linear-gradient(180deg,#648cff24,#648cff0a)}.sealed-profile-card--doctor{border-color:#0d948859}.sealed-profile-card--doctor .sealed-profile-badge .avatar-caption--role{color:var(--teal);border-color:#0d948859;background:linear-gradient(180deg,#0d948824,#0d94880a)}.sealed-profile-card--jester{border-color:#a855f759}.sealed-profile-card--jester .sealed-profile-badge .avatar-caption--role{color:var(--purple);border-color:#a855f759;background:linear-gradient(180deg,#a855f724,#a855f70a)}.sealed-profile-card--mortician{border-color:#a0a5af59}.sealed-profile-card--mortician .sealed-profile-badge .avatar-caption--role{color:#c8cdd7;border-color:#a0a5af59;background:linear-gradient(180deg,#a0a5af24,#a0a5af0a)}.sealed-profile-card--executioner{border-color:#b4a59b59}.sealed-profile-card--executioner .sealed-profile-badge .avatar-caption--role{color:#c8b9ac;border-color:#b4a59b59;background:linear-gradient(180deg,#b4a59b24,#b4a59b0a)}.role-flip-in{animation:role-card-flip-in .6s cubic-bezier(.23,1,.32,1) both}@keyframes role-card-flip-in{0%{transform:perspective(800px) rotateY(-90deg);opacity:0}40%{opacity:1}to{transform:perspective(800px) rotateY(0);opacity:1}}.phase-panel{background:linear-gradient(135deg,#101014eb,#0c0c10e6);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--card-highlight),0 2px 16px #00000047}.phase-enter{display:block;animation:phase-enter-in var(--transition-slow) both}@keyframes phase-enter-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.phase-enter{animation:none}}.game-main{display:flex;flex-direction:column;gap:var(--space-md)}@media(max-width:1023px){.game-main--with-chat app-chat-panel{position:fixed;bottom:0;left:0;right:0;z-index:80;display:block;pointer-events:auto}.game-main--with-chat app-chat-panel .chat-panel{border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:none;min-height:min(50dvh,380px);max-height:calc(min(60dvh,460px) + env(safe-area-inset-bottom,0px));transition:max-height .22s ease,min-height .22s ease;box-shadow:0 -8px 28px #00000073}.game-main--with-chat app-chat-panel .chat-panel--collapsed{min-height:0;max-height:calc(72px + env(safe-area-inset-bottom,0px));box-shadow:0 -4px 16px #00000052}.game-main--with-chat{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}.game-main--with-chat app-chat-panel .chat-input-row{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}}@media(min-width:1024px){.app-main:has(.game-main--with-chat){max-width:1200px}.game-main--with-chat{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-areas:"phase chat" "players chat";gap:var(--space-lg);align-items:start}.game-main--with-chat:has(app-lobby-panel){grid-template-areas:"lobby chat"}.game-main--with-chat>app-lobby-panel{grid-area:lobby;min-width:0}.game-main--with-chat>.phase-panel{grid-area:phase;min-width:0}.game-main--with-chat>.players-section{grid-area:players;min-width:0}.game-main--with-chat app-chat-panel{grid-area:chat;position:fixed;top:calc(82px + var(--chat-top-offset, 0px));right:max(16px,calc((100vw - 1200px)/2 + 16px));width:400px;height:calc(100dvh - 82px - 28px - var(--chat-top-offset, 0px));display:block;min-width:0}.game-main--with-chat app-chat-panel{--chat-top-offset: calc( var(--_banner-update, 0px) + var(--_banner-connection, 0px) + var(--_banner-maintenance, 0px) + var(--_banner-announcement, 0px) + var(--_banner-support, 0px) )}.app-shell:has(app-update-banner app-banner) .game-main--with-chat app-chat-panel{--_banner-update: 40px}.app-shell:has(app-connection-status app-banner) .game-main--with-chat app-chat-panel{--_banner-connection: 40px}.app-shell:has(app-announcement-banner .banner--maintenance) .game-main--with-chat app-chat-panel{--_banner-maintenance: 40px}.app-shell:has(app-announcement-banner .banner--info,app-announcement-banner .banner--warning) .game-main--with-chat app-chat-panel{--_banner-announcement: 40px}.app-shell:has(app-support-banner app-banner) .game-main--with-chat app-chat-panel{--_banner-support: 40px}.game-main--with-chat app-chat-panel:has(.chat-panel--collapsed){height:auto}.game-main--with-chat app-chat-panel .chat-panel{height:100%}.game-main--with-chat app-chat-panel .chat-panel--collapsed{height:auto}.game-main--with-chat app-chat-panel .chat-messages{flex:1 1 auto;height:auto;min-height:0;max-height:none}}.phase-message{color:var(--text-muted);font-family:var(--font-serif);font-style:italic;font-size:16px;text-align:center;padding:var(--space-md) 0 var(--space-lg);line-height:1.5}.phase-message.success{color:var(--teal);font-style:normal;font-family:var(--font-body);font-size:14px;background:var(--teal-dim);border:1px solid #1a4030;border-radius:var(--radius);padding:10px 14px;text-align:left;font-weight:600;margin-bottom:0;box-shadow:0 0 10px var(--teal-glow)}.vote-inline-msg{font-size:12px;padding:6px 12px;margin-top:2px}.transition-panel{text-align:center;animation:transition-fade-in .6s ease both}@keyframes transition-fade-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.transition-icon{width:56px;height:56px;margin:0 auto 12px;opacity:.7}.transition-icon app-phase-icon{width:100%;height:100%}.transition--dawn .transition-icon{color:#e8b84a}.transition--dusk .transition-icon{color:#b07040}.transition-title{font-family:var(--font-serif);font-size:20px;font-weight:400;letter-spacing:.02em;margin-bottom:16px}.transition--dawn .transition-title{color:#e8b84a}.transition--dusk .transition-title{color:#c08050}.transition-symbol{font-style:normal;margin-right:.2em;font-size:.85em;vertical-align:middle;opacity:.8}.transition-dead-name{display:block;color:var(--red-bright);font-weight:700;font-style:normal;font-size:2em;letter-spacing:.02em;margin:6px 0 4px}.transition-revived-name{display:block;color:#c3b9a6;font-weight:700;font-style:normal;font-size:2em;letter-spacing:.02em;margin:4px 0;text-shadow:0 0 14px rgba(160,165,175,.3)}.transition-saved-name{display:block;color:var(--teal);font-weight:700;font-style:normal;font-size:2em;letter-spacing:.02em;margin:4px 0}.transition-context{display:block;font-size:.78em;opacity:.55;letter-spacing:.03em}.transition-role-tag{display:block;font-size:.82em;opacity:.7;letter-spacing:.04em;margin-top:4px}.dawn-layout{display:flex;flex-direction:column;gap:var(--space-sm)}.dawn-panel{display:flex;flex-direction:column;gap:14px;align-items:center;text-align:center}.dawn-subtitle{margin:0;color:var(--text-muted);font-size:14px;line-height:1.5;max-width:56ch}.dawn-outcome-list{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;width:100%}.dawn-outcome-card{display:flex;flex-direction:column;align-items:center;gap:8px}@media(max-width:480px){.dawn-outcome-card .player-avatar--card{width:100px}}.dawn-outcome-label{font-family:var(--font-body);padding:0 6px;color:var(--text-muted);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-align:center;white-space:nowrap}.dawn-outcome-label--private{color:#9eb8f2}.dawn-outcome-label--blocked{color:var(--text)}.dawn-outcome-card--death .dawn-outcome-label{color:#f0b0b0}.dawn-outcome-card--saved .dawn-outcome-label{color:#8fe7db}.dawn-outcome-card--revived .dawn-outcome-label{color:#d8d1c3}.dawn-outcome-card--defended .dawn-outcome-label{color:#d4a574}.dawn-outcome-card--poisoned .dawn-outcome-label{color:#c8e6a0}.dawn-outcome-card--cured .dawn-outcome-label{color:#8fe7db}.dawn-outcome-card--wounded .dawn-outcome-label{color:#e8c56a}.dawn-outcome-card,.dawn-public-card,.phase-blocked-notice{--reveal-start: .95s;--reveal-gap: .4s;--flavor-lag: .2s;--card-reveal: calc(var(--reveal-start) + (var(--seq-base, 0) + var(--seq, 0)) * var(--reveal-gap))}.dawn-outcome-label--reveal{opacity:0;transform:translateY(4px);animation:outcome-tag-reveal .3s cubic-bezier(.22,1,.36,1) var(--card-reveal, .95s) forwards}.dawn-outcome-flavor{margin:0;max-width:36ch;padding:0 6px;font-family:var(--font-serif);font-style:italic;font-size:14px;line-height:1.4;color:var(--text-muted);text-align:center;min-height:1.4em}.dawn-outcome-card--death .dawn-outcome-flavor{color:#d6a0a0}.dawn-outcome-card--saved .dawn-outcome-flavor{color:#8fc9c1}.dawn-outcome-card--revived .dawn-outcome-flavor,.dawn-public-card--revived .dawn-outcome-flavor{color:#c7bfae}.dawn-outcome-card--defended .dawn-outcome-flavor{color:#d4a574}.dawn-outcome-card--wounded .dawn-outcome-flavor{color:#d4b86a}.dawn-outcome-card--poisoned .dawn-outcome-flavor,.dawn-public-card--poisoned .dawn-outcome-flavor{color:#b4cc96}.dawn-outcome-card--cured .dawn-outcome-flavor,.dawn-public-card--cured .dawn-outcome-flavor{color:#8fc9c1}.dawn-outcome-flavor--standalone{font-size:16px;max-width:44ch;color:var(--text)}.dawn-outcome-list>.phase-blocked-notice{padding:var(--space-xl) var(--space-md)}.dawn-outcome-list>.phase-blocked-notice .dawn-outcome-flavor--standalone{font-size:18px}.dawn-outcome-flavor--reveal{opacity:0;transform:translateY(6px);animation:outcome-tag-reveal .46s cubic-bezier(.22,1,.36,1) calc(var(--card-reveal, .95s) + var(--flavor-lag, .28s)) forwards}.dawn-outcome-flavor--standalone.dawn-outcome-flavor--reveal{animation-delay:var(--card-reveal, .95s)}@keyframes outcome-tag-reveal{to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.dawn-outcome-label--reveal,.dawn-outcome-flavor--reveal{animation:none;opacity:1;transform:none}}.player-avatar--card.player-avatar--tone-death{animation:card-death-shake .4s ease-out .5s both}.player-avatar--card.player-avatar--tone-death:after{content:"DEAD";position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-22deg);z-index:4;font-family:var(--font-body);font-size:calc(24px * var(--stamp-scale, 1));font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#e04848;background:#0c040499;border:.0833em solid #b82a2a;padding:.125em .4583em;border-radius:.1667em;text-shadow:0 0 3px rgba(224,72,72,.75),0 0 8px rgba(200,40,40,.35),0 0 14px rgba(180,20,20,.2),0 2px 3px rgba(0,0,0,.6);box-shadow:0 0 6px #dc32324d,0 0 12px #b41e1e26,inset 0 0 6px #b4282824,0 3px 8px #0000008c;pointer-events:none;animation:stamp-slam .35s cubic-bezier(.22,1,.36,1) .3s both}.player-avatar--card.player-avatar--tone-death:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(185,28,28,.4),transparent 70%);animation:death-flash .8s ease-out .25s both;pointer-events:none}@keyframes stamp-slam{0%{opacity:0;transform:translate(-50%,-50%) rotate(-22deg) scale(2.5)}60%{opacity:1;transform:translate(-50%,-50%) rotate(-22deg) scale(.9)}80%{transform:translate(-50%,-50%) rotate(-22deg) scale(1.05)}to{opacity:.9;transform:translate(-50%,-50%) rotate(-22deg) scale(1)}}@keyframes card-death-shake{0%,to{transform:translate(0)}15%{transform:translate(-3px) rotate(-.5deg)}30%{transform:translate(3px) rotate(.5deg)}45%{transform:translate(-2px)}60%{transform:translate(2px)}75%{transform:translate(-1px)}}@keyframes death-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.player-avatar--card.player-avatar--tone-revived{animation:card-revive-glow 1s ease-out .1s both}.player-avatar--card.player-avatar--tone-revived:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(160,165,175,.35),transparent 70%);animation:revive-flash 1.2s ease-out .2s both;pointer-events:none}@keyframes card-revive-glow{0%{filter:saturate(.3) brightness(.5)}50%{filter:saturate(1.2) brightness(1.15)}to{filter:saturate(1) brightness(1)}}@keyframes revive-flash{0%{opacity:0}30%{opacity:1}to{opacity:0}}.player-avatar--card.player-avatar--tone-wounded{animation:card-wound-shake .4s ease-out .5s both}.player-avatar--card.player-avatar--tone-wounded:after{content:"WOUNDED";position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-18deg);z-index:4;font-family:var(--font-body);font-size:calc(16px * var(--stamp-scale, 1));font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#e8b84a;background:#140e04a6;border:.125em solid #b8922a;padding:.1875em .625em;border-radius:.25em;text-shadow:0 0 3px rgba(232,184,74,.7),0 0 8px rgba(200,160,40,.3),0 2px 3px rgba(0,0,0,.6);box-shadow:0 0 6px #dcaa3240,0 0 12px #b48c1e1f,inset 0 0 6px #b496281f,0 3px 8px #00000080;pointer-events:none;animation:stamp-slam .35s cubic-bezier(.22,1,.36,1) .3s both}.player-avatar--card.player-avatar--tone-wounded:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(185,140,28,.35),transparent 70%);animation:wound-flash .8s ease-out .25s both;pointer-events:none}@keyframes card-wound-shake{0%,to{transform:translate(0)}15%{transform:translate(-2px) rotate(-.3deg)}30%{transform:translate(2px) rotate(.3deg)}45%{transform:translate(-1px)}60%{transform:translate(1px)}}@keyframes wound-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.player-avatar--card.player-avatar--tone-poisoned{animation:card-poison-pulse 1s ease-out .5s both;border-color:#64aa3266;box-shadow:inset 0 0 18px 2px #64aa324d,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--tone-poisoned:after{content:"POISONED";position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-14deg);z-index:4;font-family:var(--font-body);font-size:calc(15px * var(--stamp-scale, 1));font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:#a8d860;background:#081004a6;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8d860' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2h4v5l3 3a7 7 0 11-10 0l3-3z'/%3E%3Cpath d='M10 2h4'/%3E%3Cpath d='M9.5 12.5l5 5M14.5 12.5l-5 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:.4em center;background-size:1.0667em 1.0667em;border:.1333em solid #6a9830;padding:.2em .6667em .2em 1.7333em;border-radius:.2667em;text-shadow:0 0 3px rgba(168,216,96,.7),0 0 8px rgba(120,180,50,.3),0 2px 3px rgba(0,0,0,.6);box-shadow:0 0 6px #78b43240,0 0 12px #5a961e1f,inset 0 0 6px #64a0281f,0 3px 8px #00000080;pointer-events:none;animation:stamp-slam .35s cubic-bezier(.22,1,.36,1) .3s both}.player-avatar--card.player-avatar--tone-poisoned:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(80,160,28,.3),transparent 70%);animation:poison-flash .8s ease-out .25s both;pointer-events:none}.player-avatar--portrait.player-avatar--tone-poisoned{box-shadow:inset 0 0 10px 1px #64aa324d,0 0 0 1px #00000080,0 6px 14px #00000024}.player-avatar--portrait.player-avatar--tone-poisoned:after{content:"POISONED";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-14deg);z-index:4;font-family:var(--font-body);font-size:8px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;color:#a8d860;background:#081004b3;border:1.5px solid #6a9830;padding:2px 4px;border-radius:3px;text-shadow:0 0 3px rgba(168,216,96,.6),0 1px 2px rgba(0,0,0,.6);box-shadow:0 0 6px #78b43233,0 2px 6px #00000080;pointer-events:none;animation:stamp-slam .35s cubic-bezier(.22,1,.36,1) .3s both}.player-avatar--portrait.player-avatar--tone-poisoned:before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at center,rgba(80,160,28,.3),transparent 70%);animation:poison-flash .8s ease-out .25s both;pointer-events:none}@keyframes card-poison-pulse{0%,to{filter:none}30%{filter:saturate(1.3) hue-rotate(-10deg)}60%{filter:saturate(1.1) hue-rotate(-5deg)}}@keyframes poison-flash{0%{opacity:0}20%{opacity:1}to{opacity:.45}}.player-avatar--card.player-avatar--tone-investigated:after{content:"INVESTIGATED";position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-16deg);z-index:4;font-family:var(--font-body);font-size:calc(11px * var(--stamp-scale, 1));font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#8aa8ff;background:#060814a6;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238aa8ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10' cy='10' r='6'/%3E%3Cpath d='M14.5 14.5L20 20'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:.4545em center;background-size:1.2727em 1.2727em;border:.1818em solid rgba(100,140,255,.5);padding:.2727em .7273em .2727em 2em;border-radius:.3636em;text-shadow:0 0 3px rgba(138,168,255,.7),0 0 8px rgba(100,140,255,.3),0 2px 3px rgba(0,0,0,.6);box-shadow:0 0 6px #648cff40,0 0 12px #5078dc1f,inset 0 0 6px #648cff1f,0 3px 8px #00000080;pointer-events:none;animation:stamp-slam .35s cubic-bezier(.22,1,.36,1) .3s both}.player-avatar--card.player-avatar--tone-investigated:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:radial-gradient(ellipse at center,rgba(100,140,255,.25),transparent 70%);animation:investigate-flash .8s ease-out .25s both;pointer-events:none}@keyframes investigate-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.player-avatar--card.player-avatar--role-mafia,.player-avatar--card.player-avatar--role-don,.player-avatar--card.player-avatar--role-fixer,.player-avatar--card.player-avatar--role-framer,.player-avatar--card.player-avatar--role-poisoner{border-color:#dc3c3c59;box-shadow:inset 0 0 14px 1px #dc3c3c47,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-detective{border-color:#648cff4d;box-shadow:inset 0 0 14px 1px #648cff40,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-doctor{border-color:#0d94884d;box-shadow:inset 0 0 14px 1px #0d948847,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-jester{border-color:#a855f74d;box-shadow:inset 0 0 14px 1px #a855f740,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-executioner{border-color:#a855f740;box-shadow:inset 0 0 14px 1px #a855f733,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-mortician{border-color:#a0a5af4d;box-shadow:inset 0 0 14px 1px #a0a5af38,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-villager{border-color:#c9a04540;box-shadow:inset 0 0 14px 1px #c9a04533,inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 12px 28px #0000004d}.player-avatar--card.player-avatar--role-unknown{border-color:#a0a0a033}.avatar-caption{font-family:var(--font-body);display:inline-flex;align-items:center;min-height:22px;padding:4px 8px;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,#ffffff0a,#ffffff03);color:var(--text-faint);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;box-shadow:inset 0 1px #ffffff08}.avatar-caption--role{color:var(--gold);border-color:#c9a04533;background:linear-gradient(180deg,#c9a0451a,#c9a04508)}.player-avatar--role-mafia .avatar-caption--role,.player-avatar--role-don .avatar-caption--role,.player-avatar--role-fixer .avatar-caption--role,.player-avatar--role-framer .avatar-caption--role,.player-avatar--role-poisoner .avatar-caption--role{color:var(--red-bright);border-color:#dc3c3c42;background:linear-gradient(180deg,#dc3c3c1f,#dc3c3c08)}.player-avatar--role-detective .avatar-caption--role{color:#648cff;border-color:#648cff3d;background:linear-gradient(180deg,#648cff1a,#648cff08)}.player-avatar--role-doctor .avatar-caption--role{color:var(--teal);border-color:#0d94883d;background:linear-gradient(180deg,#0d94881a,#0d948808)}.player-avatar--role-jester .avatar-caption--role,.player-avatar--role-executioner .avatar-caption--role{color:#a855f7;border-color:#a855f73d;background:linear-gradient(180deg,#a855f71a,#a855f708)}.player-avatar--role-mortician .avatar-caption--role{color:#a0a5af;border-color:#a0a5af3d;background:linear-gradient(180deg,#a0a5af1a,#a0a5af08)}.player-avatar--role-unknown .avatar-caption--role{color:var(--text-muted);border-color:#ffffff14;background:linear-gradient(180deg,#ffffff0a,#ffffff03)}.avatar-caption--danger{color:var(--red-bright);border-color:#dc3c3c42;background:linear-gradient(180deg,#dc3c3c1f,#dc3c3c08)}.avatar-caption--safe{color:var(--teal);border-color:#0d94883d;background:linear-gradient(180deg,#0d94881c,#0d948808)}.dawn-notice-card{padding:16px 18px;border-radius:18px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#121418f5,#0d0f12f0);box-shadow:inset 0 1px #ffffff08,0 10px 20px #00000024}.dawn-notice-card--saved{border-color:#0d94883d;background:linear-gradient(180deg,#0b1818f5,#0b1212f0)}.dawn-notice-card--peaceful{border-color:#c9a0452e}.dawn-notice-title{color:var(--text);font-family:var(--font-body);font-size:17px;font-weight:600;line-height:1.35}.dawn-public-stack{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.dawn-public-card{display:flex;flex-direction:row;gap:var(--space-md);align-items:center;text-align:left;padding:var(--space-sm) var(--space-md)}.dawn-public-card-body{display:flex;flex-direction:column;gap:4px;min-width:0}.dawn-public-card-name{font-family:var(--font-body);font-size:15px;font-weight:700;line-height:1.15;color:var(--text);text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dawn-public-card .dawn-outcome-label{text-align:left;padding-inline:0}.dawn-public-card .dawn-outcome-flavor{text-align:left;max-width:none;padding-inline:0}.dawn-public-card--revived{border-color:#a0a5af3d}.dawn-public-card--revived .dawn-outcome-label{color:#d8d1c3}.dusk-layout{display:flex;flex-direction:column;gap:var(--space-sm)}.dawn-divider{display:flex;align-items:center;gap:var(--space-sm);width:min(100%,620px);margin:var(--space-xs) auto 0}.dawn-divider:before,.dawn-divider:after{content:"";flex:1;height:1px;background:linear-gradient(to right,transparent,currentColor,transparent);opacity:.35}.dawn-divider-label{font-family:var(--font-body);font-size:10px;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;color:currentColor;opacity:.85}.dawn-divider--public{color:var(--gold)}.dawn-divider--private{color:#9eb8f2}.dawn-private-grid{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.dawn-private-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:6px var(--space-md);align-items:center;text-align:left;padding:var(--space-sm) var(--space-md)}.dawn-private-card .dawn-private-label,.dawn-private-card .dawn-outcome-label{text-align:left}.dawn-private-card .dawn-private-label{width:100%}.dawn-private-card .dawn-outcome-flavor{text-align:left;max-width:none}.dawn-private-card--detective{flex-direction:column;align-items:center;text-align:center;gap:var(--space-sm);border-color:#648cff3d}.dawn-private-card--detective .dawn-private-label,.dawn-private-card--detective .dawn-outcome-label,.dawn-private-card--detective .dawn-outcome-flavor{width:auto;text-align:center}.dawn-private-card--detective .dawn-outcome-flavor{max-width:36ch}.dawn-private-card--detective .player-avatar--card{width:100px}.dawn-outcome-verdict{font-size:16px;font-weight:800;letter-spacing:.12em}.dawn-private-card--guilty{border-color:#dc3c3c57}.dawn-private-card--guilty .dawn-outcome-verdict{color:var(--red-bright);text-shadow:0 0 12px rgba(220,60,60,.35)}.dawn-private-card--guilty .dawn-outcome-flavor{color:#e0a3a3}.dawn-private-card--innocent{border-color:#0d948857}.dawn-private-card--innocent .dawn-outcome-verdict{color:var(--teal)}.dawn-private-card--innocent .dawn-outcome-flavor{color:#8fc9c1}.dawn-private-card--watcher{border-color:#8ca0c83d}.dawn-private-card--blocked{border-color:#c9a0453d}.dawn-private-label{font-size:10px;font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--gold);opacity:.7}.transition-line+.transition-line{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px dashed rgba(201,160,69,.2)}.phase-blocked-notice{display:flex;flex-direction:column;gap:4px;font-family:var(--font-body);font-size:16px;line-height:1.5;color:var(--text-muted);align-items:center;text-align:center}.phase-blocked-title{color:var(--gold);font-weight:600;letter-spacing:.02em;text-transform:uppercase}.phase-blocked-body{color:var(--text-muted);font-family:var(--font-serif);font-style:italic;max-width:44ch}@media(max-width:640px){.dawn-outcome-label{white-space:normal}}.phase-transition-summary{color:var(--text);font-family:var(--font-serif);font-size:16px;line-height:1.6;padding:14px 16px;border-radius:var(--radius);border:1px solid rgba(201,160,69,.18);background:linear-gradient(180deg,#1a1816f5,#12100ef5);box-shadow:inset 0 1px #ffffff08,0 8px 20px #00000029}.lobby-panel{display:flex;flex-direction:column;gap:var(--space-md);text-align:left}.lobby-section{background:linear-gradient(135deg,#101014eb,#0c0c10e6);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:20px 24px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--card-highlight),0 2px 16px #00000047}.lobby-section-heading{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);font-weight:700;margin:0 0 var(--space-md)}.lobby-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin:0 0 var(--space-md)}.lobby-section-header .lobby-section-heading{margin:0}.lobby-section .config-section{background:none;border:none;padding:0;margin:0 0 var(--space-lg)}.lobby-section .config-section:last-child{margin-bottom:0}.lobby-start-footer{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding-top:var(--space-md);border-top:1px solid rgba(255,255,255,.06);margin-top:var(--space-md)}.lobby-start-footer .role-summary{margin:0}.lobby-start-btn{padding:14px 36px;font-size:16px;min-width:220px;letter-spacing:.05em}.invite-row{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);margin:var(--space-sm) 0 var(--space-md)}.invite-row-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:600}.invite-row-buttons{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-xs) var(--space-sm)}.invite-row .btn-ghost{font-size:13px;padding:4px 12px;color:var(--text);border-color:var(--border-light)}.invite-row .btn-ghost:hover:not(:disabled){color:var(--gold);border-color:var(--gold)}.invite-row-btn{display:inline-flex;align-items:center;gap:6px}.invite-row-btn-icon{flex-shrink:0}.player-count{color:var(--text-muted);font-size:14px;margin-bottom:20px}.role-summary{text-align:center;color:var(--text-muted);font-size:13px;margin:var(--space-sm) 0 var(--space-md);letter-spacing:.02em}.role-summary--warn{color:var(--red-bright)}.role-breakdown{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);margin:var(--space-sm) 0 var(--space-md)}.role-stat{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:54px}.role-stat-num{font-size:22px;font-weight:700;color:var(--gold);line-height:1}.role-stat-label{font-size:10px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.07em}.role-stat-sep{color:var(--text-faint);font-size:14px;margin-bottom:14px}.role-stat--warn .role-stat-num{color:var(--red-bright)}.role-stat--warn .role-stat-label{color:var(--red-bright);opacity:.7}.role-groups{display:flex;flex-direction:column;gap:var(--space-md)}.role-group-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-faint);padding-left:4px;margin-bottom:6px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-xs) var(--space-md, 16px)}.role-group-header>span{display:flex;align-items:center;gap:8px}.role-group-header>span:before{content:"";display:inline-block;width:3px;height:12px;border-radius:2px;background:currentColor;flex-shrink:0}.role-group--mafia .role-group-header{color:var(--red-bright)}.role-group--village .role-group-header{color:var(--gold)}.role-group--neutral .role-group-header{color:var(--purple)}.role-group-count{font-size:11px;font-weight:700;opacity:.85}.config-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;margin:16px 0;text-align:left}.config-section h4{font-size:11px;margin-bottom:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-weight:700}.config-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px;gap:12px}.config-row:last-child{border-bottom:none;padding-bottom:0}.config-row label{margin:0;text-transform:none;letter-spacing:0;font-size:14px;color:var(--text);font-weight:400}.count-picker-wrap{display:inline-flex;align-items:center;gap:var(--space-xs, 6px);flex-shrink:0}.count-picker-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:600}.count-picker{display:flex;align-items:center;gap:0;background:#0c0e16cc;border:1px solid var(--border);border-radius:8px;padding:3px;flex-shrink:0}.count-picker-option{display:flex;align-items:center;justify-content:center;width:36px;height:32px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-muted);font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:color var(--transition),background var(--transition),border-color var(--transition),box-shadow var(--transition)}.count-picker-option:hover:not(:disabled):not(.active){color:var(--text);background:#ffffff0d}.count-picker-option.active{color:var(--gold);background:#c9a0451f;border-color:#c9a04566;box-shadow:0 0 8px #c9a0451a}.count-picker-wrap--footer{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm, 8px) var(--space-md, 16px);padding-left:4px}.role-group-header+.count-picker-wrap--footer{margin-bottom:var(--space-sm, 8px)}.card-grid+.count-picker-wrap--footer{margin-top:var(--space-sm, 8px)}.count-picker-meta{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 auto}.count-picker-wrap--footer .count-picker-label{opacity:.85}.role-group--mafia .count-picker-wrap--footer .count-picker-label{color:var(--red-bright)}.role-group--village .count-picker-wrap--footer .count-picker-label{color:var(--gold)}.count-picker-hint{font-size:12px;color:var(--text-faint);text-transform:none;letter-spacing:normal;font-weight:400;line-height:1.4}.count-picker-wrap.inactive .count-picker-option.active{color:var(--text-muted);background:transparent;border-color:var(--border);box-shadow:none}.count-picker-wrap--footer.inactive .count-picker-label{color:var(--text-faint)}.lobby-avatar-hint{text-align:center;font-size:13px;color:var(--text-muted);margin:0 0 var(--space-md, 16px);line-height:1.5}.lobby-avatar-hint a{color:var(--gold);text-decoration:none;font-weight:600;margin-left:4px}.lobby-avatar-hint a:hover{text-decoration:underline}.joined-players{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));justify-items:center;gap:var(--space-md, 16px) var(--space-sm, 8px);margin:var(--space-lg, 24px) 0 0;padding-top:var(--space-lg, 24px);border-top:1px solid rgba(255,255,255,.06)}.roster-count{margin:var(--space-md) 0 0;text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted)}.lobby-player-card{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:100px;animation:lobby-card-in .32s cubic-bezier(.2,.7,.3,1.2) both}@keyframes lobby-card-in{0%{opacity:0;transform:translateY(6px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.lobby-player-card-portrait{position:relative;display:inline-block}.lobby-player-card .player-avatar--portrait{width:80px;height:120px}.lobby-player-host-tag{font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-top:-2px;text-align:center;width:100%}.lobby-player-kick{position:absolute;top:-6px;right:-6px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:#080a0ef2;border:1px solid var(--border-light);color:var(--text-faint);cursor:pointer;font-size:10px;line-height:1;padding:0}.lobby-player-kick:hover{color:var(--red-bright, #e05252);border-color:var(--red-bright, #e05252)}.lobby-player-name{font-size:13px;font-weight:600;color:var(--text-warm);text-align:center;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.lobby-player-card.me .lobby-player-name{color:var(--gold)}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.2,.7,.3,1)}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:.01ms}}.lobby-add-bot-card{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 92px;max-width:100px;padding:0;background:none;border:none;cursor:pointer;font-family:var(--font-body);color:var(--text-muted);transition:color var(--transition)}.lobby-add-bot-slot{width:80px;height:120px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--border-light);border-radius:6px;background:#ffffff04;transition:all var(--transition)}.lobby-add-bot-slot svg{width:28px;height:28px;opacity:.7}.lobby-add-bot-label{font-size:11px;font-weight:500;letter-spacing:.02em}.lobby-add-bot-card:hover:not(:disabled){color:var(--gold)}.lobby-add-bot-card:hover:not(:disabled) .lobby-add-bot-slot{border-color:var(--gold);background:#c9a0450f}.lobby-add-bot-card:hover:not(:disabled) .lobby-add-bot-slot svg{opacity:1}@media(max-width:480px){.lobby-add-bot-slot{width:70px;height:105px}.lobby-add-bot-card{max-width:88px}}@media(max-width:480px){.joined-players{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}.lobby-player-card .player-avatar--portrait{width:70px;height:105px}.lobby-player-card{max-width:88px}}.section-header-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;-webkit-user-select:none;user-select:none}.section-header-toggle h3{margin-bottom:0}.section-toggle-hint{flex:1;text-align:right;font-size:11px;font-family:var(--font-body);color:var(--text-muted);opacity:.5;font-style:italic;font-weight:400}.section-chevron{width:16px;height:16px;color:var(--gold);opacity:.5;transition:transform var(--transition);display:flex;flex-shrink:0}.section-chevron.open{transform:rotate(180deg)}.section-chevron svg{width:100%;height:100%}.section-collapsible{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--transition-slow)}.section-collapsible.open{grid-template-rows:1fr}.section-collapsible>.section-collapsible-inner{overflow:hidden}.section-collapsible.open>.section-collapsible-inner{padding-top:14px;overflow:visible}.players-section{background:linear-gradient(135deg,#101014eb,#0c0c10e6);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:20px 24px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--card-highlight),0 2px 16px #00000047}.players-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);font-weight:700}.player-grid{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.player-roster{display:flex;flex-direction:column}.roster-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid rgba(255,255,255,.04)}.roster-row:last-child{border-bottom:none}.roster-row.me{background:#c9a0450a}.roster-row.dead{opacity:.5}.roster-status{font-size:10px;width:14px;text-align:center;flex-shrink:0;line-height:1}.roster-status.alive{color:var(--teal)}.roster-status.dead{color:var(--red-bright);font-size:11px}.roster-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.roster-name.dimmed{color:var(--text-faint)}.roster-you{color:var(--text-muted);font-weight:400;font-size:11px;margin-left:4px}.roster-role{margin-left:auto;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:4px;flex-shrink:0;background:#ffffff0a;color:var(--text-faint);border:1px solid rgba(255,255,255,.06)}.roster-role.hidden{font-style:italic;font-weight:600;border-color:transparent;background:none;color:var(--text-faint);opacity:.5}.roster-role.mafia{color:var(--red-bright);background:var(--red-dim);border-color:#4a1010}.roster-role.don{color:#ff6b6b;background:#b4282826;border-color:#5a1515}.roster-role.villager{color:var(--gold);background:var(--gold-dim);border-color:#c9a04540}.roster-role.doctor{color:var(--teal);background:#0d94881a;border-color:#1a4030}.roster-role.detective{color:#7cb8ff;background:#5c8def1a;border-color:#1a3060}.roster-role.jester{color:#c084fc;background:#a855f71a;border-color:#2d1854}.roster-role.voted{color:var(--gold);background:var(--gold-dim);border-color:#c9a04540}.roster-role.dead{color:var(--red-bright);background:var(--red-dim);border-color:#4a1010;opacity:.8}.roster-role.ghost{color:#c084fc;background:#a855f71a;border-color:#2d1854;font-style:italic}.roster-role.muted{font-style:italic;font-weight:600;border-color:transparent;background:none;color:var(--text-faint);opacity:.45}.roster-avatar.player-avatar--sm{width:34px;height:46px;border-radius:6px;flex-shrink:0}.player-roster--cards{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--space-sm, 8px);padding:var(--space-sm, 8px) 0}.roster-card{animation:lobby-card-in .28s cubic-bezier(.2,.7,.3,1.2) both;position:relative}.player-roster--cards .player-avatar--card{width:108px}.roster-card.me .player-avatar--card{box-shadow:inset 0 1px #ffffff0f,0 0 0 1px #00000080,0 0 14px var(--gold-glow),0 12px 28px #0000004d}.roster-card.dead{opacity:.7}@media(max-width:480px){.player-roster--cards .player-avatar--card{width:92px}}.player-roster--cards .player-avatar--card{--stamp-scale: .7}.player-roster--cards .player-avatar--card,.player-roster--cards .player-avatar--card:after{animation:none}.player-roster--cards .player-avatar--card:before{animation:none;opacity:0}.player-badges{display:grid;grid-template-columns:1fr 1fr;gap:6px}@media(min-width:600px){.player-badges{grid-template-columns:1fr 1fr 1fr}}@media(min-width:900px){.player-badges{grid-template-columns:1fr 1fr 1fr 1fr}}.player-badge{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius);border:1px solid var(--border);background:#101218b3;transition:all var(--transition)}.player-badge.me{border-color:#ffffff1f}.player-badge.dead{opacity:.7}.player-badge-avatar{position:relative;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:var(--font-serif);background:#ffffff0f;border:1.5px solid var(--border-light);color:var(--text-muted);flex-shrink:0}.player-badge-you{color:var(--text-faint);font-weight:400;font-size:10px}.player-badge.dead .player-badge-avatar{border-color:var(--border);background:#0c0e14cc}.player-badge-dead-x{position:absolute;inset:-2px;color:var(--red-bright);opacity:.8;pointer-events:none}.player-badge-avatar.mafia,.player-badge-avatar.don{border-color:#dc3c3c80;color:var(--red-bright)}.player-badge-avatar.detective{border-color:#648cff80;color:#8aa8ff}.player-badge-avatar.doctor{border-color:#3cc88c80;color:var(--teal)}.player-badge-avatar.villager{border-color:#c9a04559;color:var(--gold)}.player-badge-avatar.jester{border-color:#a855f780;color:#c084fc}.player-badge-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.player-badge-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-badge-name.dimmed{color:var(--text-faint);text-decoration:line-through;text-decoration-color:#dc3c3c59}.player-badge-role{align-self:flex-start;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:4px;color:var(--text-faint);background:#ffffff0d;border:1px solid var(--border)}.player-badge-role.mafia{color:var(--red-bright);background:var(--red-dim);border-color:#4a1010}.player-badge-role.don{color:#ff6b6b;background:#b4282826;border-color:#5a1515}.player-badge-role.villager{color:var(--gold);background:var(--gold-dim);border-color:#c9a04540}.player-badge-role.doctor{color:var(--teal);background:#0d94881a;border-color:#1a4030}.player-badge-role.detective{color:#7cb8ff;background:#5c8def1a;border-color:#1a3060}.player-badge-role.jester{color:#c084fc;background:#a855f71a;border-color:#2d1854}.player-badge-role.hidden{color:var(--text-faint);font-style:italic;font-weight:600}.player-chip{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:var(--radius);font-size:14px;font-weight:600;border:1px solid var(--border-light);background:var(--bg-elevated);color:var(--text)}.player-chip.me{border-color:var(--gold);background:var(--gold-dim);box-shadow:0 0 8px var(--gold-glow)}.player-chip-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.roster-avatar{flex-shrink:0}.kick-btn{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:12px;padding:0 2px;margin-left:2px;line-height:1;transition:color var(--transition)}.kick-btn:hover{color:var(--red-bright, #e05252)}.host-tag,.dead-tag,.role-tag{font-size:9px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.host-tag{background:var(--gold-dim);color:var(--gold);border:1px solid #4a3408}.dead-tag{background:var(--red-dim);color:var(--red-bright);border:1px solid #4a1010}.role-tag{background:var(--bg);color:var(--text-faint);border:1px solid var(--border)}.phase-intro{display:flex;align-items:center;justify-content:center;text-align:center;gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-lg);width:100%;box-sizing:border-box;margin-bottom:var(--space-sm)}.phase-intro-icon{width:56px;height:56px;flex-shrink:0}.phase-intro-copy{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.phase-intro-copy>h3{margin:0;font-family:var(--font-serif);font-size:18px;line-height:1.35}.phase-intro--night{background:#080820;border:1px solid #1a1a50;box-shadow:inset 0 1px #6464c80f,0 0 30px #3232b414}.phase-intro--night .phase-intro-copy>h3{color:#d9dcff}.phase-intro--night .phase-intro-icon{color:#d9dcff}.phase-intro--dawn,.phase-intro--dusk{background:none;border:0;border-radius:0;box-shadow:none;padding:0 0 var(--space-md)}.phase-intro--dawn{border-bottom:1px solid rgba(232,184,74,.18)}.phase-intro--dawn .phase-intro-copy>h3{color:#e8b84a}.phase-intro--dawn .phase-intro-icon{color:#e8b84a}.phase-intro--day{background:linear-gradient(135deg,#181206,#221908);border:1px solid #4a3a14;box-shadow:inset 0 1px #c9a04517,0 0 30px #c9a0451f}.phase-intro--day .phase-intro-copy>h3{color:var(--gold)}.phase-intro--day .phase-intro-icon{color:var(--gold)}.phase-intro--dusk{border-bottom:1px solid rgba(192,72,48,.2)}.phase-intro--dusk .phase-intro-copy>h3{color:#d27a4e}.phase-intro--dusk .phase-intro-icon{color:#d27a4e}.voting-panel,.action-prompt{display:flex;flex-direction:column;gap:var(--space-md)}.voting-panel>h3,.action-prompt>h3{margin:0;font-size:18px;font-family:var(--font-serif);color:var(--text)}.action-panel-copy{margin:-2px 0 2px;color:var(--text-muted);font-size:14px;line-height:1.55;max-width:62ch}.phase-action-row{display:flex;justify-content:center;margin-top:4px}.phase-timer-ghost{position:absolute;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none}.phase-action-row .btn-primary,.phase-action-row .btn-danger,.phase-action-row .btn-secondary{min-width:220px}.voting-panel.ghost-voting{margin-top:14px}.u-text-center{text-align:center}.night-panel{display:flex;flex-direction:column;gap:16px}.night-action-frame{display:flex;flex-direction:column;gap:var(--space-sm)}.phase-intro--night .phase-intro-copy>.action-panel-copy{margin:0;color:#dee2ffb8;max-width:56ch}.night-secret-panel{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);border:1px solid rgba(200,160,70,.25);border-radius:var(--radius-lg);background:#c8a0460a;animation:panel-fade-in .25s ease both}.night-secret-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.night-secret-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);opacity:.7}.night-role-icon{width:18px;height:18px;flex-shrink:0}.night-role-badge{text-align:center;margin:0}.night-role-badge-label{display:inline-block;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 16px;border-radius:var(--radius-sm);color:var(--gold);background:#c9a0451a;border:1px solid rgba(201,160,69,.25)}.night-secret--mafia .night-role-badge-label{color:var(--red-bright);background:#dc3c3c1a;border-color:#dc3c3c4d}.night-secret--doctor .night-role-badge-label{color:var(--teal);background:#3cc88c1a;border-color:#3cc88c4d}.night-secret--detective .night-role-badge-label{color:#8aa8ff;background:#648cff1a;border-color:#648cff4d}.night-secret--villager .night-role-badge-label{color:var(--gold);background:#c9a0451a;border-color:#c9a0454d}.night-secret--mafia{border-color:#dc3c3c4d;background:#dc3c3c0d}.night-secret--mafia .night-secret-label{color:var(--red-bright)}.night-secret--doctor{border-color:#3cc88c4d;background:#3cc88c0d}.night-secret--doctor .night-secret-label{color:var(--teal)}.night-secret--detective{border-color:#648cff4d;background:#648cff0d}.night-secret--detective .night-secret-label{color:#8aa8ff}.night-secret--jester .night-role-badge-label{color:var(--purple);background:#a855f71a;border-color:#a855f74d}.night-secret--villager{border-color:#c9a0454d;background:#c9a0450d}.night-secret--villager .night-secret-label{color:var(--gold)}.night-secret--jester{border-color:#a855f74d;background:#a855f70d}.night-secret--jester .night-secret-label{color:var(--purple)}.night-secret--mortician .night-role-badge-label{color:#a0a5af;background:#a0a5af14;border-color:#a0a5af4d}.night-secret--mortician{border-color:#a0a5af4d;background:#a0a5af0d}.night-secret--mortician .night-secret-label{color:#a0a5af}.night-secret--watcher .night-role-badge-label{color:#b6c5e3;background:#8ca0c81a;border-color:#8ca0c84d}.night-secret--watcher{border-color:#8ca0c84d;background:#8ca0c80d}.night-secret--watcher .night-secret-label{color:#b6c5e3}.night-secret--watcher .target-btn.selected{border-color:#b6c5e3;background:#8ca0c81f;box-shadow:0 0 10px #8ca0c833}.night-secret--bodyguard .night-role-badge-label{color:#d4a574;background:#be8c501a;border-color:#be8c504d}.night-secret--bodyguard{border-color:#be8c504d;background:#be8c500d}.night-secret--bodyguard .night-secret-label{color:#d4a574}.night-secret--bodyguard .target-btn.selected{border-color:#d4a574;background:#be8c501f;box-shadow:0 0 10px #be8c5033}.night-secret--executioner .night-role-badge-label{color:#c8b9ac;background:#b4a59b1a;border-color:#b4a59b4d}.night-secret--executioner{border-color:#b4a59b4d;background:#b4a59b0d}.night-secret--executioner .night-secret-label{color:#c8b9ac}.executioner-target{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid rgba(180,165,155,.35);background:linear-gradient(180deg,#b4a59b1a,#b4a59b05);border-radius:8px;display:flex;flex-direction:row;align-items:center;gap:var(--space-md)}.executioner-target-copy{display:flex;flex-direction:column;gap:var(--space-xs);align-items:flex-start;min-width:0}.executioner-target-label{font-size:.85em;color:#c8b9acd9;text-transform:uppercase;letter-spacing:.05em}.executioner-target-name{font-size:1.2em;color:#e2d4c4}.executioner-target--compact{flex-direction:row;align-items:baseline;gap:var(--space-sm);margin-top:var(--space-sm)}.night-reveal-overlay{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-lg);animation:panel-fade-in .25s ease both}.night-secret-panel .phase-message:not(.success),.night-reveal-overlay .phase-message:not(.success){padding:0}@keyframes panel-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.night-reveal-overlay .btn-primary{position:relative}.night-reveal-overlay .btn-primary:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 28px #c9a04580,0 0 48px #c9a04533;opacity:0;animation:pulse-glow 2s ease-in-out infinite;pointer-events:none}@keyframes pulse-glow{0%,to{opacity:0}50%{opacity:1}}.reveal-hint{color:var(--text-muted);font-size:14px;text-align:center}.target-list{display:flex;flex-direction:column;gap:5px;margin-bottom:16px}.target-btn{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text);font-size:15px;cursor:pointer;transition:all var(--transition);text-align:left;font-family:var(--font-body);width:100%}.target-btn>span:first-child{flex-shrink:0}.target-btn:hover{border-color:var(--text-muted);background:#202026}.target-btn--pass{border-style:dashed}.voting-panel .target-btn--pass{border-style:solid}.target-btn.selected{border-color:var(--gold);background:var(--gold-dim);color:var(--text);box-shadow:0 0 10px var(--gold-glow)}.voting-panel .target-list{margin-bottom:0}.voting-panel .phase-action-row,.action-prompt .phase-action-row{margin-top:0}.action-prompt .target-list{margin-bottom:0}.voting-panel .target-btn.submitted{border-color:#3cc88c66;background:#3cc88c14}.target-btn--with-avatar{padding:6px 16px 6px 8px}.target-btn-identity{display:flex;align-items:center;gap:10px;min-width:0}.target-btn-identity .player-avatar--sm{width:32px;height:32px}.target-btn-name{display:inline-flex;align-items:center;gap:var(--space-sm);min-width:0}.night-secret--mafia .target-btn.selected{border-color:var(--red-bright);background:#dc3c3c1f;box-shadow:0 0 10px #dc3c3c33}.night-secret--mafia .target-btn.submitted{border-color:#dc3c3c66;background:#dc3c3c0f}.team-vote-indicator{font-size:11px;color:var(--red-bright);font-weight:700;letter-spacing:.04em}.night-secret--detective .target-btn.selected{border-color:#8aa8ff;background:#648cff1f;box-shadow:0 0 10px #648cff33}.night-secret--doctor .target-btn.selected{border-color:var(--teal);background:#3cc88c1f;box-shadow:0 0 10px #3cc88c33}.target-btn:disabled{opacity:.3;cursor:not-allowed}.target-tag{margin-left:auto;padding:2px var(--space-sm);border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#c3b9a6;background:#a0a5af1a;border:1px solid rgba(160,165,175,.3)}.target-tag--block{color:#9fbaff;background:#648cff1f;border-color:#648cff59}.target-tag--guard{color:#d4a574;background:#be8c501f;border-color:#be8c5059}.target-tag--watch{color:#b6c5e3;background:#8ca0c81f;border-color:#8ca0c859}.target-tag--frame{color:#e8a0a0;background:#c85a5a1f;border-color:#c85a5a59}.target-tag--poison{color:#c8e6a0;background:#8cc83c1f;border-color:#8cc83c59}.vote-bar-wrap{display:contents}.voter-names{flex:1 1 0%;min-width:0;font-size:11px;line-height:1.4;color:var(--text-muted, #999);text-align:right;overflow-wrap:anywhere}.vote-count{font-size:11px;font-weight:700;color:var(--gold);white-space:nowrap;min-width:56px;text-align:right}.vote-count--leading{padding:4px 10px 5px;line-height:1;border-radius:999px;background:var(--gold-dim);border:1px solid rgba(201,160,69,.45);box-shadow:0 0 12px var(--gold-glow)}.config-hint{color:var(--text-faint);font-size:12px;margin:4px 0 0;line-height:1.5}.config-desc{color:var(--text-faint);font-weight:400}.phase-timer{display:inline-flex;align-items:center;font-family:monospace;font-size:22px;font-weight:700;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:5px 14px;min-width:72px;justify-content:center;letter-spacing:.05em}.phase-timer.warning{color:var(--red-bright);border-color:var(--red);box-shadow:0 0 10px var(--red-glow);animation:pulse 1s ease infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.timer-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}@media(max-width:640px){.phase-action-row .btn-primary,.phase-action-row .btn-danger,.phase-action-row .btn-secondary{width:100%}}.host-controls{display:flex;gap:10px;flex-wrap:wrap;padding-top:16px;margin-top:16px;border-top:1px solid var(--border)}.phase-panel>app-spectator-panel:not(:last-child){display:block;margin-bottom:16px}.winner-art{display:block;margin:0 auto 20px;opacity:.85}.winner{padding:24px;border-radius:var(--radius-lg);margin-bottom:24px;position:relative;overflow:hidden;text-align:center}.winner:before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");opacity:.04;pointer-events:none}.winner h2{font-size:44px;margin-bottom:8px;position:relative}.winner p{font-family:var(--font-serif);font-style:italic;font-size:18px;position:relative}.winner.village{background:linear-gradient(135deg,#0a0805,#1a1408);border:1px solid #3a2a14;box-shadow:0 0 40px var(--gold-glow),inset 0 1px #c9a0450f;color:var(--gold)}.winner.village h2{color:var(--gold);text-shadow:0 0 30px var(--gold-glow)}.winner.village p{color:#e8c87a}.winner.mafia{background:linear-gradient(135deg,#0d0404,#1a0606);border:1px solid #4a1010;box-shadow:0 0 40px #b91c1c26,inset 0 1px #b91c1c0f}.winner.mafia h2{color:var(--red-bright);text-shadow:0 0 30px var(--red-glow)}.winner.mafia p{color:#fca5a5}.winner.jester{background:linear-gradient(135deg,#0a0515,#150a2e);border:1px solid #2d1854;box-shadow:0 0 40px #a855f71f,inset 0 1px #a855f714}.winner.jester h2{color:var(--purple);text-shadow:0 0 20px rgba(168,85,247,.2)}.winner.jester p{color:#d8b4fe}.winner.executioner{background:linear-gradient(135deg,#0d0b0a,#1e1916);border:1px solid #3a322c;box-shadow:0 0 40px #b4a59b1a,inset 0 1px #b4a59b14}.winner.executioner h2{color:#c8b9ac;text-shadow:0 0 20px rgba(180,165,155,.18)}.winner.executioner p{color:#d8c9bc}.dawn-private-card--executioner{border-color:#b4a59b47}.executioner-private-icon{width:64px;height:64px;opacity:.9}.executioner-private-note{font-size:.85em;color:#d8c9bcb3;font-style:italic;margin-top:var(--space-xs);max-width:38ch}.supporter-cta-panel{padding:var(--space-md) var(--space-lg);background:linear-gradient(135deg,#101014eb,#0c0c10e6);border:1px solid rgba(201,160,69,.2);border-radius:var(--radius-lg);text-align:center}.supporter-cta-star{width:24px;height:24px;color:var(--gold);margin-bottom:var(--space-xs);animation:supporter-star-glow 3s ease-in-out infinite}.supporter-cta-heading{font-family:var(--font-display);font-size:18px;color:var(--text);margin:0 0 var(--space-sm);letter-spacing:.01em}.supporter-cta-text{font-size:14px;color:var(--text-muted);margin:0 0 var(--space-md);line-height:1.4}.supporter-cta-text+.supporter-cta-text{margin-top:calc(-1 * var(--space-sm))}.supporter-cta-link{display:inline-block;font-size:14px;font-weight:600;color:var(--gold);text-decoration:none;padding:var(--space-xs) var(--space-md);border:1px solid rgba(201,160,69,.3);border-radius:var(--radius);transition:background .2s,border-color .2s}.supporter-cta-link:hover{background:#c9a0451a;border-color:#c9a04580}.supporter-cta-dismiss{position:absolute;top:var(--space-xs);right:var(--space-xs);background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:14px;padding:var(--space-xs);line-height:1;opacity:.6;transition:opacity .2s}.supporter-cta-dismiss:hover{opacity:1}.supporter-cta-divider{display:flex;align-items:center;gap:var(--space-sm);margin:var(--space-md) 0;color:var(--text-faint);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.supporter-cta-divider:before,.supporter-cta-divider:after{content:"";flex:1;height:1px;background:var(--border-light)}.supporter-cta-secondary{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--text-muted);text-decoration:none;padding:var(--space-xs) var(--space-md);border:1px solid var(--border);border-radius:var(--radius);transition:color .2s,border-color .2s}.supporter-cta-secondary:hover{color:var(--text);border-color:var(--border-light)}.supporter-cta-secondary app-discord-icon{font-size:16px}.play-supporter-nudge{margin:var(--space-2xl) var(--space-md) 0}.guest-badge{font-size:10px;font-weight:700;color:var(--text-faint);background:#ffffff0f;padding:3px 10px;border-radius:20px;border:1px solid rgba(255,255,255,.08);letter-spacing:.08em}.qr-join{display:flex;flex-direction:column;align-items:center;gap:8px;margin:16px auto}.qr-image{border-radius:var(--radius);border:1px solid var(--border-light);background:var(--bg);padding:4px;display:block;image-rendering:pixelated}.qr-hint{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.config-section-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px}.config-section-header h4{margin-bottom:0}.config-section-hint{font-size:12px;color:var(--text-faint);margin:-4px 0 var(--space-sm, 8px);line-height:1.45}.suggest-btn{font-size:12px;padding:8px 16px;color:var(--gold);border-color:#4a3408;background:var(--gold-dim)}.suggest-btn:hover:not(:disabled){background:#c9a0452e;border-color:var(--gold)}.timer-hint{font-size:12px;color:var(--text-faint);font-style:italic;margin-bottom:12px}.timer-presets{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.timer-preset-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:var(--bg);border:1px solid var(--border-light);border-radius:var(--radius);cursor:pointer;transition:all var(--transition);font-family:var(--font-body);color:var(--text)}.timer-preset-btn:hover{border-color:var(--text-muted);background:var(--bg-elevated)}.timer-preset-btn.active{border-color:var(--gold);background:var(--gold-dim);box-shadow:0 0 10px var(--gold-glow)}.preset-name{font-size:14px;font-weight:600}.preset-detail{font-size:11px;color:var(--text-faint);font-family:monospace;letter-spacing:.02em}.stats-container{max-width:720px;margin:40px auto 0}.stats-container h1{font-family:var(--font-display);font-size:36px;font-weight:900;color:var(--gold);margin-bottom:12px;text-align:center;text-shadow:0 0 30px var(--gold-glow)}.stats-loading-text{color:var(--text-muted, rgba(255,255,255,.5));text-align:center}.stats-empty-state{position:relative;display:flex;flex-direction:column;align-items:center;gap:18px;padding:34px 28px;margin-bottom:24px;text-align:center;background:radial-gradient(circle at top,rgba(201,160,69,.12),transparent 40%),linear-gradient(180deg,#0f131cfa,#0a0d14fa);border:1px solid rgba(255,255,255,.08);border-radius:18px;box-shadow:var(--card-highlight),0 18px 40px #00000057;overflow:hidden}.stats-empty-state:before{content:"";position:absolute;top:0;left:24px;right:24px;height:1px;background:linear-gradient(90deg,transparent,rgba(201,160,69,.5),transparent);opacity:.7}.stats-empty-state-loading{min-height:240px;justify-content:center}.stats-empty-icon{width:84px;height:84px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--gold);background:radial-gradient(circle,#c9a04524,#c9a0450a);border:1px solid rgba(201,160,69,.24);box-shadow:0 0 36px #c9a04514}.stats-empty-icon svg{width:42px;height:42px}.stats-empty-content{max-width:480px}.stats-empty-eyebrow{display:inline-block;margin-bottom:8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:#ffffff73}.stats-empty-content h2{font-family:var(--font-display);font-size:28px;line-height:1.15;color:var(--text);margin-bottom:10px}.stats-empty-copy{max-width:38ch;margin:0 auto;color:var(--text-muted);font-size:15px}.stats-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.stats-page-actions{display:flex;justify-content:center;margin-top:24px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:24px}.stats-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 16px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--card-highlight)}.stats-card.village-card{border-color:#1e3828}.stats-card.mafia-card{border-color:#3a1010}.stats-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted)}.stats-value{font-size:28px;font-weight:700;color:var(--text);line-height:1.1}.stats-meta{font-size:13px;color:var(--text-muted)}.win-rate-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:24px;box-shadow:var(--card-highlight)}.win-rate-bar{display:flex;height:32px;border-radius:var(--radius);overflow:hidden;margin-top:10px}.win-rate-fill{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;transition:width .5s ease;min-width:0;overflow:hidden;white-space:nowrap}.win-rate-fill.village{background:var(--teal);color:#041210}.win-rate-fill.mafia{background:var(--red);color:#fff}.recent-games{margin-top:var(--space-xl);overflow-x:auto}.recent-games+.recent-games,.stats-grid+.recent-games{margin-top:var(--space-md)}.recent-games h3{margin-bottom:var(--space-xs)}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table th{text-align:left;padding:6px 10px;color:var(--text-faint);font-size:10px;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--border);font-weight:700}.stats-table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.stats-table tr:last-child td{border-bottom:none}.game-code-cell{font-family:monospace;letter-spacing:.1em;color:var(--gold)}.date-cell{color:var(--text-muted);font-size:12px}.winner-pill{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.05em}.winner-pill.village{background:var(--teal-dim);color:var(--teal);border:1px solid #153530}.winner-pill.mafia{background:var(--red-dim);color:var(--red-bright);border:1px solid #4a1010}@media(max-width:640px){.stats-container{margin-top:28px}.stats-container h1{font-size:30px}.stats-empty-state{padding:28px 18px;border-radius:16px}.stats-empty-icon{width:72px;height:72px}.stats-empty-content h2{font-size:24px}.stats-empty-actions,.stats-page-actions{flex-direction:column;align-items:stretch}.stats-empty-actions .btn-primary,.stats-empty-actions .btn-secondary,.stats-page-actions .btn-secondary{width:100%}}@property --sky-sun-angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@property --sky-moon-angle{syntax: "<angle>"; inherits: false; initial-value: 180deg;}@property --sky-sun-opacity{syntax: "<number>"; inherits: false; initial-value: 1;}@property --sky-moon-opacity{syntax: "<number>"; inherits: false; initial-value: 0;}@property --sky-stars-opacity{syntax: "<number>"; inherits: false; initial-value: 0;}.sky-animation{--sky-sun-angle: 0deg;--sky-moon-angle: 180deg;--sky-sun-opacity: 1;--sky-moon-opacity: 0;--sky-stars-opacity: 0;--sky-gradient: linear-gradient(180deg, #78bcff 0%, #a8ddff 38%, #ffd17e 100%);--sky-halo: radial-gradient(circle at 50% 22%, rgba(255, 247, 218, .18) 0%, rgba(255, 247, 218, 0) 38%), radial-gradient(circle at 50% 110%, rgba(255, 184, 87, .18) 0%, rgba(255, 184, 87, 0) 34%);--sky-veil: linear-gradient(180deg, rgba(255, 255, 255, .18) 0%, rgba(255, 255, 255, .04) 28%, rgba(7, 12, 22, .12) 100%);--sky-mask: linear-gradient(180deg, rgba(12, 14, 22, 0) 0%, rgba(12, 14, 22, .18) 28%, rgba(7, 8, 12, .92) 100%);--sky-orbit-stroke: rgba(255, 235, 174, .18);position:relative;width:100%;height:160px;overflow:hidden;isolation:isolate;contain:layout paint style;container-type:size;border-radius:var(--radius-lg);border:1px solid #5b4420;box-shadow:var(--card-highlight),0 18px 40px #00000047;transition:border-color 1.6s ease,box-shadow 1.6s ease}.sky-animation.sky-day{border-color:#7d5b24;box-shadow:var(--card-highlight),0 18px 40px #78541a33;--sky-gradient: linear-gradient(180deg, #1a3d6e 0%, #2c5a8a 34%, #5a85a8 68%, #9a7a48 100%);--sky-halo: radial-gradient(circle at 50% 22%, rgba(241, 245, 255, .12) 0%, rgba(241, 245, 255, 0) 36%), radial-gradient(circle at 50% 110%, rgba(196, 157, 95, .15) 0%, rgba(196, 157, 95, 0) 34%);--sky-veil: linear-gradient(180deg, rgba(214, 227, 255, .12) 0%, rgba(255, 255, 255, .03) 28%, rgba(10, 16, 28, .22) 100%);--sky-mask: linear-gradient(180deg, rgba(8, 12, 20, 0) 0%, rgba(8, 12, 20, .14) 28%, rgba(8, 10, 16, .92) 100%);--sky-orbit-stroke: rgba(226, 234, 255, .14)}.sky-animation.sky-afternoon{border-color:#784325;box-shadow:var(--card-highlight),0 18px 44px #8a471447;--sky-gradient: linear-gradient(180deg, #4f80cf 0%, #f0a159 50%, #d56f34 100%);--sky-halo: radial-gradient(circle at 62% 26%, rgba(255, 223, 162, .16) 0%, rgba(255, 223, 162, 0) 34%), radial-gradient(circle at 50% 112%, rgba(169, 76, 25, .16) 0%, rgba(169, 76, 25, 0) 36%);--sky-veil: linear-gradient(180deg, rgba(255, 236, 207, .14) 0%, rgba(255, 219, 174, .06) 34%, rgba(20, 12, 10, .18) 100%);--sky-mask: linear-gradient(180deg, rgba(12, 11, 14, 0) 0%, rgba(12, 11, 14, .2) 28%, rgba(14, 8, 8, .94) 100%);--sky-orbit-stroke: rgba(255, 213, 150, .16)}.sky-animation.sky-evening{border-color:#6f2b28;box-shadow:var(--card-highlight),0 18px 44px #5c192257;--sky-gradient: linear-gradient(180deg, #183560 0%, #7a2952 44%, #f27d42 100%);--sky-halo: radial-gradient(circle at 72% 32%, rgba(255, 191, 110, .16) 0%, rgba(255, 191, 110, 0) 30%), radial-gradient(circle at 50% 112%, rgba(112, 36, 59, .18) 0%, rgba(112, 36, 59, 0) 38%);--sky-veil: linear-gradient(180deg, rgba(255, 220, 179, .06) 0%, rgba(255, 183, 126, .04) 30%, rgba(18, 12, 24, .28) 100%);--sky-mask: linear-gradient(180deg, rgba(12, 11, 17, 0) 0%, rgba(12, 11, 17, .26) 32%, rgba(8, 8, 14, .95) 100%);--sky-orbit-stroke: rgba(255, 178, 104, .18)}.sky-animation.sky-night{border-color:#253a72;box-shadow:var(--card-highlight),0 18px 44px #0a122a66;--sky-gradient: linear-gradient(180deg, #08101f 0%, #111c3c 42%, #1d234c 100%);--sky-halo: radial-gradient(circle at 50% 20%, rgba(102, 124, 255, .08) 0%, rgba(102, 124, 255, 0) 42%), radial-gradient(circle at 50% 112%, rgba(32, 38, 90, .16) 0%, rgba(32, 38, 90, 0) 40%);--sky-veil: linear-gradient(180deg, rgba(104, 124, 255, .06) 0%, rgba(255, 255, 255, .02) 24%, rgba(2, 5, 14, .28) 100%);--sky-mask: linear-gradient(180deg, rgba(6, 8, 18, 0) 0%, rgba(6, 8, 18, .24) 28%, rgba(4, 4, 10, .95) 100%);--sky-orbit-stroke: rgba(144, 164, 255, .16)}.sky-animation.sky-dawn{border-color:#5d3753;box-shadow:var(--card-highlight),0 18px 44px #582a464d;--sky-gradient: linear-gradient(180deg, #13182d 0%, #4b2752 48%, #f39d61 100%);--sky-halo: radial-gradient(circle at 24% 34%, rgba(255, 196, 123, .16) 0%, rgba(255, 196, 123, 0) 30%), radial-gradient(circle at 50% 112%, rgba(205, 103, 70, .18) 0%, rgba(205, 103, 70, 0) 38%);--sky-veil: linear-gradient(180deg, rgba(166, 178, 255, .06) 0%, rgba(255, 203, 149, .04) 28%, rgba(18, 10, 20, .24) 100%);--sky-mask: linear-gradient(180deg, rgba(11, 11, 18, 0) 0%, rgba(11, 11, 18, .22) 30%, rgba(7, 6, 11, .94) 100%);--sky-orbit-stroke: rgba(255, 189, 122, .18)}.sky-animation.sky-gameover{border-color:#6c1730;box-shadow:var(--card-highlight),0 20px 46px #4d0b186b;--sky-gradient: linear-gradient(180deg, #0a0612 0%, #2a0c25 48%, #240715 100%);--sky-halo: radial-gradient(circle at 50% 22%, rgba(123, 28, 61, .12) 0%, rgba(123, 28, 61, 0) 34%), radial-gradient(circle at 50% 112%, rgba(91, 9, 31, .16) 0%, rgba(91, 9, 31, 0) 36%);--sky-veil: linear-gradient(180deg, rgba(199, 40, 72, .06) 0%, rgba(255, 255, 255, .01) 20%, rgba(7, 2, 8, .3) 100%);--sky-mask: linear-gradient(180deg, rgba(10, 5, 10, 0) 0%, rgba(10, 5, 10, .26) 30%, rgba(5, 2, 6, .96) 100%);--sky-orbit-stroke: rgba(184, 63, 93, .18)}.sky-gradient{--sky-layer-gradient: linear-gradient(180deg, #78bcff 0%, #a8ddff 34%, #ffe7b8 72%, #f5bb6d 100%);--sky-layer-halo: radial-gradient(circle at 50% 22%, rgba(255, 247, 218, .18) 0%, rgba(255, 247, 218, 0) 38%), radial-gradient(circle at 50% 110%, rgba(255, 185, 95, .2) 0%, rgba(255, 185, 95, 0) 34%);--sky-layer-veil: linear-gradient(180deg, rgba(255, 255, 255, .22) 0%, rgba(255, 255, 255, .04) 30%, rgba(16, 20, 34, .12) 100%);position:absolute;inset:0;background:var(--sky-layer-gradient);z-index:0}.sky-gradient-overlay{opacity:0;pointer-events:none}.sky-gradient:before,.sky-gradient:after{content:"";position:absolute;inset:0;pointer-events:none}.sky-gradient:before{inset:-12%;background:var(--sky-layer-halo);opacity:.7}.sky-gradient:after{background:var(--sky-layer-veil)}.sky-orbit-guide{position:absolute;left:50%;top:76%;width:76cqw;height:54cqh;transform:translate(-50%,-50%);border:1px solid var(--sky-orbit-stroke);border-radius:999px;opacity:.85;-webkit-mask-image:linear-gradient(180deg,rgba(255,255,255,.85) 0%,rgba(255,255,255,.15) 70%,transparent 100%);mask-image:linear-gradient(180deg,rgba(255,255,255,.85) 0%,rgba(255,255,255,.15) 70%,transparent 100%);z-index:1;transition:border-color 1.8s ease,opacity 1.8s ease}.sky-stars{position:absolute;inset:0;z-index:1;opacity:0;pointer-events:none}.sky-stars svg{width:100%;height:100%}.sky-star-1{opacity:.9}.sky-star-2{opacity:.6}.sky-star-3{opacity:.35}.sky-skyline{position:absolute;bottom:0;left:0;width:100%;height:140px;z-index:4;color:#0a0a10;transition:color 2s ease}.sky-animation.sky-day .sky-skyline,.sky-animation.sky-afternoon .sky-skyline{color:#1a1510}.sky-animation.sky-evening .sky-skyline{color:#120810}.sky-animation.sky-dawn .sky-skyline{color:#0e0810}.sky-animation.sky-night .sky-windows{opacity:.7}.sky-animation.sky-dawn .sky-windows{opacity:.5}.sky-animation.sky-day .sky-windows{opacity:.15}.sky-animation.sky-afternoon .sky-windows{opacity:.25}.sky-animation.sky-evening .sky-windows{opacity:.55}.sky-body{position:absolute;left:0;top:0;z-index:2;pointer-events:none;will-change:transform,opacity;transform:translate(calc(var(--body-x, 50cqw) - 50%),calc(var(--body-y, 26cqh) - 50%))}.sky-sun-body{width:64px;height:64px;opacity:1}.sky-moon-body{width:56px;height:56px;opacity:0}.sky-sun,.sky-moon{width:100%;height:100%;display:block;transition:opacity 1.6s ease}.sky-sun{filter:drop-shadow(0 0 12px rgba(251,191,36,.36))}.sky-moon{filter:drop-shadow(0 0 10px rgba(129,140,248,.26))}.sky-animation.sky-day .sky-sun{filter:drop-shadow(0 0 14px rgba(251,191,36,.42))}.sky-animation.sky-afternoon .sky-sun{filter:drop-shadow(0 0 14px rgba(249,115,22,.38))}.sky-animation.sky-evening .sky-sun{filter:drop-shadow(0 0 16px rgba(248,113,113,.34))}.sky-animation.sky-night .sky-sun{filter:drop-shadow(0 0 6px rgba(251,191,36,.14))}.sky-animation.sky-dawn .sky-sun{filter:drop-shadow(0 0 14px rgba(251,146,60,.38))}.sky-animation.sky-gameover .sky-sun{filter:drop-shadow(0 0 8px rgba(239,68,68,.16))}.sky-animation.sky-day .sky-moon{filter:drop-shadow(0 0 4px rgba(129,140,248,.06))}.sky-animation.sky-afternoon .sky-moon{filter:drop-shadow(0 0 5px rgba(129,140,248,.1))}.sky-animation.sky-evening .sky-moon{filter:drop-shadow(0 0 8px rgba(129,140,248,.18))}.sky-animation.sky-night .sky-moon{filter:drop-shadow(0 0 14px rgba(148,163,255,.34))}.sky-animation.sky-dawn .sky-moon{filter:drop-shadow(0 0 10px rgba(148,163,255,.22))}.sky-animation.sky-gameover .sky-moon{filter:drop-shadow(0 0 10px rgba(248,113,113,.14))}.sky-horizon-mask{position:absolute;inset:auto 0 0;height:42%;z-index:3;background:var(--sky-mask);pointer-events:none;transition:background 1.8s ease}@media(prefers-reduced-motion:reduce){.sky-gradient,.sky-stars,.sky-sun,.sky-moon,.sky-animation,.sky-skyline,.sky-horizon-mask,.sky-orbit-guide{transition:none}.sky-stars svg,.sky-gradient:before{animation:none}.connecting-spinner,.connecting-state,.role-flip-in,.transition-panel,.dawn-avatar-card--death,.dawn-avatar-card--death:after,.dawn-avatar-card--death:before,.dawn-avatar-card--revived,.dawn-avatar-card--revived:before{animation:none}.connecting-spinner{opacity:.5}}.sky-animation.sky-day .sky-horizon-line{color:#c9a045;opacity:.2}.sky-animation.sky-evening .sky-horizon-line{color:#c04830;opacity:.3}.sky-animation.sky-night .sky-horizon-line{color:#818cf8;opacity:.12}@media(max-width:600px){.app-main{--app-main-pad-x: 12px;padding:16px var(--app-main-pad-x)}.lobby-container{margin-top:24px}.lobby-container h1{font-size:36px}.form-card{padding:20px}.phase-panel,.players-section{padding:16px}.phase-intro{flex-direction:column;text-align:center;align-items:center}.phase-intro-icon{width:44px;height:44px}.game-page-sky{inset:54px 0 0}.game-page-sky .sky-animation{height:100%;min-height:100%}.game-page-sky .sky-skyline{bottom:0;height:calc(max(200px,22vw) + 12%)}.game-page-sky .sky-orbit-guide{top:54%;width:84cqw;height:38cqh}.game-page-sky .sky-body{transform:translate(-50%,-50%) translateY(-46px)}.game-page-sky .sky-sun-body{width:100px;height:100px}.game-page-sky .sky-moon-body{width:86px;height:86px}.game-page-sky .sky-stars svg{transform:scale(1.08)}.sky-animation{height:110px}.sky-sun-body{width:56px;height:56px}.sky-moon-body{width:48px;height:48px}}@keyframes banner-slide-in{0%{opacity:0;max-height:0;padding-top:0;padding-bottom:0}to{opacity:1;max-height:60px;padding-top:9px;padding-bottom:9px}}.cookie-consent{position:fixed;bottom:0;left:0;right:0;background:var(--bg-elevated);border-top:1px solid var(--border);padding:14px 20px;display:flex;align-items:center;justify-content:center;gap:16px;z-index:1000;font-size:14px}.app-main{padding-bottom:40px}.app-shell:has(.cookie-consent) .app-main{padding-bottom:120px}.cookie-consent p{margin:0;color:var(--text-muted)}.cookie-consent a{color:var(--gold)}.btn-small{padding:6px 16px;font-size:13px}body.watch-active .app-main{max-width:none;padding:0;margin:0}body.watch-active app-nav-menu,body.watch-active app-support-banner,body.watch-active app-whats-new-modal{display:none!important}body.watch-obs{background:transparent}body.watch-obs app-cookie-consent,body.watch-obs app-toaster,body.watch-obs app-footer{display:none!important}body.dev-big-screen-active app-cookie-consent,body.dev-big-screen-active app-toaster,body.dev-big-screen-active app-footer{display:none!important}.big-screen-roster-grid--graveyard .player-avatar--card.player-avatar--tone-death,.big-screen-roster-grid--graveyard .player-avatar--card.player-avatar--tone-death:after,.big-screen-roster-grid--graveyard .player-avatar--card.player-avatar--tone-death:before{animation:none!important}.dawn-victim-card .player-avatar--card.player-avatar--tone-death,.dusk-victim-card .player-avatar--card.player-avatar--tone-death{animation:card-death-shake .4s ease-out 1s both}.dawn-victim-card .player-avatar--card.player-avatar--tone-death:after,.dusk-victim-card .player-avatar--card.player-avatar--tone-death:after{animation:stamp-slam .45s cubic-bezier(.22,1,.36,1) .85s both}.dawn-victim-card .player-avatar--card.player-avatar--tone-death:before,.dusk-victim-card .player-avatar--card.player-avatar--tone-death:before{animation:death-flash .8s ease-out .8s both}body.watch-active .sky-animation,body.dev-big-screen-active .sky-animation{height:100%!important;min-height:100%!important}body.watch-active .sky-skyline,body.dev-big-screen-active .sky-skyline{bottom:0!important;height:clamp(220px,21.65vw,50vh)!important}
