@font-face{font-family:JX Chess Pieces;font-style:normal;font-weight:700;font-display:block;src:url(data:font/woff2;base64,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)format("woff2");unicode-range:U+3F,U+4ED5,U+5175,U+5352,U+58EB,U+5C06,U+5E05,U+70AE,U+76F8,U+8C61,U+8F66,U+9A6C}:root{--bg:#1e1510;--bg-deep:#150f0a;--panel:#2a1d15;--panel-2:#33241a;--panel-3:#3a2a1e;--line:#4a3527;--line-strong:#5e3c22;--paper:#e9d5ac;--paper-hi:#f2e3c4;--ink:#f3e7ce;--ink-dim:#c6b49a;--ink-weak:#8e7c64;--gold:#c9a227;--gold-hi:#e8cc7a;--cinnabar:#a8322a;--cinnabar-hi:#c2453a;--ok:#5c8f5a;--warn:#c98a2e;--radius:12px;--panel-w:288px;--font-ui:system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--font-serif:"Songti SC", "STSong", "Source Han Serif SC", "Noto Serif CJK SC", "SimSun", serif;--font-num:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--font-ui);-webkit-text-size-adjust:100%;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;margin:0}body{-webkit-user-select:none;user-select:none;overflow:hidden}.app{height:100vh;max-width:1180px;height:100dvh;padding:10px 10px calc(8px + env(safe-area-inset-bottom));flex-direction:column;gap:8px;margin:0 auto;display:flex}.body{flex-direction:column;flex:auto;gap:8px;min-height:0;display:flex}.stage{flex:auto;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.board-frame{--frame-pad:8px;width:calc(var(--bw,0px) + var(--frame-pad) * 2);height:calc(var(--bh,0px) + var(--frame-pad) * 2);border:1px solid var(--line-strong);pointer-events:none;z-index:0;background:linear-gradient(160deg,#4a2e1b,#2c1a0e);border-radius:14px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 1px #ffdcaa24,0 12px 28px #00000080}#board{z-index:1;touch-action:manipulation;cursor:pointer;border-radius:6px;display:block;position:relative}.panel{flex-direction:column;flex:none;gap:8px;display:flex}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;min-width:0;display:flex}.brand{min-width:0}.brand h1{font-family:var(--font-serif);letter-spacing:3px;text-indent:3px;color:var(--gold-hi);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:18px;font-weight:500;overflow:hidden}.brand-sub{letter-spacing:1.5px;color:var(--ink-weak);white-space:nowrap;margin:5px 0 0;font-size:11px}.room-card{border:1px solid var(--line);color:inherit;text-align:left;cursor:pointer;background:#221610;border-radius:10px;flex:none;align-items:center;gap:8px;padding:7px 10px;font-family:inherit;transition:border-color .15s;display:flex}.room-card:not(:disabled):hover{border-color:var(--line-strong)}.room-card:disabled{cursor:default}.room-card:focus-visible{outline:2px solid var(--gold-hi);outline-offset:2px}.room-card[hidden],#copyRoomFeedback[hidden]{display:none}#waitCode{-webkit-user-select:text;user-select:text}.room-label{color:var(--ink-weak);font-size:11px}.room-num{font-family:var(--font-num);letter-spacing:2px;color:var(--gold-hi);font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.room-conn{color:var(--ink-dim);white-space:nowrap;align-items:center;gap:4px;font-size:11px;display:flex}.room-dot{background:var(--warn);border-radius:50%;width:6px;height:6px}.room-card.ok .room-dot{background:var(--ok)}.room-card.bad .room-dot{background:var(--cinnabar-hi)}.players{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden;box-shadow:inset 0 1px #ffebc80d}.player{align-items:center;gap:10px;padding:9px 12px;display:flex;position:relative}.player+.player{border-top:1px solid #ffebc80f}.player.active{background:#c9a22712}.player.active:after{content:"";background:var(--gold);border-radius:2px;width:2px;position:absolute;top:8px;bottom:8px;left:0}.player.offline{opacity:.55}.p-seal{width:26px;height:26px;font-family:var(--font-serif);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:12px;display:flex}.player[data-side=b] .p-seal{color:var(--ink-dim);background:#1f1b16;border:1px solid #4a4238}.player[data-side=r] .p-seal{color:#d9756b;background:#a8322a29;border:1px solid #a8322a73}.p-info{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.p-nick{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.p-state{color:var(--ink-weak);font-size:11px}.player.active .p-state{color:var(--gold-hi)}.turn-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:5px;padding:10px 14px;display:flex;box-shadow:inset 0 1px #ffebc80d}.turn-row{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.turn-card .turn{letter-spacing:.5px;white-space:nowrap;font-size:clamp(17px,4.2vw,22px);font-weight:500;line-height:1.2}.turn-card .turn.red{color:var(--cinnabar-hi)}.turn-card .turn.black{color:#d5ccbd}.turn-card .meta{color:var(--ink-weak);white-space:nowrap;flex:none;font-size:12px}.turn-card .meta b{color:var(--ink);font-weight:500}.turn-clock{font-variant-numeric:tabular-nums;min-width:3.2em;color:var(--gold);margin-right:8px;display:inline-block}.turn-clock[hidden]{display:none}.turn-clock.urgent{color:var(--cinnabar-hi)}.turn-clock.paused{color:var(--ink-weak)}.last-move{color:var(--ink-dim);-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;min-height:2.9em;margin:0;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.combo-bar{gap:8px;display:flex}.combo-bar[hidden]{display:none}.legend{color:var(--ink-dim);border-top:1px solid #ffebc80f;flex-wrap:wrap;gap:4px 12px;margin-top:6px;padding-top:6px;font-size:11px;line-height:1.4;display:flex}.legend[hidden]{display:none}.legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.legend-swatch{box-sizing:border-box;border-radius:50%;flex:none;width:10px;height:10px}.legend-move{background:#2f8f4e}.legend-capture{border:2px solid #c43028}.legend-combine{border:2px dashed #2f6fb0}.chip{color:var(--ink);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:999px;flex:1 1 0;padding:8px 10px;font-family:inherit;font-size:13px}.chip.on{color:#2b1b0e;background:var(--gold);border-color:var(--gold-hi)}.btn{min-width:0;min-height:46px;color:var(--ink);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:10px;flex:1 1 0;padding:11px 16px;font-family:inherit;font-size:15px;transition:transform 80ms,border-color .15s,background .15s}.btn:hover{border-color:var(--line-strong);background:var(--panel-3)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{color:#2b1b0e;border-color:var(--gold-hi);background:linear-gradient(#e3c169,#c9a227);font-weight:500;box-shadow:inset 0 1px #ffffff73}.btn.primary:hover{background:linear-gradient(#ecd08a,#d4ad33);border-color:#f0d894}.btn.danger{color:#d9756b;background:0 0;border-color:#a8322a99}.btn.danger:hover{background:#a8322a1f}.btn.ghost{background:0 0}.btn.wide{flex:none;width:100%}.btn.big{letter-spacing:1px;min-height:56px;font-size:17px}.actions{gap:8px;display:flex}.actions[hidden]{display:none}.actions .btn{min-height:42px;padding:9px 4px;font-size:14px}.link{color:var(--ink-weak);cursor:pointer;background:0 0;border:0;border-bottom:1px dashed #c6b49a52;align-self:center;padding:6px 10px;font-family:inherit;font-size:13px}.link:hover{color:var(--ink);border-bottom-color:var(--gold)}.overlay{z-index:50;background:#0a0705b8;justify-content:center;align-items:center;padding:20px;animation:.16s fade;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.overlay[hidden]{display:none}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:12px;width:min(360px,100%);max-height:calc(100dvh - 40px);padding:20px;animation:.16s pop;display:flex;overflow-y:auto;box-shadow:inset 0 1px #ffebc80d,0 20px 50px #0000008c}.sheet.wide{width:min(460px,100%)}.board-anchor{position:absolute;transform:translate(-50%,-50%)}.board-anchor>.sheet{width:360px;max-width:calc(100vw - 32px)}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.sheet h2{font-family:var(--font-serif);letter-spacing:2px;text-indent:2px;text-align:center;color:var(--gold-hi);margin:0;font-size:17px;font-weight:500}.sheet-text{color:var(--ink-dim);text-align:center;margin:0;font-size:14px;line-height:1.6}.sheet-body{flex-direction:column;gap:8px;display:flex}.sheet-row{gap:10px;display:flex}.sheet-row .btn{flex:1 1 0}.sheet-text.err{color:#d9756b;min-height:1.4em}.lobby-rules{background:#0000002e;border:1px solid #ffebc80f;border-radius:10px;padding:10px 12px}.lobby-rules-title{letter-spacing:2px;color:var(--ink-weak);margin:0 0 6px;font-size:11px}.lobby-rules ol{color:var(--ink-dim);margin:0;padding-left:1.2em;font-size:12px;line-height:1.75}.lobby-rules li::marker{color:var(--gold)}.field{align-items:center;gap:10px;display:flex}.field>span{color:var(--ink-weak);flex:0 0 44px;font-size:13px}.field input{min-width:0;min-height:42px;color:var(--ink);border:1px solid var(--line);-webkit-user-select:text;user-select:text;background:#1a1310;border-radius:8px;outline:none;flex:auto;padding:8px 12px;font-family:inherit;font-size:15px}.field input:focus{border-color:var(--gold)}.field input::placeholder{color:#6b5c4b}.room-code{font-family:var(--font-num);letter-spacing:6px;text-align:center;color:var(--gold-hi);font-variant-numeric:tabular-nums;margin:4px 0;font-size:clamp(30px,9vw,40px);font-weight:500}.wait-status{color:var(--ink-dim);justify-content:center;align-items:center;gap:8px;margin:0;font-size:15px;display:flex}.wait-status b{letter-spacing:1px;min-width:3.4em;color:var(--gold);font-variant-numeric:tabular-nums;text-align:left;font-size:20px;font-weight:500}.wait-dot{background:var(--gold);border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite waitPulse}@keyframes waitPulse{0%,to{opacity:.28;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.start-banner{z-index:10;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:12px;animation:.32s cubic-bezier(.2,.9,.3,1.3) startIn;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.start-banner[hidden]{display:none}.start-banner.out{animation:.4s forwards startOut}.start-title{font-family:var(--font-serif);letter-spacing:8px;text-indent:8px;color:#2b1b0e;border:2px solid var(--gold-hi);background:linear-gradient(#e8cc7a,#c9a227);border-radius:14px;margin:0;padding:14px 34px;font-size:clamp(26px,7vw,44px);font-weight:500;box-shadow:0 18px 50px #0009}.start-sub{letter-spacing:2px;color:#f1e6cf;text-shadow:0 2px 12px #000000e6;margin:0;font-size:clamp(14px,3.6vw,19px)}@keyframes startIn{0%{opacity:0;transform:scale(.86)}to{opacity:1;transform:none}}@keyframes startOut{0%{opacity:1;transform:none}to{opacity:0;transform:scale(1.06)}}.end-panel{z-index:12;border:1px solid var(--line);background:#1a120cf2;border-radius:14px;flex-direction:column;align-items:center;gap:12px;min-width:264px;max-width:min(340px,100% - 16px);padding:18px 20px;animation:.18s fade;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 1px #ffebc80d,0 18px 46px #0000009e}.end-panel[hidden]{display:none}.end-title{font-family:var(--font-serif);letter-spacing:2px;text-indent:2px;color:var(--gold-hi);text-align:center;margin:0;font-size:clamp(18px,4vw,22px);font-weight:500}.end-actions{gap:10px;width:100%;display:flex}.end-actions .btn{flex:1 1 0;min-height:46px;padding:10px 12px;font-size:15px}.end-hint{color:var(--ink-dim);text-align:center;margin:0;font-size:13px;line-height:1.5}.end-hint[hidden]{display:none}.conn-bar{top:calc(8px + env(safe-area-inset-top));z-index:70;max-width:calc(100vw - 24px);color:var(--ink);border:1px solid var(--line);background:#2a1d15f7;border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:13px;line-height:1.4;animation:.18s fade;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0000008c}.conn-bar[hidden]{display:none}.conn-bar.warn{background:#3a2a12f7;border-color:#c98a2e8c}.conn-bar.bad{background:#3a1812f7;border-color:#a8322a99}.conn-bar.ok{background:#162a1cf7;border-color:#5c8f5a99}.conn-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.conn-dot{background:var(--warn);border-radius:50%;flex:none;width:8px;height:8px;animation:1.1s ease-in-out infinite waitPulse}.conn-bar.bad .conn-dot{background:var(--cinnabar-hi)}.conn-bar.ok .conn-dot{background:var(--ok);animation:none}.conn-retry{color:#2b1b0e;background:var(--gold);cursor:pointer;border:0;border-radius:999px;flex:none;margin-left:2px;padding:4px 10px;font-family:inherit;font-size:12px}.conn-retry[hidden]{display:none}.menu-item{text-align:left;width:100%;color:var(--ink);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:10px;padding:14px;font-family:inherit;font-size:15px}.menu-item:hover{border-color:var(--line-strong);background:var(--panel-3)}.menu-item.danger{color:#d9756b}.menu-item:disabled{opacity:.4;cursor:default}.countdown{flex-direction:column;gap:6px;display:flex}.countdown-bar{background:#1a1310;border-radius:999px;height:6px;overflow:hidden}.countdown-bar i{background:var(--gold);width:100%;height:100%;transition:width .1s linear;display:block}.countdown-num{color:var(--ink-dim);text-align:center;font-size:12px}.countdown-num b{color:var(--gold);font-size:15px;font-weight:500}.log{min-height:0;max-height:52vh;color:var(--ink-dim);-webkit-user-select:text;user-select:text;flex:auto;margin:0;padding:0 0 0 1.6em;font-size:13px;line-height:1.9;overflow-y:auto}.log li{padding-left:2px}.log li::marker{color:var(--line-strong)}.recent{display:none}@media (min-width:881px){.app{grid-template-columns:minmax(0, 1fr) var(--panel-w);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"stage head""stage panel";gap:14px 24px;max-width:1360px;padding:20px 24px;display:grid}.body{display:contents}.stage{grid-area:stage}.panel-head{grid-area:head}.panel{grid-area:panel;min-height:0;padding-right:2px;overflow-y:auto}.recent{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;flex:auto;min-height:80px;padding:10px 12px;display:flex;box-shadow:inset 0 1px #ffebc80d}.recent-title{letter-spacing:2px;color:var(--ink-weak);margin:0 0 6px;font-size:11px}.recent-list{min-height:0;color:var(--ink-dim);flex:auto;margin:0;padding:0 0 0 1.4em;font-size:12px;line-height:1.85;overflow-y:auto}.recent-list li::marker{color:var(--line-strong)}.recent-list.is-empty{justify-content:center;align-items:center;padding:0;display:flex}.recent-list .recent-empty{text-align:center;color:var(--ink-weak);margin:0;padding:0;list-style:none}.board-frame{--frame-pad:12px;border-radius:16px}#board{border-radius:8px}.brand h1{font-size:20px}.actions .btn{min-height:44px;font-size:14px}}@media (min-width:1024px){:root{--panel-w:320px}.brand h1{font-size:22px}}@media (max-height:520px) and (orientation:landscape){.app{gap:6px;padding:8px 12px}.brand-sub{display:none}.brand h1{font-size:16px}.turn-card{gap:2px;padding:6px 12px}.turn-card .turn{font-size:16px}.last-move{-webkit-line-clamp:1;min-height:0;font-size:12px}.btn{min-height:40px}.actions .btn{min-height:38px}}@media (max-width:880px) and (max-height:660px){.brand-sub{display:none}.app{padding:8px 8px calc(6px + env(safe-area-inset-bottom));gap:6px}.body,.panel{gap:6px}.players{flex-direction:row}.player{flex:1 1 0;gap:8px;padding:7px 10px}.player+.player{border-top:0;border-left:1px solid #ffebc80f}.player.active:after{width:auto;height:2px;top:0;bottom:auto;left:8px;right:8px}.p-seal{width:22px;height:22px;font-size:11px}.p-nick{font-size:12px}.p-state{font-size:10px}.turn-card{gap:3px;padding:7px 12px}.turn-card .turn{font-size:17px}.last-move{-webkit-line-clamp:1;min-height:0;font-size:12px}.actions .btn{min-height:38px;padding:7px 4px;font-size:13px}.btn.big{min-height:50px;font-size:16px}}@media (max-width:340px){.app{padding:8px}.btn{padding:10px 8px;font-size:14px}.actions .btn{font-size:13px}.brand h1{letter-spacing:2px;font-size:16px}}@media (prefers-reduced-motion:reduce){.overlay,.sheet{animation:none}.btn{transition:none}}
