.avatar-picker[data-v-16a42913]{margin:20px 0}.avatar-stage[data-v-16a42913]{height:200px;position:relative;border-radius:20px;overflow:hidden;background:radial-gradient(ellipse at 50% 80%,#60747b50,transparent 70%)}.avatar-canvas[data-v-16a42913]{position:absolute;inset:0;width:100%;height:100%}.avatar-fallback[data-v-16a42913]{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.avatar-caption[data-v-16a42913]{position:absolute;left:14px;bottom:14px;font-weight:750;pointer-events:none}.avatar-drag[data-v-16a42913]{position:absolute;right:14px;bottom:14px;color:var(--muted);font-size:11px;pointer-events:none}.avatar-expand[data-v-16a42913]{display:flex;justify-content:space-between;width:100%;margin-top:6px}.avatar-expand span[data-v-16a42913]{font-size:20px;line-height:1}.avatar-options[data-v-16a42913]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}.avatar-options button[data-v-16a42913]{padding:4px 4px 8px;overflow:hidden;border:2px solid transparent;background:#ffffff06}.avatar-options button[aria-pressed=true][data-v-16a42913]{border-color:var(--accent);background:#e5c78916}.avatar-options img[data-v-16a42913]{display:block;width:100%;height:88px;object-fit:contain;border-radius:9px;background:#202b37}.avatar-options span[data-v-16a42913]{display:block;font-size:11px;margin-top:6px}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f0ebdf;background:#202b32;font-synthesis:none;font-weight:450;--muted: #a7b3b7;--accent: #e5c789;--line: #ffffff16;--panel: #24323b}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);color:inherit;background:#ffffff09;border-radius:14px;min-height:46px;padding:10px 16px;font-weight:650;transition:background .15s,transform .15s}button:hover:not(:disabled){background:#ffffff18}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}input,textarea{width:100%;background:#14222a77;color:inherit;border:1px solid #ffffff24;border-radius:12px;padding:14px;font-size:16px}input::placeholder,textarea::placeholder{color:#89999e}h1,h2,p{margin:0}h1,h2{font-family:Georgia,serif;font-weight:500;letter-spacing:-.035em}.eyebrow{display:block;font-size:10px;letter-spacing:.2em;font-weight:750;color:var(--accent)}.hint{color:var(--muted);font-size:13px;line-height:1.6}.error{color:#ffb7b3;font-size:14px;line-height:1.5;padding:12px;background:#902f3529;border-radius:10px}.primary{background:var(--accent);color:#263239;border:none;min-height:54px;box-shadow:0 4px #a68b56}.primary:hover:not(:disabled){background:#f1d99f}.field-label{display:block;font-size:13px;font-weight:600;margin:0 0 9px}.field-label input{margin-top:9px}.segments{display:flex;gap:4px;background:#14232c;padding:4px;border-radius:14px}.segments button{flex:1;border:0;background:transparent;color:var(--muted)}.segments button.active{background:#43535c;color:#fff;box-shadow:0 2px 5px #0002}.segments span,.chat-toggle>span{font-size:12px;margin-left:5px}.text-button{border:0;width:100%;margin-top:12px;color:var(--muted)}.welcome{min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr}.welcome-art{position:relative;overflow:hidden;background:#26313b;min-height:700px}.welcome-art img{position:absolute;width:125%;left:-15%;top:21%;opacity:.8}.art-caption{position:relative;margin:clamp(32px,6vw,100px);z-index:1;pointer-events:none}.art-caption h1{font-size:clamp(48px,5.5vw,85px);line-height:1.02;margin:20px 0}.art-caption p{color:#b7c1c5;line-height:1.6;font-size:15px}.join-panel{padding:40px clamp(28px,5vw,88px);background:#1c2931;display:flex;flex-direction:column;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;letter-spacing:.14em;font-size:12px;font-weight:750}.brand small{margin-left:auto;color:var(--muted);font-size:10px;white-space:nowrap}.brand-mark{font-family:Georgia,serif;font-size:28px;color:var(--accent);border:1px solid #e5c78955;border-radius:50%;width:42px;height:42px;display:grid;place-items:center;letter-spacing:0}.join-content{max-width:400px;width:100%;margin:65px auto}.join-content h2{font-size:48px;margin:12px 0 30px}.color-field{border:0;padding:0;margin:24px 0}.color-field legend{font-size:13px;margin-bottom:12px}.colors{display:grid;grid-template-columns:repeat(8,1fr);gap:8px}.color{min-width:0;min-height:35px;height:35px;padding:0;border-radius:50%;border:3px solid transparent;color:#18242d}.color.selected{border-color:#fff;box-shadow:0 0 0 3px #ffffff20}.join-tabs{margin:26px 0 22px}.join-submit{width:100%;margin-top:22px}.join-foot{font-size:12px;line-height:1.8;color:#92a0a5;text-align:center;margin-top:28px}.game{height:100dvh;display:flex;overflow:hidden}.world-area{position:relative;flex:1;min-width:0;overflow:hidden}.canvas-host{position:absolute;inset:0}.canvas-host canvas{display:block;width:100%;height:100%}.world-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.player-label{position:absolute;top:0;left:0;background:#18252eea;border:1px solid #ffffff18;border-top:2px solid var(--player);padding:4px 9px;border-radius:8px;white-space:nowrap;font-size:12px;box-shadow:0 3px 12px #0003;will-change:transform}.player-label.self{color:#f4daa8;border-color:#e5c78966}.player-label.offline{opacity:.45}.zone-label{position:absolute;top:0;left:0;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.12em;color:#fff9;text-shadow:0 2px 4px #0008;white-space:nowrap;z-index:0}.game-toolbar{position:absolute;top:0;left:0;right:0;padding:calc(22px + env(safe-area-inset-top)) 24px 14px;display:flex;justify-content:space-between;gap:16px;pointer-events:none}.game-toolbar>*{pointer-events:auto}.room-badge{display:flex;align-items:center;gap:14px;background:#1b2a33ed;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:19px;padding:13px 18px;box-shadow:0 10px 30px #0002}.room-badge small{font-size:8px;letter-spacing:.15em;color:#9aaeb7;font-weight:700}.room-badge h1{font-size:26px;line-height:1.2}.room-count{border-left:1px solid var(--line);padding-left:15px;margin-left:6px;font-size:17px;color:var(--accent)}.live-dot{width:7px;height:7px;border-radius:50%;background:#83bfa0;box-shadow:0 0 0 5px #83bfa013}.menu-button{align-self:flex-start;background:#1b2a33ed;border-radius:16px;font-size:13px}.menu-button span{margin-left:15px}.game-bottom{position:absolute;left:24px;right:24px;bottom:calc(24px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:end;pointer-events:none}.game-bottom>*{pointer-events:auto}.keyboard-hint{font-size:11px;color:#bac3c9;background:#1b2a33dd;padding:10px 14px;border-radius:12px}kbd{font:inherit;color:var(--accent)}.chat-toggle{background:#e5c789;color:#24333d;min-height:50px;box-shadow:0 4px 15px #0003}.chat-toggle:hover:not(:disabled){background:#f1d99f}.chat-panel{width:340px;flex-shrink:0;display:flex;flex-direction:column;background:#24323b;border-left:1px solid var(--line);padding:calc(25px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));min-height:0;z-index:4}.chat-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:8px}.chat-heading h2{font-size:29px;margin-top:7px}.icon-button{font-size:24px;padding:0;min-width:44px;width:44px;height:44px;line-height:1}.chat-scope{color:var(--muted);font-size:11px;margin:12px 0 18px}.chat-log{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.empty-chat{padding:45px 8px;text-align:center;color:var(--muted)}.empty-chat>span{font:75px Georgia,serif;color:#536168}.empty-chat p{font-size:13px;margin:10px 0}.empty-chat small{font-size:11px;color:#7e9098}.message{margin:0 0 17px;animation:arrive .18s ease-out}.message header{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:650;color:#c4cfd3;margin-bottom:7px}.message header i,.player-list i{width:8px;height:8px;border-radius:50%;flex-shrink:0}.message time{font-weight:400;font-size:9px;margin-left:auto;color:#8799a2}.message p{background:#35444e;border-radius:3px 13px 13px;padding:10px 12px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.5}.message.own p{background:#465750}.chat-compose{display:flex;gap:8px;margin-top:16px;align-items:end}.chat-compose textarea{resize:none;padding:12px;min-height:64px;max-height:120px}.send-button{background:var(--accent);color:#21333b;min-width:45px;min-height:48px;padding:8px;font-size:24px}.new-messages{padding:8px;min-height:36px;font-size:12px}.overlay{position:fixed;inset:0;background:#09131bbd;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;display:grid;place-items:center;padding:20px}.dialog{position:relative;background:#283943;border:1px solid #ffffff20;border-radius:24px;box-shadow:0 25px 100px #0006;padding:32px;max-width:500px;width:100%;max-height:90dvh;overflow:auto}.dialog h2{font-size:32px;margin:12px 35px 18px 0}.dialog>p{line-height:1.6;margin-bottom:18px}.dialog-close{position:absolute;right:16px;top:16px}.dialog>.primary{width:100%;margin-top:24px}.invite-row{display:flex;gap:8px}.invite-row input{font-size:12px;min-width:0}.player-list{margin:20px 0;max-height:290px;overflow:auto}.player-list>div{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px}.player-list small{margin-left:auto;color:var(--muted);font-size:11px}.leave-button{width:100%;color:#edafaa}.world-notice{position:absolute;top:45%;left:50%;transform:translate(-50%,-50%);padding:18px 25px;border-radius:16px;background:#1a2932ed;max-width:90%;text-align:center}.joystick{display:none;width:116px;height:116px;border-radius:50%;border:1px solid #ffffff35;background:#20303a66;touch-action:none;align-items:center;justify-content:center;position:relative}.joystick>span{width:50px;height:50px;border-radius:50%;background:#e2d0aaa0;border:1px solid #fff8;pointer-events:none}.joystick>i{position:absolute;bottom:-20px;font-style:normal;font-size:8px;letter-spacing:.13em;color:#c6ced3}.joystick.disabled{opacity:.3;pointer-events:none}@keyframes arrive{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(pointer:coarse){.joystick{display:flex}.keyboard-hint{display:none}}@media(max-width:850px){.welcome{grid-template-columns:1fr}.welcome-art{min-height:210px;max-height:240px}.welcome-art img{width:75%;left:36%;top:-9%;opacity:.7}.art-caption{margin:26px}.art-caption h1{font-size:39px;margin:12px 0}.art-caption p{display:none}.join-panel{padding:24px}.join-content{margin:35px auto 15px;max-width:420px}.join-content h2{font-size:37px;margin-bottom:24px}.game-toolbar{padding:calc(12px + env(safe-area-inset-top)) 12px 10px;gap:8px}.room-badge{padding:10px 12px;gap:9px;border-radius:14px}.room-badge h1{font-size:23px}.room-count{padding-left:10px;margin-left:0}.menu-button{padding:12px;font-size:11px;min-height:49px}.menu-button span{margin-left:6px}.chat-panel{position:absolute;left:8px;right:8px;bottom:0;width:auto;height:65%;border:1px solid #ffffff25;border-radius:24px 24px 0 0;padding:20px 18px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -12px 50px #0004}.chat-heading{margin-bottom:13px}.chat-heading h2{font-size:25px}.chat-scope{margin:10px 0}.game-bottom{left:22px;right:18px}.chat-is-open .game-bottom{display:none}.dialog{padding:24px}.keyboard-hint{display:none}.joystick{display:flex}.chat-toggle{font-size:13px}.brand small{font-size:9px}.color{height:38px;min-height:38px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}:root{color-scheme:dark}.welcome-art img{-webkit-mask-image:linear-gradient(to bottom,transparent,black 15%);mask-image:linear-gradient(to bottom,transparent,black 15%)}.color{aspect-ratio:1;height:auto;min-height:0}@media(max-width:850px){.colors{grid-template-columns:repeat(6,1fr)}.color{height:auto;min-height:44px}}@font-face{font-family:Clocktower;src:url(/clocktower/fonts/averia-libre-bold.ttf);font-weight:700;font-display:swap}.game.chat-is-open .chat-panel{height:auto;background:#1b2932}.game .director-peek,.game .ballot-peek{background:#1b2932}.game-finale{text-align:center}.game-finale>img{display:block;width:220px;height:240px;object-fit:contain;margin:0 auto 20px}.game-finale>h1{margin:16px 0}.game-finale>.primary{margin-top:20px;min-width:220px}.hud-tools{display:grid;gap:10px}.night-heading{display:flex;align-items:center;gap:14px;margin-top:18px}.night-heading img{width:64px;height:74px;object-fit:cover;border-radius:16px}.night-heading h2{margin:0}.play-sheet .primary.action-complete:disabled{opacity:1;background:#335d4d;color:#e7f7ee;border-color:#8aba9e;box-shadow:none}.delivery-status{color:#b5dec4!important;font-size:14px}.private-back{margin:12px 0 0;min-height:44px;text-align:left}.private-threads{overflow:auto;min-height:0;margin-top:16px;display:flex;flex-direction:column;gap:8px}.private-threads button{display:flex;align-items:center;gap:12px;text-align:left;padding:14px}.private-threads i{width:12px;height:12px;border-radius:50%;flex-shrink:0}.private-threads button>span{flex:1;min-width:0}.private-threads small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#becacc;margin-top:5px}.chat-panel .segments button{padding-inline:8px;min-height:44px}.hud-tools button{display:flex;justify-content:space-between;padding:18px;text-align:left}.player-label.moderated:after{content:" · stumm";font-size:10px;opacity:.7}.night-track .skipped:not(.selected){opacity:.4}.play-dock{position:absolute;z-index:6;left:20px;bottom:92px;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 40px)}.play-dock button{min-height:42px;padding:10px 14px;font-size:13px;background:#24343deb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.phase-banner{position:absolute;z-index:5;left:24px;top:112px;display:flex;gap:14px;align-items:center;padding:12px 18px;border-radius:18px;background:#17262bea;max-width:calc(100% - 48px);flex-wrap:wrap}.phase-banner button{padding:6px 12px;min-height:40px}.countdown{font-variant-numeric:tabular-nums;color:#edcc83;font-size:24px}.badge{background:#edcc83;color:#17262b;border-radius:20px;padding:4px 7px}.play-overlay{position:fixed;inset:0;z-index:40;background:#08131999;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);display:flex;justify-content:center;align-items:center;padding:24px}.play-sheet{position:relative;background:#22333b;color:#f9f3e7;border:1px solid #526168;border-radius:28px;max-height:calc(100dvh - 48px);overflow:auto;width:min(640px,100%);padding:32px;box-shadow:0 24px 100px #0006;overscroll-behavior:contain;scrollbar-gutter:stable}.play-sheet.host-sheet{width:min(1180px,100%)}.play-sheet h1,.play-sheet h2,.play-sheet h3{font-family:Clocktower,Georgia,serif}.play-sheet h1{font-size:36px;line-height:1.1;margin:14px 50px 24px 0}.play-sheet h2{font-size:28px;margin:20px 0 12px}.play-sheet p{line-height:1.55;color:#e0e7e6;overflow-wrap:anywhere}.play-sheet p+p{margin-top:10px}.play-sheet small{color:#c7d5d8;letter-spacing:.05em}.sheet-dismiss{position:sticky;top:0;height:0;display:flex;justify-content:flex-end;z-index:5;pointer-events:none}.play-sheet .play-close{flex-shrink:0;pointer-events:auto;margin:0;background:#15262f}.play-sheet button{min-height:44px;margin:4px 4px 4px 0}.play-sheet .primary{margin:14px 0;width:100%}.play-sheet input:not([type=checkbox]),.play-sheet textarea,.play-sheet select{width:100%;background:#14272f;color:#f9f4e8;padding:12px;border:1px solid #526168;border-radius:12px;font:inherit;margin:6px 0;min-height:46px}.play-sheet textarea{resize:vertical}.play-sheet label{display:block;margin:12px 0}.play-sheet input[type=checkbox]{width:20px;height:20px;vertical-align:middle;margin-right:8px}.play-sheet details{border:1px solid #63707755;border-radius:16px;margin:16px 0;padding:0 16px;background:#17282c66}.play-sheet summary{cursor:pointer;padding:18px 0;font-weight:700;min-height:48px}.play-sheet details[open]{padding-bottom:16px}.choice-grid,.role-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:8px;margin:16px 0}.role-picker button{display:flex;align-items:center;text-align:left;font-size:14px;padding:7px;gap:8px}.role-picker img{width:40px;height:46px;flex-shrink:0;object-fit:cover;border-radius:8px}.selected{border-color:#f3d493!important;background:#806c3877!important;box-shadow:inset 0 0 0 1px #f3d493}.button-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.button-row>*{flex:1;min-width:130px}.button-row select{width:auto}.play-sheet :is(.button-row,.choice-grid,.role-picker,.marker-row,.host-tool-links)>button{margin:0}.play-sheet .button-row{margin-block:16px}.play-sheet :is(button,h1,h2,h3,summary){overflow-wrap:anywhere}.setup-roster article>*,.character-library summary>*,.role-picker button{min-width:0}.setup-roster article{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:center;border-bottom:1px solid #63707755;padding:10px 0}.setup-roster label{grid-column:1/-1}.grimoire-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px}.grimoire-grid>article{position:relative;border-radius:18px;padding:18px;background:linear-gradient(100deg,#17262bee,#17262bdb),var(--role-art) right top/auto 180px no-repeat;border:1px solid #61707955;overflow:hidden}.grimoire-grid h3{font-size:23px;margin:0}.grimoire-grid p{margin:8px 0}.marker-row{display:flex;flex-wrap:wrap;gap:4px}.marker-row button{font-size:12px;padding:7px 10px;min-height:44px}.night-track{display:flex;gap:4px;overflow:auto;padding:8px 0}.night-track button{min-width:38px;padding:8px;flex-shrink:0}.night-track button{display:flex;flex-direction:column;align-items:center;gap:5px;width:82px}.night-track img{width:40px;height:44px;object-fit:cover;border-radius:10px}.night-track small{font-size:10px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.life-status{font-size:12px;color:#f1d6aa}.phase-banner{max-width:min(560px,calc(100% - 48px));gap:8px 14px}.action-portrait{float:right;width:82px;height:94px;object-fit:cover;border-radius:22px;margin:24px 0 12px 16px;border:2px solid #c4a36c}.action-question{font-size:21px;clear:both}.target-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}.target-grid button{display:flex;align-items:center;gap:10px;min-height:68px;padding:12px;margin:0;text-align:left}.target-grid button>span:nth-child(2){flex:1;overflow-wrap:anywhere}.target-grid small{display:block;font-size:11px;margin-top:3px}.seat-number{display:grid;place-items:center;flex:0 0 28px;height:28px;border-radius:50%;background:#ffffff12;color:#e8ca8a;font-size:13px}.action-receipt,.attack-review,.suggestion,.sent-information,.dawn-review{border:1px solid #668d80;border-radius:18px;background:#26463c;padding:18px;margin:18px 0}.action-receipt strong{font-size:21px}.action-receipt p{margin:8px 0}.action-receipt.review,.attack-review,.dawn-review{background:#3b3528;border-color:#ac9156}.suggestion{background:#1a2b34;border-color:#56707c}.sent-information{font-size:14px;padding:12px 16px}.ballot-stage{text-align:center}.ballot-stage h2,.ballot-result h2{font-size:36px;margin:20px 0 4px}.ballot-steps{display:flex;gap:8px;justify-content:center;margin-top:22px}.ballot-steps span{border-bottom:2px solid #ffffff22;opacity:.5;padding:8px 4px;font-size:13px}.ballot-steps .current{border-color:#e8ca8a;color:#e8ca8a;opacity:1}.speaker-card{display:flex;flex-direction:column;gap:8px;background:#14272f;padding:22px;border-radius:20px;margin:24px 0}.speaker-card strong{font-family:Clocktower,Georgia,serif;font-size:28px}.vote-tally{display:flex;align-items:center;justify-content:center;gap:18px;padding:10px}.vote-tally>strong{font:700 68px Clocktower,Georgia,serif;color:#e8ca8a}.vote-tally>span{text-align:left;font-size:14px;line-height:1.6}.voter-ring{display:grid;grid-template-columns:repeat(auto-fit,minmax(95px,1fr));gap:8px;margin:18px 0}.voter-ring>div{display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid #ffffff22;background:#17282c;border-radius:12px;padding:10px;font-size:13px}.voter-ring .current{border-color:#edcc83;box-shadow:0 0 0 1px #edcc83}.voter-ring .raised{background:#53472a}.voter-ring .counted{opacity:.65}.ballot-result{padding:20px;border:1px solid #b59861;border-radius:20px;background:#322f25}.vote-hand{min-height:62px!important;font-size:20px}.vote-hand.selected{color:#fff}.ballot-stage>small{display:block;margin-top:12px;line-height:1.5;letter-spacing:0}@media(max-width:700px){.phase-banner{max-width:calc(100% - 24px);padding:10px 12px}.target-grid{gap:8px}.target-grid button{padding:10px 8px;font-size:14px}.night-track button{width:70px}.play-sheet .action-portrait{width:65px;height:76px}}.information-card{padding:16px;background:#10242b;border:1px solid #53676d;border-radius:14px;margin:12px 0}.bluff-row{display:flex;gap:12px;flex-wrap:wrap}.bluff-row>div{display:flex;align-items:center;gap:8px}.bluff-row img{width:56px;border-radius:12px}.role-card{text-align:center}.role-art{position:relative;height:260px;margin-top:-24px}.role-person{height:330px;max-width:100%;object-fit:contain;position:relative;-webkit-mask-image:linear-gradient(#000 55%,transparent 94%);mask-image:linear-gradient(#000 55%,transparent 94%)}.role-symbol{position:absolute;height:220px;max-width:100%;opacity:.15;left:50%;transform:translate(-50%);top:30px}.role-card h2{position:relative;margin-top:8px;font-size:38px}.role-card .ability{font-size:19px;font-weight:600}.role-card details{text-align:left}.role-compact .role-art{height:170px}.role-compact .role-person{height:230px}.role-compact .role-symbol{height:140px}.character-library summary{display:flex;align-items:center;gap:14px;list-style:none}.character-library summary img{width:64px;height:74px;object-fit:cover;border-radius:14px;border:2px solid #96bfcb;flex-shrink:0}.character-library strong{font-size:21px}.character-library small{display:block;font-size:14px;letter-spacing:0;font-weight:400;margin-top:5px;line-height:1.4}.character-library details{margin:10px 0}.action-notice{position:absolute;z-index:12;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:clamp(24px,3vw,36px);background:#20333b;box-shadow:0 15px 70px #0009;border:1px solid #bca268;border-radius:28px;width:min(520px,calc(100% - 32px));max-height:calc(100% - 48px);overflow:auto;overscroll-behavior:contain}.action-notice h2{font-family:Clocktower,Georgia,serif;font-size:clamp(28px,2.6vw,36px);line-height:1.15;text-wrap:balance}.action-notice p{font-size:17px;line-height:1.55;color:#c9d5d8;overflow-wrap:anywhere}.action-notice .primary{align-self:stretch;margin-top:12px;margin-bottom:4px;padding:14px 20px;min-height:54px;line-height:1.35}.game-error{position:fixed;z-index:100;bottom:18px;left:50%;transform:translate(-50%);background:#8b3541;color:#fff;padding:14px 18px;border-radius:16px;max-width:90vw;display:flex;gap:12px;align-items:center}.game-error button{min-width:40px}.dm-feed{max-height:40vh;overflow:auto}.dm-feed article{padding:12px 16px;border-radius:12px;background:#16272f;margin:10px 0}.dm-feed p{white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:700px){.play-overlay{padding:0;align-items:stretch}.play-sheet,.play-sheet.host-sheet{border-radius:0;width:100%;max-height:100dvh;padding:calc(18px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom))}.play-sheet h1{font-size:32px}.play-dock{left:12px;bottom:96px;gap:3px;max-width:calc(100% - 24px)}.play-dock button{font-size:11px;padding:7px 10px}.phase-banner{left:12px;top:98px;font-size:12px;gap:8px}.setup-roster article{grid-template-columns:1fr 1fr}.setup-roster article>div{grid-column:1/-1}.grimoire-grid{grid-template-columns:1fr}.chat-is-open .play-dock{display:none}}.game{--hud-edge: 24px}.game .world-area{margin:0;width:100%}.game .chat-panel{position:absolute;z-index:35;inset:88px 24px 88px auto;width:min(390px,calc(100% - 32px));border:1px solid #ffffff26;border-radius:24px;box-shadow:0 20px 80px #0005;background:#18272ef5}.game-toolbar{top:24px;left:24px;right:24px}.room-badge{background:none;padding:0;box-shadow:none;border:0;gap:10px}.room-badge small,.room-count{display:none}.room-badge h1{font-size:18px;text-shadow:0 2px 6px #000}.menu-button{min-width:48px;padding:10px 14px;background:#14212cd9}.game-bottom{inset:auto 24px 24px}.game-bottom .keyboard-hint{display:none}.game-bottom .chat-toggle{margin-left:auto;background:#18272ef2;min-height:48px}.game .play-dock{left:24px;bottom:24px;width:auto;max-width:calc(100% - 260px);padding:6px;gap:4px;flex-wrap:wrap;border:1px solid #ffffff24;border-radius:18px;background:#14212ced}.play-dock button{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;min-height:46px;font-size:14px}.play-dock button:hover{background:#ffffff12}.game .phase-banner{top:24px;left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - 380px);padding:10px 18px;gap:10px;border:1px solid #ffffff24;background:#14212cdd;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:center;border-radius:18px}.phase-banner>strong{font-family:Clocktower,serif;font-size:22px}.phase-banner>span:not(.countdown){font-size:13px}.phase-banner .life-status{font-size:12px}.director-peek,.ballot-peek{position:absolute;z-index:8;bottom:100px;left:50%;transform:translate(-50%);border:1px solid #dec79440;border-radius:24px;padding:18px 22px;background:#17252eef;box-shadow:0 16px 60px #0005;width:min(700px,calc(100% - 48px))}.director-peek{display:flex;align-items:center;gap:16px}.director-peek img{width:58px;height:64px;object-fit:cover;border-radius:16px;flex-shrink:0}.director-peek>div{flex:1;min-width:0}.director-peek strong{display:block;font:700 24px Clocktower,serif;margin:4px 0}.director-peek small{color:#d6ba82;font-size:10px;letter-spacing:.14em}.director-peek span{font-size:13px;color:#b9c4c8}.play-overlay{inset:0;width:auto;padding:48px 24px;background:#08101788;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);align-items:center;pointer-events:auto}.play-sheet,.play-sheet.host-sheet{width:min(760px,100%);max-height:100%;padding:32px;border-radius:28px;background:linear-gradient(145deg,#27333d,#18232d);border:1px solid #dac69e44;animation:stage-arrive .22s ease-out}.panel-host:not(.panel-stage) .play-sheet,.panel-grimoire .play-sheet{width:min(1180px,100%)}.panel-stage{align-items:flex-end;padding-bottom:100px;background:#07101935;-webkit-backdrop-filter:none;backdrop-filter:none}.panel-stage .play-sheet{max-height:min(660px,calc(100dvh - 205px))}.panel-stage .play-sheet>small{color:#d6ba82}.panel-stage .play-sheet>h1{font-size:24px;margin-block:4px 12px}.panel-grimoire .grimoire-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.host-tool-links{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid #ffffff1a;padding-top:16px;margin-top:20px}.play-sheet .text-button{background:none;box-shadow:none;border:0;padding-left:0;color:#d6ba82}.panel-action .play-sheet{width:min(820px,100%)}.night-choice{text-align:center}.night-choice .action-portrait{float:none;display:block;width:80px;height:92px;margin:0 auto 12px;border-radius:22px;object-fit:cover}.night-choice h1{margin:8px 0 14px;font-size:38px}.night-choice .action-question{font-size:18px}.night-choice .target-grid{text-align:left;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-block:24px}.night-choice .target-grid button{min-height:68px;margin:0}.night-choice>button:not(.primary){margin:4px}.night-choice>.primary{display:block;width:100%;min-height:56px;margin:18px 0}.night-choice .hint{font-size:12px;max-width:560px;margin:16px auto 0;color:#adbcc4}.received-information{text-align:center;border-color:#d9bf8580}.received-information>p{font:700 30px Clocktower,serif;margin:14px 0}.panel-role .role-art{height:310px}.panel-role .role-card>h2{font-size:42px}.panel-role .role-card .ability{font-size:20px}.panel-ballot{background:#08101744;-webkit-backdrop-filter:none;backdrop-filter:none;align-items:flex-end;padding-bottom:100px}.panel-ballot .play-sheet{width:min(700px,100%);max-height:58dvh}.ballot-peek{max-height:52dvh;overflow:auto;width:min(620px,calc(100% - 48px))}.ballot-peek h2{font:700 30px Clocktower,serif;margin:8px 0}.ballot-peek p{font-size:14px;margin:8px 0}.ballot-peek .compact:not(:has(.vote-tally))>p:last-child{display:none}.ballot-peek .speaker-card{padding:10px 14px}.ballot-peek .vote-roster,.ballot-peek .counting-next,.ballot-peek .ballot-stage>small{display:none}.ballot-peek .vote-tally{margin:10px 0}.ballot-peek .vote-hand{width:100%;margin-top:10px}.vote-roster{margin-block:12px}.player-label.nominee{outline:2px solid #edbe70;background:#56331d}.player-label.has-floor{box-shadow:0 0 0 3px #f5da9c88}.player-label[data-ballot]:not([data-ballot=""]):before{content:attr(data-ballot);display:block;font-weight:800;font-size:16px;color:#ffe3a4;padding-bottom:4px}@keyframes stage-arrive{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}@media(pointer:coarse){.game .joystick{bottom:86px}}@media(max-width:1000px){.panel-grimoire .grimoire-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game .play-dock{max-width:calc(100% - 230px)}}@media(max-width:700px){.game .phase-banner{top:76px;max-width:calc(100% - 32px);font-size:12px}.game .play-dock{left:12px;bottom:12px;max-width:calc(100% - 24px);width:calc(100% - 24px);flex-wrap:nowrap;overflow:auto}.game .play-dock button{flex-shrink:0}.game-bottom{bottom:88px;right:16px;left:16px}.game .chat-panel{inset:12px 12px 80px;width:auto}.director-peek,.ballot-peek{bottom:152px;padding:16px;width:calc(100% - 24px)}.director-peek{flex-wrap:wrap}.director-peek>button{width:100%}.play-overlay,.panel-stage,.panel-ballot{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));align-items:center}.play-sheet,.play-sheet.host-sheet,.panel-stage .play-sheet,.panel-ballot .play-sheet{max-height:100%;padding:20px;border-radius:22px}.night-choice .target-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.night-choice h1{font-size:34px}.night-choice .action-portrait{width:72px;height:84px;margin-bottom:10px}.panel-grimoire .grimoire-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.play-sheet{animation:none}}.game{position:relative}.game-toolbar{padding:0;align-items:center}.menu-button span{margin-left:0}.game-bottom .chat-toggle{color:#f4e9d5;border:1px solid #ffffff24}.self-voice{display:flex;align-items:center;gap:8px}.self-voice i{width:22px;height:22px;border-radius:50%;box-shadow:inset 0 -3px #0003}.self-voice>span{color:#f3deb3;font-weight:750}.panel-stage .play-sheet{max-height:min(540px,calc(100dvh - 205px))}.director-controls>h1{font-size:24px;margin:6px 0 12px}.director-controls>small{color:#d6ba82}.director-controls .night-track{gap:6px}.director-controls .night-track button{min-width:52px;width:52px;padding:5px}.director-controls .night-track img{height:34px;width:34px}.director-controls .night-track small{display:none}.ballot-peek{padding:14px 22px}.ballot-peek .ballot-steps{margin:0 0 6px}.ballot-peek .vote-tally strong{font-size:36px}.ballot-peek .vote-tally{display:inline-flex;vertical-align:middle;margin:4px 18px 4px 0}.ballot-peek .speaker-card{margin-block:10px}.ballot-peek .speaker-card+p{display:none}.ballot-peek .ballot-stage>h2{display:inline-block;margin-right:14px}.ballot-peek .ballot-stage>h2+p{display:inline-block}.ballot-peek .vote-hand{min-height:52px}.game .joystick{position:absolute;bottom:78px;left:0}@media(max-width:700px){.self-voice>span{display:none}.panel-stage .play-sheet{max-height:100%}.game .joystick{bottom:0}}@media(max-height:650px)and (min-width:701px){.play-overlay{padding-block:20px}.play-sheet,.panel-stage .play-sheet{max-height:100%}}.panel-grimoire .play-sheet>.text-button{width:auto;display:inline-flex;margin:0 0 4px;padding:8px 0}.panel-grimoire .grimoire>h1{margin-top:12px}.panel-grimoire .grimoire-grid article{padding:16px}
