:root{--bg: #0f1020;--bg-2: #171933;--panel: #1e2145;--panel-2: #262a58;--line: #33386e;--text: #eceeffe0;--muted: #9aa0d0;--accent: #8b7cf6;--accent-2: #b3a6ff;--danger: #ef5a6f;--danger-2: #ff7a8c;--good: #4fd1a0;--moon: #ffe9a8;--wolf: #ef5a6f;--village: #4fd1a0;--radius: 16px;--tap: 52px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);overscroll-behavior:none}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(120% 80% at 50% -10%,#23264d 0%,var(--bg) 60%)}#root{display:flex;justify-content:center}.app{width:100%;max-width:560px;min-height:100dvh;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));gap:16px}h1,h2,h3{margin:0 0 4px;line-height:1.15}h1{font-size:2rem;letter-spacing:-.5px}.title{display:flex;align-items:center;gap:10px}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}.stack{display:flex;flex-direction:column;gap:12px}.stack.loose{gap:20px}.grow{flex:1}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.card.tight{padding:14px}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:12px;min-height:var(--tap);padding:0 18px;cursor:pointer;transition:transform .05s ease,filter .1s ease}button:active{transform:scale(.98)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:linear-gradient(180deg,var(--accent-2),var(--accent));border-color:transparent;color:#16112e;font-weight:700}button.danger{background:var(--danger);border-color:transparent;color:#2a0b10;font-weight:700}button.ghost{background:transparent}button.small{min-height:38px;padding:0 14px;font-size:.88rem;border-radius:10px}button.full{width:100%}button.lg{min-height:60px;font-size:1.1rem}.btn-row{display:flex;gap:10px}.btn-row>button{flex:1}input,select{font:inherit;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:12px;min-height:var(--tap);padding:0 14px;width:100%}input.code{text-transform:uppercase;letter-spacing:8px;font-size:1.6rem;text-align:center;font-weight:700}label.field{display:flex;flex-direction:column;gap:6px}.players{display:flex;flex-direction:column;gap:8px}.chip{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.chip .avatar{font-size:1.5rem;width:34px;text-align:center}.chip .name{font-weight:600}.chip.dead{opacity:.45}.chip.dead .name{text-decoration:line-through}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.dot.on{background:var(--good)}.targets{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.target{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:12px 8px;border-radius:14px;font-weight:600;background:var(--panel);border:2px solid var(--line)}.target.selected{border-color:var(--accent-2);background:var(--panel-2)}.rolecard{text-align:center;padding:28px 20px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel))}.rolecard .emoji{font-size:4.5rem;line-height:1}.rolecard .rname{font-size:1.8rem;font-weight:800;margin-top:8px}.rolecard .team{font-size:.8rem;letter-spacing:2px;text-transform:uppercase;margin-top:4px}.team.village{color:var(--village)}.team.werewolf{color:var(--wolf)}.rolecard .blurb{color:var(--muted);margin-top:12px}.log{display:flex;flex-direction:column;gap:6px}.log .entry{font-size:.9rem;color:var(--muted);padding:6px 10px;background:var(--bg-2);border-radius:8px}.log .entry.big{color:var(--text);font-weight:600}.phase-banner{text-align:center;padding:12px 0 4px;display:flex;flex-direction:column;align-items:center;gap:6px}.phase-banner .big{font-size:2.6rem;line-height:1}.phase-banner p{margin:0;max-width:34ch;line-height:1.45}.night .phase-banner .big{color:var(--accent-2)}.handoff{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:24px;background:radial-gradient(120% 80% at 50% 30%,#23264d 0%,var(--bg) 70%)}.handoff .to{font-size:2.2rem;font-weight:800}.handoff .sub{color:var(--muted);max-width:320px}.spacer{flex:1}.divider{height:1px;background:var(--line);margin:4px 0}.pill{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--panel-2);font-size:.8rem}.err{color:var(--danger-2);font-size:.9rem}.count{font-variant-numeric:tabular-nums}.bar{height:8px;border-radius:999px;background:var(--bg-2);overflow:hidden}.bar .fill{height:100%;border-radius:999px;min-width:2px;transition:width .3s ease}.chat{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow-y:auto}.chat .said{font-size:.9rem;padding:6px 10px;background:var(--bg-2);border-radius:8px;overflow-wrap:anywhere}.chat .said b{color:var(--accent-2)}.group-label{font-weight:700;letter-spacing:.5px;margin:4px 0 6px}.choices{display:flex;flex-wrap:wrap;gap:6px}.choice{min-height:40px;padding:0 12px;border-radius:999px;background:var(--panel);font-size:.92rem}.choice.selected{background:var(--panel-2);border-color:var(--accent-2);color:var(--accent-2);font-weight:700}.choice.ruled-out{text-decoration:line-through;color:var(--muted)}.tabs{display:flex;gap:6px;position:sticky;top:0;z-index:5;padding:8px 0;background:var(--bg)}.tabs>button{flex:1;min-height:42px;font-size:.95rem}.tabs>button.on{background:var(--panel-2);border-color:var(--accent-2);color:var(--accent-2);font-weight:700}.clue{font-size:.95rem;padding:10px 12px;background:var(--bg-2);border-radius:10px;border:1px solid transparent}.clue.new{border-color:var(--accent)}.clue .src{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}.clue.pickable{text-align:left;min-height:0;width:100%;border:2px solid var(--line)}.clue.pickable.selected{border-color:var(--accent-2);background:var(--panel-2)}.grid-cells{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.cell{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:44px;padding:6px 10px;border-radius:10px;text-align:left;background:var(--panel);font-size:.9rem}.cell .mark{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.8rem;white-space:nowrap}.cell.out{opacity:.5}.cell.out .name{text-decoration:line-through}.cell.sure{border-color:var(--good)}.cell.sure .mark{color:var(--good);font-weight:700}.clue .row{display:flex;justify-content:space-between;align-items:center;gap:10px}.cell.picked{border-color:var(--accent-2);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--accent-2)}.cell.picked .name{color:var(--accent-2);font-weight:700}.pick-summary{display:flex;flex-wrap:wrap;gap:6px;align-items:center}button.has-beta{position:relative;overflow:hidden}.beta-banner{position:absolute;top:14px;right:-34px;width:130px;transform:rotate(35deg);background:#f5c84b;color:#2a1f00;font-weight:800;font-size:.75rem;letter-spacing:.2em;text-align:center;padding:3px 0;box-shadow:0 2px 6px #00000059;pointer-events:none}.beta-pill{display:inline-block;background:#f5c84b;color:#2a1f00;font-weight:800;font-size:.7rem;letter-spacing:.15em;padding:2px 8px;border-radius:999px;vertical-align:middle}.role{border:1px solid var(--panel-2)}.role.guilty{border-color:var(--danger)}.mini{font-size:.75rem;padding:4px 10px;min-height:0;width:auto}.manor{display:grid;gap:4px;padding:6px;border-radius:14px;background:#2a2440;grid-template-columns:1.2fr 1fr 1fr;grid-template-areas:"ballroom bar library" "hall hall study" "terrace garden garden"}.manor .room{display:flex;flex-direction:column;align-items:stretch;gap:3px;text-align:left;min-height:92px;padding:6px;border-radius:8px;width:auto;background:#f1e6cf;color:#2b2233;border:2px solid #c9b48a;font-weight:400}.manor .room.hall{background:#e6d3ae}.manor .room.outdoors{background:#cfe3b8;border-color:#8fb072;border-style:dashed}.manor .room.mine{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.manor .room.selected{outline:3px solid #f5c84b;outline-offset:1px}.room-head{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:.85rem}.room-tags{display:flex;flex-wrap:wrap;gap:3px;font-size:.72rem;align-items:center}.room-tags .kept{background:#2b22331f;border-radius:6px;padding:0 4px}.room-marks{display:flex;flex-wrap:wrap;gap:3px}.room-marks .mark{font-size:.68rem;border-radius:6px;padding:1px 4px;background:#ffffffb3}.room-marks .mark.story{background:#ffe08a}.tokens{display:flex;flex-wrap:wrap;gap:3px;margin-top:auto}.token{display:inline-flex;align-items:center;gap:3px;font-size:.72rem;background:#2b2233;color:#f1e6cf;border-radius:999px;padding:1px 6px 1px 3px}.token .dot{width:9px;height:9px}.token.you{outline:2px solid var(--accent-2)}.token.active{font-weight:800}.pile{display:inline-flex;align-items:center;gap:1px}.pile .back{width:6px;height:10px;border-radius:2px;background:#6b4f9e;border:1px solid #3d2d5c}.pile .n{font-size:.72rem;margin-left:3px;font-variant-numeric:tabular-nums}.room-detail .tie{background:color-mix(in srgb,#ffe08a 18%,transparent);border-radius:8px;padding:4px 6px}.chips{display:inline-flex;flex-wrap:wrap;gap:4px}.frame-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.steps{display:flex;gap:4px;flex-wrap:wrap}.steps .step{font-size:.75rem;padding:2px 8px;border-radius:999px;background:var(--panel-2);color:var(--muted)}.steps .step.on{background:var(--accent);color:#fff;font-weight:700}.steps .step.done{text-decoration:line-through}@media(max-width:380px){.manor .room{min-height:84px;padding:4px}.room-head{font-size:.78rem}}.card-kind{display:inline-block;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:6px;padding:1px 6px;background:var(--panel-2);color:var(--muted)}.card-kind.clear{background:color-mix(in srgb,var(--good) 22%,transparent);color:var(--good)}.card-kind.point{background:color-mix(in srgb,#f2a65a 24%,transparent);color:#f2a65a}.clue.kind-clear{border-left:3px solid var(--good)}.clue.kind-point{border-left:3px solid #f2a65a}.briefing h2{font-size:1.3rem}.briefing p{margin:0}.turn-steps{margin:0;padding-left:1.2em;display:flex;flex-direction:column;gap:6px}.breakers .card-kind{margin-right:4px}body[data-time=night]{--bg: #070817;--bg-2: #0f1130;--panel: #151839;--panel-2: #1d2150}body[data-time=night]:before{background:radial-gradient(1px 1px at 12% 14%,#fff3 50%,transparent 51%),radial-gradient(1px 1px at 78% 8%,#fff3 50%,transparent 51%),radial-gradient(1px 1px at 92% 22%,#fff2 50%,transparent 51%),radial-gradient(1px 1px at 6% 30%,#fff2 50%,transparent 51%),radial-gradient(120% 80% at 50% -10%,#1a1d48 0%,var(--bg) 60%)}body[data-time=day]{--bg: #fdf1d6;--bg-2: #f7e6bf;--panel: #fffaee;--panel-2: #fbe9c4;--line: #e6cc93;--text: #2d2410;--muted: #7b6942;--accent: #e2861b;--accent-2: #f4ae3f;--good: #1f9a6a;--village: #1f9a6a;--danger: #d23a50;--danger-2: #c0283e;--wolf: #c0283e;color-scheme:light}body[data-time=day]:before{background:radial-gradient(120% 80% at 50% -10%,#ffe08a 0%,#ffeec4 35%,var(--bg) 70%)}body[data-time=day] button.primary{color:#2a1700}body[data-dead=true],body[data-dead=true][data-time]{--bg: #2a0508;--bg-2: #3a090e;--panel: #4a0e15;--panel-2: #5e141d;--line: #8a2431;--text: #ffe8eb;--muted: #e6a3ad;--accent: #d92d43;--accent-2: #ff6b7e;color-scheme:dark}body[data-dead=true]:before,body[data-dead=true][data-time]:before{background:radial-gradient(120% 80% at 50% -10%,#7a0f1c 0%,var(--bg) 65%)}body[data-dead=true][data-time] button.primary{color:#fff}.dead-strip{align-self:stretch;text-align:center;padding:10px 14px;border-radius:12px;background:#b3122a;color:#fff;font-weight:800}.time-badge{align-self:center;display:inline-flex;align-items:center;gap:8px;padding:7px 16px;border-radius:999px;font-size:.95rem;font-weight:700;border:1px solid var(--line);background:var(--panel-2)}.roles-list{display:flex;flex-wrap:wrap;gap:6px}.roles-list details{flex:1 1 100%}.roles-list summary{cursor:pointer;list-style:none}.roles-list summary::-webkit-details-marker{display:none}.err.toast{position:fixed;left:50%;top:calc(max(16px,env(safe-area-inset-top)) + 60px);transform:translate(-50%);z-index:60;width:min(528px,calc(100% - 32px));padding:12px 14px;border-radius:12px;background:var(--panel);border:1px solid var(--danger);box-shadow:0 6px 24px #0006}.section-title{font-weight:700;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:4px}.room-code{font-size:2.6rem;font-weight:800;letter-spacing:.3em;padding-left:.3em;line-height:1.1}.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.role-toggle{display:flex;align-items:center;gap:8px;text-align:left;min-height:48px;padding:8px 10px;font-size:.92rem;border-radius:12px}.role-toggle .avatar{font-size:1.3rem}.role-toggle.on{border-color:var(--accent-2);background:var(--panel-2);font-weight:600}.role-toggle .check{margin-left:auto;color:var(--accent-2);font-weight:800}.role-toggle-text{display:flex;flex-direction:column;min-width:0;line-height:1.2}.role-toggle-text .small{font-weight:400}.role-detail{font-size:.88rem;color:var(--muted);line-height:1.45}.role-detail b{color:var(--text)}.clamp-1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;margin-top:4px;border-top:1px dashed var(--line)}.players.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.players.grid .chip{padding:8px 10px;gap:8px;min-width:0}.players.grid .chip .avatar{font-size:1.2rem;width:24px}.players.grid .chip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.roles-summary{width:100%;text-align:left;min-height:0;font-weight:400}.role-pill{border:1px solid var(--line);min-height:0;padding:6px 10px}.role-pill.on{border-color:var(--accent-2)}.ballot-row{display:flex;flex-direction:column;gap:2px}.rules{display:flex;flex-direction:column;padding:4px 14px}.rule+.rule{border-top:1px solid var(--line)}.rule-row{display:flex;align-items:center;gap:10px;min-height:48px;cursor:pointer}.rule-row input[type=checkbox]{width:22px;height:22px;min-height:0;flex:none;accent-color:var(--accent)}.rule-help{padding:0 0 12px 30px;line-height:1.45}button.info{min-height:32px;padding:0 8px;color:var(--muted);border:none}.chip .who{display:flex;flex-direction:column;min-width:0}.chip .who .sub{font-size:.75rem;line-height:1.2}.chip.dead .who .sub{text-decoration:none}.chip:not(:has(.avatar)){padding-left:14px}.host-tools button{white-space:nowrap;flex:none}.announce-next{font-size:1.05rem;padding:16px}.announce-next.over,.notice{border-color:var(--accent-2)}
