:root{color:#111;font-synthesis:none;--paper:#fff;--ink:#111;--muted:#555;--line:#111;--accent:#f2c94c;--danger:#a51d28;--player-1:#ff0d22;--player-2:#21db3b;--player-3:#00aefc;--player-4:#b500fc;background:#f3f1eb;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box}html{background:var(--paper);min-width:280px;min-height:100%}body{background:var(--paper);min-height:100svh;margin:0}button,input{font:inherit;color:inherit}button{border:2px solid var(--line);background:var(--paper);cursor:pointer;border-radius:10px;min-height:44px;padding:.65rem 1rem}button:hover{background:#f5f5f0}button:focus-visible,input:focus-visible,[role=button]:focus-visible{outline-offset:3px;outline:4px solid #3278c6}button:disabled{color:#777;cursor:not-allowed}input{border:2px solid var(--line);background:var(--paper);border-radius:8px;width:100%;min-height:46px;margin-top:.4rem;padding:.65rem .75rem}h1,h2,p{margin-top:0}h1{font-size:clamp(1.65rem,5vw,2.6rem);line-height:1.15}h2{font-size:1.3rem}label{font-weight:700;display:block}.app-shell{min-height:100svh;padding:env(safe-area-inset-top) max(1rem, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(1rem, env(safe-area-inset-left))}.topbar{justify-content:space-between;align-items:center;gap:1rem;width:min(100%,960px);min-height:58px;margin:0 auto;display:flex}.brand{background:0 0;border:0;padding:.4rem 0;font-size:1.05rem;font-weight:900}.build-hash{border:1px solid var(--line);background:var(--paper);border-radius:999px;flex:none;padding:.25rem .55rem;font-family:ui-monospace,monospace;font-size:.72rem}.panel,.play-layout{width:min(100%,820px);margin:clamp(1rem,7vh,4rem) auto 0}.panel.narrow{max-width:520px}.eyebrow{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:.35rem;font-size:.88rem;font-weight:800}.primary{background:var(--accent);font-weight:900}.panel>.primary{width:100%;margin-top:1rem}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.choice{text-align:left;flex-direction:column;justify-content:center;gap:.35rem;min-height:130px;display:flex}.choice strong{font-size:1.2rem}.choice span{color:var(--muted)}.join-box{grid-row:span 2;justify-content:flex-start}.join-box button{margin-top:.75rem}.error{color:var(--danger);margin-top:1rem;font-weight:800}.game-list{margin-top:1rem}.game-card{border:2px solid var(--line);background:var(--paper);border-radius:14px;justify-content:space-between;gap:1rem;padding:1rem;display:flex}.game-card h2{margin-bottom:.25rem}.people{color:var(--muted);margin-bottom:.65rem}.tags{flex-wrap:wrap;gap:.35rem;display:flex}.tags span{border:1px solid var(--line);border-radius:999px;padding:.2rem .55rem;font-size:.8rem}.game-actions{flex-direction:column;justify-content:center;gap:.5rem;min-width:130px;display:flex}.game-status{justify-content:space-between;align-items:center;gap:1rem;display:flex}.game-status h1{margin-bottom:0}.seat-badge{align-items:center;gap:.45rem;margin:.65rem 0 0;font-weight:900;display:flex}.seat-badge:before{border:2px solid var(--line);background:var(--seat-color,var(--paper));content:"";border-radius:50%;width:1rem;height:1rem}.seat-badge.player-1{--seat-color:var(--player-1)}.seat-badge.player-2{--seat-color:var(--player-2)}.restart-notice{margin:.65rem 0 0;font-weight:800}.board{touch-action:manipulation;width:min(100%,620px);max-height:calc(100svh - 230px);margin:1rem auto 0;display:block}.board [role=button]{cursor:pointer}.board-background{fill:#fff;stroke:var(--line)}.board-cell{fill:var(--paper);stroke:var(--line)}.board-hit-area{fill:#0000}.roulette-highlight{fill:var(--accent);opacity:.55;pointer-events:none}.vote-dot{fill:var(--ink);stroke:var(--paper);stroke-width:3px;pointer-events:none}.vote-dot.own-vote.player-1{fill:var(--player-1)}.vote-dot.own-vote.player-2{fill:var(--player-2)}.board-cell.player-1{fill:var(--player-1)}.board-cell.player-2{fill:var(--player-2)}.board-cell.player-3{fill:var(--player-3)}.board-cell.player-4{fill:var(--player-4)}.piece-shape{dominant-baseline:middle;fill:var(--ink);pointer-events:none;font-size:42px;font-weight:900}.piece-number{dominant-baseline:middle;fill:var(--ink);stroke:var(--paper);stroke-width:4px;paint-order:stroke;pointer-events:none;font-size:21px;font-weight:900}.hint{text-align:center;color:var(--muted);margin:.7rem auto;font-size:.9rem}.restart{margin:.75rem auto;display:block}.room-lobby{grid-template-rows:auto auto auto minmax(280px,1fr) auto;gap:.65rem;width:min(100%,720px);min-height:calc(100svh - 58px);margin:0 auto;display:grid}.room-lobby>h1{text-align:center;letter-spacing:.08em;margin:0;font:900 clamp(2rem,10vw,4rem)/1 ui-monospace,monospace}.lobby-game{border:2px solid var(--line);border-radius:14px;justify-content:space-between;padding:.8rem 1rem;display:flex}.lobby-game h2,.lobby-game p{margin-bottom:.2rem}.team-headings,.participant-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}.team-headings strong{text-align:center}.team-headings input{margin-top:.15rem}.participant-grid{grid-template-rows:repeat(3,minmax(86px,1fr))}.participant{border:2px solid var(--line);border-radius:12px;flex-direction:column;justify-content:center;gap:.25rem;min-width:0;padding:.55rem;display:flex;position:relative}.participant>span{color:var(--muted)}.participant>button{min-height:34px;padding:.25rem}.participant details{position:absolute;top:.3rem;right:.4rem}.participant summary{cursor:pointer;font-size:1.25rem}.participant-menu{z-index:3;border:2px solid var(--line);background:var(--paper);gap:.2rem;width:155px;padding:.4rem;display:grid;position:absolute;right:0}.participant-menu button{min-height:34px;padding:.25rem}.lobby-actions{padding-bottom:max(.5rem, env(safe-area-inset-bottom));grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.lobby-actions strong{text-align:center;grid-column:1/-1}.update-banner{z-index:10;right:max(1rem, env(safe-area-inset-right));bottom:max(1rem, env(safe-area-inset-bottom));left:max(1rem, env(safe-area-inset-left));border:3px solid var(--line);background:var(--accent);box-shadow:0 5px 0 var(--line);border-radius:12px;justify-content:center;align-items:center;gap:1rem;padding:.75rem;font-weight:800;display:flex;position:fixed}@media (width<=600px){.choice-grid{grid-template-columns:1fr}.join-box{grid-row:auto}.game-card{flex-direction:column}.game-actions{min-width:0}.game-status{align-items:flex-start}.board{max-height:none}}@media (width>=850px) and (orientation:landscape){.play-layout{grid-template-columns:minmax(280px,620px) minmax(180px,1fr);align-items:center;column-gap:1.5rem;display:grid}.board{grid-row:1/span 3;margin:0}.game-status,.hint,.restart{grid-column:2}.game-status{display:block}.game-status button{margin-top:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}}
