.cm-chessboard .board.input-enabled .square{cursor:pointer}.cm-chessboard .coordinates,.cm-chessboard .markers-layer,.cm-chessboard .pieces-layer,.cm-chessboard .markers-top-layer{pointer-events:none}.cm-chessboard-content .list-inline{padding-left:0;list-style:none}.cm-chessboard-content .list-inline-item{display:inline-block}.cm-chessboard-content .list-inline-item:not(:last-child){margin-right:1rem}.cm-chessboard-accessibility.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.cm-chessboard-accessibility button:disabled,.cm-chessboard-accessibility button:disabled:hover{opacity:.5;cursor:not-allowed;pointer-events:none}.cm-chessboard.default .board .square.white{fill:#ecdab9}.cm-chessboard.default .board .square.black{fill:#c5a076}.cm-chessboard.default.border-type-thin .board .border{stroke:#c5a076;stroke-width:.7%;fill:#c5a076}.cm-chessboard.default.border-type-none .board .border{stroke:#c5a076;stroke-width:0;fill:#c5a076}.cm-chessboard.default.border-type-frame .board .border{fill:#ecdab9;stroke:none}.cm-chessboard.default.border-type-frame .board .border-inner{fill:#c5a076;stroke:#c5a076;stroke-width:.7%}.cm-chessboard.default .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.default .coordinates .coordinate{fill:#b5936d;cursor:default;font-size:7px}.cm-chessboard.default .coordinates .coordinate.black{fill:#eeddbf}.cm-chessboard.default .coordinates .coordinate.white{fill:#b5936d}.cm-chessboard.default-contrast .board .square.white{fill:#ecdab9}.cm-chessboard.default-contrast .board .square.black{fill:#c5a076}.cm-chessboard.default-contrast.border-type-thin .board .border{stroke:#c5a076;stroke-width:.7%;fill:#c5a076}.cm-chessboard.default-contrast.border-type-none .board .border{stroke:#c5a076;stroke-width:0;fill:#c5a076}.cm-chessboard.default-contrast.border-type-frame .board .border{fill:#ecdab9;stroke:none}.cm-chessboard.default-contrast.border-type-frame .board .border-inner{fill:#c5a076;stroke:#c5a076;stroke-width:.7%}.cm-chessboard.default-contrast .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.default-contrast .coordinates .coordinate{fill:#b5936d;cursor:default;font-size:7px}.cm-chessboard.default-contrast .coordinates .coordinate.black,.cm-chessboard.default-contrast .coordinates .coordinate.white{fill:#333}.cm-chessboard.green .board .square.white{fill:#e0ddcc}.cm-chessboard.green .board .square.black{fill:#4c946a}.cm-chessboard.green.border-type-thin .board .border{stroke:#4c946a;stroke-width:.7%;fill:#4c946a}.cm-chessboard.green.border-type-none .board .border{stroke:#4c946a;stroke-width:0;fill:#4c946a}.cm-chessboard.green.border-type-frame .board .border{fill:#e0ddcc;stroke:none}.cm-chessboard.green.border-type-frame .board .border-inner{fill:#4c946a;stroke:#4c946a;stroke-width:.7%}.cm-chessboard.green .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.green .coordinates .coordinate{fill:#468862;cursor:default;font-size:7px}.cm-chessboard.green .coordinates .coordinate.black{fill:#e2e0d0}.cm-chessboard.green .coordinates .coordinate.white{fill:#468862}.cm-chessboard.blue .board .square.white{fill:#d8ecfb}.cm-chessboard.blue .board .square.black{fill:#86afcf}.cm-chessboard.blue.border-type-thin .board .border{stroke:#86afcf;stroke-width:.7%;fill:#86afcf}.cm-chessboard.blue.border-type-none .board .border{stroke:#86afcf;stroke-width:0;fill:#86afcf}.cm-chessboard.blue.border-type-frame .board .border{fill:#d8ecfb;stroke:none}.cm-chessboard.blue.border-type-frame .board .border-inner{fill:#86afcf;stroke:#86afcf;stroke-width:.7%}.cm-chessboard.blue .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.blue .coordinates .coordinate{fill:#7ba1be;cursor:default;font-size:7px}.cm-chessboard.blue .coordinates .coordinate.black{fill:#dbeefb}.cm-chessboard.blue .coordinates .coordinate.white{fill:#7ba1be}.cm-chessboard.chess-club .board .square.white{fill:#e6d3b1}.cm-chessboard.chess-club .board .square.black{fill:#af6b3f}.cm-chessboard.chess-club.border-type-thin .board .border{stroke:#692e2b;stroke-width:.7%;fill:#af6b3f}.cm-chessboard.chess-club.border-type-none .board .border{stroke:#692e2b;stroke-width:0;fill:#af6b3f}.cm-chessboard.chess-club.border-type-frame .board .border{fill:#692e2b;stroke:none}.cm-chessboard.chess-club.border-type-frame .board .border-inner{fill:#af6b3f;stroke:#692e2b;stroke-width:.7%}.cm-chessboard.chess-club .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.chess-club .coordinates .coordinate{fill:#e6d3b1;cursor:default;font-size:7px}.cm-chessboard.chess-club .coordinates .coordinate.black{fill:#e6d3b1}.cm-chessboard.chess-club .coordinates .coordinate.white{fill:#af6b3f}.cm-chessboard.chessboard-js .board .square.white{fill:#f0d9b5}.cm-chessboard.chessboard-js .board .square.black{fill:#b58863}.cm-chessboard.chessboard-js.border-type-thin .board .border{stroke:#404040;stroke-width:.7%;fill:#b58863}.cm-chessboard.chessboard-js.border-type-none .board .border{stroke:#404040;stroke-width:0;fill:#b58863}.cm-chessboard.chessboard-js.border-type-frame .board .border{fill:#f0d9b5;stroke:none}.cm-chessboard.chessboard-js.border-type-frame .board .border-inner{fill:#b58863;stroke:#404040;stroke-width:.7%}.cm-chessboard.chessboard-js .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.chessboard-js .coordinates .coordinate{fill:#404040;cursor:default;font-size:7px}.cm-chessboard.chessboard-js .coordinates .coordinate.black{fill:#f0d9b5}.cm-chessboard.chessboard-js .coordinates .coordinate.white{fill:#b58863}.cm-chessboard.black-and-white .board .square.white{fill:#fff}.cm-chessboard.black-and-white .board .square.black{fill:#9c9c9c}.cm-chessboard.black-and-white.border-type-thin .board .border{stroke:#9c9c9c;stroke-width:.7%;fill:#9c9c9c}.cm-chessboard.black-and-white.border-type-none .board .border{stroke:#9c9c9c;stroke-width:0;fill:#9c9c9c}.cm-chessboard.black-and-white.border-type-frame .board .border{fill:#fff;stroke:none}.cm-chessboard.black-and-white.border-type-frame .board .border-inner{fill:#9c9c9c;stroke:#9c9c9c;stroke-width:.7%}.cm-chessboard.black-and-white .coordinates{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-chessboard.black-and-white .coordinates .coordinate{fill:#909090;cursor:default;font-size:7px}.cm-chessboard.black-and-white .coordinates .coordinate.black{fill:#fff}.cm-chessboard.black-and-white .coordinates .coordinate.white{fill:#909090}.cm-chessboard .keyboard-focus-indicator .keyboard-focus{fill:none;stroke:#06c;stroke-width:3px;pointer-events:none}.cm-chessboard .keyboard-focus-indicator .keyboard-from-square{fill:#0066cc4d;stroke:#06c;stroke-width:2px;pointer-events:none}.cm-chessboard:focus{outline-offset:2px;outline:2px solid #06c}.cm-chessboard .markers{pointer-events:none}.cm-chessboard .markers .marker.marker-frame{stroke:#000;stroke-width:1.8px;opacity:.5}.cm-chessboard .markers .marker.marker-frame-primary,.cm-chessboard .markers .marker.marker-frame-info{stroke:#00f;stroke-width:1.8px;opacity:.4}.cm-chessboard .markers .marker.marker-frame-danger{stroke:red;stroke-width:1.8px;opacity:.4}.cm-chessboard .markers .marker.marker-frame-warning{stroke:orange;stroke-width:1.8px;opacity:.4}.cm-chessboard .markers .marker.marker-circle{stroke:#000;stroke-width:3px;opacity:.3}.cm-chessboard .markers .marker.marker-circle-primary,.cm-chessboard .markers .marker.marker-circle-info{stroke:#00f;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-info-filled{stroke:#00f;fill:#00f;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-danger{stroke:red;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-danger-filled{stroke:red;fill:red;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-warning{stroke:orange;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-warning-filled{stroke:orange;fill:orange;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-success{stroke:green;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-circle-success-filled{stroke:green;fill:green;stroke-width:3px;opacity:.4}.cm-chessboard .markers .marker.marker-square{fill:#000;opacity:.11}.cm-chessboard .markers .marker.marker-dot,.cm-chessboard .markers .marker.marker-bevel{fill:#000;opacity:.2}.cm-chessboard .arrow-warning .arrow-head{fill:orange;fill-rule:nonzero}.cm-chessboard .arrow-warning .arrow-line{stroke:orange;stroke-linecap:round;opacity:.6}.cm-chessboard .arrow-danger .arrow-head{fill:red;fill-rule:nonzero}.cm-chessboard .arrow-danger .arrow-line{stroke:red;stroke-linecap:round;opacity:.5}.cm-chessboard .arrow-success .arrow-head{fill:green;fill-rule:nonzero}.cm-chessboard .arrow-success .arrow-line{stroke:green;stroke-linecap:round;opacity:.5}.cm-chessboard .arrow-info .arrow-head{fill:#00f;fill-rule:nonzero}.cm-chessboard .arrow-info .arrow-line{stroke:#00f;stroke-linecap:round;opacity:.4}.cm-chessboard .arrow-secondary .arrow-head{fill:#666;fill-rule:nonzero}.cm-chessboard .arrow-secondary .arrow-line{stroke:#666;stroke-linecap:butt;opacity:.5}svg.cm-chessboard .promotion-dialog-group rect,svg.cm-chessboard .promotion-dialog-group g[data-piece]{animation:.25s ease-in fade-in}svg.cm-chessboard .promotion-dialog-group .promotion-dialog{fill:#fff;fill-opacity:.7;stroke:#0006}svg.cm-chessboard .promotion-dialog-group .promotion-dialog-button-group{outline:none}svg.cm-chessboard .promotion-dialog-group .promotion-dialog-button-group:focus .promotion-dialog-button{stroke:#0000004d;stroke-width:1px}svg.cm-chessboard .promotion-dialog-group .promotion-dialog-button{fill:#0000;cursor:pointer;outline:none}svg.cm-chessboard .promotion-dialog-group .promotion-dialog-button:hover{fill:#0003}svg.cm-chessboard .promotion-dialog-group .piece{pointer-events:none}@keyframes fade-in{0%{opacity:0}to{opacity:1}}:root{--bg:#0e0e0e;--surface:#171717;--surface-raised:#242424;--ink:#f2f2f2;--muted:#a3a3a3;--line:#333;--accent:#f3c;--accent-ink:#000;--good:#0c6;--okay:#ffd23f;--bad:#ff3b3b;--board-light:#c9d2e3;--board-dark:#5b4b8a;--mark-last:#6fc;--mark-good:#0c6;--mark-okay:#ffd23f;--mark-bad:#ff3b3b;--mark-hint:#f3c;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.45}h1,h2,p{margin:0}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.brand{letter-spacing:-.01em;align-items:center;gap:8px;font-weight:700;display:inline-flex}.brand-home{min-height:44px;color:inherit;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0;font-weight:700}.mark{color:var(--accent);flex:none}.button{appearance:none;border-radius:var(--radius);min-height:48px;color:inherit;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;flex:1;padding:6px 12px;font-weight:600;line-height:1.2}.button.primary{background:var(--accent);color:var(--accent-ink)}.button.secondary{background:var(--surface-raised)}.button:disabled{opacity:.5;cursor:default}@media (hover:hover){.button:not(:disabled):hover{filter:brightness(1.06)}}.language{flex:none;position:relative}.language-trigger{border-radius:var(--radius);cursor:pointer;touch-action:manipulation;background:0 0;border:0;place-items:center;width:44px;height:44px;padding:0;display:grid}.flag{flex:none;display:block}.language-menu{z-index:10;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:200px;margin:4px 0 0;padding:4px;list-style:none;position:absolute;top:100%;right:0}.language-option{width:100%;min-height:44px;color:inherit;font:inherit;text-align:start;white-space:nowrap;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:0 10px;display:flex}.language-option[aria-current=true]{background:var(--surface-raised);font-weight:600}@media (hover:hover){.language-trigger:hover,.language-option:hover{background:var(--surface-raised)}}.start{min-height:100%;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;display:flex}.start-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.start-main{flex-direction:column;flex:1;justify-content:center;width:100%;max-width:420px;margin:0 auto;padding:24px 0;display:flex}.start h1{letter-spacing:-.025em;text-wrap:balance;font-size:clamp(2rem,8vw,2.5rem);line-height:1.1}.lede{color:var(--muted);text-wrap:pretty;margin-top:12px;font-size:1.05rem}.start-form{flex-direction:column;gap:16px;margin-top:28px;display:flex}.segmented{border-radius:var(--radius);background:var(--surface-raised);grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.segment{min-height:44px;color:var(--muted);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:9px;font-weight:600}.segment.selected{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0000001f}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);font-size:.875rem;font-weight:600}.field input{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;min-height:50px;color:var(--ink);font:inherit;padding:0 14px;font-size:1.0625rem}.field input::placeholder{color:var(--muted);opacity:.7}.form-error{color:var(--bad);font-weight:600}.note{color:var(--muted);text-align:center;margin-top:16px;font-size:.9rem}.coffee{text-align:center;font-size:.875rem}.credits .coffee{margin-bottom:6px}.credit-details{margin-top:2px}.credit-details summary{cursor:pointer;text-decoration:underline;list-style:none}.credit-details summary::-webkit-details-marker{display:none}.credit-details p{margin-top:4px}.coffee a{color:var(--accent)}.credits{color:var(--muted);text-align:center;text-wrap:balance;font-size:.75rem}.practice{min-height:100%;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex}.topbar{min-height:52px;padding:0 max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left));flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar-end{align-items:center;gap:8px;min-width:0;display:flex}.player-chip{min-width:0;min-height:44px;color:inherit;touch-action:manipulation;flex-direction:column;justify-content:center;align-items:flex-end;padding:0 4px;line-height:1.2;text-decoration:none;display:flex}@media (hover:hover){.player-chip:hover .player-name{text-decoration:underline}}.player-name{text-overflow:ellipsis;white-space:nowrap;max-width:45vw;font-size:.875rem;font-weight:600;overflow:hidden}.player-platform{color:var(--muted);font-size:.75rem}.practice-main{flex-direction:column;flex:1;min-height:0;display:flex}.board-area{flex:none;width:100%}.board-frame{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;transition:opacity .2s}.board-frame.idle{opacity:.55}.board{width:100%;height:100%}.panel{padding:12px max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;flex:1;gap:12px;display:flex}.scan{color:var(--muted);font-size:.8125rem}.scan-row{justify-content:space-between;gap:12px;display:flex}.solved-count{flex:none;font-weight:600}.scan-bar{background:var(--line);border-radius:2px;height:3px;margin-top:6px;overflow:hidden}.scan-fill{background:var(--accent);height:100%;transition:width .3s}.panel-body{flex:1}.status{letter-spacing:-.01em;font-size:1.25rem;line-height:1.25}.status.good{color:var(--good)}.status.bad{color:var(--bad)}.status.okay{color:var(--okay)}.detail{color:var(--muted);text-wrap:pretty;margin-top:4px}.detail strong{color:var(--ink)}.meta{color:var(--muted);margin-top:8px;font-size:.8125rem}.actions{gap:8px;display:flex}.game-link{color:var(--muted);text-align:center;font-size:.875rem}.crash{flex-direction:column;justify-content:center;gap:16px;max-width:420px;min-height:100%;margin:0 auto;padding:16px;display:flex}@media (orientation:landscape) and (height<=520px){.practice{height:100%}.topbar{display:none}.practice-main{flex-direction:row}.board-area{aspect-ratio:1;width:auto;height:100dvh}.panel{min-width:0;overflow-y:auto}}@media (width>=860px) and (height>=521px){.practice{max-width:1120px;height:100%;margin:0 auto;padding:0 24px 24px}.topbar{min-height:64px;padding:0}.practice-main{flex-direction:row;justify-content:center;align-items:flex-start;gap:28px}.board-area{width:min(100dvh - 96px,100% - 348px)}.board-frame{border-radius:6px;overflow:hidden}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex:0 320px;align-self:stretch;max-height:min(100dvh - 96px,760px);padding:20px}.status{font-size:1.5rem}}@media (width>=860px){.start h1{font-size:2.75rem}}.cm-chessboard.vigil .board .square.white{fill:var(--board-light)}.cm-chessboard.vigil .board .square.black{fill:var(--board-dark)}.cm-chessboard.vigil .coordinates .coordinate{font-size:7px;font-weight:600}.cm-chessboard.vigil .coordinates .coordinate.black{fill:var(--board-light)}.cm-chessboard.vigil .coordinates .coordinate.white{fill:var(--board-dark)}.cm-chessboard .arrow-success .arrow-head{fill:var(--mark-good)}.cm-chessboard .arrow-success .arrow-line{stroke:var(--mark-good);opacity:.8}.cm-chessboard .markers .marker.marker-last-move{fill:var(--mark-last);fill-opacity:.5;stroke:none}.cm-chessboard .markers .marker.marker-good{fill:var(--mark-good);fill-opacity:.6;stroke:none}.cm-chessboard .markers .marker.marker-okay{fill:var(--mark-okay);fill-opacity:.6;stroke:none}.cm-chessboard .markers .marker.marker-bad{fill:var(--mark-bad);fill-opacity:.6;stroke:none}.cm-chessboard .markers .marker.marker-hint{fill:none;stroke:var(--mark-hint);stroke-width:3px;opacity:1}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
