: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}.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}.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}}
