@font-face{font-family:JanggiHan;src:url(data:font/woff2;base64,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)format("woff2");font-weight:700;font-display:block}@font-face{font-family:JanggiCho;src:url(data:font/woff2;base64,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)format("woff2");font-display:block}:root{--bg:#dcdcde;--band:#efeff0;--surface:#fff;--surface-2:#f5f5f6;--text:#2a2b2f;--muted:#74767d;--line:#d3d4d8;--accent:#ea7b2c;--accent-deep:#d8661a;--accent-soft:#fde7d6;--cho:#2f5bd3;--han:#d23a2f;--cho-ink:#1d3f9e;--han-ink:#c8231c;--good:#3f9a4a;--best:#129c5c;--mistake:#ec8a1f;--blunder:#d93a2f;--board-line:#5a4732;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font-family:Noto Sans KR,Apple SD Gothic Neo,system-ui,sans-serif}button{font:inherit;color:inherit}.app{min-height:100dvh;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.topbar{z-index:5;background:var(--band);border-bottom:1px solid #d0d0d3;grid-template-columns:44px 1fr auto auto;align-items:center;gap:6px;height:54px;padding:0 10px;display:grid;position:sticky;top:0}.topbar h1{text-align:center;color:#4a4b50;letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:19px;font-weight:700;overflow:hidden}.icon-btn{color:#6a6c72;cursor:pointer;background:0 0;border:none;border-radius:10px;place-items:center;min-width:40px;height:36px;padding:0 8px;font-size:13px;font-weight:700;display:grid}.icon-btn:hover{background:#0000000d}.icon-btn.text.on{color:var(--accent-deep);background:var(--accent-soft)}.layout{flex-direction:column;display:flex}.stage{width:100%;min-width:0}.side{flex-direction:column;gap:10px;min-width:0;padding:10px 10px 0;display:flex}@media (width>=980px){.layout{--board-w:clamp(440px, calc((100dvh - 300px) * .9008), 720px);grid-template-columns:var(--board-w) minmax(320px, 380px);justify-content:center;align-items:start;gap:22px;padding:16px 16px 0;display:grid}.side{padding:0;position:sticky;top:70px}.board{border-radius:4px}.tray{margin-left:0;margin-right:0}.navbar{border:1px solid #d3d3d6;border-radius:14px}}.evalbar{font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr auto;align-items:center;column-gap:8px;padding:8px 12px 4px;font-size:13px;display:grid}.evalbar-side{min-width:50px;font-weight:700}.evalbar-side.side-cho:before,.evalbar-side.side-han:after{content:"";vertical-align:1px;border-radius:50%;width:9px;height:9px;display:inline-block}.evalbar-side.side-cho:before{background:var(--cho);margin-right:5px}.evalbar-side.side-han{text-align:right}.evalbar-side.side-han:after{background:var(--han);margin-left:5px}.evalbar-track{background:linear-gradient(#e0574c, var(--han));border-radius:999px;height:14px;position:relative;overflow:hidden;box-shadow:inset 0 1px 2px #00000040}.evalbar-fill{background:linear-gradient(#5179e2, var(--cho));border-right:2px solid #fff;height:100%;transition:width .5s cubic-bezier(.3,.8,.3,1)}.evalbar-mid{background:#ffffff8c;width:1px;position:absolute;top:2px;bottom:2px;left:50%}.evalbar-detail{text-align:center;color:var(--muted);grid-column:1/-1;margin-top:2px;font-size:12px}.evalbar-msg{color:var(--muted);text-align:center;padding:10px 12px 12px;font-size:13px;position:relative}.evalbar-msg.error{color:var(--blunder)}.evalbar-progress{background:var(--accent);border-radius:3px;max-width:calc(100% - 24px);height:3px;transition:width .2s;position:absolute;bottom:4px;left:12px}.tray{scrollbar-width:none;background:linear-gradient(#cfcfd2,#d9d9dc);border:1px solid #c4c4c8;border-radius:999px;align-items:center;gap:1px;height:48px;margin:6px 10px;padding:0 14px;display:flex;overflow-x:auto;box-shadow:inset 0 2px 5px #00000029,0 1px #ffffffd9}.tray-pc{aspect-ratio:1/1.06;flex:none;width:auto;height:34px;animation:.35s ease-out tray-in}.tray-K,.tray-R,.tray-C,.tray-H,.tray-E{height:38px}@keyframes tray-in{0%{opacity:0;transform:translateY(-8px)scale(.6)}}.board-wrap{position:relative}.board{touch-action:manipulation;-webkit-user-select:none;user-select:none;cursor:pointer;width:100%;height:auto;display:block;box-shadow:0 2px #b08a4e,0 8px 22px #3c280a47}.grid rect,.grid line{stroke:var(--board-line);stroke-width:2.3px}.marks line{stroke:var(--board-line);stroke-width:2px;stroke-linecap:round}.coords text{fill:#6d4f27;text-anchor:middle;dominant-baseline:central;opacity:.65;font-size:19px;font-weight:700}.glyph{text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke-linejoin:round;pointer-events:none}.glyph-han{fill:var(--han-ink);stroke:var(--han-ink);font-family:JanggiHan,Noto Serif KR,serif;font-weight:700}.glyph-cho{fill:var(--cho-ink);stroke:var(--cho-ink);font-family:JanggiCho,Noto Serif KR,serif}.glyph-emboss{fill:#fff;stroke:#fff;opacity:.9}.pc-side{stroke:#32323c73;stroke-width:1.2px}.pc-bevel{stroke:#50505a4d;stroke-width:1px}.pc-face{stroke:#ffffffb3;stroke-width:1px}.piece{transition:transform .26s cubic-bezier(.25,.8,.3,1)}.piece-inner{transition:transform .14s ease-out}.piece-inner.is-selected{transform:translateY(-5px)scale(1.07)}.piece-inner.is-landing{animation:.34s ease-out land}@keyframes land{0%{transform:translateY(-7px)scale(1.13)}65%{transform:translateY(0)scale(.97)}to{transform:none}}.last-from{fill:#ffffff2e;stroke:#7850148c;stroke-width:2.5px;stroke-dasharray:7 6}.glow-select{animation:1.4s ease-in-out infinite alternate breathe}@keyframes breathe{0%{opacity:.75}to{opacity:1}}.dest{fill:#281a086b;stroke:#ffffffe6;stroke-width:3px;pointer-events:none;animation:.18s ease-out fade-in}.dest-capture{fill:none;stroke:var(--accent);stroke-width:6px;pointer-events:none;animation:.9s ease-in-out infinite alternate pulse}.check-ring{fill:#dc262638;stroke:#e0281e;stroke-width:5px;animation:.8s ease-in-out infinite alternate pulse}@keyframes pulse{0%{opacity:.4}to{opacity:1}}.arrow{pointer-events:none;stroke-linejoin:round;animation:.25s ease-out fade-in}.arrow-best{fill:#129c5cc7;stroke:#ffffffa6;stroke-width:2px}.fx-ripple{fill:none;stroke:#fff6d2f2;stroke-width:4px;animation:.5s ease-out .2s both ripple}.fx-ripple.big{stroke:#ffbe6ef2;stroke-width:7px;animation-duration:.62s}@keyframes ripple{0%{opacity:0;transform:scale(.6)}1%{opacity:.95}to{opacity:0;transform:scale(1.75)}}.fx-dust{fill:#f6e3b4;stroke:#78501e59;stroke-width:1px;animation:.6s cubic-bezier(.2,.7,.3,1) .2s both dust}@keyframes dust{0%{opacity:0;transform:translate(0)scale(1)}1%{opacity:1}to{transform:translate(var(--dx), var(--dy)) scale(.3);opacity:0}}.fx-ghost{animation:.5s ease-in .17s both ghost}@keyframes ghost{0%{opacity:1;transform:none}30%{opacity:.95;transform:scale(1.12)rotate(-8deg)}to{opacity:0;transform:translate(18px,-44px)scale(.35)rotate(28deg)}}.grade-badge{pointer-events:none;animation:.35s cubic-bezier(.3,1.6,.5,1) .25s both badge}.grade-badge circle{stroke:#fff;stroke-width:3px}.grade-badge text{fill:#fff;text-anchor:middle;dominant-baseline:central;font-size:21px;font-weight:900}@keyframes badge{0%{transform:scale(0)}}.grade-badge.grade-best circle{fill:var(--best)}.grade-badge.grade-good circle{fill:var(--good)}.grade-badge.grade-mistake circle{fill:var(--mistake)}.grade-badge.grade-blunder circle{fill:var(--blunder)}.banner{letter-spacing:.04em;pointer-events:none;white-space:nowrap;text-shadow:3px 0 #fff,-3px 0 #fff,0 3px #fff,0 -3px #fff,2px 2px #fff,-2px -2px #fff,2px -2px #fff,-2px 2px #fff,0 8px 18px #00000059;font-size:clamp(46px,15vw,92px);font-weight:900;animation:1.35s cubic-bezier(.2,.9,.3,1) forwards stamp;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}.banner-cho{color:var(--cho-ink)}.banner-han{color:var(--han-ink)}.banner-small{font-size:clamp(24px,7vw,38px)}@keyframes stamp{0%{opacity:0;transform:translate(-50%,-50%)scale(2.2)rotate(-8deg)}14%{opacity:1;transform:translate(-50%,-50%)scale(.94)rotate(-3deg)}22%{transform:translate(-50%,-50%)scale(1)rotate(-3deg)}78%{opacity:1}to{opacity:0;transform:translate(-50%,-50%)scale(1)rotate(-3deg)}}.review-tag{color:#fff;vertical-align:3px;background:#3f4045;border-radius:999px;margin-left:6px;padding:2px 9px;font-size:12px;font-weight:700}.toast{color:#fff;text-align:center;pointer-events:none;background:#18181ce6;border-radius:12px;width:max-content;max-width:calc(100% - 24px);padding:9px 14px;font-size:14px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.navbar{background:var(--band);border-top:1px solid #d3d3d6;border-bottom:1px solid #d3d3d6;grid-template-columns:repeat(3,1fr) auto repeat(3,1fr);place-items:center;gap:4px;margin-top:4px;padding:8px 10px;display:grid}.nav-btn{color:#63656b;cursor:pointer;background:linear-gradient(#fff,#f1f1f3);border:1px solid #dedee1;border-radius:50%;place-items:center;width:46px;height:46px;display:grid;box-shadow:0 2px 4px #00000024}.nav-btn:active:not(:disabled){transform:translateY(1px);box-shadow:0 1px 2px #0000002e}.nav-btn:disabled{opacity:.4;cursor:default}.nav-count{font-variant-numeric:tabular-nums;flex-direction:column;align-items:center;min-width:56px;line-height:1;display:flex}.nav-count b{font-size:24px}.nav-count span{color:var(--muted);margin-top:3px;margin-left:18px;font-size:15px}.players{background:linear-gradient(#e6e6e8,#ededef);border:1px solid #d0d0d4;border-radius:999px;align-items:center;gap:6px;padding:6px;display:flex;box-shadow:inset 0 1px 3px #0000001a}.pl{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.pl-han{text-align:right;flex-direction:row-reverse}.avatar{background:radial-gradient(circle at 35% 30%,#fff,#e6e7ea);border:3px solid #cfd0d4;border-radius:50%;flex:none;place-items:center;width:54px;height:54px;transition:border-color .2s,box-shadow .2s;display:grid}.avatar-glyph{margin-top:-2px;font-size:31px;line-height:1}.avatar-glyph.glyph-cho{color:var(--cho-ink);font-family:JanggiCho,serif}.avatar-glyph.glyph-han{color:var(--han-ink);font-family:JanggiHan,serif;font-weight:700}.pl.active .avatar{border-color:var(--accent);animation:1.6s ease-in-out infinite turn-ring;box-shadow:0 0 0 3px #ea7b2c40}@keyframes turn-ring{50%{box-shadow:0 0 0 6px #ea7b2c1f}}.pl-text{flex-direction:column;min-width:0;line-height:1.2;display:flex}.pl-score{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.pl-score b{color:var(--text);margin-right:1px;font-size:19px}.pl-name{flex-wrap:wrap;align-items:center;gap:5px;font-size:13px;display:flex}.pl-han .pl-name{justify-content:flex-end}.pl-side{font-weight:700}.pl-side.side-cho{color:var(--cho-ink)}.pl-side.side-han{color:var(--han-ink)}.pl-role{background:#fff;border:1px solid #d6d6da;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700}.swap{cursor:pointer;background:linear-gradient(#fafafb,#ececef);border:1px solid #d8d8dc;border-radius:12px;flex:none;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 1px 2px #0000001a}.check-tag{color:#fff;background:#e0281e;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700}.thinking{color:var(--accent-deep);font-size:12px;font-weight:700}.thinking:after{content:"";animation:1.2s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.actions{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.act{color:#4b4d53;cursor:pointer;background:linear-gradient(#fff,#f2f2f4);border:1px solid #d4d4d8;border-radius:14px;height:50px;font-size:16px;font-weight:700;box-shadow:0 2px 3px #00000014}.act:active:not(:disabled){transform:translateY(1px)}.act:disabled{opacity:.45;cursor:default}.act.on{background:linear-gradient(#f39248, var(--accent));border-color:var(--accent-deep);color:#fff}.act.danger{color:var(--blunder)}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:12px;min-height:44px;padding:10px 14px;font-size:15px;font-weight:700}.btn:hover:not(:disabled){border-color:#b9bbc1}.btn:disabled{opacity:.45;cursor:default}.btn.small{border-radius:10px;min-height:34px;padding:5px 12px;font-size:13px}.btn.primary{background:linear-gradient(#f08a3c, var(--accent));border-color:var(--accent-deep);color:#fff}.btn.accent{background:var(--accent-soft);color:var(--accent-deep);border-color:#f3b98c}.btn.pill{border-radius:999px}.btn.ghost{background:0 0}.coach{background:var(--surface);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:8px;padding:12px;display:flex;box-shadow:0 2px 6px #0000000f}.coach h3{color:var(--muted);margin:0;font-size:14px;font-weight:700}.coach-row{justify-content:space-between;align-items:center;gap:8px;margin-top:4px;display:flex}.coach-actions{gap:6px;display:flex}.fb{background:var(--surface-2);border-left:5px solid #c9cbd0;border-radius:14px;padding:10px 12px}.fb-empty{color:var(--muted);font-size:14px}div.fb-best{border-left-color:var(--best)}div.fb-good{border-left-color:var(--good)}div.fb-mistake{border-left-color:var(--mistake);background:#fff6ec}div.fb-blunder{border-left-color:var(--blunder);background:#fff0ee}.fb-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fb-badge{color:#fff;border-radius:999px;align-items:center;gap:5px;padding:3px 10px 3px 4px;font-size:14px;font-weight:700;display:inline-flex}.fb-badge i{background:#ffffff40;border-radius:999px;place-items:center;min-width:22px;height:22px;padding:0 4px;font-size:12px;font-style:normal;font-weight:900;display:grid}.fb-badge.grade-best{background:var(--best)}.fb-badge.grade-good{background:var(--good)}.fb-badge.grade-mistake{background:var(--mistake)}.fb-badge.grade-blunder{background:var(--blunder)}.fb-ply{color:var(--muted);font-size:13px}.fb-move{font-variant-numeric:tabular-nums;margin-left:auto;font-size:16px;font-weight:700}.fb-text,p.fb-best{margin:6px 0 0;font-size:14px}p.fb-best{color:var(--muted)}p.fb-best b{color:var(--best);font-size:15px}.fb-drop{color:var(--blunder);font-weight:700}.fb-legend{display:none}.winchart{position:relative}.winchart svg{cursor:crosshair;touch-action:pan-y;width:100%;height:auto;display:block}.wc-bg{fill:var(--surface-2)}.wc-area-cho{fill:#2f5bd347}.wc-area-han{fill:#d23a2f42}.wc-mid{stroke:#b8bac0;stroke-width:1px;stroke-dasharray:3 3}.wc-line{fill:none;stroke:#3d3f46;stroke-width:2px;stroke-linejoin:round}.wc-label{fill:var(--muted);font-size:9px}.wc-current{stroke:var(--accent);stroke-width:2px}.wc-cross{stroke:#6a6c72;stroke-width:1px}.wc-dot{stroke:var(--surface-2);stroke-width:2px}.wc-mistake{fill:var(--mistake)}.wc-blunder{fill:var(--blunder)}.wc-tip{color:#fff;white-space:nowrap;pointer-events:none;background:#1e1e22e6;border-radius:8px;padding:4px 8px;font-size:12px;position:absolute;top:-6px;transform:translate(-50%,-100%)}.wc-tip em{color:#ffc58f;font-style:normal}.movelist{font-variant-numeric:tabular-nums;grid-template-columns:1fr 1fr;gap:3px 6px;max-height:260px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}@media (width>=980px){.movelist{min-height:120px;max-height:calc(100dvh - 560px)}}.mv button{cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;width:100%;padding:5px 8px;font-size:14px;display:flex}.mv-cho button{background:#eef2fc}.mv-han button{background:#fcefee}.mv.current button{border-color:var(--accent);box-shadow:0 0 0 2px #ea7b2c33}.mv-no{color:var(--muted);min-width:18px;font-size:11px}.mv-check{color:#e0281e;font-size:11px;font-weight:700}.mv-grade{color:#fff;text-align:center;border-radius:999px;min-width:22px;margin-left:auto;padding:0 4px;font-size:11px;font-weight:900}.mv-grade.grade-best{background:var(--best)}.mv-grade.grade-good{background:var(--good)}.mv-grade.grade-mistake{background:var(--mistake)}.mv-grade.grade-blunder{background:var(--blunder)}.movelist-empty{color:var(--muted);margin:0;font-size:14px}.editor{background:var(--surface);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:10px;padding:14px;display:flex}.editor-head h3{margin:0;font-size:17px}.editor-head p{color:var(--muted);margin:4px 0 0;font-size:13px}.palette-row{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.palette-pc{aspect-ratio:1;cursor:pointer;background:#d9b977 url(./wood-BdI7RI5K.jpg) 50%/400%;border:2px solid #0000;border-radius:12px;place-items:center;padding:3px;display:grid}.palette-pc svg{width:100%;height:100%}.palette-pc.on{border-color:var(--accent);box-shadow:0 0 0 3px #ea7b2c4d}.editor-tools{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.editor-error{color:var(--blunder);margin:0;font-size:14px;font-weight:700}.editor-actions{grid-template-columns:auto 1fr 1fr;gap:6px;display:grid}.overlay{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;place-items:center;padding:16px;animation:.2s ease-out fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.dialog{background:#f4f4f5;border-radius:24px;width:min(100%,460px);max-height:calc(100dvh - 32px);padding:0 20px 20px;animation:.28s cubic-bezier(.3,1.3,.5,1) pop-in;overflow-y:auto;box-shadow:0 24px 60px #0006}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}}.dialog-title{border-bottom:1px solid #dcdce0;align-items:center;gap:10px;margin:0 -20px 14px;padding:16px 20px 12px;display:flex}.dialog-title h2{color:#3d3e43;margin:0;font-size:21px;font-weight:700}.dialog-icon{color:#fff;background:#3f4045;border-radius:50%;place-items:center;width:30px;height:30px;font-family:JanggiCho,serif;font-size:18px;display:grid}.setup-caption h3{color:#3d3e43;margin:14px 0 2px;font-size:20px}.setup-caption p{color:var(--muted);margin:0 0 6px;font-size:14px}.setup-row{color:#4b4d53;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;font-size:14px;font-weight:700;display:flex}.segmented{background:#e2e2e5;border-radius:12px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex;box-shadow:inset 0 1px 2px #0000001a}.segmented button{cursor:pointer;background:0 0;border:none;border-radius:9px;min-height:34px;padding:6px 11px;font-size:14px;font-weight:500}.segmented button.on{color:var(--accent-deep);background:#fff;font-weight:700;box-shadow:0 1px 3px #00000026}.setup-side{border:none;margin:12px 0 0;padding:0}.setup-side legend{align-items:center;gap:8px;margin-bottom:8px;padding:0;font-size:15px;font-weight:700;display:flex}.setup-side legend small{color:var(--muted);font-weight:500}.side-badge{color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;font-size:15px;line-height:1;display:inline-grid}.side-badge.side-cho{background:var(--cho);font-family:JanggiCho,serif}.side-badge.side-han{background:var(--han);font-family:JanggiHan,serif;font-weight:700}.formation-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.formation{cursor:pointer;background:#fff;border:1px solid #e2e2e6;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 6px;transition:background .15s;display:flex;box-shadow:0 1px 3px #0000001a}.formation.picked{background:#dfdfe2;border-color:#cdcdd2;box-shadow:inset 0 2px 4px #00000024}.formation{min-width:0}.formation-pcs{justify-content:center;gap:1px;width:100%;display:flex}.mini-pc{flex:1 1 0;min-width:0;max-width:40px;height:auto}.formation-name{color:#55575d;font-size:12px}.formation-name small{color:var(--muted)}.dialog-actions{gap:8px;margin-top:18px;display:flex}.dialog-actions .btn{flex:1;min-height:50px;font-size:17px}.dialog-actions .btn.ghost{flex:none}.result{text-align:center;padding-top:22px}.result-seal{background:radial-gradient(circle at 35% 30%,#fff,#e4e5e8);border:4px solid;border-radius:50%;place-items:center;width:84px;height:84px;margin:0 auto 6px;font-size:50px;animation:.6s cubic-bezier(.3,1.5,.5,1) seal;display:grid}.seal-cho{color:var(--cho-ink);font-family:JanggiCho,serif}.seal-han{color:var(--han-ink);font-family:JanggiHan,serif;font-weight:700}@keyframes seal{0%{opacity:0;transform:scale(1.8)rotate(-20deg)}}.result h2{margin:4px 0;font-size:30px}.result p{color:var(--muted);margin:0}.result-scores{font-variant-numeric:tabular-nums;justify-content:center;gap:10px;margin-top:12px;font-size:19px;font-weight:700;display:flex}.result-scores .side-cho{color:var(--cho-ink)}.result-scores .side-han{color:var(--han-ink)}.setup-help{background:var(--accent-soft);color:#7a3d0c;border-radius:12px;margin:4px 0 8px;padding:10px 12px;font-size:13px;line-height:1.5}
