:root{--bg:#0a0908;--bg-2:#12100d;--panel:#1a150fdb;--panel-solid:#1a150f;--edge:#4a3c26;--edge-soft:#a88a5238;--brass:#b08f55;--brass-dim:#6f5a35;--parchment:#ecdfc2;--parchment-2:#cdbd98;--ink:#1b140c;--muted:#9b8b6b;--candle:#f0b24a;--village:#e0a43a;--wolf:#c0322a;--wolf-deep:#6e1410;--tanner:#a8742c;--ok:#8fa35a;--danger:#c0322a;--font-display:"IM Fell English SC", "Iowan Old Style", Georgia, serif;--font-head:"IM Fell English", "Iowan Old Style", Georgia, serif;--font-body:"EB Garamond", "Iowan Old Style", Georgia, serif;--radius:6px;--gutter:18px;--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg)}body{min-height:100dvh;color:var(--parchment);font-family:var(--font-body);background:radial-gradient(120% 60% at 50% -10%, #f0b24a21, transparent 60%), radial-gradient(80% 50% at 50% 110%, #6e14102e, transparent 70%), var(--bg);-webkit-tap-highlight-color:transparent;background-attachment:fixed;margin:0;font-size:18px;line-height:1.45}body:before{content:"";pointer-events:none;opacity:.07;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}body.no-scroll{overflow:hidden}#root{z-index:1;position:relative}button,input,select{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:400}p{margin:0}.screen{max-width:520px;min-height:100dvh;padding:0 var(--gutter) calc(32px + var(--safe-bottom));flex-direction:column;gap:18px;margin:0 auto;display:flex}.screen.center{text-align:center;justify-content:center;align-items:center;gap:22px}.screen-title{font-family:var(--font-display);letter-spacing:.04em;margin-top:6px;font-size:34px;line-height:1.1}.lede{font-family:var(--font-head);color:var(--parchment-2);font-size:19px;font-style:italic}.muted{color:var(--muted)}.small{font-size:15px}.accent{color:var(--candle);font-weight:500}.hint{color:var(--muted);font-size:15px;font-style:italic}.error{color:#f08c7e;font-style:italic}.notice{color:var(--muted);border:1px dashed var(--edge);border-radius:var(--radius);padding:12px 14px;font-size:15px;font-style:italic}.row{gap:10px;width:100%;display:flex}.row>*{flex:1}.center-row{justify-content:center;display:flex}.topbar{z-index:5;padding:calc(env(safe-area-inset-top,0px) + 8px) 0 8px;margin:0 calc(-1 * var(--gutter));padding-left:var(--gutter);padding-right:var(--gutter);background:linear-gradient(to bottom, var(--bg) 60%, transparent);grid-template-columns:72px 1fr 72px;align-items:center;display:grid;position:sticky;top:0}.topbar-title{text-align:center;font-family:var(--font-display);letter-spacing:.2em;color:var(--brass);font-size:16px}.topbar-mark{width:18px;height:18px;box-shadow:inset -5px 2px 0 0 var(--parchment);border-radius:50%;justify-self:start}.topbar .btn-link{white-space:nowrap;justify-self:end}.topbar .btn-link.topbar-left{justify-self:start}.seat-link{text-align:center;flex-direction:column;align-items:center;gap:16px;padding-top:20px;display:flex}.seat-link .qr{margin:0}.btn{border:1px solid var(--ink);border-radius:var(--radius);width:100%;min-height:54px;color:var(--ink);font-family:var(--font-display);letter-spacing:.06em;cursor:pointer;background:linear-gradient(#f1e5c9,#ddcca6);padding:12px 18px;font-size:21px;transition:transform 80ms,filter .15s;display:block;box-shadow:inset 0 0 0 3px #efe2c4,inset 0 0 0 4px #1b140c8c,0 6px 24px #f0b24a1f}.btn:active:not(:disabled){filter:brightness(.95);transform:translateY(1px)scale(.995)}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:inset 0 0 0 3px #efe2c4,inset 0 0 0 4px #1b140c66}.btn-ghost{color:var(--parchment);border:1px solid var(--brass-dim);box-shadow:inset 0 0 0 3px var(--bg), inset 0 0 0 4px var(--edge-soft);background:0 0}.btn-danger{color:var(--parchment);background:linear-gradient(#8a1e17,#5e120d);border-color:#2a0705;box-shadow:inset 0 0 0 3px #7a1912,inset 0 0 0 4px #ecdfc240}.btn-link{color:var(--candle);font-family:var(--font-head);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;padding:8px 2px;font-size:17px;font-style:italic;-webkit-text-decoration:underline #f0b24a59;text-decoration:underline #f0b24a59}.btn-link.subtle{color:var(--muted);text-decoration-color:#9b8b6b59}.btn-icon{border:1px solid var(--edge);background:var(--panel);width:44px;height:44px;color:var(--parchment);cursor:pointer;border-radius:50%;place-items:center;font-size:18px;display:grid}.btn-mini{border:1px solid var(--edge);background:var(--panel-solid);cursor:pointer;border-radius:4px;margin-top:4px;padding:4px 10px;font-size:14px}.btn-mini.danger{border-color:var(--wolf-deep);background:var(--wolf-deep);color:var(--parchment)}.home{text-align:center;justify-content:center;gap:14px;padding-bottom:0;overflow:hidden}.home-sky{justify-content:center;margin-bottom:8px;display:flex}.title{font-family:var(--font-display);letter-spacing:.08em;color:var(--parchment);text-shadow:0 0 30px #f0b24a40,0 2px #000;font-size:clamp(54px,17vw,84px);line-height:1}.tagline{font-family:var(--font-head);color:var(--parchment-2);font-size:19px;font-style:italic}.home-actions{flex-direction:column;gap:12px;margin-top:28px;display:flex}.home-book{align-self:center}.moon{background:radial-gradient(circle at 35% 35%,#fbf3dc,#e3d3ab 55%,#bfae84);border-radius:50%;position:relative;box-shadow:0 0 40px #fbf3dc59,0 0 120px #f0b24a2e}.moon:after{content:"";background:radial-gradient(circle at 62% 40%,#96825a59 0 8%,#0000 9%),radial-gradient(circle at 40% 66%,#96825a4d 0 6%,#0000 7%),radial-gradient(circle at 70% 70%,#96825a40 0 4%,#0000 5%);border-radius:50%;position:absolute;inset:0}.home>:not(.treeline){z-index:1;position:relative}.home{padding-bottom:130px}.treeline{fill:#000;pointer-events:none;filter:drop-shadow(0 -6px 14px #000000b3);width:100%;height:120px;position:fixed;bottom:0;left:0}.identity{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-family:var(--font-display);letter-spacing:.12em;color:var(--brass);font-size:15px}.field input{border:1px solid var(--edge);border-radius:var(--radius);width:100%;min-height:54px;font-size:22px;font-family:var(--font-head);color:var(--parchment);background:#00000059;outline:none;padding:10px 14px}.field input:focus{border-color:var(--brass);box-shadow:0 0 0 3px #b08f5533}.field input::placeholder{color:#5f523b;font-style:italic}.code-input{text-align:center;letter-spacing:.18em;font-family:var(--font-display)!important;font-size:30px!important}.portrait-picker{cursor:pointer;flex-direction:column;align-items:center;gap:6px;display:flex}.portrait-picker input{opacity:0;width:1px;height:1px;position:absolute}.portrait-picker:focus-within .portrait-frame{box-shadow:0 0 0 3px #f0b24a66}.identity>.btn-link.subtle{align-self:center;margin-top:-14px;font-size:15px}.portrait{flex-direction:column;align-items:center;gap:4px;min-width:0;margin:0;display:flex}.portrait figcaption{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--parchment-2);font-size:15px;overflow:hidden}.portrait figcaption:empty{display:none}.portrait-frame{aspect-ratio:3/4;border:2px solid var(--brass);box-shadow:0 0 0 3px var(--bg), 0 0 0 4px var(--brass-dim), 0 6px 16px #0009;background:radial-gradient(circle at 50% 35%,#8a7552,#4e3f27 75%);border-radius:50%;flex-shrink:0;position:relative;overflow:visible}.portrait-frame img,.portrait-frame .silhouette{object-fit:cover;filter:sepia(.55)contrast(1.05)brightness(.95);border-radius:50%;width:100%;height:100%;position:absolute;inset:0}.portrait-frame img{-webkit-user-drag:none}.silhouette{fill:#1b140c;padding-top:10%;filter:none!important}.portrait-sm{width:60px}.portrait-md{width:90px}.portrait-lg{width:150px}.portrait-badge{background:var(--parchment);color:var(--ink);font-family:var(--font-display);letter-spacing:.06em;white-space:nowrap;border-radius:3px;padding:0 7px;font-size:12px;line-height:17px;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}.portrait-away{border:2px solid var(--bg);background:#6b6255;border-radius:50%;width:12px;height:12px;position:absolute;top:2px;right:2px}.portrait.is-dim{opacity:.4}.seal{color:#140a04c7;--wax:var(--village);background:radial-gradient(circle at 34% 30%, color-mix(in srgb, var(--wax) 70%, white), var(--wax) 45%, color-mix(in srgb, var(--wax) 55%, black));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--wax) 60%, black), inset 0 0 0 4px color-mix(in srgb, var(--wax) 85%, white), 0 2px 6px #0000008c;border-radius:50%;flex-shrink:0;place-items:center;display:inline-grid}.seal svg{filter:drop-shadow(0 1px #ffffff40)}.seal-werewolves{--wax:var(--wolf);color:#190402d9}.seal-tanner{--wax:var(--tanner)}.team-tag{font-family:var(--font-display);letter-spacing:.08em;font-size:13px}.team-village{color:var(--village)}.team-werewolves{color:#e2584d}.team-tanner{color:#c99550}.wolf-text{color:#e2584d}.village-text{color:var(--village)}.section{flex-direction:column;gap:12px;display:flex}.section-title{font-family:var(--font-display);letter-spacing:.08em;color:var(--parchment);align-items:center;gap:12px;font-size:22px;display:flex}.section-title:after{content:"";background:linear-gradient(to right, var(--edge), transparent);flex:1;height:1px}.count{font-family:var(--font-body);color:var(--ink);background:var(--brass);border-radius:10px;padding:0 8px;font-size:16px;line-height:22px}.fleuron{color:var(--brass-dim);justify-content:center;align-items:center;gap:12px;margin:8px 0;font-size:10px;display:flex}.fleuron span{background:var(--brass-dim);width:60px;height:1px}.code-card{text-align:center;border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);outline:1px solid var(--edge-soft);outline-offset:-6px;padding:18px 16px 10px}.code-label{font-family:var(--font-display);letter-spacing:.2em;color:var(--brass);font-size:14px}.code-big{font-family:var(--font-display);letter-spacing:.08em;white-space:nowrap;color:var(--parchment);text-shadow:0 0 24px #f0b24a40;font-size:clamp(30px,9.5vw,52px);line-height:1.1}.code-url{color:var(--muted);font-size:15px}.code-actions{justify-content:center;gap:22px;display:flex}.qr{background:var(--parchment);border-radius:4px;width:190px;margin:12px auto 4px;padding:6px}.qr svg{width:100%;height:auto;display:block}.code-inline{font-family:var(--font-display);color:var(--candle);letter-spacing:.08em}.mode-cards{grid-template-columns:1fr 1fr;gap:10px;display:grid}.mode-card{text-align:left;border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);cursor:pointer;flex-direction:column;gap:4px;padding:12px;display:flex}.mode-card.is-on{border-color:var(--candle);box-shadow:0 0 0 1px var(--candle), 0 0 22px #f0b24a26;background:linear-gradient(#f0b24a21,#f0b24a0a)}.mode-name{font-family:var(--font-display);letter-spacing:.05em;font-size:20px}.mode-card.is-on .mode-name{color:var(--candle)}.mode-blurb{color:var(--parchment-2);font-size:15px;line-height:1.3}.dm-row{align-items:center;gap:14px;font-size:16px;display:flex}.player-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:14px 8px;margin:0;padding:0;list-style:none;display:grid}.player-grid li{flex-direction:column;align-items:center;min-width:0;display:flex}.player-cell{cursor:pointer;background:0 0;border:0;width:100%;padding:0}.player-cell:disabled{cursor:default}.role-setup{flex-direction:column;gap:14px;display:flex}.role-setup-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.tally{font-family:var(--font-display);letter-spacing:.05em;border-radius:4px;padding:2px 10px;font-size:17px}.tally.ok{color:var(--ink);background:var(--ok)}.tally.off{color:var(--parchment);background:var(--wolf-deep)}.role-rows{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.role-row{border:1px solid var(--edge);border-radius:var(--radius);opacity:.72;background:#00000040;justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 8px 10px;transition:opacity .15s;display:flex}.role-row.is-in{opacity:1;background:var(--panel)}.role-row-info{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;min-width:0;padding:0;display:flex}.role-row-text{flex-direction:column;min-width:0;display:flex}.role-row-name{font-family:var(--font-head);font-size:20px;line-height:1.15}.stepper{border:1px solid var(--edge);border-radius:var(--radius);flex-shrink:0;align-items:center;display:flex;overflow:hidden}.stepper button{cursor:pointer;background:#b08f551f;border:0;width:44px;height:44px;font-size:24px;line-height:1}.stepper button:disabled{opacity:.3;cursor:default}.stepper button:active:not(:disabled){background:#b08f554d}.stepper-n{text-align:center;font-variant-numeric:lining-nums;width:36px;font-size:21px;font-weight:600}.balance{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.balance-ends{font-family:var(--font-display);letter-spacing:.1em;justify-content:space-between;font-size:13px;display:flex}.balance-track{background:linear-gradient(to right, var(--wolf-deep), var(--wolf) 25%, #3a3022 50%, var(--village) 75%, #f6cf7c);border-radius:6px;height:12px;position:relative;box-shadow:inset 0 1px 3px #0009}.balance-even{border-left:1px dashed #ecdfc280;border-right:1px dashed #ecdfc280;width:21.4286%;position:absolute;top:-3px;bottom:-3px;left:39.2857%}.balance-marker{background:radial-gradient(circle at 35% 35%, #fff8e6, var(--parchment) 50%, #a99772);border:2px solid var(--ink);border-radius:50%;width:22px;height:22px;transition:left .35s cubic-bezier(.3,1.4,.5,1);position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 2px 6px #000000b3}.balance-label{text-align:center;font-family:var(--font-head);font-size:19px}.tone-village{color:var(--village)}.tone-werewolves{color:#e2584d}.tone-even{color:var(--parchment)}.balance-score{color:var(--muted);margin-left:8px;font-size:14px}.roles-in-play{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--edge);background:var(--panel);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:4px 12px 4px 4px;font-size:17px;display:inline-flex}.chip-count{color:var(--candle);font-family:var(--font-display)}.rules{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);flex-direction:column;display:flex}.toggle-row{cursor:pointer;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;display:flex}.toggle-row+.toggle-row{border-top:1px solid #4a3c2699}.toggle-text{flex-direction:column;display:flex}.toggle-label{font-family:var(--font-head);font-size:18px}.toggle-desc{color:var(--muted);font-size:15px;line-height:1.3}.switch{appearance:none;border:1px solid var(--edge);cursor:pointer;background:#2b241a;border-radius:15px;flex-shrink:0;width:52px;height:30px;transition:background .2s;position:relative}.switch:after{content:"";background:var(--parchment-2);border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px}.switch:checked{background:var(--candle);border-color:var(--candle)}.switch:checked:after{background:var(--ink);transform:translate(22px)}.rules select{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel-solid);flex-shrink:0;min-height:40px;padding:4px 10px;font-size:17px}.rules-summary{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);padding:10px 14px}.rules-summary summary,.guide-role summary{cursor:pointer;color:var(--candle);font-family:var(--font-head);font-style:italic}.rules-summary ul{color:var(--parchment-2);margin:8px 0 0;padding-left:20px;font-size:16px}.action-bar{z-index:4;margin:auto calc(-1 * var(--gutter)) calc(-32px - var(--safe-bottom));padding:28px var(--gutter) calc(16px + var(--safe-bottom));background:linear-gradient(to top, var(--bg) 70%, transparent);flex-direction:column;align-items:center;gap:8px;display:flex;position:sticky;bottom:0}.action-hint{color:var(--parchment-2);text-align:center;font-size:16px;font-style:italic}.sheet{z-index:50;background:var(--bg);flex-direction:column;animation:.2s ease-out sheet-in;display:flex;position:fixed;inset:0}@keyframes sheet-in{0%{opacity:0;transform:translateY(16px)}}.sheet-head{width:100%;max-width:520px;padding:calc(env(safe-area-inset-top,0px) + 12px) var(--gutter) 12px;border-bottom:1px solid var(--edge);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.sheet-head h2{font-family:var(--font-display);letter-spacing:.06em;font-size:26px}.sheet-body{-webkit-overflow-scrolling:touch;width:100%;max-width:520px;padding:8px var(--gutter) calc(40px + var(--safe-bottom));flex:1;margin:0 auto;overflow-y:auto}.guide-role{border-bottom:1px solid #4a3c2699;flex-direction:column;gap:8px;padding:18px 0;scroll-margin-top:8px;display:flex}.guide-role-head{align-items:center;gap:14px;display:flex}.guide-role h3{font-family:var(--font-display);letter-spacing:.04em;font-size:26px;line-height:1.1}.guide-summary{font-size:19px}.guide-role details ul{color:var(--parchment-2);flex-direction:column;gap:6px;margin:8px 0 0;padding-left:20px;font-size:17px;display:flex}.guide-goal{color:var(--parchment-2);margin-top:8px}.role-card{border:1px solid var(--brass-dim);outline:1px solid var(--edge-soft);outline-offset:-8px;background:radial-gradient(90% 70% at 50% 30%, #f0b24a14, transparent), var(--panel-solid);text-align:center;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;cursor:pointer;border-radius:10px;place-items:center;min-height:330px;padding:24px 18px;display:grid;position:relative}.role-card-back{font-family:var(--font-display);letter-spacing:.06em;color:var(--parchment-2);flex-direction:column;align-items:center;gap:10px;font-size:21px;display:flex}.role-card-back .small{font-family:var(--font-body);letter-spacing:0;font-style:italic}.role-card-sigil{border:2px solid var(--brass-dim);width:92px;height:92px;box-shadow:inset 0 0 0 6px var(--panel-solid), inset 0 0 0 7px var(--brass-dim);background:radial-gradient(circle,#0000 40%,#f0b24a14);border-radius:50%;position:relative}.role-card-sigil:after{content:"";box-shadow:inset -12px 4px 0 0 var(--parchment-2);border-radius:50%;position:absolute;inset:26px}.role-card-face{flex-direction:column;align-items:center;gap:8px;display:flex}.role-card.is-shown.team-werewolves{border-color:var(--wolf);background:radial-gradient(90% 70% at 50% 30%, #c0322a2e, transparent), var(--panel-solid)}.role-card-name{font-family:var(--font-display);letter-spacing:.06em;margin-top:6px;font-size:40px;line-height:1}.role-card-summary{color:var(--parchment-2);max-width:34ch;font-size:18px}.pack{margin-top:10px}.pack-label{font-family:var(--font-display);letter-spacing:.1em;color:#e2584d;margin-bottom:6px;font-size:15px}.pack-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.grimoire{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.grimoire-row{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);align-items:center;gap:12px;padding:6px 10px;display:flex}.grimoire-row .portrait-sm{width:40px}.grimoire-name{color:var(--parchment);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:19px;overflow:hidden}.grimoire-role{font-family:var(--font-head);align-items:center;gap:8px;font-size:17px;display:flex}.dm-tools{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.conn-banner.paused-banner{top:calc(env(safe-area-inset-top,0px) + 46px);background:var(--brass);color:var(--bg);letter-spacing:.04em;white-space:nowrap;font-style:normal}.conn-banner{top:calc(env(safe-area-inset-top,0px) + 6px);z-index:40;background:var(--wolf-deep);color:var(--parchment);border-radius:999px;padding:4px 14px;font-size:15px;font-style:italic;position:fixed;left:50%;transform:translate(-50%)}.toast{left:50%;bottom:calc(110px + var(--safe-bottom));z-index:40;border-radius:var(--radius);background:var(--parchment);width:min(92vw,440px);color:var(--ink);text-align:center;padding:10px 16px;position:fixed;transform:translate(-50%);box-shadow:0 8px 30px #0009}:focus-visible{outline:2px solid var(--candle);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.center-col{flex-direction:column;align-items:center;display:flex}.center-text{text-align:center}.center-self{align-self:center}.row-inline{flex-wrap:wrap;gap:8px;display:flex}.stage-head{text-align:center;flex-direction:column;align-items:center;gap:2px;margin-top:4px;display:flex}.stage-title{font-family:var(--font-display);letter-spacing:.05em;font-size:clamp(30px,9vw,40px);line-height:1.05}.stage-sub{font-family:var(--font-head);color:var(--muted);font-style:italic}.stage-night .stage-title{color:#c9d2e6;text-shadow:0 0 24px #96aadc40}.stage-dawn .stage-title,.stage-day .stage-title{color:var(--candle)}.stage-verdict .stage-title,.stage-hunter .stage-title{color:#e2584d}body:has(.stage-night){background:radial-gradient(120% 60% at 50% -10%,#788cc81f,#0000 60%),#07080c}.sleep{min-height:100dvh;padding:24px var(--gutter) calc(140px + var(--safe-bottom));text-align:center;background:#030305;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}body:has(.sleep){background:#030305}.sleep .moon{opacity:.35;filter:saturate(.3)}.sleep-title{font-family:var(--font-display);letter-spacing:.1em;color:#6f6a62;font-size:28px}.sleep-sub{color:#4a463f;font-style:italic}.timer{flex-direction:column;gap:6px;min-height:46px;display:flex}.timer-row{justify-content:space-between;align-items:baseline;display:flex}.timer-label{font-family:var(--font-display);letter-spacing:.1em;color:var(--brass);font-size:14px}.timer-time{font-variant-numeric:lining-nums tabular-nums;font-size:26px;font-weight:600}.timer-bar{background:#2a2318;border-radius:3px;height:6px;overflow:hidden}.timer-fill{background:linear-gradient(to right, var(--brass-dim), var(--candle));height:100%;transition:width .25s linear}.timer.is-urgent .timer-time{color:#e2584d}.timer.is-urgent .timer-fill{background:var(--wolf)}.timer.is-paused{opacity:.6}.action{border:1px solid var(--edge);background:var(--panel);outline:1px solid var(--edge-soft);outline-offset:-6px;border-radius:10px;flex-direction:column;gap:14px;padding:16px;display:flex}.action.wolf{border-color:var(--wolf-deep);background:linear-gradient(#6e14102e, #6e14100d), var(--panel)}.action-title{font-family:var(--font-display);letter-spacing:.05em;text-align:center;font-size:24px}.action-text{color:var(--parchment-2);text-align:center}.done-note{text-align:center;font-family:var(--font-head);color:var(--candle);font-size:20px;font-style:italic}.picker{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:12px 8px;margin:0;padding:0;list-style:none;display:grid}.pick{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;width:100%;padding:6px 2px}.pick.is-selected{border-color:var(--candle);background:#f0b24a1f;box-shadow:0 0 18px #f0b24a33}.pick.is-selected .portrait-frame{border-color:var(--candle)}.pick:disabled{cursor:default}.picker.is-locked .pick:not(.is-selected){opacity:.45}.pick-none{border:1px dashed var(--edge);flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:112px;display:flex}.pick-none-mark{color:var(--muted);font-size:30px}.pick-none-label{color:var(--parchment-2);font-size:15px}.pick .portrait-badge{text-overflow:ellipsis;max-width:96px;font-size:11px;overflow:hidden}.action.wolf .pick .portrait-badge{background:var(--wolf);color:var(--parchment)}.vision{text-align:center;font-size:22px;font-family:var(--font-head);flex-direction:column;align-items:center;gap:8px;display:flex}.vision.is-wolf strong{color:#e2584d}.vision strong{color:var(--candle)}.victim{align-items:center;gap:12px;display:flex}.victim .action-text{text-align:left}.potions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.potion{border:1px solid var(--edge);text-align:left;cursor:pointer;background:#0000004d;border-radius:8px;flex-direction:column;gap:2px;padding:12px;display:flex}.potion:disabled{opacity:.4;cursor:default}.potion-name{font-family:var(--font-display);font-size:18px}.potion-note{color:var(--muted);font-size:14px}.potion.heal.is-on{border-color:var(--ok);background:#8fa35a2e}.potion.poison.is-on{border-color:var(--wolf);background:#c0322a2e}.deaths{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.death{border:1px solid var(--wolf-deep);background:linear-gradient(90deg,#6e141033,#0000);border-radius:10px;align-items:center;gap:16px;padding:10px 14px;display:flex}.death .portrait-frame img{filter:sepia(.8)grayscale(.5)brightness(.8)}.death-name{font-family:var(--font-display);letter-spacing:.04em;font-size:24px}.death-cause{color:var(--muted);font-style:italic}.death-role{font-family:var(--font-head);align-items:center;gap:6px;margin-top:4px;display:flex}.village{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:14px 8px;margin:0;padding:0;list-style:none;display:grid}.village li{justify-content:center;display:flex;position:relative}.village-role{position:absolute;top:-4px;right:6px}.village-mark{color:var(--candle);font-size:16px;position:absolute;top:-2px;left:8px}.village li.is-dead .portrait-badge{background:var(--wolf-deep);color:var(--parchment)}.ghost-note,.progress-note{text-align:center;color:var(--parchment-2);font-style:italic}.progress-note{font-family:var(--font-head);color:var(--candle)}.secrets{border:1px dashed var(--brass-dim);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;cursor:pointer;background:#00000059;border-radius:10px;min-height:64px;margin-top:auto;padding:14px}.secrets.is-shown{border-style:solid;border-color:var(--brass);background:var(--panel-solid)}.secrets-closed{text-align:center;font-family:var(--font-display);letter-spacing:.08em;color:var(--muted);line-height:36px}.secrets-open{flex-direction:column;gap:6px;display:flex}.secrets-role{align-items:center;gap:12px;display:flex}.secrets-name{font-family:var(--font-display);font-size:24px;line-height:1}.secrets-goal,.secret-line{color:var(--parchment-2);font-size:16px}.secret-list{color:var(--parchment-2);margin:0;padding-left:18px;font-size:16px}.verdict{flex-direction:column;gap:16px;display:flex}.verdict-condemned{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.verdict-condemned .portrait-frame{border-color:var(--wolf)}.verdict-name{font-family:var(--font-display);letter-spacing:.04em;font-size:32px}.verdict-line{font-family:var(--font-head);color:var(--parchment-2);font-style:italic}.tally-list{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);flex-direction:column;gap:8px;margin:0;padding:12px 14px;list-style:none;display:flex}.tally-list li{grid-template-columns:7.5em 1fr 2em;align-items:center;gap:10px;display:grid}.tally-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tally-bar{background:#2a2318;border-radius:5px;height:10px;overflow:hidden}.tally-bar span{background:linear-gradient(to right, var(--wolf-deep), var(--wolf));height:100%;display:block}.tally-n{text-align:right;font-variant-numeric:lining-nums;font-weight:600}.votes-detail summary,.dm-log summary,.grimoire-box summary{cursor:pointer;color:var(--candle);font-family:var(--font-head);font-style:italic}.votes-detail ul,.dm-log ul{color:var(--parchment-2);margin:8px 0 0;padding-left:20px;font-size:16px}.narrator{z-index:20;width:min(100%,520px);padding:10px var(--gutter) calc(10px + var(--safe-bottom));border-top:1px solid var(--edge);background:linear-gradient(#0a0908d9,#0a0908 25%);flex-direction:column;gap:4px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.sleep .narrator{background:#030305;border-top-color:#1a1813}.narrator-caption{font-family:var(--font-head);color:var(--parchment-2);text-align:center;min-height:1.4em;font-size:16px;font-style:italic}.sleep .narrator-caption{color:#6f6a62}.narrator-wake{min-height:46px;font-size:18px}.narrator-row{justify-content:center;display:flex}.narrator-row .btn-link{padding:2px;font-size:15px}.narrator-controls{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.narrator-controls .btn-mini{min-height:36px;padding:4px 12px}.has-narrator{padding-bottom:calc(130px + var(--safe-bottom))}.script{color:var(--ink);background:linear-gradient(#efe3c6,#ddcca6);border-radius:10px;flex-direction:column;gap:6px;padding:14px 16px;display:flex;box-shadow:inset 0 0 0 3px #efe2c4,inset 0 0 0 4px #1b140c73}.script-label{font-family:var(--font-display);letter-spacing:.14em;color:#6b5634;margin-top:4px;font-size:13px}.script-line{font-family:var(--font-head);font-size:21px;line-height:1.3}.step-dots{flex-wrap:wrap;justify-content:center;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.step-dots li{border:1px solid var(--edge);color:var(--muted);border-radius:999px;padding:1px 9px;font-size:14px}.step-dots li.is-now{border-color:var(--candle);color:var(--ink);background:var(--candle)}.step-dots li.is-done{opacity:.6;text-decoration:line-through}.live{border:1px solid var(--edge);background:var(--panel);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex}.live-actors{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.live-status{text-align:center;font-family:var(--font-head);font-size:19px}.live-status.is-done{color:var(--ok)}.dm-votes{color:var(--parchment-2);margin:0;padding-left:18px;font-size:16px}.grimoire-box{flex-direction:column;gap:8px;display:flex}.grimoire-box .grimoire{margin-top:8px}.grimoire-row.is-dead .grimoire-name{color:var(--muted);text-decoration:line-through}.grimoire-row .btn-mini{margin:0}.win-banner{text-align:center;border:1px solid var(--edge);background:var(--panel);border-radius:12px;flex-direction:column;gap:6px;padding:22px 16px;display:flex}.win-kicker{font-family:var(--font-display);letter-spacing:.2em;color:var(--muted);font-size:13px}.win-title{font-family:var(--font-display);letter-spacing:.04em;font-size:clamp(32px,10vw,46px);line-height:1.05}.win-line{font-family:var(--font-head);color:var(--parchment-2);font-style:italic}.win-you{font-family:var(--font-display);letter-spacing:.08em;margin-top:6px;font-size:22px}.win-you.won{color:var(--ok)}.win-you.lost{color:var(--muted)}.win-village{border-color:var(--village);background:radial-gradient(100% 120% at 50% 0%, #e0a43a38, transparent 70%), var(--panel)}.win-village .win-title{color:var(--candle)}.win-werewolves{border-color:var(--wolf);background:radial-gradient(100% 120% at 50% 0%, #c0322a47, transparent 70%), var(--panel)}.win-werewolves .win-title{color:#e2584d}.win-tanner .win-title{color:#c99550}.win-lovers .win-title{color:#e08aa3}.unmasked{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.unmasked li{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel);align-items:center;gap:12px;padding:6px 10px;display:flex}.unmasked li.is-winner{border-color:var(--candle);box-shadow:inset 3px 0 0 var(--candle)}.unmasked .portrait-sm{width:42px}.unmasked-text{flex-direction:column;flex:1;min-width:0;display:flex}.unmasked-name{font-size:19px}.unmasked li.is-dead .unmasked-name{color:var(--muted)}.timeline{flex-direction:column;gap:14px;display:flex}.timeline-group h3{font-family:var(--font-display);letter-spacing:.08em;margin-bottom:4px;font-size:17px}.timeline-group.is-night h3{color:#aab4cc}.timeline-group.is-day h3{color:var(--candle)}.timeline-group ul{color:var(--parchment-2);flex-direction:column;gap:3px;margin:0;padding-left:18px;font-size:16px;display:flex}.timeline-group li.is-death,.dm-log li.is-death{color:#e2847a}
