@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-sans-cyrillic-ext-wght-normal-7w74d1lj.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-sans-cyrillic-wght-normal-B9hoeQUC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-sans-vietnamese-wght-normal-BhFYcaJr.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-sans-latin-ext-wght-normal-DMEAsnHD.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-sans-latin-wght-normal-BWQ3gi2K.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #201d1b;--surface: #2a2622;--surface-2: #353028;--line: #443e36;--ink: #ece8e0;--muted: #a49d92;--accent: #d53ed0;--accent-soft: rgba(213, 62, 208, .16);--board-light: #fcfbf7;--board-dark: #d9d6cf;--board-coord: #8f8b83;--danger: #e05d4b;--serif: "Fraunces Variable", "Iowan Old Style", Georgia, serif;--sans: "Nunito Sans Variable", "Avenir Next", "Segoe UI", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.loading{display:grid;place-items:center;min-height:100vh;color:var(--muted);font-family:var(--serif);font-size:1.3rem}.eyebrow{display:block;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.btn{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:10px;padding:.55em 1.1em;font-weight:700;font-size:.92rem;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#e155dc}.btn-ghost{background:transparent}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px}.home{max-width:1100px;margin:0 auto;padding:40px 24px 60px}.home-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:36px}.home-title{font-family:var(--serif);font-size:clamp(2.4rem,6vw,3.6rem);font-weight:640;font-variation-settings:"opsz" 72;margin:0 0 8px;letter-spacing:-.01em}.home-sub{margin:0;max-width:46ch;color:var(--muted)}.home-sub em{color:var(--ink);font-style:italic}.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.game-card{display:flex;gap:16px;align-items:center;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;transition:transform .15s,border-color .15s}.game-card:hover{transform:translateY(-2px);border-color:var(--accent)}.card-thumb{flex:0 0 104px}.card-body{min-width:0}.card-title{display:block;font-family:var(--serif);font-size:1.35rem;font-weight:600;margin:2px 0 6px}.card-rule{display:block;font-size:.86rem;color:var(--muted)}.home-footer{margin-top:44px;color:var(--muted);font-size:.78rem;text-align:center}.resume-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--accent);border-radius:16px;padding:14px 18px;margin-bottom:20px}.resume-title{display:block;font-family:var(--serif);font-size:1.1rem;font-weight:600}.resume-actions{display:flex;gap:8px}.history-slot{margin-top:36px}.history-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.history-title{font-family:var(--serif);font-size:1.3rem;font-weight:620;margin:0}.history-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:14px;overflow:hidden}.history-row{display:grid;grid-template-columns:130px 1fr auto;gap:12px;align-items:baseline;padding:10px 16px;background:var(--surface);font-size:.88rem}.history-row+.history-row{border-top:1px solid var(--line)}.history-outcome{font-weight:800}.history-meta{color:var(--muted);font-size:.78rem;text-align:right}@media(max-width:640px){.history-row{grid-template-columns:1fr;gap:2px}.history-meta{text-align:left}}.board{position:relative;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);aspect-ratio:1;width:100%;border:1px solid #b9b6ae;box-shadow:0 10px 40px #00000073;user-select:none}.board-static{pointer-events:none;box-shadow:none}.board-static .coord{display:none}.sq{position:relative}.sq-light{background:var(--board-light)}.sq-dark{background:var(--board-dark)}.coord{position:absolute;font-size:clamp(8px,1.4vmin,12px);font-weight:700;color:var(--board-coord);pointer-events:none;z-index:1}.coord-rank{top:2px;left:3px}.coord-file{bottom:1px;right:4px}.piece{position:absolute;inset:4%;width:92%;height:92%;z-index:2}.sq-selected{background-image:linear-gradient(var(--accent-soft),var(--accent-soft))}.sq-last{background-image:linear-gradient(#d53ed024,#d53ed024)}.sq-check{background-image:radial-gradient(circle,#e05d4ba6,#e05d4b00 70%)}.hint{position:absolute;z-index:3;pointer-events:none}.hint-dot{inset:36%;border-radius:50%;background:#d53ed080}.hint-capture{inset:6%;border-radius:50%;border:4px solid rgba(213,62,208,.55)}.sq-place{background-image:linear-gradient(#d53ed01a,#d53ed01a);cursor:copy}.sq-target{cursor:pointer}.board-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}.arrow-line{stroke:#d53ed0bf;stroke-width:13;stroke-linecap:round}.arrow-head{fill:#d53ed0bf}.arrow-hint-line{stroke:#d53ed08c;stroke-width:11;stroke-linecap:round;stroke-dasharray:22 16}.arrow-hint-head{fill:#d53ed08c}.sq-hint{box-shadow:inset 0 0 0 4px #d53ed099}.game{max-width:1200px;margin:0 auto;padding:20px 24px 48px}.topbar{display:flex;align-items:center;gap:18px;margin-bottom:20px}.topbar-title{flex:1;min-width:0}.topbar-name{display:block;font-family:var(--serif);font-size:1.5rem;font-weight:620;line-height:1.15}.mode-chip{font-size:.78rem;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:.35em .9em;white-space:nowrap}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}.board-col{display:flex;justify-content:center}.board-frame{position:relative;width:min(100%,calc(100vh - 170px))}.side-col{display:flex;flex-direction:column;gap:14px}.status-card{min-height:74px;display:flex;flex-direction:column;justify-content:center}.status-main{display:block;font-family:var(--serif);font-size:1.18rem;font-weight:600}.status-sub{display:block;color:var(--muted);font-size:.85rem}.check-chip{display:inline-block;margin-top:6px;align-self:flex-start;background:#e05d4b2e;color:var(--danger);font-weight:800;font-size:.8rem;border-radius:999px;padding:.15em .8em}.log-card h3,.notes-card h3{margin:0 0 8px;font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.log{font-family:var(--mono);font-size:.8rem;line-height:1.9;max-height:130px;overflow-y:auto}.log-item{display:inline-block;margin-right:10px}.log-empty{color:var(--muted)}.notes-card .rule-line{margin:0 0 8px;font-size:.9rem}.notes-card ul{margin:0;padding-left:18px;color:var(--muted);font-size:.84rem}.notes-card li{margin-bottom:6px}.controls{display:flex;flex-wrap:wrap;gap:10px}.banner{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;background:#201d1bd1;backdrop-filter:blur(2px);padding:24px}.banner-title{font-family:var(--serif);font-size:clamp(1.4rem,3.5vw,2.1rem);font-weight:640;max-width:22ch}.banner-sub{color:var(--muted)}.banner[hidden]{display:none}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#0c0a09a8;display:grid;place-items:center;padding:20px}.modal{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:26px 28px;width:min(480px,100%);max-height:90vh;overflow-y:auto}.modal h2{font-family:var(--serif);font-weight:640;margin:4px 0 10px}.modal-rule{color:var(--muted);font-size:.92rem;margin:0 0 18px}.setup-section{margin-bottom:16px}.setup-section h4{margin:0 0 8px;font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.choice-row{display:flex;flex-wrap:wrap;gap:8px}.choice{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:.5em 1em;font-weight:700;font-size:.9rem}.choice.selected{border-color:var(--accent);background:var(--accent-soft);color:#fff}.join-row{display:flex;gap:8px;margin-top:10px}.join-row input{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-family:var(--mono);font-size:1.05rem;letter-spacing:.25em;text-transform:uppercase;padding:.5em .9em;min-width:0}.hint-text{color:var(--muted);font-size:.83rem;margin:10px 0 0}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.room-code{font-family:var(--mono);font-size:2.6rem;font-weight:700;letter-spacing:.35em;text-align:center;color:var(--accent);background:var(--bg);border:1px dashed var(--line);border-radius:12px;padding:14px 10px 14px 20px;margin:8px 0}.promo-modal{width:auto}.promo-row{display:flex;gap:10px}.promo-btn{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px;width:72px;height:72px}.promo-btn:hover{border-color:var(--accent)}.promo-btn img{width:100%;height:100%}.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.set-option{display:flex;flex-direction:column;align-items:flex-start;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px;text-align:left}.set-option.selected{border-color:var(--accent);background:var(--accent-soft)}.set-preview{display:flex;gap:2px;background:var(--board-light);border-radius:8px;padding:4px 6px}.set-preview img{width:34px;height:34px}.set-name{font-weight:800}.set-blurb{font-size:.78rem;color:var(--muted)}@keyframes ellipsis-blink{0%,to{opacity:.2}50%{opacity:1}}.ellipsis{animation:ellipsis-blink 1.4s infinite}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-width:900px){.game-layout{grid-template-columns:1fr}.board-frame{width:min(100%,78vh)}.home{padding:24px 16px 40px}.home-header{flex-direction:column;gap:12px}.game{padding:14px 12px 32px}.topbar{flex-wrap:wrap;gap:10px}}
