:root{--board: #2A2540;--player-1: #D55E00;--player-2: #56B4E9;--surface: #1D192D;--text: #F7F5FC;--muted: #C7C1D6;--line: #4a4263;--page: #17131f;--card: #241f33;--focus: #F7F5FC;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}[data-theme=light]{--surface: #FAF9FC;--text: #211D2F;--muted: #5b536d;--line: #c9c2d8;--page: #efecf5;--card: #ffffff;--focus: #211D2F;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--page);color:var(--text)}body{line-height:1.5;min-height:100vh}button,input{font:inherit}button{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:.6rem;padding:.6rem .9rem;cursor:pointer}button:hover:not(:disabled){border-color:var(--focus)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--player-2);color:#10202b;border-color:var(--player-2);font-weight:700}button.danger{border-color:var(--player-1);color:var(--text)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1{font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.15;margin:0 0 .5rem}h2{font-size:1.25rem;margin:1rem 0 .5rem}p{margin:.5rem 0}a{color:var(--player-2)}[data-theme=light] a{color:#0b6a9c}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:-999px;top:0;background:var(--card);padding:.5rem;z-index:10}.skip-link:focus{left:.5rem}.app{min-height:100vh;display:flex;flex-direction:column}.main{flex:1;width:min(100% - 1rem,60rem);margin:0 auto;padding:clamp(1rem,4vw,2.5rem) 0}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.75rem;color:var(--muted);margin:0 0 .4rem}.lede{color:var(--muted);max-width:38rem}.home{text-align:center;padding-top:clamp(1rem,6vh,3rem)}.mode-grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));margin-top:1.5rem}.mode-card{text-align:left;padding:1.1rem;display:flex;flex-direction:column;gap:.25rem}.mode-card span:last-child{color:var(--muted);font-size:.9rem}.mode-title{font-weight:700;font-size:1.05rem}.panel{width:min(100%,34rem);margin:0 auto;background:var(--card);padding:clamp(1rem,4vw,1.6rem);border-radius:1rem;border:1px solid var(--line)}.panel h1{margin-bottom:.75rem}fieldset{border:1px solid var(--line);border-radius:.6rem;margin:.8rem 0;padding:.6rem .8rem}legend{padding:0 .3rem;font-weight:600}.radio-row,.check-row{display:flex;align-items:center;gap:.6rem;min-height:44px;padding:.15rem 0}.radio-row input,.check-row input{width:1.1rem;height:1.1rem;accent-color:var(--player-2)}.controls{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1rem}.inline-panel,.inline-actions{border:1px solid var(--line);border-radius:.6rem;padding:.75rem;margin-top:.8rem;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.inline-panel p,.inline-actions span{flex-basis:100%;margin:0}hr{border:0;border-top:1px solid var(--line);margin:1.2rem 0}label{display:block;font-weight:600;margin-top:.6rem}input:not([type]){width:100%;margin-top:.3rem;padding:.65rem;border-radius:.5rem;border:1px solid var(--line);background:var(--page);color:var(--text)}#join-code,#share-link{text-transform:uppercase;letter-spacing:.15em;font-size:1.05rem}.game{width:min(100%,34rem);margin:0 auto}.game-header{text-align:center;margin-bottom:.75rem}.game-header h1{font-size:clamp(1.3rem,4vw,1.8rem)}.moves,.presence,.tally,.room-note{color:var(--muted);font-size:.9rem;margin:.15rem 0}.presence.connected:before{content:"● ";color:#4dc98a}.presence.reconnecting:before{content:"◐ ";color:var(--player-1)}.board{width:min(100%,32rem);margin:0 auto;background:var(--board);border-radius:.9rem;padding:.35rem;border:1px solid var(--line)}.board-grid{display:grid;grid-template-columns:repeat(7,1fr)}.column{all:unset;box-sizing:border-box;cursor:pointer;padding:0;display:flex;flex-direction:column;gap:.2rem;border-radius:.4rem;min-width:0;min-height:44px}.column:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.column[aria-disabled=true]{cursor:not-allowed}.cell{aspect-ratio:1;width:100%;border-radius:50%;background:#191525;box-shadow:inset 0 2px 4px #00000059;display:grid;place-items:center;transition:background .16s ease}.cell.disc{box-shadow:inset 0 -2px #00000040,0 1px 2px #00000059}.cell.p1{background:var(--player-1)}.cell.p2{background:var(--player-2)}.cell.win{outline:3px solid var(--focus);outline-offset:-4px}.glyph{width:46%;height:46%;display:block}.ring{border:3px solid rgb(255 255 255 / 80%);border-radius:50%}.diamond{width:30%;height:30%;background:#0a141ebf;transform:rotate(45deg)}[data-colour=assist] .cell.p1 .ring{border-width:4px}[data-colour=assist] .cell.p2 .diamond{width:36%;height:36%}.result{text-align:center;margin-top:1rem}.result h2{margin-top:0}.overlay{position:fixed;inset:0;background:#0a0810b3;display:grid;place-items:center;padding:1rem;z-index:20;overflow-y:auto}.settings-panel{width:min(100%,26rem);background:var(--card);border:1px solid var(--line);border-radius:1rem;padding:1rem}.footer{width:min(100% - 1rem,60rem);margin:0 auto;padding:1.5rem 0 2rem;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}.footer nav{display:flex;flex-wrap:wrap;gap:.35rem 1rem;align-items:center;margin-bottom:.6rem}.footer button{background:none;border:0;color:inherit;padding:.25rem 0;text-decoration:underline;min-height:44px}.fine{font-size:.8rem;color:var(--muted)}.error{color:var(--player-1);border:1px solid var(--player-1);padding:.6rem;border-radius:.5rem}.waiting{color:var(--muted)}.room-code{font-size:2rem;font-weight:800;letter-spacing:.2em;text-align:center}.prose{max-width:40rem}[data-motion=reduced] *,[data-motion=reduced] *:before,[data-motion=reduced] *:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media(max-width:375px){.main{width:min(100% - .5rem,60rem)}.board{padding:.2rem;border-radius:.6rem}.column{gap:.12rem}}@media(min-width:900px){.game{width:min(100%,38rem)}}
