:root{--bg: #fafafa;--fg: #111111;--muted: #5c5c5c;--border: #d4d4d4;--wash: #eeeeee;--surface: #ffffff;--grid-line: #8b8b83;--board-1: #e6e6df;--board-2: #d0d0c8;--board-edge: #b7b7af;--board-bevel: rgba(255, 255, 255, .72);--board-thick: #ababa3;--tray-shadow: rgba(17, 17, 17, .18);--speckle-1: rgba(255, 255, 255, .5);--speckle-2: rgba(70, 70, 60, .15);--stone-ink-1: #333333;--stone-ink-2: #1c1c1c;--stone-ink-3: #101010;--stone-wall-ink: #1f1f1f;--stone-paper-1: #ffffff;--stone-paper-2: #f8f8f5;--stone-paper-3: #e4e4de;--stone-wall-paper: #c8c8c2;--stone-paper-edge: #c1c1bb;--stone-rim: rgba(255, 255, 255, .32);--stone-rim-0: rgba(255, 255, 255, 0);--stone-rim-1: rgba(255, 255, 255, .16);--stone-rim-2: rgba(255, 255, 255, .4);--stone-spec-a: .3;--stone-cast-1: rgba(17, 17, 17, .24);--stone-cast-2: rgba(17, 17, 17, .08);--stone-cast-3: rgba(17, 17, 17, 0);--f-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", monospace;--ease-out: cubic-bezier(.22, .8, .28, 1);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0d0d0d;--fg: #ededed;--muted: #9a9a9a;--border: #2c2c2c;--wash: #1b1b1b;--surface: #161616;--grid-line: #66665e;--board-1: #2e2e2b;--board-2: #1e1e1c;--board-edge: #3e3e39;--board-bevel: rgba(255, 255, 255, .08);--board-thick: #0b0b0a;--tray-shadow: rgba(0, 0, 0, .6);--speckle-1: rgba(255, 255, 255, .07);--speckle-2: rgba(0, 0, 0, .28);--stone-ink-1: #262626;--stone-ink-2: #131313;--stone-ink-3: #080808;--stone-wall-ink: #1a1a1a;--stone-paper-1: #ffffff;--stone-paper-2: #f6f6f2;--stone-paper-3: #d6d6d0;--stone-wall-paper: #b6b6b0;--stone-paper-edge: #a3a39d;--stone-rim: rgba(255, 255, 255, .4);--stone-rim-0: rgba(255, 255, 255, 0);--stone-rim-1: rgba(255, 255, 255, .09);--stone-rim-2: rgba(255, 255, 255, .2);--stone-spec-a: .18;--stone-cast-1: rgba(0, 0, 0, .62);--stone-cast-2: rgba(0, 0, 0, .26);--stone-cast-3: rgba(0, 0, 0, 0);color-scheme:dark}}:root[data-theme=dark]{--bg: #0d0d0d;--fg: #ededed;--muted: #9a9a9a;--border: #2c2c2c;--wash: #1b1b1b;--surface: #161616;--grid-line: #66665e;--board-1: #2e2e2b;--board-2: #1e1e1c;--board-edge: #3e3e39;--board-bevel: rgba(255, 255, 255, .08);--board-thick: #0b0b0a;--tray-shadow: rgba(0, 0, 0, .6);--speckle-1: rgba(255, 255, 255, .07);--speckle-2: rgba(0, 0, 0, .28);--stone-ink-1: #262626;--stone-ink-2: #131313;--stone-ink-3: #080808;--stone-wall-ink: #1a1a1a;--stone-paper-1: #ffffff;--stone-paper-2: #f6f6f2;--stone-paper-3: #d6d6d0;--stone-wall-paper: #b6b6b0;--stone-paper-edge: #a3a39d;--stone-rim: rgba(255, 255, 255, .4);--stone-rim-0: rgba(255, 255, 255, 0);--stone-rim-1: rgba(255, 255, 255, .09);--stone-rim-2: rgba(255, 255, 255, .2);--stone-spec-a: .18;--stone-cast-1: rgba(0, 0, 0, .62);--stone-cast-2: rgba(0, 0, 0, .26);--stone-cast-3: rgba(0, 0, 0, 0);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{overscroll-behavior-y:contain}body{background:var(--bg);color:var(--fg);font-family:var(--f-mono);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .24s var(--ease-out),color .24s var(--ease-out)}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}:focus-visible{outline:1px dashed var(--muted);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;padding-top:calc(clamp(1.25rem,3vw,2.25rem) + env(safe-area-inset-top));padding-bottom:calc(1.5rem + env(safe-area-inset-bottom));padding-left:max(clamp(1rem,4vw,3.25rem),env(safe-area-inset-left));padding-right:max(clamp(1rem,4vw,3.25rem),env(safe-area-inset-right));max-width:78rem;margin:0 auto;width:100%}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;padding-bottom:clamp(1.25rem,3vw,2rem)}.masthead{display:flex;flex-direction:column;gap:.4rem}.eyebrow{display:flex;align-items:center;gap:.55rem;font-size:.5625rem;letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}.chip{padding:.1rem .4rem .15rem;border:1px solid var(--border);border-radius:2px;font-size:.5625rem;letter-spacing:.22em;color:var(--fg);text-transform:uppercase}h1{margin:0;font-size:clamp(1.0625rem,2.2vw,1.375rem);font-weight:500;letter-spacing:.16em}.title-row{display:flex;align-items:center;gap:.7rem}.title-mark{width:1.9rem;height:1.9rem;flex:none}.mini-board{display:block;overflow:visible}.mini-tray{fill:url(#g-board-surface);stroke:var(--board-edge);stroke-width:.8;vector-effect:non-scaling-stroke}.mini-grid line{stroke:var(--grid-line);stroke-width:1;vector-effect:non-scaling-stroke}.mini-stone.is-ink{fill:url(#g-stone-ink);stroke:var(--stone-rim);stroke-width:.5;vector-effect:non-scaling-stroke}.mini-stone.is-paper{fill:url(#g-stone-paper);stroke:var(--stone-paper-edge);stroke-width:.5;vector-effect:non-scaling-stroke}.points{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem}.points button{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .4rem;font-size:.625rem;letter-spacing:.12em;color:var(--muted);transition:color .16s ease}.points button[aria-pressed=true]{color:var(--fg)}.points.is-stack{align-items:flex-start;flex-wrap:nowrap;gap:.1rem}.points.is-stack button{flex-direction:column;gap:.2rem;padding:.1rem .35rem;font-size:.5625rem;letter-spacing:.16em}.point-mark{width:2.1rem;height:1.05rem;overflow:visible}.points.is-stack .point-mark{width:2.3rem;height:1.15rem}.point-line{stroke:var(--border);stroke-width:1;vector-effect:non-scaling-stroke}.points button[aria-pressed=true] .point-line{stroke:var(--muted)}.pt-ink{fill:url(#g-stone-ink);stroke:var(--stone-rim);stroke-width:.7;vector-effect:non-scaling-stroke}.pt-hollow{fill:var(--bg);stroke:var(--muted);stroke-width:1;vector-effect:non-scaling-stroke;transition:stroke .16s ease}.points button[aria-pressed=true] .pt-hollow{stroke:var(--fg)}.pt-face{fill:url(#g-stone-paper);stroke:var(--stone-paper-edge);stroke-width:1.2;vector-effect:non-scaling-stroke}.pt-half{fill:url(#g-stone-ink)}.pt-ring{fill:none;stroke:var(--muted);stroke-width:1;stroke-dasharray:1.5 1.6;vector-effect:non-scaling-stroke}.points button[aria-pressed=true] .pt-ring{stroke:var(--fg)}.liberties{display:inline-flex;align-items:center;gap:.17rem;margin-left:.45rem;vertical-align:middle}.liberties i{width:.3rem;height:.3rem;border:1px solid var(--muted);border-radius:50%}.liberties b{font-weight:400;font-size:.5625rem;color:var(--muted)}.field-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.pips{display:inline-flex;align-items:center;gap:.32rem;flex:none}.pips i{display:block;width:.38rem;height:.38rem;border:1px solid var(--border);border-radius:50%;background:var(--bg)}.pips i.is-done{background:linear-gradient(145deg,var(--stone-ink-1),var(--stone-ink-2) 55%,var(--stone-ink-3));border-color:transparent;box-shadow:0 0 0 .5px var(--stone-rim),0 1px 1.5px var(--stone-cast-1)}.pips i.is-next{border-color:var(--fg);box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--border)}.liberties-toggle{display:flex;align-items:flex-start;gap:.55rem;font-size:.6875rem;line-height:1.5;letter-spacing:.1em;color:var(--muted);text-align:left;transition:color .16s ease}.liberties-toggle[aria-pressed=true]{color:var(--fg)}.liberties-toggle svg{width:1.35rem;height:1.35rem;flex:none;overflow:visible}.lt-tray{fill:url(#g-board-surface);stroke:var(--board-edge);stroke-width:1;vector-effect:non-scaling-stroke}.lt-grid path{fill:none;stroke:var(--border);stroke-width:1;vector-effect:non-scaling-stroke}.lt-dots circle{fill:var(--bg);stroke:var(--muted);stroke-width:1;vector-effect:non-scaling-stroke;opacity:0;transition:opacity .16s ease}.liberties-toggle[aria-pressed=true] .lt-grid path{stroke:var(--muted)}.liberties-toggle[aria-pressed=true] .lt-dots circle{opacity:1}.toggles{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.55rem 1rem}.sd-stone{fill:currentColor}.sd-waves path{fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;opacity:0;transition:opacity .16s ease}.sd-off{fill:none;stroke:currentColor;stroke-width:1;opacity:1;transition:opacity .16s ease}.sound-toggle[aria-pressed=true] .sd-waves path{opacity:1}.sound-toggle[aria-pressed=true] .sd-off{opacity:0}.layout{flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,20.5rem);gap:clamp(1.5rem,4vw,3.5rem);align-items:center;padding-bottom:clamp(1.5rem,3vw,2.5rem)}.stage{display:flex;flex-direction:column;align-items:center;gap:.85rem;min-width:0}.stone-defs{position:absolute;width:0;height:0;overflow:hidden}.board{width:min(78vmin,30rem);max-width:100%;height:auto;display:block;overflow:visible;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;outline:none}.board:focus-visible{outline:1px dashed var(--border);outline-offset:12px}.tray{filter:drop-shadow(0 10px 18px var(--tray-shadow))}.tray-thick{fill:var(--board-thick)}.tray-face{fill:url(#g-board-surface);stroke:var(--board-edge);stroke-width:1;vector-effect:non-scaling-stroke}.tray-speckle{fill:url(#p-board-speckle)}.tray-bevel{fill:none;stroke:var(--board-bevel);stroke-width:1;vector-effect:non-scaling-stroke}.board .grid line{stroke:var(--grid-line);stroke-width:1;vector-effect:non-scaling-stroke}.board .axis{fill:var(--muted);font-size:8px;letter-spacing:.1em;text-anchor:middle;dominant-baseline:middle;opacity:.75;user-select:none}.board .star{fill:var(--muted);opacity:.5}.stone{transform-box:fill-box;transform-origin:center;transition:opacity .16s ease}.stone-cast{fill:url(#g-stone-cast)}.stone.is-black .stone-wall{fill:var(--stone-wall-ink)}.stone.is-white .stone-wall{fill:var(--stone-wall-paper)}.stone.is-black .stone-face{fill:url(#g-stone-ink)}.stone.is-white .stone-face{fill:url(#g-stone-paper);stroke:var(--stone-paper-edge);stroke-width:1}.stone-edge{fill:none;stroke:url(#g-stone-rim);stroke-width:1.6}.stone.is-white .stone-edge{display:none}.stone-spec{fill:url(#g-stone-sheen);opacity:var(--stone-spec-a)}.stone.is-white .stone-spec{opacity:calc(var(--stone-spec-a) * .8)}.stone.is-new{animation:stone-in .3s var(--ease-out)}.stone.is-dim{opacity:.42}@keyframes stone-in{0%{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}.liberty{fill:none;stroke:var(--muted);stroke-width:1;opacity:.55;pointer-events:none;transform-box:fill-box;transform-origin:center;--lib-lo: .42;--lib-hi: .82;animation:liberty-breathe 2.8s ease-in-out infinite}.liberty.is-picked{stroke:var(--fg);stroke-width:1.2;opacity:1;--lib-lo: .6;--lib-hi: 1}@keyframes liberty-breathe{0%,to{opacity:var(--lib-lo);transform:scale(.94)}50%{opacity:var(--lib-hi);transform:scale(1.06)}}.group-ring{fill:none;stroke:var(--fg);stroke-width:1;stroke-dasharray:2 3;opacity:.55;pointer-events:none}.ghost{fill:var(--fg);opacity:0;pointer-events:none;transition:opacity .14s ease}.ghost.is-on{opacity:.22}.cursor{fill:none;stroke:var(--fg);stroke-width:1;stroke-dasharray:3 3;opacity:.6;pointer-events:none}.ripple{fill:none;stroke:var(--fg);stroke-width:1;transform-box:fill-box;transform-origin:center;animation:ripple-out .78s ease-out forwards;pointer-events:none}@keyframes ripple-out{0%{opacity:.4;transform:scale(.6)}to{opacity:0;transform:scale(2.1)}}.hit{fill:transparent}.board.is-playable .hit{cursor:crosshair}.board.is-inspect .hit{cursor:pointer}.readout{min-height:1.25rem;margin:0;font-size:.6875rem;letter-spacing:.16em;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center;transition:color .16s ease}.readout.is-live{color:var(--fg)}.keyhint{margin:-.35rem 0 0;font-size:.625rem;line-height:1.7;letter-spacing:.12em;color:var(--muted);opacity:.75;text-align:center}.panel{display:flex;flex-direction:column;gap:1.25rem;padding-left:clamp(1rem,3vw,2rem);border-left:1px solid var(--border);align-self:stretch;justify-content:center}.field{display:flex;flex-direction:column;gap:.6rem}.label{font-size:.5625rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}.scenes{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}.scene{position:relative;display:flex;flex-direction:column;align-items:center;gap:.32rem;padding:.4rem .35rem .45rem;border:1px solid var(--border);border-radius:2px;color:var(--muted);transition:color .16s ease,border-color .16s ease,background-color .16s ease}.scene-mark{width:2.6rem;height:2.6rem;opacity:.7;transition:opacity .16s ease}.scene[aria-pressed=true] .scene-mark{opacity:1}.scene[aria-pressed=true]{color:var(--fg);border-color:var(--muted);background:var(--wash)}.scene .no{font-size:.5625rem;letter-spacing:.16em;color:var(--muted)}.scene .nm{font-size:.75rem;letter-spacing:.1em;white-space:nowrap}.scene .tick{position:absolute;top:.3rem;right:.35rem;font-size:.625rem;color:var(--muted)}.copy{margin:0;font-size:.75rem;line-height:1.85;letter-spacing:.05em;color:var(--muted)}.copy strong{font-weight:500;color:var(--fg)}.feedback{min-height:3.6rem;margin:0;padding:.55rem .7rem;font-size:.75rem;line-height:1.75;letter-spacing:.04em;border:1px solid var(--border);border-radius:2px;color:var(--muted);white-space:pre-line;transition:border-color .16s ease,color .16s ease}.feedback[data-tone=ok]{color:var(--fg);border-style:solid}.feedback[data-tone=warn]{color:var(--fg);border-style:dashed}.actions{display:flex;flex-wrap:wrap;gap:.5rem}.btn{display:inline-flex;align-items:center;gap:.42rem;padding:.35rem .6rem;border:1px solid var(--border);border-radius:2px;font-size:.6875rem;letter-spacing:.12em;color:var(--muted);transition:color .16s ease,border-color .16s ease,background-color .16s ease}.btn:before{content:"";width:.36rem;height:.36rem;flex:none;border:1px solid var(--muted);border-radius:50%;transition:border-color .16s ease,background-color .16s ease}.btn:disabled{opacity:.4;cursor:default}.btn.is-primary{color:var(--fg);border-color:var(--muted)}.btn.is-primary:before{background:linear-gradient(145deg,var(--stone-ink-1),var(--stone-ink-2) 55%,var(--stone-ink-3));border-color:transparent;box-shadow:0 0 0 .5px var(--stone-rim),0 1px 1.5px var(--stone-cast-1)}.foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .9rem;padding-top:1.25rem;border-top:1px solid var(--border);font-size:.625rem;letter-spacing:.14em;color:var(--muted)}.foot .chip{font-size:.5rem}.foot .spacer{margin-left:auto}@media(min-width:640px){.foot{padding-right:4rem}}@media(max-width:639px){.app{padding-bottom:calc(4.75rem + env(safe-area-inset-bottom))}}.fb-fab{position:fixed;right:calc(1rem + env(safe-area-inset-right));bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:20;display:inline-flex;align-items:center;gap:.42rem;min-height:36px;padding:.35rem .7rem;border:1px solid var(--border);border-radius:2px;background:var(--bg);color:var(--muted);font-size:.6875rem;letter-spacing:.14em;box-shadow:0 1px 2px var(--tray-shadow);transition:color .2s ease,border-color .2s ease}.fb-dot{width:.42rem;height:.42rem;flex:none;border-radius:50%;background:linear-gradient(145deg,var(--stone-ink-1),var(--stone-ink-2) 55%,var(--stone-ink-3));box-shadow:0 0 0 .5px var(--stone-rim)}.fb-scrim{position:fixed;inset:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;padding:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));background:#11111152}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .fb-scrim{background:#0000008f}}:root[data-theme=dark] .fb-scrim{background:#0000008f}.fb-panel{display:flex;flex-direction:column;width:100%;max-width:22rem;max-height:86svh;padding:.9rem 1rem 1rem;border:1px solid var(--border);border-radius:2px;background:var(--surface);font-size:.75rem;letter-spacing:.04em}@media(min-width:640px){.fb-scrim{align-items:flex-end;justify-content:flex-end;padding:1.5rem;padding-bottom:calc(1.5rem + env(safe-area-inset-bottom));padding-right:calc(1.5rem + env(safe-area-inset-right))}.fb-panel{box-shadow:0 2px 18px var(--tray-shadow)}}.fb-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.fb-head{flex:none;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.6rem}.fb-head h2{font-size:.6875rem;font-weight:400;letter-spacing:.16em;color:var(--fg)}.fb-close{padding:0 .35rem;font-size:1rem;line-height:1;color:var(--muted)}.fb-lede{color:var(--fg);line-height:1.7}.fb-where{margin-top:.3rem;font-size:.625rem;letter-spacing:.1em;color:var(--muted)}.fb-field{display:block;margin-top:.85rem}.fb-label{display:block;margin-bottom:.35rem;font-size:.625rem;letter-spacing:.14em;color:var(--muted)}.fb-panel textarea,.fb-panel input{display:block;width:100%;padding:.45rem .55rem;border:1px solid var(--border);border-radius:2px;background:var(--bg);color:var(--fg);font:inherit;font-size:.75rem;letter-spacing:.04em;line-height:1.7;resize:vertical}.fb-panel textarea:focus,.fb-panel input:focus{outline:1px dashed var(--muted);outline-offset:2px}.fb-chips{display:flex;flex-wrap:wrap;gap:.4rem}.fb-chip{padding:.25rem .55rem;border:1px solid var(--border);border-radius:2px;font-size:.6875rem;letter-spacing:.12em;color:var(--muted);transition:color .16s ease,border-color .16s ease,background-color .16s ease}.fb-chip[aria-pressed=true]{color:var(--fg);border-color:var(--muted);background:var(--wash)}.fb-note{margin-top:.7rem;font-size:.5625rem;letter-spacing:.06em;line-height:1.7;color:var(--muted)}.fb-actions{flex:none;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.85rem}.fb-done p{line-height:1.7}@media(hover:hover){.points button:hover{color:var(--fg)}.points button:hover .pt-hollow{stroke:var(--fg)}.liberties-toggle:hover{color:var(--fg)}.scene:hover{color:var(--fg);background:var(--wash)}.scene:hover .scene-mark{opacity:1}.btn:hover:not(:disabled){color:var(--fg);border-color:var(--muted)}.btn:hover:not(:disabled):before{border-color:var(--fg)}.fb-fab:hover,.fb-close:hover{color:var(--fg);border-color:var(--muted)}.fb-chip:hover{color:var(--fg)}}.hint-coarse{display:none}@media(hover:none)and (pointer:coarse){.btn{min-height:44px;padding-block:.55rem}.points button{min-height:44px}.liberties-toggle{min-height:44px;align-items:center}.scene{min-height:48px}.fb-fab,.fb-close,.fb-chip{min-height:44px}.fb-close{padding-inline:.5rem}.fb-chip{padding-inline:.7rem}.hint-fine{display:none}.hint-coarse{display:inline}}@media(max-width:860px){.layout{grid-template-columns:minmax(0,1fr);gap:1.5rem}.panel{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:1.25rem}.board{width:min(88vmin,24rem)}.topbar{align-items:center}}@media(max-width:560px){.points.is-stack{gap:0}.points.is-stack button{padding:.1rem .25rem;font-size:.5rem;letter-spacing:.1em}.points.is-stack .point-mark{width:1.5rem;height:.75rem}}@media(max-width:360px){.topbar{flex-wrap:wrap;row-gap:.45rem}.points.is-stack{margin-left:auto}}@media(max-width:420px){.foot .spacer{display:none}}@media(max-height:520px)and (min-width:640px){.topbar{padding-bottom:.75rem}.layout{grid-template-columns:minmax(0,1fr) minmax(0,18rem);gap:1.25rem;align-items:start}.panel{border-left:1px solid var(--border);border-top:0;padding-top:0;padding-left:clamp(1rem,3vw,2rem)}.board{width:min(66vh,19rem)}.keyhint{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.liberty{animation:none}}
