@font-face{font-family:Noto Sans SC;font-style:normal;font-display:swap;font-weight:400;src:url(/chess/assets/noto-sans-sc-chinese-simplified-400-normal-Ba7eOkfT.woff2) format("woff2")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:600;src:url(/chess/assets/noto-serif-sc-chinese-simplified-600-normal-BogBFFgE.woff2) format("woff2")}@font-face{font-family:Ma Shan Zheng;font-style:normal;font-display:swap;font-weight:400;src:url(/chess/assets/ma-shan-zheng-chinese-simplified-400-normal-Cq4ZnsCU.woff2) format("woff2")}:root{font-family:Noto Sans SC,Microsoft YaHei,sans-serif;color:#e6dcc8;background:#08161c;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #08161c;--ink-soft: #10272d;--wood-dark: #241a16;--wood: #493628;--wood-light: #684a35;--bronze-dark: #6b4a26;--bronze: #a9783d;--bronze-light: #d8ad68;--ivory: #e8c98f;--paper: #e6dcc8;--muted: #a99476;--red: #a12d25;--red-dark: #681915;--gold: #f0a33a;--danger: #d54232}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:100vh;min-height:100svh;overflow-x:hidden;background-color:var(--ink);background-image:url(/chess/assets/ink-mountains-bg.png);background-position:center;background-repeat:no-repeat;background-size:cover;-webkit-font-smoothing:antialiased}button{font:inherit}button:focus-visible{outline:2px solid var(--bronze-light);outline-offset:3px}.home-screen{position:relative;display:flex;min-height:100vh;min-height:100svh;flex-direction:column;isolation:isolate}.home-screen:before{position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;content:"";background:#030d118a;pointer-events:none}.home-topbar{display:flex;min-height:68px;align-items:center;justify-content:space-between;gap:20px;padding:10px clamp(18px,3vw,48px);border-bottom:1px solid rgba(216,173,104,.18);background:#051216b8;box-shadow:0 10px 34px #0000002e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.home-rule-button{display:inline-flex;min-height:42px;align-items:center;gap:8px;padding:0 16px;border:1px solid rgba(169,120,61,.5);border-radius:999px;color:var(--paper);background:#141512d1;cursor:pointer;font-size:12px;letter-spacing:.08em;transition:transform .16s ease,border-color .16s ease,background .16s ease}.home-rule-button:hover{border-color:var(--bronze-light);background:#493628e6;transform:translateY(-1px)}.home-rule-button svg{width:20px;height:20px;color:var(--bronze-light)}.home-hero{width:min(calc(100% - 32px),1060px);margin:auto;padding:clamp(32px,5vh,58px) 0 36px;text-align:center}.home-hero__eyebrow{color:var(--bronze-light);font-family:"Noto Serif SC",serif;font-size:11px;letter-spacing:.34em}.home-hero h1{margin:12px 0 0;color:#f2e6ce;font-family:"Noto Serif SC",serif;font-size:clamp(34px,4.2vw,54px);font-weight:600;letter-spacing:.12em;text-shadow:0 8px 28px rgba(0,0,0,.46)}.home-hero>p{max-width:660px;margin:15px auto 0;color:#bdac90;font-size:14px;line-height:1.8}.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:clamp(28px,5vh,46px);text-align:left}.mode-card{position:relative;min-width:0;overflow:hidden;border:1px solid rgba(216,173,104,.58);border-radius:24px;color:var(--paper);background-color:#161411f0;background-image:url(/chess/assets/board-walnut-texture.png);background-size:420px 420px;background-blend-mode:multiply;box-shadow:inset 0 0 0 4px #2c1f18a8,0 24px 54px #00000052}.mode-card:before{position:absolute;top:7px;right:7px;bottom:7px;left:7px;border:1px solid rgba(216,173,104,.14);border-radius:18px;content:"";pointer-events:none}.mode-card--ai,.mode-card--online{display:flex;min-height:326px;flex-direction:column;padding:26px}.mode-card--online,.mode-card--local-compact{display:flex;width:100%;text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease,filter .18s ease}.mode-card--online:hover,.mode-card--local-compact:hover{border-color:var(--bronze-light);filter:brightness(1.08);transform:translateY(-4px)}.mode-card--local-compact{grid-column:1 / -1;min-height:78px;align-items:center;gap:16px;padding:13px 20px;border-radius:18px}.mode-card--local-compact:before{top:5px;right:5px;bottom:5px;left:5px;border-radius:13px}.mode-card--local-compact .mode-card__copy{min-width:0;flex:1;margin:0}.mode-card--local-compact .mode-card__title{font-size:17px}.mode-card--local-compact .mode-card__copy>span{margin-top:3px;line-height:1.45}.mode-card__icon--compact{width:42px;height:42px}.mode-card__icon--compact svg{width:22px;height:22px}.mode-card__compact-action{flex:0 0 auto;color:var(--bronze-light);font-size:12px;letter-spacing:.08em}.mode-card__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.mode-card__icon{display:grid;width:52px;height:52px;place-items:center;border:1px solid rgba(216,173,104,.7);border-radius:50%;color:var(--ivory);background:#080e0eb8;box-shadow:inset 0 0 0 4px #291d17b8,0 8px 20px #00000047}.mode-card__icon svg{width:27px;height:27px}.mode-card__tag{color:var(--bronze-light);font-size:10px;letter-spacing:.18em}.mode-card__copy{display:block;margin-top:22px}.mode-card__copy h2,.mode-card__title{display:block;margin:0;color:#f2e3c7;font-family:"Noto Serif SC",serif;font-size:25px;font-weight:600;letter-spacing:.08em}.mode-card__copy p,.mode-card__copy>span{display:block;margin:9px 0 0;color:#b6a58a;font-size:12px;line-height:1.75}.difficulty-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;padding-top:22px}.difficulty-grid button{display:flex;min-height:78px;align-items:center;gap:10px;padding:11px;border:1px solid rgba(169,120,61,.46);border-radius:15px;color:var(--paper);background:#070e0ea3;text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.difficulty-grid button:hover{border-color:var(--bronze-light);background:#562f20b8;transform:translateY(-2px)}.difficulty-choice__icon{display:grid;flex:0 0 auto;width:34px;height:34px;place-items:center;border-radius:50%;color:var(--bronze-light);background:#691b167a}.difficulty-choice__icon svg{width:19px;height:19px}.difficulty-grid button>span:last-child{display:flex;min-width:0;flex-direction:column}.difficulty-grid strong{color:var(--ivory);font-family:"Noto Serif SC",serif;font-size:14px}.difficulty-grid small{margin-top:2px;color:var(--muted);font-size:10px;line-height:1.5}.mode-card__action{display:inline-flex;min-height:48px;align-items:center;justify-content:space-between;gap:16px;margin-top:auto;padding:0 18px;border:1px solid var(--bronze-light);border-radius:999px;color:#fff0d2;background:var(--red-dark);box-shadow:inset 0 0 0 2px #2409077a,0 6px 14px #00000040;font-size:12px;font-weight:600;letter-spacing:.08em}.mode-card__action>span{font-size:18px}.home-footer{padding:12px 16px 18px;color:#a99476ad;font-size:10px;letter-spacing:.16em;text-align:center}.app-shell{position:relative;min-height:100vh;min-height:100svh;isolation:isolate}.app-shell:before{position:fixed;z-index:-1;top:0;right:0;bottom:0;left:0;content:"";background:#040e126b;pointer-events:none}.topbar{position:relative;z-index:5;display:grid;grid-template-columns:minmax(200px,1fr) minmax(300px,520px) minmax(200px,1fr);align-items:center;gap:24px;height:60px;min-height:60px;padding:4px clamp(16px,2.4vw,44px);border-bottom:1px solid rgba(216,173,104,.2);background:#051216c7;box-shadow:0 8px 32px #0000002e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand-block{display:flex;align-items:center;gap:12px;min-width:0}.brand-block__seal{display:grid;flex:0 0 auto;width:40px;height:40px;place-items:center;border:1px solid var(--bronze-light);border-radius:50%;color:var(--ivory);background:var(--red-dark);box-shadow:inset 0 0 0 4px #1608054d,0 5px 18px #00000059;font-family:Ma Shan Zheng,STKaiti,serif;font-size:24px}.brand-block>span:last-child{display:flex;min-width:0;flex-direction:column}.brand-block strong{color:#f1e7d2;font-family:"Noto Serif SC",serif;font-size:18px;letter-spacing:.16em}.brand-block small{margin-top:2px;overflow:hidden;color:var(--muted);font-size:11px;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap}.turn-banner{display:flex;align-items:center;justify-content:center;justify-self:stretch;gap:12px;min-width:0;padding:5px 18px;border:1px solid rgba(169,120,61,.46);border-radius:999px;background:#141310b8;box-shadow:inset 0 0 0 1px #e8c98f0d,0 8px 28px #0003}.turn-banner__dot{flex:0 0 auto;width:12px;height:12px;border:2px solid var(--bronze-light);border-radius:50%;background:#332c24;box-shadow:0 0 0 4px #a9783d1f}.turn-banner--red .turn-banner__dot{background:var(--red)}.turn-banner--black .turn-banner__dot{background:#171716}.turn-banner.is-checked{border-color:#d54232bf;box-shadow:0 0 20px #d5423229}.turn-banner strong{overflow:hidden;color:var(--paper);font-family:"Noto Serif SC",serif;font-size:14px;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap}.topbar__actions{display:flex;justify-content:flex-end;gap:8px}.icon-button{display:inline-grid;width:38px;height:38px;padding:0;place-items:center;border:1px solid rgba(169,120,61,.42);border-radius:50%;color:var(--ivory);background:#151613c7;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.icon-button:hover{border-color:var(--bronze-light);background:#493628e0;transform:translateY(-2px)}.icon-button:disabled{border-color:#a9783d2e;color:#e8c98f57;background:#1516137a;cursor:not-allowed;transform:none}.icon-button svg{width:20px;height:20px}.game-layout{display:grid;grid-template-columns:minmax(182px,.9fr) minmax(520px,950px) minmax(182px,.9fr);align-items:center;justify-content:center;gap:clamp(14px,1.6vw,28px);width:100%;height:calc(100svh - 60px);min-height:0;padding:4px clamp(12px,2vw,36px) 6px}.side-rail{display:flex;width:100%;max-width:214px;min-width:0;flex-direction:column;justify-self:center;gap:16px}.dice-panel,.capture-tray{border:1px solid rgba(169,120,61,.58);background:#161613c2;box-shadow:inset 0 0 0 3px #241a169e,0 14px 32px #00000040;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dice-panel{padding:14px;border-radius:18px}.dice-panel__title,.capture-tray__heading{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px;letter-spacing:.12em}.dice-panel__title{justify-content:flex-start;gap:8px}.dice-panel__title svg{width:21px;height:21px;color:var(--bronze-light)}.dice-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.die{position:relative;display:flex;min-height:66px;align-items:center;justify-content:center;border:1px solid rgba(216,173,104,.66);border-radius:14px;box-shadow:inset 0 0 0 3px #0003,0 5px 14px #0000004d}.die span{position:absolute;top:5px;left:8px;color:#e8c98fb3;font-size:10px}.die strong{color:var(--ivory);font-family:"Noto Serif SC",serif;font-size:28px}.die--red{background:#7d241f}.die--black{background:#171716}.primary-action,.secondary-action{min-height:40px;padding:0 16px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.08em;transition:transform .15s ease,filter .15s ease,opacity .15s ease}.primary-action{width:100%;border:1px solid var(--bronze-light);color:#fff0d2;background:var(--red-dark);box-shadow:inset 0 0 0 2px #2409077a,0 6px 14px #00000040}.primary-action:hover:not(:disabled),.secondary-action:hover{filter:brightness(1.13);transform:translateY(-1px)}.primary-action:disabled{cursor:not-allowed;filter:grayscale(.4);opacity:.48}.secondary-action{border:1px solid rgba(169,120,61,.6);color:var(--paper);background:#24211c}.player-seal{display:flex;align-items:center;gap:11px;min-height:70px;padding:10px 12px;border:1px solid rgba(169,120,61,.42);border-radius:18px;background:#0a1618b8;transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}.player-seal.is-active{border-color:var(--bronze-light);box-shadow:0 0 24px #f0a33a2e;transform:translateY(-2px)}.player-seal.is-checked{border-color:var(--danger);box-shadow:0 0 24px #d5423238}.player-seal__mark{display:grid;flex:0 0 auto;width:46px;height:46px;place-items:center;border:2px solid var(--bronze);border-radius:50%;color:var(--ivory);background:#171716;box-shadow:inset 0 0 0 4px #0e0d0c,0 6px 12px #00000052;font-family:Ma Shan Zheng,STKaiti,serif;font-size:25px}.player-seal--red .player-seal__mark{background:var(--red-dark)}.player-seal__copy{display:flex;min-width:0;flex:1;flex-direction:column}.player-seal__copy strong{color:var(--paper);font-family:"Noto Serif SC",serif;font-size:14px}.player-seal__copy small{margin-top:2px;color:var(--muted);font-size:10px}.player-seal>svg{width:19px;height:19px;color:var(--gold)}.capture-tray{min-height:260px;padding:13px;border-radius:22px}.capture-tray__heading{padding:2px 2px 11px;border-bottom:1px solid rgba(169,120,61,.24)}.capture-tray__heading strong{color:var(--ivory);font-size:13px}.capture-tray__pieces{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:8px;min-height:205px;padding-top:12px}.capture-tray__empty{grid-column:1 / -1;align-self:center;justify-self:center;color:#a994768c;font-family:"Noto Serif SC",serif;font-size:11px;letter-spacing:.14em;writing-mode:vertical-rl}.mini-piece{display:grid;width:100%;max-width:48px;aspect-ratio:1;place-items:center;justify-self:center;border:2px solid var(--bronze);border-radius:50%;color:var(--ivory);background:#171716;box-shadow:inset 0 0 0 3px #0e0d0c,0 5px 9px #0000005c;font-family:Ma Shan Zheng,STKaiti,serif;font-size:clamp(17px,1.5vw,23px)}.mini-piece--red{background:var(--red-dark)}.board-column{display:flex;width:min(100%,calc((100svh - 142px)*1.0556));max-width:950px;min-width:0;flex-direction:column;align-items:center;justify-self:center}.board-column.is-result-review{width:min(100%,max(420px,calc((100svh - 208px)*1.0556)))}.board-notice{display:flex;width:100%;min-height:30px;align-items:center;justify-content:center;gap:9px;margin-bottom:5px;padding:4px 12px;overflow:hidden;border:1px solid rgba(169,120,61,.42);border-radius:999px;color:var(--muted);background:#0a1618c7;box-shadow:inset 0 0 0 1px #e8c98f0a,0 8px 20px #0000002e;font-size:12px;line-height:1.4;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.board-notice__label{flex:0 0 auto;color:var(--bronze-light);font-family:"Noto Serif SC",serif;font-weight:600;letter-spacing:.1em}.board-notice__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-notice.is-transient{border-color:#d8ad68b8;color:var(--paper);background:#30251beb;animation:board-notice-in .26s ease-out}.board-notice--warning{border-color:#d54232c7;background:#501914f0;box-shadow:inset 0 0 0 1px #ffd7af0d,0 8px 24px #d542322e}@keyframes board-notice-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.board-frame{position:relative;width:100%;aspect-ratio:19 / 18;overflow:hidden;border:1px solid rgba(216,173,104,.88);border-radius:clamp(12px,1.2vw,22px);background-color:var(--wood-dark);background-image:url(/chess/assets/board-walnut-texture.png);background-repeat:repeat;background-size:420px 420px;box-shadow:inset 0 0 0 5px #241a16b3,0 22px 52px #0000007a,0 0 0 5px #140d0a6b}.board-frame:before{position:absolute;z-index:2;top:5px;right:5px;bottom:5px;left:5px;border:1px solid rgba(169,120,61,.48);border-radius:inherit;content:"";pointer-events:none}.game-canvas,.game-canvas canvas{display:block;width:100%!important;height:100%!important}.game-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.game-canvas:focus-visible{outline:2px solid var(--bronze-light);outline-offset:-5px;box-shadow:inset 0 0 0 7px #f0a33a24}.game-canvas canvas{touch-action:none}.board-caption{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:28px;margin-top:5px;padding-inline:8px;overflow:hidden;color:var(--muted);font-size:clamp(12px,.8vw,14px);letter-spacing:.06em}.board-caption>span:first-child{flex:0 0 auto}.board-caption>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-caption__divider{width:4px;height:4px;border-radius:50%;background:var(--bronze)}.post-game-actions{display:grid;width:100%;min-height:58px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:6px;padding:8px 10px;border:1px solid rgba(169,120,61,.56);border-radius:15px;background:#0a1618e6;box-shadow:inset 0 0 0 1px #e8c98f0a,0 10px 24px #00000042}.post-game-actions__icon{width:30px;height:30px;color:var(--bronze-light);filter:drop-shadow(0 0 10px rgba(216,173,104,.22))}.post-game-actions__copy{display:flex;min-width:0;flex-direction:column;gap:2px;text-align:left}.post-game-actions__copy strong{color:var(--paper);font-family:"Noto Serif SC",serif;font-size:13px}.post-game-actions__copy small{overflow:hidden;color:var(--muted);font-size:10px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.post-game-actions__copy .post-game-actions__error{color:#efb2a8}.post-game-actions__buttons{display:flex;align-items:center;gap:7px}.post-game-actions__buttons .primary-action,.post-game-actions__buttons .secondary-action{display:inline-flex;width:auto;min-height:38px;align-items:center;justify-content:center;gap:6px;padding-inline:15px;white-space:nowrap}.post-game-actions__buttons svg{width:16px;height:16px}.modal-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:grid;padding:20px;place-items:center;background:#030a0cc7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.rules-modal,.confirm-modal,.result-modal,.dice-modal,.online-lobby,.online-pause,.undo-modal{width:min(100%,620px);border:1px solid var(--bronze);background:#171b19;box-shadow:inset 0 0 0 4px #2a211a,0 28px 80px #0000009e}.dice-backdrop{background:#030a0cd6}.dice-modal{position:relative;width:min(100%,460px);max-height:calc(100svh - 28px);overflow-y:auto;padding:32px;border-radius:24px;background-color:#171b19;background-image:url(/chess/assets/board-walnut-texture.png);background-size:420px 420px;background-blend-mode:multiply;text-align:center}.online-lobby-backdrop{background:#030a0cdb}.online-lobby,.online-pause{position:relative;width:min(100%,520px);max-height:calc(100svh - 28px);overflow-y:auto;padding:34px;border-radius:24px;background-color:#171b19;background-image:url(/chess/assets/board-walnut-texture.png);background-size:420px 420px;background-blend-mode:multiply;text-align:center}.online-lobby__icon{display:grid;width:58px;height:58px;margin:2px auto 12px;place-items:center;border:1px solid rgba(216,173,104,.62);border-radius:50%;color:var(--bronze-light);background:#070e0ec2;box-shadow:inset 0 0 0 4px #291d17b8,0 10px 26px #0000004d}.online-lobby__icon svg{width:30px;height:30px}.online-lobby h2,.online-pause h2{margin:7px 0 0;color:#f0e3c9;font-family:"Noto Serif SC",serif;font-size:27px;letter-spacing:.08em}.online-lobby>p,.online-pause>p{margin:10px auto 22px;color:var(--muted);font-size:12px;line-height:1.75}.room-code{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;padding:12px 14px;border:1px solid rgba(169,120,61,.34);border-radius:13px;background:#070e0e94;text-align:left}.room-code span,.share-link>span:first-child{color:var(--muted);font-size:10px;letter-spacing:.12em}.room-code strong{overflow:hidden;color:var(--ivory);font-family:ui-monospace,Cascadia Mono,monospace;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.share-link{display:grid;gap:7px;text-align:left}.share-link__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.share-link input{min-width:0;height:46px;padding:0 13px;border:1px solid rgba(169,120,61,.4);border-radius:12px;outline:none;color:#cfc0a6;background:#050b0cc2;font-size:11px}.share-link input:focus{border-color:var(--bronze-light)}.share-link button{display:inline-flex;min-width:112px;align-items:center;justify-content:center;gap:7px;padding:0 14px;border:1px solid var(--bronze-light);border-radius:12px;color:#fff0d2;background:var(--red-dark);cursor:pointer;font-size:12px}.share-link button svg{width:18px;height:18px}.online-lobby__waiting{display:inline-flex;align-items:center;gap:9px;margin-top:18px;color:#c5b598;font-size:11px}.online-lobby__pulse{width:8px;height:8px;border-radius:50%;background:var(--bronze-light);box-shadow:0 0 0 5px #d8ad681f;animation:lobby-pulse 1.4s ease-in-out infinite}@keyframes lobby-pulse{50%{opacity:.45;transform:scale(.76)}}.online-lobby__loading{display:block;margin-top:18px;color:var(--bronze-light);font-size:11px;letter-spacing:.12em}.online-lobby__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.online-pause{width:min(100%,410px)}.online-pause>svg{width:48px;height:48px;margin-bottom:8px;color:var(--bronze-light)}.online-pause .secondary-action{width:100%;min-height:46px}.dice-modal__back{position:absolute;top:16px;left:16px;display:grid;width:38px;height:38px;padding:0;place-items:center;border:1px solid rgba(169,120,61,.44);border-radius:50%;color:var(--paper);background:#080e0eb8;cursor:pointer}.dice-modal__back:hover{border-color:var(--bronze-light)}.dice-modal__back svg{width:19px;height:19px}.dice-modal__icon{width:48px;height:48px;margin-bottom:8px;color:var(--bronze-light);filter:drop-shadow(0 0 12px rgba(216,173,104,.22))}.dice-modal h2{margin:7px 0 0;color:#f0e3c9;font-family:"Noto Serif SC",serif;font-size:26px;letter-spacing:.08em}.dice-modal>p{margin:10px auto 0;color:var(--muted);font-size:12px;line-height:1.7}.dice-pair--modal{gap:18px;margin:24px 0 14px}.dice-pair--modal .die{min-height:92px}.dice-pair--modal .die span{top:8px;left:11px;font-size:11px}.dice-pair--modal .die strong{font-size:38px}.die.is-rolling{animation:dice-rattle .18s ease-in-out infinite alternate}@keyframes dice-rattle{0%{transform:rotate(-1.5deg) translateY(-1px)}to{transform:rotate(1.5deg) translateY(1px)}}.dice-modal__result{min-height:42px;margin-bottom:14px;padding:10px 12px;border:1px solid rgba(169,120,61,.28);border-radius:13px;color:var(--muted);background:#070e0e85;font-size:12px;line-height:1.6}.dice-modal__result.is-tie{border-color:#d542328a;color:#e5b39f}.dice-modal__result.is-resolved{border-color:#d8ad689e;color:var(--ivory)}.dice-modal__progress{display:block;margin-top:10px;color:var(--muted);font-size:10px;letter-spacing:.1em}.rules-modal{max-height:min(780px,calc(100svh - 40px));overflow-y:auto;padding:clamp(20px,3vw,34px);border-radius:24px}.rules-modal header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.eyebrow{color:var(--bronze-light);font-size:10px;letter-spacing:.22em}.rules-modal h2,.confirm-modal h2,.result-modal h2{margin:5px 0 0;color:#f0e3c9;font-family:"Noto Serif SC",serif;letter-spacing:.08em}.rules-modal h2{font-size:24px}.rules-list{display:grid;gap:12px;margin:24px 0;padding-left:24px;color:#c9bca5;font-size:13px;line-height:1.8}.rules-list li::marker{color:var(--bronze-light);font-family:"Noto Serif SC",serif;font-weight:700}.rules-list strong{color:var(--paper)}.primary-action--wide{min-height:46px}.confirm-modal{width:min(100%,410px);padding:30px;border-radius:22px;text-align:center}.result-modal{position:relative;width:min(100%,430px);overflow:hidden;padding:34px;border-radius:24px;text-align:center}.result-modal:before{position:absolute;inset:0 0 auto;height:4px;background:var(--bronze-light);opacity:.68;content:""}.result-modal__icon{width:52px;height:52px;margin-bottom:9px;color:var(--bronze-light);filter:drop-shadow(0 0 14px rgba(216,173,104,.28))}.result-modal h2{margin-top:7px;font-size:28px}.result-modal p{margin:10px 0 22px;color:var(--paper);font-size:14px}.result-modal__next{display:grid;gap:5px;margin-bottom:18px;padding:14px 16px;border:1px solid rgba(180,135,72,.34);border-radius:14px;background:#070e0e85;text-align:left}.result-modal__next strong{color:var(--bronze-light);font-size:12px;letter-spacing:.12em}.result-modal__next span{color:var(--muted);font-size:12px;line-height:1.65}.result-modal p.result-modal__error{margin:-3px 0 13px;padding:9px 12px;border:1px solid rgba(213,66,50,.42);border-radius:10px;color:#efb2a8;background:#5d18143d;font-size:12px;line-height:1.55}.result-modal .primary-action,.result-modal .secondary-action{display:inline-flex;align-items:center;justify-content:center;gap:8px}.result-modal__actions{display:grid;gap:10px}.result-modal__actions .secondary-action{width:100%;min-height:46px}.result-modal__actions svg{width:18px;height:18px}.qa-trigger{position:fixed;z-index:45;bottom:8px;left:8px}.confirm-modal>svg{width:44px;height:44px;color:var(--bronze-light)}.confirm-modal h2{font-size:22px}.confirm-modal p{margin:10px 0 24px;color:var(--muted);font-size:13px}.confirm-modal__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.undo-modal{width:min(100%,450px)}.undo-modal>.eyebrow{display:block;margin:8px 0 4px}.undo-modal__notice{margin:-8px 0 20px;padding:12px 14px;border:1px solid rgba(180,135,72,.34);border-radius:12px;color:var(--muted);background:#070e0e85;font-size:12px;line-height:1.65;text-align:left}.undo-modal p.undo-modal__error{margin:-8px 0 14px;color:#efb2a8;font-size:12px}.confirm-modal__actions.is-single{grid-template-columns:1fr}@media(max-height:660px)and (min-width:681px){.home-hero{padding-block:22px}.home-hero h1{font-size:34px}.mode-grid{margin-top:22px}.mode-card--ai,.mode-card--online{min-height:270px;padding:22px}.mode-card__copy{margin-top:14px}.difficulty-grid{padding-top:14px}}@media(max-width:1240px){.game-layout{grid-template-columns:minmax(160px,.72fr) minmax(500px,760px) minmax(160px,.72fr);gap:12px;padding-inline:12px}.side-rail{gap:10px}.capture-tray{min-height:220px;padding:10px}.capture-tray__pieces{min-height:168px;gap:5px}}@media(max-width:980px),(orientation:portrait){body{background-position:center top}.topbar{position:sticky;top:0;grid-template-columns:minmax(150px,1fr) minmax(240px,1.6fr) auto}.game-layout{display:flex;height:auto;min-height:0;flex-direction:column;gap:10px;padding:10px 8px 24px}.board-column{order:2;width:min(96vw,760px)}.board-column.is-result-review{width:min(96vw,760px)}.side-rail{display:grid;width:min(96vw,760px);max-width:none;grid-template-columns:minmax(170px,.8fr) minmax(280px,1.5fr);align-items:stretch;gap:8px;padding-top:0}.side-rail--left{order:1}.side-rail--right{order:3}.dice-panel{display:grid;grid-column:1 / -1;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px}.dice-panel__title span{display:none}.dice-pair{margin:0}.die{min-height:48px}.die strong{font-size:22px}.dice-panel .primary-action{width:auto}.player-seal{height:100%;min-height:64px}.capture-tray{display:grid;min-height:64px;grid-template-columns:auto 1fr;align-items:center;gap:10px;padding:9px 12px;border-radius:16px}.capture-tray__heading{display:flex;width:60px;flex-direction:column;gap:2px;padding:0 8px 0 0;border-right:1px solid rgba(169,120,61,.24);border-bottom:0}.capture-tray__pieces{display:flex;min-height:0;align-items:center;gap:4px;overflow-x:auto;padding:0}.capture-tray__empty{writing-mode:horizontal-tb}.mini-piece{flex:0 0 38px;width:38px}}@media(max-width:680px){.post-game-actions{grid-template-columns:auto minmax(0,1fr)}.post-game-actions__buttons{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr}.post-game-actions__buttons .primary-action,.post-game-actions__buttons .secondary-action{width:100%;padding-inline:10px}.home-topbar{min-height:62px;padding:8px 12px}.home-rule-button{width:42px;padding:0;justify-content:center;font-size:0}.home-hero{width:min(calc(100% - 20px),430px);padding:28px 0}.home-hero__eyebrow{font-size:10px;letter-spacing:.24em}.home-hero h1{margin-top:9px;font-size:clamp(28px,9vw,38px);letter-spacing:.08em}.home-hero>p{margin-top:11px;padding-inline:10px;font-size:12px}.mode-grid{grid-template-columns:1fr;gap:12px;margin-top:22px}.mode-card--ai,.mode-card--online{min-height:0;padding:21px;border-radius:20px}.mode-card--local-compact{grid-column:auto;min-height:72px;padding:12px 15px}.mode-card--local-compact .mode-card__copy{margin:0}.mode-card__compact-action{font-size:0}.mode-card__compact-action:after{content:"→";font-size:18px}.mode-card__copy{margin-top:14px}.mode-card__copy h2,.mode-card__title{font-size:21px}.difficulty-grid{padding-top:16px}.mode-card__action{margin-top:20px}.home-footer{padding-top:2px;font-size:9px}.modal-backdrop{padding:12px}.dice-modal,.online-lobby,.online-pause{padding:28px 20px 24px;border-radius:20px}.share-link__row{grid-template-columns:1fr}.share-link button{min-height:44px}.dice-modal__icon{width:42px;height:42px}.dice-modal h2{font-size:23px}.dice-pair--modal{gap:12px;margin-top:20px}.dice-pair--modal .die{min-height:78px}.dice-pair--modal .die strong{font-size:32px}.topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;min-height:64px;padding:8px 10px}.brand-block__seal{width:40px;height:40px}.brand-block>span:last-child{display:none}.turn-banner{gap:9px;padding:7px 12px}.turn-banner strong{font-size:12px}.topbar__actions{gap:4px}.icon-button{width:38px;height:38px}.topbar__actions .icon-button:first-child{display:none}.side-rail{grid-template-columns:1fr 1fr}.dice-panel,.side-rail--left .capture-tray,.side-rail--right .capture-tray{grid-column:1 / -1}.board-caption{gap:7px;font-size:12px}}@media(max-width:420px){.post-game-actions__buttons{grid-template-columns:1fr}.home-topbar .brand-block strong{font-size:15px}.home-topbar .brand-block small{font-size:9px}.difficulty-grid{grid-template-columns:1fr}.difficulty-grid button{min-height:68px}.mode-card--local-compact .mode-card__copy>span{display:none}.online-lobby__actions{grid-template-columns:1fr}.result-modal{padding:28px 22px}.board-notice__label,.turn-banner__dot{display:none}.topbar__actions .icon-button:nth-child(2){display:none}.dice-panel{grid-template-columns:auto 1fr}.dice-panel .primary-action{grid-column:1 / -1;width:100%}.player-seal__mark{width:40px;height:40px}.capture-tray__pieces{scrollbar-width:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
