.connection-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0a0c18e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}.connection-overlay p{margin:0;color:#fff;font-size:1.1rem;text-align:center;max-width:320px}.screen{min-height:100vh;padding:clamp(var(--space-md),4vw,var(--space-xl));padding-bottom:clamp(var(--space-xl),6vw,40px);display:flex;flex-direction:column;gap:clamp(var(--space-md),3vw,var(--space-lg));max-width:min(480px,100%);margin:0 auto;box-sizing:border-box;overflow-x:hidden}.screen>*:first-child{flex-shrink:0}.screen .screen-main{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}@media (max-width: 380px){.screen{padding-left:var(--space-md);padding-right:var(--space-md)}}.home .hero{text-align:center;padding:var(--space-xl) 0 var(--space-lg)}.home h1{font-size:clamp(var(--text-h1),5vw,2.25rem);font-weight:700;margin:0 0 var(--space-sm);letter-spacing:-.02em}.home .tagline{color:var(--muted);font-size:var(--text-body);margin:0}.home-stats{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:.9rem;color:var(--muted);margin-bottom:8px}.home-stats span{margin-right:4px}.home-rejoin{margin-bottom:16px;padding:12px 0;border-top:var(--border-subtle);border-bottom:var(--border-subtle)}.home-rejoin p{margin:0 0 10px;font-size:.95rem;color:var(--text)}.home-rejoin .btn{margin-right:8px;margin-bottom:4px}.home .actions{display:flex;flex-direction:column;gap:var(--space-md);margin-top:auto;padding-top:var(--space-xl)}.home h2{font-size:var(--text-h2);margin:0 0 var(--space-sm)}.home .hint{color:var(--muted);font-size:var(--text-caption);margin:0 0 var(--space-sm)}.home-form{display:flex;flex-direction:column;gap:var(--space-md)}.home-form input,.home input{width:100%}.home .btn.link{background:none;color:var(--muted);font-weight:400;margin-top:8px}.btn{padding:16px 24px;font-size:1rem;width:100%}.btn.primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-soft)}.btn.primary:hover:not(:disabled){background:var(--accent-dim);box-shadow:0 6px 20px #dc4a5c40}.btn.secondary{background:var(--surface);color:var(--text);border:var(--border-subtle);box-shadow:inset 0 1px #ffffff0a}.btn.secondary:hover:not(:disabled){background:var(--surface-elevated);border-color:#ffffff1a}.btn.secondary:active:not(:disabled){opacity:.9}.btn.secondary.small{padding:10px 16px;font-size:.9rem}.btn.start{margin-top:8px}.screen.lobby{background:var(--bg);background-image:radial-gradient(ellipse 120% 80% at 50% 0%,rgba(30,35,55,.6) 0%,transparent 55%);transition:background .5s ease}.lobby .room-code{background:var(--surface);border-radius:var(--radius);padding:24px 20px;text-align:center;border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff0a}.lobby .room-code .label{display:block;color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px}.lobby .room-code .code{font-size:2rem;font-weight:700;letter-spacing:.22em}.lobby .players ul{list-style:none;padding:0;margin:0}.lobby .players li{padding:12px 16px;background:var(--surface);border-radius:var(--radius);margin-bottom:6px;border:var(--border-subtle);box-shadow:inset 0 1px #ffffff08}.lobby-mode-hint{color:var(--muted);font-size:var(--text-small);margin:0 0 var(--space-sm);line-height:1.4;max-width:100%}.lobby .need{color:var(--muted);font-size:var(--text-caption);margin:0}.lobby-settings{background:var(--surface);border-radius:var(--radius);padding:var(--space-lg);border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff08}.lobby-settings label{display:block;margin-bottom:var(--space-md)}.lobby-settings label:last-of-type{margin-bottom:0}.lobby-settings span{display:block;font-size:var(--text-small);color:var(--muted);margin-bottom:var(--space-xs)}.lobby-settings select{width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius);border:var(--border-subtle);background:var(--surface-elevated);color:var(--text);font-family:var(--font);font-size:var(--text-body)}.lobby .host-block,.game .host-speaker{background:var(--surface);border-radius:var(--radius);padding:16px;margin-top:auto;border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff08}.lobby .host-block h3,.game .host-speaker h3{margin:0 0 10px;font-size:.95rem;color:var(--muted)}.host-lines{max-height:180px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.host-lines.big{max-height:220px;font-size:1.05rem;line-height:1.5}.host-line{margin:0 0 8px}.host-line:last-child{margin-bottom:0}.muted{color:var(--muted);font-size:.9rem;margin:0}.tts-toggle{display:flex;align-items:center;gap:10px;padding:12px 0;cursor:pointer;font-size:.95rem;color:var(--muted)}.tts-toggle input{width:auto;accent-color:var(--accent)}.tts-toggle span{-webkit-user-select:none;user-select:none}.tts-enable-overlay{margin:.75rem 0;padding:.75rem 1rem;background:var(--surface-2, #f0f0f0);border-radius:8px;text-align:center}.tts-enable-overlay p{margin:0 0 .5rem;font-size:.95rem}.tts-error{margin:8px 0 0;padding:10px 12px;background:#e9456026;border-radius:10px;font-size:.9rem;color:var(--accent)}.btn-link-inline{background:none;padding:0;font-size:inherit;color:var(--muted);text-decoration:underline;cursor:pointer;margin-left:4px}.key-check-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}.key-check-row .btn{width:auto}.key-check-ok,.key-ok{color:var(--success);font-size:.9rem}.key-check-err,.key-err{color:var(--accent);font-size:.75rem;max-width:160px;overflow:hidden;text-overflow:ellipsis}.game-settings{margin:0 0 8px;font-size:.9rem;color:var(--muted)}.game-settings summary{cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.game-settings summary::-webkit-details-marker{display:none}.game-settings-inner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:var(--border-subtle)}.game-settings-inner .tts-toggle{margin:0}.game-settings-inner .btn{width:auto}.tts-error.small{margin:0;font-size:.8rem}.role-card-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c18e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.role-card{background:var(--surface-elevated);border-radius:var(--radius);padding:32px 28px;max-width:340px;width:100%;text-align:center;border:var(--border-subtle);box-shadow:var(--shadow-soft),0 24px 48px #00000059,inset 0 1px #ffffff0d;animation:cardIn .35s ease}@keyframes cardIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.role-card-label{display:block;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px}.role-card-name{display:block;font-size:clamp(1.5rem,4vw,1.85rem);font-weight:700;margin-bottom:var(--space-lg);letter-spacing:-.02em;line-height:1.2}.role-card-name.role-mafia{color:#e94560}.role-card-name.role-don{color:#b3396b}.role-card-name.role-doctor{color:#0f9d58}.role-card-name.role-detective{color:#4285f4}.role-card-name.role-civilian{color:#eaeaea}.role-card-desc{font-size:var(--text-body);color:var(--muted);line-height:1.5;margin:0 0 var(--space-xl)}.role-card .btn{width:100%}.game-result-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#0a0c18e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);overflow-y:auto}.game-result-overlay .game-result{max-width:400px;width:100%}.game-result .result-badge{font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 12px}.game-result{background:var(--surface);border-radius:var(--radius);padding:24px;margin-bottom:12px;text-align:center;border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff0a}.game-result--enter{animation:resultEnter .6s cubic-bezier(.34,1.56,.64,1) both}.game-result--enter .result-title{animation:resultTitle .5s ease .15s both}.game-result--enter .result-subtitle{animation:resultTitle .4s ease .25s both}.game-result--enter .roles-reveal{animation:resultTitle .4s ease .4s both}@keyframes resultEnter{0%{opacity:0;transform:scale(.92) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes resultTitle{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.game-result .result-title{font-size:1.6rem;margin:0 0 8px;letter-spacing:-.02em;text-shadow:0 0 40px currentColor}.game-result .result-subtitle{color:var(--muted);font-size:1rem;margin:0 0 20px}.game-result-mafia .result-title{color:#e94560}.game-result-civilians .result-title{color:#0f9d58}.roles-reveal{text-align:left;background:#00000040;border-radius:14px;padding:16px}.roles-reveal h4{font-size:.9rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 12px}.roles-reveal ul{list-style:none;margin:0;padding:0}.roles-reveal li{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:.98rem;transition:opacity .2s ease}.roles-reveal li:last-child{border-bottom:none}.roles-reveal strong{margin-right:8px}.roles-reveal-list{display:flex;flex-direction:column;gap:6px}.roles-reveal-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap}.roles-reveal-name{font-weight:600}.roles-reveal-role{font-size:var(--text-caption);opacity:.95}.roles-reveal-role.role-mafia{color:#e94560}.roles-reveal-role.role-don{color:#b3396b}.roles-reveal-role.role-doctor{color:#0f9d58}.roles-reveal-role.role-detective{color:#4285f4}.roles-reveal-role.role-veteran{color:#ff9800}.vote-reveal,.battle-log{margin-top:16px;text-align:left}.vote-reveal h4,.battle-log h4{margin:0 0 8px;font-size:1rem;color:var(--muted)}.vote-reveal-list,.battle-log-list{list-style:none;padding:0;margin:0;font-size:var(--text-caption);line-height:1.5;color:var(--text);max-height:160px;overflow-y:auto;overflow-x:hidden}.vote-reveal-list li,.battle-log-list li{padding:4px 0;border-bottom:1px solid rgba(255,255,255,.06)}.vote-reveal-list li:last-child,.battle-log-list li:last-child{border-bottom:none}.game-result .btn.primary{margin-top:20px}.game{position:relative;min-width:0;overflow-x:hidden;transition:background var(--phase-duration) var(--phase-ease),box-shadow var(--phase-duration) var(--phase-ease);background:var(--bg)}.game:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;border-radius:0 0 8px 8px;opacity:.9;transition:background var(--phase-duration) var(--phase-ease),opacity .4s ease}.game.game--roles:before{background:#6b5b8a}.game.game--night:before{background:#3d4a6e}.game.game--day:before{background:#8a7342}.game.game--voting:before{background:#9e4a4a}.game.game--ended:before{background:#4a4a5a}.game.game--ended-mafia:before{background:#a03a4a}.game.game--ended-civilians:before{background:#1a7a48}.game.game--roles{background:var(--bg);background-image:radial-gradient(ellipse 100% 60% at 50% 0%,rgba(80,60,120,.2) 0%,transparent 55%)}.game.game--night{background:var(--bg);background-image:radial-gradient(ellipse 100% 70% at 50% 20%,rgba(50,65,110,.25) 0%,transparent 55%)}.game.game--day{background:var(--bg);background-image:radial-gradient(ellipse 100% 70% at 50% 0%,rgba(120,95,50,.15) 0%,transparent 55%)}.game.game--voting{background:var(--bg);background-image:radial-gradient(ellipse 100% 70% at 50% 0%,rgba(120,45,45,.2) 0%,transparent 55%)}.game.game--ended{background:var(--bg);transition-duration:1.2s}.game.game--ended-mafia{background-image:radial-gradient(ellipse 100% 60% at 50% 30%,rgba(200,60,80,.12) 0%,transparent 60%)}.game.game--ended-civilians{background-image:radial-gradient(ellipse 100% 60% at 50% 30%,rgba(20,120,70,.1) 0%,transparent 60%)}.game-header{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.role-badge,.phase-badge{background:var(--surface);padding:8px 14px;border-radius:var(--radius);font-size:.85rem;font-weight:600;border:var(--border-subtle);box-shadow:inset 0 1px #ffffff0a;transition:box-shadow var(--phase-duration) var(--phase-ease),transform .2s ease,border-color var(--phase-duration) var(--phase-ease),color var(--phase-duration) var(--phase-ease),background .3s ease}.role-badge--glow{box-shadow:0 0 20px #ffffff0f}.game--night .role-badge--glow{box-shadow:0 0 28px #5064c840}.game--day .role-badge--glow{box-shadow:0 0 26px #dcb46433}.game--voting .role-badge--glow{box-shadow:0 0 26px #e9645033}.game--roles .role-badge--glow{box-shadow:0 0 24px #8c64c833}.phase-badge{border:var(--border-subtle)}.game--roles .phase-badge--roles,.game--roles .phase-badge--roles_done{border-color:#9d7dc980;color:#d4c4f0;box-shadow:0 0 20px #7850b426}.game--night .phase-badge--night{border-color:#5a6ec880;color:#c8d0ff;box-shadow:0 0 24px #465ab433}.game--day .phase-badge--day{border-color:#e6b45080;color:#ffe8b8;box-shadow:0 0 22px #c8a03c2e}.game--voting .phase-badge--voting{border-color:#e964468c;color:#ffd0c0;box-shadow:0 0 24px #e9456033}.phase-badge--pulse{animation:phasePulse .6s ease-out}@keyframes phasePulse{0%{transform:scale(1.08);opacity:.75}to{transform:scale(1);opacity:1}}.role-card--reveal .role-card-label{animation:roleReveal .4s ease .1s both}.role-card--reveal .role-card-name{animation:roleReveal .5s ease .25s both}.role-card--reveal .role-card-desc{animation:roleReveal .4s ease .45s both}.role-card--reveal .btn{animation:roleReveal .4s ease .65s both}@keyframes roleReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.role-card.role-card--reveal{animation:cardIn .4s cubic-bezier(.34,1.56,.64,1) both}.role-card.role-card--reveal .role-card-name{text-shadow:0 0 30px currentColor}.host-line{transition:opacity .2s ease}.host-line--new{animation:hostLineNew .5s ease both}@keyframes hostLineNew{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.game .host-speaker{transition:box-shadow var(--phase-duration) var(--phase-ease),border-color var(--phase-duration) var(--phase-ease)}.game--night .host-speaker{border-color:#5a6ec82e}.game--day .host-speaker{border-color:#e6b45026}.game--voting .host-speaker{border-color:#e9644633;box-shadow:0 4px 24px #00000026}.you-dead{background:#dc4a5c1f;border:var(--border-subtle);border-color:#dc4a5c59;border-radius:var(--radius);padding:14px;text-align:center;color:var(--accent);font-weight:600}.you-dead--pulse{animation:youDeadPulse 2s ease-in-out infinite}@keyframes youDeadPulse{0%,to{opacity:1}50%{opacity:.92}}.intro-cutscene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;cursor:pointer}.intro-cutscene-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg);opacity:.97}.intro-cutscene--enter .intro-cutscene-content{animation:introCutsceneIn .6s ease both}.intro-cutscene-content{position:relative;text-align:center;max-width:320px}.intro-cutscene-title{font-size:1.5rem;font-weight:700;margin:0 0 8px;color:#e8e0f0;letter-spacing:-.02em}.intro-cutscene-subtitle{font-size:1rem;color:var(--muted);margin:0 0 24px}.intro-cutscene-progress{height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden;margin-bottom:20px;max-width:200px;margin-left:auto;margin-right:auto}.intro-cutscene-progress:after{content:"";display:block;height:100%;width:100%;background:var(--accent);border-radius:2px;animation:introCutsceneProgress 4s linear forwards}@keyframes introCutsceneProgress{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes introCutsceneIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.intro-cutscene-skip{cursor:pointer}.night-choice,.vote-block{background:var(--surface);border-radius:var(--radius);padding:12px 14px;border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff08;transition:border-color var(--phase-duration) var(--phase-ease),box-shadow var(--phase-duration) var(--phase-ease)}@media (max-width: 480px){.night-choice,.vote-block{padding:var(--space-sm) var(--space-md)}}.night-choice--enter,.vote-block--enter{animation:blockEnter .4s cubic-bezier(.34,1.2,.64,1) both}.game--day .vote-block{border-color:#e6b45033;box-shadow:0 4px 24px #00000026,0 0 40px #c8a03c0f}.game--voting .vote-block{border-color:#e9644659;box-shadow:0 6px 32px #0003,0 0 36px #e945601f}.discussion-panel{background:var(--surface);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff08;pointer-events:auto}.game--day .discussion-panel{border-color:#e6b4502e}.discussion-panel-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.discussion-panel-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.discussion-panel-total{font-size:.85rem;font-weight:700;color:#e8b84a;font-variant-numeric:tabular-nums}.discussion-now{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;margin-bottom:8px;background:#00000040;border-radius:10px;border:1px solid rgba(255,200,120,.15)}.discussion-now--you{border-color:#e6b45073;background:#e6b4501a;box-shadow:0 0 0 1px #e6b45033}.discussion-now--idle{color:var(--muted);font-size:.85rem}.discussion-now-name{font-size:1rem;font-weight:700;color:var(--text)}.discussion-now-time{font-size:.95rem;font-weight:700;color:#e8b84a;font-variant-numeric:tabular-nums;min-width:2.5ch}.discussion-actions{display:flex;flex-direction:column;gap:6px}.discussion-reactions{display:flex;flex-wrap:wrap;gap:4px}.discussion-reaction-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1.1rem;border-radius:8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);cursor:pointer;transition:background .15s ease,transform .15s ease}.discussion-reaction-btn:hover{background:#ffffff1f;transform:scale(1.05)}.discussion-feed{display:flex;flex-wrap:wrap;gap:4px;padding:4px 0 0;border-top:1px solid rgba(255,255,255,.06);font-size:.75rem;color:var(--muted);max-height:48px;overflow-y:auto}.discussion-feed-item{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;background:#0003;border-radius:6px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.discussion-feed-item--words{max-width:100%;white-space:normal;color:var(--text)}.discussion-feed-emoji{flex-shrink:0}.reactions-row{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.reaction-btn{width:auto;min-width:36px;padding:6px 8px;font-size:1.05rem;border-radius:10px;background:#ffffff14;border:1px solid rgba(255,255,255,.15)}.reaction-btn:hover{background:#ffffff24}.reactions-feed{margin-top:4px;padding:6px 8px;background:#0003;border-radius:8px;font-size:.8rem;max-height:72px;overflow-y:auto}.reaction-item{margin:0 0 4px;line-height:1.3}.reaction-item:last-child{margin-bottom:0}.reaction-item.last-words{color:var(--text)}.reaction-emoji{margin-right:4px}.last-words-block{position:relative;z-index:10;background:var(--surface);border:2px solid rgba(233,120,80,.4);border-radius:var(--radius);padding:20px;margin:12px 0;box-shadow:0 0 24px #0000004d;text-align:center}.last-words-title{margin:0 0 8px;font-size:1rem;color:var(--muted)}.last-words-timer{margin:0;font-size:2.5rem;font-weight:700;color:#e8b84a;letter-spacing:.05em}.vote-block--voting .player-list{margin-top:4px}@keyframes blockEnter{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.night-choice--mafia{border-color:#e9456040;box-shadow:0 0 24px #e9456014}.night-choice--doctor{border-color:#0f9d5840;box-shadow:0 0 24px #0f9d5814}.night-choice--detective{border-color:#4285f440;box-shadow:0 0 24px #4285f414}.night-choice--veteran{border-color:#b48c5059;box-shadow:0 0 24px #b48c501a}.night-choice--veteran .choice-btn:hover{border-color:#b48c5080;background:#b48c501f}.night-wait{background:var(--surface);border-radius:var(--radius);padding:20px 16px;border:2px solid rgba(90,110,200,.25);text-align:center;box-shadow:0 0 36px #1e285059;transition:border-color var(--phase-duration) var(--phase-ease),box-shadow .4s ease}.game--night .night-wait{border-color:#6478dc59;box-shadow:0 0 40px #32468c40}.night-wait--enter{animation:blockEnter .4s cubic-bezier(.34,1.2,.64,1) both}.night-wait-text{margin:0 0 8px;font-size:1.1rem;font-weight:600;color:var(--text)}.night-wait-hint{margin:0;font-size:.9rem;color:var(--muted);line-height:1.4}.night-choice-title,.vote-block-title{margin:0 0 4px;font-size:1rem;font-weight:700;letter-spacing:-.02em}.night-choice-hint,.vote-block-hint{margin:0 0 10px;font-size:.85rem;color:var(--muted);line-height:1.35}.choice-confirm{display:flex;align-items:center;gap:10px;margin:0 0 16px;padding:12px 14px;background:#0f9d5826;border:1px solid rgba(15,157,88,.35);border-radius:12px;font-size:1rem;color:var(--success)}.choice-confirm-icon{font-size:1.25rem;font-weight:700}.choice-btn--chosen{border-color:var(--success)!important;background:#0f9d5833!important;opacity:1}.choice-btn:disabled{cursor:default;opacity:.85}.player-list{display:flex;flex-direction:column;gap:8px}.player-list--choice{gap:10px}.choice-btn{display:flex;align-items:center;justify-content:center;min-height:52px;padding:14px 20px;font-size:1.05rem;font-weight:600;text-align:center;border-radius:14px;border:2px solid rgba(255,255,255,.12);background:#ffffff0f;transition:background .2s ease,border-color .2s ease,transform .15s ease,box-shadow .2s ease}.choice-btn:hover{background:#ffffff1f;border-color:#fff3;transform:translateY(-2px);box-shadow:0 6px 20px #00000040}.choice-btn:active{transform:scale(.98)}.choice-btn-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.night-choice--mafia .choice-btn:hover{border-color:#e9456066;background:#e945601f}.night-choice--doctor .choice-btn:hover{border-color:#0f9d5866;background:#0f9d581f}.night-choice--detective .choice-btn:hover{border-color:#4285f466;background:#4285f41f}.vote-block .choice-btn:hover{border-color:#ffc86459;background:#ffc86414}.player-list--stagger .night-choice-btn,.player-list--stagger .player-list-btn{animation:staggerIn .35s ease both}@keyframes staggerIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.btn-cta{animation:ctaAppear .5s ease both;font-weight:700;position:relative;border:2px solid rgba(255,200,120,.3);box-shadow:0 4px 20px #0003}@keyframes ctaAppear{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.btn-cta:hover{box-shadow:0 6px 28px #e9456066;border-color:#e9456080;transform:translateY(-2px)}.detective-result{background:#0f9d5833;border-radius:var(--radius);padding:12px;margin:0;font-weight:600;color:var(--success);border:1px solid rgba(15,157,88,.3)}.detective-result--enter{animation:blockEnter .4s ease both}.players-alive{margin-top:auto;padding-top:16px;border-top:2px solid rgba(255,255,255,.08);transition:border-color var(--phase-duration) var(--phase-ease)}.game--night .players-alive{border-top-color:#5a6ec833}.game--day .players-alive{border-top-color:#e6b45026}.game--voting .players-alive{border-top-color:#e9644633}.game--roles .players-alive{border-top-color:#8c64c82e}.players-alive h4{margin:0 0 8px;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.players-alive h4:first-of-type{color:#0f9d58e6}.players-alive ul{list-style:none;padding:0;margin:0 0 12px}.players-list-inner li{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05);transition:opacity .3s ease}.player-alive{opacity:1}.player-dead{opacity:.5;text-decoration:line-through;color:var(--muted);animation:playerDead .5s ease both}@keyframes playerDead{0%{opacity:1;text-decoration:none;color:inherit}to{opacity:.5;text-decoration:line-through;color:var(--muted)}}.game-table-wrap{margin-top:auto;padding:16px 0;width:100%;max-width:min(92vw,420px);margin-left:auto;margin-right:auto;aspect-ratio:1;max-height:min(92vw,420px);min-height:0;transition:filter .4s ease}.game--with-discussion .game-table-wrap{margin-top:0;padding-top:10px;padding-bottom:16px}.game-table-wrap--night .game-table-center{border-color:#5a6ec840;color:#b4befff2}.game-table-wrap--day .game-table-center{border-color:#c8a05040;color:#ffebb4f2}.game-table-wrap--voting .game-table-center{border-color:#dc64504d;color:#ffc8b4f2}.game-table-wrap--ended .game-table-center{border-color:#ffffff14;color:var(--muted)}.game-table-wrap--roles .game-table-center,.game-table-wrap--roles_done .game-table-center{border-color:#a078dc40;color:#d2befff2}.game-table{position:relative;width:100%;height:100%;border-radius:50%;background:radial-gradient(ellipse 120% 120% at 50% 30%,rgba(35,48,70,.5) 0%,transparent 55%),radial-gradient(ellipse 80% 80% at 50% 50%,#1a2332,#0f1623 45%,#080c12);box-shadow:inset 0 0 0 1px #ffffff0f,inset 0 4px 30px #0000008c,inset 0 -3px 18px #ffffff08,0 14px 50px #00000080,0 0 0 1px #0003}.game-table-rim{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:6px solid transparent;border-top-color:#dcd2be2e;border-right-color:#50463c80;border-bottom-color:#28231e99;border-left-color:#b4aa961f;box-shadow:inset 0 0 0 1px #ffffff14,inset 0 2px 8px #ffffff0a,0 2px 4px #0000004d;pointer-events:none}.game-table-surface{position:absolute;top:14%;right:14%;bottom:14%;left:14%;border-radius:50%;background:radial-gradient(ellipse 90% 90% at 50% 45%,#1c2838,#131c28 40%,#0a0f18);border:1px solid rgba(255,255,255,.05);box-shadow:inset 0 3px 25px #0006,inset 0 0 80px #0000001f,inset 0 1px #ffffff0a;pointer-events:none}.game-table-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:28%;min-width:56px;aspect-ratio:1;border-radius:50%;border:var(--border-subtle);background:radial-gradient(ellipse 100% 100% at 50% 40%,#00000073,#000000a6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;box-shadow:inset 0 2px 16px #0006,inset 0 1px #ffffff0d,0 4px 20px #0000004d;pointer-events:none;transition:border-color .4s ease,color .4s ease,box-shadow .4s ease}.game-table-wrap--night .game-table-center{box-shadow:inset 0 2px 16px #00000080,inset 0 0 0 1px #5a6ec826,0 0 24px #5a6ec826}.game-table-wrap--day .game-table-center{box-shadow:inset 0 2px 16px #00000080,inset 0 0 0 1px #c8a05033,0 0 24px #c8a0501f}.game-table-wrap--voting .game-table-center{box-shadow:inset 0 2px 16px #00000080,inset 0 0 0 1px #dc645040,0 0 24px #dc64502e}.game-table-center-phase{font-size:clamp(.6rem,2vw,.75rem);font-weight:700;text-transform:uppercase;letter-spacing:.12em;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.4)}.game-table-center-round{font-size:clamp(.85rem,2.8vw,1.1rem);font-weight:700;opacity:.95;text-shadow:0 1px 3px rgba(0,0,0,.4)}.game-table-seats{position:absolute;top:0;right:0;bottom:0;left:0;list-style:none;margin:0;padding:0}.game-table-seat{position:absolute;left:50%;top:50%;width:clamp(54px,19vw,76px);transform-origin:center center;transition:filter .35s ease,opacity .35s ease}.game-table-seat:focus{outline:none}.game-table-seat:focus-visible .game-table-seat-inner{box-shadow:0 0 0 2px #64b4ff80,0 8px 24px #00000073}.game-table-seat:hover .game-table-seat-inner{box-shadow:0 8px 24px #00000073,0 0 0 1px #ffffff14}.game-table-seat-inner{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;background:var(--surface);border-radius:var(--radius);border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff0a,0 6px 20px #00000073,0 2px 6px #00000040,inset 0 1px #ffffff14;min-width:100%;position:relative;transition:box-shadow .2s ease,border-color .2s ease}.game-table-seat-num{position:absolute;top:4px;right:6px;font-size:.6rem;font-weight:700;color:#ffffff40;line-height:1}.game-table-seat-avatar{font-size:clamp(1.75rem,6vw,2.35rem);line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}.game-table-seat-name{font-size:clamp(.65rem,2.2vw,.8rem);font-weight:600;color:var(--text);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;letter-spacing:.02em}.game-table-seat-gone{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#501419d9,#280a0fe6);border-radius:14px;pointer-events:none}.game-table-seat-gone-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:800;color:#ffdcdcf2;text-shadow:0 0 12px rgba(233,69,96,.5);border:2px solid rgba(233,100,100,.4);border-radius:50%}.game-table-seat--dead .game-table-seat-inner{filter:grayscale(.85);opacity:.9;border-color:#b4323299;box-shadow:0 0 16px #c8282866,inset 0 0 20px #78141440}.game-table-seat--excluded .game-table-seat-inner{border-color:#e964468c;box-shadow:0 0 0 2px #e9456033,0 4px 20px #e9323226}.game-table-seat--selectable{cursor:pointer}.game-table-seat--selectable:hover .game-table-seat-inner{border-color:#ffc86480;box-shadow:0 0 20px #ffb4504d}.game-table-seat--chosen .game-table-seat-inner{border-color:#ffc850b3;box-shadow:0 0 24px #ffb43c66,inset 0 0 12px #ffc86414}.game-table-seat-check{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-4px);white-space:nowrap;display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:10px;font-size:.7rem;font-weight:700;pointer-events:none;animation:checkBadge .4s ease-out;z-index:2}.game-table-seat-check-icon{font-size:1rem;line-height:1}.game-table-seat-check-text{max-width:120px;overflow:hidden;text-overflow:ellipsis}.game-table-seat-check--mafia{background:linear-gradient(135deg,#b42832f2,#78141ef2);color:#ffd0d0;border:1px solid rgba(255,150,150,.4);box-shadow:0 4px 16px #c8323c66}.game-table-seat-check--civilian{background:linear-gradient(135deg,#1e5032f2,#143c28f2);color:#c8ffd8;border:1px solid rgba(120,220,150,.4);box-shadow:0 4px 16px #2878504d}@keyframes checkBadge{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(-4px)}}.game-table-seat-votes{position:absolute;left:50%;top:50%;transform:translate(-50%,-60%);display:flex;flex-direction:column;align-items:center;gap:0;padding:4px 8px;min-width:2.5em;border-radius:12px;background:linear-gradient(180deg,#b43c32f2,#78231ef2);color:#fff;font-weight:700;pointer-events:none;z-index:2;box-shadow:0 2px 12px #0006,0 0 0 1px #ffc8c833;animation:voteBadgeIn .35s ease-out both}.game-table-seat-votes-num{font-size:1.1em;line-height:1;letter-spacing:.02em}.game-table-seat-votes-label{font-size:.55rem;line-height:1.2;text-transform:uppercase;letter-spacing:.04em;opacity:.95}@keyframes voteBadgeIn{0%{opacity:0;transform:translate(-50%,-60%) scale(.85)}to{opacity:1;transform:translate(-50%,-60%) scale(1)}}.game-table-seat--speaking .game-table-seat-inner{border-color:#e6b45080;box-shadow:0 0 20px #e6b45040,inset 0 0 20px #e6b4500d;animation:seatSpeaking 1.5s ease-in-out infinite}@keyframes seatSpeaking{0%,to{box-shadow:0 0 20px #e6b45040,inset 0 0 20px #e6b4500d}50%{box-shadow:0 0 28px #e6b45059,inset 0 0 24px #e6b45014}}.game-table-seat--you .game-table-seat-inner{border-color:#64b4ff73;box-shadow:0 0 16px #64b4ff33,inset 0 0 12px #64b4ff0a}.lobby-avatar-pick{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.06)}.lobby-avatar-pick-label{display:block;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:12px}.lobby-avatar-pick-label:after{content:"";display:block;width:24px;height:2px;background:linear-gradient(90deg,var(--accent),transparent);margin-top:6px;border-radius:1px}.lobby-avatar-grid{display:flex;flex-wrap:wrap;gap:10px}.lobby-avatar-btn{width:52px;height:52px;padding:0;font-size:1.85rem;border-radius:14px;border:2px solid rgba(255,255,255,.1);background:linear-gradient(180deg,#ffffff14,#ffffff05);transition:border-color .2s,background .2s,transform .2s ease,box-shadow .2s}.lobby-avatar-btn:hover{border-color:#ffffff38;background:linear-gradient(180deg,#ffffff1f,#ffffff0a);transform:scale(1.08);box-shadow:0 4px 16px #00000040}.lobby-avatar-btn--chosen{border-color:var(--accent);background:linear-gradient(180deg,#e9456033,#e9456014);box-shadow:0 0 0 1px #e9456033,0 4px 16px #e9456026}.players--cards h3{margin-bottom:12px}.players--cards .players-table-preview{display:flex;flex-wrap:wrap;gap:var(--space-md);list-style:none;padding:0;margin:0;max-height:220px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.player-card-preview{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--surface);border-radius:var(--radius);border:var(--border-subtle);box-shadow:var(--shadow-soft),inset 0 1px #ffffff08;transition:border-color .25s,box-shadow .25s,transform .2s ease}.player-card-preview:hover{border-color:#ffffff1a;box-shadow:0 4px 20px #00000038}.player-card-preview--you{border-color:#64b4ff59;box-shadow:0 0 0 1px #64b4ff26,0 4px 20px #0003}.player-card-avatar{font-size:1.6rem;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.2))}.player-card-name{font-size:.95rem;font-weight:600;color:var(--text);letter-spacing:.02em}:root{--bg: #16182a;--surface: #1e2138;--surface-elevated: #252a42;--accent: #dc4a5c;--accent-dim: #b83d4d;--text: #e8e8ec;--muted: #8e92a8;--success: #0f9d58;--danger: #dc4a5c;--radius: 12px;--shadow-soft: 0 4px 24px rgba(0, 0, 0, .2);--shadow-strong: 0 8px 32px rgba(0, 0, 0, .35);--border-subtle: 1px solid rgba(255, 255, 255, .06);--font: "Manrope", -apple-system, sans-serif;--text-h1: 2rem;--text-h2: 1.35rem;--text-h3: 1.1rem;--text-body: 1rem;--text-caption: .9rem;--text-small: .8rem;--space-unit: 4px;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--phase-duration: 1s;--phase-ease: cubic-bezier(.4, 0, .15, 1)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;font-family:var(--font);font-size:var(--text-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}html{overflow-x:hidden}body{min-width:0}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}button{font-family:var(--font);cursor:pointer;border:none;border-radius:var(--radius);font-weight:600;transition:transform .1s,opacity .2s}button:active{transform:scale(.98)}button:disabled{opacity:.5;cursor:not-allowed}input{font-family:var(--font);border-radius:var(--radius);border:var(--border-subtle);background:var(--surface);color:var(--text);padding:14px 18px;font-size:1rem;box-shadow:inset 0 1px #ffffff08}input::placeholder{color:var(--muted)}input:focus{outline:none;border-color:var(--accent)}
