:root{color-scheme:dark;--bg:#101b20;--ink:#f3eddb;--muted:#9da9a7;--gold:#e9bf70;--red:#c95c53;--blue:#4c8da6;--yellow:#c3a446;--green:#568a62}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 0,#223339 0,transparent 65%),var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;min-height:100vh}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;border-radius:7px;padding:13px 20px;background:var(--gold);color:#172328;font-weight:700}button:hover{filter:brightness(1.12)}button:disabled{opacity:.4;cursor:default}button.secondary{background:#ffffff0a;border:1px solid #ffffff25;color:var(--ink)}a{color:var(--gold)}header{max-width:1500px;margin:auto;padding:30px 4%;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ffffff14}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;color:var(--ink);font-size:21px;letter-spacing:2px;font-weight:800}.brand-icon{color:var(--gold);font-size:36px}.edition{font-size:10px;letter-spacing:2px;border-left:1px solid #ffffff30;padding-left:15px;font-weight:400;color:var(--gold)}.connection{font-size:10px;letter-spacing:1.8px;color:var(--muted)}main{max-width:1500px;margin:auto;padding:32px 4%}h1,h2,p{margin-top:0}h1{font-family:Georgia,serif;font-size:clamp(42px,6vw,80px);font-weight:400;line-height:1.06;letter-spacing:-2px}h1 em{color:var(--gold);font-weight:400}p{line-height:1.7;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:3px;color:var(--gold);margin-bottom:20px}.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:8%;padding:60px 0;align-items:center}.hero p{max-width:480px}.panel{background:#ffffff04;border:1px solid #ffffff20;padding:28px;border-radius:12px}.panel h2{font-family:Georgia,serif;font-size:27px;font-weight:400}.field{display:block;margin:20px 0;color:var(--muted);font-size:13px}.field select,.field input{display:block;width:100%;margin-top:9px;background:#142329;border:1px solid #ffffff25;border-radius:6px;color:var(--ink);padding:13px}.wide{width:100%}.steps{display:flex;gap:32px;border-top:1px solid #ffffff15;padding-top:28px}.steps p{font-size:13px;margin:0}.steps b{display:block;color:var(--ink);font-size:14px;margin-bottom:8px}.steps span{color:var(--gold);margin-right:8px}.topline{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px}.topline h2{font-family:Georgia,serif;font-size:30px;font-weight:400;margin:0}.tag{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.scores{display:flex;gap:10px}.score{border:1px solid #ffffff20;border-radius:8px;padding:10px 18px;min-width:100px;display:flex;align-items:center;gap:14px}.score.active{background:#ffffff09;border-color:var(--team)}.score b{font-size:28px;color:var(--team)}.score span{font-size:10px;text-transform:uppercase;letter-spacing:1px}.turnbar{display:flex;align-items:center;justify-content:space-between;background:#ffffff06;border-left:3px solid var(--team);padding:17px 22px;border-radius:5px;margin-bottom:22px;gap:20px}.turnbar strong{font-size:18px}.turnbar p{font-size:12px;margin:5px 0 0}.clue{font-family:Georgia,serif;font-size:27px;color:var(--gold)}.grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.card{position:relative;min-height:108px;padding:18px 9px 25px;background:#e9e0c9;color:#203036;border:1px solid #fff4;border-radius:8px;box-shadow:0 4px 0 #0004;font-size:clamp(13px,1.5vw,23px);font-weight:750;text-transform:uppercase;letter-spacing:.4px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.15}.card:after{content:attr(data-label);position:absolute;bottom:8px;font-size:8px;letter-spacing:2px;font-weight:400;opacity:.7}.card.red{background:#b9514a;color:#fff2e8}.card.blue{background:#397d99;color:#f0faff}.card.yellow{background:#cfb24e;color:#1c2825}.card.green{background:#487a54;color:#f2ffe7}.card.neutral{background:#ada48d;color:#1b2928}.card.assassin{background:#182126;color:#f8e6d0;border:2px solid #e9bf7070}.card.revealed{opacity:.47;box-shadow:none}.card.revealed:before{content:'✓';position:absolute;top:6px;left:9px;font-size:13px}.card.assassin.revealed:before{content:'✕'}.below{display:flex;justify-content:space-between;gap:24px;margin-top:24px;align-items:start}.legend{display:flex;gap:18px;color:var(--muted);font-size:11px;flex-wrap:wrap}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;background:var(--team)}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.log{margin-top:28px;border-top:1px solid #ffffff15;padding-top:18px;font-size:12px;color:var(--muted)}.log p{margin:5px 0}.clueform{display:flex;gap:8px;margin-top:18px}.clueform input,.clueform select{background:#102026;border:1px solid #ffffff40;border-radius:6px;padding:12px;color:var(--ink);min-width:0}.clueform input{flex:1}.share{margin-top:30px}.share summary{cursor:pointer;color:var(--gold);font-size:13px}.share-row{display:flex;gap:10px;align-items:center;margin-top:12px}.share-row label{width:75px;font-size:13px}.share-row input{flex:1;min-width:0;background:#0c171c;border:1px solid #ffffff20;border-radius:5px;padding:12px;color:var(--muted);font-size:12px}.share-row button{padding:12px}.hint{font-size:12px;color:var(--muted);line-height:1.5}.winner{color:var(--gold)}footer{max-width:1500px;margin:25px auto 0;padding:24px 4%;color:#7e9294;font-family:Georgia,serif;font-style:italic;font-size:14px;display:flex;justify-content:space-between}footer span{font-family:Arial,sans-serif;font-size:9px;font-style:normal;letter-spacing:2px}dialog{background:#1a2a30;color:var(--ink);border:1px solid #ffffff30;border-radius:12px;max-width:90%;width:440px;padding:28px}dialog::backdrop{background:#061015c9}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--gold);color:#152329;border-radius:8px;padding:14px 22px;display:none;z-index:10;max-width:90%}:focus-visible{outline:3px solid var(--gold);outline-offset:4px}@media(min-width:1600px){.card{min-height:140px}}@media(max-width:750px){header{padding:18px 4%}.brand{font-size:16px;gap:8px}.brand-icon{font-size:26px}.edition{font-size:8px;padding-left:9px}.connection{font-size:8px;max-width:85px;text-align:right}.hero{grid-template-columns:1fr;padding:30px 0;gap:25px}.hero h1{font-size:52px}.steps{flex-direction:column;gap:15px}.topline{align-items:start;flex-direction:column}.scores{width:100%}.score{min-width:0;flex:1;padding:8px;gap:8px}.score b{font-size:23px}.score span{font-size:8px}.turnbar{padding:13px;gap:10px;flex-wrap:wrap}.grid{gap:6px}.card{min-height:85px;font-size:clamp(9px,2.4vw,17px);padding:10px 3px 20px;letter-spacing:0;border-radius:5px}.card:after{font-size:6px;letter-spacing:.6px}.below{flex-direction:column;gap:18px}.clue{font-size:23px}main{padding-top:23px}.clueform{flex-wrap:wrap}.clueform button{padding:12px}footer span{display:none}.share-row label{width:47px}.share-row button{font-size:12px}}
.card:disabled{opacity:1;cursor:default;filter:none}.card.revealed:disabled{opacity:.5}

/* Shared screens keep every row visible; fitBoard measures the actual space above. */
.game-view header{padding-top:12px;padding-bottom:12px}
.game-view main{padding-top:16px}
.game-view .topline{margin-bottom:12px}
.game-view .topline .eyebrow{margin-bottom:6px}
.game-view .turnbar{padding:12px 18px;margin-bottom:12px}
.audience-view .grid,.host-view .grid{height:var(--board-height,clamp(250px,calc(100svh - 300px),760px));grid-template-rows:repeat(5,minmax(0,1fr));gap:8px}
.audience-view .card,.host-view .card{min-height:0;height:100%;padding:8px 7px 17px}
@media(max-width:750px){.game-view .topline{gap:10px}.audience-view .grid,.host-view .grid{gap:5px}.audience-view .card,.host-view .card{padding:6px 3px 15px}}
@media(min-width:751px){.audience-view .card,.host-view .card{font-size:clamp(12px,min(1.5vw,2.7svh),23px)}}
/* Captain phones retain the same five-column key as the TV board. */
.captain-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px}
.captain-controls p{font-size:13px;margin:0}
.captain-view{--captain:var(--gold)}
.red-view{--captain:var(--red)}.blue-view{--captain:var(--blue)}.yellow-view{--captain:var(--yellow)}.green-view{--captain:var(--green)}
.captain-view .topline h2{color:var(--captain)}
@media(max-width:750px){
 .captain-view header{padding:10px 12px;gap:8px}
 .captain-view .brand{font-size:14px;letter-spacing:1px}
 .captain-view .edition{font-size:7px;letter-spacing:1px;padding-left:7px}
 .captain-view main{padding:14px 12px 24px}
 .captain-view .topline h2{font-size:27px}
 .captain-view .topline .eyebrow{font-size:10px;letter-spacing:2px}
 .captain-view .score{min-height:48px}
 .captain-view .turnbar{padding:12px;gap:8px}
 .captain-view .turnbar strong{font-size:16px}
 .captain-view .turnbar .tag{font-size:9px;letter-spacing:1px}
 .captain-view .clueform{display:grid;grid-template-columns:minmax(0,1fr) 72px;margin-top:12px}
 .captain-view .clueform input,.captain-view .clueform select{font-size:16px;min-height:48px;width:100%;padding:12px}
 .captain-view .clueform button{grid-column:1/-1;min-height:48px}
 .captain-view .grid{gap:5px}
 .captain-view .card{min-width:0;min-height:88px;font-size:clamp(10px,2.8vw,13px);font-weight:700;line-height:1.18;overflow-wrap:anywhere;padding:10px 3px 20px}
 .captain-view .card:after{font-size:7px;letter-spacing:.4px;bottom:7px}
 .captain-view .captain-controls{align-items:center;margin-bottom:12px}
 .captain-view .captain-controls button,.captain-view .actions button{min-height:48px;flex-shrink:0}
 .captain-view .captain-controls p{font-size:12px}
 .captain-view .log summary{min-height:44px;padding:8px 0}
}
.captain-layout{display:none}
.position{position:absolute;top:7px;left:8px;font-size:9px;font-weight:700;letter-spacing:.5px;opacity:.85}
.captain-view .card.revealed:before{left:auto;right:7px}
@media(max-width:750px){
 .captain-view[data-team-count="2"] .topline{display:grid;grid-template-columns:minmax(0,1fr) 132px;align-items:center;gap:8px}
 .captain-view[data-team-count="2"] .topline h2{font-size:23px}
 .captain-view[data-team-count="2"] .scores{gap:5px}
 .captain-view[data-team-count="2"] .score{padding:7px;gap:5px}
 .captain-view .turnbar .tag{display:none}
 .captain-view .clueform{grid-template-columns:72px minmax(0,1fr)}
 .captain-view .clueform input{grid-column:1/-1}
 .captain-view .clueform button{grid-column:2}
 .captain-view .captain-layout{display:flex;gap:8px;margin:16px 0 12px}
 .captain-layout button{min-height:44px;font-size:13px;flex:1;padding:10px 8px}
 .captain-layout button[aria-pressed="true"]{border-color:var(--captain);background:#ffffff12}
 .captain-view[data-key-layout="readable"] .grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
 .captain-view[data-key-layout="readable"] .card{min-height:108px;font-size:13px;padding:24px 6px 23px;overflow-wrap:anywhere}
 .captain-view[data-key-layout="readable"] .card:after{font-size:9px;letter-spacing:.7px}
 .captain-view[data-key-layout="grid"] .card{padding-top:22px}
 .captain-view .position{font-size:9px}
}
.captain-view .turnbar>*{min-width:0}
.captain-view .clue{max-width:100%;overflow-wrap:anywhere}
.captain-manage{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0 16px 85px;color:var(--muted);font-size:12px}
.captain-manage button{font-size:12px;padding:10px 12px;min-height:44px}
.access-message{max-width:640px;margin:35px auto}
@media(max-width:750px){.captain-manage{margin-left:57px}}
