:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--stage:clamp(300px, calc(100dvh - 290px), 580px);--bg:#f6f6f4;--panel:#fff;--ink:#14161b;--muted:#697080;--line:#e2e2de;--board:#2f3a52;--grid:#8a93a8;--hole:#f6f6f4;--you:#e0603a;--engine:#e8b33a;--accent:#4f7cff;--radius:14px;--drawn:#e9ebf1;--point:#e9ebf1e6;--line-hint:#ffffff1a;--shadow:0 1px 2px #0000000d, 0 10px 30px #00000012}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0e1014;--panel:#161920;--ink:#e9ebf1;--muted:#8d95a5;--line:#242934;--board:#222939;--grid:#4a5468;--hole:#0e1014;--shadow:0 1px 2px #00000059, 0 10px 30px #00000059}}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font:16.5px/1.55 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}#app{flex-direction:column;max-width:1000px;min-height:100dvh;margin:0 auto;padding:clamp(16px,3vw,36px) clamp(14px,3vw,28px) 28px;display:flex}#screens{flex:1}.masthead{justify-content:space-between;align-items:center;gap:16px;margin-bottom:clamp(18px,4vw,34px);display:flex}.brand{color:var(--ink);align-items:center;gap:9px;text-decoration:none;display:inline-flex}.mark{background:linear-gradient(var(--accent) 0 0) 0 0 / 50% 50% no-repeat, linear-gradient(var(--ink) 0 0) 100% 100% / 50% 50% no-repeat, color-mix(in srgb, var(--ink) 16%, transparent);border-radius:6px;width:22px;height:22px}.wordmark{letter-spacing:-.02em;font-size:17px;font-weight:640}.masthead-links{gap:14px;display:flex}.quiet-link{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;padding:0;font-size:13px;text-decoration:none}.quiet-link:hover{color:var(--ink);border-bottom-color:color-mix(in srgb, var(--ink) 30%, transparent)}.section-title{letter-spacing:.01em;color:var(--muted);margin:0 0 12px;font-size:15px;font-weight:600}.cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.card{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);color:inherit;box-shadow:var(--shadow);align-items:center;gap:16px;padding:18px;text-decoration:none;transition:transform .14s,border-color .14s,box-shadow .14s;display:flex}a.card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));transform:translateY(-2px);box-shadow:0 2px 4px #0000000f,0 14px 34px #0000001a}@media (min-width:720px){.card{flex-direction:column;align-items:flex-start;gap:18px;padding:22px}.card-icon{border-radius:16px;width:66px;height:66px}.card-icon .icon{width:38px;height:38px}.card-title{font-size:17.5px}}.card-icon{background:color-mix(in srgb, var(--accent) 14%, transparent);border-radius:14px;flex:none;place-items:center;width:58px;height:58px;display:grid}.card-icon .icon{width:34px;height:34px}.card-text{gap:3px;min-width:0;display:grid}.card-title{letter-spacing:-.015em;align-items:center;gap:8px;font-size:16.5px;font-weight:620;display:flex}.card-blurb{color:var(--muted);font-size:13.5px;line-height:1.45}.card.unavailable{opacity:.55}.soon{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 6px;font-size:10px;font-weight:600}.play-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.back{width:38px;height:38px;color:var(--muted);border:1px solid var(--line);background:var(--panel);border-radius:11px;flex:none;place-items:center;text-decoration:none;transition:color .14s,border-color .14s;display:grid}.back:hover{color:var(--ink);border-color:color-mix(in srgb, var(--accent) 50%, var(--line))}.back .chevron{width:18px;height:18px}.chevron{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.play-title{letter-spacing:-.02em;align-items:center;gap:10px;margin:0;font-size:clamp(20px,3vw,26px);font-weight:650;display:flex}.play-icon{place-items:center;width:30px;height:30px;display:inline-grid}.play-icon .icon{width:28px;height:28px}.play-rule{color:var(--muted);max-width:62ch;margin:5px 0 0;font-size:13.5px}.layout{align-items:start;gap:18px;display:grid}@media (min-width:860px){.layout{grid-template-columns:minmax(0,1fr) 296px;gap:24px}}.stage{min-width:0}.side{gap:14px;display:grid}.details{justify-items:start;gap:10px;display:grid}.details .panel{width:100%}.toggle.open{color:var(--ink)}.prose{max-width:62ch}.prose h1{letter-spacing:-.02em;margin:0 0 10px;font-size:clamp(22px,3.4vw,30px);font-weight:660}.prose .lede{color:var(--ink);margin-bottom:18px;font-size:16px}.prose h2{margin:26px 0 6px;font-size:15px;font-weight:620}.prose .prose-sub{margin:20px 0 6px;font-size:14.5px;font-weight:620}.prose p{color:color-mix(in srgb, var(--ink) 82%, var(--muted));margin:0 0 12px}.prose strong{color:var(--ink);font-weight:600}.ladder{gap:12px;margin:12px 0 0;padding:0;list-style:none;display:grid}.ladder li{color:color-mix(in srgb, var(--ink) 82%, var(--muted));align-items:flex-start;gap:12px;display:flex}.ladder-icon{background:color-mix(in srgb, var(--accent) 14%, transparent);border-radius:9px;flex:none;place-items:center;width:34px;height:34px;display:grid}.ladder-icon .icon{width:20px;height:20px}.prose-links{flex-wrap:wrap;gap:18px;margin-top:26px;display:flex}.code-link{color:var(--ink);border-bottom:1px solid color-mix(in srgb, var(--accent) 55%, transparent);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;text-decoration:none}.code-link:hover{border-bottom-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.steps{gap:10px;margin:0 0 14px;padding-left:20px;display:grid}.steps li{color:color-mix(in srgb, var(--ink) 82%, var(--muted));padding-left:3px}.game-notes{gap:14px;margin:16px 0 6px;display:grid}.game-note{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--panel) 70%, transparent);padding:16px 18px}.game-note h3{align-items:center;gap:10px;margin:0 0 8px;font-size:15px;font-weight:620;display:flex}.game-note p{margin:0 0 10px;font-size:13.5px}.facts{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 22px;margin:0;display:grid}.facts div{gap:1px;display:grid}.facts dt{color:var(--muted);letter-spacing:.02em;font-size:11.5px}.facts dd{font-variant-numeric:tabular-nums;margin:0;font-size:13px}.rules-link{color:var(--muted);font-size:12.5px;margin:12px 0 0!important}.levels{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:10px 0 18px;font-size:13px}.levels th,.levels td{text-align:right;padding:7px 0 7px 12px}.levels th:first-child,.levels td:first-child{text-align:left;padding-left:0}.levels thead th{color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:9px;font-weight:550}.levels tbody tr:first-child td{padding-top:10px}.levels tbody tr+tr td{border-top:1px solid color-mix(in srgb, var(--line) 60%, transparent)}.levels td.gain{color:var(--ink)}.icon{width:24px;height:24px;display:block}.icon .frame{fill:none;stroke:currentColor;stroke-width:1.6px;opacity:.45}.icon .frame.gone{opacity:.16;stroke-dasharray:2 2}.icon .grid{fill:none;stroke:currentColor;stroke-width:1.4px;opacity:.4;stroke-linecap:round}.icon .hole{fill:currentColor;opacity:.16}.icon .dot{fill:currentColor;opacity:.5}.icon .one{fill:var(--icon-one,var(--accent))}.icon .two{fill:var(--icon-two,currentColor)}.icon.knight .filled{fill:var(--icon-one,var(--accent));stroke:none}.icon .filled{fill:var(--icon-one,var(--accent))}.board{background:var(--board);border-radius:var(--radius);box-shadow:var(--shadow);touch-action:manipulation;max-width:var(--stage);gap:8px;margin:0 auto;padding:10px;display:grid}.grid-7{grid-template-columns:repeat(7,1fr);gap:10px}.grid-7.tiles{gap:5px}.grid-8{grid-template-columns:repeat(8,1fr);gap:5px}.grid-9{grid-template-columns:repeat(9,1fr);gap:0}.cell{aspect-ratio:1;background:var(--hole);cursor:pointer;border:none;border-radius:50%;padding:0;transition:transform .12s,background .16s;position:relative}.cell:disabled{cursor:default}.cell.you{background:var(--you)}.cell.engine{background:var(--engine)}.cell.win{box-shadow:0 0 0 3px var(--board), 0 0 0 6px var(--accent);z-index:1}.cell.last:after{content:"";background:#fff9;border-radius:50%;position:absolute;inset:38%}.board:not(.locked) .cell.playable:hover{transform:translateY(-3px)}.board:not(.locked) .cell.playable:hover:before{content:"";border-radius:inherit;background:var(--you);opacity:.3;position:absolute;inset:0}.squares .cell{background:color-mix(in srgb, var(--board) 72%, black);border-radius:5px}.squares .cell.you{background:var(--you);border-radius:50%}.squares .cell.engine{background:var(--engine);border-radius:50%}.squares .cell.hint:after{content:"";background:var(--you);opacity:.32;border-radius:50%;position:absolute;inset:34%}.stone{pointer-events:none;background:currentColor;border-radius:50%;position:absolute;inset:11%}.stone.you{color:var(--you)}.stone.engine{color:var(--engine)}.stone.win{box-shadow:0 0 0 3px var(--board), 0 0 0 6px var(--accent)}.squares .cell.you,.squares .cell.engine{background:color-mix(in srgb, var(--board) 72%, black)}.intersections{padding:22px}.intersections .cell{background:linear-gradient(var(--grid) 0 0) center / 100% 1px no-repeat, linear-gradient(var(--grid) 0 0) center / 1px 100% no-repeat;border-radius:0}.intersections .cell.top{background-position:50%,bottom;background-size:100% 1px,1px 50%}.intersections .cell.bottom{background-position:50%,top;background-size:100% 1px,1px 50%}.intersections .cell.left{background-position:100%,50%;background-size:50% 1px,1px 100%}.intersections .cell.right{background-position:0,50%;background-size:50% 1px,1px 100%}.intersections .cell.top.left{background-position:100%,bottom;background-size:50% 1px,1px 50%}.intersections .cell.top.right{background-position:0,bottom;background-size:50% 1px,1px 50%}.intersections .cell.bottom.left{background-position:100%,top;background-size:50% 1px,1px 50%}.intersections .cell.bottom.right{background-position:0,top;background-size:50% 1px,1px 50%}.intersections .cell .stone{inset:14%}.board.intersections:not(.locked) .cell.playable:hover{transform:none}.board.intersections:not(.locked) .cell.playable:hover:before{content:"";background:var(--you);opacity:.35;border-radius:50%;position:absolute;inset:24%}.board.squares:not(.locked) .cell.playable:hover{transform:none}.status{max-width:var(--stage);align-items:center;gap:10px;min-height:28px;margin:12px auto 0;font-size:16px;font-weight:520;display:flex}.status .result{letter-spacing:-.01em;font-size:18px;font-weight:640}.status .spacer{margin-left:auto}.dot{width:10px;height:10px;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 35%, transparent);border-radius:50%;flex:none}.dot.you{background:var(--you)}.dot.engine{background:var(--engine)}.muted{color:var(--muted);font-weight:450}.score{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px}.panel h2{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:12px;font-weight:620}select{appearance:none;font:inherit;color:var(--ink);background-color:color-mix(in srgb, var(--ink) 5%, transparent);border:1px solid var(--line);cursor:pointer;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 15px) calc(50% + 1px),calc(100% - 10px) calc(50% + 1px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:9px;min-width:118px;padding:7px 30px 7px 11px;font-size:13.5px;font-weight:550;transition:border-color .14s,background-color .14s}select:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--line))}select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);outline:none}select option{background:var(--panel);color:var(--ink)}button.action{font:inherit;color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent);border:1px solid var(--line);cursor:pointer;border-radius:9px;width:100%;margin-top:13px;padding:9px 11px;font-size:14px;font-weight:560;transition:border-color .14s,background .14s}button.action:hover{border-color:color-mix(in srgb, var(--accent) 60%, var(--line));background:color-mix(in srgb, var(--ink) 11%, transparent)}button.action:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);outline:none}.evalbar{background:var(--engine);border-radius:999px;height:8px;position:relative;overflow:hidden}.evalbar span{background:var(--you);transition:width .22s;position:absolute;inset:0 auto 0 0}.meta{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:9px;font-size:12px;display:flex}.visits{align-items:end;gap:3px;height:40px;margin-top:14px;display:grid}.heatmap{border-radius:6px;gap:2px;margin-top:14px;display:grid;overflow:hidden}.heat{aspect-ratio:1;background:var(--accent);border-radius:2px}.visit{background:var(--accent);opacity:.55;border-radius:2px 2px 0 0;min-height:2px}.visit.best{opacity:1}.teaches{color:var(--muted);margin:0;font-size:13px}.teaches strong{color:var(--ink);margin-bottom:3px;font-weight:560;display:block}footer{color:var(--muted);border-top:1px solid color-mix(in srgb, var(--line) 70%, transparent);align-items:center;gap:16px;margin-top:auto;padding-top:28px;font-size:12px;display:flex}footer .quiet-link{font-size:12px}footer .quiet-link:last-child{margin-left:auto}.tiles{gap:5px}.tiles .cell{background:color-mix(in srgb, var(--board) 40%, white 26%);border-radius:5px;transition:background .22s,box-shadow .22s,transform .22s;box-shadow:inset 0 1px #ffffff29,inset 0 -2px #00000038,0 1px 2px #00000040}.tiles .cell.gone{background:color-mix(in srgb, var(--bg) 80%, black);transform:scale(.9);box-shadow:inset 0 2px 5px #0000008c}.tiles .cell .token{fill:currentColor;width:76%;height:76%;stroke:var(--piece-edge,#00000059);stroke-width:3px;stroke-linejoin:round;filter:drop-shadow(0 1.5px 1.5px #0006);pointer-events:none;transition:opacity .18s;position:absolute;inset:12%}.tiles .cell.you{color:var(--you)}.tiles .cell.engine{color:var(--engine)}.tiles .cell.ghost{color:var(--muted)}.tiles .cell.ghost .token{opacity:.32;filter:none}.board.tiles:not(.locked) .cell.reach{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--you) 62%, transparent), inset 0 1px 0 #ffffff29, inset 0 -2px 0 #00000038, 0 1px 2px #00000040}.board.tiles:not(.locked) .cell.reach:hover{background:color-mix(in srgb, var(--you) 22%, color-mix(in srgb, var(--board) 40%, white 26%));transform:none}.board.tiles:not(.locked) .cell.doomed:hover{background:color-mix(in srgb, var(--engine) 45%, var(--board));transform:none}.board.tiles:not(.locked) .cell.doomed:hover:before,.board.tiles:not(.locked) .cell.playable:hover:before{content:none}.board.lattice{--track:clamp(10px, 2.6vw, 14px);grid-template-columns:repeat(5, var(--track) 1fr) var(--track);grid-template-rows:repeat(5, var(--track) 1fr) var(--track);aspect-ratio:1;gap:0;padding:clamp(14px,3vw,24px)}.lattice .point{z-index:2;background:var(--point);border-radius:50%;position:relative}.lattice .box{border-radius:5px;margin:5px;transition:background .24s}.lattice .box.you{background:color-mix(in srgb, var(--you) 62%, transparent)}.lattice .box.engine{background:color-mix(in srgb, var(--engine) 62%, transparent)}.lattice .line{z-index:1;cursor:pointer;background:0 0;border:none;padding:0;position:relative}.lattice .line.h{margin:-8px 0}.lattice .line.v{margin:0 -8px}.lattice .line:after{content:"";background:var(--line-hint);border-radius:999px;transition:background .14s;position:absolute}.lattice .line.h:after{height:4px;top:50%;left:0;right:0;transform:translateY(-50%)}.lattice .line.v:after{width:4px;top:0;bottom:0;left:50%;transform:translate(-50%)}.lattice .line.drawn:after{background:var(--drawn)}.lattice .line.drawn.last:after{background:var(--accent)}.board.lattice:not(.locked) .line.playable:hover:after{background:var(--you)}.lattice .line:disabled{cursor:default}.board.chess{--light:#e3e7ef;--dark:#9ba8c1;grid-template-columns:repeat(8,1fr);gap:0;padding:10px;position:relative}@media (prefers-color-scheme:dark){.board.chess{--light:#c6cddc;--dark:#7f8ca8}}.board.chess .sq{aspect-ratio:1;background:var(--light);color:inherit;font:inherit;cursor:default;border:0;place-items:center;margin:0;padding:0;display:grid;position:relative}.board.chess .sq:disabled{opacity:1}.board.chess .sq.dark{background:var(--dark)}.board.chess .sq:first-child{border-top-left-radius:8px}.board.chess .sq:nth-child(8){border-top-right-radius:8px}.board.chess .sq:nth-child(57){border-bottom-left-radius:8px}.board.chess .sq:nth-child(64){border-bottom-right-radius:8px}.board.chess .sq.movable{cursor:pointer}.board.chess .sq.last:before,.board.chess .sq.selected:before,.board.chess .sq.movable:hover:before{content:"";border-radius:inherit;position:absolute;inset:0}.board.chess .sq.last:before{background:#4f7cff42}.board.chess .sq.movable:hover:before{background:#ffffff29}.board.chess .sq.selected:before{background:#4f7cff7a}.board.chess .sq.check{background-image:radial-gradient(circle,#e24840e6 0%,#e2484073 42%,#0000 72%)}.board.chess .sq.target:after,.board.chess .sq.capture:after{content:"";z-index:2;pointer-events:none;border-radius:50%;position:absolute}.board.chess .sq.target:after{background:#161a234d;width:28%;height:28%}.board.chess .sq.capture:after{border:5px solid #161a234d;inset:5%}.chess-piece{z-index:1;width:86%;height:86%;fill:var(--fill);stroke:var(--piece-edge);stroke-width:3px;stroke-linejoin:round;stroke-linecap:round;pointer-events:none;filter:drop-shadow(0 1px 1.5px #00000047);position:relative}.chess-piece.white{--fill:var(--piece-white)}.chess-piece.black{--fill:var(--piece-black)}.chess-piece .detail{fill:none}.chess-piece.black .detail{stroke:var(--piece-white);opacity:.55}.board.chess .coord{z-index:2;pointer-events:none;font-size:10px;font-weight:650;line-height:1;position:absolute}.board.chess .coord.rank{top:4px;left:4px}.board.chess .coord.file{bottom:3px;right:4px}.board.chess .sq.light .coord{color:var(--dark)}.board.chess .sq.dark .coord{color:var(--light)}.board.chess .promotion{z-index:3;border-radius:var(--radius);background:#0a0c1273;place-items:center;display:grid;position:absolute;inset:0}.board.chess .choices{background:var(--panel);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:6px;padding:8px;display:flex}.board.chess .choice{aspect-ratio:1;background:var(--light);border:1px solid var(--line);cursor:pointer;border-radius:10px;place-items:center;width:clamp(44px,12vw,64px);padding:4px;display:grid}.board.chess .choice:hover{border-color:var(--accent)}.board.chess .cancel{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:22px;line-height:1}.moves-scroll{flex-direction:column-reverse;max-height:240px;display:flex;overflow-y:auto}.movelist{font-variant-numeric:tabular-nums;grid-template-columns:2.4em 1fr 1fr;gap:2px 8px;display:grid}.movelist .num{color:var(--muted)}.candidates span{color:var(--ink)}footer a{color:inherit;margin-left:6px}[hidden]{display:none!important}.card[data-game=connect4],.ladder-icon[data-game=connect4],body[data-game=connect4]{--accent:#3f6fd8;--icon-one:#e0603a;--icon-two:#f0bf4a}body[data-game=connect4]{--you:#e0603a;--engine:#f0bf4a;--board:#2c4a92;--hole:#16214a}@media (prefers-color-scheme:light){body[data-game=connect4]{--hole:#f6f6f4}}.card[data-game=reversi],.ladder-icon[data-game=reversi],body[data-game=reversi]{--accent:#2f9f6d;--icon-one:#1c2028;--icon-two:#e8ece9}body[data-game=reversi]{--you:#16191f;--engine:#f2f5f2;--board:#23694c;--hole:#1c5a40}.card[data-game=gomoku],.ladder-icon[data-game=gomoku],body[data-game=gomoku]{--accent:#b0763a;--icon-one:#1c2028;--icon-two:#e9ded0}body[data-game=gomoku]{--you:#16191f;--engine:#f4efe6;--board:#c79a62;--grid:#6d4a29;--hole:#c79a62}.card[data-game=isola],.ladder-icon[data-game=isola],body[data-game=isola]{--accent:#c9a227;--icon-one:#d9b04a;--icon-two:#9aa6bf}body[data-game=isola]{--you:#d9b04a;--engine:#96a3bd;--board:#2f3646;--hole:#3c4457;--piece-edge:#12161e80}.card[data-game=dotsandboxes],.ladder-icon[data-game=dotsandboxes],body[data-game=dotsandboxes]{--accent:#6470dd;--icon-one:#6470dd;--icon-two:#e0a33c}body[data-game=dotsandboxes]{--you:#7d88c9;--engine:#c9a15a;--board:#2b3039;--drawn:#d7dae2;--point:#aeb4c2;--line-hint:#d7dae217}@media (prefers-color-scheme:light){body[data-game=dotsandboxes]{--you:#5b67c8;--engine:#c08a2e;--board:#efe7d7;--drawn:#3f3b33;--point:#8a8172;--line-hint:#3f3b3317}}.card[data-game=chess],.ladder-icon[data-game=chess],body[data-game=chess]{--accent:#8a7bd8;--icon-one:#6d5fc4;--icon-two:#cfc6f2}body[data-game=chess]{--piece-white:#faf8f2;--piece-black:#283042;--piece-edge:#161a23}.button{font:inherit;color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, transparent);border:1px solid var(--line);cursor:pointer;border-radius:11px;padding:10px 18px;font-size:15px;font-weight:580;transition:background .14s,border-color .14s,transform 80ms}.button:hover{background:color-mix(in srgb, var(--ink) 11%, transparent)}.button:active{transform:scale(.98)}.button:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}.button.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.button.primary:hover{background:color-mix(in srgb, var(--ink) 86%, var(--bg))}.button.ghost{color:var(--muted);background:0 0;border-color:#0000}.button.ghost:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 6%, transparent)}.button.wide{width:100%}.player-card{max-width:var(--stage);border:1px solid var(--line);background:var(--panel);border-radius:12px;align-items:center;gap:12px;margin:0 auto;padding:10px 14px;transition:border-color .16s,box-shadow .16s;display:flex}#opponent .player-card{margin-bottom:10px}#you .player-card{margin-top:10px}.player-card.active{border-color:color-mix(in srgb, var(--accent) 70%, var(--line));box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.player-card.winner{border-color:var(--accent)}.player-text{flex:1;gap:1px;min-width:0;display:grid}.player-name{letter-spacing:-.01em;font-size:16px;font-weight:620}.player-level{color:var(--muted);background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:999px;margin-left:6px;padding:2px 8px;font-size:12.5px;font-weight:600}.player-detail{color:var(--muted);font-size:13.5px}.player-status{color:var(--ink);white-space:nowrap;font-size:14px;font-weight:560}.player-card.winner .player-status:after{content:"Winner"}.player-token{flex:none;place-items:center;width:34px;height:34px;display:grid}.player-token.disc{width:26px;height:26px;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:50%;margin:4px}.player-token.disc.you{background:var(--you)}.player-token.disc.engine{background:var(--engine)}.player-token.pawn .token{fill:currentColor;width:30px;height:30px;stroke:var(--piece-edge,#00000059);stroke-width:3px;position:static}.player-token.pawn.you{color:var(--you)}.player-token.pawn.engine{color:var(--engine)}.player-token.piece .chess-piece{width:32px;height:32px}.player-card.choosing{flex-wrap:wrap}.player-controls{flex-basis:100%;min-width:0}.picker{border:0;min-width:0;margin:0;padding:0}.picker .segmented{border-radius:11px}.picker .segmented span{border-radius:8px;padding:7px 4px;font-size:14px}.player-status .button{font-size:14px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.new-game-panel{gap:12px;display:grid}.new-game-panel[hidden],.game-panel[hidden]{display:none}.panel h2.new-game-title{letter-spacing:0;text-transform:none;color:var(--muted);margin:0;font-size:14px;font-weight:620}.new-game-rule{margin:0;font-size:15px;line-height:1.45}.new-game-hint{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.new-game-panel .quiet-link{justify-self:start;font-size:14px}.choice-group{border:0;min-width:0;margin:0 0 22px;padding:0}.choice-group legend{color:var(--muted);margin-bottom:10px;padding:0;font-size:13.5px;font-weight:600}.choice-note{color:var(--muted);margin:10px 0 0;font-size:13px}.segmented{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:13px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented label{cursor:pointer;position:relative}.segmented input{opacity:0;width:1px;height:1px;position:absolute}.segmented span{text-align:center;color:var(--muted);border-radius:10px;padding:9px 10px;font-size:15px;font-weight:560;transition:background .14s,color .14s;display:block}.segmented label:hover span{color:var(--ink)}.segmented input:checked+span{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px #00000040, 0 0 0 1px var(--line)}.segmented input:focus-visible+span{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent)}.editor-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.editor-actions .primary{min-width:120px}.game-panel{gap:10px;display:grid}.player-token .chess-piece.black{stroke:color-mix(in srgb, var(--ink) 60%, transparent)}.game-panel{gap:12px;padding:14px}.move-head{color:var(--muted);justify-content:space-between;align-items:baseline;font-size:14px;font-weight:620;display:flex}.move-where{color:var(--accent);font-size:13px;font-weight:560}.move-list{background:color-mix(in srgb, var(--ink) 4%, transparent);font-variant-numeric:tabular-nums;scrollbar-width:thin;border-radius:10px;min-height:120px;max-height:min(340px,40dvh);padding:6px;overflow-y:auto}.move-empty{color:var(--muted);margin:10px 8px;font-size:14px}.move-row{grid-template-columns:30px minmax(0,1fr) minmax(0,1fr);align-items:start;gap:4px;display:grid}.move-row+.move-row{margin-top:1px}.move-number{color:var(--muted);padding:5px 0 0 4px;font-size:13px}.move-cell{flex-wrap:wrap;gap:2px;display:flex}.ply{font:inherit;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;padding:4px 8px;font-size:15px;font-weight:540}.ply:hover{background:color-mix(in srgb, var(--ink) 9%, transparent)}.ply.current{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--ink)}.ply:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.move-nav{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.button.nav{place-items:center;padding:8px 0;display:grid}.button svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.button:disabled{opacity:.4;cursor:default;transform:none}.button:disabled:hover{background:color-mix(in srgb, var(--ink) 7%, transparent)}.move-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.move-actions .button{justify-content:center;align-items:center;gap:7px;display:inline-flex}.board.looking-back{box-shadow:var(--shadow), 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent)}.status .quiet-link{color:var(--accent);font-size:14px}.button.small{border-radius:9px;padding:7px 10px;font-size:13.5px}.chess-actions{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:grid}.chess-actions[hidden]{display:none}.export-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.chess-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 14px;display:flex}.chess-footer .button{align-items:center;gap:6px;display:inline-flex}.chess-footer .quiet-link{font-size:14px}.footer-links{flex-wrap:wrap;align-items:center;gap:6px 14px;display:flex}.footer-links>*{white-space:nowrap}.games-note{color:var(--muted);max-width:62ch;margin:0 0 18px;font-size:15px}.games-empty{color:var(--muted);padding:28px 0;font-size:15px}.games-actions{gap:8px;margin-bottom:14px;display:flex}.game-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.game-row{border:1px solid var(--line);background:var(--panel);border-radius:14px;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.game-main{flex:1;gap:3px;min-width:0;display:grid}.game-title{flex-wrap:wrap;align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.game-meta{color:var(--muted);font-size:14px}.verdict{background:color-mix(in srgb, var(--ink) 8%, transparent);color:var(--muted);border-radius:999px;padding:2px 9px;font-size:12.5px;font-weight:650}.verdict.won{color:#58c793;background:#3fb37f33}.verdict.lost{color:#ee8a6a;background:#e0603a2e}.verdict.drawn{background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent)}@media (prefers-color-scheme:light){.verdict.won{color:#1f7a50}.verdict.lost{color:#b24422}}.game-moves summary{cursor:pointer;color:var(--muted);width:-moz-fit-content;width:fit-content;font-size:13.5px}.game-moves summary:hover{color:var(--ink)}.game-moves p{font-variant-numeric:tabular-nums;word-spacing:2px;margin:6px 0 0;font-size:14px;line-height:1.6}.game-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}@media (max-width:640px){.game-row{flex-wrap:wrap}.game-actions{justify-content:flex-start;width:100%}}.editor{align-items:start;gap:18px;display:grid}.editor[hidden]{display:none}@media (min-width:860px){.editor{grid-template-columns:minmax(0,1fr) 320px;gap:24px}}.editor-stage{min-width:0}.editor-board .sq{cursor:pointer}.editor-board.hand{-webkit-user-select:none;user-select:none}.editor-board.hand .sq:has(.chess-piece){cursor:grab;touch-action:none}.editor-board .sq.lifted{box-shadow:inset 0 0 0 3px var(--accent)}.editor-board .sq.drop-target{box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--accent) 80%, transparent)}.editor-board .sq.emptied .chess-piece{opacity:.25}.chess-piece.drag-ghost{z-index:50;cursor:grabbing;position:fixed}.editor-board .sq:hover{box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--accent) 60%, transparent)}.editor-panel{gap:14px;display:grid}.panel h2.editor-title{letter-spacing:-.01em;text-transform:none;color:var(--ink);margin:0;font-size:17px;font-weight:650}.editor-hint{color:var(--muted);margin:-8px 0 0;font-size:13.5px}.palette{background:color-mix(in srgb, var(--ink) 5%, transparent);border-radius:12px;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:6px;display:grid}.tool{cursor:pointer;position:relative}.tool input{opacity:0;width:1px;height:1px;position:absolute}.tool span{aspect-ratio:1;border-radius:9px;place-items:center;transition:background .12s,box-shadow .12s;display:grid}.tool:hover span{background:color-mix(in srgb, var(--ink) 9%, transparent)}.tool input:checked+span{background:color-mix(in srgb, var(--accent) 26%, transparent);box-shadow:0 0 0 1.5px var(--accent)}.tool input:focus-visible+span{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent)}.tool .chess-piece{width:82%;height:82%}.tool .chess-piece.black{stroke:color-mix(in srgb, var(--ink) 60%, transparent)}.tool.wide{grid-column:span 3}.tool.wide span{aspect-ratio:auto;justify-content:center;gap:7px;height:36px;font-size:14px;font-weight:560;display:flex}.tool-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.editor-tools{flex-wrap:wrap;gap:6px;display:flex}.editor-tools [hidden]{display:none}.editor-panel .choice-group{margin:0}.castling{grid-template-columns:1fr 1fr;gap:6px 12px;display:grid}.check{cursor:pointer;align-items:center;gap:8px;font-size:14px;display:flex}.check input{width:16px;height:16px;accent-color:var(--accent)}.check.unavailable{color:var(--muted);opacity:.55;cursor:default}.fen-field{color:var(--muted);gap:5px;font-size:13.5px;font-weight:600;display:grid}.fen-field input{color:var(--ink);background:color-mix(in srgb, var(--ink) 5%, transparent);border:1px solid var(--line);border-radius:9px;width:100%;padding:9px 10px;font:13px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.fen-field input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);outline:none}.fen-error{color:#ee8a6a;margin:-8px 0 0;font-size:13px}.setup-ok{color:#58c793;margin:0;font-size:14px;font-weight:560}.setup-problems{color:#ee8a6a;gap:3px;margin:0;padding-left:18px;font-size:14px;display:grid}@media (prefers-color-scheme:light){.fen-error,.setup-problems{color:#b24422}.setup-ok{color:#1f7a50}}.start-row{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:grid}.start-what{font-size:15px;font-weight:560}.start-buttons{flex-wrap:wrap;gap:6px;display:flex}.opening-name{color:var(--ink);margin:-4px 0 0;font-size:14px;font-weight:560;line-height:1.35}.opening-name[hidden]{display:none}.opening-name .eco{font-variant-numeric:tabular-nums;color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);border-radius:6px;margin-right:6px;padding:1px 7px;font-size:12px;font-weight:650;display:inline-block}.book-note{margin:0 0 4px;font-size:14px}
