@layer components{.app-shell{min-block-size:100dvb;padding:var(--space-4);background:radial-gradient(circle at 8% 0%, var(--color-canvas-sheen), transparent 32rem), linear-gradient(160deg, var(--color-canvas), color-mix(in oklch, var(--color-canvas) 82%, var(--color-parchment)))}.topbar,.home-screen,.setup-screen,.play-screen,.puzzle-screen,.review-screen{inline-size:min(100%,76rem);margin-inline:auto}.topbar{justify-content:space-between;align-items:center;gap:var(--space-4);min-block-size:3.5rem;margin-block-end:clamp(1.5rem,4vw,3rem);display:flex}.brand-button,.topbar__nav button,.text-button,.move-list button,.review-moves button{color:var(--color-ink);cursor:pointer;background:0 0;border:0}.brand-button{align-items:center;gap:var(--space-2);letter-spacing:-.02em;min-block-size:2.75rem;font-weight:700;display:inline-flex}.brand-mark{border:.16rem solid var(--color-ink);background:var(--color-parchment);block-size:2.25rem;inline-size:2.25rem;color:var(--color-wood);border-radius:44% 44% 52% 52%;place-items:center;font-weight:700;display:grid}.topbar__nav{align-items:center;gap:var(--space-1);display:flex}.topbar__nav button,.text-button{min-block-size:2.75rem;padding-inline:var(--space-3);border-radius:var(--radius-pill);font-weight:600}.topbar__nav button:hover,.topbar__nav button:focus-visible,.text-button:hover,.text-button:focus-visible{background:color-mix(in oklch, var(--color-parchment) 72%, transparent)}h1,h2{letter-spacing:-.035em;line-height:1.12}h1{font-size:clamp(2.25rem,7vw,4.6rem)}h2{font-size:clamp(1.35rem,3vw,2rem)}.lede{max-inline-size:38rem;color:var(--color-ink-muted);font-size:clamp(1rem,2vw,1.18rem)}.home-screen{grid-template-columns:minmax(0,1.4fr) minmax(17rem,.72fr);align-items:end;gap:clamp(1.25rem,5vw,5rem);min-block-size:min(42rem,100dvb - 7rem);padding-block:clamp(1rem,5vw,4rem);display:grid}.home-screen__intro{gap:var(--space-5);animation:capy-rise .42s var(--motion-ease-out) both;display:grid}.home-screen__actions,.inline-actions,.board-toolbar{gap:var(--space-3);flex-wrap:wrap;display:flex}.primary-button,.secondary-button,.choice-button{border-radius:var(--radius-md);cursor:pointer;min-block-size:2.9rem;transition:transform var(--motion-fast) var(--motion-ease-out), background var(--motion-fast) ease, border-color var(--motion-fast) ease;border:.12rem solid #0000;padding:.65rem 1rem;font-weight:700}.primary-button{background:var(--color-accent);color:var(--color-on-accent);box-shadow:0 .28rem 0 color-mix(in oklch, var(--color-ink) 35%, transparent)}.primary-button:hover:not(:disabled),.primary-button:focus-visible:not(:disabled){background:color-mix(in oklch, var(--color-accent) 85%, var(--color-ink));transform:translateY(-.12rem)}.primary-button:active:not(:disabled){box-shadow:none;transform:translateY(.12rem)}.secondary-button,.choice-button{border-color:color-mix(in oklch, var(--color-ink) 22%, transparent);background:var(--color-surface-raised);color:var(--color-ink)}.secondary-button:hover:not(:disabled),.choice-button:hover,.choice-button:focus-visible,.secondary-button:focus-visible:not(:disabled){border-color:var(--color-wood);background:color-mix(in oklch, var(--color-parchment) 54%, var(--color-surface-raised))}button:disabled{cursor:not-allowed;opacity:.55}.home-note,.turn-card,.clock-card,.move-entry,.move-list,.puzzle-sidebar,.review-card,.result-card,.setup-fieldset{border:.1rem solid color-mix(in oklch, var(--color-ink) 15%, transparent);border-radius:var(--radius-lg);background:color-mix(in oklch, var(--color-surface) 92%, transparent);box-shadow:var(--shadow-raised)}.home-note{gap:var(--space-3);padding:clamp(1.25rem,3vw,2rem);display:grid;transform:rotate(1.2deg)}.home-note ul{gap:var(--space-3);color:var(--color-ink-muted);padding-inline-start:1.25rem;display:grid}.loading-copy,.field-help,.move-entry p,.move-list p,.puzzle-provenance{color:var(--color-ink-muted);font-size:.9rem}.screen-heading,.play-status{gap:var(--space-3);max-inline-size:48rem;margin-block-end:clamp(1.25rem,4vw,2.5rem);display:grid}.screen-heading>p,.play-status>p{color:var(--color-ink-muted)}.setup-screen,.puzzle-screen,.review-screen,.play-screen{padding-block:clamp(.75rem,3vw,2rem) 3rem}.setup-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(15rem,.8fr);display:grid}.setup-fieldset{gap:var(--space-4);min-inline-size:0;padding:var(--space-5);display:grid}.setup-fieldset legend{padding-inline:var(--space-2);color:var(--color-ink-muted);font-weight:700}.opponent-options{gap:var(--space-3);display:grid}.opponent-option{gap:var(--space-1) var(--space-3);min-block-size:5.25rem;padding:var(--space-3);border:.12rem solid color-mix(in oklch, var(--color-ink) 18%, transparent);border-radius:var(--radius-md);cursor:pointer;grid-template-columns:auto 1fr;align-items:start;display:grid}.opponent-option input{block-size:1.15rem;inline-size:1.15rem;accent-color:var(--color-accent)}.opponent-option__title{font-weight:700}.opponent-option>span:last-child{color:var(--color-ink-muted);grid-column:2;font-size:.92rem}.opponent-option.is-selected{border-color:var(--color-accent);background:color-mix(in oklch, var(--color-parchment) 60%, var(--color-surface))}.segmented-choice{gap:var(--space-2);padding:var(--space-1);border-radius:var(--radius-md);background:var(--color-parchment);grid-template-columns:1fr 1fr;display:grid}.segmented-choice button{border-radius:calc(var(--radius-md) - .2rem);min-block-size:2.75rem;color:var(--color-ink);cursor:pointer;background:0 0;border:0;font-weight:700}.segmented-choice button.is-selected{background:var(--color-surface-raised);box-shadow:var(--shadow-control-active)}.setup-cta{justify-content:center;align-items:flex-start;gap:var(--space-2);padding:var(--space-4);flex-direction:column;display:flex}.play-layout,.puzzle-layout{grid-template-columns:minmax(0,min(100%,43rem)) minmax(17rem,23rem);justify-content:center;align-items:start;gap:clamp(1rem,3vw,2rem);display:grid}.board-panel{gap:var(--space-3);min-inline-size:0;display:grid}.captured-tray{align-items:center;gap:var(--space-2);border:.1rem solid color-mix(in oklch, var(--color-ink) 20%, transparent);border-radius:var(--radius-md);background:color-mix(in oklch, var(--color-parchment) 74%, var(--color-surface));min-block-size:3rem;min-inline-size:0;color:var(--color-ink);padding:.4rem .6rem;display:flex}.captured-tray>strong{flex:none;font-size:.85rem}.captured-tray__empty,.captured-tray--unavailable{color:var(--color-ink-muted);font-size:.85rem}.captured-tray__pieces{flex-wrap:wrap;flex:auto;gap:.08rem;min-inline-size:0;margin:0;padding:0;list-style:none;display:flex}.captured-tray__pieces li{place-items:center;block-size:clamp(1.65rem,5vw,2.15rem);inline-size:clamp(1.65rem,5vw,2.15rem);display:grid}.captured-tray__pieces img{object-fit:contain;max-block-size:100%;max-inline-size:100%;display:block}.captured-tray.is-standard .captured-tray__pieces img{block-size:82%;inline-size:82%}.capy-board{contain:layout paint;aspect-ratio:1;border:clamp(.38rem, 1.2vw, .7rem) solid var(--color-wood);border-radius:calc(var(--radius-lg) + .25rem);background:var(--color-wood);inline-size:100%;box-shadow:var(--shadow-board);position:relative;overflow:hidden}.capy-board__surface,.capy-board__surface>.cg-wrap{block-size:100%;inline-size:100%}.capy-board__surface{z-index:1;position:relative}.capy-board__fx-layer{z-index:1;contain:layout paint;pointer-events:none;position:absolute;inset:0;overflow:hidden}.capy-board.is-standard .capy-board__fx-layer{display:none}.capy-board__fx-piece,.capy-board__fx-attacker,.capy-board__fx-cover,.capy-board__fx-slash,.capy-board__fx-dust,.capy-board__fx-check,.capy-board__fx-confirmation,.capy-board__fx-terminal-halo,.capy-board__fx-impact-mark,.capy-board__fx-action-accent,.capy-board__fx-shadow,.capy-board__fx-role-effect{pointer-events:none;transform-origin:50%;will-change:transform, opacity;block-size:12.5%;inline-size:12.5%;position:absolute}.capy-board__fx-piece{z-index:2;filter:drop-shadow(var(--shadow-piece));background-position:50%;background-repeat:no-repeat;background-size:contain;display:block}.capy-board__fx-attacker{z-index:2}.capy-board__fx-shadow{z-index:1;background:#261812b8;border-radius:50%}.capy-board__fx-role-effect{z-index:3;opacity:0;background:radial-gradient(circle, color-mix(in oklch, var(--color-warning) 72%, transparent) 0 18%, color-mix(in oklch, var(--color-success) 52%, transparent) 20% 42%, transparent 46%);border-radius:50%}.capy-board__fx-role-effect[data-battle-plane=back]{z-index:1}.capy-board__fx-role-effect[data-battle-plane=ground]{z-index:2}.capy-board__fx-role-effect[data-battle-plane=front]{z-index:4}.capy-board__fx-role-effect.is-pawn-chips{background:radial-gradient(ellipse 9% 16% at 24% 72%, var(--color-warning) 0 72%, transparent 76%), radial-gradient(ellipse 8% 14% at 52% 34%, var(--color-success) 0 72%, transparent 76%), radial-gradient(ellipse 7% 13% at 78% 62%, var(--color-warning) 0 72%, transparent 76%);border-radius:0}.capy-board__fx-role-effect.is-pawn-branch{background:linear-gradient(96deg, transparent 12%, var(--color-wood) 15% 22%, var(--color-warning) 46% 54%, var(--color-wood) 78% 84%, transparent 88%);clip-path:polygon(0 42%,100% 29%,100% 61%,0 57%);border-radius:0}.capy-board__fx-role-effect.is-knight-wind{border:.17rem solid color-mix(in oklch, var(--color-parchment) 76%, transparent);background:0 0;border-block-end-color:#0000;border-inline-start-color:#0000;border-radius:68% 32% 72% 28%}.capy-board__fx-role-effect.is-knight-hoof{border-block-end:.28rem solid color-mix(in oklch, var(--color-warning) 86%, transparent);background:0 0;border-radius:42% 58% 64% 36%}.capy-board__fx-role-effect.is-bishop-leaves-back,.capy-board__fx-role-effect.is-bishop-leaves-front{background:radial-gradient(ellipse 12% 26% at 28% 68%, color-mix(in oklch, var(--color-success) 76%, transparent) 0 72%, transparent 76%), radial-gradient(ellipse 11% 24% at 68% 30%, color-mix(in oklch, var(--color-warning) 72%, transparent) 0 72%, transparent 76%);border-radius:0}.capy-board__fx-role-effect.is-bishop-leaves-front{background:radial-gradient(ellipse 15% 30% at 25% 34%, color-mix(in oklch, var(--color-warning) 88%, transparent) 0 72%, transparent 76%), radial-gradient(ellipse 14% 28% at 72% 68%, color-mix(in oklch, var(--color-success) 86%, transparent) 0 72%, transparent 76%)}.capy-board__fx-role-effect.is-rook-ring,.capy-board__fx-role-effect.is-king-ring{border:.18rem solid color-mix(in oklch, var(--color-wood) 78%, transparent);background:0 0;border-radius:50%}.capy-board__fx-role-effect.is-rook-dust{background:radial-gradient(circle at 24% 70%, color-mix(in oklch, var(--color-parchment) 84%, transparent) 0 9%, transparent 11%), radial-gradient(circle at 53% 62%, color-mix(in oklch, var(--color-wood) 76%, transparent) 0 12%, transparent 14%), radial-gradient(circle at 78% 74%, color-mix(in oklch, var(--color-parchment) 78%, transparent) 0 8%, transparent 10%)}.capy-board__fx-role-effect.is-queen-petals-back,.capy-board__fx-role-effect.is-queen-petals-mid,.capy-board__fx-role-effect.is-queen-petals-front{background:radial-gradient(ellipse 12% 26% at 28% 26%, color-mix(in oklch, var(--color-warning) 76%, transparent) 0 72%, transparent 76%), radial-gradient(ellipse 24% 12% at 72% 58%, color-mix(in oklch, var(--color-accent) 70%, transparent) 0 72%, transparent 76%), radial-gradient(ellipse 11% 24% at 42% 78%, color-mix(in oklch, var(--color-success) 70%, transparent) 0 72%, transparent 76%);border-radius:0}.capy-board__fx-role-effect.is-queen-petals-mid{block-size:13.5%;inline-size:13.5%}.capy-board__fx-role-effect.is-queen-petals-front{block-size:15%;inline-size:15%}.capy-board__fx-role-effect.is-king-ring{border-color:color-mix(in oklch, var(--color-warning) 88%, transparent);box-shadow:inset 0 0 0 .12rem color-mix(in oklch, var(--color-accent) 48%, transparent)}.capy-board__fx-role-effect.is-king-stars{background:conic-gradient(from 0deg at 28% 36%, transparent 0 8%, var(--color-warning) 9% 16%, transparent 17% 25%), conic-gradient(from 18deg at 72% 62%, transparent 0 8%, var(--color-parchment) 9% 16%, transparent 17% 25%);clip-path:polygon(50% 0,61% 35%,100% 38%,69% 59%,79% 100%,50% 72%,21% 100%,31% 59%,0 38%,39% 35%);border-radius:0}.capy-board__fx-action-strip,.capy-board__fx-action-strip>[data-action-art-frame]{block-size:100%!important;inline-size:100%!important}.capy-board__fx-cover{z-index:0}.capy-board__fx-cover.is-light{background:var(--color-board-light)}.capy-board__fx-cover.is-dark{background:var(--color-board-dark)}.capy-board__fx-piece.is-promotion{filter:drop-shadow(var(--shadow-piece)) drop-shadow(0 0 .4rem color-mix(in oklch, var(--color-warning) 82%, transparent))}.capy-board__fx-slash{z-index:3;transform-origin:50% 58%;background:linear-gradient(112deg, transparent 25%, color-mix(in oklch, var(--color-warning) 92%, white) 39% 50%, color-mix(in oklch, var(--color-accent) 86%, transparent) 53% 66%, transparent 78%)}.capy-board__fx-slash.is-bishop,.capy-board__fx-slash.is-queen{background:linear-gradient(135deg, transparent 22%, color-mix(in oklch, var(--color-warning) 90%, white) 38% 49%, color-mix(in oklch, var(--color-accent) 88%, transparent) 52% 65%, transparent 78%)}.capy-board__fx-dust{z-index:1;background:radial-gradient(circle at 34% 70%, color-mix(in oklch, var(--color-parchment) 84%, transparent) 0 10%, transparent 12%), radial-gradient(circle at 55% 66%, color-mix(in oklch, var(--color-wood) 72%, transparent) 0 12%, transparent 14%), radial-gradient(circle at 72% 73%, color-mix(in oklch, var(--color-parchment) 78%, transparent) 0 8%, transparent 10%)}.capy-board__fx-check{z-index:1;border:.22rem solid color-mix(in oklch, var(--color-danger) 84%, transparent);border-radius:var(--radius-sm);box-shadow:inset 0 0 .45rem color-mix(in oklch, var(--color-danger) 48%, transparent)}.capy-board__fx-confirmation{z-index:1;border-radius:var(--radius-sm);background:color-mix(in oklch, var(--color-warning) 45%, transparent);box-shadow:inset 0 0 0 .2rem color-mix(in oklch, var(--color-accent) 64%, transparent)}.capy-board__fx-terminal-halo{z-index:1;border:.14rem solid color-mix(in oklch, var(--color-warning) 64%, transparent);background:radial-gradient(circle, color-mix(in oklch, var(--color-warning) 20%, transparent) 0 32%, transparent 66%);box-shadow:0 0 .4rem color-mix(in oklch, var(--color-danger) 34%, transparent);border-radius:50%}.capy-board__fx-impact-mark{z-index:4;opacity:0;border-radius:var(--radius-sm)}.capy-board__fx-impact-mark.is-reed-jab{background:radial-gradient(ellipse 12% 20% at 26% 73%, color-mix(in oklch, var(--color-success) 88%, transparent) 0 70%, transparent 74%), linear-gradient(112deg, transparent 40%, color-mix(in oklch, var(--color-success) 88%, transparent) 43% 48%, color-mix(in oklch, var(--color-warning) 78%, transparent) 50% 54%, transparent 57%)}.capy-board__fx-impact-mark.is-leaf-hoof-arc{border:.16rem solid color-mix(in oklch, var(--color-success) 82%, transparent);background:radial-gradient(ellipse 21% 14% at 34% 63%, color-mix(in oklch, var(--color-warning) 82%, transparent) 0 76%, transparent 80%);border-block-end-color:#0000;border-inline-start-color:#0000;border-radius:58% 48% 52% 44%}.capy-board__fx-impact-mark.is-diagonal-leaf-cut{background:radial-gradient(ellipse 14% 25% at 28% 67%, color-mix(in oklch, var(--color-success) 84%, transparent) 0 72%, transparent 76%), radial-gradient(ellipse 14% 25% at 70% 31%, color-mix(in oklch, var(--color-success) 76%, transparent) 0 72%, transparent 76%), linear-gradient(135deg, transparent 43%, color-mix(in oklch, var(--color-warning) 88%, transparent) 47% 52%, transparent 56%)}.capy-board__fx-impact-mark.is-wood-thump{background:radial-gradient(ellipse at center, transparent 0 17%, color-mix(in oklch, var(--color-wood) 74%, transparent) 20% 24%, transparent 27% 39%, color-mix(in oklch, var(--color-wood) 62%, transparent) 42% 47%, transparent 50%), color-mix(in oklch, var(--color-warning) 36%, transparent);border-radius:28%}.capy-board__fx-impact-mark.is-water-lily-petal-burst{background:radial-gradient(ellipse 20% 36% at 50% 22%, color-mix(in oklch, var(--color-warning) 78%, transparent) 0 70%, transparent 74%), radial-gradient(ellipse 36% 20% at 78% 50%, color-mix(in oklch, var(--color-accent) 72%, transparent) 0 70%, transparent 74%), radial-gradient(ellipse 20% 36% at 50% 78%, color-mix(in oklch, var(--color-warning) 78%, transparent) 0 70%, transparent 74%), radial-gradient(ellipse 36% 20% at 22% 50%, color-mix(in oklch, var(--color-accent) 72%, transparent) 0 70%, transparent 74%), radial-gradient(circle at center, color-mix(in oklch, var(--color-success) 72%, transparent) 0 14%, transparent 18%)}.capy-board__fx-impact-mark.is-defensive-ring-bonk{border:.18rem solid color-mix(in oklch, var(--color-warning) 86%, transparent);box-shadow:inset 0 0 0 .16rem color-mix(in oklch, var(--color-accent) 42%, transparent);border-radius:50%}.capy-board__fx-impact-mark.is-defensive-ring-bonk:after{background:color-mix(in oklch, var(--color-warning) 92%, transparent);content:"";border-radius:50%;block-size:.34rem;inline-size:.34rem;position:absolute;inset-block-start:7%;inset-inline-start:61%}.capy-board__fx-action-accent{z-index:3;opacity:0;mix-blend-mode:screen;border-radius:50%}.capy-board__fx-action-accent.is-pawn-jab{background:linear-gradient(90deg, transparent 4%, color-mix(in oklch, var(--color-success) 88%, white) 46% 54%, transparent 96%);clip-path:polygon(4% 44%,100% 30%,100% 70%,4% 56%)}.capy-board__fx-action-accent.is-knight-kick{border-block-start:.28rem solid color-mix(in oklch, var(--color-warning) 88%, white);border-inline-end:.18rem solid color-mix(in oklch, var(--color-success) 76%, transparent);border-radius:72% 28% 66% 34%}.capy-board__fx-action-accent.is-bishop-slash{background:linear-gradient(135deg, transparent 38%, color-mix(in oklch, var(--color-success) 72%, white) 43% 48%, transparent 53%), linear-gradient(135deg, transparent 51%, color-mix(in oklch, var(--color-warning) 82%, white) 55% 59%, transparent 63%)}.capy-board__fx-action-accent.is-rook-slam{border:.24rem solid color-mix(in oklch, var(--color-wood) 76%, white);box-shadow:inset 0 0 0 .2rem color-mix(in oklch, var(--color-warning) 48%, transparent), 0 0 0 .12rem color-mix(in oklch, var(--color-wood) 42%, transparent);border-radius:22%}.capy-board__fx-action-accent.is-queen-fan-slash{background:conic-gradient(from 18deg, transparent 0 7%, color-mix(in oklch, var(--color-warning) 78%, white) 8% 13%, transparent 14% 25%, color-mix(in oklch, var(--color-accent) 72%, white) 26% 31%, transparent 32% 43%, color-mix(in oklch, var(--color-success) 68%, white) 44% 49%, transparent 50% 100%)}.capy-board__fx-action-accent.is-king-scepter-bonk{border:.22rem double color-mix(in oklch, var(--color-warning) 86%, white);box-shadow:inset 0 0 0 .16rem color-mix(in oklch, var(--color-focus) 45%, transparent), 0 0 0 .14rem color-mix(in oklch, var(--color-accent) 36%, transparent)}.capy-board__semantic-grid{z-index:2;pointer-events:none;grid-template-rows:repeat(8,minmax(0,1fr));display:grid;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.capy-board__fx-piece,.capy-board__fx-cover,.capy-board__fx-slash,.capy-board__fx-dust,.capy-board__fx-check,.capy-board__fx-terminal-halo,.capy-board__fx-impact-mark,.capy-board__fx-action-accent,.capy-board__fx-shadow,.capy-board__fx-role-effect,.capy-board__fx-attacker{display:none}.capy-board__fx-confirmation{will-change:opacity;display:block}}.capy-board__semantic-row{pointer-events:none;grid-template-columns:repeat(8,minmax(0,1fr));min-block-size:0;display:grid}.capy-board__semantic-cell{pointer-events:none;min-block-size:0;min-inline-size:0}.capy-board__semantic-square{pointer-events:none;background:0 0;border:0;block-size:100%;min-block-size:0;inline-size:100%;min-inline-size:0;padding:0;display:block;position:relative}.capy-board__semantic-square:focus-visible{z-index:1;outline:.22rem solid var(--color-focus);outline-offset:-.22rem}.capy-board__semantic-square.is-selected{box-shadow:inset 0 0 0 .22rem var(--color-focus)}.capy-board__semantic-square.is-legal-target:after{color:var(--color-ink);content:"•";text-shadow:0 0 .18rem var(--color-surface-raised);place-items:center;font-size:clamp(1rem,3vw,1.7rem);display:grid;position:absolute;inset:0}.capy-board__semantic-square.is-checked:before,.capy-board__semantic-grid.is-review:before,.capy-board__semantic-grid.is-locked:before{z-index:1;padding-inline:var(--space-1);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);font-size:clamp(.56rem,1.5vw,.75rem);font-weight:800;line-height:1.2;position:absolute;inset-block-start:var(--space-2);inset-inline-start:var(--space-2)}.capy-board__semantic-square.is-checked:before{content:"รุก"}.capy-board__semantic-grid.is-review:before{content:"ดูย้อนหลัง"}.capy-board__semantic-grid.is-locked:before{content:"ล็อก"}.capy-board__semantic-help{margin:var(--space-2) 0 0;color:var(--color-ink-muted);font-size:.9rem}.capy-board cg-board{background-color:var(--color-board-light);background-image:conic-gradient(from 90deg, var(--color-board-dark) 25%, var(--color-board-light) 0 50%, var(--color-board-dark) 0 75%, var(--color-board-light) 0);background-size:25% 25%!important}.capy-board cg-board square.move-dest{background:radial-gradient(circle, var(--color-board-move) 0 20%, transparent 22%)}.capy-board cg-board square.oc.move-dest{box-shadow:inset 0 0 0 .23rem var(--color-board-move);background:0 0}.capy-board cg-board square.last-move{background-color:var(--color-board-last)}.capy-board cg-board square.selected{background:color-mix(in oklch, var(--color-focus) 48%, transparent)}.capy-board piece{filter:drop-shadow(var(--shadow-piece));background-position:50%}.capy-board piece.white.pawn{background-image:url(/game/piece/capychess/wP.webp?v=0409b2748bbd)}.capy-board piece.white.knight{background-image:url(/game/piece/capychess/wN.webp?v=7d6be49f7ed5)}.capy-board piece.white.bishop{background-image:url(/game/piece/capychess/wB.webp?v=1641e81aff22)}.capy-board piece.white.rook{background-image:url(/game/piece/capychess/wR.webp?v=20ab6d4e731a)}.capy-board piece.white.queen{background-image:url(/game/piece/capychess/wQ.webp?v=8b9b37fa28e8)}.capy-board piece.white.king{background-image:url(/game/piece/capychess/wK.webp?v=93eed7a7237b)}.capy-board piece.black.pawn{background-image:url(/game/piece/capychess/bP.webp?v=dc34a7c50b88)}.capy-board piece.black.knight{background-image:url(/game/piece/capychess/bN.webp?v=7f94092148fa)}.capy-board piece.black.bishop{background-image:url(/game/piece/capychess/bB.webp?v=9bbae62d3e1f)}.capy-board piece.black.rook{background-image:url(/game/piece/capychess/bR.webp?v=8adff3ad6c84)}.capy-board piece.black.queen{background-image:url(/game/piece/capychess/bQ.webp?v=8e70ec81590f)}.capy-board piece.black.king{background-image:url(/game/piece/capychess/bK.webp?v=e71c50065488)}.capy-board.is-standard piece{filter:drop-shadow(0 .1rem .1rem color-mix(in oklch, var(--color-ink) 28%, transparent));background-repeat:no-repeat;background-size:88%}.capy-board.is-standard piece.white.pawn{background-image:url(/game/piece/standard/wP.svg)}.capy-board.is-standard piece.white.knight{background-image:url(/game/piece/standard/wN.svg)}.capy-board.is-standard piece.white.bishop{background-image:url(/game/piece/standard/wB.svg)}.capy-board.is-standard piece.white.rook{background-image:url(/game/piece/standard/wR.svg)}.capy-board.is-standard piece.white.queen{background-image:url(/game/piece/standard/wQ.svg)}.capy-board.is-standard piece.white.king{background-image:url(/game/piece/standard/wK.svg)}.capy-board.is-standard piece.black.pawn{background-image:url(/game/piece/standard/bP.svg)}.capy-board.is-standard piece.black.knight{background-image:url(/game/piece/standard/bN.svg)}.capy-board.is-standard piece.black.bishop{background-image:url(/game/piece/standard/bB.svg)}.capy-board.is-standard piece.black.rook{background-image:url(/game/piece/standard/bR.svg)}.capy-board.is-standard piece.black.queen{background-image:url(/game/piece/standard/bQ.svg)}.capy-board.is-standard piece.black.king{background-image:url(/game/piece/standard/bK.svg)}.capy-board coords{display:none!important}.capy-board__coordinate-grid{z-index:3;pointer-events:none;grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(8,minmax(0,1fr));display:grid;position:absolute;inset:0}.capy-board__coordinate-badge{color:#fff4dc;background:#2b180d;border-radius:.32rem;place-items:center;min-block-size:clamp(1.15rem,3.2vw,1.55rem);min-inline-size:clamp(1.15rem,3.2vw,1.55rem);margin:clamp(.1rem,.35vw,.2rem);font-size:clamp(.76rem,2.1vw,1rem);font-weight:800;line-height:1;display:grid;box-shadow:0 .1rem .22rem #140a0473}.capy-board__coordinate-badge.is-file{place-self:end}.capy-board__coordinate-badge.is-rank{place-self:start}.board-toolbar{justify-content:center}.piece-theme-toggle[aria-pressed=true]{border-color:var(--color-wood);background:var(--color-wood);color:var(--color-parchment)}.game-sidebar,.puzzle-sidebar{gap:var(--space-3);display:grid}.turn-card,.clock-card,.move-entry,.move-list,.puzzle-sidebar{padding:var(--space-4)}.turn-card{gap:var(--space-2);display:grid}.clock-card{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.clock-value{padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-ink-muted);background:var(--color-parchment);gap:.1rem;display:grid}.clock-value strong{color:var(--color-ink);font-family:var(--font-mono);font-size:1.35rem}.clock-value.is-active{outline:.16rem solid var(--color-accent);color:var(--color-ink)}.last-move-summary{margin:var(--space-2) 0 0;border-inline-start:.22rem solid var(--color-accent);color:var(--color-ink-muted);padding-inline-start:var(--space-2);font-size:.9rem;font-weight:700}.move-entry{gap:var(--space-2);display:grid}.move-entry label,.move-list h2{font-weight:700}.move-entry>div{gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;display:grid}.move-entry input{min-block-size:2.9rem;min-inline-size:0;padding-inline:var(--space-3);border:.12rem solid color-mix(in oklch, var(--color-ink) 24%, transparent);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-ink)}.move-entry input:focus-visible{border-color:var(--color-focus)}.move-entry input[aria-invalid=true]{border-color:var(--color-danger);box-shadow:0 0 0 .12rem color-mix(in oklch, var(--color-danger) 22%, transparent)}.move-entry__error,.puzzle-input-error{border-inline-start:.22rem solid var(--color-danger);color:var(--color-danger);margin:0;padding-inline-start:var(--space-2);font-size:.9rem;font-weight:700}.move-list{gap:var(--space-3);display:grid}.move-list ol{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding-inline-start:1.4rem;display:grid}.move-list button,.review-moves button{border-radius:var(--radius-sm);min-block-size:2.35rem;font-family:var(--font-mono);font-weight:700}.move-list button:hover,.move-list button:focus-visible,.review-moves button:hover,.review-moves button:focus-visible{background:var(--color-parchment)}.puzzle-sidebar{align-content:start;min-block-size:18rem}.puzzle-progress-picker{gap:var(--space-3);border-block-end:.1rem solid color-mix(in oklch, var(--color-ink) 14%, transparent);padding-block-end:var(--space-3);display:grid}.puzzle-progress-picker__heading{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.puzzle-progress-picker__heading h2{letter-spacing:-.015em;font-size:1rem}.puzzle-progress-picker__heading p,.puzzle-progress-choice__state,.puzzle-storage-status{color:var(--color-ink-muted);font-size:.84rem}.puzzle-progress-picker__choices{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.puzzle-progress-choice{min-block-size:3.25rem;padding:var(--space-2) var(--space-3);border:.12rem solid color-mix(in oklch, var(--color-ink) 20%, transparent);border-radius:var(--radius-md);background:color-mix(in oklch, var(--color-surface-raised) 88%, var(--color-parchment));color:var(--color-ink);cursor:pointer;text-align:start;gap:.15rem;display:grid}.puzzle-progress-choice:hover,.puzzle-progress-choice:focus-visible{border-color:var(--color-wood);background:var(--color-parchment)}.puzzle-progress-choice.is-selected{border-color:var(--color-accent);box-shadow:inset 0 0 0 .12rem color-mix(in oklch, var(--color-accent) 22%, transparent)}.puzzle-storage-status,.puzzle-storage-status p{margin:0}.puzzle-storage-status.is-warning{border-inline-start:.22rem solid var(--color-warning);padding-inline-start:var(--space-2)}.puzzle-feedback{font-size:1.1rem;font-weight:700}.hint-box{padding:var(--space-3);border-inline-start:.28rem solid var(--color-warning);background:color-mix(in oklch, var(--color-parchment) 62%, transparent)}.stacked-actions{gap:var(--space-2);display:grid}.review-card,.result-card{gap:var(--space-4);max-inline-size:44rem;padding:clamp(1.25rem,3vw,2rem);display:grid}.review-moves{gap:var(--space-2);flex-wrap:wrap;display:flex}.review-export{gap:var(--space-3);border-block-start:.1rem solid color-mix(in oklch, var(--color-ink) 15%, transparent);padding-block-start:var(--space-4);display:grid}.review-export>div:first-child{gap:var(--space-1);display:grid}.review-export h2{font-size:1.15rem}.review-export p{color:var(--color-ink-muted)}.review-export__status{padding:var(--space-2) var(--space-3);border-inline-start:.25rem solid var(--color-success);border-radius:var(--radius-sm);background:color-mix(in oklch, var(--color-success) 12%, var(--color-surface-raised))}.review-export__status.is-error{border-inline-start-color:var(--color-danger);background:color-mix(in oklch, var(--color-danger) 10%, var(--color-surface-raised))}.result-card{margin-block:var(--space-5);border-color:color-mix(in oklch, var(--color-accent) 42%, transparent)}.promotion-backdrop{z-index:20;padding:var(--space-4);background:var(--color-dialog-scrim);place-items:center;display:grid;position:fixed;inset:0}.promotion-dialog{gap:var(--space-4);border:.12rem solid var(--color-parchment);border-radius:var(--radius-lg);background:var(--color-surface-raised);inline-size:min(100%,31rem);box-shadow:var(--shadow-dialog);padding:clamp(1.25rem,4vw,2rem);display:grid}.promotion-actions{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.setup-time-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.choice-button{min-block-size:3.25rem}.storage-warning{inline-size:min(100%,76rem);margin:calc(var(--space-4) * -1) auto var(--space-4);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:color-mix(in oklch, var(--color-warning) 20%, var(--color-surface));color:var(--color-ink);font-size:.9rem}.pwa-notice{justify-content:space-between;align-items:center;gap:var(--space-4);inline-size:min(100%,76rem);margin:calc(var(--space-4) * -1) auto var(--space-4);padding:var(--space-3);border:.1rem solid color-mix(in oklch, var(--color-wood) 28%, transparent);border-radius:var(--radius-md);background:color-mix(in oklch, var(--color-parchment) 72%, var(--color-surface));display:flex}.pwa-notice p{margin:var(--space-1) 0 0;color:var(--color-ink-muted);font-size:.9rem}.pwa-notice .pwa-notice__error{color:var(--color-danger)}@keyframes capy-rise{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@media (max-width:52rem){.home-screen,.setup-layout,.play-layout,.puzzle-layout{grid-template-columns:minmax(0,1fr)}.home-screen{min-block-size:auto}.home-note{transform:none}.game-sidebar,.puzzle-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.puzzle-progress-picker,.move-list{grid-column:1/-1}}@media (max-width:32rem){.app-shell{padding:var(--space-3)}.topbar{flex-direction:column;align-items:flex-start}.topbar__nav{justify-content:space-between;inline-size:100%}.pwa-notice{flex-direction:column;align-items:stretch}.home-screen__actions,.inline-actions,.board-toolbar{grid-template-columns:1fr;display:grid}.home-screen__actions>*,.inline-actions>*,.board-toolbar>*{inline-size:100%}.game-sidebar,.puzzle-sidebar,.puzzle-progress-picker__choices{grid-template-columns:minmax(0,1fr)}.move-list{grid-column:auto}.move-list ol{grid-template-columns:minmax(0,1fr)}}}.cg-wrap{box-sizing:content-box;display:block;position:relative}cg-container{width:100%;height:100%;display:block;position:absolute;top:0}cg-board{-webkit-user-select:none;user-select:none;background-size:cover;width:100%;height:100%;line-height:0;position:absolute;top:0;left:0}.cg-wrap.manipulable cg-board{cursor:pointer}cg-board square{pointer-events:none;width:12.5%;height:12.5%;position:absolute;top:0;left:0}cg-board square.move-dest{pointer-events:auto}cg-board square.last-move{will-change:transform}.cg-wrap piece{z-index:2;will-change:transform;pointer-events:none;background-size:cover;width:12.5%;height:12.5%;position:absolute;top:0;left:0}cg-board piece.dragging{cursor:move;z-index:11!important}piece.anim{z-index:8}piece.fading{z-index:1;opacity:.5}.cg-wrap piece.ghost{opacity:.3}.cg-wrap piece svg{pointer-events:none;z-index:2;opacity:.6;width:100%;height:100%;position:relative;top:0;left:0;overflow:hidden}.cg-wrap cg-auto-pieces,.cg-wrap .cg-shapes,.cg-wrap .cg-custom-svgs,.cg-wrap .cg-shapes-below,.cg-wrap .cg-custom-below{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.cg-wrap cg-auto-pieces{z-index:2}.cg-wrap cg-auto-pieces piece{opacity:.3}.cg-wrap .cg-shapes{opacity:.6;z-index:2;overflow:hidden}.cg-wrap .cg-shapes-below{z-index:1;overflow:hidden}.cg-wrap .cg-custom-below{z-index:1}.cg-wrap .cg-custom-svgs{z-index:9}.cg-wrap .cg-custom-svgs svg,.cg-wrap .cg-custom-below svg{overflow:visible}.cg-wrap coords{pointer-events:none;opacity:.8;font-family:sans-serif;font-size:9px;display:flex;position:absolute}.cg-wrap coords.ranks{flex-flow:column-reverse;width:12px;height:100%;top:-20px;left:4px}.cg-wrap coords.ranks.black{flex-flow:column}.cg-wrap coords.ranks.left{align-items:flex-end;left:-15px}.cg-wrap coords.files{text-transform:uppercase;text-align:center;flex-flow:row;width:100%;height:16px;bottom:-4px;left:24px}.cg-wrap coords.files.black{flex-flow:row-reverse}.cg-wrap coords coord{flex:auto}.cg-wrap coords.ranks coord{transform:translateY(39%)}.cg-wrap coords.squares{text-transform:uppercase;text-align:right;flex-flow:column-reverse;width:12.5%;height:100%;bottom:0;left:0}.cg-wrap coords.squares.black{flex-flow:column}.cg-wrap coords.squares.left{text-align:left}.cg-wrap coords.squares coord{padding:6% 4%}.cg-wrap coords.squares.rank2{transform:translate(100%)}.cg-wrap coords.squares.rank3{transform:translate(200%)}.cg-wrap coords.squares.rank4{transform:translate(300%)}.cg-wrap coords.squares.rank5{transform:translate(400%)}.cg-wrap coords.squares.rank6{transform:translate(500%)}.cg-wrap coords.squares.rank7{transform:translate(600%)}.cg-wrap coords.squares.rank8{transform:translate(700%)}@layer tokens{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--color-canvas:#fceed6;--color-surface:#fff8ea;--color-surface-raised:#fffdfa;--color-ink:#412300;--color-ink-muted:#65513d;--color-wood:#965c2a;--color-parchment:#edd8b2;--color-accent:#d24825;--color-focus:#005fa9;--color-success:#38733c;--color-warning:#ca8a10;--color-danger:#c93029;--color-board-light:#e9d8b4;--color-board-dark:#96573f;--color-board-last:#deb049b3;--color-board-move:#3573398a;--color-canvas-sheen:#fffbedeb;--color-on-accent:#fffbf4;--color-dialog-scrim:#1408019e;--font-ui:"IBM Plex Sans Thai", "Noto Sans Thai", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "Cascadia Code", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--radius-sm:.375rem;--radius-md:.75rem;--radius-lg:1rem;--radius-pill:999px;--shadow-raised:0 .375rem 1rem #41230024;--shadow-control-active:0 .12rem .38rem #4123002e;--shadow-board:0 .7rem 1.6rem #3e210440;--shadow-piece:0 .12rem .08rem #25140440;--shadow-dialog:0 1rem 3rem #07020061;--focus-ring:0 0 0 .2rem var(--color-focus);--motion-fast:.12s;--motion-standard:.18s;--motion-ease-out:cubic-bezier(.16, 1, .3, 1);--motion-battle-out:cubic-bezier(.23, 1, .32, 1);--motion-battle-travel:cubic-bezier(.77, 0, .175, 1)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@supports (color:lab(0% 0 0)){:root{--color-canvas:lab(94.8813% 1.88768 13.4685);--color-surface:lab(97.7432% .985444 7.62526);--color-surface-raised:lab(99.4533% .462592 3.79192);--color-ink:lab(17.4227% 12.3603 25.5143);--color-ink-muted:lab(36.1496% 6.06515 14.8513);--color-wood:lab(45.0503% 21.5004 37.9666);--color-parchment:lab(87.3896% 3.0306 21.5601);--color-accent:lab(50.8513% 53.9825 49.905);--color-focus:lab(38.763% -.995994 -50.0895);--color-success:lab(43.28% -29.4395 24.2565);--color-warning:lab(62.7263% 19.0613 64.9727);--color-danger:lab(45.936% 59.4724 42.7449);--color-board-last:lab(74.6579% 9.91154 57.2524/.7);--color-board-move:lab(43.3355% -30.8544 25.5363/.54);--color-canvas-sheen:lab(98.9715% 1.72922 15.4888/.92);--color-on-accent:lab(98.8795% .56228 4.55513);--color-dialog-scrim:lab(2.99141% 3.3621 4.09651/.62);--shadow-raised:0 .375rem 1rem lab(17.4227% 12.3603 25.5143/.14);--shadow-control-active:0 .12rem .38rem lab(17.4227% 12.3603 25.5143/.18);--shadow-board:0 .7rem 1.6rem lab(16.24% 12.3897 22.3581/.25);--shadow-piece:0 .12rem .08rem lab(8.22605% 7.72522 10.9195/.25);--shadow-dialog:0 1rem 3rem lab(.886343% .996172 1.21378/.38)}}@media (prefers-color-scheme:dark){:root{--color-canvas:#2c1d0e;--color-surface:#392b1e;--color-surface-raised:#463729;--color-ink:#f5ead5;--color-ink-muted:#cbbca1;--color-wood:#c38b59;--color-parchment:#5d4932;--color-accent:#f98662;--color-focus:#6eb6ff;--color-success:#84c485;--color-warning:#e8b45e;--color-danger:#ff7f70;--shadow-raised:0 .5rem 1.5rem #0702006b}@supports (color:lab(0% 0 0)){:root{--color-canvas:lab(12.3151% 6.59485 12.3549);--color-surface:lab(18.7383% 5.08522 10.9682);--color-surface-raised:lab(24.5446% 5.20013 11.7175);--color-ink:lab(93.136% 1.40131 11.5368);--color-ink-muted:lab(76.9073% 2.30798 15.5217);--color-wood:lab(62.5987% 17.8392 35.4105);--color-parchment:lab(32.6818% 6.31218 17.3364);--color-accent:lab(68.6605% 42.8557 39.9464);--color-focus:lab(71.7107% -7.566 -44.2249);--color-success:lab(73.5376% -30.776 24.724);--color-warning:lab(76.8357% 12.8228 50.6376);--color-danger:lab(68.2387% 52.5037 34.2965);--shadow-raised:0 .5rem 1.5rem lab(.889057% .923663 1.23861/.42)}}}}@layer reset{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body,h1,h2,h3,h4,p{margin:0}button,input,textarea,select{font:inherit}}@layer base{html,body,#root,#capychess-app{min-block-size:100%}body{background:var(--color-canvas);min-inline-size:20rem;color:var(--color-ink);font-family:var(--font-ui);text-rendering:optimizelegibility;line-height:1.5}:focus-visible{box-shadow:var(--focus-ring);outline:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@font-face{font-family:IBM Plex Sans Thai;src:url(/game/assets/IBMPlexSansThai-Regular-BKy44eOR.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Sans Thai;src:url(/game/assets/IBMPlexSansThai-SemiBold-BWqhU7P0.ttf)format("truetype");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:IBM Plex Sans Thai;src:url(/game/assets/IBMPlexSansThai-Bold-oLPlIZBo.ttf)format("truetype");font-style:normal;font-weight:700;font-display:swap}
