@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{--ink:#222c31;--ink-deep:#171e26;--night:#1d2531;--paper:#f5f0e5;--paper-dark:#e8dfcd;--gold:#d8ae67;--gold-light:#f1d39a;--muted:#77786e;--line:#d9d1be;--serif:'Libre Caslon Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--red:#a6534d;--green:#497363;--purple:#8e729f;--shadow:0 18px 60px #161c2426}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}input:focus,select:focus,textarea:focus{outline:2px solid #b39156;outline-offset:2px}button{border:0}img{max-width:100%}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}input,select,textarea{border:1px solid var(--line);background:#fffdf8;color:var(--ink);padding:12px 14px;border-radius:4px;width:100%;min-width:0}textarea{resize:vertical}select{padding-right:28px}label{display:block;font-size:12px;font-weight:600;letter-spacing:.02em}label input,label select,label textarea{margin-top:8px}label small{display:block;font-weight:400;line-height:1.5;margin-top:4px}button,select{min-height:38px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:var(--gold);padding:15px}.skip-link:focus{top:12px}.site-header{height:96px;display:flex;align-items:center;padding:0 6%;gap:50px;background:var(--ink-deep);color:#e9e3d5;border-bottom:1px solid #ffffff12}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand-mark{display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;border:1px solid var(--gold);border-radius:50%;width:44px;height:44px;color:var(--gold);font-size:31px;position:relative;line-height:1}.brand-mark:after{content:'';position:absolute;height:16px;width:1px;background:var(--gold);transform:rotate(-35deg);bottom:-11px;right:1px}.brand-mark span{font-size:17px;margin-left:-8px;align-self:flex-end;margin-bottom:9px}.brand-word{font-family:var(--serif);font-size:26px;line-height:.95;letter-spacing:.06em}.brand-word>span{font-family:var(--sans);display:block;font-size:9px;letter-spacing:.4em;text-align:center;margin-top:8px}.site-header nav{display:flex;align-items:center;gap:30px}.nav-link{background:transparent;color:#d8d6d0;font-size:12px;padding:10px 0}.nav-link:hover{color:var(--gold-light)}.home-link{font-size:12px;color:#d8d6d0}.home-link span{color:var(--gold);margin-left:5px}.header-tag{margin-left:auto;font-size:9px;letter-spacing:.17em;color:#a6a79f}.hero{position:relative;min-height:590px;overflow:hidden;background:#19232d;color:var(--paper);isolation:isolate}.hero-art{position:absolute;inset:0;background:url('./assets/village-night.webp') center 56%/cover no-repeat;z-index:-3}.hero:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#101d28f2 0%,#13202ae0 29%,#17212c40 62%,#10192215),linear-gradient(0deg,#111e29ed 0%,transparent 30%);z-index:-2}.hero-content{padding:78px 7% 92px;position:relative;max-width:860px}.eyebrow{font-family:var(--sans);font-size:9px;font-weight:600;letter-spacing:.19em;color:var(--gold);display:flex;gap:11px;align-items:center;line-height:1.6}.eyebrow>span:not(.moon-icon){height:1px;width:27px;background:currentColor}.eyebrow.dark{color:#7d704e}.hero h1{font-size:clamp(55px,5.6vw,87px);line-height:1.02;letter-spacing:-.025em;margin-top:24px}.hero h1 em{font-weight:400;color:var(--gold-light)}.hero-content>p{font-size:14px;line-height:1.9;color:#d5d7d4;margin-top:22px}.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:47px;padding:13px 22px;border-radius:3px;font-size:12px;font-weight:600;letter-spacing:.015em;transition:background .2s,transform .2s,box-shadow .2s}.button:hover:not(:disabled){transform:translateY(-1px)}.button>span:last-child{font-size:18px;font-weight:400}.button-gold{background:var(--gold);color:#222a2a;box-shadow:0 5px 20px #0002}.button-gold:hover{background:#e3bf7e}.button-ink{background:var(--ink);color:var(--paper);border:1px solid var(--ink)}.button-ink:hover{background:#344149}.button-outline{background:transparent;border:1px solid #bcb6a6;color:var(--ink)}.button-outline:hover{background:#e7e1d4}.hero-cta{margin-top:30px;min-width:190px;justify-content:space-between}.hero-meta{display:flex;align-items:center;gap:14px;margin-top:25px;font-size:10px;color:#aeb6b6}.hero-meta i{width:3px;height:3px;border-radius:50%;background:#b8a67e}.hero-caption{position:absolute;right:6%;bottom:94px;display:flex;gap:14px;align-items:center;border-left:1px solid #e1cda95c;padding:14px 0 14px 22px;background:linear-gradient(90deg,#14222e8f,transparent)}.moon-icon{font-size:36px;color:var(--gold)}.hero-caption>div{font-size:10px;letter-spacing:.12em;color:#edd6aa}.hero-caption>div>span{display:block;font-family:var(--serif);font-style:italic;font-size:23px;letter-spacing:0;color:#e8e4db;margin-top:4px}.hero-bottom{position:absolute;bottom:0;width:100%;display:flex;align-items:center;justify-content:center;gap:26px;min-height:47px;border-top:1px solid #f0e4ce26;font-size:9px;letter-spacing:.22em;color:#c6b18a}.hero-bottom span{font-size:12px}.section-wrap{width:min(1180px,88%);margin:auto}.entry-section{padding-top:60px}.section-intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:24px;gap:24px}.section-intro h2{font-size:43px;margin-top:7px;letter-spacing:-.025em}.section-intro>p{font-size:12px;line-height:1.8;color:#7c7c71;text-align:right;padding-bottom:5px}.entry-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:28px}.paper-panel{background:#fcf9f1;border:1px solid var(--line);box-shadow:0 5px 15px #4f422506;border-radius:5px}.join-panel{padding:28px}.field-label{font-size:11px}.name-input{margin-top:9px;padding:13px 14px;background:#f4f0e6}.ruleset-tabs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}.ruleset-option{position:relative;text-align:left;border:1px solid var(--line);border-radius:4px;padding:16px 44px 17px 16px;background:#f8f5ec;min-height:112px;overflow:hidden}.ruleset-option.selected{background:#ece9da;border-color:#8a8a63;box-shadow:inset 0 0 0 1px #8a8a6320}.ruleset-option.selected:before{content:'✓';position:absolute;top:11px;right:12px;font-size:12px;color:#61745a}.chapter{font-size:8px;letter-spacing:.17em;color:#8d805f}.ruleset-option strong{display:block;font-family:var(--serif);font-weight:400;font-size:25px;margin:7px 0 5px}.ruleset-option>span:not(.chapter):not(.rule-icon){font-size:9px;color:#6c7068}.rule-icon{position:absolute;right:14px;bottom:13px;font-family:Georgia,serif;font-size:33px;color:#8b916d69}.entry-options{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:22px 0 18px}.entry-options label{flex:1;max-width:65%;font-size:10px}.entry-options select{font-size:11px;background:transparent;padding:9px 27px 9px 10px}.text-link{background:none;padding:0;min-height:32px;display:inline-flex;align-items:center;gap:14px;color:#626b5d;font-size:11px;border-bottom:1px solid transparent;white-space:nowrap}.text-link:hover{border-bottom-color:currentColor}.full-width{width:100%;justify-content:space-between}.secondary-actions{display:flex;gap:12px;margin-top:12px}.secondary-actions>.button{flex:1;padding-left:12px;padding-right:12px;font-size:11px}.invite-form{border-top:1px solid var(--line);margin-top:22px;padding-top:18px;display:flex;align-items:center;gap:14px}.invite-form label{font-size:10px;color:#77796f;white-space:nowrap}.invite-form>div{display:flex;gap:8px;flex:1;min-width:0}.invite-form input{min-height:37px;padding:9px 10px;font-size:10px;letter-spacing:.12em;text-transform:uppercase}.invite-form .button{padding:6px 12px;min-height:37px;font-size:10px}.fine-print{font-size:9px;line-height:1.7;color:#909085;margin-top:15px}.chapter-card{position:relative;background:#253132;border:1px solid #36423f;border-radius:5px;overflow:hidden;min-height:510px;color:var(--paper);isolation:isolate}.chapter-art{position:absolute;inset:0;background:linear-gradient(0deg,#172726 12%,#1b292bb5 42%,transparent 100%),url('./assets/village-day.webp') 58% 28%/cover;z-index:-1;opacity:.9}.chapter-copy{position:absolute;left:30px;right:30px;bottom:80px}.chapter-tag{font-size:8px;letter-spacing:.18em;color:#ded0a6;border:1px solid #ddcba652;background:#1e302ba1;padding:7px 10px;border-radius:2px}.chapter-copy h3{font-size:42px;line-height:1.07;margin:22px 0 16px}.chapter-copy>p{font-size:12px;line-height:1.9;max-width:300px;color:#c5cdc4}.text-link.light{color:var(--gold-light);margin-top:16px}.chapter-card-foot{position:absolute;bottom:0;left:0;right:0;padding:20px 30px;border-top:1px solid #ffffff20;font-size:10px;color:#abb5a8}.chapter-card-foot span{color:var(--gold);margin-right:10px}.village-section{padding-top:54px}.village-section .section-intro h2{font-size:35px}.room-list{border:1px solid var(--line);border-radius:4px;background:#faf7ef;overflow:hidden}.empty-state{padding:32px;text-align:center;color:#818378;font-size:12px;line-height:1.7}.room-row{display:flex;align-items:center;gap:18px;padding:18px 22px;border-bottom:1px solid var(--line)}.room-row:last-child{border-bottom:0}.room-emblem{font-family:Georgia,serif;font-size:26px;color:#7b8063;background:#eeebdd;border-radius:50%;width:42px;height:42px;display:grid;place-items:center}.room-row-info{flex:1;min-width:0}.room-row h3{font-size:24px;overflow-wrap:anywhere}.room-row-info p{font-size:10px;color:#828278;margin-top:4px}.room-occupancy{font-size:12px;color:#727c6a}.room-row .button{font-size:10px;min-height:35px;padding:8px 16px}.how-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:48px;padding:55px 0}.how-strip article{padding-right:22px}.how-strip article>span{font-size:10px;letter-spacing:.1em;color:#9a8d6d;display:flex;align-items:center;gap:18px}.how-strip i{font-style:normal;font-size:23px;color:#727962}.how-strip h3{font-size:29px;margin:9px 0 10px}.how-strip p{font-size:11px;line-height:1.9;color:#7b7f72;max-width:285px}.site-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:25px;padding:30px 6%;font-size:10px;color:#82877b}.site-footer>span{font-family:var(--serif);font-size:19px;letter-spacing:.04em;color:#535e50}.site-footer p{font-size:9px;line-height:1.7;text-align:center}.site-footer a{font-size:10px}
/* Shared dialogs */
.paper-dialog{color:var(--ink);background:var(--paper);border:1px solid #c4b690;border-radius:7px;padding:36px;width:min(480px,calc(100% - 28px));max-height:90dvh;box-shadow:0 30px 100px #0006;overflow-y:auto}.paper-dialog::backdrop{background:#111c26b5;backdrop-filter:blur(5px)}.paper-dialog h2{font-size:40px;line-height:1.1;margin:10px 25px 14px 0}.paper-dialog>p:not(.eyebrow){font-size:12px;line-height:1.8;color:#737b70}.dialog-close{position:absolute;right:15px;top:13px;display:grid;place-items:center;width:33px;min-height:33px;background:transparent;font-size:25px;color:#797d70;border-radius:50%}.dialog-close:hover{background:#e3dccd}.paper-dialog form{margin-top:24px;display:grid;gap:18px}.small-note{font-size:10px!important;color:#7c8072;line-height:1.7}.wide-dialog{width:min(850px,calc(100% - 28px))}.guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:27px 36px;margin-top:30px}.guide-grid article>span{font-size:8px;font-weight:600;letter-spacing:.12em;color:#8c7e58}.guide-grid h3{font-size:27px;margin:7px 0}.guide-grid p{font-size:11px;line-height:1.9;color:#6f776c}.guide-tip{margin-top:28px;padding:18px 20px;border:1px solid #c8c9b1;background:#e9ecdf;font-size:11px;line-height:1.8;color:#606b54}.almanac-dialog{width:min(1000px,calc(100% - 28px))}.almanac-controls{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px;margin:24px 0 12px}.almanac-controls input,.almanac-controls select{font-size:11px}.almanac-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-top:18px}.almanac-role{padding:18px;text-align:left;border:1px solid var(--line);background:#faf8f1;border-radius:4px;min-height:190px;display:flex;align-items:start;flex-direction:column;gap:7px}.almanac-role:hover{background:#eeebdf;border-color:#aba88e}.almanac-role h3{font-size:26px}.role-faction{font-size:8px;text-transform:uppercase;letter-spacing:.12em;font-weight:600;display:inline-block;border-radius:2px;padding:4px 6px;background:#e5e8db;color:#617258}.role-faction.mafia{background:#eee0db;color:#a05848}.role-faction.coven{background:#e8e0ec;color:#846195}.role-faction.neutral{background:#e4e2dc;color:#777060}.role-faction.apocalypse{background:#e8dbdc;color:#8d5159}.almanac-role p{font-size:10px;line-height:1.7;color:#73796d}.almanac-role .coverage{margin-top:auto;font-size:9px;color:#8d6846;padding-top:6px}.role-detail-stats{display:flex;gap:9px;margin:20px 0}.stat-pill{font-size:10px;border:1px solid var(--line);padding:7px 10px;border-radius:3px}.role-detail-description{font-size:13px;line-height:1.9;color:#677364}.role-ability-list{padding-left:19px;font-size:12px;line-height:1.9;color:#68715f}.role-goal{padding:16px 18px;background:#e7e9dc;border-left:3px solid #96a37f;font-size:12px;line-height:1.8;margin:22px 0 0}.role-goal strong{display:block;font-size:9px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:5px}.toast-region{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;display:grid;gap:10px;width:min(460px,calc(100% - 30px));pointer-events:none}.toast{border:1px solid #bbad83;background:#f5f0e8;box-shadow:0 10px 35px #0003;color:#354333;border-radius:5px;padding:14px 18px;font-size:12px;line-height:1.6;animation:toast-in .2s ease-out;pointer-events:auto}.toast.error{border-color:#a76157;color:#904b44}.toast-close{float:right;background:none;min-height:20px;margin-left:12px;font-size:17px}@keyframes toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
/* Game */
body.in-room{background:#e9e7dc}.in-room .site-header{height:74px;padding:0 30px;gap:40px}.in-room .header-tag{display:none}.in-room .brand-word{font-size:22px}.in-room .brand-mark{width:36px;height:36px;font-size:26px}.in-room .brand-mark span{font-size:14px;margin-bottom:6px}.in-room .site-header nav{margin-left:auto}.room-screen{max-width:1800px;margin:auto;padding:24px 25px 30px}.room-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:18px}.room-toolbar>div:first-child{display:flex;align-items:center;gap:15px}.room-toolbar .eyebrow{font-size:8px;color:#8a7c56}.room-toolbar h1{font-size:31px;line-height:1.1;overflow-wrap:anywhere}.icon-button{display:inline-grid;place-items:center;background:transparent;width:36px;min-height:36px;padding:0;border:1px solid #bfc4b6;border-radius:3px;font-size:19px;flex-shrink:0}.icon-button:hover{background:#daddd0}.room-toolbar-actions{display:flex;align-items:center;gap:10px}.room-code-button{display:flex;align-items:center;gap:10px;padding:8px 13px;background:#f4f1e7;border:1px solid #c7c9b9;border-radius:3px;font-size:9px;letter-spacing:.05em;color:#7c8372}.room-code-button strong{font-size:12px;color:#485641;letter-spacing:.13em}.room-code-button>span{font-size:15px}.game-grid{display:grid;grid-template-columns:220px minmax(380px,1fr) 330px;gap:18px;align-items:start}.case-sidebar,.village-column{min-width:0}.role-panel{background:var(--ink-deep);color:var(--paper);border-radius:5px;padding:23px 20px;position:relative;overflow:hidden}.role-panel:after{content:'✦';position:absolute;right:-12px;top:60px;font-size:115px;color:#ffffff03;pointer-events:none}.role-panel .eyebrow{font-size:7px;color:#a8b09b}.my-portrait{width:75px;height:75px;border-radius:50%;background-image:url('./assets/portraits.webp');background-size:400% 400%;border:2px solid #ba9d67;margin:18px auto 14px;box-shadow:0 0 0 5px #b09a5820;background-color:#626b5d}.role-panel h2{font-size:33px;line-height:1.05;text-align:center}.role-panel .role-faction{display:table;margin:10px auto 0;font-size:7px;background:#75805b35;color:#cad4b5}.role-panel .role-faction.mafia{background:#bf60542e;color:#e4aca0}.role-panel .role-faction.coven{background:#ad81ce2e;color:#dbc5ec}.role-panel .role-faction.neutral{background:#b0a4852e;color:#d9d0bd}.role-panel .role-faction.apocalypse{background:#d0656f2e;color:#dfacb3}.my-identity{text-align:center;color:#9da99c;font-size:10px;margin-top:9px;overflow-wrap:anywhere}.role-summary{color:#c0c8bc;font-size:10px;line-height:1.8;border-top:1px solid #ffffff16;margin-top:19px;padding-top:16px}.role-resources{display:flex;flex-wrap:wrap;gap:5px;margin-top:14px}.role-resources>span{font-size:8px;background:#ffffff0a;border:1px solid #ffffff12;border-radius:3px;padding:4px 6px;color:#bac4b1;overflow-wrap:anywhere}.role-status{font-size:9px;color:#e4c489;margin-top:10px;line-height:1.6}.notebook-buttons{margin:12px 0;display:grid;gap:7px}.notebook-button{background:#f7f5eb;border:1px solid #cdd0bf;padding:13px 11px;border-radius:4px;text-align:left;display:flex;align-items:center;gap:10px;width:100%}.notebook-button>span:first-child{font-family:Georgia,serif;font-size:23px;color:#818a6e}.notebook-button>span:nth-child(2){font-size:11px;flex:1}.notebook-button small{display:block;font-size:8px;color:#8a9181;margin-top:4px}.notebook-button>span:last-child{font-size:12px;color:#99a18f}.graveyard-panel{background:#f4f2e8;border:1px solid #cdd0bf;border-radius:4px;padding:15px 13px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.panel-heading h2{font-size:22px}.panel-heading>span{background:#e3e6d8;border-radius:50%;font-size:9px;width:20px;height:20px;display:grid;place-items:center;color:#7d886f}.small-empty{font-size:10px;color:#8b9480;line-height:1.7;padding:10px 0}.grave-row{display:flex;align-items:center;gap:8px;text-align:left;width:100%;background:transparent;border-top:1px solid #d9dccd;padding:10px 0}.grave-row>span:first-child{font-size:17px;color:#8b9380}.grave-row strong{font-size:10px;font-weight:500;display:block;overflow-wrap:anywhere}.grave-row small{font-size:8px;color:#8d957f;display:block;margin-top:3px}.grave-row>span:last-child{margin-left:auto;font-size:12px;color:#8f967e}.phase-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#f7f4eb;border:1px solid #cdd0bf;border-radius:5px 5px 0 0;padding:16px 20px;min-height:83px}.phase-banner>div:first-child{display:flex;gap:12px;align-items:center}.phase-banner>div:first-child>span{font-size:30px;color:#a98d56;font-family:Georgia,serif}.phase-banner #phase-day{font-size:8px;color:#92947d;letter-spacing:.11em}.phase-banner h2{font-size:27px;line-height:1.1;margin-top:3px}.phase-clock{text-align:right;flex-shrink:0}.phase-clock strong{display:block;font-size:26px;font-family:var(--serif);color:#627058;line-height:1}.phase-clock>span{display:block;font-size:6px;color:#92967e;letter-spacing:.08em;margin-top:5px}.phase-clock.urgent strong{color:#ac6150}.village-stage{position:relative;aspect-ratio:1/1;min-height:480px;max-height:740px;background:url('./assets/village-day.webp') center/cover,#394736;overflow:hidden;isolation:isolate;border-left:1px solid #717c60;border-right:1px solid #717c60}.village-stage.is-night{background-image:url('./assets/village-night.webp')}.village-scrim{position:absolute;inset:0;background:linear-gradient(0deg,#112621c4,transparent 30%,#14272240),radial-gradient(ellipse at center,#18322b2e,#192b23ae);z-index:-1}.is-night .village-scrim{background:linear-gradient(0deg,#111b2edb,transparent 30%,#15213960),radial-gradient(ellipse at center,#1a294836,#111c35b8)}.village-seats{position:absolute;inset:0}.seat{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:78px;display:flex;align-items:center;flex-direction:column;background:none;color:#f4f0e1;padding:0;z-index:2;min-height:0}.seat-portrait{width:53px;height:53px;border-radius:50%;background-image:url('./assets/portraits.webp');background-size:400% 400%;background-color:#66705a;border:2px solid #c7bc91;box-shadow:0 3px 9px #0007;position:relative;transition:transform .15s,border .15s}.seat:hover:not(:disabled) .seat-portrait{transform:scale(1.07);border-color:#e6c576}.seat.is-me .seat-portrait{border-color:#e5bb68;box-shadow:0 0 0 3px #e5bb6838,0 3px 9px #0007}.seat.dead .seat-portrait{filter:grayscale(1);opacity:.65}.seat.empty .seat-portrait{background:#24372e96;border:1px dashed #a1ae8c73;box-shadow:none;display:grid;place-items:center;font-family:var(--serif);font-size:23px;color:#bdc9a777}.seat-number{position:absolute;bottom:-4px;left:-5px;width:19px;height:19px;border-radius:50%;background:#eee4c7;color:#555f45;font-size:9px;display:grid;place-items:center;border:1px solid #b4ad8f}.seat-label{font-size:9px;font-weight:500;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px #000;margin-top:6px;padding:2px 5px;background:#16261e77;border-radius:2px;line-height:1.25}.seat.empty .seat-label{color:#b8c4ac8f;background:none;font-size:8px}.seat-badge{position:absolute;top:-5px;right:-8px;font-size:7px;background:#d3c49d;color:#36402b;border-radius:2px;padding:2px 4px;letter-spacing:.04em}.seat-votes{position:absolute;top:-6px;right:-8px;font-size:9px;border-radius:50%;width:20px;height:20px;display:grid;place-items:center;background:#bb614b;border:1px solid #e6b991;color:white}.seat.accused .seat-portrait{border-color:#dc8062;box-shadow:0 0 0 4px #d6715050}.seat.role-known .seat-label{color:#e8d6a7}.village-centre{position:absolute;left:50%;top:49%;transform:translate(-50%,-50%);width:47%;text-align:center;background:#132721a6;backdrop-filter:blur(3px);border:1px solid #d5caa343;padding:19px 10px;border-radius:4px;box-shadow:0 10px 35px #06190b2b}.is-night .village-centre{background:#151d32bd}.centre-eyebrow{font-size:7px;letter-spacing:.15em;color:#d7c999;margin-bottom:7px}.village-centre h3{font-size:27px;line-height:1.1;color:#f1ecd9;overflow-wrap:anywhere}.village-centre>p{font-size:9px;color:#c2cbb3;line-height:1.7;margin-top:9px}.village-centre .centre-glyph{display:block;color:#dbc283;font-family:Georgia,serif;font-size:36px;margin-bottom:8px}.village-centre .button{font-size:9px;min-height:33px;padding:7px 12px;margin-top:12px;width:100%}.stage-plaque{position:absolute;left:20%;right:20%;bottom:13px;text-align:center;font-size:7px;letter-spacing:.16em;color:#ccceb3;text-shadow:0 1px 4px #000}.action-panel{background:#f8f5eb;border:1px solid #cdd0bf;border-radius:0 0 5px 5px;padding:18px 20px;min-height:90px}.action-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.action-heading h2{font-size:24px}.action-heading>span{font-size:8px;color:#8a8e79}.action-description{font-size:10px;line-height:1.7;color:#7c846e}.action-form{display:grid;gap:10px;margin-top:13px}.action-form label{font-size:9px}.action-form select{font-size:10px;padding:9px 25px 9px 9px;margin-top:5px}.action-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.action-fields.three{grid-template-columns:repeat(3,1fr)}.action-form .button{font-size:10px;min-height:39px;padding:9px 16px;justify-content:space-between}.action-bottom-row{display:flex;gap:10px;align-items:center}.action-bottom-row .button{flex:1}.action-confirmation{color:#5d7754;font-size:10px;line-height:1.6;margin-top:9px}.lobby-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.lobby-actions .button{font-size:10px;min-height:38px;padding:8px 14px}.lobby-help{font-size:9px;color:#879075;margin-top:11px;line-height:1.7}.verdict-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.verdict-buttons button{font-size:10px;padding:10px 4px;border-radius:3px;border:1px solid #bdc4ac;background:#eef1e6}.verdict-buttons button[data-verdict=guilty]{color:#995344;background:#efe1d8;border-color:#d4b9aa}.verdict-buttons button[data-verdict=abstain]{color:#868574;background:#eeeadf;border-color:#cfccba}.verdict-buttons button.selected{outline:2px solid currentColor;outline-offset:1px}.role-list-panel{margin-top:11px;border:1px solid #cdd0bf;background:#f2f0e5;border-radius:4px}.role-list-panel>button{display:flex;justify-content:space-between;align-items:center;background:none;padding:11px 14px;width:100%;font-size:10px;color:#78816b}.role-list-panel>div{display:flex;flex-wrap:wrap;gap:5px;padding:0 13px 13px}.role-list-tag{font-size:8px;border:1px solid #c8ceba;background:#f8f7ef;padding:5px 6px;border-radius:3px;color:#748268}.chat-panel{background:#faf7ee;border:1px solid #cdd0bf;border-radius:5px;display:flex;flex-direction:column;height:min(805px,calc(100dvh - 185px));min-height:545px;position:sticky;top:18px;overflow:hidden}.chat-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:20px 15px 16px}.chat-heading>div{display:flex;align-items:center;gap:7px}.chat-heading h2{font-size:22px}.live-dot{width:5px;height:5px;border-radius:50%;background:#819b67}.chat-heading>span{font-size:8px;color:#8d967b;white-space:nowrap}.chat-channel-notice{font-size:8px;color:#8b907c;background:#f0f0e3;border-top:1px solid #e1e3d1;border-bottom:1px solid #e1e3d1;line-height:1.6;padding:9px 15px}.chat-messages{overflow-y:auto;flex:1;min-height:150px;padding:18px 14px;scrollbar-width:thin;scrollbar-color:#bbc2a8 transparent}.chat-message{margin-bottom:14px;overflow-wrap:anywhere}.chat-message-header{display:flex;align-items:center;gap:6px;margin-bottom:4px;flex-wrap:wrap}.chat-message-header strong{font-size:10px;font-weight:600;color:#677959}.chat-message-header time{font-size:7px;color:#a6a992;margin-left:auto}.chat-message-header .channel-tag{font-size:6px;color:#9b8a66;border:1px solid #dcd4be;padding:1px 3px;border-radius:2px;text-transform:uppercase;letter-spacing:.05em}.chat-message p{font-size:11px;line-height:1.65;color:#727969;white-space:pre-wrap}.chat-message.system{background:#eeefdf;border:1px solid #dde1cc;border-radius:3px;padding:10px 12px}.chat-message.system .chat-message-header strong{font-size:8px;text-transform:uppercase;letter-spacing:.06em}.chat-message.system p{font-size:10px;color:#7c8569}.chat-message.whisper{border-left:2px solid #b0a2bf;padding-left:10px}.chat-message.faction{border-left:2px solid #bca472;padding-left:10px}.chat-message.dead{opacity:.8}.chat-message.own .chat-message-header strong{color:#a88d59}.chat-empty{text-align:center;padding:40px 12px;font-size:11px;line-height:1.8;color:#949c85}.chat-empty>span{display:block;font-family:Georgia,serif;font-size:36px;margin-bottom:10px;color:#c2c8b0}.chat-form{border-top:1px solid #d9dfc9;padding:12px;background:#f0f0e3}.channel-controls{display:flex;gap:6px;margin-bottom:7px}.channel-controls select{font-size:9px;padding:6px 20px 6px 9px;min-height:30px;background:#f9f8ef;border-color:#d2d9c1;flex:1}.chat-compose{display:flex;gap:8px;background:#fcfbf4;border:1px solid #d4dac5;border-radius:3px;padding:6px;align-items:end}.chat-compose textarea{resize:none;background:transparent;border:0;font-size:10px;line-height:1.6;padding:5px 6px;min-height:44px;max-height:130px}.chat-compose textarea:focus{outline:none}.chat-compose:focus-within{outline:2px solid #b3b68b;outline-offset:1px}.chat-compose .icon-button{background:#304337;color:#e9e5cd;border-color:#304337;width:29px;min-height:29px;font-size:18px}.chat-hint{font-size:7px;color:#9aa386;display:block;margin-top:7px}.connection-banner{margin-bottom:14px;background:#f2dfb7;border:1px solid #c6aa69;border-radius:3px;padding:10px 16px;font-size:11px;color:#7d6539}.death-will{white-space:pre-wrap;font-size:12px;line-height:1.8;background:#fffaf0;padding:18px;border:1px solid var(--line);margin-top:14px;overflow-wrap:anywhere}.grave-detail-label{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:#87856d;margin-top:22px}.guesses-fields{display:grid;gap:8px}.guess-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.end-winner{font-size:14px;color:#e6d09b!important}.practice-advance{margin-top:11px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:9px;color:#899175;border-top:1px solid #dce0cc;padding-top:10px}.practice-advance button{font-size:9px;background:none;border:1px solid #c5ceb6;padding:7px 10px;border-radius:3px;min-height:30px}.busy{opacity:.7;pointer-events:none}
@media(min-width:1500px){.game-grid{grid-template-columns:245px minmax(460px,1fr) 370px;gap:24px}.room-screen{padding:25px 35px}.seat{width:89px}.seat-portrait{width:65px;height:65px}.seat-label{font-size:10px;max-width:90px}.village-centre h3{font-size:34px}.village-centre>p{font-size:11px}.village-centre{padding:25px 15px}.chat-panel{height:min(920px,calc(100dvh - 190px))}.chat-message p{font-size:12px}}
@media(max-width:1200px){.header-tag{display:none}.site-header nav{margin-left:auto}.game-grid{grid-template-columns:180px minmax(350px,1fr) 285px;gap:12px}.room-screen{padding:20px 15px}.role-panel{padding:18px 13px}.role-panel h2{font-size:28px}.notebook-button{padding:11px 9px;gap:6px}.notebook-button>span:nth-child(2){font-size:10px}.notebook-button small{font-size:7px}.phase-banner{padding:14px}.phase-banner h2{font-size:23px}.seat-portrait{width:46px;height:46px}.seat-label{font-size:8px;max-width:69px}.seat{width:68px}.village-stage{min-height:455px}.village-centre h3{font-size:24px}.chat-heading{padding:17px 12px}.chat-heading h2{font-size:20px}.chat-heading>span{font-size:7px}.chat-channel-notice{padding:8px 12px}.action-panel{padding:16px 14px}.role-summary{font-size:9px}.chapter-copy h3{font-size:37px}}
@media(max-width:1000px){.hero{min-height:550px}.hero-content{padding-top:65px}.hero-caption{right:4%;bottom:88px}.hero-caption>div{font-size:8px}.hero-caption>div>span{font-size:20px}.entry-grid{gap:20px;grid-template-columns:1.2fr 1fr}.join-panel{padding:22px}.ruleset-option{padding-left:12px;padding-right:30px}.ruleset-option strong{font-size:22px}.entry-options{gap:8px}.entry-options .text-link{font-size:9px}.invite-form{display:block}.invite-form>div{margin-top:9px}.chapter-copy{left:24px;right:24px;bottom:82px}.chapter-copy h3{font-size:34px}.chapter-card-foot{padding:20px 24px;font-size:9px}.game-grid{grid-template-columns:minmax(360px,1fr) 300px;grid-template-areas:'case case' 'village chat'}.case-sidebar{grid-area:case;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;align-items:stretch}.role-panel{padding:14px 14px 13px 78px;min-height:105px}.role-panel .eyebrow{font-size:6px}.my-portrait{position:absolute;left:13px;top:25px;margin:0;width:52px;height:52px}.role-panel h2{text-align:left;font-size:26px;margin-top:7px}.role-panel .role-faction{display:inline-block;margin-top:7px;margin-left:0;font-size:6px}.my-identity{text-align:left;font-size:8px;margin-top:5px}.role-summary{display:none}.role-resources{margin-top:8px}.role-status{font-size:8px}.notebook-buttons{margin:0;gap:8px}.graveyard-panel{padding:12px;max-height:145px;overflow:auto}.panel-heading{margin-bottom:6px}.panel-heading h2{font-size:21px}.grave-row{padding:6px 0}.village-column{grid-area:village}.chat-panel{grid-area:chat;height:740px;min-height:600px;position:sticky;top:12px}.village-stage{min-height:480px}.seat-portrait{width:51px;height:51px}.seat-label{max-width:75px}.village-centre h3{font-size:27px}.role-resources>span{font-size:7px}.in-room .site-header{padding:0 20px}.in-room .brand-word{font-size:22px}}
@media(max-width:760px){.site-header{height:80px;padding:0 6%;gap:20px}.site-header nav{gap:20px}.brand-word{font-size:22px}.brand-mark{width:36px;height:36px;font-size:27px}.brand-mark span{font-size:15px;margin-bottom:7px}.brand-word>span{font-size:7px}.home-link{display:none}.nav-link{font-size:10px}.hero{min-height:565px}.hero-art{background-position:60% 55%}.hero:before{background:linear-gradient(90deg,#13212ae6,#14212aa3 50%,#14212a33),linear-gradient(0deg,#111e29 0%,transparent 45%)}.hero-content{padding:65px 7% 114px;max-width:650px}.hero h1{font-size:64px}.hero-content>p{font-size:12px}.hero-caption{right:7%;bottom:65px;border:0;padding:0}.hero-caption>div{font-size:7px}.hero-caption>div>span{font-size:18px}.hero-caption .moon-icon{font-size:26px}.hero-meta{font-size:8px;gap:10px}.hero-bottom{font-size:7px;gap:20px;min-height:39px}.eyebrow{font-size:8px}.entry-section{padding-top:39px}.section-intro h2{font-size:36px}.section-intro>p{font-size:10px}.entry-grid{grid-template-columns:1fr}.join-panel{padding:25px}.chapter-card{min-height:305px}.chapter-art{background-position:50% 40%;background-image:linear-gradient(90deg,#172726f0,#1b292b90 60%,#1b292b15),url('./assets/village-day.webp')}.chapter-copy{top:30px;bottom:auto;left:28px;right:28px}.chapter-copy h3{font-size:32px;margin-top:20px;margin-bottom:10px}.chapter-copy>p{font-size:10px;max-width:270px;line-height:1.8}.text-link.light{margin-top:10px}.chapter-card-foot{padding:14px 28px;font-size:8px}.ruleset-option{min-height:106px;padding:15px}.ruleset-option strong{font-size:27px}.entry-options .text-link{font-size:10px}.invite-form{display:flex}.invite-form>div{margin-top:0}.how-strip{gap:24px;padding:40px 0}.how-strip article{padding:0}.how-strip h3{font-size:25px}.how-strip p{font-size:10px}.site-footer{flex-wrap:wrap;justify-content:center;padding:24px;gap:16px}.site-footer p{order:3;width:100%}.site-footer>span{font-size:17px}.village-section{padding-top:36px}.village-section .section-intro h2{font-size:31px}.room-row{padding:16px 15px;gap:12px}.room-row h3{font-size:22px}.room-occupancy{font-size:10px}.game-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:'case' 'village' 'chat';gap:13px}.case-sidebar{grid-template-columns:1.4fr 1fr;gap:10px}.graveyard-panel{grid-column:1/-1;max-height:135px;padding:10px 14px}.graveyard-panel .panel-heading{margin-bottom:0}.graveyard-panel #graveyard-list{display:flex;flex-wrap:wrap;gap:4px 15px}.graveyard-panel .small-empty{padding-top:5px;padding-bottom:0;font-size:9px}.graveyard-panel .grave-row{width:auto;min-width:120px;border:0}.graveyard-panel .grave-row>span:last-child{display:none}.notebook-button{min-height:48px;padding:8px 10px}.role-panel{min-height:110px}.village-stage{min-height:0;aspect-ratio:1.04}.seat{width:78px}.seat-portrait{width:56px;height:56px}.seat-label{font-size:9px;max-width:80px}.village-centre{width:46%;padding:21px 12px}.village-centre h3{font-size:31px}.village-centre>p{font-size:10px}.phase-banner{min-height:77px;padding:14px 19px}.phase-banner h2{font-size:27px}.chat-panel{position:static;min-height:440px;height:540px}.chat-heading h2{font-size:24px}.chat-heading{padding:15px 18px}.chat-heading>span{font-size:9px}.chat-channel-notice{font-size:9px;padding:10px 18px}.chat-message p{font-size:12px}.chat-message-header strong{font-size:11px}.chat-message-header time{font-size:8px}.chat-messages{padding:18px}.chat-form{padding:14px}.chat-compose textarea{font-size:12px}.chat-hint{font-size:8px}.channel-controls select{font-size:11px;min-height:35px}.action-panel{padding:18px}.action-form label{font-size:10px}.action-form select{font-size:12px;padding:10px}.action-form .button{font-size:11px;min-height:43px}.action-description{font-size:11px}.lobby-help{font-size:10px}.in-room .site-header{height:65px;padding:0 16px}.in-room .site-header nav{gap:16px}.in-room .brand-word{font-size:20px}.in-room .brand-mark{width:31px;height:31px;font-size:23px}.in-room .brand-mark span{font-size:12px;margin-bottom:6px}.in-room .brand-mark:after{height:10px;bottom:-7px}.in-room .brand{gap:8px}.in-room .brand-word>span{font-size:6px;letter-spacing:.35em}.room-screen{padding:17px 14px 25px}.room-toolbar h1{font-size:27px}.room-toolbar{gap:12px}.room-toolbar>div:first-child{gap:10px}.room-toolbar .eyebrow{font-size:6px}.room-code-button{font-size:7px;gap:6px;padding:8px}.room-code-button strong{font-size:10px}.room-toolbar-actions>.icon-button{display:none}.almanac-roles{grid-template-columns:1fr 1fr}.almanac-controls{grid-template-columns:1fr 1fr}.almanac-controls input{grid-column:1/-1}.paper-dialog{padding:29px 25px}.guide-grid{gap:23px}.guide-grid p{font-size:10px}.paper-dialog h2{font-size:37px}}
@media(max-width:440px){.site-header{padding:0 5%;height:74px}.site-header nav{gap:14px}.brand-word{font-size:19px}.brand-mark{width:31px;height:31px;font-size:23px}.brand-mark span{font-size:13px;margin-bottom:6px}.brand{gap:9px}.brand-word>span{font-size:6px}.nav-link{font-size:9px}.hero h1{font-size:54px}.hero{min-height:535px}.hero-content{padding-top:55px}.hero-caption{bottom:61px}.hero-meta{font-size:7px;gap:8px}.hero-content>p{font-size:11px}.hero .eyebrow{font-size:6px}.hero-cta{min-width:175px;font-size:11px}.hero-bottom{font-size:6px;letter-spacing:.18em}.section-wrap{width:90%}.section-intro{gap:10px}.section-intro h2{font-size:33px}.section-intro>p{font-size:8px}.section-intro .eyebrow{font-size:6px}.join-panel{padding:19px}.ruleset-option strong{font-size:23px}.ruleset-option{padding:13px 11px;min-height:99px}.ruleset-option>span:not(.chapter):not(.rule-icon){font-size:8px}.chapter{font-size:7px}.rule-icon{right:9px;bottom:12px;font-size:26px}.ruleset-tabs{gap:9px}.entry-options .text-link{font-size:8px}.invite-form{display:block}.invite-form>div{margin-top:9px}.how-strip{grid-template-columns:1fr;gap:25px;padding:35px 0}.how-strip article{position:relative;padding-left:57px}.how-strip article>span{position:absolute;left:0;top:9px;display:flex;flex-direction:column;gap:7px;font-size:8px}.how-strip h3{font-size:28px;margin-top:0;margin-bottom:6px}.how-strip p{font-size:11px;max-width:none}.room-row{gap:9px}.room-emblem{width:31px;height:31px;font-size:23px}.room-row h3{font-size:20px}.room-row-info p{font-size:8px}.room-row .button{padding:7px 10px}.room-occupancy{font-size:9px}.empty-state{padding:25px 20px;font-size:10px}.room-screen{padding:14px 10px 20px}.room-toolbar{gap:9px;margin-bottom:13px}.room-toolbar h1{font-size:24px}.room-toolbar .icon-button{width:29px;min-height:29px;font-size:16px}.room-code-button{font-size:6px;gap:5px}.room-code-button strong{font-size:9px}.room-code-button>span{font-size:12px}.case-sidebar{grid-template-columns:1.15fr 1fr;gap:8px}.role-panel{padding:12px 10px 11px 62px;min-height:104px}.my-portrait{left:9px;top:26px;width:43px;height:43px}.role-panel h2{font-size:23px}.role-panel .role-faction{font-size:5px;padding:3px 4px}.my-identity{font-size:7px}.role-panel .eyebrow{font-size:5px;letter-spacing:.1em}.notebook-button{padding:8px 7px;gap:5px}.notebook-button>span:first-child{font-size:20px}.notebook-button>span:nth-child(2){font-size:9px}.notebook-button small{font-size:6px}.notebook-button>span:last-child{display:none}.graveyard-panel .panel-heading h2{font-size:20px}.village-stage{aspect-ratio:.97}.seat{width:65px}.seat-portrait{width:43px;height:43px;border-width:1px}.seat-label{font-size:7px;max-width:67px;margin-top:5px}.seat-number{width:15px;height:15px;font-size:7px;bottom:-3px;left:-3px}.seat-badge{font-size:5px;top:-4px;right:-4px;padding:2px 3px}.seat-votes{width:17px;height:17px;font-size:8px;right:-6px;top:-4px}.village-centre{width:45%;padding:14px 9px}.village-centre h3{font-size:24px}.village-centre>p{font-size:8px}.centre-eyebrow{font-size:5px;letter-spacing:.13em}.village-centre .centre-glyph{font-size:28px;margin-bottom:6px}.stage-plaque{font-size:5px;bottom:10px}.phase-banner{padding:12px 14px;min-height:70px}.phase-banner h2{font-size:23px}.phase-banner>div:first-child{gap:9px}.phase-banner>div:first-child>span{font-size:25px}.phase-clock strong{font-size:23px}.phase-clock>span{font-size:5px}.phase-banner #phase-day{font-size:6px}.action-panel{padding:15px 13px}.action-heading h2{font-size:23px}.action-heading>span{font-size:7px}.action-fields.three{grid-template-columns:1fr}.lobby-actions .button{padding:8px 10px;font-size:9px}.paper-dialog{padding:28px 21px}.guide-grid{grid-template-columns:1fr}.almanac-roles{gap:9px}.almanac-role{padding:13px;min-height:190px}.almanac-role h3{font-size:23px}.almanac-role p{font-size:9px}.almanac-controls select{font-size:9px;padding-left:9px}.role-faction{font-size:6px}.paper-dialog h2{font-size:34px}.paper-dialog>p:not(.eyebrow){font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.action-fields.single{grid-template-columns:1fr}
.almanac-research-note{margin-top:7px;padding:10px 12px;border-left:2px solid #c5b58b;background:#eeeadd}
.custom-deck-section{border-top:1px solid var(--line);padding-top:17px}.checkbox-label{display:flex;align-items:start;gap:10px;cursor:pointer;line-height:1.6}.checkbox-label input{width:16px;height:16px;margin:2px 0 0;accent-color:#52634b;flex-shrink:0}.checkbox-label>span{font-size:11px}.checkbox-label small{font-size:9px;color:#878775;font-weight:400;margin-top:2px}.deck-dialog{width:min(620px,calc(100% - 28px))}.deck-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:18px 0 13px}.deck-editor-heading>p{font-family:var(--serif);font-size:22px;line-height:1.2}.deck-editor-heading>p>span{font-family:var(--sans);font-size:9px;color:#838572}.deck-editor-heading .text-link{font-size:9px}.deck-column-labels,.deck-slot{display:grid;grid-template-columns:22px 1.15fr 1fr;gap:9px;align-items:center}.deck-column-labels{padding:0 9px 7px 0;font-size:8px;color:#8a8a76;letter-spacing:.08em;text-transform:uppercase}.custom-deck-slots{max-height:330px;overflow-y:auto;padding:2px 8px 2px 0;scrollbar-width:thin;scrollbar-color:#bfc3a7 transparent;display:grid;gap:7px}.deck-slot>span{font-size:9px;color:#98957d;text-align:center}.deck-slot select{font-size:11px;padding:8px 23px 8px 9px;min-height:36px}.deck-slot select:disabled{opacity:1;background:#edeade;color:#8c8e79}.custom-deck-section .small-note{margin-top:12px;font-size:9px!important}@media(max-width:440px){.deck-column-labels,.deck-slot{grid-template-columns:17px 1.1fr 1fr;gap:6px}.deck-slot select{font-size:9px;padding:8px 18px 8px 7px}.deck-editor-heading>p{font-size:20px}.deck-editor-heading .text-link{font-size:8px}.deck-editor-heading>p>span{font-size:8px}}
.horsemen-option{margin-top:14px}
.overcharge-summary{margin-top:15px;padding:12px 14px;background:#ece4f0;border:1px solid #cfc0d4;border-radius:4px;font-size:10px;color:#7c608b}.overcharge-summary strong{font-size:10px}.overcharge-summary p{font-size:9px;line-height:1.8;margin-top:5px}
.facade-editor{border:1px solid #cdbfd2;background:#eee7f0;border-radius:4px;padding:18px}.facade-editor h3{font-size:27px;color:#796184}.facade-editor>p{font-size:10px;line-height:1.8;color:#88738e;margin-top:8px}.facade-editor .action-fields{margin-top:15px}.facade-editor select{font-size:11px}.facade-editor .button{margin-top:12px}.action-form textarea{font-size:11px;line-height:1.7;margin-top:7px}
.preset-note{font-size:9px;line-height:1.8;color:#7f806e;padding:10px 12px;border-left:2px solid #b9ad85;background:#f0eddf;margin:-4px 0 16px}.room-modifiers{padding:11px 14px;margin-top:11px;background:#f0eddf;border:1px solid #d5d2bd;border-radius:4px}.room-modifiers p{font-size:9px;line-height:1.8;color:#85866f}.room-modifiers p+p{margin-top:5px}.room-modifiers strong{color:#6f785c;font-weight:600}

/* Village motion: every moving layer stays separate from text and controls. */
:root{--motion-ease:cubic-bezier(.2,.7,.25,1)}
#motion-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:6px 9px;border:1px solid #c5b78c45;border-radius:3px;background:#ffffff04;color:#c2c7bc;font-size:9px;letter-spacing:.02em;white-space:nowrap;flex-shrink:0}
#motion-toggle::before{content:'';width:5px;height:5px;border-radius:50%;background:#899080;box-shadow:none}
#motion-toggle[aria-pressed=true]{color:#efd6a3;border-color:#d2b27378}
#motion-toggle[aria-pressed=true]::before{background:#e1bc76;box-shadow:0 0 7px #e1bc7680}
#motion-toggle:hover{background:#d5b66b18}
.hero::after,.hero-art::before,.hero-art::after,.chapter-art::after,.village-stage::before,.village-stage::after,.village-scrim::before,.village-scrim::after{content:'';position:absolute;pointer-events:none}
.hero::after{inset:0;z-index:-1;background:radial-gradient(ellipse at 68% 48%,#f6b84b29 0,transparent 12%),radial-gradient(ellipse at 84% 61%,#f2b14d2b 0,transparent 9%),radial-gradient(ellipse at 53% 74%,#eab25b1c 0,transparent 11%);opacity:.68}
.hero-art::before{inset:-8%;background:radial-gradient(ellipse at 65% 88%,#becedc35 0,transparent 31%),radial-gradient(ellipse at 27% 85%,#b6c4d226 0,transparent 27%);opacity:.5}
.hero-art::after{inset:0;background:radial-gradient(circle at 63% 32%,#ffe0a8 0 1px,transparent 2px),radial-gradient(circle at 76% 60%,#ffe1ab 0 1.5px,transparent 3px),radial-gradient(circle at 89% 41%,#eec895 0 1px,transparent 2px),radial-gradient(circle at 54% 72%,#edcd98 0 1px,transparent 2px),radial-gradient(circle at 92% 72%,#ffe8ba 0 1px,transparent 2px);opacity:.45}
.chapter-art::after{inset:-7%;background:radial-gradient(ellipse at 68% 36%,#fae7af29 0,transparent 34%),radial-gradient(ellipse at 34% 72%,#d8e1d521 0,transparent 32%);opacity:.6}
.village-stage,.village-stage.is-night{background-image:url('./assets/village-day.webp')}
.village-stage::before{inset:0;z-index:-3;background:url('./assets/village-night.webp') center/cover;opacity:0}
.village-stage.is-night::before{opacity:1}
.village-stage::after{inset:-10%;z-index:-1;background:radial-gradient(ellipse at 18% 79%,#dce7dc54 0,transparent 28%),radial-gradient(ellipse at 77% 75%,#dbe5df3b 0,transparent 33%),radial-gradient(ellipse at 45% 99%,#b7ccc33b 0,transparent 37%);opacity:.26}
.village-stage.is-night::after{opacity:.5}
.village-scrim{z-index:-2;overflow:hidden}
.village-scrim::before{--lantern-strength:.25;inset:0;background:radial-gradient(ellipse at 25% 57%,#ffd17e4d 0,transparent 10%),radial-gradient(ellipse at 70% 52%,#ffc57947 0,transparent 11%),radial-gradient(ellipse at 55% 82%,#e3a0563b 0,transparent 10%);opacity:.18}
.is-night .village-scrim::before{--lantern-strength:1;opacity:.7}
.village-scrim::after{inset:2%;background:radial-gradient(circle at 16% 34%,#ffe4ac 0 1px,transparent 2px),radial-gradient(circle at 77% 44%,#ffe5ba 0 1.5px,transparent 3px),radial-gradient(circle at 64% 76%,#f8d5a2 0 1px,transparent 2px),radial-gradient(circle at 38% 65%,#eddaaa 0 1px,transparent 2px),radial-gradient(circle at 88% 72%,#ffdfa3 0 1px,transparent 2px);opacity:.32}
.is-night .village-scrim::after{opacity:.68}
.seat-portrait::after{content:'';position:absolute;inset:-5px;border:1px solid #eac77e75;border-radius:50%;opacity:0;pointer-events:none}
.seat:focus-visible{outline:2px solid var(--gold-light);outline-offset:6px;border-radius:7px}
.seat:focus-visible .seat-portrait{border-color:#f4d28c;box-shadow:0 0 0 4px #e5bb6840,0 4px 12px #0006}
.seat.dead .seat-portrait::after,.seat.empty .seat-portrait::after{display:none}
.chat-message.message-enter,.chat-message.ch-motion-message{transform-origin:0 50%}

/* Phase announcements are brief, non-interactive, and never displace the board. */
.ch-motion-banner{--announcement-accent:#d9bc7e;position:fixed;left:50%;top:86px;z-index:70;width:min(430px,calc(100% - 32px));padding:17px 29px 18px;transform:translate(-50%,-9px);border:1px solid #d2b47780;border-radius:5px;background:linear-gradient(135deg,#273b32fa,#172b25fa);box-shadow:0 13px 45px #101b2940;color:#f3ecdb;text-align:center;pointer-events:none;opacity:0;visibility:hidden;isolation:isolate}
.ch-motion-banner::before,.ch-motion-banner::after{content:'';position:absolute;top:14px;bottom:14px;width:1px;background:linear-gradient(transparent,var(--announcement-accent),transparent);opacity:.55;pointer-events:none}
.ch-motion-banner::before{left:9px}.ch-motion-banner::after{right:9px}
.ch-motion-banner__eyebrow{display:block;font-family:var(--sans);font-size:8px;line-height:1.5;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--announcement-accent);margin:0 0 5px}
.ch-motion-banner__title{display:block;font-family:var(--serif);font-weight:400;font-size:35px;line-height:1.08;color:#f5efdf;margin:0;overflow-wrap:anywhere}
.ch-motion-banner__detail{display:block;font-family:var(--sans);font-size:10px;line-height:1.7;color:#c5cfc4;margin:7px 0 0;overflow-wrap:anywhere}
.ch-motion-banner--night{--announcement-accent:#c6b0de;background:linear-gradient(135deg,#30344efa,#1c263bfa);border-color:#a69bc578}
.ch-motion-banner--voting{--announcement-accent:#e0c58a;background:linear-gradient(135deg,#484433fa,#292f28fa)}
.ch-motion-banner--conviction{--announcement-accent:#e4ad8c;background:linear-gradient(135deg,#493b36fa,#302d2cfa);border-color:#b889737d}
.ch-motion-banner--end{--announcement-accent:#efd49a;background:linear-gradient(135deg,#4c4630fa,#273b31fa);border-color:#e0c48991}
.ch-motion-banner.ch-motion-visible,.ch-motion-banner.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0)}

html.motion-enabled .hero-art{animation:ch-scene-drift 38s ease-in-out infinite alternate}
html.motion-enabled .hero::after{animation:ch-lantern-light 7.3s ease-in-out infinite alternate}
html.motion-enabled .hero-art::before{animation:ch-mist-drift 27s ease-in-out infinite alternate}
html.motion-enabled .hero-art::after{animation:ch-firefly-drift 13s ease-in-out infinite alternate}
html.motion-enabled .chapter-art::after{animation:ch-mist-drift 23s ease-in-out infinite alternate-reverse}
html.motion-enabled .village-stage::before{transition:opacity 1.7s ease-in-out}
html.motion-enabled .village-stage::after{animation:ch-mist-drift 19s ease-in-out infinite alternate;transition:opacity 1.5s ease}
html.motion-enabled .village-scrim::before{animation:ch-lantern-light 6.7s ease-in-out infinite alternate}
html.motion-enabled .village-scrim::after{animation:ch-firefly-drift 11s ease-in-out infinite alternate}
html.motion-enabled .village-centre,html.motion-enabled .phase-banner{transition:background-color 1.2s ease,border-color 1.2s ease,box-shadow 1.2s ease}
html.motion-enabled .seat:where(:not(.empty):not(.dead)) .seat-portrait{animation:ch-portrait-idle 6.2s ease-in-out infinite}
html.motion-enabled .seat:nth-child(3n+1) .seat-portrait{animation-delay:-1.8s}
html.motion-enabled .seat:nth-child(3n+2) .seat-portrait{animation-delay:-3.6s}
html.motion-enabled .seat:nth-child(5n) .seat-portrait{animation-duration:7.6s}
html.motion-enabled .seat.is-me:not(.dead) .seat-portrait::after{animation:ch-portrait-halo 5s ease-in-out infinite}
html.motion-enabled .my-portrait{animation:ch-portrait-idle 7.4s ease-in-out infinite}
html.motion-enabled .seat-portrait{transition:transform .2s var(--motion-ease),border-color .2s ease,box-shadow .2s ease,filter .65s ease,opacity .65s ease}
html.motion-enabled :is(.ruleset-option,.almanac-role,.room-row,.notebook-button,.icon-button,.dialog-close,.room-code-button,.verdict-buttons button,#motion-toggle){transition:transform .2s var(--motion-ease),background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease}
html.motion-enabled :is(.button,.text-link,.notebook-button)>span:last-child{transition:transform .2s var(--motion-ease)}
html.motion-enabled :is(.button,.icon-button,.notebook-button,.ruleset-option,.almanac-role,.verdict-buttons button):active:not(:disabled){transform:translateY(1px) scale(.985)}
html.motion-enabled .paper-dialog[open]{animation:ch-dialog-enter .32s var(--motion-ease) both}
html.motion-enabled .paper-dialog[open]::backdrop{animation:ch-backdrop-enter .3s ease both}
html.motion-enabled .ch-motion-banner{transition:opacity .25s ease,transform .3s var(--motion-ease),visibility .3s}

@media(hover:hover) and (pointer:fine){
  html.motion-enabled .ruleset-option:hover,html.motion-enabled .almanac-role:hover{transform:translateY(-3px);box-shadow:0 7px 18px #584e3012}
  html.motion-enabled .notebook-button:hover{transform:translateX(2px);background:#fcfaef;border-color:#b7bd9d}
  html.motion-enabled .room-row:hover{background:#f1efe3}
  html.motion-enabled :is(.button,.text-link,.notebook-button):hover>span:last-child{transform:translateX(3px)}
  html.motion-enabled .seat:hover .seat-portrait::after{opacity:.65}
}
@keyframes ch-scene-drift{from{transform:scale(1.035) translateX(-.4%)}to{transform:scale(1.07) translateX(.5%)}}
@keyframes ch-mist-drift{from{transform:translate3d(-3%,1%,0) scale(1.02)}to{transform:translate3d(4%,-2%,0) scale(1.08)}}
@keyframes ch-lantern-light{0%,100%{opacity:calc(.42 * var(--lantern-strength,1))}37%{opacity:calc(.78 * var(--lantern-strength,1))}64%{opacity:calc(.57 * var(--lantern-strength,1))}}
@keyframes ch-firefly-drift{0%{transform:translate3d(-3px,6px,0);opacity:.25}45%{opacity:.72}100%{transform:translate3d(8px,-9px,0);opacity:.42}}
@keyframes ch-portrait-idle{0%,100%{translate:0 0}50%{translate:0 -1.8px}}
@keyframes ch-portrait-halo{0%,100%{opacity:.16;transform:scale(.98)}50%{opacity:.58;transform:scale(1.05)}}
@keyframes ch-dialog-enter{from{opacity:0;transform:translateY(12px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes ch-backdrop-enter{from{opacity:0}to{opacity:1}}
@media(max-width:760px){
  #motion-toggle{padding:5px 7px;min-height:30px;font-size:8px;gap:5px}
  .in-room .site-header nav{gap:12px}
  .ch-motion-banner{top:76px;width:min(380px,calc(100% - 28px));padding:14px 24px 15px}
  .ch-motion-banner__title{font-size:30px}
  .ch-motion-banner__eyebrow{font-size:7px}
  .ch-motion-banner__detail{font-size:9px}
  html.motion-enabled .hero-art{animation:none}
  html.motion-enabled .village-stage::after{animation-duration:24s}
}
@media(max-width:440px){
  .in-room .site-header nav{gap:9px}
  #motion-toggle{padding:5px 6px;font-size:7px;gap:4px}
  #motion-toggle::before{width:4px;height:4px}
  .ch-motion-banner{top:73px}
}
@media(max-width:600px){
  .site-header,.in-room .site-header{display:grid;grid-template-columns:minmax(0,1fr) auto;height:auto;min-height:100px;padding:12px 16px 9px;column-gap:16px;row-gap:10px}
  .site-header .brand{grid-column:1;grid-row:1;justify-self:start}
  .site-header nav,.in-room .site-header nav{grid-column:1/-1;grid-row:2;width:100%;margin-left:0;gap:16px;justify-content:space-between;border-top:1px solid #d9caac15;padding-top:3px}
  .site-header nav .nav-link{min-height:27px;padding:5px 0;font-size:10px}
  #motion-toggle{grid-column:2;grid-row:1;font-size:9px;padding:6px 9px;min-height:31px}
  #motion-toggle::before{width:5px;height:5px}
  .ch-motion-banner{top:113px;width:min(380px,calc(100% - 28px))}
}
html.motion-paused *,html.motion-paused *::before,html.motion-paused *::after{animation-play-state:paused!important;transition:none!important}
html.motion-paused .paper-dialog::backdrop{animation-play-state:paused!important;transition:none!important}
html:not(.motion-enabled),html:not(.motion-enabled) *,html:not(.motion-enabled) *::before,html:not(.motion-enabled) *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html:not(.motion-enabled) .paper-dialog::backdrop{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){
  html,html:focus-within{scroll-behavior:auto!important}
  *,*::before,*::after{animation:none!important;animation-iteration-count:1!important;transition:none!important;scroll-behavior:auto!important}
  .paper-dialog::backdrop{animation:none!important;transition:none!important}
  .hero-art,.hero-art::before,.hero-art::after,.chapter-art::after,.village-stage::after,.village-scrim::before,.village-scrim::after{transform:none!important}
  .seat-portrait,.my-portrait{translate:none!important}
}

/* Sound controls share the header without crowding navigation. */
.header-settings{display:flex;align-items:center;gap:7px;flex-shrink:0;margin-left:auto}
.header-settings #motion-toggle{grid-column:auto;grid-row:auto}
.header-settings>button{min-height:33px;font-size:9px;white-space:nowrap}
#audio-mute,#audio-settings-open{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 9px;border:1px solid #c5b78c45;border-radius:3px;background:#ffffff04;color:#c2c7bc;letter-spacing:.02em;flex-shrink:0}
#audio-mute::before{content:'';width:5px;height:5px;border-radius:50%;background:#899080;flex-shrink:0}
#audio-mute[aria-pressed=false]{color:#efd6a3;border-color:#d2b27378}
#audio-mute[aria-pressed=false]::before{background:#e1bc76;box-shadow:0 0 7px #e1bc7680}
#audio-settings-open{color:#e4d8bb;background:#d5b66b0c}
#audio-mute:hover,#audio-settings-open:hover{background:#d5b66b18;border-color:#d2b27378}
.audio-dialog{width:min(490px,calc(100% - 28px))}
.audio-dialog h2{font-size:41px}
.audio-volume-controls{display:grid;gap:23px;margin:26px 0 23px;padding:22px 19px 16px;background:#ece9dd;border:1px solid #d6cfb9;border-radius:4px}
.audio-volume-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.audio-volume-heading label{font-size:12px;color:#4b5c47;letter-spacing:0}
.audio-volume-heading output{min-width:42px;padding:4px 6px;font-size:10px;text-align:center;font-variant-numeric:tabular-nums;color:#6e725c;background:#f8f5e9;border:1px solid #d4ccb5;border-radius:3px}
.audio-volume-row>p{margin:6px 0 9px;font-size:10px;color:#828573;line-height:1.7}
.audio-volume-row input[type=range]{appearance:none;-webkit-appearance:none;display:block;width:100%;height:30px;min-height:30px;padding:0;margin:0;background:transparent;border:0;border-radius:3px;cursor:pointer;accent-color:#637455}
.audio-volume-row input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:#c4c7b0;box-shadow:inset 0 1px 1px #75815b18}
.audio-volume-row input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:19px;height:19px;margin-top:-7.5px;border:2px solid #75805e;border-radius:50%;background:#f3e9cb;box-shadow:0 2px 5px #4f563522}
.audio-volume-row input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:#c4c7b0}
.audio-volume-row input[type=range]::-moz-range-progress{height:4px;border-radius:4px;background:#80916c}
.audio-volume-row input[type=range]::-moz-range-thumb{width:15px;height:15px;border:2px solid #75805e;border-radius:50%;background:#f3e9cb;box-shadow:0 2px 5px #4f563522}
.audio-preview-section{margin:0 0 24px}
.audio-preview-section h3{font-size:24px;color:#5c6852;margin:0 0 12px}
.audio-preview-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.audio-preview-buttons button{padding:9px 10px;min-height:38px;font-size:10px;text-align:center;background:#f9f6eb;color:#71775f;border:1px solid #d2cbb5;border-radius:3px}
.audio-preview-buttons button:hover{background:#e8eadb;border-color:#aeb795;color:#4b6243}
#audio-enable{justify-content:center}
.audio-dialog .audio-status{margin-top:14px;padding:10px 13px;min-height:38px;background:#e6eadb;border-left:2px solid #98a27e;color:#68775c;font-size:10px;line-height:1.7}
.audio-dialog .audio-saved-note{margin-top:12px;font-size:9px;line-height:1.8;color:#898875}
html.motion-enabled :is(#audio-mute,#audio-settings-open,.audio-preview-buttons button){transition:background-color .2s ease,border-color .2s ease,color .2s ease}
@media(min-width:1001px){.site-header{column-gap:clamp(20px,3vw,50px)}.in-room .site-header{column-gap:24px}.header-tag{margin-left:0}}
@media(max-width:1000px){
  .site-header,.in-room .site-header{display:grid;grid-template-columns:auto minmax(0,1fr);height:auto;min-height:108px;padding:13px 24px 11px;column-gap:22px;row-gap:10px}
  .site-header .brand{grid-column:1;grid-row:1;justify-self:start}
  .site-header nav,.in-room .site-header nav{grid-column:2;grid-row:1;display:flex;justify-content:flex-end;width:auto;min-width:0;margin-left:0;gap:20px;border-top:0;padding-top:0}
  .header-settings{grid-column:1/-1;grid-row:2;justify-content:flex-end;width:100%;margin-left:0;padding-top:9px;border-top:1px solid #d9caac15}
  .header-settings #motion-toggle{grid-column:auto;grid-row:auto;padding:6px 9px;font-size:9px;min-height:33px}
  .header-settings>button{min-height:33px}
  .ch-motion-banner{top:122px}
}
@media(max-width:600px){
  .site-header,.in-room .site-header{padding:12px 16px 11px;column-gap:14px;row-gap:9px}
  .site-header nav,.in-room .site-header nav{gap:13px}
  .site-header nav .nav-link{font-size:9px;min-height:32px;padding:5px 0}
  .header-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding-top:9px}
  .header-settings>button,.header-settings #motion-toggle{min-width:0;width:100%;padding:7px 5px;font-size:9px;min-height:34px}
  .audio-volume-controls{padding:19px 15px 14px;margin-top:22px;gap:20px}
  .audio-dialog h2{font-size:35px}
  .audio-preview-section h3{font-size:23px}
  .ch-motion-banner{top:125px}
}

/* Secret dossiers and short, recipient-safe game cinematics. */
.ch-role-reveal{width:min(460px,calc(100% - 36px));max-width:none;max-height:calc(100dvh - 24px);padding:0;border:0;overflow:visible;color:var(--ink);background:transparent}
.ch-role-reveal::backdrop{background:#09141de8;backdrop-filter:blur(6px)}
.ch-dossier{--dossier-accent:#947b49;position:relative;isolation:isolate;max-height:calc(100dvh - 145px);overflow-x:hidden;overflow-y:auto;padding:29px 32px 24px;border:1px solid #d3b677;border-radius:6px;background:radial-gradient(ellipse at 50% 15%,#fff9e8,transparent 65%),linear-gradient(120deg,#e6deca,#f6efdf 48%,#e5ddc7);box-shadow:0 20px 90px #0007,0 0 0 5px #c8b27b12;text-align:center;scrollbar-width:thin;scrollbar-color:#b4ab8e transparent}
.ch-dossier::before{content:'';position:absolute;inset:9px;border:1px solid #b8a77a5c;border-radius:2px;pointer-events:none;z-index:-1}
.ch-dossier[data-faction=town]{--dossier-accent:#718263}.ch-dossier[data-faction=mafia]{--dossier-accent:#a46b55}.ch-dossier[data-faction=coven]{--dossier-accent:#9473a2}.ch-dossier[data-faction=apocalypse]{--dossier-accent:#995d64}
.ch-dossier-content{position:relative}
.ch-dossier-eyebrow{font-family:var(--sans);font-size:8px;font-weight:600;letter-spacing:.23em;color:#8a7b54;line-height:1.6}
.ch-dossier-case{font-family:var(--serif);font-size:18px;font-style:italic;color:#9a9077;margin:7px 0 22px}
.ch-dossier-portrait{width:100px;height:100px;margin:0 auto 22px;border:3px solid var(--dossier-accent);border-radius:50%;background-image:url('./assets/portraits.webp');background-size:400% 400%;background-color:#737d63;box-shadow:0 0 0 7px #c6a76a12}
.ch-dossier-title{font-family:var(--serif);font-size:48px;font-weight:400;line-height:1.04;letter-spacing:-.02em;color:#354336;overflow-wrap:anywhere;margin:0}
.ch-dossier-allegiance{display:inline-block;padding:6px 10px;margin-top:13px;border:1px solid var(--dossier-accent);border-radius:2px;color:var(--dossier-accent);font-size:9px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;line-height:1.5}
.ch-dossier-alignment{font-size:9px;letter-spacing:.07em;color:#93927e;margin-top:8px}
.ch-dossier-description{font-size:12px;line-height:1.85;color:#717760;margin:20px 0 0;overflow-wrap:anywhere}
.ch-dossier-secret{font-family:var(--serif);font-size:17px;font-style:italic;line-height:1.5;color:#9b8c69;border-top:1px solid #c1b49266;padding-top:15px;margin-top:18px}
.ch-dossier-cover{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;padding:32px;transform-origin:0 50%;backface-visibility:hidden;background:radial-gradient(ellipse at 50% 40%,#395044,#243b30 55%,#192a23);border-radius:inherit;border:1px solid #b9a373;color:#e6d6ac;pointer-events:none}
.ch-dossier-cover::before,.ch-dossier-cover::after{content:'';position:absolute;inset:12px;border:1px solid #b9a37366;border-radius:2px;pointer-events:none}
.ch-dossier-cover::after{inset:18px;border-color:#b9a37324}
.ch-dossier-cover-label{font-size:8px;font-weight:600;letter-spacing:.22em;color:#acb198;line-height:1.7}
.ch-dossier-seal{position:relative;display:grid;place-items:center;width:84px;height:84px;margin:14px 0 8px;border:3px double #d6a37a85;border-radius:50%;background:radial-gradient(circle at 38% 30%,#a4654c,#743e35 68%,#532f2b);box-shadow:inset 0 2px 6px #edb58e25,inset 0 -4px 9px #2b111944,0 8px 15px #0003;color:#e6b88d;font-family:var(--serif);font-size:35px;letter-spacing:-.03em}
.ch-dossier-seal::after{content:'';position:absolute;inset:5px;border:1px solid #dcaf7d45;border-radius:50%}
.ch-dossier-cover-title{font-family:var(--serif);font-size:43px;font-weight:400;letter-spacing:.02em;line-height:1.2}
.ch-dossier-cover-caption{font-family:var(--serif);font-size:18px;font-style:italic;color:#a8b39d;line-height:1.5}
.ch-reveal-dismiss{width:100%;margin-top:13px;min-height:46px;box-shadow:0 6px 24px #0005}
.ch-reveal-footnote{font-family:var(--sans);font-size:9px;color:#b1bdae;line-height:1.7;text-align:center;margin:11px 3px 0}
.ch-role-inline{position:relative;margin-top:14px;padding:11px 12px;background:#bba36619;border:1px solid #c6ad715c;border-radius:3px;color:#f1d49c;font-size:10px;line-height:1.6}
.ch-role-inline strong,.ch-role-inline span{display:block}.ch-role-inline span{color:#b8c4ae;font-size:9px;margin-top:3px}
.action-panel{position:relative}
.ch-effect--investigate{--effect-color:#d8c18b}.ch-effect--protect{--effect-color:#a9cda9}.ch-effect--attack{--effect-color:#da9b83}.ch-effect--control{--effect-color:#c4aad9}.ch-effect--support{--effect-color:#d9cb9e}
.ch-ability-note{position:absolute;bottom:calc(100% + 10px);left:12px;right:12px;z-index:8;padding:11px 14px;background:#20372df2;color:#e1e6d5;border:1px solid var(--effect-color,#c6b783);border-radius:4px;box-shadow:0 6px 20px #0f211544;pointer-events:none;text-align:left;overflow-wrap:anywhere}
.ch-ability-note strong{display:block;font-size:11px;font-weight:600;color:var(--effect-color,#dac89a);line-height:1.5}
.ch-ability-note span{display:block;font-size:9px;line-height:1.7;color:#c5cfba;margin-top:3px}
.ch-ability-sigil{position:absolute;left:50%;top:49%;z-index:5;width:122px;height:122px;transform:translate(-50%,-50%);border:1px solid var(--effect-color);border-radius:50%;display:grid;place-items:center;color:var(--effect-color);background:radial-gradient(circle,#132c2ecc,transparent 70%);box-shadow:0 0 28px #14272b25;pointer-events:none}
.ch-ability-glyph{font-family:Georgia,serif;font-size:74px;line-height:1;text-shadow:0 0 16px #dbc79755}
.ch-ability-orbit{position:absolute;inset:-10px;border:1px dashed currentColor;border-radius:50%;opacity:.6;transform:rotate(24deg)}
.ch-target-halo{position:absolute;inset:-9px;z-index:7;border:2px solid var(--effect-color);border-radius:50%;color:var(--effect-color);box-shadow:0 0 14px currentColor;pointer-events:none}
.ch-target-halo::before{content:'';position:absolute;inset:4px;border:1px solid currentColor;border-radius:50%;opacity:.55}
.ch-death-wisp{position:absolute;left:50%;top:4px;z-index:8;width:21px;height:29px;background:linear-gradient(#e6eee4d9,#e6eee480 65%,transparent);border-radius:50% 50% 40% 40%;pointer-events:none}
.ch-death-wisp::before{content:'';position:absolute;top:9px;left:6px;width:3px;height:4px;background:#596f65b3;border-radius:50%;box-shadow:6px 0 0 #596f65b3}
.ch-death-mark{position:absolute;inset:0;display:grid;place-items:center;z-index:7;border-radius:inherit;background:#10251b44;color:#ebe8d6;font-family:var(--serif);font-size:39px;line-height:1;text-shadow:0 2px 7px #081910;pointer-events:none}
.ch-memorial{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);z-index:8;width:min(370px,86%);padding:19px 22px 22px;border:1px solid #bcb7a16b;border-radius:5px;background:linear-gradient(135deg,#2e3b3afa,#182d2afa);box-shadow:0 12px 40px #071e1755;color:#ede9da;text-align:center;pointer-events:none;overflow-wrap:anywhere}
.ch-memorial-mark{display:block;font-family:var(--serif);font-size:37px;line-height:1;color:#c8c5ae;margin-bottom:10px}
.ch-memorial-eyebrow{font-size:7px;font-weight:600;letter-spacing:.18em;line-height:1.6;color:#9eae9b;margin-bottom:8px}
.ch-memorial-title{display:block;font-family:var(--serif);font-size:30px;font-weight:400;line-height:1.15;color:#eee8d9}
.ch-memorial-names{font-size:10px;line-height:1.8;color:#bac7b5;margin-top:10px}
@media(max-width:600px){
  .ch-role-reveal{width:calc(100% - 34px)}
  .ch-dossier{padding:25px 24px 22px}
  .ch-dossier-case{font-size:17px;margin-bottom:20px}
  .ch-dossier-portrait{width:84px;height:84px;margin-bottom:20px}
  .ch-dossier-title{font-size:39px}
  .ch-dossier-description{font-size:11px;margin-top:17px}
  .ch-dossier-secret{font-size:16px;margin-top:15px;padding-top:13px}
  .ch-reveal-footnote{font-size:8px}
  .ch-memorial{padding:16px 17px 18px}
  .ch-memorial-title{font-size:27px}
  .ch-memorial-mark{font-size:30px;margin-bottom:8px}
  .ch-ability-note{left:10px;right:10px;padding:9px 11px}
  .ch-ability-sigil{width:100px;height:100px}
  .ch-ability-glyph{font-size:61px}
}
@media(max-height:650px){
  .ch-dossier{padding:21px 26px 18px}
  .ch-dossier-case{margin-bottom:14px}
  .ch-dossier-portrait{width:66px;height:66px;margin-bottom:15px}
  .ch-dossier-title{font-size:35px}
  .ch-dossier-description{font-size:10px;margin-top:13px}
  .ch-dossier-secret{font-size:14px;margin-top:13px;padding-top:12px}
}

/* A closed case: the final public roster, with a persistent return to the village. */
.ch-results{--result-glow:#e5bd77;--result-deep:#202b31;width:min(900px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);padding:0;border:1px solid #bda278;border-radius:15px;background:var(--result-deep);color:#eee4d1;overflow:hidden;box-shadow:0 30px 100px #0009,0 0 0 5px #d3af6c12;font-family:var(--sans)}
.ch-results[open]{display:flex;flex-direction:column}
.ch-results::backdrop{background:#091017d9;backdrop-filter:blur(7px)}
.ch-results[data-outcome="defeat"]{--result-glow:#cdb4c2;--result-deep:#2c2631;border-color:#907987}
.ch-results[data-outcome="draw"]{--result-glow:#b5d0d0;--result-deep:#233039;border-color:#8da9ae}
.ch-results-heading{position:relative;isolation:isolate;flex:none;overflow:hidden;padding:28px 55px 23px;text-align:center;background:radial-gradient(ellipse at 50% 80%,#ad804026,transparent 65%),var(--result-deep)}
.ch-results-heading>*:not(.ch-results-aura):not(.ch-results-mote){position:relative;z-index:1}
.ch-results[data-outcome="defeat"] .ch-results-heading{background:radial-gradient(ellipse at 50% 85%,#9d6d8124,transparent 65%),var(--result-deep)}
.ch-results[data-outcome="draw"] .ch-results-heading{background:radial-gradient(ellipse at 50% 85%,#6eafb026,transparent 65%),var(--result-deep)}
.ch-results-close{display:block;margin:0 0 19px auto;padding:6px 0 6px 12px;border:0;background:transparent;color:#e8dfd0;font:500 11px var(--sans);cursor:pointer;text-decoration:underline;text-decoration-color:#b9a58370;text-underline-offset:4px}
.ch-results-close:hover{color:#fff4d9;text-decoration-color:currentColor}
.ch-results-eyebrow{margin:0;color:var(--result-glow);font-size:9px;font-weight:700;letter-spacing:.24em}
.ch-results-crest{display:grid;place-items:center;width:65px;height:65px;margin:12px auto 7px;border:1px solid #bfa06c65;border-radius:50%;color:var(--result-glow);font-family:Georgia,serif;font-size:40px;line-height:1;box-shadow:0 0 0 5px #c2a67b0c,inset 0 0 0 5px #c2a67b0c}
.ch-results-title{margin:0;color:#f6ecd7;font:400 clamp(36px,5vw,54px)/1.08 var(--serif);text-wrap:balance;overflow-wrap:anywhere}
.ch-results-subtitle{max-width:590px;margin:10px auto 0;color:#d7ccbb;font-size:12px;line-height:1.6;text-wrap:balance;overflow-wrap:anywhere}
.ch-results-winner{margin:13px auto 0;color:var(--result-glow);font:600 11px/1.5 var(--sans);overflow-wrap:anywhere}
.ch-results-meta{margin:9px 0 0;color:#b8b2ac;font-size:9px;letter-spacing:.06em;overflow-wrap:anywhere}
.ch-results-scroll{min-height:110px;overflow:auto;overscroll-behavior:contain;scrollbar-color:#b6a58b #e8dfcf;padding:22px 25px 25px;background:#eee7d9;color:var(--ink);border-block:1px solid #bfab87;scrollbar-gutter:stable}
.ch-results-scroll:focus-visible{outline:2px solid #98703b;outline-offset:-4px}
.ch-results-roster-heading{display:flex;align-items:baseline;justify-content:space-between;gap:15px;margin:0 0 14px}
.ch-results-roster-heading h3{margin:0;font:400 25px/1.15 var(--serif)}
.ch-results-count{flex:none;color:#756e64;font-size:9px}
.ch-results-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.ch-results-player{display:flex;align-items:flex-start;gap:11px;min-width:0;padding:13px 10px;background:#faf5eb;border:1px solid #d4c8b4;border-radius:6px;box-shadow:0 2px 4px #463c2b06}
.ch-results-player[data-me="true"]{border-color:#9d793e;box-shadow:inset 0 0 0 1px #b5945b3b}
.ch-results-portrait{flex:none;width:49px;height:56px;margin-top:1px;background-image:url('./assets/portraits.webp');background-size:400% 400%;border:1px solid #b9a58a;border-radius:25px 25px 6px 6px;box-shadow:0 2px 4px #342e2020}
.ch-results-player[data-alive="false"] .ch-results-portrait{filter:grayscale(.8) saturate(.4);opacity:.7}
.ch-results-player-info{min-width:0}
.ch-results-player-name{margin:0 0 4px;font:600 10px/1.4 var(--sans);overflow-wrap:anywhere;color:#3a3c39}
.ch-results-player-role{margin:0;font:400 18px/1.12 var(--serif);color:#292f32;overflow-wrap:anywhere}
.ch-results-player-faction{margin:4px 0 7px;font-size:9px;line-height:1.35;color:#756953;overflow-wrap:anywhere}
.ch-results-player-badges{display:flex;flex-wrap:wrap;gap:4px}
.ch-results-player-outcome,.ch-results-player-life{display:inline-block;padding:3px 5px;border-radius:3px;font:600 8px/1.2 var(--sans);background:#e8e1d5;color:#6d645a}
.ch-results-player[data-winner="true"] .ch-results-player-outcome{background:#e9d7a9;color:#684c1b}
.ch-results-player-life{background:transparent;border:1px solid #ddd2c0;padding:2px 4px;font-weight:400}
.ch-results-footer{flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 25px;padding:19px 25px 20px;background:var(--result-deep)}
.ch-results-support{max-width:440px;margin:0;color:#c1b9ac;font-size:10px;line-height:1.65;overflow-wrap:anywhere}
.ch-results-rematch{min-width:235px;white-space:normal;text-align:center}
.ch-results-rematch:disabled{opacity:.7;cursor:default;transform:none}
.ch-results-status{grid-column:1/-1;margin:11px 0 0;color:var(--result-glow);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.ch-results-status:empty{display:none}
.ch-results-status[data-error="true"]{color:#f2bdb1}
.ch-results-aura{position:absolute;z-index:0;pointer-events:none;left:calc(50% - 280px);top:-115px;width:560px;height:560px;border-radius:50%;opacity:0;background:repeating-conic-gradient(from 0deg,transparent 0 17deg,#e5bd7721 18deg 25deg,transparent 27deg 40deg);mask-image:radial-gradient(circle,#000 20%,transparent 68%)}
.ch-results[data-outcome="defeat"] .ch-results-aura{background:radial-gradient(ellipse,#b298bd30,transparent 68%)}
.ch-results[data-outcome="draw"] .ch-results-aura{background:radial-gradient(circle,transparent 30%,#abc4c62b 31%,transparent 32%,transparent 42%,#abc4c625 43%,transparent 44%)}
.ch-results-mote{position:absolute;z-index:0;pointer-events:none;width:4px;height:4px;border-radius:50%;background:#f0cb82;opacity:0;box-shadow:0 0 8px #f0cb8270}
.ch-results[data-outcome="defeat"] .ch-results-mote{width:5px;height:3px;border-radius:0;background:#c2b8c0;box-shadow:none}
@media(max-width:760px){
  .ch-results-roster{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ch-results-heading{padding-inline:30px}
  .ch-results-footer{gap:0 16px}
  .ch-results-rematch{min-width:210px}
}
@media(max-width:520px){
  .ch-results{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:10px}
  .ch-results-heading{padding:12px 20px 18px}
  .ch-results-close{font-size:10px;margin-bottom:12px}
  .ch-results-eyebrow{font-size:8px}
  .ch-results-crest{width:48px;height:48px;font-size:30px;margin:10px auto}
  .ch-results-title{font-size:36px}
  .ch-results-subtitle{font-size:11px;margin-top:8px;line-height:1.5}
  .ch-results-winner{font-size:10px;margin-top:9px}
  .ch-results-meta{font-size:8px;line-height:1.4}
  .ch-results-scroll{padding:17px 15px 20px}
  .ch-results-roster-heading{gap:8px;margin-bottom:12px}
  .ch-results-roster-heading h3{font-size:23px}
  .ch-results-count{font-size:8px}
  .ch-results-roster{grid-template-columns:minmax(0,1fr);gap:8px}
  .ch-results-player{padding:10px 13px;gap:13px}
  .ch-results-portrait{width:47px;height:54px}
  .ch-results-player-info{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;flex:1}
  .ch-results-player-name{grid-column:1/-1;font-size:10px}
  .ch-results-player-role{font-size:19px}
  .ch-results-player-faction{grid-column:1;grid-row:3;margin-bottom:0}
  .ch-results-player-badges{grid-column:2;grid-row:2/4;align-self:center;flex-direction:column;align-items:flex-end;gap:4px}
  .ch-results-footer{grid-template-columns:minmax(0,1fr);gap:10px;padding:15px 18px 17px;text-align:center}
  .ch-results-support{font-size:9px;line-height:1.5}
  .ch-results-rematch{width:100%;min-width:0;min-height:44px;padding:12px;font-size:11px}
  .ch-results-status{margin:0;font-size:10px}
}
@media(max-height:650px){
  .ch-results{overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#b6a58b var(--result-deep)}
  .ch-results-scroll{flex:none;min-height:0;overflow:visible;scrollbar-gutter:auto}
  .ch-results-heading{padding-top:12px;padding-bottom:15px}
  .ch-results-close{margin-bottom:8px}
  .ch-results-crest{width:42px;height:42px;font-size:28px;margin:8px auto}
  .ch-results-title{font-size:34px}
  .ch-results-subtitle{margin-top:6px}
  .ch-results-winner{margin-top:7px}
  .ch-results-footer{padding-top:12px;padding-bottom:12px}
}
html:not(.motion-enabled) .ch-results-aura,html:not(.motion-enabled) .ch-results-mote,html.motion-paused .ch-results-aura,html.motion-paused .ch-results-mote{display:none}
@media(prefers-reduced-motion:reduce){.ch-results-aura,.ch-results-mote{display:none}.ch-results::backdrop{animation:none!important;transition:none!important}}

/* The accused and the sealed jury record stay beside the playable village. */
.ch-trial-active .village-centre{visibility:hidden}
.ch-trial-stage{position:absolute;z-index:5;left:50%;top:50%;transform:translate(-50%,-50%);width:41%;max-width:230px;pointer-events:none;text-align:center;color:#f1e6ce}
.ch-trial-stage-body{position:relative;padding:17px 13px 18px;border:1px solid #c4a2697a;border-radius:65px 65px 7px 7px;background:linear-gradient(145deg,#1c2830ed,#17212ce8);box-shadow:0 12px 35px #0710186b,inset 0 0 0 4px #d6b3760c}
.ch-trial-stage-eyebrow{margin:0 0 9px;color:#d1b37e;font:600 7px/1.4 var(--sans);letter-spacing:.17em}
.ch-trial-portrait{width:53px;height:53px;border-radius:50%;margin:0 auto 9px;border:2px solid #ceb077;background-image:url('./assets/portraits.webp');background-size:400% 400%;box-shadow:0 0 0 4px #c5a16b12}
.ch-trial-stage-title{display:block;color:#f4e6c7;font:400 26px/1.04 var(--serif);text-wrap:balance;overflow-wrap:anywhere}
.ch-trial-stage-name{margin:9px 0 0;color:#e1d7c4;font-size:10px;line-height:1.4;overflow-wrap:anywhere}
.ch-trial-stage-detail{margin:7px 0 0;color:#b2b4ac;font-size:8px;line-height:1.5;text-wrap:balance}
.ch-trial-seal{display:inline-block;margin-top:11px;padding:5px 8px;border:1px solid currentColor;color:#d99587;transform:rotate(-8deg);font:700 8px/1 var(--sans);letter-spacing:.14em;box-shadow:inset 0 0 0 2px #b26d6420}
.ch-trial-stage[data-result="innocent"] .ch-trial-seal{color:#a9c7ae;box-shadow:inset 0 0 0 2px #9aba9e20}
.ch-trial-stage[data-stage="executed"] .ch-trial-seal{width:31px;height:31px;padding:0;border-radius:50%;font:400 26px/29px Georgia,serif;color:#c8b7b7;transform:none}
.ch-trial-stage[data-stage="executed"] .ch-trial-portrait{filter:grayscale(1);opacity:.4}
.ch-trial-accused .seat-portrait{box-shadow:0 0 0 2px #e4c58d,0 0 28px #e7b95d80}
.ch-trial-spotlight{position:absolute;inset:-7px;border:1px solid #ebd4a7bd;border-radius:50%;box-shadow:0 0 0 4px #e0bd7812,0 0 25px #efc77945;pointer-events:none}
.ch-trial-panel{margin:0;padding:18px 21px 19px;background:linear-gradient(115deg,#f7f0df,#efe6d4);border:1px solid #cbb993;border-top:3px solid #b99a63;color:var(--ink);border-radius:0 0 5px 5px;box-shadow:0 5px 13px #51432208}
.ch-trial-panel-header{display:flex;justify-content:space-between;align-items:center;gap:13px}
.ch-trial-ledger-eyebrow{margin:0 0 4px;color:#8c7652;font:600 7px/1.4 var(--sans);letter-spacing:.15em}
.ch-trial-ledger-title{margin:0;font:400 27px/1.08 var(--serif)}
.ch-trial-status-badge{flex:none;max-width:48%;padding:6px 8px;border:1px solid #bcab8d;border-radius:3px;font:600 8px/1.4 var(--sans);color:#7e705b;text-align:center;text-wrap:balance}
.ch-trial-panel[data-result="guilty"] .ch-trial-status-badge{background:#ad695713;border-color:#bd8d7c;color:#925c4f}
.ch-trial-panel[data-result="innocent"] .ch-trial-status-badge{background:#6c946a13;border-color:#9aaf90;color:#56774d}
.ch-trial-subject{margin:13px 0 5px;font:600 11px/1.4 var(--sans);overflow-wrap:anywhere}
.ch-trial-note{margin:0;font-size:10px;line-height:1.65;color:#7c7667}
.ch-trial-own{margin:12px 0 0;padding:9px 11px;border-left:2px solid #b39661;background:#eee8da;color:#665b47;font-size:10px;line-height:1.5}
.ch-trial-own[data-verdict="guilty"]{border-left-color:#b57563}
.ch-trial-own[data-verdict="innocent"]{border-left-color:#7a9868}
.ch-trial-totals{margin:12px 0 10px;color:#8b7653;font:600 10px/1.5 var(--sans)}
.ch-trial-ballots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:232px;overflow-y:auto;overscroll-behavior:contain;list-style:none;padding:2px 5px 3px 2px;margin:0;scrollbar-width:thin;scrollbar-color:#b5a283 transparent}
.ch-trial-ballots:focus-visible{outline:2px solid #a4844c;outline-offset:3px}
.ch-trial-ballot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 5px;min-width:0;padding:10px 8px;border:1px solid #d6c8af;border-radius:4px;background:#fcf7eb}
.ch-trial-ballot[data-me="true"]{border-color:#aa8c55;box-shadow:inset 0 0 0 1px #bd9a5b24}
.ch-trial-voter{grid-column:1/-1;font-size:9px;line-height:1.35;color:#6c6251;overflow-wrap:anywhere}
.ch-trial-vote{font:600 10px/1.4 var(--sans);color:#8e8271}
.ch-trial-weight{font-size:7px;line-height:1.7;color:#9c917c;align-self:center;white-space:nowrap}
.ch-trial-ballot[data-verdict="guilty"] .ch-trial-vote{color:#9c6253}
.ch-trial-ballot[data-verdict="innocent"] .ch-trial-vote{color:#5e8255}
@media(max-width:1000px) and (min-width:761px){.ch-trial-ballots{grid-template-columns:repeat(2,minmax(0,1fr))}.ch-trial-stage-title{font-size:23px}.ch-trial-stage-body{padding:14px 10px}.ch-trial-portrait{width:44px;height:44px}.ch-trial-stage-name{font-size:9px}}
@media(max-width:520px){
  .ch-trial-stage{width:42%}
  .ch-trial-stage-body{padding:12px 9px 13px;border-radius:48px 48px 5px 5px}
  .ch-trial-stage-eyebrow{font-size:5px;letter-spacing:.11em;margin-bottom:7px}
  .ch-trial-portrait{width:35px;height:35px;margin-bottom:7px;border-width:1px}
  .ch-trial-stage-title{font-size:21px}
  .ch-trial-stage-name{font-size:8px;margin-top:7px}
  .ch-trial-stage-detail{font-size:7px;line-height:1.4;margin-top:6px}
  .ch-trial-seal{font-size:6px;padding:4px 5px;margin-top:8px}
  .ch-trial-stage[data-stage="executed"] .ch-trial-seal{width:24px;height:24px;font-size:20px;line-height:22px;margin-top:7px}
  .ch-trial-panel{padding:15px 13px 16px}
  .ch-trial-ledger-title{font-size:25px}
  .ch-trial-ledger-eyebrow{font-size:6px}
  .ch-trial-status-badge{font-size:7px;padding:5px 7px}
  .ch-trial-note,.ch-trial-own{font-size:9px}
  .ch-trial-subject{font-size:10px}
  .ch-trial-ballots{grid-template-columns:repeat(2,minmax(0,1fr));max-height:220px}
  .ch-trial-ballot{padding:9px 8px}
}

/* Dawn is a readable procession: each public identity, then their final words. */
.ch-dawn-report-bar{padding:8px 12px;background:#e9e0cf;border:1px solid #d2bea0;border-top:0;text-align:center}
.ch-dawn-report-open{min-height:32px;padding:5px 10px;border:0;border-radius:3px;background:transparent;color:#776346;font:600 10px/1.5 var(--sans);letter-spacing:.02em}
.ch-dawn-report-open:hover{background:#dac9a953;color:#4f432e}
.ch-dawn{width:min(680px,calc(100vw - 28px));max-width:none;max-height:calc(100dvh - 28px);padding:0;overflow:hidden;border:1px solid #c2a375;border-radius:13px;background:#f3ebdc;color:var(--ink);box-shadow:0 25px 90px #08121cb3,0 0 0 5px #d1b27c17;font-family:var(--sans)}
.ch-dawn[open]{display:flex;flex-direction:column}
.ch-dawn::backdrop{background:#101c25da;backdrop-filter:blur(7px)}
.ch-dawn-header{position:relative;isolation:isolate;flex:none;overflow:hidden;padding:18px 31px 28px;text-align:center;background:linear-gradient(180deg,#1d2b31a8,#3440377d 52%,#192a31de),url('./assets/village-day.webp') center 46%/cover;color:#f8ecd2;border-bottom:1px solid #c1a577}
.ch-dawn-header>*:not(.ch-dawn-sun):not(.ch-dawn-mist){position:relative;z-index:1}
.ch-dawn-close{display:block;margin:0 0 23px auto;min-height:30px;padding:5px 0 5px 12px;background:transparent;color:#f2ead9;font:500 10px var(--sans);text-decoration:underline;text-decoration-color:#e0cfac80;text-underline-offset:4px;cursor:pointer}
.ch-dawn-close:hover{color:#fff6d9;text-decoration-color:currentColor}
.ch-dawn-eyebrow{margin:0 0 8px;color:#ead09b;font:700 8px/1.5 var(--sans);letter-spacing:.2em;text-shadow:0 1px 8px #14232e}
.ch-dawn-title{margin:0;color:#fff0cf;font:400 48px/1.05 var(--serif);text-shadow:0 2px 12px #14232e80}
.ch-dawn-subtitle{max-width:450px;margin:11px auto 0;color:#ece4d3;font-size:11px;line-height:1.6;text-wrap:balance;text-shadow:0 1px 8px #14232e}
.ch-dawn-sun{position:absolute;z-index:0;pointer-events:none;left:50%;bottom:5px;width:250px;height:250px;border-radius:50%;transform:translate(-50%,0);opacity:.75;background:radial-gradient(circle,#fbe4a5b0 0,#f6d58c38 35%,#e7bf8021 49%,transparent 70%);mix-blend-mode:screen}
.ch-dawn-mist{position:absolute;z-index:0;pointer-events:none;left:-10%;right:-10%;bottom:-10px;height:120px;background:radial-gradient(ellipse at 20% 85%,#dce3d57a,transparent 48%),radial-gradient(ellipse at 75% 65%,#ebddbc70,transparent 56%);opacity:.15}
.ch-dawn-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#baa786 #ece3d2;scrollbar-gutter:stable}
.ch-dawn-scroll:focus-visible{outline:2px solid #a3844c;outline-offset:-4px}
.ch-dawn-content{padding:29px 35px 28px;text-align:center}
.ch-dawn-progress{margin:0 0 17px;color:#96805c;font:600 8px/1.4 var(--sans);letter-spacing:.19em}
.ch-dawn-portrait{width:86px;height:95px;margin:0 auto 15px;background-image:url('./assets/portraits.webp');background-size:400% 400%;border:2px solid #b89c6b;border-radius:46px 46px 7px 7px;box-shadow:0 0 0 5px #c6b08316,0 8px 20px #3b322219;filter:saturate(.55)}
.ch-dawn-name{margin:0;color:#33413f;font:400 35px/1.1 var(--serif);overflow-wrap:anywhere}
.ch-dawn-role{margin:9px auto 0;color:#89734d;font:600 10px/1.6 var(--sans);overflow-wrap:anywhere}
.ch-dawn-cause{max-width:440px;margin:10px auto 0;color:#868071;font:400 10px/1.65 var(--sans);overflow-wrap:anywhere;text-wrap:balance}
.ch-dawn-sealed{position:relative;margin:23px auto 0;max-width:400px;padding:14px 18px 15px;border:1px solid #d4c4a6;background:linear-gradient(155deg,#ede1c84d 45%,#caba9859 45.5%,#f6eddc 46%);box-shadow:0 3px 8px #66533008}
.ch-dawn-seal{display:grid;place-items:center;width:35px;height:35px;margin:0 auto 9px;border:1px solid #8b6655;border-radius:50%;background:#a2765e;color:#f7dec1;font:400 15px/1 var(--serif);box-shadow:0 2px 0 #805d4c33,inset 0 0 0 3px #f2cca826;transform:rotate(-9deg)}
.ch-dawn-sealed p{margin:0;color:#928068;font:400 15px/1.4 var(--serif);font-style:italic}
.ch-dawn-will{position:relative;margin:20px 0 0;padding:22px 25px 25px;border:1px solid #d4c4a7;background:#fffaf0;box-shadow:0 5px 16px #51402409;text-align:left}
.ch-dawn-will:before{content:'';position:absolute;inset:5px;border:1px solid #d2c2a42b;pointer-events:none}
.ch-dawn-will-heading{margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid #d6c8b0;color:#8f7951;font:400 24px/1.1 var(--serif)}
.ch-dawn-will-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;color:#5a594d;font:400 13px/1.85 Georgia,serif}
.ch-dawn[data-page="will"] .ch-dawn-progress{margin-bottom:12px}
.ch-dawn[data-page="will"] .ch-dawn-portrait{width:46px;height:50px;margin-bottom:10px;border-width:1px}
.ch-dawn[data-page="will"] .ch-dawn-name{font-size:29px}
.ch-dawn[data-page="will"] .ch-dawn-cause{margin-top:6px}
.ch-dawn-peace{padding:4px 10px 18px}
.ch-dawn-peace-mark{display:block;margin:0 auto 17px;color:#b69553;font:400 55px/1 Georgia,serif}
.ch-dawn-peace h3{max-width:350px;margin:auto;color:#52614d;font:400 34px/1.1 var(--serif);text-wrap:balance}
.ch-dawn-peace p{max-width:370px;margin:16px auto 0;color:#88816e;font:400 11px/1.8 var(--sans);text-wrap:balance}
.ch-dawn-footer{flex:none;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:16px 24px 19px;border-top:1px solid #d5c5a9;background:#eae0cd}
.ch-dawn-footer .button{min-height:42px;font-size:11px;padding:11px 18px}
.ch-dawn-back{min-width:76px}
.ch-dawn-next{min-width:151px}
.ch-dawn-position{color:#948367;text-align:center;font-size:9px}
.ch-dawn[data-page="peace"] .ch-dawn-footer{grid-template-columns:minmax(0,1fr) auto}
@media(max-width:520px){
  .ch-dawn{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:9px}
  .ch-dawn-header{padding:10px 20px 23px}
  .ch-dawn-close{margin-bottom:17px;font-size:9px}
  .ch-dawn-eyebrow{font-size:7px}
  .ch-dawn-title{font-size:39px}
  .ch-dawn-subtitle{font-size:10px;margin-top:8px}
  .ch-dawn-content{padding:23px 20px}
  .ch-dawn-progress{font-size:7px;margin-bottom:15px}
  .ch-dawn-portrait{width:70px;height:77px}
  .ch-dawn-name{font-size:31px}
  .ch-dawn-role,.ch-dawn-cause{font-size:9px}
  .ch-dawn-sealed{margin-top:18px;padding:12px 14px}
  .ch-dawn-sealed p{font-size:14px}
  .ch-dawn-will{padding:20px 19px;margin-top:17px}
  .ch-dawn-will-text{font-size:12px;line-height:1.8}
  .ch-dawn-will-heading{font-size:23px}
  .ch-dawn-footer{gap:8px;padding:13px 14px 15px}
  .ch-dawn-footer .button{font-size:10px;padding:10px 13px;min-height:41px}
  .ch-dawn-back{min-width:57px}
  .ch-dawn-next{min-width:134px}
  .ch-dawn-position{font-size:8px}
  .ch-dawn-peace h3{font-size:31px}
  .ch-dawn-peace p{font-size:10px}
}
@media(max-height:650px){
  .ch-dawn-header{padding-top:9px;padding-bottom:18px}
  .ch-dawn-close{margin-bottom:10px}
  .ch-dawn-title{font-size:35px}
  .ch-dawn-content{padding-top:21px;padding-bottom:21px}
  .ch-dawn-portrait{width:61px;height:67px}
}
@media(max-height:320px){
  .ch-dawn{overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#baa786 #ece3d2}
  .ch-dawn-scroll{flex:none;overflow:visible;scrollbar-gutter:auto}
}
@media(prefers-reduced-motion:reduce){.ch-dawn::backdrop{animation:none!important;transition:none!important}}

/* A working desk at normal zoom: the illustration yields space to decisions. */
.room-records{border:1px solid #c9c9b7;border-radius:4px;background:#f4f0e4;color:#69765d}
.room-records>summary{padding:11px 12px;font:600 10px/1.5 var(--sans);cursor:pointer}
.room-records>summary:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
#room-records-content{padding:0 9px 10px}
.room-records .role-list-panel{margin:7px 0 0}
.room-records .role-list-panel>button{padding:9px 7px;font-size:9px}
.room-records .role-list-panel>div{padding:0 6px 8px}
.room-records .room-modifiers{margin:0;padding:9px 7px;font-size:8px}
.room-records .ch-trial-panel{padding:12px 9px;border-radius:3px}
.room-records .ch-trial-panel-header{display:block}
.room-records .ch-trial-ledger-title{font-size:22px}
.room-records .ch-trial-status-badge{display:inline-block;max-width:100%;margin-top:7px;font-size:7px}
.room-records .ch-trial-subject{font-size:10px}
.room-records .ch-trial-note,.room-records .ch-trial-own{font-size:8px}
.room-records .ch-trial-ballots{grid-template-columns:minmax(0,1fr);max-height:240px}
.room-records .ch-trial-ballot{padding:8px 7px}
.room-report-links:empty{display:none}
.room-report-links .ch-dawn-report-bar{padding:3px;border:1px solid #d2bea0;border-radius:4px}
.room-report-links .ch-dawn-report-open{font-size:9px;width:100%;padding:6px 5px}
@media(min-width:1100px),(min-width:761px) and (min-height:561px){
  body.in-room{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
  body.in-room>.site-header{height:54px;min-height:54px;flex:none;padding:0 20px;gap:22px}
  .in-room .brand-mark{width:28px;height:28px;font-size:21px}
  .in-room .brand-mark span{font-size:11px;margin-bottom:5px}
  .in-room .brand-mark:after{height:10px;bottom:-7px}
  .in-room .brand-word{font-size:19px}
  .in-room .brand-word>span{font-size:6px;margin-top:5px}
  .in-room .site-header nav{gap:22px;margin-left:auto}
  .in-room .nav-link,.in-room .home-link{font-size:10px}
  .in-room .header-settings{gap:6px;margin-left:12px}
  .in-room .header-settings>button{min-height:29px;font-size:8px;padding:5px 8px}
  body.in-room>#main{flex:1;display:flex;min-height:0;overflow:hidden}
  .in-room .room-screen{display:flex;flex:1;flex-direction:column;width:100%;max-width:2200px;min-width:0;min-height:0;margin:0 auto;padding:8px 14px 12px;gap:8px}
  .in-room .room-toolbar{flex:none;min-height:38px;margin:0;gap:12px}
  .in-room .room-toolbar h1{font-size:24px;line-height:1.1}
  .in-room .room-toolbar .eyebrow{font-size:6px}
  .in-room .room-toolbar>div:first-child{gap:10px}
  .in-room .room-toolbar .icon-button{width:30px;min-height:30px;font-size:17px}
  .in-room .room-code-button{min-height:31px;padding:5px 9px;font-size:8px}
  .in-room .connection-banner{flex:none;padding:6px 10px;font-size:10px;margin:0}
  .in-room .game-grid{flex:1;min-height:0;width:100%;display:grid;grid-template-columns:clamp(180px,15vw,235px) minmax(0,1fr) clamp(285px,25vw,370px);grid-template-areas:'case village chat';gap:12px;align-items:stretch}
  .in-room .case-sidebar{grid-area:case;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b5b99d transparent;display:flex;flex-direction:column;gap:9px;padding-right:3px}
  .in-room .case-sidebar>*{flex:none;min-width:0}
  .in-room .role-panel{padding:15px 13px;min-height:0}
  .in-room .my-portrait{width:54px;height:54px;margin:12px auto 10px}
  .in-room .role-panel h2{font-size:28px}
  .in-room .my-identity{font-size:9px;margin-top:7px}
  .in-room .role-summary{font-size:9px;line-height:1.6;margin-top:12px;padding-top:10px}
  .in-room .role-resources{margin-top:9px;gap:4px}
  .in-room .role-resources>span{font-size:7px;padding:3px 5px}
  .in-room .role-status{font-size:8px;line-height:1.5;margin-top:7px}
  .in-room .notebook-buttons{margin:0;gap:6px}
  .in-room .notebook-button{padding:10px 8px;gap:7px}
  .in-room .notebook-button>span:nth-child(2){font-size:10px}
  .in-room .notebook-button small{font-size:7px}
  .in-room .graveyard-panel{padding:12px 10px;max-height:none}
  .in-room .graveyard-panel .panel-heading{margin-bottom:7px}
  .in-room .grave-row{padding:8px 0}
  .in-room .village-column{grid-area:village;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;position:relative}
  .in-room .phase-banner{flex:none;min-height:55px;padding:9px 14px}
  .in-room .phase-banner h2{font-size:24px}
  .in-room .phase-banner #phase-day{font-size:6px}
  .in-room .phase-banner>div:first-child>span{font-size:25px}
  .in-room .phase-clock strong{font-size:24px}
  .in-room .phase-clock>span{font-size:5px;margin-top:3px}
  .in-room .village-stage{flex:1;min-height:0;max-height:none;aspect-ratio:auto;container-type:size}
  .in-room .seat{width:clamp(58px,10cqh,84px)}
  .in-room .seat-portrait{width:clamp(33px,11cqh,60px);height:clamp(33px,11cqh,60px);border-width:1px}
  .in-room .seat-label{font-size:clamp(7px,2.4cqh,10px);max-width:100%;margin-top:4px;padding:2px 4px}
  .in-room .seat-number{width:16px;height:16px;font-size:7px;left:-4px;bottom:-3px}
  .in-room .seat-badge{font-size:5px;right:-5px;top:-4px;padding:2px 3px}
  .in-room .seat-votes{width:17px;height:17px;font-size:8px}
  .in-room .village-centre{width:min(43%,320px);padding:12px 9px;max-height:64%;overflow:hidden}
  .in-room .village-centre h3{font-size:clamp(21px,6cqh,32px)}
  .in-room .village-centre .centre-glyph{font-size:27px;margin-bottom:4px}
  .in-room .village-centre .centre-eyebrow{font-size:6px;margin-bottom:4px}
  .in-room .village-centre>p{font-size:9px;line-height:1.4;margin-top:6px}
  .in-room .stage-plaque{font-size:6px;bottom:9px}
  .in-room .action-panel{flex:0 0 40%;min-height:195px;max-height:380px;padding:12px 14px;display:flex;flex-direction:column;gap:0;overflow:hidden}
  .in-room .action-heading{flex:none;margin-bottom:6px;gap:8px}
  .in-room .action-heading h2{font-size:22px}
  .in-room .action-heading>span{font-size:7px}
  .in-room .action-panel>.action-description{flex:none;max-height:45px;overflow:auto;font-size:9px;line-height:1.5}
  .in-room .action-form{flex:1;min-height:0;display:flex;flex-direction:column;gap:7px;margin-top:6px}
  .in-room .action-fields-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:1px 5px 3px 1px;scrollbar-width:thin;scrollbar-color:#b3b59c transparent;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;align-content:start}
  .in-room .action-fields-scroll>.action-description,.in-room .action-fields-scroll>.guesses-fields{grid-column:1/-1}
  .in-room .action-fields-scroll>.action-fields{min-width:0}
  .in-room .action-form label{font-size:9px;min-width:0}
  .in-room .action-form select{font-size:11px;min-height:33px;padding:7px 23px 7px 9px;margin-top:4px}
  .in-room .action-form textarea{min-height:65px;font-size:11px;max-height:150px}
  .in-room .action-form>.button{flex:none;min-height:36px;padding:8px 14px;font-size:11px}
  .in-room .action-form .action-description{font-size:9px;line-height:1.5}
  .in-room .action-confirmation{flex:none;font-size:9px;margin-top:6px;line-height:1.4}
  .in-room .action-panel>.text-link{flex:none;min-height:22px;font-size:9px}
  .in-room .practice-advance{flex:none;margin-top:6px;padding-top:6px;font-size:8px}
  .in-room .practice-advance button{font-size:8px;min-height:25px;padding:4px 8px}
  .in-room .overcharge-summary{flex:none;max-height:64px;overflow:auto;margin-top:6px;padding:6px 9px;font-size:9px}
  .in-room .overcharge-summary p{font-size:8px;line-height:1.5;margin-top:3px}
  .in-room .action-panel:has(#vote-form):has(#action-form){overflow-y:auto}
  .in-room .action-panel:has(#vote-form):has(#action-form) .action-form{flex:none;min-height:130px}
  .in-room .lobby-actions{margin-top:9px;gap:7px}
  .in-room .lobby-help{font-size:9px;margin-top:8px;line-height:1.5}
  .in-room .chat-panel{grid-area:chat;height:auto;min-height:0;position:static;top:auto;overflow:hidden}
  .in-room .chat-heading{flex:none;padding:13px 12px}
  .in-room .chat-heading h2{font-size:23px}
  .in-room .chat-heading>span{font-size:8px}
  .in-room .chat-channel-notice{flex:none;padding:7px 12px;font-size:9px;line-height:1.5}
  .in-room .chat-messages{min-height:0;padding:14px 12px}
  .in-room .chat-message p{font-size:11px;line-height:1.55}
  .in-room .chat-form{flex:none;padding:10px}
  .in-room .channel-controls select{font-size:10px;min-height:30px}
  .in-room .chat-compose textarea{font-size:11px;min-height:42px;max-height:85px}
  .in-room .chat-hint{font-size:7px;margin-top:5px}
  .in-room .ch-trial-stage{width:35%;max-width:190px}
  .in-room .ch-trial-stage-body{padding:10px}
  .in-room .ch-trial-stage-title{font-size:22px}
  .in-room .ch-trial-portrait{width:36px;height:36px;margin-bottom:5px}
  .in-room .ch-trial-stage-eyebrow{font-size:6px;margin-bottom:5px}
  .in-room .ch-trial-stage-name{font-size:8px;margin-top:5px}
  .in-room .ch-trial-stage-detail{font-size:7px;margin-top:4px}
}
@media(max-width:1099px){
  .in-room .village-column{display:flex;flex-direction:column}
  .in-room .village-column>.phase-banner{order:0}
  .in-room .village-column>.action-panel{order:1;border-radius:0 0 5px 5px}
  .in-room .village-column>.village-stage{order:2;margin-top:10px;max-height:480px;min-height:0}
  .in-room .room-report-links,.in-room .room-records{grid-column:1/-1}
  .in-room .action-fields-scroll{display:grid;gap:10px}
  .in-room .action-form>.button{position:sticky;bottom:0;z-index:1}
  .in-room .room-records .ch-trial-ballots{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Night keeps the existing controls, with a private desk for the viewer's own role. */
body.in-room.ch-night-mode{background:#1b252d}
.ch-night-veil{position:absolute;z-index:1;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 55%,#08142918,#040b16d9);opacity:.18}
.ch-night-windows{position:absolute;z-index:1;inset:0;pointer-events:none}
.ch-night-window{position:absolute;width:8px;height:9px;background:#f1bf65;border-radius:2px;box-shadow:0 0 20px 5px #edaf4d8c;opacity:0}
.ch-night-stage .seat-portrait{filter:brightness(.86)}
.ch-night-stage .seat.is-me .seat-portrait,.ch-night-stage .seat.ch-night-selected .seat-portrait{filter:brightness(1.08)}
.ch-night-stage .seat.dead .seat-portrait{filter:grayscale(1) brightness(.65)}
.ch-night-actions{--night-accent:#c3af80;--night-soft:#c3af8026;background:linear-gradient(120deg,#26313b,#202b34);border-color:#58616a;color:#e9e3d4}
.ch-night-actions[data-night-kind="investigate"]{--night-accent:#9fc6d5;--night-soft:#9fc6d522}
.ch-night-actions[data-night-kind="protect"]{--night-accent:#a9c8a0;--night-soft:#a9c8a022}
.ch-night-actions[data-night-kind="attack"]{--night-accent:#dea092;--night-soft:#dea09222}
.ch-night-actions[data-night-kind="control"]{--night-accent:#c6a8da;--night-soft:#c6a8da22}
.ch-night-header{flex:none;display:flex;align-items:center;gap:11px;padding:0 0 9px;margin-bottom:3px;border-bottom:1px solid #a9afaa24}
.ch-night-mark{flex:none;display:grid;place-items:center;width:39px;height:39px;border:1px solid var(--night-accent);border-radius:50%;color:var(--night-accent);font:400 27px/1 Georgia,serif;background:var(--night-soft)}
.ch-night-copy{min-width:0;flex:1}
.ch-night-eyebrow{margin:0 0 4px;color:var(--night-accent);font:600 6px/1.4 var(--sans);letter-spacing:.13em}
.ch-night-title{margin:0;font:400 23px/1.1 var(--serif);color:#f0e8d5;overflow-wrap:anywhere}
.ch-night-selection{margin:5px 0 0;font:400 9px/1.4 var(--sans);color:#bec7c5;overflow-wrap:anywhere}
.ch-night-deadline{flex:none;border:1px solid #909caa3b;border-radius:4px;padding:7px;color:#b6c5ce;font:400 16px/1 var(--serif);min-width:37px;text-align:center}
.ch-night-urgent .ch-night-deadline{color:#f2c68c;border-color:#bf975c;background:#78582a20}
.ch-night-actions>.action-heading{display:none}
.ch-night-actions .action-form label{color:#d4ddd5}
.ch-night-actions .action-description,.ch-night-actions>.action-description{color:#acb8b6}
.ch-night-actions .action-form select,.ch-night-actions .action-form textarea{background:#ecede4;color:#38443e;border-color:#c3c8b4}
.ch-night-actions .action-form>.button{background:var(--night-accent);color:#24303a;border-color:var(--night-accent)}
.ch-night-actions .action-confirmation{color:#bed8ab}
.ch-night-actions>.text-link{color:#b9c7b2}
.ch-night-actions .practice-advance{border-color:#a8b3ab24;color:#9eaca5}
.ch-night-actions .practice-advance button{border-color:#879583;color:#c4ceba}
.ch-night-selected .seat-portrait{border-color:#f1ce89!important;box-shadow:0 0 0 3px #e8be6752,0 0 24px #e3ae555a!important}
.ch-night-target-ring{position:absolute;inset:-8px;border-radius:50%;border:1px dashed #efd39e;box-shadow:0 0 0 4px #e2be7314;pointer-events:none;opacity:.85}
.ch-night-mode .phase-banner{background:#273540;border-color:#59676d;color:#d7decf}
.ch-night-mode .phase-banner h2{color:#f0e8d5}
.ch-night-mode .phase-banner #phase-day{color:#a5b6bc}
.ch-night-mode .phase-clock strong{color:#c7d3cd}
.ch-night-mode .phase-clock.urgent strong{color:#efc18a}
@media(max-width:520px){.ch-night-title{font-size:21px}.ch-night-mark{width:32px;height:32px;font-size:23px}.ch-night-header{gap:8px}.ch-night-eyebrow{font-size:6px}.ch-night-selection{font-size:8px}.ch-night-deadline{font-size:14px;padding:6px;min-width:32px}}

/* Keep a usable editing area even after a night action has been confirmed. */
@media(min-width:1100px),(min-width:761px) and (min-height:561px){
  .in-room .action-panel.ch-night-actions{flex-basis:54%;min-height:315px;max-height:420px;padding:10px 14px}
  .in-room .ch-night-actions .action-fields-scroll{min-height:80px}
  .in-room .ch-night-header{gap:9px;padding-bottom:7px;margin-bottom:0}
  .in-room .ch-night-title{font-size:21px}
  .in-room .ch-night-selection{margin-top:3px;font-size:8px;line-height:1.3}
  .in-room .ch-night-mark{width:33px;height:33px;font-size:24px}
  .in-room .ch-night-actions .action-confirmation{margin-top:5px;font-size:8px;line-height:1.4}
  .in-room .ch-night-actions>.text-link{min-height:18px;font-size:8px}
  .in-room .ch-night-actions .practice-advance{margin-top:5px;padding-top:5px}
}
.ch-night-mode .room-toolbar h1{color:#e9e3d4}
.ch-night-mode .room-toolbar .eyebrow{color:#b9b09a}
.ch-night-mode .room-toolbar .icon-button{color:#d7decf;border-color:#86938d}
.ch-night-mode .room-toolbar .icon-button:hover{background:#36444b}
@media(max-width:760px){.in-room .case-sidebar{max-height:min(320px,48vh);overflow-y:auto;overscroll-behavior:contain}}

/* The gallery has an identity of its own: a spectator is not a dead villager. */
.spectator-count{flex:none;color:#74684f;border:1px solid #b8ab8f;border-radius:20px;padding:5px 8px;font:500 9px/1.2 var(--sans);white-space:nowrap}
.ch-night-mode .spectator-count{color:#d4c8ad;border-color:#839087}
.spectator-emblem{width:49px;height:49px;display:grid;place-items:center;margin:12px auto;border:1px solid #a8976b;border-radius:50%;font:400 39px/1 var(--serif);color:#d1ba7c;background:#c2a35712}
.spectator-queue{margin:13px 0 0;border-top:1px solid #b8a47135;padding-top:12px;color:#d6c79e;font:400 10px/1.6 var(--sans);overflow-wrap:anywhere}
.spectator-action-queue{margin:9px 0;padding:8px 11px;border-left:2px solid #ad9663;background:#aa915515;color:#6b604a;font:400 11px/1.5 var(--sans);overflow-wrap:anywhere}
.is-spectator .role-panel h2{font-size:30px}
.is-spectator .action-panel{overflow:auto}
.ch-results[data-outcome="spectator"] .ch-results-title{color:#dfd4b4}
@media(min-width:1100px){.in-room.is-spectator .action-panel{flex-basis:auto;min-height:145px;max-height:220px}.is-spectator .spectator-action-queue{font-size:9px;padding:6px 9px;margin:6px 0}}
@media(max-width:520px){.room-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:5px}.spectator-count{font-size:8px;padding:4px 6px}.is-spectator .role-panel h2{font-size:27px}.spectator-queue{font-size:9px}.spectator-action-queue{font-size:10px}}

.room-leadership{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:0;max-width:155px;gap:2px}
#room-host{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#716951;font:500 9px/1.4 var(--sans)}
#transfer-host-open{border:0;border-bottom:1px solid #9a8966;background:none;color:#5b634e;font:500 8px/1.5 var(--sans);padding:2px 0;white-space:nowrap;cursor:pointer}
#transfer-host-open:hover{color:#353f30;border-color:currentColor}
#transfer-host-open:disabled{cursor:default;opacity:.5}
.ch-night-mode #room-host{color:#cec7b4}.ch-night-mode #transfer-host-open{color:#d2c29c;border-color:#a99468}
.leadership-dialog{width:min(465px,calc(100% - 28px))}.leadership-dialog form{margin-top:22px}.leadership-dialog .small-note{font-size:10px;line-height:1.6;margin:12px 0 18px}.leadership-status{font:400 11px/1.6 var(--sans);color:#785744;margin:12px 0 0;overflow-wrap:anywhere}.leadership-status:empty{display:none}
@media(max-width:680px){.room-toolbar{flex-wrap:wrap}.room-toolbar>div:first-child{flex:1;min-width:0}.room-toolbar-actions{margin-left:auto;flex-wrap:wrap;justify-content:flex-end;gap:8px}.room-leadership{max-width:120px}#room-host{font-size:8px}#transfer-host-open{font-size:8px;min-height:23px}.room-toolbar h1{overflow-wrap:anywhere}}
@media(max-width:440px){.room-leadership{max-width:100px}.room-toolbar-actions{gap:6px}.leadership-dialog .small-note{font-size:9px}}

/* Keep decisions and conversation together, leaving the village its full stage. */
.interaction-sidebar{min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px}
.interaction-sidebar>.action-panel{border-radius:5px;min-width:0}
.interaction-sidebar>.chat-panel{min-width:0}
.interaction-sidebar .action-heading{flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.interaction-sidebar .action-heading h2{line-height:1.15}
.interaction-sidebar .action-fields-scroll{grid-template-columns:minmax(0,1fr)}
.interaction-sidebar .action-fields,.interaction-sidebar .action-fields.three,.interaction-sidebar .guess-row{grid-template-columns:minmax(0,1fr)}
.interaction-sidebar .action-form select,.interaction-sidebar .action-form textarea{width:100%;min-width:0;max-width:100%}
@media(min-width:1100px),(min-width:761px) and (min-height:561px){
  .in-room .game-grid{grid-template-columns:clamp(180px,15vw,235px) minmax(0,1fr) clamp(330px,27vw,380px);grid-template-areas:'case village interaction'}
  .in-room .interaction-sidebar{grid-area:interaction;height:100%;overflow:hidden}
  .in-room .interaction-sidebar>.action-panel{flex:0 1 auto;min-height:0;max-height:230px;padding:11px 13px;overflow-y:auto}
  .in-room .interaction-sidebar>.action-panel:has(form){flex-basis:clamp(280px,43dvh,350px);min-height:270px;max-height:350px;overflow:hidden}
  .in-room .interaction-sidebar>.action-panel.ch-night-actions:has(form){flex-basis:clamp(330px,49dvh,375px);min-height:320px;max-height:375px;padding:10px 12px}
  .in-room .interaction-sidebar>.action-panel:has(.overcharge-summary){flex-basis:375px;max-height:375px}
  .in-room .interaction-sidebar .action-fields-scroll{grid-template-columns:minmax(0,1fr);min-height:70px;gap:8px;padding-right:5px}
  .in-room .interaction-sidebar .action-fields-scroll>.action-fields{grid-template-columns:minmax(0,1fr);gap:8px}
  .in-room .interaction-sidebar .action-form{margin-top:5px;gap:6px}
  .in-room .interaction-sidebar .action-form>.button{min-height:34px;padding:7px 10px;font-size:10px}
  .in-room .interaction-sidebar .action-heading h2{font-size:22px}
  .in-room .interaction-sidebar .ch-night-header{padding-bottom:6px;gap:8px;min-height:33px}
  .in-room .interaction-sidebar .ch-night-title{font-size:18px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .in-room .interaction-sidebar .ch-night-eyebrow{margin-bottom:3px}
  .in-room .interaction-sidebar .ch-night-selection{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .in-room .interaction-sidebar .ch-night-mark{width:29px;height:29px;font-size:22px}
  .in-room .interaction-sidebar .ch-night-deadline{font-size:13px;min-width:29px;padding:5px}
  .in-room .interaction-sidebar .action-confirmation{max-height:25px;overflow:auto;line-height:1.4;font-size:8px;margin-top:5px}
  .in-room .interaction-sidebar .action-panel>.text-link{min-height:17px;font-size:8px}
  .in-room .interaction-sidebar .practice-advance{gap:6px;margin-top:5px;padding-top:5px;font-size:7px}
  .in-room .interaction-sidebar .practice-advance button{font-size:7px;min-height:23px;padding:4px 6px;white-space:nowrap}
  .in-room .interaction-sidebar .overcharge-summary{max-height:38px;padding:5px 7px;font-size:8px;overflow:auto}
  .in-room .interaction-sidebar>.action-panel:has(#vote-form):has(#action-form){overflow-y:auto}
  .in-room .interaction-sidebar>.chat-panel{grid-area:auto;flex:1;min-height:205px;height:auto;position:static;overflow:hidden}
  .in-room .interaction-sidebar .chat-heading{padding:8px 10px}
  .in-room .interaction-sidebar .chat-heading h2{font-size:21px}
  .in-room .interaction-sidebar .chat-channel-notice{padding:5px 10px;font-size:8px;line-height:1.4}
  .in-room .interaction-sidebar .chat-messages{min-height:24px;padding:9px 10px}
  .in-room .interaction-sidebar .chat-message{margin-bottom:10px}
  .in-room .interaction-sidebar .chat-form{padding:8px}
  .in-room .interaction-sidebar .channel-controls{margin-bottom:5px}
  .in-room .interaction-sidebar .chat-compose textarea{min-height:38px;max-height:66px}
  .in-room .interaction-sidebar .chat-hint{margin-top:4px}
}
@media(min-width:761px) and (min-height:561px) and (max-height:679px),(min-width:1100px) and (max-height:679px){
  .in-room .interaction-sidebar{overflow-y:auto;overscroll-behavior:contain}
  .in-room .interaction-sidebar>.action-panel:has(form){flex-shrink:0}
  .in-room .interaction-sidebar>.chat-panel{flex-shrink:0;min-height:230px}
}
@media(min-width:761px) and (max-width:1099px){
  .in-room .game-grid{grid-template-columns:minmax(0,1fr) minmax(285px,340px);grid-template-areas:'case case' 'village interaction';align-items:start}
  .in-room .case-sidebar{grid-area:case;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;align-items:stretch}
  .in-room .village-column{grid-area:village}
  .in-room .interaction-sidebar{grid-area:interaction}
  .in-room .interaction-sidebar>.action-panel{max-height:430px;overflow-y:auto}
  .in-room .interaction-sidebar>.chat-panel{height:420px;min-height:360px;position:static;grid-area:auto}
  .in-room .village-column>.village-stage{margin-top:0}
}
@media(max-width:760px){
  .in-room .game-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:'case' 'actions' 'village' 'chat'}
  .in-room .interaction-sidebar{display:contents}
  .in-room .interaction-sidebar>.action-panel{grid-area:actions;max-height:480px;overflow-y:auto}
  .in-room .interaction-sidebar>.chat-panel{grid-area:chat;position:static;height:480px;min-height:360px}
  .in-room .village-column>.village-stage{margin-top:0}
  .in-room .interaction-sidebar .action-fields-scroll{max-height:260px;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}
}

.chat-message.system.evil-death{background:#f8e4df;border-color:#d69a91;border-left:3px solid #a7443c}
.chat-message.system.evil-death p,.chat-message.system.evil-death .chat-message-header strong{color:#872e2b}
.chat-message.system.evil-death .chat-message-header time{color:#95625b}

.voting-rule{flex:none;margin:0;padding:7px 12px;background:#ebe5d5;border:1px solid #c9bd9d;border-top:0;color:#6a604c;font:500 10px/1.45 var(--sans);overflow-wrap:anywhere}
.nomination-selection{flex:none;margin:0;padding:7px 9px;border-left:2px solid #b3985f;background:#e9eadc;color:#5f694e;font:500 10px/1.5 var(--sans);overflow-wrap:anywhere;max-height:65px;overflow-y:auto}
.seat-votes.nomination-count{width:auto;min-width:32px;height:20px;padding:2px 5px;right:-3px;top:-6px;border-radius:12px;font-size:9px;font-variant-numeric:tabular-nums;white-space:nowrap;background:#f0dcaa;color:#3b4433;border-color:#a8925c}
.seat-portrait:has(.nomination-count)>.seat-badge{top:auto;bottom:-5px;right:-5px}
@media(min-width:1100px){.in-room .nomination-selection{font-size:9px;padding:6px 8px;max-height:56px}.in-room .voting-rule{font-size:9px;padding:6px 12px}}
@media(max-width:1099px){.in-room .village-column>.voting-rule{order:1}}
@media(max-width:440px){.seat-votes.nomination-count{min-width:27px;height:17px;padding:2px 4px;font-size:8px}.voting-rule{font-size:9px;padding:7px 10px}.nomination-selection{font-size:10px}}

/* Public totals reveal the balance of the case, never individual allegiances. */
.remaining-counts{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.remaining-badge{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;border:1px solid;border-radius:4px;padding:3px 7px;font:600 9px/1 var(--sans)}
.remaining-badge strong{font-size:13px;font-variant-numeric:tabular-nums}
.remaining-good{background:#e5eadb;border-color:#aebd9a;color:#435b36}
.remaining-evil{background:#f3dfd8;border-color:#cf9e93;color:#913e38}
.remaining-neutral{background:#e7e1ee;border-color:#b8a8c5;color:#695477}
.phase-banner>div:first-child,.phase-banner>div:first-child>div{min-width:0}
.phase-clock{flex-shrink:0}
.ch-night-mode .remaining-good{background:#293c34;border-color:#5e7d64;color:#cae1bb}
.ch-night-mode .remaining-evil{background:#472f34;border-color:#93646b;color:#f0b6ab}
.ch-night-mode .remaining-neutral{background:#373340;border-color:#796784;color:#d9c6e5}
@media(min-width:1100px){.in-room .phase-banner:has(.remaining-counts:not([hidden])){padding-top:8px;padding-bottom:8px}.in-room .remaining-counts{margin-top:5px}}
@media(max-width:440px){.remaining-counts{gap:4px}.remaining-badge{gap:4px;padding:3px 5px;font-size:8px}.remaining-badge strong{font-size:11px}.phase-banner:has(.remaining-counts:not([hidden])) #phase-symbol{display:none}.phase-banner:has(.remaining-counts:not([hidden])){gap:9px}}

/* Your card follows your current allegiance, including after death. */
.role-panel[data-allegiance="good"]{--role-card-bg:#d9e8d0;--role-card-ink:#243b2b;--role-card-copy:#36513a;--role-card-muted:#486348;--role-card-line:#93ad8b88;--role-card-badge:#c3d8b9;--role-card-accent:#365637;--role-card-mark:#466b3910}
.role-panel[data-allegiance="evil"]{--role-card-bg:#591e28;--role-card-ink:#fff3e9;--role-card-copy:#f0d9d4;--role-card-muted:#e6bdb6;--role-card-line:#f1b8ad38;--role-card-badge:#783640;--role-card-accent:#f3d69f;--role-card-mark:#ffd9cc08}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]){background:var(--role-card-bg);color:var(--role-card-ink)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]):after{color:var(--role-card-mark)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .eyebrow,
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .my-identity{color:var(--role-card-muted)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .role-faction{background:var(--role-card-badge);color:var(--role-card-ink)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .role-summary{color:var(--role-card-copy);border-color:var(--role-card-line)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .role-status{color:var(--role-card-accent)}
.role-panel:is([data-allegiance="good"],[data-allegiance="evil"]) .role-resources>span{background:var(--role-card-badge);color:var(--role-card-copy);border-color:var(--role-card-line)}

button.role-list-tag{cursor:pointer;text-align:left;line-height:1.4;color:#4a6140;min-height:28px}
button.role-list-tag:hover{background:#e3ead8;border-color:#8b9e76}
button.role-list-tag:focus-visible,.role-group-choice:focus-visible,.role-group-back:focus-visible{outline:2px solid #92733d;outline-offset:2px}
.role-list-tag>span{margin-left:3px;color:#93763f}
.role-group-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:20px}
.role-group-choice{display:flex;flex-direction:column;gap:5px;min-width:0;text-align:left;border:1px solid #c8ceba;border-radius:4px;background:#f8f7ef;padding:12px;color:#354c35;cursor:pointer}
.role-group-choice:hover{background:#e3ead8;border-color:#8b9e76}
.role-group-choice strong{display:flex;justify-content:space-between;gap:6px;width:100%;font-size:12px}
.role-group-choice small{font-size:9px;color:#647358}
.role-group-back{background:transparent;color:#627248;padding:0 0 14px;font-size:11px;text-align:left;cursor:pointer}
@media(max-width:440px){.role-group-choices{grid-template-columns:1fr}}

.role-list-legend{display:flex;flex-wrap:wrap;gap:4px;flex-basis:100%;margin-bottom:4px;font-size:8px;line-height:1.4}
.role-list-legend>span{border:1px solid;border-radius:3px;padding:3px 5px}
:is(button.role-list-tag,.role-group-choice,.role-list-legend>span)[data-allegiance="good"]{background:#d9e8d0;color:#243b2b;border-color:#9bb48e}
:is(button.role-list-tag,.role-group-choice,.role-list-legend>span)[data-allegiance="evil"]{background:#591e28;color:#fff3e9;border-color:#8d4a55}
:is(button.role-list-tag,.role-group-choice,.role-list-legend>span)[data-allegiance="neutral"]{background:#e7e1ee;color:#51425d;border-color:#b8a8c5}
:is(button.role-list-tag,.role-group-choice)[data-allegiance="good"]:hover{background:#c7ddbc;border-color:#6b885d}
:is(button.role-list-tag,.role-group-choice)[data-allegiance="evil"]:hover{background:#74303c;border-color:#b2747e}
:is(button.role-list-tag,.role-group-choice)[data-allegiance="neutral"]:hover{background:#dcd1e5;border-color:#967fa7}
.role-list-tag[data-allegiance]>span,.role-group-choice[data-allegiance] small{color:inherit}

/* Role details use the same allegiance colours as their public role buttons. */
#role-dialog[data-allegiance="good"]{--role-detail-bg:#d9e8d0;--role-detail-ink:#243b2b;--role-detail-copy:#36513a;--role-detail-muted:#486348;--role-detail-line:#9bb48e;--role-detail-fill:#c3d8b9;--role-detail-accent:#365637}
#role-dialog[data-allegiance="evil"]{--role-detail-bg:#591e28;--role-detail-ink:#fff3e9;--role-detail-copy:#f0d9d4;--role-detail-muted:#e6bdb6;--role-detail-line:#a66b75;--role-detail-fill:#783640;--role-detail-accent:#f3d69f}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]){background:var(--role-detail-bg);color:var(--role-detail-ink);border-color:var(--role-detail-line)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) :is(.role-detail-description,.role-ability-list){color:var(--role-detail-copy)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) :is(.eyebrow,.small-note,.text-link,.role-group-back,.dialog-close){color:var(--role-detail-muted)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) :is(.role-faction,.stat-pill,.role-goal){background:var(--role-detail-fill);color:var(--role-detail-ink);border-color:var(--role-detail-line)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) .role-goal{border-left-color:var(--role-detail-accent)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) .dialog-close:hover{background:var(--role-detail-fill);color:var(--role-detail-ink)}
#role-dialog:is([data-allegiance="good"],[data-allegiance="evil"]) :is(button,a):focus-visible{outline:2px solid var(--role-detail-accent);outline-offset:3px}
