:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f7e8e8;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--panel:#0d0506;--panel-strong:#17080a;--ink:#f7e8e8;--muted:#b58a8a;--line:#3a1014;--blue:#8f121f;--blue-soft:#26080c;--green:#c33a45;--green-soft:#25080b;--rose:#b91524;--rose-soft:#2d090e;--amber:#d14b55;--amber-soft:#2a0a0e;--violet:#d65a63;--shadow:none;background:#050202;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:linear-gradient(135deg,#f7f9fc 0%,#eef7f0 48%,#fff8ea 100%);min-width:320px}button,input{font:inherit}button{border:1px solid var(--line);min-height:2.5rem;color:var(--ink);background:var(--panel-strong);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.45rem;padding:0 .9rem;transition:transform .15s,border-color .15s,background .15s,color .15s;display:inline-flex}button:hover:not(:disabled){border-color:#b8c3d4;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #2474e847}input{border:1px solid var(--line);width:100%;min-height:2.7rem;color:var(--ink);background:#fff;border-radius:8px;padding:0 .85rem}h1,h2,p{margin:0}h1{letter-spacing:0;font-size:3.2rem;line-height:.95}h2{letter-spacing:0;font-size:1.2rem;line-height:1.2}.home-shell,.loading-shell,.room-shell{min-height:100vh}.home-shell,.loading-shell{place-items:center;padding:1.2rem;display:grid}.home-panel,.solo-panel,.picker-layout,.lobby-layout,.game-over-layout{background:var(--panel);width:min(100%,960px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #dde3ede0;border-radius:8px}.home-panel{grid-template-columns:1.1fr .9fr;align-items:center;gap:2rem;padding:clamp(1.1rem,4vw,3rem);display:grid}.brand-lockup,.identity-cluster,.header-actions,.top-actions,.round-status,.picker-topline,.lobby-header,.game-over-header,.lobby-footer,.game-over-actions,.share-strip,.join-row,.vote-header{align-items:center;display:flex}.brand-lockup{gap:1rem}.brand-mark{color:#fff;background:linear-gradient(135deg,#2474e8,#14a273 58%,#f1a229);border-radius:8px;flex:0 0 4.5rem;place-items:center;width:4.5rem;height:4.5rem;display:grid}.brand-mark svg{width:2.3rem;height:2.3rem}.eyebrow{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin-bottom:.35rem;font-size:.74rem;font-weight:800}.home-actions{gap:1rem;display:grid}.join-form{gap:.5rem;display:grid}.join-form label{color:var(--muted);font-size:.85rem;font-weight:700}.join-row{gap:.65rem}.primary-action{color:#fff;background:#2474e8;border-color:#0000}.primary-action:hover:not(:disabled){background:#1664d4;border-color:#0000}.form-error{color:var(--rose);font-weight:700}.loading-shell{color:var(--muted);gap:1rem}.loader{border:4px solid #dce4ef;border-top-color:var(--blue);border-radius:50%;width:2.8rem;height:2.8rem;animation:.9s linear infinite spin}.room-shell{padding:1rem}.solo-panel,.picker-layout,.lobby-layout,.game-over-layout{margin:0 auto;padding:clamp(1rem,3vw,2rem)}.solo-panel{gap:1rem;max-width:540px;display:grid}.picker-layout{gap:1.4rem;max-width:740px;display:grid}.picker-topline,.lobby-header,.game-over-header,.lobby-footer,.share-strip,.game-over-actions{justify-content:space-between;gap:1rem}.name-grid{grid-template-columns:repeat(auto-fit,minmax(10.8rem,1fr));gap:.65rem;display:grid}.name-option{background:#fff;justify-content:space-between;min-height:3.4rem;padding:0 .85rem}.name-option span{color:#334155;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:850;overflow:hidden}.name-option.selected{border-color:var(--blue);color:#155bc2;background:var(--blue-soft)}.empty-state{border:1px dashed var(--line);min-height:6rem;color:var(--muted);background:#f8fafc;border-radius:8px;place-items:center;font-weight:800;display:grid}.picker-actions{flex-wrap:wrap;justify-content:flex-end;gap:.7rem;display:flex}.connection-badge,.role-pill,.status-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;min-height:1.7rem;padding:0 .62rem;font-size:.78rem;font-weight:800;display:inline-flex}.connection-badge{color:var(--green);background:var(--green-soft)}.connection-badge.connecting,.connection-badge.offline{color:var(--amber);background:var(--amber-soft)}.role-pill{color:#3d4656;background:#eef2f7;margin-top:.2rem}.role-guardian{color:#0f766e;background:var(--green-soft)}.role-jester{color:#6842c2;background:#eee8ff}.role-villager{color:#4a5568;background:#eef2f7}.lobby-layout{gap:1.1rem;display:grid}.share-strip{border:1px solid var(--line);background:#f8fafc;border-radius:8px;min-width:0;padding:.55rem}.share-strip span{color:#334155;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88rem;overflow:hidden}.player-grid,.reveal-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.75rem;display:grid}.player-tile,.reveal-card{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:.75rem;min-height:5.1rem;padding:.85rem;display:flex}.player-tile.offline{opacity:.62}.player-tile strong,.reveal-card strong{align-items:center;gap:.35rem;display:inline-flex}.player-tile small,.reveal-card small,.muted{color:var(--muted)}.game-layout{width:min(100%,1260px);height:calc(100vh - 2rem);box-shadow:var(--shadow);background:#ffffffdb;border:1px solid #dde3ede0;border-radius:8px;grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(15rem,19rem) minmax(0,1fr);margin:0 auto;display:grid;overflow:hidden}.top-bar{border-bottom:1px solid var(--line);background:#ffffffe0;grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1rem;min-height:4.6rem;padding:.7rem 1rem;display:grid}.identity-cluster,.top-actions,.round-status{gap:.7rem}.identity-cluster{min-width:0}.identity-cluster>div{min-width:0;display:grid}.identity-cluster strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.round-status{color:#334155;justify-content:center;font-weight:800}.round-status span:not(.countdown){border-left:1px solid var(--line);padding-left:.7rem}.top-actions{justify-content:flex-end}.icon-button,.mini-icon{flex:none;width:2.5rem;padding:0}.mini-icon{width:2rem;min-height:2rem}.mini-icon.danger{color:var(--rose)}.sidebar{border-right:1px solid var(--line);background:#f7f9fc;grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.channel-list,.roster{align-content:start;gap:.35rem;min-height:0;padding:.75rem;display:grid}.roster{border-top:1px solid var(--line);overflow:auto}.channel-row{background:0 0;border-color:#0000;justify-content:flex-start;width:100%;min-height:2.45rem;padding:0 .65rem}.channel-row.active{color:#155bc2;background:#e8f1ff}.channel-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.unread-dot{color:var(--rose);fill:currentColor;margin-left:auto}.roster-row{border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;min-height:2.8rem;padding:.35rem;display:grid}.roster-row.dead{color:var(--muted)}.roster-row.dead .roster-copy>span{text-decoration:line-through}.roster-copy{min-width:0;display:grid}.roster-copy>span,.roster-copy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.roster-copy>span{align-items:center;gap:.28rem;font-weight:800;display:inline-flex}.roster-copy small{color:var(--muted);font-size:.75rem}.roster-actions{gap:.25rem;display:flex}.message-panel{background:#fff;grid-template-rows:auto minmax(0,auto) minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative}.phase-banner{border-bottom:1px solid var(--line);align-items:center;gap:.65rem;min-height:2.5rem;padding:.55rem 1rem;font-size:.9rem;display:flex}.phase-banner strong{white-space:nowrap}.phase-banner span{color:#4b5563;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tone-danger{color:#9f1239;background:var(--rose-soft)}.tone-warning{color:#8a5200;background:var(--amber-soft)}.tone-success{color:#08704e;background:var(--green-soft)}.tone-neutral{color:#334155;background:#eef2f7}.thread-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;min-height:4.2rem;padding:.8rem 1rem;display:flex}.status-chip{color:var(--green);background:var(--green-soft)}.messages{flex-direction:column;gap:.55rem;min-height:0;padding:1rem;display:flex;overflow:auto}.message-bubble{background:#eef2f7;border-radius:18px 18px 18px 4px;width:fit-content;max-width:min(74%,42rem);padding:.68rem .82rem}.message-bubble.self{color:#fff;background:var(--blue);border-radius:18px 18px 4px;align-self:flex-end}.message-meta{align-items:baseline;gap:.55rem;margin-bottom:.22rem;font-size:.72rem;display:flex}.message-meta time{opacity:.72}.message-bubble p{overflow-wrap:anywhere;line-height:1.35}.system-message{max-width:min(90%,44rem);color:var(--muted);text-align:center;background:#f4f6fa;border-radius:999px;align-self:center;padding:.32rem .7rem;font-size:.8rem;font-weight:700}.composer{border-top:1px solid var(--line);background:#f8fafc;grid-template-columns:minmax(0,1fr) auto;gap:.6rem;padding:.75rem;display:grid}.send-button{color:#fff;background:var(--blue)}.vote-overlay{align-content:center;gap:1rem;min-height:0;padding:clamp(1rem,4vw,2rem);display:grid}.vote-overlay.spectator{color:var(--muted);text-align:center;place-items:center}.vote-header{justify-content:space-between}.vote-header>span{color:var(--muted);font-weight:800}.vote-list{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.7rem;display:grid}.vote-option{background:#fff;justify-content:flex-start;min-height:4rem}.vote-option.selected{border-color:var(--blue);color:#155bc2;background:var(--blue-soft)}.avatar{color:#fff;background:linear-gradient(135deg,#2474e8,#14a273);border-radius:50%;flex:none;place-items:center;width:2.8rem;height:2.8rem;font-size:.86rem;font-weight:900;display:inline-grid}.avatar.compact{width:2rem;height:2rem;font-size:.68rem}.game-over-layout{gap:1rem;display:grid}.game-over-header p:last-child{max-width:48rem;color:var(--muted);line-height:1.45}.reveal-card>div{gap:.2rem;display:grid}.toast{z-index:20;color:#9f1239;max-width:min(92vw,24rem);box-shadow:var(--shadow);background:#fff4f6;border:1px solid #ffc4d1;border-radius:8px;align-items:center;gap:.7rem;padding:.65rem;display:flex;position:fixed;top:1rem;right:1rem}.toast button{width:2rem;min-height:2rem;padding:0}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=860px){.home-panel{grid-template-columns:1fr}.game-layout{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:1fr;height:auto;min-height:calc(100vh - 2rem)}.top-bar{grid-template-columns:1fr;align-items:start}.round-status,.top-actions{flex-wrap:wrap;justify-content:flex-start}.sidebar{border-right:0;border-bottom:1px solid var(--line);grid-row:2;grid-template-rows:auto auto}.channel-list{display:flex;overflow-x:auto}.channel-row{flex:none;width:auto}.roster{display:flex;overflow-x:auto}.roster-row{min-width:13rem}.message-panel{min-height:34rem}.message-bubble{max-width:88%}}@media (width<=560px){h1{font-size:2.4rem}.room-shell,.home-shell{padding:.5rem}.home-panel,.solo-panel,.picker-layout,.lobby-layout,.game-over-layout,.game-layout{border-radius:0}.join-row,.lobby-footer,.game-over-actions,.share-strip,.picker-topline,.lobby-header,.game-over-header{flex-direction:column;align-items:stretch}.share-strip span{white-space:normal;overflow-wrap:anywhere}.round-status span:not(.countdown){border-left:0;padding-left:0}.phase-banner{flex-direction:column;align-items:flex-start;gap:.15rem}.phase-banner span{white-space:normal}}*,:before,:after{border-radius:0!important}html,body,#root{width:100%;height:100%}body{color:var(--ink);background:#050202}button{color:var(--ink);border-color:var(--line);background:var(--panel-strong);text-transform:none}button:hover:not(:disabled){background:#23090d;border-color:#7c1821;transform:none}button:focus-visible,input:focus-visible{outline-color:#b915248c}input{color:var(--ink);border-color:var(--line);background:#090304}.home-shell,.loading-shell,.room-shell{background:#050202;width:100vw;min-height:100vh;padding:0}.home-panel,.solo-panel,.picker-layout,.lobby-layout,.game-over-layout{background:var(--panel);width:100%;max-width:none;min-height:100vh;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border:0;margin:0;overflow:auto}.home-panel{grid-template-columns:minmax(0,.95fr) minmax(18rem,.55fr)}.brand-mark,.avatar{color:#ffe7e7;background:#79111b}.primary-action,.send-button{color:#fff1f1;background:#8f121f;border-color:#a91624}.primary-action:hover:not(:disabled),.send-button:hover:not(:disabled){background:#ad1728;border-color:#d43b48}.loader{border-color:#27090d;border-top-color:var(--rose)}.name-option,.player-tile,.reveal-card,.vote-option{color:var(--ink);border-color:var(--line);background:#100507}.name-option span,.share-strip span,.round-status,.channel-row.active,.vote-option.selected{color:var(--ink)}.name-option.selected,.vote-option.selected,.channel-row.active{background:#2a0a0e;border-color:#a91624}.name-option.selected span{color:#ffe8e8}.empty-state,.share-strip,.sidebar,.composer{color:var(--muted);border-color:var(--line);background:#080304}.connection-badge,.connection-badge.connecting,.connection-badge.offline,.role-pill,.status-chip{color:#ffd5d5;border:1px solid var(--line);background:#2a0a0e}.role-mafia{color:#ff9da5;background:#3a0b11}.role-guardian,.role-jester,.role-villager{color:#f0b7b7;background:#1c070a}.game-layout{width:100vw;max-width:none;height:100vh;min-height:100vh;box-shadow:none;background:#050202;border:0;margin:0}.top-bar,.message-panel,.thread-header{color:var(--ink);border-color:var(--line);background:#0d0506}.round-status span:not(.countdown),.top-bar,.thread-header,.phase-banner,.roster,.sidebar,.composer{border-color:var(--line)}.channel-row{color:var(--muted)}.channel-row:hover:not(:disabled){color:var(--ink);background:#1d070a}.roster-row{background:0 0}.message-panel,.messages{background:#070202}.message-bubble{color:var(--ink);background:#1a080b}.message-bubble.self{color:#fff3f3;background:#8f121f}.system-message{color:#d9a4a4;border:1px solid var(--line);background:#130608}.tone-danger,.tone-warning,.tone-success,.tone-neutral{color:#ffd9d9;background:#25080c}.phase-banner span{color:#d9a4a4}.vote-header>span,.player-tile small,.reveal-card small,.muted,.roster-copy small,.game-over-header p:last-child{color:var(--muted)}.reveal-card.dead{background:#0a0304}.toast{color:#ffd9d9;box-shadow:none;background:#26080c;border-color:#8f121f}@media (width<=860px){.game-layout{height:100vh;min-height:100vh}}@media (width<=560px){.home-shell,.room-shell{padding:0}.home-panel{grid-template-columns:1fr}}@supports (height:100dvh){.home-shell,.loading-shell,.room-shell,.home-panel,.solo-panel,.picker-layout,.lobby-layout,.game-over-layout{min-height:100dvh}.game-layout{height:100dvh;min-height:100dvh}}@media (width<=760px){body{overflow:hidden}button,input{min-height:2.9rem}.home-panel,.picker-layout,.lobby-layout,.game-over-layout,.solo-panel{padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left))}.home-panel{grid-template-columns:1fr;align-content:center;gap:1.4rem}.brand-lockup{align-items:flex-start}.brand-mark{flex-basis:3.8rem;width:3.8rem;height:3.8rem}.brand-mark svg{width:2rem;height:2rem}h1{font-size:2.35rem;line-height:1}.join-row,.picker-actions,.lobby-footer,.game-over-actions{flex-direction:column;align-items:stretch}.join-row button,.picker-actions button,.lobby-footer button,.game-over-actions button,.primary-action{width:100%}.name-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;padding-bottom:.25rem;overflow:auto}.name-option{min-height:3.15rem;padding:0 .7rem}.name-option span{font-size:.95rem}.player-grid,.reveal-grid,.vote-list{grid-template-columns:1fr}.share-strip{flex-direction:column;align-items:stretch}.share-strip span{white-space:normal;overflow-wrap:anywhere}.game-layout{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:1fr;width:100vw;height:100vh;min-height:100vh;overflow:hidden}.top-bar{min-height:0;padding:max(.65rem, env(safe-area-inset-top)) max(.65rem, env(safe-area-inset-right)) .65rem max(.65rem, env(safe-area-inset-left));grid-template-columns:minmax(0,1fr) auto;gap:.65rem}.identity-cluster{grid-column:1}.identity-cluster .avatar{width:2.25rem;height:2.25rem;font-size:.76rem}.top-actions{grid-column:2;justify-content:flex-end;gap:.4rem}.top-actions .connection-badge{display:none}.round-status{white-space:nowrap;grid-column:1/-1;justify-content:flex-start;gap:.45rem;padding-bottom:.05rem;font-size:.86rem;overflow-x:auto}.round-status span:not(.countdown){border-left:1px solid var(--line);padding-left:.5rem}.sidebar{border-right:0;border-bottom:1px solid var(--line);grid-row:2;grid-template-rows:auto auto;min-height:0;max-height:12.2rem;overflow:hidden}.channel-list,.roster{scrollbar-width:thin;gap:.45rem;padding:.55rem;display:flex;overflow:auto hidden}.channel-list{border-bottom:1px solid var(--line)}.roster{border-top:0}.channel-row{flex:none;width:auto;min-width:7.4rem;min-height:2.75rem}.roster-row{border:1px solid var(--line);background:#0d0506;flex:0 0 11.2rem;grid-template-columns:auto minmax(0,1fr);min-height:3.25rem;padding:.45rem}.roster-actions{grid-column:1/-1;justify-content:stretch}.roster-actions .mini-icon{flex:auto;width:auto}.message-panel{grid-row:3;grid-template-rows:auto auto minmax(0,1fr) auto;height:100%;min-height:0;overflow:hidden}.phase-banner{min-height:0;padding:.55rem .7rem;font-size:.82rem}.thread-header{min-height:3.2rem;padding:.6rem .7rem}.thread-header h2{font-size:1rem}.messages{min-height:0;padding:.7rem}.message-bubble{max-width:92%;padding:.62rem .7rem}.composer{padding:.55rem max(.55rem, env(safe-area-inset-right)) max(.55rem, env(safe-area-inset-bottom)) max(.55rem, env(safe-area-inset-left));grid-template-columns:minmax(0,1fr) 2.9rem;gap:.45rem}.composer input{min-height:2.75rem}.send-button{width:2.9rem}.vote-overlay{padding:.8rem max(.8rem, env(safe-area-inset-right)) max(.8rem, env(safe-area-inset-bottom)) max(.8rem, env(safe-area-inset-left));align-content:start;overflow:auto}.vote-header{flex-direction:column;align-items:flex-start;gap:.35rem}.vote-option{min-height:3.4rem}.toast{top:max(.6rem, env(safe-area-inset-top));right:max(.6rem, env(safe-area-inset-right));left:max(.6rem, env(safe-area-inset-left));max-width:none}}@media (width<=390px){h1{font-size:2.05rem}.name-grid{grid-template-columns:1fr}.channel-row{min-width:6.6rem}.roster-row{flex-basis:10.4rem}.message-meta{flex-direction:column;gap:.1rem}}
