:root{color:oklch(18% .018 230);font-kerning:normal;--bg:oklch(100% 0 0);--surface:oklch(97% .008 230);--surface-strong:oklch(92.5% .014 230);--ink:oklch(18% .018 230);--muted:oklch(42% .025 230);--blue:oklch(50% .12 230);--blue-dark:oklch(40% .1 230);--teal:oklch(48% .105 210);--red:oklch(48% .17 25);--grey:oklch(46% .018 230);--yellow:oklch(84% .15 90);--line:oklch(78% .025 235);--on-dark:oklch(99% 0 0);--ease-out:cubic-bezier(.22, 1, .36, 1);--z-sticky:20;--z-modal-backdrop:30;--z-modal:40;background:oklch(100% 0 0);font-family:Aptos,Segoe UI,system-ui,-apple-system,sans-serif;font-size:16px}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;min-height:100vh;color:var(--ink);margin:0;line-height:1.5}button,input{font:inherit}button{border:2px solid var(--ink);background:var(--bg);min-height:44px;color:var(--ink);cursor:pointer;padding:.55rem .8rem;font-weight:700}button:disabled{cursor:not-allowed;opacity:.58}@media (hover:hover){button:not(:disabled):hover{background:var(--surface)}}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.primary{background:var(--ink);color:var(--on-dark);border-color:var(--ink)}.primary:not(:disabled):hover{background:var(--blue);color:var(--on-dark)}.quiet{border:0;align-items:center;gap:.35rem;min-height:44px;display:inline-flex}.quiet svg{width:1rem}.logo{object-fit:contain;width:160px;height:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:var(--z-modal);background:var(--ink);color:var(--on-dark);padding:.65rem .9rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}h1,h2,h3{text-wrap:balance;line-height:1.15}p,li{text-wrap:pretty}.landing,.waiting{width:min(100%,76rem);min-height:100vh;margin:0 auto;padding:clamp(1.5rem,4vw,4rem)}.landing{align-content:center;justify-items:center;display:grid}.waiting{text-align:center;place-content:center;display:grid}.landing-title{text-align:center;max-width:48rem}.landing-title .logo{width:min(330px,100%)}.lede{max-width:60ch;margin-inline:auto;font-size:1.125rem;line-height:1.55}.landing-scene{grid-template-columns:minmax(10rem,.7fr) minmax(20rem,1fr) minmax(10rem,.7fr);align-items:end;gap:clamp(1rem,3vw,2.5rem);width:100%;margin-top:1.5rem;display:grid}.candidate-figure{text-align:center;min-width:0;margin:0}.candidate-figure img{object-fit:contain;object-position:center bottom;width:100%;height:clamp(13rem,31vw,24rem);display:block}.candidate-figure figcaption{border-top:2px solid;padding-top:.55rem;font-size:1.05rem;font-weight:800}.candidate-figure figcaption span{font-size:.875rem;font-style:italic;font-weight:500;display:block}.farage-figure{color:var(--teal)}.entry{border:2px solid var(--ink);background:var(--bg);box-shadow:.55rem .55rem 0 var(--surface-strong);align-self:center;padding:1rem}.switch{display:flex}.switch button{border-bottom:0;flex:1}.switch .selected{background:var(--yellow)}form,label{gap:.45rem;display:grid}form{gap:1rem;padding:1.25rem 0}input{border:2px solid var(--ink);background:var(--bg);min-height:44px;color:var(--ink);padding:.5rem}.error{color:var(--red);font-weight:700}.landing-note{color:var(--muted);margin:1.5rem 0 .5rem;font-weight:700}.kickstarter-link{border:2px solid var(--ink);background:var(--yellow);max-width:36rem;color:var(--ink);text-align:center;margin:.5rem 0;padding:.7rem .9rem;font-weight:800;display:inline-block}.kickstarter-link:hover{background:var(--surface-strong)}.landing-footer{border-top:2px solid var(--line);text-align:center;justify-items:center;gap:.75rem;width:min(100%,44rem);margin-top:2.5rem;padding-top:1.5rem;display:grid}.called-it-link{border:2px solid var(--ink);background:var(--bg);max-width:36rem;color:var(--ink);padding:.7rem .9rem;font-weight:800;text-decoration:none;display:inline-block}.called-it-lead{text-decoration:underline}.called-it-note{color:var(--muted);font-size:.875rem;font-style:italic;font-weight:500;display:block}.called-it-link:hover{background:var(--yellow)}.called-it-link:hover .called-it-note{color:var(--ink)}.footer-meta{color:var(--muted);margin:0;font-size:.9rem}.kickstarter-promo{border:2px solid var(--ink);background:var(--yellow);padding:.85rem}.game{max-width:105rem;margin:auto;padding:0 1rem 2rem}.game header{min-height:64px;z-index:var(--z-sticky);border-bottom:2px solid var(--ink);background:var(--bg);flex-wrap:wrap;align-items:center;gap:.4rem;display:flex;position:sticky;top:0}.game header .logo{width:115px}.room-code{letter-spacing:.06em;font-weight:800}.connection{align-items:center;gap:.3rem;font-size:.875rem;font-weight:700;display:inline-flex}.connection svg{width:1rem}.connection.connected{color:var(--teal)}.connection.offline,.connection.error{color:var(--red)}.score-strip{border-bottom:2px solid var(--ink);flex-wrap:wrap;align-items:center;gap:1rem;padding:.7rem 0;display:flex}.score-player{flex-wrap:wrap;align-items:center;gap:.35rem;min-width:min(100%,20rem);display:flex}.score-strip img{object-fit:contain;border:2px solid var(--ink);border-radius:50%;width:38px;height:38px}.score-strip small{border:1px solid var(--ink);background:var(--surface);padding:.1rem .35rem;font-weight:700}.unassigned{border:2px dashed var(--muted);width:38px;height:38px;color:var(--muted);place-items:center;font-weight:800;display:grid}.countdown{flex-wrap:wrap;align-items:center;gap:.25rem;margin-left:auto;display:flex}.countdown span{border:1px solid var(--ink);align-items:center;gap:.15rem;padding:.25rem;font-weight:700;display:inline-flex}.countdown svg{width:.8rem;height:.8rem}.countdown .covered{background:var(--yellow)}.live{min-height:1.4rem;color:var(--muted);margin:.5rem 0;font-weight:650}.game-actions{border:0;min-width:0;margin:0;padding:0}.game-actions[aria-busy=true]{cursor:progress}.lobby,.table-flow,.turn,.finished{max-width:850px;margin:2rem auto;padding:1rem 0}.lobby h1,.table-flow h1,.turn h1,.finished h1{margin:.25rem 0;font-size:2rem}.ballot{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.ballot button{place-items:center;min-height:220px;display:grid}.ballot .chosen{background:var(--yellow);box-shadow:inset 0 0 0 2px var(--ink)}.ballot img{object-fit:contain;max-width:100%;height:135px}.nomination{text-align:left;width:100%;margin:.5rem 0;display:block}.nomination.chosen{background:var(--yellow)}.agreement,.opportunity{border:2px solid var(--ink);background:var(--surface);margin:1rem 0;padding:1rem}.dice-row{flex-wrap:wrap;gap:1rem;margin:1rem 0;display:flex}.die{grid-template-rows:1fr auto auto auto;place-items:center;width:106px;min-height:106px;display:grid}.die.red{color:#fff;background:#c73d35}.die.blue{color:#10202a;background:#29a8e0}.die.grey{color:#fff;background:gray}.die.selected{outline:5px solid var(--yellow);outline-offset:2px}.die:disabled{opacity:.72}.pips{grid-template-rows:repeat(3,.55rem);grid-template-columns:repeat(3,.55rem);gap:.18rem;display:grid}.pips i{background:0 0;border-radius:50%;width:.55rem;height:.55rem}.pips .pip-on{background:currentColor}.die small{text-transform:capitalize}.colour-cue,.hotspot-cue{background:currentColor;border:2px solid;flex:none;width:16px;height:16px;display:inline-block}.colour-cue.red,.hotspot-cue.red{color:#c0392b;clip-path:polygon(50% 0,100% 100%,0 100%)}.colour-cue.blue,.hotspot-cue.blue{color:#1681ae;transform:rotate(45deg)}.colour-cue.grey,.hotspot-cue.grey{color:#656565;border-radius:50%}.die .colour-cue{color:currentColor;background:currentColor;border-color:currentColor}.board-legend{flex-wrap:wrap;gap:1rem;margin:.5rem 0;font-size:.8rem;font-weight:700;display:flex}.board-legend span{align-items:center;gap:.3rem;display:inline-flex}.action-row,.opportunity{border:2px solid var(--ink);background:var(--surface);align-items:center;gap:1rem;margin:1rem 0;padding:.7rem;display:flex}.board-section{min-width:0;margin:1rem 0}.board-controls{gap:.25rem;margin-bottom:.5rem;display:flex}.board-controls button{min-width:44px}.board-view{overscroll-behavior-inline:contain;touch-action:pan-x pan-y pinch-zoom;border:2px solid var(--ink);background:var(--surface);min-height:330px;padding:.5rem;overflow:auto}.board{aspect-ratio:2106/1489;flex:none;position:relative}.board>img{object-fit:contain;width:100%;height:100%;display:block}.hotspot{width:max(44px,5.3%);height:max(54px,11.5%);min-height:54px;color:var(--ink);background:0 0;border:0;padding:0;position:absolute;transform:translate(-50%,-50%)}.hotspot:disabled{cursor:default;opacity:1}.hotspot em{background:var(--bg);border:1px solid var(--ink);opacity:0;pointer-events:none;padding:0 2px;font-size:.65rem;font-style:normal;position:absolute;top:100%;left:50%;transform:translate(-50%)}.hotspot:is(:hover,:focus-visible).legal em,.hotspot:is(:hover,:focus-visible).ignore em,.hotspot:is(:hover,:focus-visible).bonus em{opacity:1}.hotspot.legal{border:4px solid var(--teal);background:oklch(88% .055 210/.48);border-radius:50%}.hotspot.ignore{border:4px dashed var(--red);background:oklch(91% .035 25/.58)}.hotspot.bonus{outline:5px solid var(--yellow);border-radius:50%}.hotspot.owned .owner-token{width:30px;height:30px;color:var(--on-dark);background:var(--teal);border:2px solid var(--ink);border-radius:50%;place-items:center;margin:auto;font-size:1rem;display:grid}.hotspot.owned.binface .owner-token{background:var(--ink);border-radius:0;transform:rotate(45deg)}.hotspot.owned.binface .owner-token b{display:block;transform:rotate(-45deg)}.hotspot-cue{opacity:.95;filter:drop-shadow(0 0 1px #fff);width:10px;height:10px;position:absolute;bottom:2px;right:2px}.turn-guidance,.power-warning,.debug-strip{border:2px solid var(--ink);background:var(--surface);margin:1rem 0;padding:.75rem}.turn-guidance p,.power-warning p{margin-top:0}.power-warning{border-color:var(--red)}.debug-strip{background:#fff4c2;border-style:dashed;flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.debug-note{color:var(--muted);margin:0;font-size:.875rem}.direct-powers{border-top:2px solid var(--ink);max-width:none;margin:0;padding-top:.6rem}.direct-powers button{margin:.4rem .4rem 0 0}.direct-powers>div{border-top:1px solid var(--line);padding:.6rem}.tabletop-layout{flex-direction:column;gap:clamp(.6rem,1.2vw,1.25rem);display:flex}.lobby-layout{grid-template-columns:minmax(0,1fr) minmax(19rem,24rem);align-items:start;gap:clamp(1rem,2vw,2rem);display:grid}.lobby-layout>aside{position:sticky;top:5rem}.lobby-layout .lobby{margin-top:0}.table-centre{min-width:0}.tabletop-middle{grid-template-columns:minmax(10rem,14rem) minmax(28rem,1fr) minmax(10rem,14rem);align-items:start;gap:clamp(.5rem,1vw,1rem);display:grid}.dice-sidebar{min-width:0;position:sticky;top:5rem}.rail-panel{border:2px solid var(--ink);background:var(--surface);max-width:none;margin:0;padding:.75rem}.rail-panel h1,.rail-panel h2{margin-top:0;font-size:1.35rem}.rail-panel .dice-row{justify-content:center;margin-bottom:0}.roll-pool .dice-row{flex-direction:column;align-items:center}.rail-hint{color:var(--muted);font-size:.82rem}.candidate-sheet{--sheet-accent:var(--ink);border:3px solid var(--sheet-accent);background:var(--bg);width:100%;min-width:0;position:relative}.candidate-sheet.farage{--sheet-accent:oklch(66% .13 210)}.html-sheet{grid-template-columns:minmax(12rem,.72fr) minmax(18rem,1fr) minmax(13rem,.78fr) minmax(28rem,1.8fr);align-items:stretch;min-height:19rem;display:grid}.html-sheet>*{min-width:0;padding:.8rem}.sheet-identity{border-bottom:5px solid var(--sheet-accent);align-items:center;gap:.7rem;display:flex}.sheet-identity img{object-fit:contain;object-position:center bottom;width:min(42%,8rem);height:10rem}.sheet-identity h2{color:var(--sheet-accent);margin:0;font-size:1.8rem}.sheet-identity p,.sheet-identity strong{margin:.25rem 0;display:block}.sheet-permanent,.sheet-stations,.sheet-rechargeable{border-left:2px solid var(--sheet-accent)}.html-sheet>section>h3,.html-die-station>h3,.html-voter-station>h3{color:var(--sheet-accent);margin:0 0 .45rem;font-size:1rem}.html-power-list{gap:.35rem;display:grid}.sheet-rechargeable .html-power-list{grid-template-columns:repeat(3,minmax(0,1fr))}.html-power{border-top:1px solid var(--line);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.55rem;padding:.45rem 0;display:grid}.html-power h3{color:var(--sheet-accent);margin:0;font-size:.92rem}.html-power p{margin:.12rem 0 0;font-size:.76rem;line-height:1.3}.power-slots{flex-wrap:wrap;gap:.25rem;display:flex}.html-power-slot{border:2px solid var(--sheet-accent);background:var(--bg);width:44px;min-height:44px;color:var(--ink);place-content:center;gap:0;padding:.15rem;line-height:1;display:grid}.html-power-slot>span{font-size:1rem}.html-power-slot small{font-size:.52rem;font-weight:750}.html-power-slot:disabled{cursor:default;opacity:1}.html-power-slot.charged{background:var(--yellow);box-shadow:inset 0 0 0 2px var(--bg)}.binface .html-power-slot.charged{background:var(--ink);color:var(--on-dark)}.html-power-slot.activatable{outline:4px solid var(--teal);outline-offset:2px;animation:slot-pulse 1.4s var(--ease-out) infinite alternate}.html-power-slot.activatable:hover{background:var(--yellow);color:var(--ink)}.sheet-stations{grid-template-columns:.8fr 1.2fr;gap:.75rem;display:grid}.html-die-station,.html-voter-station{min-width:0}.html-die-station .die{width:min(100%,106px)}.html-voter-grid{grid-template-columns:repeat(5,minmax(1.5rem,1fr));gap:.3rem;margin-bottom:.35rem;display:grid}.html-voter-grid i{aspect-ratio:1;border:2px solid var(--sheet-accent);background:var(--bg);border-radius:18%;display:block}.html-voter-grid i.claimed{background:var(--yellow);box-shadow:inset 0 0 0 2px var(--bg)}.binface .html-voter-grid i.claimed{background:var(--ink)}.your-sheet-label{border:1px solid var(--ink);background:var(--yellow);padding:.2rem .4rem;font-size:.72rem;font-weight:800;position:absolute;top:.55rem;right:.55rem}@keyframes slot-pulse{0%{box-shadow:0 0 oklch(48% .105 210/.4)}to{box-shadow:0 0 0 5px oklch(48% .105 210/0)}}.finished-table .board-section{max-width:88rem;margin-inline:auto}.history{border-top:2px solid var(--ink);max-width:850px;margin:2rem auto;padding:.7rem 0}.history p{margin:.35rem 0}dialog{border:3px solid var(--ink);background:var(--bg);width:calc(100% - 2rem);max-width:780px;max-height:calc(100vh - 2rem);color:var(--ink);z-index:var(--z-modal);padding:2rem;overflow:auto}dialog::backdrop{background:oklch(15% .02 240/.45)}.dialog-close{float:right;background:var(--bg);position:sticky;top:0}.dialog-close svg{width:1.25rem}dialog article{max-width:70ch;margin-inline:auto;line-height:1.5}dialog h1{font-size:1.8rem}dialog a{color:var(--blue-dark);font-weight:700}@media (width<=1050px){.tabletop-middle{grid-template-columns:minmax(9rem,12rem) minmax(24rem,1fr) minmax(9rem,12rem)}.html-sheet{grid-template-columns:minmax(11rem,.65fr) minmax(18rem,1fr)}.sheet-stations,.sheet-rechargeable{border-top:2px solid var(--sheet-accent)}.sheet-stations{border-left:0}.sheet-rechargeable{grid-column:1/-1}.sheet-rechargeable .html-power-list{grid-template-columns:repeat(3,minmax(0,1fr))}.lobby-layout{grid-template-columns:minmax(0,1fr)}.lobby-layout>aside{position:static}}@media (width<=760px){.html-sheet{grid-template-columns:minmax(0,1fr)}.html-sheet>section{border-top:2px solid var(--sheet-accent);border-left:0}.sheet-rechargeable{grid-column:1}.sheet-rechargeable .html-power-list{grid-template-columns:repeat(2,minmax(0,1fr))}.tabletop-middle{grid-template-columns:1fr 1fr}.table-centre{grid-area:1/1/auto/-1}.dice-sidebar{grid-row:2;position:static}.landing-scene{grid-template-columns:1fr 1fr;align-items:end}.entry{grid-area:1/1/auto/-1}.candidate-figure img{height:clamp(9rem,43vw,15rem)}.score-strip{align-items:flex-start}.score-player{flex:17rem}}@media (width<=650px){.tabletop-middle{grid-template-columns:minmax(0,1fr)}.table-centre,.dice-sidebar{grid-column:1}.left-sidebar{grid-row:2}.right-sidebar{grid-row:3}.sheet-rechargeable .html-power-list{grid-template-columns:minmax(0,1fr)}.game{padding:0 .65rem}.game header .logo{width:90px}.quiet{padding:.4rem;font-size:.8rem}.score-strip{font-size:.85rem}.countdown{width:100%;margin-left:0}.landing,.waiting{padding:1rem}.landing-title .logo{width:min(17rem,85vw)}.candidate-figure figcaption{font-size:.9rem}.ballot{gap:.5rem}.lobby h1,.table-flow h1,.turn h1{font-size:1.5rem}.action-row{flex-direction:column;align-items:flex-start}dialog{width:calc(100% - 1rem);max-height:calc(100vh - 1rem);padding:1rem}}@media (pointer:coarse){button,input{min-height:48px}}@media (prefers-reduced-motion:no-preference){button,.hotspot{transition:background-color .18s cubic-bezier(.16,1,.3,1),outline-color .18s cubic-bezier(.16,1,.3,1)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
