:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--cp-bg:#f7f4ef;--cp-bg-elevated:#fcfbf8;--cp-surface:#fff;--cp-surface-soft:#f5f5f5;--cp-border:#dedede;--cp-border-strong:#919191;--cp-text:#242424;--cp-text-muted:#5c5c5c;--cp-text-soft:#6f6f6f;--cp-accent:#b11f4b;--cp-accent-hover:#9a1a41;--cp-accent-soft:#b11f4b14;--cp-accent-fg:#fff;--cp-success:#16a34a;--cp-danger:#dc2626;--cp-warning:#f59e0b;--cp-link:#0078d4;--cp-shadow:0 18px 48px #0000001f;--cp-overlay:#fffc;--cp-panel:#ffffffdb;--cp-panel-strong:#fffffff5;--cp-sheen:#ffffff8c;--cp-highlight:#b11f4b1f}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--cp-bg:#3d3b3a;--cp-bg-elevated:#343231;--cp-surface:#292929;--cp-surface-soft:#2e2e2e;--cp-border:#474747;--cp-border-strong:#5f5f5f;--cp-text:#dedede;--cp-text-muted:#919191;--cp-text-soft:#b0b0b0;--cp-accent:#fd8ea1;--cp-accent-hover:#fb7b91;--cp-accent-soft:#fd8ea124;--cp-accent-fg:#1a1a1a;--cp-success:#4ade80;--cp-danger:#f87171;--cp-warning:#fbbf24;--cp-link:#4da6ff;--cp-shadow:0 18px 48px #00000052;--cp-overlay:#292929e0;--cp-panel:#292929b8;--cp-panel-strong:#292929f5;--cp-sheen:#ffffff0a;--cp-highlight:#fd8ea11f}*{box-sizing:border-box}html{background:var(--cp-bg)}body{min-height:100vh;color:var(--cp-text);background-color:var(--cp-bg);background-image:linear-gradient(90deg, var(--cp-sheen) 1px, transparent 1px), linear-gradient(var(--cp-sheen) 1px, transparent 1px);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background-size:36px 36px;margin:0;font-family:Segoe UI,Aptos,Calibri,-apple-system,BlinkMacSystemFont,sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,[tabindex]:focus-visible,input:focus-visible{outline:2px solid var(--cp-accent);outline-offset:3px}#root{min-height:100vh}.eyebrow{color:var(--cp-text-muted);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.67rem;font-weight:700;line-height:1.2}.brand-lockup,.brand-button{color:var(--cp-text);letter-spacing:0;align-items:center;gap:10px;font-size:1.35rem;font-weight:700;display:inline-flex}.brand-mark{border:1px solid var(--cp-accent);width:38px;height:38px;color:var(--cp-accent);border-radius:50%;place-items:center;font-family:serif;font-size:1.2rem;display:grid}.small-mark{width:30px;height:30px;font-size:.92rem}.setup-page{grid-template-columns:minmax(320px,.85fr) minmax(480px,1.15fr);max-width:1320px;min-height:100vh;margin:0 auto;display:grid}.setup-intro{border-right:1px solid var(--cp-border);flex-direction:column;justify-content:center;padding:72px clamp(28px,6vw,96px);display:flex}.setup-intro .brand-lockup{margin-bottom:92px}.setup-intro h1{max-width:520px;color:var(--cp-text);letter-spacing:0;margin:20px 0 18px;font-size:clamp(3.2rem,5.6vw,5.5rem);font-weight:500;line-height:.98}.setup-intro h1 em{color:var(--cp-accent);font-style:normal}.intro-copy{max-width:320px;color:var(--cp-text-muted);font-size:.95rem;line-height:1.75}.setup-stamp{border:1px solid var(--cp-border);width:fit-content;color:var(--cp-text-muted);border-radius:999px;align-items:center;gap:8px;margin-top:46px;padding:8px 12px;font-size:.78rem;display:inline-flex}.stamp-dot,.elapsed-dot{background:var(--cp-success);border-radius:50%;width:7px;height:7px;display:inline-block}.setup-form{flex-direction:column;justify-content:center;width:100%;max-width:690px;padding:72px clamp(28px,6vw,88px);display:flex}.section-heading{align-items:flex-start;gap:18px;margin-bottom:38px;display:flex}.section-index{color:var(--cp-accent);font-family:Consolas,Courier New,Courier,monospace;font-size:.8rem;font-weight:700}.section-heading h2,.panel-heading h2{letter-spacing:0;margin:7px 0 0;font-size:1.65rem;font-weight:600}.player-setup{border-top:1px solid var(--cp-border);padding:22px 0 26px}.setup-player-heading{align-items:center;gap:11px;margin-bottom:16px;display:flex}.setup-player-heading>div{align-items:baseline;gap:8px;display:flex}.setup-player-heading strong{font-size:1.05rem}.setup-player-heading div span{color:var(--cp-text-muted);font-size:.72rem}.setup-choice-value{color:var(--cp-text-muted);letter-spacing:.06em;margin-left:auto;font-family:Consolas,Courier New,Courier,monospace;font-size:.72rem}.side-pip{border:2px solid var(--cp-text);background:var(--cp-surface);border-radius:50%;width:10px;height:10px;display:inline-block}.han-pip,.player-han .side-pip{border-color:var(--cp-success)}.cho-pip,.player-cho .side-pip{border-color:var(--cp-accent)}.setup-choice-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.setup-choice{border:1px solid var(--cp-border);min-height:74px;color:var(--cp-text-muted);background:var(--cp-surface);text-align:left;border-radius:10px;flex-direction:column;align-items:stretch;gap:11px;padding:10px;transition:border-color .18s,background-color .18s,transform .18s;display:flex}.setup-choice:hover{border-color:var(--cp-border-strong);transform:translateY(-2px)}.setup-choice.is-selected{border-color:var(--cp-accent);background:var(--cp-accent-soft);color:var(--cp-text);box-shadow:inset 0 -2px 0 var(--cp-accent)}.choice-preview{color:var(--cp-text);justify-content:space-between;font-family:serif;font-size:1.25rem;display:flex}.choice-label{letter-spacing:.04em;font-family:Consolas,Courier New,Courier,monospace;font-size:.65rem}.setup-options{border-top:1px solid var(--cp-border);border-bottom:1px solid var(--cp-border);margin-top:8px;padding:20px 0}.toggle-row{cursor:pointer;align-items:center;gap:14px;display:flex}.toggle-row input{opacity:0;pointer-events:none;position:absolute}.toggle-control{background:var(--cp-border-strong);border-radius:999px;flex:none;width:38px;height:22px;transition:background-color .18s;position:relative}.toggle-control:after{background:var(--cp-surface);content:"";border-radius:50%;width:16px;height:16px;transition:transform .18s;position:absolute;top:3px;left:3px}.toggle-row input:checked+.toggle-control{background:var(--cp-accent)}.toggle-row input:checked+.toggle-control:after{transform:translate(16px)}.toggle-row strong,.toggle-row small{display:block}.toggle-row strong{font-size:.88rem}.toggle-row small{color:var(--cp-text-muted);margin-top:3px;font-size:.72rem}.start-button{width:100%;min-height:58px;color:var(--cp-accent-fg);background:var(--cp-accent);border:0;border-radius:10px;justify-content:space-between;align-items:center;margin-top:30px;padding:0 20px 0 24px;font-weight:700;transition:background-color .18s,transform .18s;display:flex}.start-button:hover{background:var(--cp-accent-hover);transform:translateY(-2px)}.button-arrow{font-size:1.45rem;font-weight:400}.setup-footnote{color:var(--cp-text-soft);text-align:center;margin:14px 0 0;font-size:.72rem}.game-shell{max-width:1440px;min-height:100vh;margin:0 auto;padding:0 28px 34px}.game-header{border-bottom:1px solid var(--cp-border);grid-template-columns:1fr auto 1fr;align-items:center;min-height:76px;display:grid}.brand-button{background:0 0;border:0;padding:0}.header-center{align-items:center;gap:13px;display:flex}.header-status{border-left:1px solid var(--cp-border);color:var(--cp-text);padding-left:13px;font-size:.8rem;font-weight:600}.header-status.is-finished{color:var(--cp-accent)}.header-actions{justify-content:flex-end;align-items:center;gap:18px;display:flex}.elapsed{color:var(--cp-text-muted);align-items:center;gap:7px;font-family:Consolas,Courier New,Courier,monospace;font-size:.74rem;display:inline-flex}.icon-button,.dialog-close{border:1px solid var(--cp-border);width:36px;height:36px;color:var(--cp-text);background:var(--cp-surface);border-radius:50%;place-items:center;display:inline-grid}.icon-button:hover,.dialog-close:hover{border-color:var(--cp-accent);color:var(--cp-accent)}.game-layout{grid-template-columns:minmax(520px,1.3fr) minmax(320px,.7fr);align-items:start;gap:clamp(28px,5vw,76px);max-width:1180px;margin:0 auto;padding-top:44px;display:grid}.board-meta{justify-content:space-between;align-items:flex-end;min-height:60px;margin-bottom:20px;display:flex}.board-meta h1{letter-spacing:0;margin:7px 0 0;font-size:1.7rem;font-weight:600}.board-meta-right{flex-direction:column;align-items:flex-end;gap:7px;display:flex}.check-indicator{color:var(--cp-text-muted);font-size:.76rem;font-weight:700}.check-indicator.is-check{color:var(--cp-danger)}.board-coordinates-label{color:var(--cp-text-soft);letter-spacing:.08em;font-family:Consolas,Courier New,Courier,monospace;font-size:.62rem}.board-frame{border:1px solid var(--cp-border);background:var(--cp-panel);width:min(100%,700px);box-shadow:var(--cp-shadow);border-radius:16px;margin:0 auto;padding:13px}.janggi-board{width:100%;height:auto;display:block;overflow:visible}.board-surface{fill:var(--cp-bg-elevated);stroke:var(--cp-border);stroke-width:1px}.board-lines line,.board-lines path{fill:none;stroke:var(--cp-border-strong);stroke-width:1.25px}.board-coordinates text{fill:var(--cp-text-soft);text-anchor:middle;font-family:Consolas,Courier New,Courier,monospace;font-size:10px}.board-coordinates text:nth-of-type(n+10){text-anchor:start}.board-point{cursor:pointer;outline:none}.board-point[aria-disabled=true]{cursor:default}.board-hit{fill:#0000}.board-point:hover .board-hit,.board-point:focus-visible .board-hit{fill:var(--cp-highlight)}.last-marker{fill:var(--cp-highlight);stroke:var(--cp-accent);stroke-width:1px;opacity:.7}.last-marker.is-destination{fill:var(--cp-accent-soft);stroke-width:2px}.legal-dot{fill:var(--cp-accent);opacity:.75}.capture-dot{fill:none;stroke:var(--cp-accent);stroke-width:3px;opacity:.9}.piece{transition:transform .18s}.piece-face{fill:var(--cp-surface);stroke:var(--cp-text);stroke-width:1.3px}.piece-edge{fill:none;stroke-width:1.6px}.piece-han .piece-edge{stroke:var(--cp-success)}.piece-cho .piece-edge{stroke:var(--cp-accent)}.piece-glyph{fill:var(--cp-text);font-family:serif;font-size:21px;font-weight:700}.piece-han .piece-glyph{fill:var(--cp-success)}.piece-cho .piece-glyph{fill:var(--cp-accent)}.board-point.is-selected .piece-face{fill:var(--cp-accent-soft);stroke:var(--cp-accent);stroke-width:2px}.board-point.is-checked .piece-face{fill:var(--cp-highlight);stroke:var(--cp-danger);stroke-width:2px}.board-tools{justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.tool-group{gap:7px;display:flex}.tool-button,.secondary-action,.resign-action{border:1px solid var(--cp-border);min-height:38px;color:var(--cp-text-muted);background:var(--cp-surface);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-size:.73rem;display:inline-flex}.tool-button:hover,.secondary-action:hover{border-color:var(--cp-accent);color:var(--cp-accent)}.board-hint{color:var(--cp-text-soft);text-align:right;font-size:.68rem}.game-sidebar{flex-direction:column;gap:18px;padding-top:15px;display:flex}.players-stack{gap:9px;display:grid}.player-card{border:1px solid var(--cp-border);background:var(--cp-panel);border-radius:10px;padding:16px 18px}.player-card.is-turn{border-color:var(--cp-accent);box-shadow:inset 3px 0 0 var(--cp-accent)}.player-card-top,.player-card-main,.captured-line,.panel-heading,.replay-controls,.draw-notice,.action-row{justify-content:space-between;align-items:center;display:flex}.player-card-top{color:var(--cp-text-muted);font-size:.68rem}.player-card-top .side-pip{margin-right:6px}.player-role{margin-right:auto}.turn-live{color:var(--cp-accent);font-weight:700}.player-card-main{margin:11px 0 14px}.player-card-main h3{margin:0;font-size:1.35rem;font-weight:600}.player-card-main p{color:var(--cp-text-muted);margin:3px 0 0;font-size:.68rem}.score-value{color:var(--cp-text);font-family:Consolas,Courier New,Courier,monospace;font-size:1.45rem;font-weight:500}.score-value small{color:var(--cp-text-muted);margin-left:3px;font-family:inherit;font-size:.65rem}.captured-line{border-top:1px solid var(--cp-border);color:var(--cp-text-muted);padding-top:11px;font-size:.68rem}.captured-pieces{color:var(--cp-text);gap:5px;font-family:serif;font-size:1rem;display:flex}.no-captures{color:var(--cp-text-soft);font-family:inherit;font-size:.68rem}.draw-notice{border:1px solid var(--cp-accent);background:var(--cp-accent-soft);border-radius:10px;gap:14px;padding:12px 14px}.draw-notice strong{margin-top:4px;font-size:.75rem;font-weight:600;display:block}.notice-kicker,.result-kicker{color:var(--cp-accent);letter-spacing:.1em;font-family:Consolas,Courier New,Courier,monospace;font-size:.62rem}.mini-button{min-height:32px;color:var(--cp-accent-fg);background:var(--cp-accent);border:0;border-radius:7px;padding:0 10px;font-size:.7rem;font-weight:700}.record-panel{border-top:1px solid var(--cp-border);border-bottom:1px solid var(--cp-border);overflow:hidden}.panel-heading{padding:16px 0 13px}.record-count{color:var(--cp-text-soft);font-family:Consolas,Courier New,Courier,monospace;font-size:.68rem}.move-list{border-top:1px solid var(--cp-border);border-bottom:1px solid var(--cp-border);max-height:290px;overflow-y:auto}.move-row{border:0;border-bottom:1px solid var(--cp-border);width:100%;min-height:40px;color:var(--cp-text-muted);text-align:left;background:0 0;grid-template-columns:29px 22px 1fr 16px;align-items:center;padding:0 4px;display:grid}.move-row:last-child{border-bottom:0}.move-row:hover,.move-row.is-active{color:var(--cp-accent);background:var(--cp-accent-soft)}.move-number,.move-side{color:var(--cp-text-soft);font-family:Consolas,Courier New,Courier,monospace;font-size:.65rem}.move-side{color:var(--cp-accent)}.move-notation{font-family:Consolas,Courier New,Courier,monospace;font-size:.72rem}.move-chevron{color:var(--cp-text-soft);font-size:1rem}.empty-record{min-height:160px;color:var(--cp-text-muted);text-align:center;align-content:center;place-items:center;gap:4px;display:grid}.empty-glyph{color:var(--cp-border-strong);font-size:2rem;line-height:1}.empty-record p{margin:10px 0 0;font-size:.78rem}.empty-record small{color:var(--cp-text-soft);font-size:.68rem}.replay-controls{min-height:48px}.replay-controls button{width:30px;height:30px;color:var(--cp-text-muted);background:0 0;border:0;border-radius:6px;place-items:center;font-size:1.2rem;display:inline-grid}.replay-controls button:hover:not(:disabled){color:var(--cp-accent);background:var(--cp-accent-soft)}.replay-controls span{color:var(--cp-text-soft);font-family:Consolas,Courier New,Courier,monospace;font-size:.68rem}.resume-button{border:1px solid var(--cp-accent);width:100%;min-height:34px;color:var(--cp-accent);background:0 0;border-radius:7px;margin-bottom:12px;font-size:.72rem}.record-actions{border-top:1px solid var(--cp-border);gap:7px;padding:12px 0;display:flex}.record-actions .tool-button{flex:1;min-width:0}.file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;overflow:hidden}.import-error{color:var(--cp-danger);margin:0 0 12px;font-size:.7rem;line-height:1.4}.action-panel{gap:8px;display:grid}.action-row{gap:8px}.action-row>button{flex:1}.resign-action{color:var(--cp-danger)}.resign-action:hover{border-color:var(--cp-danger);background:var(--cp-accent-soft)}.result-overlay{z-index:20;background:var(--cp-overlay);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.result-dialog{border:1px solid var(--cp-border);background:var(--cp-panel-strong);width:min(100%,420px);box-shadow:var(--cp-shadow);text-align:center;border-radius:16px;padding:40px;animation:.28s both dialog-in;position:relative}.dialog-close{background:0 0;border:0;font-size:1.4rem;position:absolute;top:14px;right:14px}.result-dialog h2{letter-spacing:0;margin:13px 0 6px;font-size:2.6rem;font-weight:500}.result-dialog p{color:var(--cp-text-muted);margin:0;font-size:.85rem}.result-scores{grid-template-columns:1fr 1fr;gap:8px;margin:28px 0 22px;display:grid}.result-scores div{border:1px solid var(--cp-border);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;padding:13px 15px;display:flex}.result-scores span{color:var(--cp-text-muted);font-size:.75rem}.result-scores strong{font-family:Consolas,Courier New,Courier,monospace;font-size:1rem;font-weight:500}.compact-start{min-height:48px;margin-top:0}.restore-overlay{z-index:30;background:var(--cp-overlay);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.restore-dialog{border:1px solid var(--cp-border);background:var(--cp-panel-strong);width:min(100%,430px);box-shadow:var(--cp-shadow);border-radius:16px;padding:34px}.restore-dialog h2{letter-spacing:0;margin:12px 0 7px;font-size:1.7rem;font-weight:600}.restore-dialog p{color:var(--cp-text-muted);margin:0;font-size:.82rem}.restore-actions{gap:8px;margin-top:24px;display:grid}.restore-actions .start-button{margin-top:0}.restore-actions .secondary-action{width:100%}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=960px){.setup-page{grid-template-columns:1fr}.setup-intro{border-right:0;border-bottom:1px solid var(--cp-border);min-height:390px;padding:48px 28px 38px}.setup-intro .brand-lockup{margin-bottom:48px}.setup-intro h1{font-size:clamp(3rem,12vw,5rem)}.setup-form{max-width:760px;margin:0 auto;padding:48px 28px 64px}.game-layout{grid-template-columns:minmax(0,1fr);max-width:720px}.game-sidebar{padding-top:0}.players-stack{grid-template-columns:1fr 1fr}.game-header{grid-template-columns:auto 1fr auto}.header-center{justify-content:center}}@media (width<=560px){.game-shell{padding:0 14px 28px}.game-header{min-height:62px}.header-center .eyebrow{display:none}.header-status{border-left:0;padding-left:0;font-size:.72rem}.elapsed{display:none}.brand-button{font-size:1.05rem}.small-mark{width:27px;height:27px;font-size:.82rem}.game-layout{gap:25px;padding-top:22px}.board-meta{min-height:48px;margin-bottom:12px}.board-meta h1{font-size:1.25rem}.board-meta-right{gap:4px}.board-frame{border-radius:10px;padding:7px}.board-tools{flex-direction:column;align-items:flex-start}.tool-group{flex-wrap:wrap}.tool-button{min-height:34px;padding:0 9px;font-size:.66rem}.board-hint{text-align:left}.players-stack{gap:7px}.player-card{padding:13px 12px}.player-card-main{margin:8px 0 10px}.player-card-main h3{font-size:1.1rem}.player-card-main p{font-size:.6rem}.score-value{font-size:1.12rem}.captured-line{flex-direction:column;align-items:flex-start;gap:5px}.setup-choice-grid{grid-template-columns:repeat(2,1fr)}.setup-intro{min-height:350px}.setup-intro .brand-lockup{margin-bottom:40px}.setup-intro h1{font-size:3rem}.setup-form{padding:38px 20px 48px}.section-heading{margin-bottom:25px}.section-heading h2{font-size:1.4rem}.setup-choice-value{font-size:.62rem}.result-dialog{padding:34px 22px 25px}.result-dialog h2{font-size:2.2rem}}@media (width<=360px){.players-stack{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
