@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono.woff2) format("woff2");font-style:normal;font-weight:100 800;font-display:swap}:root{--bg: #242526;--surface: #2E3032;--surface-h: #393C3F;--panel: var(--surface);--card: var(--surface);--bg-board: var(--bg);--surface-a: var(--surface-h);--text: #F4F5F5;--text-2: #D1D3D4;--text-3: #B8BBBD;--text-4: #A5A8AA;--green: #81B64C;--green-d: #629924;--green-bg: rgba(129, 182, 76, .14);--red: #FA412D;--red-d: #8f2218;--red-bg: rgba(250, 65, 45, .1);--amber: #E8A93E;--amber-d: #6f4517;--amber-bg: rgba(232, 169, 62, .12);--blue: #5DADE2;--blue-bg: rgba(93, 173, 226, .1);--cyan: var(--blue);--border: rgba(255, 255, 255, .08);--border-active: rgba(129, 182, 76, .42);--b1: rgba(255, 255, 255, .08);--b2: rgba(255, 255, 255, .15);--b3: rgba(255, 255, 255, .25);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: .25rem;--r: .5rem;--r-md: .625rem;--r-lg: .75rem;--r-xl: 1rem;--sh: 0 18px 50px rgba(0, 0, 0, .22);--sh-lg: 0 30px 90px rgba(0, 0, 0, .35);--f-sans: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--f-display: "Bricolage Grotesque", var(--f-sans);--f-mono: "JetBrains Mono", monospace;--fs-xl: 1.5rem;--fs-lg: 1.1rem;--fs-md: .95rem;--fs-sm: .85rem;--fs-xs: .78rem;--fs-2xs: .68rem;--ease: cubic-bezier(.22, .61, .36, 1);--dur: .15s;--header-h: calc(52px + env(safe-area-inset-top)) ;--panel-bg: #27292B;--board-shell: #27292B;--board-home: #303336;--board-attack: #393C3F;--board-divider: #1D1F21;--board-divider-line: rgba(255, 255, 255, .12);--board-label-contrast: #9DA1A4;--target-bg: rgba(29, 31, 33, .84);--control-bg: rgba(29, 31, 33, .84)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{height:100%}body{font-family:var(--f-sans);font-size:var(--fs-md);font-weight:500;line-height:1.5;color:var(--text);background:var(--bg);min-height:100dvh;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:has(.home:not(.hidden)){overflow:hidden}.skip-to-main{position:absolute;left:16px;top:-64px;z-index:1000;padding:10px 14px;border-radius:var(--r);background:var(--green);color:#1c3700;font-size:var(--fs-xs);font-weight:800;text-decoration:none;transition:top var(--dur)}.skip-to-main:focus{top:16px}button{font-family:inherit;font-weight:600;border:none;background:none;cursor:pointer;color:inherit;line-height:1;touch-action:manipulation}.op-btn,.diff-btn,.opt-btn,.timer-preset,.move-preset,.reaction-btn{touch-action:manipulation}button:disabled{cursor:default;opacity:.3}*:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:var(--r-sm)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-4);border-radius:3px}::selection{background:var(--green);color:#fff}[hidden]{display:none!important}kbd{display:inline-block;padding:1px 5px;font-family:var(--f-sans);font-size:.65rem;font-weight:600;color:var(--text-3);background:var(--surface);border:1px solid var(--b2);border-radius:var(--r-sm);min-width:16px;text-align:center;line-height:1.4;vertical-align:middle}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%,6px);padding:6px 8px;border:1px solid var(--b2);border-radius:var(--r-sm);background:var(--panel);color:var(--text);font-size:var(--fs-2xs);font-weight:700;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity var(--dur),transform var(--dur),visibility var(--dur);box-shadow:0 8px 24px #0000002e}[data-tooltip]:focus-visible:after{opacity:1;visibility:visible;transform:translate(-50%)}@media(hover:hover)and (pointer:fine){[data-tooltip]:hover:after{opacity:1;visibility:visible;transform:translate(-50%)}}.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--b1);border-radius:var(--r);color:var(--text-3);background:transparent;flex-shrink:0}@media(hover:hover)and (pointer:fine){.nav-toggle:hover{color:var(--text);background:var(--surface)}}@keyframes capture-flash{0%{opacity:1}10%{opacity:.6}20%{opacity:1}30%{opacity:.8}to{opacity:1}}.flash{animation:capture-flash .25s linear}.home{transition:opacity .35s var(--ease),transform .35s var(--ease)}.home.fade-out{opacity:0;transform:scale(.97);pointer-events:none}.home.fade-in,.game-layout.entering{animation:fadeSlideIn .4s var(--ease) forwards}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeSlideOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}.tab-panel{display:none;opacity:0;transform:translateY(6px)}.tab-panel.active{display:block;animation:tabFadeIn .25s var(--ease) forwards}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dieCaptured{0%{transform:scale(1);opacity:1;filter:none}30%{transform:scale(1.15);opacity:.9;filter:brightness(1.8)}to{transform:scale(0);opacity:0;filter:grayscale(1)}}.die.capture-anim{animation:dieCaptured .45s var(--ease) forwards;pointer-events:none}@keyframes boardShake{0%,to{transform:translate(0)}15%{transform:translate(-7px) rotate(-.5deg)}30%{transform:translate(6px) rotate(.4deg)}45%{transform:translate(-4px)}60%{transform:translate(3px)}75%{transform:translate(-2px)}}.board.shaking{animation:boardShake .45s ease}@keyframes confettiFall{0%{transform:translate(0) rotate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(var(--rot)) scale(.4);opacity:0}}.confetti-piece{position:fixed;width:8px;height:8px;border-radius:2px;pointer-events:none;z-index:9999;animation:confettiFall var(--dur,1.2s) ease-out forwards}@keyframes emojiFloat{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-90px) scale(1.5)}}.emoji-float{position:fixed;font-size:1.8rem;pointer-events:none;z-index:9998;animation:emojiFloat 1.4s ease-out forwards}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.modal-card.celebrating .modal-result{animation:celebrateBounce .6s var(--ease)}@keyframes celebrateBounce{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}button:active:not(:disabled){transform:scale(.97)}.play-btn:active:not(:disabled),.action-btn--attack:active:not(:disabled){transform:translateY(1px) scale(.98)}.site-nav{background:var(--panel);border-bottom:1px solid var(--b1);padding:0 24px;display:flex;align-items:center;gap:16px;height:52px}.nav-logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1rem;color:var(--text);text-decoration:none}.nav-logo svg{flex-shrink:0}.landing-nav-links{display:flex;gap:20px;margin-left:auto}.landing-nav-links a{font-size:var(--fs-sm);font-weight:600;color:var(--text-3);text-decoration:none;transition:color var(--dur)}@media(hover:hover)and (pointer:fine){.landing-nav-links a:hover{color:var(--green)}}.landing-footer{max-width:960px;margin:48px auto 0;padding:20px 24px;border-top:1px solid var(--b1);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;font-size:var(--fs-xs);color:var(--text-4)}.landing-footer .footer-links{display:flex;gap:18px}.landing-footer .footer-links a{color:var(--text-4);text-decoration:none}@media(hover:hover)and (pointer:fine){.landing-footer .footer-links a:hover{color:var(--green)}}@media(max-width:640px){.site-nav{position:relative;flex-wrap:wrap;align-items:center;height:auto;min-height:52px;padding:8px 16px;gap:12px}.site-nav .nav-toggle{display:inline-flex;margin-left:auto}.site-nav .landing-nav-links{display:none;width:100%;margin-left:0;flex-direction:column;align-items:stretch;gap:8px;padding:8px 0 4px}.site-nav.nav-open .landing-nav-links{display:flex}}.landing-info{background:var(--bg);border-top:1px solid var(--b1);padding:64px 24px 80px}.landing-container{max-width:960px;margin:0 auto}.landing-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-bottom:48px}@media(max-width:640px){.landing-grid{grid-template-columns:1fr;gap:32px}}.landing-col h2{font-family:var(--f-sans);font-size:1.1rem;font-weight:800;color:var(--text);margin-bottom:10px}.landing-col p{color:var(--text-2);font-size:var(--fs-sm);line-height:1.75;margin-bottom:10px}.landing-col p strong{color:var(--text)}.landing-link{display:inline-block;color:var(--green);font-size:var(--fs-sm);font-weight:600;text-decoration:none;margin-top:6px}@media(hover:hover)and (pointer:fine){.landing-link:hover{text-decoration:underline}}.landing-feats{display:grid;grid-template-columns:minmax(220px,.78fr) minmax(0,1.22fr);gap:clamp(24px,5vw,64px);padding:clamp(24px,4vw,44px);border:1px solid var(--b1);margin-bottom:24px;background:var(--panel-bg)}.landing-feat{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:12px;padding:16px 0;border-top:1px solid var(--b1)}.landing-feat strong{display:block;grid-column:2;font-family:var(--f-display);font-size:var(--fs-sm);font-weight:700;color:var(--text);margin-bottom:3px}.landing-feat span{grid-column:2;font-size:var(--fs-xs);color:var(--text-3);line-height:1.5}.landing-dice-core{display:grid;align-content:center;justify-items:center;gap:18px;color:var(--amber)}.landing-die-mark{width:min(100%,190px);aspect-ratio:1;transform:rotate(-6deg)}.landing-dice-equation{font-family:var(--f-mono);color:var(--text-3);font-size:var(--fs-xs);text-align:center}.landing-dice-notes{display:grid;align-content:center}.landing-feat:nth-child(2n){margin-left:clamp(16px,4vw,54px)}.landing-feat:before{grid-column:1;grid-row:1 / span 2;align-self:start;font-family:var(--f-display);font-size:var(--fs-xs);font-weight:800;color:var(--amber);text-align:center}.landing-feat:nth-child(1):before{content:"D6"}.landing-feat:nth-child(2):before{content:"="}.landing-feat:nth-child(3):before{content:"AI"}.landing-feat:nth-child(4):before{content:"04"}.landing-pages{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.landing-page-link{display:inline-block;padding:8px 16px;background:var(--card);border:1px solid var(--b1);border-radius:var(--r);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;text-decoration:none;transition:border-color var(--dur),color var(--dur)}@media(hover:hover)and (pointer:fine){.landing-page-link:hover{border-color:var(--green);color:var(--green)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:768px),(pointer:coarse){.op-btn,.timer-preset,.move-preset,.reaction-btn,.hdr-btn,.nav-toggle,.history-toggle-btn{min-width:44px;min-height:44px}button kbd{display:none}}.site-header{position:fixed;top:0;left:0;right:0;height:var(--header-h);display:grid;grid-template-columns:auto 1fr auto;align-items:center;padding:env(safe-area-inset-top) max(var(--sp-5),env(safe-area-inset-right)) 0 max(var(--sp-5),env(safe-area-inset-left));z-index:130;border-bottom:1px solid var(--b1);background:#242526f0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.site-brand{display:flex;align-items:center;gap:var(--sp-2);min-width:44px;min-height:44px;text-decoration:none;color:var(--text)}.site-brand-name{font-family:var(--f-display);font-weight:800;font-size:var(--fs-md);letter-spacing:0;margin:0}.site-header-nav{justify-self:center;display:flex;align-items:center;gap:var(--sp-1)}.hdr-nav-btn{display:flex;align-items:center;gap:var(--sp-1);padding:6px 12px;border-radius:var(--r);color:var(--text-3);font-size:var(--fs-xs);font-weight:600;text-decoration:none;transition:background var(--dur),color var(--dur)}@media(hover:hover)and (pointer:fine){.hdr-nav-btn:hover{background:var(--surface);color:var(--text)}}.site-header-actions{display:flex;align-items:center;gap:var(--sp-1);justify-self:end}.site-header .nav-toggle{display:none}.hdr-btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-1);min-width:44px;min-height:44px;padding:6px 10px;border-radius:var(--r);color:var(--text-3);font-size:var(--fs-xs);font-weight:600;transition:background var(--dur),color var(--dur)}@media(hover:hover)and (pointer:fine){.hdr-btn:hover{background:var(--surface);color:var(--text)}}.hdr-dropdown{position:relative}.hdr-dropdown-menu{display:none;position:absolute;top:calc(100% + 6px);right:0;min-width:200px;background:var(--panel);border:1px solid var(--b1);border-radius:var(--r);box-shadow:0 12px 32px #00000047;z-index:100;padding:var(--sp-2) 0}.hdr-dropdown.open .hdr-dropdown-menu{display:block}.hdr-dropdown-item{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--text-2)}.hdr-dropdown-label{font-weight:600;color:var(--text-3);font-size:var(--fs-xs)}.hdr-dropdown-toggle{padding:3px 10px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--b1);color:var(--text);font-size:var(--fs-xs);font-weight:600;cursor:pointer;transition:background var(--dur),border-color var(--dur)}@media(hover:hover)and (pointer:fine){.hdr-dropdown-toggle:hover{background:var(--surface-h);border-color:var(--b2)}}.hdr-dropdown-divider{height:1px;background:var(--b1);margin:var(--sp-1) 0}.hdr-dropdown-btn{width:100%;text-align:left;font-weight:600;color:var(--text-2);cursor:pointer;border-radius:0;transition:background var(--dur),color var(--dur)}@media(hover:hover)and (pointer:fine){.hdr-dropdown-btn:hover{background:var(--surface);color:var(--text)}}.hdr-volume-slider{width:100px;height:4px;-webkit-appearance:none;appearance:none;background:var(--surface);border-radius:2px;outline:none;cursor:pointer}.hdr-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--green);border:2px solid var(--bg);cursor:pointer}.hdr-volume-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--green);border:2px solid var(--bg);cursor:pointer}.hdr-btn--account{border:1px solid var(--b1);color:var(--text-2)}@media(hover:hover)and (pointer:fine){.hdr-btn--account:hover{border-color:var(--b2);color:var(--text)}}.hdr-avatar{width:22px;height:22px;border-radius:50%;background:var(--green);color:#1c3700;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.hdr-name{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hdr-btn--account[data-auth-state=guest]{padding-inline:12px}.hdr-btn--account[data-auth-state=guest] .hdr-avatar{display:none}.hdr-btn--account[data-auth-state=guest] .hdr-name{max-width:220px;color:var(--text)}.home-main{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(24px,5vw,80px);width:100%;flex:1;min-height:0;max-width:1100px;margin:0 auto;padding:calc(var(--header-h) + 32px) clamp(16px,4vw,40px) var(--sp-6);box-sizing:border-box}.home-main>.home-hero{display:flex;flex-direction:column;gap:var(--sp-4);background:transparent;border:none;box-shadow:none;min-height:unset;padding:0;position:relative;overflow:visible}.home-main>.home-hero:before,.home-main>.home-hero:after{display:none}.home-main .home-hero-brand{display:flex;align-items:center;gap:var(--sp-3)}.home-hero-title{font-family:var(--f-display);font-size:clamp(1.8rem,4vw,2.4rem);font-weight:800;letter-spacing:0;margin:0;line-height:1.1}.home-hero-sub{font-size:var(--fs-xs);color:var(--text-3);font-weight:600;margin:2px 0 0}.home-hero-desc{font-size:var(--fs-sm);color:var(--text-2);line-height:1.6;margin:0}.home-hero-desc strong{color:var(--text)}.home-hero-features{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--sp-1)}.home-hero-features li{font-size:var(--fs-sm);color:var(--text-2);padding-left:var(--sp-4);position:relative}.home-hero-features li:before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--green)}.home-hero-badges{display:flex;gap:var(--sp-2);flex-wrap:wrap}.home-badge{font-size:var(--fs-2xs);font-weight:600;color:var(--text-3);padding:var(--sp-1) var(--sp-2);border:1px solid var(--b1);border-radius:var(--r-sm)}.home-badge--green{color:var(--green);border-color:var(--green)}.home-hero-credit{font-size:var(--fs-2xs);color:var(--text-4)}.home-hero-credit a{color:var(--text-4);text-decoration:none;transition:color var(--dur)}@media(hover:hover)and (pointer:fine){.home-hero-credit a:hover{color:var(--text-3)}}.home-dice-row{display:flex;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--b1);border-radius:var(--r);background:var(--surface);pointer-events:none;user-select:none;justify-content:center}.home-dice-row .hero-die{display:flex;flex-direction:column;align-items:center;gap:4px}.home-dice-row .die-label{font-size:.6rem;color:var(--text-4);font-family:var(--f-mono);font-weight:600}.home-form{width:100%;max-width:460px;display:flex;flex-direction:column;gap:var(--sp-4);background:var(--surface);border:1px solid var(--b1);border-radius:var(--r-lg);padding:var(--sp-5)}.home-route-card{display:flex;flex-direction:column;gap:var(--sp-3)}.home-route-title{font-family:var(--f-display);margin:0;font-size:clamp(1.4rem,2vw,1.85rem);line-height:1.08}.home-route-copy,.home-route-note{margin:0;color:var(--text-2);line-height:1.55;font-size:var(--fs-sm)}.home-route-note{color:var(--text-3)}.home-route-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.home-route-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-decoration:none}.home-route-btn--secondary{color:var(--text)}.play-page-only{display:flex;flex-direction:column;gap:var(--sp-4)}.play-stack,#difficultySection{display:flex;flex-direction:column;gap:var(--sp-2)}.play-page-badges{margin-top:0}.mode-row{display:flex;gap:var(--sp-2)}.diff-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}.diff-row .diff-btn{justify-content:flex-start;gap:var(--sp-2);font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-3)}.diff-row .diff-btn .diff-dot{flex-shrink:0}.timers-inline{display:flex;flex-direction:column;gap:var(--sp-3)}.timer-inline-group{display:flex;align-items:center;gap:var(--sp-2);row-gap:var(--sp-2);flex-wrap:wrap}.timer-inline-label{font-size:var(--fs-xs);font-weight:700;color:var(--text-3);min-width:36px}.timer-presets{display:flex;gap:4px}.site-footer a{color:var(--text-4);text-decoration:none;transition:color var(--dur)}@media(hover:hover)and (pointer:fine){.site-footer a:hover{color:var(--text-3)}}.drawer-overlay{position:fixed;inset:0;background:#0006;z-index:150;opacity:0;pointer-events:none;transition:opacity .25s var(--ease)}.drawer-overlay.active{opacity:1;pointer-events:auto}.account-drawer{position:fixed;top:0;right:0;bottom:0;width:min(360px,100vw);background:var(--surface);border-left:1px solid var(--b1);z-index:160;display:flex;flex-direction:column;transform:translate(100%);transition:transform .28s var(--ease);overflow:hidden}.account-drawer.open{transform:translate(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--b1);flex-shrink:0}.drawer-title{font-family:var(--f-display);font-size:var(--fs-md);font-weight:700}.drawer-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--text-3);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.drawer-close:hover{color:var(--text);background:var(--surface-h)}}.drawer-body{flex:1;overflow-y:auto;padding:var(--sp-4) var(--sp-5)}.lb-modal-overlay{position:fixed;inset:0;background:#0009;z-index:200;display:none;align-items:center;justify-content:center;padding:var(--sp-4)}.lb-modal-overlay.active{display:flex}.lb-modal{background:var(--panel);border:1px solid var(--b1);border-radius:var(--r-lg);max-width:480px;width:100%;max-height:calc(100dvh - var(--sp-8));display:flex;flex-direction:column;overflow:hidden}.lb-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--b1);flex-shrink:0}.lb-modal-title{font-family:var(--f-display);display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:700;margin:0;color:var(--text)}.lb-modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--text-3);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.lb-modal-close:hover{color:var(--text);background:var(--surface-h)}}.lb-modal-filter{padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--b1);flex-shrink:0}.lb-country-select{width:100%;cursor:pointer}.lb-modal-body{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-5) var(--sp-5)}.lb-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm)}.lb-row:nth-child(odd){background:var(--surface)}.lb-row.lb-me{border:1px solid var(--green);background:var(--green-bg)}.lb-rank{width:28px;font-family:var(--f-mono);font-weight:700;color:var(--text-3);text-align:center;flex-shrink:0}.lb-name{flex:1;font-weight:600;color:var(--text)}.lb-country{font-size:var(--fs-2xs);color:var(--text-4);flex-shrink:0}.lb-elo{font-family:var(--f-mono);font-weight:700;color:var(--green);flex-shrink:0;min-width:48px;text-align:right}.lb-record{font-size:var(--fs-2xs);color:var(--text-3);flex-shrink:0;min-width:56px;text-align:right}.drawer-section{margin-bottom:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--b1)}.drawer-section:last-of-type{border-bottom:none}.profile-country-row{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.profile-country-row .profile-username-label{min-width:70px}.profile-country-select{flex:1;cursor:pointer}@media(max-width:860px){.home-main{grid-template-columns:1fr;gap:var(--sp-6);padding-left:var(--sp-4);padding-right:var(--sp-4)}.home-main>.home-hero{text-align:left}.home-form{max-width:100%}}@media(max-width:768px){.home-main>.home-hero{display:flex}}@media(max-width:640px){.site-header{grid-template-columns:auto auto 1fr auto;gap:var(--sp-2);padding:0 var(--sp-3)}.site-header .nav-toggle{display:inline-flex}.site-header-nav{display:none;position:absolute;top:calc(100% + 8px);left:var(--sp-3);right:var(--sp-3);width:auto;justify-self:stretch;z-index:120;flex-direction:column;align-items:stretch;gap:8px;padding:var(--sp-3);border:1px solid var(--b1);border-radius:var(--r-lg);background:var(--panel);box-shadow:0 18px 48px #00000038;max-height:calc(100dvh - var(--header-h) - 24px);overflow-y:auto}.site-header.nav-open .site-header-nav{display:flex}.hdr-nav-btn{justify-content:flex-start;min-height:44px;padding:10px 12px;font-size:var(--fs-sm);gap:var(--sp-2)}.site-header-actions{gap:6px}.site-header-actions .leaderboard-pill,.site-header-actions .hdr-name{display:none}.site-header-actions .hdr-btn--account{padding-right:8px}.site-header-actions .hdr-btn--account[data-auth-state=guest]{padding-right:10px;padding-left:10px}.site-header-actions .hdr-btn--account[data-auth-state=guest] .hdr-name{display:block;max-width:132px;white-space:normal;text-align:right;line-height:1.15;font-size:.68rem}.site-header-actions .hdr-btn--account[data-auth-state=guest] .hdr-avatar{display:none}.lb-modal{max-width:100%;border-radius:var(--r)}}@media(max-width:480px){.site-brand-name,.home-dice-row{display:none}.mode-row{flex-wrap:wrap}}.home{position:fixed;inset:0;background:var(--bg);z-index:100;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;padding-top:0}.home.hidden{display:none}.home-card{background:var(--panel);border:1px solid var(--b1);border-radius:var(--r-lg);padding:var(--sp-6) var(--sp-6) var(--sp-4);max-width:480px;width:100%;position:relative;z-index:1;max-height:calc(100dvh - var(--sp-8));overflow-y:auto}.home-brand{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}.home-title{font-family:var(--f-display);font-size:var(--fs-xl);font-weight:800}.home-sub{font-size:var(--fs-xs);color:var(--text-3)}.home-tabs{display:flex;gap:2px;background:var(--surface);border-radius:var(--r);padding:2px;margin-bottom:var(--sp-5)}.home-tab{flex:1;padding:var(--sp-2);border-radius:6px;font-size:var(--fs-sm);font-weight:600;color:var(--text-3);transition:all var(--dur) var(--ease);text-align:center}@media(hover:hover)and (pointer:fine){.home-tab:hover{color:var(--text-2)}}.home-tab.active{background:var(--card);color:var(--text);border:1px solid var(--border-active)}.tab-panel{display:none}.tab-panel.active{display:block}.home-form .field{margin-bottom:0}.field-label{display:block;font-size:var(--fs-xs);font-weight:700;color:var(--text-3);margin-bottom:var(--sp-2)}.field-input{width:100%;padding:var(--sp-2) var(--sp-3);background:var(--bg);border:1px solid var(--b1);border-radius:var(--r);color:var(--text);font-family:var(--f-sans);font-size:var(--fs-md);font-weight:600;outline:none;transition:border-color var(--dur)}.field-input:focus{border-color:var(--green)}.field-input::placeholder{color:var(--text-4)}.field-row{display:flex;gap:var(--sp-2)}.opt-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface);border:1px solid var(--b1);border-radius:var(--r);font-size:var(--fs-sm);color:var(--text-3);transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.opt-btn:hover{background:var(--surface-h)}}.opt-btn.selected{border-color:var(--green);color:var(--text);background:var(--green-bg)}.diff-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}.diff-btn{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--b1);border-radius:var(--r);font-size:var(--fs-sm);color:var(--text-3);transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.diff-btn:hover{background:var(--surface-h)}}.diff-btn.selected{border-color:var(--green);color:var(--text);background:var(--green-bg)}.diff-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.diff-text{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0}.diff-hint{font-size:var(--fs-2xs);color:var(--text-4);font-weight:500;white-space:nowrap}.sound-toggle{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--b1);border-radius:var(--r);font-size:var(--fs-sm);color:var(--text-2);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.sound-toggle:hover{background:var(--surface-h)}}.home-form .home-actions{display:flex;gap:var(--sp-2);margin-top:0;flex-wrap:wrap;position:static;background:transparent;border-top:none;min-height:unset;padding:0}.home-form .home-actions .play-btn{flex:1;min-width:120px}.home-form .home-actions .quick-play-btn{flex:0 0 auto;background:transparent;border:1px solid var(--b2);color:var(--text-2)}.home-form .home-actions .settings-btn{flex:0 0 auto;background:transparent;border:1px solid var(--b1);color:var(--text-3)}.play-btn{flex:1;padding:var(--sp-4) var(--sp-6);background:var(--green);color:#1c3700;font-size:var(--fs-lg);font-weight:800;border-radius:var(--r);display:flex;align-items:center;justify-content:center;gap:var(--sp-2);transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.play-btn:hover{background:var(--green-d);color:#fff}}.play-btn:active{transform:translateY(1px)}.quick-play-btn{padding:var(--sp-3) var(--sp-4);background:transparent;border:1px solid var(--text);border-radius:var(--r);font-size:var(--fs-sm);font-weight:600;color:var(--text-2);display:flex;align-items:center;gap:var(--sp-1);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.quick-play-btn:hover{background:var(--surface-h);color:var(--text)}}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-2);margin-bottom:var(--sp-4)}.stat-card{background:var(--bg);border:1px solid var(--b1);border-radius:var(--r);padding:var(--sp-3)}.stat-value{font-family:var(--f-mono);font-size:var(--fs-xl);font-weight:800;color:var(--text);line-height:1.2}.stat-label{font-size:var(--fs-2xs);font-weight:600;color:var(--text-4);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}.stat-card.wide{grid-column:1/-1}.stat-card--hero{background:var(--card);border-color:var(--border-active);padding:var(--sp-4)}.stat-hero-row{display:flex;align-items:center;justify-content:space-around;margin-bottom:var(--sp-3)}.stat-hero-item{text-align:center}.stat-hero-sep{width:1px;height:36px;background:var(--b2)}.stat-bar-wrap{display:flex;flex-direction:column;gap:4px}.stat-bar-label{display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:var(--fs-xs);font-weight:700}.stat-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--bg)}.stat-bar-fill{height:100%;transition:width .3s var(--ease)}.stat-bar-fill.win{background:var(--green)}.stat-bar-fill.loss{background:var(--red)}.stats-empty{padding:var(--sp-10) var(--sp-4);text-align:center}.stats-empty p{color:var(--text-3);font-size:var(--fs-sm);font-weight:600}.stats-empty-sub{color:var(--text-4)!important;font-weight:500!important;font-size:var(--fs-xs)!important;margin-top:var(--sp-1)}.reset-stats-btn{width:100%;padding:var(--sp-2);font-size:var(--fs-xs);color:var(--text-4);border:1px solid var(--b1);border-radius:var(--r);transition:all var(--dur);background:transparent}@media(hover:hover)and (pointer:fine){.reset-stats-btn:hover{color:var(--red);border-color:#e040404d}}.howto{max-height:350px;overflow-y:auto;padding-right:var(--sp-2)}.howto-s{margin-bottom:var(--sp-4)}.howto-s h3{font-size:var(--fs-sm);font-weight:700;color:var(--green);margin-bottom:var(--sp-1)}.howto-s p{font-size:var(--fs-sm);color:var(--text-2);line-height:1.6}.howto-s strong{color:var(--text)}.kb-grid{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-xs);color:var(--text-3);margin-top:var(--sp-2)}.timer-setting{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.field-input--sm{width:64px;text-align:center;padding:var(--sp-1) var(--sp-2);font-family:var(--f-mono);font-size:var(--fs-sm)}.timer-unit{font-size:var(--fs-xs);color:var(--text-3);min-width:52px}.timer-preset,.move-preset{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-2xs);font-weight:600;background:var(--surface);border:1px solid var(--b1);border-radius:var(--r-sm);color:var(--text-3);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.timer-preset:hover,.move-preset:hover{background:var(--surface-h);color:var(--text-2)}}.timer-preset.active,.move-preset.active{border-color:var(--green);color:var(--text);background:var(--green-bg)}.field-hint{font-weight:400;color:var(--text-4);text-transform:none;letter-spacing:0}.settings-btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);border:1px solid var(--b1);border-radius:var(--r);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.settings-btn:hover{color:var(--text-2);border-color:var(--b2);background:var(--surface)}}.settings-btn svg{opacity:.6}.settings-overlay{position:fixed;inset:0;background:#0009;display:none;align-items:center;justify-content:center;padding:var(--sp-4);z-index:200}.settings-overlay.active{display:flex}.settings-modal{background:var(--panel);border:2px solid var(--border-active);border-radius:var(--r-lg);max-width:420px;width:100%;max-height:calc(100dvh - var(--sp-8));overflow-y:auto}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-4) var(--sp-4) var(--sp-2)}.settings-title{font-family:var(--f-display);font-size:var(--fs-lg);font-weight:700;color:var(--text)}.settings-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-md);color:var(--text-3);border-radius:var(--r-sm);transition:all var(--dur)}@media(hover:hover)and (pointer:fine){.settings-close:hover{color:var(--text);background:var(--surface)}}.settings-body{padding:var(--sp-2) var(--sp-4) var(--sp-4)}.setting-group{margin-bottom:var(--sp-4)}.setting-group:last-child{margin-bottom:0}.setting-label{display:block;font-size:var(--fs-2xs);font-weight:700;color:var(--text-3);margin-bottom:var(--sp-2)}.setting-row{display:flex;gap:var(--sp-2)}.settings-country-note,.settings-country-status{margin-top:var(--sp-2);font-size:var(--fs-xs);line-height:1.45}.settings-country-note{color:var(--text-3)}.settings-country-status{min-height:1.45em;color:var(--text-4)}.settings-country-status.error{color:var(--red)}.settings-country-status.success{color:var(--green)}.home-credit{text-align:center;padding-top:var(--sp-4);margin-top:var(--sp-2);border-top:1px solid var(--b1);font-size:var(--fs-2xs);color:var(--text-4)}.home-credit a{color:var(--green);text-decoration:none;font-weight:600}@media(hover:hover)and (pointer:fine){.home-credit a:hover{text-decoration:underline}}@media(max-width:500px){.home{padding:var(--sp-2)}.home-card{padding:var(--sp-4) var(--sp-3) var(--sp-3)}.home-title{font-size:var(--fs-lg)}.home-tabs{margin-bottom:var(--sp-3)}.home-tab{font-size:var(--fs-2xs);padding:var(--sp-1)}.field{margin-bottom:var(--sp-3)}.field-label{font-size:.6rem}.diff-grid{grid-template-columns:repeat(2,1fr);gap:var(--sp-1)}.diff-btn{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-2xs)}.opt-btn{padding:var(--sp-2);font-size:var(--fs-2xs)}.play-btn{padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm)}.howto{max-height:250px}.howto-s p{font-size:var(--fs-xs)}}.game-layout{display:grid;grid-template-columns:auto 420px;justify-content:center;gap:0;min-height:100dvh;padding:var(--sp-4);align-content:center}.board-column{display:flex;flex-direction:column;gap:0;align-self:center}.player-bar{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-3);background:var(--panel);min-height:54px}.player-bar--opp{border-left:3px solid rgba(255,180,171,.45)}.player-bar--you{border-left:3px solid rgba(129,182,76,.45)}.bar-right{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.dice-pips{display:flex;gap:3px;align-items:center}.dp{width:7px;height:7px;border-radius:2px;opacity:.1;transition:opacity .4s var(--ease)}.dp.active{opacity:1}.dp--you{background:var(--green)}.dp--opp{background:var(--red)}.player-bar--opp{border-radius:var(--r) var(--r) 0 0}.player-bar--you{border-radius:0 0 var(--r) var(--r)}.bar-left{display:flex;align-items:center;gap:var(--sp-2)}.avatar{width:32px;height:32px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:var(--fs-sm)}.avatar--you{background:var(--green);color:#fff}.avatar--opp{background:var(--red);color:#fff}.bar-info{display:flex;align-items:center;gap:var(--sp-2)}.bar-name{font-size:var(--fs-sm);font-weight:700}.bar-badge{font-size:var(--fs-2xs);font-weight:600;color:var(--text-3);background:var(--surface);padding:1px 6px;border-radius:var(--r-sm)}.first-tag{font-size:var(--fs-2xs);font-weight:700;color:var(--amber);background:var(--amber-bg);padding:1px 6px;border-radius:var(--r-sm);border:1px solid rgba(240,192,64,.2)}.bar-dice{font-family:var(--f-mono);font-size:var(--fs-sm);color:var(--text-3);font-weight:600}.board{background:var(--bg-board);user-select:none;position:relative}.calc-toast{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.92);background:var(--panel);border:1px solid var(--border-active);border-radius:var(--r);padding:var(--sp-3) var(--sp-5);font-size:var(--fs-sm);font-weight:600;color:var(--text);text-align:center;z-index:100;pointer-events:none;max-width:90%;width:max-content;opacity:0;visibility:hidden;transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s var(--ease)}.calc-toast.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}.calc-toast.toast--top{top:16px;transform:translate(-50%) scale(.92)}.calc-toast.toast--top.visible{transform:translate(-50%) scale(1)}.calc-toast.toast--info{border-color:var(--text-3)}.calc-toast.toast--success{border-color:var(--green);color:var(--green)}.calc-toast.toast--error{border-color:var(--red);color:var(--red)}.board-zone{padding:var(--sp-3) var(--sp-4);position:relative;overflow:hidden;transition:background .3s var(--ease)}.board-zone--you-home.active{background:linear-gradient(to bottom,rgba(129,182,76,.08),transparent);box-shadow:inset 0 4px 12px #81b64c1f}.board-zone--opp-home.active{background:linear-gradient(to top,rgba(224,64,64,.05),transparent);box-shadow:inset 0 -4px 12px #e040401a}.board-label{font-size:var(--fs-2xs);font-weight:700;color:var(--board-label-contrast);text-transform:uppercase;letter-spacing:.08em;padding:var(--sp-1) 0}.board-zone--opp-home .board-label{text-align:right}.board-zone--opp-attack,.board-zone--you-attack{padding:var(--sp-3) var(--sp-4);background:transparent;border-top:1px solid var(--b1);border-bottom:1px solid var(--b1)}.board-divider{display:flex;align-items:center;justify-content:center;padding:2px 0;position:relative;background:var(--board-divider)}.board-divider:before,.board-divider:after{content:"";flex:1;height:1px;background:var(--board-divider-line)}.divider-icon{padding:0 var(--sp-3);font-size:var(--fs-2xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text-4)}.divider-round{padding:0 var(--sp-2);font-size:var(--fs-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-4)}.divider-score{padding:0 var(--sp-2);font-family:var(--f-mono);font-size:var(--fs-xs);font-weight:800;color:var(--text-3)}.dice-row,.dice-row--attack{display:grid;grid-template-columns:repeat(6,auto);justify-content:center;gap:3px}.dice-row--expr{display:flex!important;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px}.dice-row--expr .attack-die{flex:0 0 auto}.attack-op{font-family:var(--f-mono);font-size:1.15rem;font-weight:800;color:var(--blue);padding:0 4px;line-height:1;flex-shrink:0}.attack-paren{font-family:var(--f-mono);font-size:1.15rem;font-weight:800;color:var(--amber);padding:0 2px;line-height:1;flex-shrink:0}.attack-slot{min-height:80px;border-radius:var(--r-sm);border:2px dashed var(--b2);opacity:.25}.attack-die{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--r-sm);position:relative;min-height:80px;padding:var(--sp-1) 4px;animation:slot-in .25s var(--ease);background:transparent;border:none}.attack-die.you-die,.attack-die.opp-die{border:none;box-shadow:none}.attack-die:nth-child(odd){background:transparent}.attack-die:nth-child(2n){background:transparent}@keyframes slot-in{0%{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.attack-die:before{display:none}.die{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--r-sm);cursor:pointer;position:relative;min-height:80px;padding:var(--sp-2) 4px;transition:all var(--dur) var(--ease);border:2px solid transparent;background:transparent}.die.selected,.die.target{position:relative}.die:before{display:none}.die.rolling{animation:die-roll .35s var(--ease)}@keyframes die-roll{0%{transform:scale(1)}30%{transform:scale(.85);opacity:.5}70%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@media(max-width:860px){.game-layout{grid-template-columns:1fr;max-width:500px;margin:0 auto;padding:var(--sp-1);padding-bottom:0;gap:0;min-height:100dvh;display:flex;flex-direction:column;justify-content:space-between}.board-column{align-self:start}.board-zone,.board-zone--opp-attack,.board-zone--you-attack{padding:var(--sp-1) var(--sp-2)}.attack-slot,.attack-die{min-height:54px}.board-divider{padding:1px 0}.divider-icon{font-size:.75rem;padding:0 var(--sp-2)}.die{min-height:54px;padding:var(--sp-1) 2px}.player-bar{padding:var(--sp-2) var(--sp-2);min-height:42px}.avatar{width:26px;height:26px;font-size:var(--fs-2xs)}.bar-name,.bar-dice{font-size:var(--fs-xs)}.board-label{font-size:.55rem;padding:1px 0}}.side-panel{background:var(--panel);border-left:1px solid var(--b1);display:flex;flex-direction:column;align-self:center;max-height:calc(100dvh - var(--sp-8));border-radius:0 var(--r-lg) var(--r-lg) 0;overflow:hidden}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--b1)}.turn-indicator{display:flex;align-items:center;gap:var(--sp-2)}.turn-dot{width:8px;height:8px;border-radius:50%;transition:background var(--dur)}.turn-dot.you{background:var(--green)}.turn-dot.opp{background:var(--red)}.turn-label{font-size:var(--fs-sm);font-weight:700}.turn-label.you{color:var(--green)}.turn-label.opp{color:var(--red)}.penalty-tag{font-size:var(--fs-2xs);font-weight:600;color:var(--amber);background:var(--amber-bg);padding:1px 6px;border-radius:var(--r-sm);border:1px solid rgba(240,192,64,.15)}.timer-group{display:flex;gap:var(--sp-1);align-items:center}.timer-box{display:flex;align-items:center;gap:var(--sp-1);font-family:var(--f-mono);font-size:var(--fs-sm);font-weight:700;color:var(--text-2);padding:var(--sp-1) var(--sp-2);background:var(--surface);border-radius:var(--r-sm)}.timer-box.warning{color:var(--amber)}.timer-box.critical{color:var(--red);animation:pulse .8s ease infinite}.move-timer-box{font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-2);border:1px solid var(--b1)}.move-timer-box.urgent{color:var(--red);border-color:var(--red);animation:pulse .5s ease infinite}.move-timer-label{font-size:var(--fs-2xs);color:var(--text-4);margin-left:1px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.move-history{flex:1;min-height:0;display:flex;flex-direction:column;border-bottom:1px solid var(--b1)}.history-header{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) var(--sp-4);font-size:var(--fs-xs);font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--b1);border-left:3px solid var(--green);padding-left:calc(var(--sp-4) - 3px);flex-shrink:0}.history-count{font-weight:600;font-family:var(--f-mono);text-transform:none;letter-spacing:0}.history-list{flex:1;overflow-y:auto;padding:var(--sp-2);min-height:100px}.history-empty{text-align:center;padding:var(--sp-6) var(--sp-4);font-size:var(--fs-xs);color:var(--text-4)}.move-entry{display:grid;grid-template-columns:28px 1fr;gap:var(--sp-1);padding:3px var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-xs);margin-bottom:2px}.move-entry:nth-child(odd){background:var(--surface)}.move-num{font-family:var(--f-mono);font-weight:700;color:var(--text-4);text-align:right;padding-right:var(--sp-2)}.move-text{color:var(--text-2)}.move-text.you{color:var(--green)}.move-text.opp{color:var(--red)}.move-text.sys{color:var(--text-4);font-style:italic}.battle-controls{padding:var(--sp-3) var(--sp-4);flex-shrink:0}.controls-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);font-size:var(--fs-xs);font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--b1)}.thinking-badge{display:flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-2xs);color:var(--amber);text-transform:none;letter-spacing:0;font-weight:600}.thinking-dot{width:6px;height:6px;border-radius:50%;background:var(--amber);animation:pulse .6s ease infinite}.mode-tabs{display:flex;gap:2px;margin-bottom:var(--sp-3);background:var(--surface);border-radius:var(--r);padding:2px}.mode-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-2);border-radius:6px;font-size:var(--fs-xs);color:var(--text-3);transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.mode-tab:hover:not(:disabled){color:var(--text-2)}}.mode-tab.active{background:var(--card);color:var(--text);border:1px solid var(--border-active)}.mode-tab kbd{margin-left:2px}.expr-builder{background:var(--bg);border:1px solid var(--b1);border-radius:var(--r);padding:var(--sp-3);margin-bottom:var(--sp-3)}.expr-display{background:var(--bg);border:1px solid var(--b1);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);min-height:36px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px;font-family:var(--f-mono);font-size:var(--fs-lg);font-weight:600;margin-bottom:var(--sp-2)}.expr-empty{color:var(--text-4);font-size:var(--fs-xs);font-family:var(--f-sans);font-weight:400}.expr-val{color:var(--green);background:var(--green-bg);padding:1px 5px;border-radius:3px}.expr-op{color:var(--blue);padding:0 2px}.expr-paren{color:var(--amber);font-weight:800}.expr-eval{text-align:center;padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs);font-weight:700;border-radius:var(--r-sm);margin-bottom:var(--sp-2)}.expr-eval.valid{color:var(--green);background:var(--green-bg);border:1px solid rgba(129,182,76,.2)}.expr-eval.invalid{color:var(--red);background:var(--red-bg);border:1px solid rgba(224,64,64,.15)}.op-row{display:flex;gap:3px;justify-content:center}.op-btn{width:32px;height:32px;background:var(--card);border:1px solid var(--b1);border-radius:var(--r-sm);color:var(--text);font-size:.95rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.op-btn:hover:not(:disabled){background:var(--surface-h);border-color:var(--b2)}}.op-btn--paren{color:var(--amber)}.op-btn--undo{font-size:.85rem;color:var(--text-3)}.target-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border-radius:var(--r);margin-bottom:var(--sp-3)}.target-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-3)}.target-value{font-family:var(--f-mono);font-size:var(--fs-xl);font-weight:800;color:var(--amber);min-width:36px;text-align:center}.target-hint{font-size:var(--fs-2xs);color:var(--text-4);margin-left:auto}.rule-hint{font-size:var(--fs-2xs);color:var(--amber);background:var(--amber-bg);border:1px solid rgba(240,192,64,.15);border-radius:var(--r-sm);padding:var(--sp-1) var(--sp-2);margin-bottom:var(--sp-3);text-align:center;font-weight:600}.action-row{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-2)}.action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);border-radius:var(--r);font-size:var(--fs-sm);font-weight:700;transition:all var(--dur) var(--ease)}.action-btn--clear{background:var(--surface);color:var(--text-3);border:1px solid var(--b1)}@media(hover:hover)and (pointer:fine){.action-btn--clear:hover:not(:disabled){background:var(--surface-h);color:var(--text-2)}}.action-btn--attack{background:var(--green);color:#1c3700}@media(hover:hover)and (pointer:fine){.action-btn--attack:hover:not(:disabled){background:var(--green-d)}}.action-btn--attack:active:not(:disabled){transform:translateY(1px)}.action-row-secondary{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}.sec-btn{flex:1;padding:var(--sp-1) var(--sp-3);font-size:var(--fs-2xs);color:var(--text-4);font-weight:600;border:1px solid var(--b1);border-radius:var(--r);transition:all var(--dur);display:flex;align-items:center;justify-content:center;gap:var(--sp-1)}@media(hover:hover)and (pointer:fine){.sec-btn:hover:not(:disabled){color:var(--text-3);border-color:var(--b2)}}.panel-footer{display:flex;justify-content:flex-end;align-items:center;gap:var(--sp-3);margin-top:auto;padding:var(--sp-2) max(var(--sp-4),env(safe-area-inset-right)) max(var(--sp-2),env(safe-area-inset-bottom)) max(var(--sp-4),env(safe-area-inset-left));border-top:1px solid var(--b1);flex-shrink:0}.quit-btn{display:flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-xs);color:var(--text-3);transition:color var(--dur),opacity var(--dur)}.quit-btn kbd{margin-left:2px}.quit-btn svg{opacity:.82}@media(hover:hover)and (pointer:fine){.quit-btn:hover{color:var(--red-d)}}.sound-btn{font-size:1rem;padding:var(--sp-1);border-radius:var(--r-sm);transition:opacity var(--dur)}@media(hover:hover)and (pointer:fine){.sound-btn:hover{opacity:.7}}.sound-btn.muted{opacity:.3}.volume-slider-wrap{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.volume-icon{font-size:.85rem}.volume-slider{flex:1;height:4px;accent-color:var(--green);cursor:pointer}.history-toggle-btn{display:none;align-items:center;justify-content:center;font-size:.9rem;padding:var(--sp-1);border-radius:var(--r-sm);color:var(--text-3);border:1px solid var(--b1);transition:all var(--dur)}.ai-narration{display:none;padding:var(--sp-2) var(--sp-3);background:var(--amber-bg);border:1px solid rgba(240,192,64,.2);border-radius:var(--r);margin:var(--sp-2) var(--sp-4);font-size:var(--fs-xs);font-weight:600;color:var(--amber);text-align:center;animation:fadeSlideIn .3s var(--ease)}.ai-narration.visible{display:block}.ai-narration .narr-step{color:var(--text-2);font-weight:400;margin-top:2px}.ai-narration .narr-icon{margin-right:var(--sp-1);font-size:var(--fs-2xs);font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.7}@media(max-width:860px){.side-panel{border-left:none;border-top:1px solid var(--b1);border-radius:0;max-height:none;align-self:auto;position:sticky;bottom:0;left:0;right:0;z-index:50;overflow:visible}.panel-header{padding:var(--sp-2) var(--sp-3)}.turn-label{font-size:var(--fs-sm)}.penalty-tag{font-size:var(--fs-2xs);padding:2px 6px}.timer-box{font-size:var(--fs-xs);padding:var(--sp-1) var(--sp-2)}.history-toggle-btn{display:flex}.move-history{display:none;max-height:200px;overflow:hidden}.move-history.history-visible{display:flex;animation:slideDown .25s var(--ease)}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:200px}}.battle-controls{padding:var(--sp-2) var(--sp-3)}.controls-header{display:none}.mode-tabs{margin-bottom:var(--sp-2)}.mode-tab{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);min-height:48px}.mode-tab svg{display:none}.mode-tab kbd{display:none}.expr-builder{padding:var(--sp-2);margin-bottom:var(--sp-2)}.expr-display{min-height:32px;padding:var(--sp-1) var(--sp-2);font-size:var(--fs-md)}.expr-eval{padding:var(--sp-1);font-size:var(--fs-xs);margin-bottom:var(--sp-1)}.op-row{gap:4px}.op-btn{width:40px;height:36px;font-size:1rem}.target-row{padding:var(--sp-2);margin-bottom:var(--sp-2)}.target-label{font-size:var(--fs-xs)}.target-value{font-size:var(--fs-lg)}.target-hint{font-size:var(--fs-2xs)}.rule-hint{margin-bottom:var(--sp-2);font-size:var(--fs-2xs);padding:var(--sp-1) var(--sp-2)}.action-row{margin-bottom:0;gap:var(--sp-2)}.action-btn{padding:var(--sp-3) var(--sp-3);font-size:var(--fs-sm);min-height:56px;border-radius:var(--r)}.action-btn kbd{display:none}.action-row-secondary{margin-top:var(--sp-2);gap:var(--sp-2)}.sec-btn{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);min-height:48px}.sec-btn kbd{display:none}.panel-footer{padding:var(--sp-2) max(var(--sp-3),env(safe-area-inset-right)) max(var(--sp-2),env(safe-area-inset-bottom)) max(var(--sp-3),env(safe-area-inset-left))}.quit-btn{font-size:var(--fs-xs)}}.modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;padding:var(--sp-6);z-index:200;opacity:0;visibility:hidden;transition:opacity .2s var(--ease),visibility .2s var(--ease)}.modal-overlay.active{opacity:1;visibility:visible}.modal-card{background:var(--panel);border:2px solid var(--border-active);border-radius:var(--r-lg);padding:var(--sp-8);text-align:center;max-width:400px;width:100%;transform:scale(.94);transition:transform .2s var(--ease)}.modal-overlay.active .modal-card{transform:scale(1)}.modal-card--sm{max-width:340px;padding:var(--sp-6)}.modal-result{font-family:var(--f-display);font-size:2rem;font-weight:800;margin-bottom:var(--sp-3);line-height:1}.modal-result.win{color:var(--green)}.modal-result.lose{color:var(--red)}.modal-title{font-family:var(--f-display);font-size:var(--fs-xl);font-weight:800;margin-bottom:var(--sp-2)}.modal-title.win{color:var(--green)}.modal-title.lose{color:var(--red)}.modal-sub{font-size:var(--fs-sm);color:var(--text-3);margin-bottom:var(--sp-3)}.modal-list{margin:0 0 var(--sp-4);padding-left:18px;color:var(--text-2);text-align:left;display:grid;gap:8px}.modal-list li{line-height:1.5}.modal-match-score{font-family:var(--f-mono);font-size:2.4rem;font-weight:900;letter-spacing:.06em;margin-bottom:var(--sp-4);line-height:1}.modal-match-score .score-sep{color:var(--text-4);margin:0 6px}.modal-match-score .score-you{color:var(--green)}.modal-match-score .score-opp{color:var(--red)}.postgame{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-bottom:var(--sp-6);text-align:center}.pg-stat{background:var(--surface);border-radius:var(--r);padding:var(--sp-2)}.pg-val{font-family:var(--f-mono);font-size:var(--fs-lg);font-weight:800;color:var(--text)}.pg-label{font-size:var(--fs-2xs);color:var(--text-4);margin-top:1px}.modal-btns{display:flex;gap:var(--sp-2)}.modal-btn{flex:1;padding:var(--sp-3) var(--sp-4);border-radius:var(--r);font-size:var(--fs-sm);font-weight:700;color:var(--text-3);background:var(--surface);border:1px solid var(--b1);transition:all var(--dur) var(--ease)}@media(hover:hover)and (pointer:fine){.modal-btn:hover{background:var(--surface-h);color:var(--text-2)}}.modal-btn--primary{background:var(--green);color:#1c3700;border:none}@media(hover:hover)and (pointer:fine){.modal-btn--primary:hover{background:var(--green-d);color:#fff}}.modal-btn--danger{display:inline-flex;align-items:center;justify-content:center;background:var(--red-d);color:#fff;border:none}@media(hover:hover)and (pointer:fine){.modal-btn--danger:hover{background:#690005;color:#fff}}.shortcuts-card{max-width:420px;text-align:left}.shortcuts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-4)}.kb-grid--modal{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-xs)}.kb-grid--modal kbd{font-family:var(--f-sans);font-size:var(--fs-2xs);font-weight:700;background:var(--surface);border:1px solid var(--b2);border-radius:3px;padding:1px 5px;color:var(--text-2);white-space:nowrap}.kb-grid--modal span{color:var(--text-2);align-self:center}.expr-eval.error{color:var(--amber);background:var(--amber-bg);border:1px solid rgba(240,192,64,.2)}.die-svg{width:100%;max-width:64px;height:auto;display:block;margin:0 auto;transition:transform .2s var(--ease);will-change:transform}.die-text{font-family:var(--f-sans);font-weight:900;fill:#fff;stroke:#18161394;stroke-width:2.2px;paint-order:stroke fill;text-anchor:middle;dominant-baseline:central;pointer-events:none}.die-label{display:block;font-size:var(--fs-2xs);font-weight:700;color:var(--text-4);letter-spacing:.04em;text-align:center;margin-top:2px;transition:opacity .2s}.die-badge-text{font-family:var(--f-mono);font-size:8px;font-weight:700;fill:#ffffff73;text-anchor:middle;dominant-baseline:central;pointer-events:none}@media(hover:hover)and (pointer:fine){.die:hover:not(.captured):not(.in-attack) .die-svg{transform:scale(1.1)}}.die.selected .die-svg{filter:drop-shadow(0 0 6px var(--amber))}.die.selected .die-label{color:var(--amber)}.die.target .die-svg{filter:drop-shadow(0 0 6px var(--amber))}.die.target .die-label{color:var(--amber)}.die.valid-attack .die-svg{filter:drop-shadow(0 0 5px rgba(129,182,76,.5))}.die.valid-attack:after{content:"\2713";position:absolute;bottom:2px;left:4px;font-size:.6rem;color:var(--green);opacity:.7;z-index:3}.die.captured{opacity:.25;cursor:default;transform:none!important;filter:grayscale(1)!important}.die.captured .die-svg{filter:none}.die.captured .die-text{fill:var(--text-4);stroke:none}.die.captured .die-label{opacity:.4}.die.in-attack{opacity:.3;cursor:default;transform:none!important;filter:grayscale(.5)!important}.die.rolling .die-svg{animation:die-roll-3d .35s var(--ease)}@keyframes die-roll-3d{0%{transform:scale(1) rotateY(0)}30%{transform:scale(.85) rotateY(90deg);opacity:.5}70%{transform:scale(1.05) rotateY(270deg)}to{transform:scale(1) rotateY(360deg);opacity:1}}.die.cycling .die-text{animation:number-cycle .08s linear infinite}@keyframes number-cycle{0%{transform:translateY(0);opacity:1}25%{transform:translateY(-3px);opacity:.3}50%{transform:translateY(0);opacity:.6}75%{transform:translateY(2px);opacity:.3}to{transform:translateY(0);opacity:1}}.die.ai-selecting .die-svg{animation:ai-pulse .6s ease infinite}@keyframes ai-pulse{0%,to{filter:drop-shadow(0 0 4px rgba(240,192,64,.6))}50%{filter:drop-shadow(0 0 12px rgba(240,192,64,.9))}}.die.ai-targeting .die-svg{animation:ai-target-pulse .6s ease infinite}@keyframes ai-target-pulse{0%,to{filter:drop-shadow(0 0 4px rgba(255,180,171,.6))}50%{filter:drop-shadow(0 0 12px rgba(255,180,171,.9))}}.attack-die .die-svg{max-width:52px}.attack-die .die-label{display:none}@media(max-width:860px){.die-svg{max-width:64px}.die-label{font-size:.62rem;margin-top:1px}.attack-die .die-svg{max-width:52px}}@media(max-width:699px){.die-svg{max-width:48px}.die-label{font-size:.5rem}.attack-die .die-svg{max-width:40px}}.online-card{max-width:420px;width:90vw}.online-card .modal-title{display:flex;align-items:center;gap:.5rem}.online-actions{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}.online-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-4);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.online-divider:before,.online-divider:after{content:"";flex:1;height:1px;background:var(--border)}.join-inline{display:flex;gap:.5rem}.join-inline input{flex:1;text-transform:uppercase;font-family:var(--f-mono);font-size:1.1rem;letter-spacing:.2em;text-align:center}.play-btn--sm{padding:.55rem 1.2rem;font-size:.85rem}.online-error{color:var(--red, #FA412D);font-size:.8rem;margin:0;padding:.25rem 0}.online-player-count{font-size:.75rem;color:var(--text-4);text-align:center;margin-top:.5rem}.public-rooms{margin-top:1rem}.public-rooms-title{font-size:.8rem;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem}.room-list{display:flex;flex-direction:column;gap:.375rem;max-height:180px;overflow-y:auto;padding-right:.25rem}.room-list::-webkit-scrollbar{width:4px}.room-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.room-empty{text-align:center;color:var(--text-4);font-size:.8rem;padding:1rem 0}.room-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--card);border:1px solid var(--b1);border-radius:8px;transition:border-color .15s}@media(hover:hover)and (pointer:fine){.room-item:hover{border-color:var(--green)}}.room-item-info{display:flex;flex-direction:column;gap:.1rem}.room-item-host{font-size:.85rem;font-weight:600;color:var(--text-1)}.room-item-settings{font-size:.7rem;color:var(--text-4)}.room-join-btn{background:var(--green, #81B64C);color:#1c3700;border:none;border-radius:6px;padding:.35rem .75rem;font-size:.75rem;font-weight:600;cursor:pointer;transition:opacity .15s}@media(hover:hover)and (pointer:fine){.room-join-btn:hover{opacity:.85}}.vis-hint{font-size:.75rem;color:var(--text-4);margin-top:.25rem}.room-code-display{text-align:center;margin:1rem 0}.room-code{font-family:var(--f-mono);font-size:2.2rem;font-weight:700;letter-spacing:.3em;color:var(--green);background:var(--bg);border:2px dashed var(--b1);border-radius:12px;padding:.5rem 1.25rem;display:inline-block;user-select:all}.room-code-actions{display:flex;gap:.5rem;justify-content:center;margin-bottom:1rem}.room-code-actions .modal-btn{font-size:.8rem;padding:.4rem .75rem}.waiting-spinner{display:flex;gap:.35rem;justify-content:center;margin:1rem 0}.waiting-spinner span{width:8px;height:8px;border-radius:50%;background:var(--green, #81B64C);animation:waitBounce 1.4s infinite ease-in-out both}.waiting-spinner span:nth-child(1){animation-delay:0s}.waiting-spinner span:nth-child(2){animation-delay:.16s}.waiting-spinner span:nth-child(3){animation-delay:.32s}@keyframes waitBounce{0%,80%,to{transform:scale(.4);opacity:.4}40%{transform:scale(1);opacity:1}}.waiting-text{text-align:center;font-size:.8rem;color:var(--text-4);margin-bottom:1rem}.lobby-vs{display:flex;align-items:center;justify-content:center;gap:1.25rem;margin:1.5rem 0}.lobby-player{display:flex;flex-direction:column;align-items:center;gap:.4rem}.lobby-avatar{width:48px;height:48px;border-radius:50%;background:var(--green, #81B64C);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700}.lobby-avatar--opp{background:var(--red-d)}.lobby-vs-text{font-size:1.5rem;font-weight:800;color:var(--text-3);letter-spacing:.05em}.lobby-countdown{text-align:center;font-size:1rem;color:var(--text-3)}.lobby-countdown span{font-family:var(--f-mono);font-weight:700;font-size:1.6rem;color:var(--green, #81B64C)}.conn-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.7rem;color:var(--text-4);padding:.15rem .5rem;border-radius:4px;background:var(--card)}.conn-dot{width:7px;height:7px;border-radius:50%;background:var(--text-4)}.conn-dot.conn-ok{background:var(--green)}.conn-dot.conn-warn{background:var(--amber);animation:connPulse .8s infinite alternate}.conn-dot.conn-err{background:var(--red)}@keyframes connPulse{0%{opacity:.5}to{opacity:1}}#disconnectOverlay .modal-card{text-align:center}#disconnectTimer{font-family:var(--f-mono)}#disconnectTimer{font-weight:700;color:var(--red, #FA412D);font-size:1.1em}#reconnectOverlay{position:fixed;inset:0;background:#000c;z-index:10001;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px)}#reconnectOverlay.active{display:flex}.reconnect-card{background:var(--panel);border:1px solid var(--b1);border-radius:var(--r-lg);padding:32px 40px;text-align:center;max-width:300px;width:90vw}.reconnect-card h2{font-size:var(--fs-md);font-weight:700;margin-bottom:8px}.reconnect-card p{font-size:var(--fs-sm);color:var(--text-3);margin-bottom:20px}.reconnect-attempts{font-size:var(--fs-xs);color:var(--amber);margin-bottom:16px}.reconnect-spinner{display:flex;gap:5px;justify-content:center;margin-bottom:20px}.reconnect-spinner span{width:8px;height:8px;border-radius:50%;background:var(--green);animation:waitBounce 1.4s infinite ease-in-out both}.reconnect-spinner span:nth-child(1){animation-delay:0s}.reconnect-spinner span:nth-child(2){animation-delay:.16s}.reconnect-spinner span:nth-child(3){animation-delay:.32s}#connectionLostModal{position:fixed;inset:0;background:#000000d9;z-index:10002;display:none;align-items:center;justify-content:center}#connectionLostModal.active{display:flex}.conn-lost-card{background:var(--panel);border:1px solid var(--b2);border-radius:var(--r-lg);padding:32px 40px;text-align:center;max-width:300px;width:90vw}.conn-lost-card h2{font-size:var(--fs-md);font-weight:700;margin-bottom:8px;color:var(--red)}.conn-lost-card p{font-size:var(--fs-sm);color:var(--text-3);margin-bottom:20px}.conn-lost-btns{display:flex;flex-direction:column;gap:8px}#moveToast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.9);background:var(--panel);border:1px solid var(--b2);border-radius:var(--r);padding:10px 20px;font-size:var(--fs-sm);font-weight:600;color:var(--text);z-index:9997;pointer-events:none;opacity:0;transition:opacity .18s var(--ease),transform .18s var(--ease);white-space:nowrap}#moveToast.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}#moveToast.toast--error{border-color:var(--red);color:var(--red)}#moveToast.toast--success{border-color:var(--green);color:var(--green)}#moveToast.toast--info{border-color:var(--text-3);color:var(--text)}.conn-ping{font-family:var(--f-mono);font-size:var(--fs-2xs);color:var(--text-3);margin-left:2px}.conn-ping.ping-warn{color:var(--amber)}.conn-ping.ping-bad{color:var(--red)}.reaction-bar{display:none;align-items:center;gap:3px;margin-left:auto;padding-left:8px}.reaction-bar.active{display:flex}.reaction-btn{background:var(--card);border:1px solid var(--b1);border-radius:6px;padding:2px 6px;font-size:.9rem;cursor:pointer;transition:transform .1s,border-color .1s;line-height:1.4}@media(hover:hover)and (pointer:fine){.reaction-btn:hover:not(:disabled){transform:scale(1.2);border-color:var(--green)}}.reaction-btn:disabled{opacity:.35;cursor:default;transform:none}@media(max-width:600px){.online-card{width:95vw;padding:1.25rem}.room-code{font-size:1.6rem;letter-spacing:.2em}.lobby-vs{gap:.75rem}.lobby-avatar{width:40px;height:40px;font-size:1.1rem}}.auth-intro{color:var(--text-3);font-size:.875rem;margin-bottom:1rem;line-height:1.5}.auth-form{display:flex;gap:.5rem;margin-bottom:.75rem}.auth-form .field-input{flex:1;min-width:0}.auth-submit-btn{padding:.55rem 1rem;background:var(--green);color:#fff;border:none;border-radius:var(--radius);font-family:inherit;font-size:.875rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:opacity .15s}@media(hover:hover)and (pointer:fine){.auth-submit-btn:hover{opacity:.85}}.auth-status{font-size:.8rem;min-height:1.2em;color:var(--text-3)}.auth-status.ok{color:var(--green)}.auth-status.error{color:var(--red, #FA412D)}.auth-empty{color:var(--text-4);font-size:.8rem}.profile-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.profile-avatar{width:40px;height:40px;border-radius:50%;background:var(--green);color:#fff;font-weight:700;font-size:1.1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.profile-info{flex:1;min-width:0}.profile-name{font-weight:700;font-size:.95rem;color:var(--text-1)}.profile-email{font-size:.75rem;color:var(--text-4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-signout-btn{padding:.35rem .75rem;background:transparent;border:1px solid var(--border-1);border-radius:var(--radius);font-family:inherit;font-size:.75rem;color:var(--text-3);cursor:pointer;flex-shrink:0;transition:border-color .15s,color .15s}@media(hover:hover)and (pointer:fine){.auth-signout-btn:hover{border-color:var(--text-3);color:var(--text-1)}}.profile-stats{display:flex;gap:.75rem;margin-bottom:1.25rem}.profile-stat{flex:1;background:var(--surface-2);border-radius:var(--radius);padding:.6rem;text-align:center}.profile-stat-val{font-size:1.4rem;font-weight:700;color:var(--green);line-height:1;margin-bottom:.2rem}.profile-stat-label{font-size:.7rem;color:var(--text-4);text-transform:uppercase;letter-spacing:.04em}.auth-section-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-4);margin:1rem 0 .4rem;display:flex;align-items:center;gap:.5rem}.lb-note{font-weight:400;text-transform:none;letter-spacing:0;font-size:.7rem}.match-history,.leaderboard{display:flex;flex-direction:column;gap:.25rem;max-height:180px;overflow-y:auto}.match-row,.lb-row{display:grid;align-items:center;padding:.3rem .5rem;border-radius:calc(var(--radius) - 2px);font-size:.8rem;background:var(--surface-2)}.match-row{grid-template-columns:1.5rem 1fr auto auto;gap:.5rem}.match-result{font-weight:700}.match-row.win .match-result{color:var(--green)}.match-row.loss .match-result{color:var(--red, #FA412D)}.match-opp{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.match-elo{font-family:var(--font-mono, monospace);font-size:.75rem;color:var(--text-3)}.match-date{color:var(--text-4);font-size:.72rem}.lb-row{grid-template-columns:2rem 1fr auto 4.5rem;gap:.5rem}.lb-row.lb-me{background:color-mix(in srgb,var(--green) 15%,var(--surface-2))}.lb-rank{color:var(--text-4);font-size:.72rem;text-align:right}.lb-name{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-elo{font-weight:700;color:var(--green)}.lb-record{color:var(--text-4);font-size:.72rem;text-align:right}:root{--ink: #242526;--ink-2: #1D1F21;--rail: rgba(255, 255, 255, .08);--rail-strong: rgba(255, 255, 255, .15);--green-ink: #183000;--copper: var(--amber);--cyan: #5DADE2;--danger: #FA412D;--radius: var(--r);--border-1: var(--b1);--surface-2: var(--surface);--text-1: var(--text);--menu-w: 480px;--menu-h: min(760px, calc(100dvh - 36px) );--modal-w: 440px;--modal-h: min(620px, calc(100dvh - 48px) );--control-h: 54px;--field-h: 42px;--die-cell: 88px;--die-cell-tablet: 76px;--die-cell-mobile: 56px}html{background:var(--bg)}body{min-width:320px;background:var(--bg);letter-spacing:0}button,input{letter-spacing:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.game-layout,.landing-info,.modal-overlay,#reconnectOverlay,#connectionLostModal,.settings-overlay{position:relative;z-index:1}.home-card,.home-card .tab-panel.active,.history-list,.settings-body,.dice-row--expr,.room-list,.modal-card,.online-card{scrollbar-width:none;-ms-overflow-style:none}.home-card::-webkit-scrollbar,.home-card .tab-panel.active::-webkit-scrollbar,.history-list::-webkit-scrollbar,.settings-body::-webkit-scrollbar,.dice-row--expr::-webkit-scrollbar,.room-list::-webkit-scrollbar,.modal-card::-webkit-scrollbar,.online-card::-webkit-scrollbar{width:0;height:0;display:none}.home{position:fixed;inset:0;z-index:100;background:var(--bg);align-items:stretch;justify-content:center;padding:28px}.home:before{content:"";position:absolute;inset:18px;border:1px solid rgba(255,255,255,.08);pointer-events:none}.home-layout{width:min(100%,1220px);max-width:1220px;grid-template-columns:minmax(0,1.12fr) minmax(420px,480px);gap:22px;padding:0;align-self:center}.home-hero,.home-card,.side-panel,.board-column,.modal-card,.settings-modal{box-shadow:var(--sh-lg)}.home-hero{position:relative;min-height:min(760px,calc(100dvh - 56px));padding:34px;border:1px solid var(--rail);border-radius:var(--r);background:var(--panel-bg);overflow:hidden}.home-hero:before{display:none}.home-hero:after{display:none}.hero-brand{position:relative;z-index:1;align-items:flex-start}.hero-brand svg,.nav-logo svg,.home-brand svg{filter:drop-shadow(0 0 18px rgba(129,182,76,.22))}.hero-title{font-family:var(--f-display);max-width:620px;font-size:4rem;line-height:.95;letter-spacing:0}.hero-title span{color:var(--green)}.hero-tagline,.home-sub,.field-label,.history-header,.controls-header,.public-rooms-title,.auth-section-title,.stat-label,.profile-stat-label{letter-spacing:0;text-transform:uppercase}.hero-tagline{color:var(--cyan)}.hero-dice-row{position:relative;z-index:1;margin-top:auto;grid-auto-flow:dense;padding:18px;border-radius:var(--r);border:1px solid rgba(129,182,76,.18);background:#242526b8}.hero-body{position:relative;z-index:1;max-width:610px;font-size:1rem;color:var(--text-2)}.hero-list{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:dense;gap:10px;border:0;padding:0}.hero-list li{min-height:76px;align-items:flex-start;padding:14px;border:1px solid var(--rail);background:#ffffff09;color:var(--text-2)}.hero-list li:before{margin-top:8px;border-radius:1px}.hero-footer{position:relative;z-index:1}.hero-badges{width:100%;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-flow:dense}.hero-badge{display:flex;align-items:center;justify-content:center;min-height:36px;color:var(--text-3);border-radius:var(--r-sm);background:#ffffff0a}.home-card{width:min(var(--menu-w),calc(100vw - 20px));height:var(--menu-h);max-height:var(--menu-h);padding:18px;border-radius:var(--r);border:1px solid var(--rail-strong);background:var(--panel-bg);display:flex;flex-direction:column;overflow:hidden;contain:layout paint}.home-title{letter-spacing:0;text-transform:uppercase}.home-tabs,.mode-tabs{background:#242526d6;border:1px solid var(--rail);border-radius:var(--r);padding:4px;flex-shrink:0}.home-tabs{margin-bottom:14px}.home-tab,.mode-tab{height:42px;min-height:42px;border:1px solid transparent;box-sizing:border-box;overflow:hidden}.home-card .tab-panel{min-height:0;overflow:hidden}.home-card .tab-panel.active{flex:1 1 auto;display:block;overflow-y:auto;overflow-x:hidden}.home-card .field{margin-bottom:12px}.home-card .field-label{margin-bottom:6px}.home-tab.active,.mode-tab.active,.opt-btn.selected,.diff-btn.selected,.timer-preset.active,.move-preset.active{color:var(--text);border-color:#81b64c61;background:#81b64c1f}.field-input{height:var(--field-h);min-height:var(--field-h);background:#242526e6;border-color:var(--rail);border-radius:var(--r)}.field-input:focus{border-color:var(--cyan)}.field-row{align-items:stretch}.opt-btn,.diff-btn,.timer-preset,.move-preset,.settings-btn,.quick-play-btn,.sec-btn,.modal-btn,.room-item,.profile-stat,.match-row,.lb-row,.stat-card{border-radius:var(--r);border-color:var(--rail);background:#ffffff0a}.opt-btn,.diff-btn{height:var(--control-h);min-height:var(--control-h);box-sizing:border-box;overflow:hidden}.diff-grid,.stats-grid,.landing-feats{grid-auto-flow:dense}.diff-hint{white-space:normal}.timer-setting{min-height:58px;padding:8px 10px;background:#24252694;border:1px solid var(--rail);border-radius:var(--r)}.play-btn,.action-btn--attack,.modal-btn--primary,.auth-submit-btn,.room-join-btn,.nav-play-btn{background:var(--green);color:var(--green-ink);border:1px solid rgba(255,255,255,.18);box-shadow:0 10px 28px #81b64c2e}@media(hover:hover)and (pointer:fine){.play-btn:hover,.action-btn--attack:hover:not(:disabled),.modal-btn--primary:hover,.auth-submit-btn:hover,.room-join-btn:hover,.nav-play-btn:hover{background:color-mix(in srgb,var(--green) 82%,white);color:var(--green-ink);opacity:1}}.home-credit{color:var(--text-4)}.home-actions{position:sticky;bottom:-18px;z-index:3;padding:10px 0 0;background:var(--panel-bg);border-top:1px solid var(--rail);min-height:66px;flex-shrink:0}.howto{padding-right:8px}.howto-s{padding:12px;border:1px solid var(--rail);border-radius:var(--r);background:#24252666}.game-layout{grid-template-columns:minmax(520px,760px) minmax(360px,420px);gap:14px;padding:calc(var(--header-h) + 16px) 24px 16px;background:transparent;min-height:calc(100dvh - 8px);box-sizing:border-box;align-content:start}.board-column{border:1px solid var(--rail-strong);border-radius:var(--r);overflow:hidden;background:var(--board-shell)}.player-bar{background:var(--board-shell)}.player-bar--opp,.player-bar--you{border-left-width:4px;border-radius:0}.player-bar--opp{border-left-color:#fa412dd6}.player-bar--you{border-left-color:#81b64cd6}.avatar{border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px #ffffff38}.avatar--you,.lobby-avatar{color:var(--green-ink)}.board{background:var(--bg-board)}.board-zone{padding:18px 20px}.board-zone--opp-attack,.board-zone--you-attack{background:var(--board-attack)}.board-zone--you-home.active{background:#81b64c12;box-shadow:inset 0 0 36px #81b64c1f}.board-zone--opp-home.active{background:#fa412d0b;box-shadow:inset 0 0 36px #fa412d1a}.board-label{color:var(--text-3)}.board-divider{background:var(--board-divider)}.divider-icon{color:var(--cyan)}.dice-row,.dice-row--attack{gap:8px}.die{min-width:74px;width:var(--die-cell);height:var(--die-cell);min-height:var(--die-cell);border-radius:var(--r);box-sizing:border-box;overflow:hidden;touch-action:none;-webkit-user-drag:none}@media(hover:hover)and (pointer:fine){.die:hover:not(.captured):not(.in-attack){background:#ffffff0a}}.die.valid-attack{background:#81b64c17}.die.target{background:#fa412d14}.die.selected{background:#e8a93e1a}.die-svg{max-width:70px;pointer-events:none}.attack-die,.attack-slot{width:var(--die-cell);height:var(--die-cell);min-height:var(--die-cell);box-sizing:border-box}.die.is-drag-source{opacity:.48}.dice-drag-ghost{position:fixed;left:0;top:0;z-index:10050;pointer-events:none;opacity:.92;filter:drop-shadow(0 16px 26px rgba(0,0,0,.42));transform-origin:center;transition:none!important}.dice-drag-ghost .die-svg{transform:scale(1.08)}.dice-row--attack.drop-ready,.target-row.drop-ready,.expr-builder.drop-ready{outline:1px dashed rgba(129,182,76,.42);outline-offset:-4px}.dice-row--attack.drop-over,.target-row.drop-over,.expr-builder.drop-over,.die.drop-over{background:#81b64c1f;outline-color:#81b64cc2}.die.drop-over .die-svg{filter:drop-shadow(0 0 8px rgba(129,182,76,.68))}.board-zone--opp-attack,.board-zone--you-attack{min-height:126px}.dice-row--expr{max-height:92px;overflow-y:auto}.side-panel{border:1px solid var(--rail-strong);border-radius:var(--r);background:var(--panel-bg);width:420px;height:min(640px,calc(100dvh - var(--header-h) - 32px));min-height:min(640px,calc(100dvh - var(--header-h) - 32px));max-height:min(640px,calc(100dvh - var(--header-h) - 32px));contain:layout paint}.move-history{flex:0 0 154px;min-height:154px;max-height:154px}.history-list{min-height:84px;max-height:104px}.battle-controls{min-height:278px;padding-top:14px}.expr-builder{min-height:150px;box-sizing:border-box}.expr-builder[hidden]{display:block!important;visibility:hidden;height:0;min-height:0;padding:0;margin:0;border:0;overflow:hidden}.target-row{min-height:54px}.action-btn,.sec-btn,.op-btn,.modal-btn,.play-btn,.quick-play-btn,.settings-btn,.room-join-btn,.auth-submit-btn{box-sizing:border-box;border-width:1px}.action-btn,.sec-btn,.modal-btn,.room-join-btn,.auth-submit-btn{min-height:42px}.panel-header,.history-header,.controls-header,.panel-footer{border-color:var(--rail)}.timer-box,.target-row,.expr-builder,.expr-display,.op-btn,.pg-stat{background:var(--control-bg);border:1px solid var(--rail)}.turn-dot.you{background:var(--green);box-shadow:0 0 16px #81b64c9e}.turn-dot.opp{background:var(--red);box-shadow:0 0 16px #fa412d94}.move-entry{border:1px solid transparent}.move-entry:nth-child(odd){background:#ffffff09}.action-btn,.sec-btn,.op-btn,.mode-tab,.home-tab,.opt-btn,.diff-btn,.room-item,.landing-feat,.modal-btn{transition:transform .22s var(--ease),border-color .22s var(--ease),background .22s var(--ease),color .22s var(--ease)}@media(hover:hover)and (pointer:fine){.action-btn:hover:not(:disabled),.sec-btn:hover:not(:disabled),.op-btn:hover:not(:disabled),.mode-tab:hover:not(:disabled),.home-tab:hover,.opt-btn:hover,.diff-btn:hover,.room-item:hover,.landing-feat:hover,.modal-btn:hover{transform:translateY(-1px)}}.modal-overlay{position:fixed;z-index:200;background:#030506db;backdrop-filter:blur(12px);padding:max(var(--sp-4),env(safe-area-inset-top)) max(var(--sp-4),env(safe-area-inset-right)) max(var(--sp-4),env(safe-area-inset-bottom)) max(var(--sp-4),env(safe-area-inset-left))}.settings-overlay,#reconnectOverlay,#connectionLostModal{position:fixed;z-index:10001}.modal-card,.settings-modal,.reconnect-card,.conn-lost-card{border:1px solid var(--rail-strong);background:var(--panel-bg);border-radius:var(--r);box-sizing:border-box}.modal-card{width:min(var(--modal-w),calc(100vw - 32px));min-height:260px}.modal-card--sm{width:min(360px,calc(100vw - 32px))}.settings-modal{width:min(460px,calc(100vw - 32px));height:min(620px,calc(100dvh - 48px));max-height:min(620px,calc(100dvh - 48px));display:grid;grid-template-rows:64px 1fr;overflow:hidden}.settings-body{min-height:0;overflow-y:auto}.modal-title{letter-spacing:0;text-transform:uppercase}.online-card{width:min(500px,calc(100vw - 32px));max-width:500px;height:var(--modal-h);max-height:var(--modal-h);overflow:hidden;display:flex;flex-direction:column}.online-card .modal-title{justify-content:center}#onlineMenu .modal-title{font-size:0}#onlineMenu .modal-title:after{content:"PLAY ONLINE";font-size:1.7rem}.online-card>div:not([hidden]){height:100%;min-height:0;display:flex;flex-direction:column}.online-actions,.public-rooms,#onlineCreate,#onlineWaiting,#onlineLobby{text-align:left}.online-actions{flex-shrink:0}.public-rooms{min-height:0;display:flex;flex-direction:column}.online-divider{color:var(--text-4)}.room-list{gap:8px;height:230px;max-height:230px;min-height:230px;overflow-y:auto}.room-item{min-height:58px;padding:10px 12px;background:#24252694}.room-code{color:var(--green);background:var(--control-bg);border:1px solid rgba(129,182,76,.35);border-radius:var(--r);box-shadow:inset 0 0 22px #81b64c14;min-height:74px;box-sizing:border-box}.room-code-actions{justify-content:stretch}.lobby-vs{padding:18px;border:1px solid var(--rail);background:#24252685;border-radius:var(--r);min-height:136px}.conn-badge{border:1px solid var(--rail);background:#242526bf}.reaction-btn{background:#242526b8}.profile-header,.profile-stats,.match-history,.leaderboard{border-radius:var(--r)}.profile-avatar{color:var(--green-ink)}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr)}.auth-form{align-items:stretch}.auth-submit-btn{color:var(--green-ink)}.auth-google-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px}.auth-google-mark{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--text);color:var(--bg);font-weight:800;line-height:1}.name-linked{opacity:.72;cursor:default;border-color:#81b64c8c!important}.player-name-hint{display:block;min-height:1em;margin-top:4px;color:var(--text-4);font-size:.72rem}.profile-username-row{display:flex;align-items:center;gap:8px;min-height:42px;margin-bottom:10px;padding:8px 0;border-bottom:1px solid var(--rail)}.profile-username-label{min-width:72px;color:var(--text-4);font-size:.75rem;font-weight:700;text-transform:uppercase}.profile-username-val{flex:1;min-width:0;color:var(--text);font-weight:700}.profile-edit-btn,.auth-cancel-btn{min-height:34px;padding:0 12px;border:1px solid var(--rail);border-radius:var(--r-sm);background:#ffffff0a;color:var(--text-2)}@media(hover:hover)and (pointer:fine){.profile-edit-btn:hover,.auth-cancel-btn:hover{background:#81b64c1f;color:var(--text)}}.profile-username-edit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.profile-username-input{flex:1 1 180px;min-width:0}.profile-save-btn{min-height:34px;padding:0 14px;font-size:.85rem}.profile-username-status{width:100%;min-height:1em;color:var(--text-4);font-size:.78rem}.profile-username-status.error{color:var(--red)}.profile-username-status.success{color:var(--green)}.match-history,.leaderboard{gap:6px}.match-row,.lb-row{min-height:38px;border:1px solid var(--rail);background:#24252685}.site-nav{height:62px;border:1px solid var(--rail);border-left:0;border-right:0;background:#242526d1;backdrop-filter:blur(12px)}.landing-info{background:#242526f5;border-top:1px solid var(--rail);padding-top:80px}.landing-container{max-width:1120px}.landing-grid{grid-template-columns:1.05fr .95fr;gap:18px}.landing-col,.landing-feat,.landing-page-link{border:1px solid var(--rail);border-radius:var(--r);background:#ffffff09}.landing-col{padding:24px}.landing-col h2{font-family:var(--f-display);font-size:1.35rem}.landing-feats{grid-template-columns:minmax(220px,.78fr) minmax(0,1.22fr)}.landing-feat{padding:16px 0}.landing-dice-story .landing-feat{border:0;border-top:1px solid var(--rail);border-radius:0;background:transparent}.landing-pages{gap:10px}.landing-page-link{padding:12px 16px}.landing-footer{max-width:1120px;border-color:var(--rail)}@media(max-width:1060px){html.game-active,body.game-active{overflow:auto}.home-layout{grid-template-columns:1fr;width:min(100%,720px);align-self:flex-start}.home{overflow-y:auto}.home-card{order:1;max-height:calc(100dvh - 56px);overflow-y:auto}.home-hero{order:2;min-height:280px}.game-layout{grid-template-columns:1fr;width:min(100%,960px);margin:0 auto;grid-template-rows:auto auto;align-content:start}.side-panel{border-radius:var(--r);width:100%;height:auto;min-height:0;max-height:none;contain:none}.board-column{width:100%;justify-self:stretch}.battle-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.9fr);gap:12px}.controls-header{display:none}.expr-builder{grid-column:1 / -1}.mode-tabs,.target-row,.rule-hint,.action-row,.action-row-secondary{margin-bottom:0}.landing-feats{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.home{padding:10px;align-items:flex-start;overflow-y:auto}.home:before{inset:8px}.home-hero{display:none}.hero-title{font-size:2.7rem}.hero-body,.hero-list,.hero-footer{display:none}.hero-dice-row{margin-top:18px}.hero-badges{grid-template-columns:1fr}.home-card{padding:16px;max-height:calc(100dvh - 20px)}.field-row,.auth-form,.room-code-actions{flex-direction:column}.diff-grid,.stats-grid,.profile-stats,.landing-grid,.landing-feats{grid-template-columns:1fr}.landing-feat:nth-child(2n){margin-left:0}.landing-die-mark{width:132px}.game-layout{padding:8px;min-height:100dvh}.board-column{border-radius:var(--r)}.board-zone{padding:8px}.dice-row,.dice-row--attack{gap:3px}.die{width:var(--die-cell-mobile);height:var(--die-cell-mobile);min-width:0;min-height:var(--die-cell-mobile)}.attack-die,.attack-slot{width:var(--die-cell-mobile);height:var(--die-cell-mobile);min-height:var(--die-cell-mobile)}.board-zone--opp-attack,.board-zone--your-attack{min-height:74px}.die-svg{max-width:48px}.side-panel{position:sticky;bottom:0;width:100%;max-width:100%;max-height:min(640px,calc(100dvh - 24px));border-radius:var(--r) var(--r) 0 0}.online-card{width:min(96vw,500px)}.room-code{width:100%;text-align:center;letter-spacing:.18em}}@media(max-width:500px){.home-tab{font-size:.72rem}.hero-title{font-size:2.25rem}.home-hero{min-height:300px}.hero-dice-row{gap:4px;padding:10px}.hero-die .die-svg{max-width:42px}.play-btn{min-height:44px}}html.game-active,body.game-active{overflow:hidden}body.game-active .landing-pages,body.game-active .landing-footer{display:none}@media(max-width:860px){html.game-active,body.game-active{overflow:auto}.game-layout{display:grid;width:100%;min-height:100dvh;height:auto;max-height:none;padding:calc(var(--header-h) + 14px) 14px 16px;grid-template-columns:1fr;grid-template-rows:auto auto;align-content:start;justify-items:stretch;gap:12px;overflow:visible}.board-column{width:100%;min-height:0;display:flex;flex-direction:column;align-self:stretch;justify-self:stretch}.board{width:100%;flex:0 0 auto;min-height:0}.player-bar{min-height:50px;padding:10px 12px}.avatar{width:30px;height:30px}.bar-info{gap:6px}.bar-name{font-size:.88rem}.bar-badge,.bar-dice{font-size:.72rem}.board-zone{padding:12px 14px}.board-zone--opp-attack,.board-zone--you-attack{padding:8px 12px;min-height:92px}.dice-row,.dice-row--attack{grid-template-columns:repeat(6,minmax(0,var(--die-cell-tablet)));gap:8px}.die{width:var(--die-cell-tablet);height:var(--die-cell-tablet);min-width:0;min-height:var(--die-cell-tablet);padding:5px 3px}.die-svg{max-width:64px}.attack-die,.attack-slot{width:58px;height:58px;min-height:58px}.board-divider{padding:3px 0}.divider-round,.divider-icon,.divider-score{font-size:.74rem}.side-panel{position:static;width:100%;height:auto;min-height:0;max-height:none;overflow:visible;border-radius:var(--r);contain:none}.move-history{max-height:140px;overflow-y:auto}.panel-header{padding:10px 12px}.battle-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.9fr);align-items:start;gap:10px;min-height:0;padding:12px}.battle-controls>.action-row{margin-top:0}.expr-builder{min-height:0;grid-column:1 / -1}.mode-tabs,.target-row,.rule-hint,.action-row,.action-row-secondary{margin-bottom:0}.target-row,.action-btn{min-height:52px}.sec-btn{min-height:46px}.panel-footer{padding:8px 12px}}@media(max-width:699px){html.game-active,body.game-active{overflow:auto}.game-layout{min-height:auto;--mobile-die-cell: clamp(42px, calc((100vw - 64px) / 6), 54px);--mobile-attack-cell: clamp(32px, calc((100vw - 98px) / 6), 40px);padding:calc(var(--header-h) + 8px) 8px 8px;gap:8px;overflow:visible}.player-bar{min-height:40px;padding:8px}.avatar{width:24px;height:24px}.bar-name{font-size:.75rem}.bar-badge,.bar-dice{font-size:.62rem}.board-zone{padding:6px 8px}.board-zone--opp-attack,.board-zone--you-attack{padding:4px 6px;min-height:0}.dice-row,.dice-row--attack{grid-template-columns:repeat(6,minmax(0,var(--mobile-die-cell)));gap:4px}.die{width:var(--mobile-die-cell);height:calc(var(--mobile-die-cell) + 8px);min-height:calc(var(--mobile-die-cell) + 8px);padding:4px 2px 3px}.die-svg{max-width:calc(var(--mobile-die-cell) - 8px)}.die-label{font-size:clamp(.56rem,2.1vw,.68rem);margin-top:2px}.attack-die,.attack-slot{width:var(--mobile-attack-cell);height:var(--mobile-attack-cell);min-height:var(--mobile-attack-cell)}.attack-die .die-svg{max-width:calc(var(--mobile-attack-cell) - 6px)}.board-zone--opp-attack,.board-zone--you-attack{min-height:36px}.side-panel{overflow:visible}.battle-controls{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;gap:8px;padding:8px;text-align:center}.battle-controls>.mode-tabs,.battle-controls>.expr-builder,.battle-controls>.target-row,.battle-controls>.rule-hint,.battle-controls>.action-row,.battle-controls>.action-row-secondary{width:min(100%,360px)}.target-row{justify-content:center}.target-hint{margin-left:0}.battle-controls>.action-row{margin-top:auto}.target-row{min-height:40px;margin-bottom:8px}.action-btn{min-height:44px}.sec-btn{min-height:38px}}@media(max-width:480px){.die-svg{max-width:calc(var(--mobile-die-cell, 48px) - 8px)}}@media(prefers-reduced-motion:reduce){.arena-anim,.home-card,.home-hero,.modal-card,.landing-col,.landing-feat{transform:none!important;opacity:1!important}}body:before,.home:before{display:none}.home{background:var(--bg)}.home-main{gap:var(--sp-5)}.home-context{width:min(100%,760px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--b1);border-bottom:1px solid var(--b1)}.home-context-item{min-width:0;padding:var(--sp-3) var(--sp-4);border-right:1px solid var(--b1)}.home-context-item:last-child{border-right:0}.home-context-item strong{display:block;margin-bottom:4px;color:var(--text);font-size:var(--fs-xs);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.home-context-item span{display:block;color:var(--text-3);font-size:var(--fs-xs);line-height:1.45}@media(max-width:720px){.home-context{grid-template-columns:1fr}.home-context-item{border-right:0;border-bottom:1px solid var(--b1)}.home-context-item:last-child{border-bottom:0}}.rank-badge{display:inline-flex;align-items:center;gap:3px;font-size:.7rem;font-weight:700;letter-spacing:.03em;padding:2px 8px;border-radius:4px;background:#ffffff0f;border:1px solid var(--rank-color,#888);color:var(--rank-color,#888);text-transform:uppercase;white-space:nowrap}.rank-badge--md{font-size:.78rem;padding:3px 10px}.rank-badge--lg{font-size:.88rem;padding:4px 12px;gap:5px}.rank-inline{font-weight:700;font-size:.85em}.rank-progress{display:flex;flex-direction:column;gap:4px;margin-top:6px}.rank-progress-bar{height:6px;background:#ffffff14;border-radius:3px;overflow:hidden}.rank-progress-fill{height:100%;border-radius:3px;transition:width .4s ease}.rank-progress-label{display:flex;justify-content:space-between;font-size:.65rem;color:var(--text-3)}.achievement-toast{position:fixed;top:20px;right:20px;z-index:10000;display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--surface);border:1px solid var(--amber);border-radius:8px;box-shadow:0 8px 24px #0006;animation:achieveSlide .4s ease-out;pointer-events:none;max-width:340px}.achievement-toast.leaving{animation:achieveOut .35s ease-in forwards}.achievement-icon{font-size:1.6rem;flex-shrink:0}.achievement-info{display:flex;flex-direction:column;gap:1px}.achievement-label{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;color:var(--green,#84ad4b);font-weight:700}.achievement-name{font-size:.85rem;font-weight:600;color:var(--text,#f4eadc)}.achievement-desc{font-size:.7rem;color:var(--text-3,#9b9a8d)}@keyframes achieveSlide{0%{transform:translate(100px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes achieveOut{to{transform:translate(100px);opacity:0}}.achievements-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px}.achieve-card{display:flex;align-items:center;gap:6px;padding:6px 8px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:6px;transition:opacity .2s}.achieve-card.locked{opacity:.35;filter:grayscale(1)}.achieve-card .achieve-icon{font-size:1.1rem;flex-shrink:0}.achieve-card .achieve-text{display:flex;flex-direction:column}.achieve-card .achieve-name{font-size:.68rem;font-weight:600;color:var(--text,#f4eadc)}.achieve-card .achieve-desc{font-size:.58rem;color:var(--text-3,#9b9a8d);line-height:1.3}.tutorial-overlay{position:fixed;inset:0;z-index:9990;background:#0006;pointer-events:none}.tutorial-tooltip{position:fixed;z-index:9999;background:var(--surface,#1e272e);border:2px solid var(--green,#84ad4b);border-radius:10px;padding:16px 20px;max-width:380px;min-width:260px;box-shadow:0 12px 40px #00000080}.tutorial-step-indicator{font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--green,#84ad4b);margin-bottom:6px;font-weight:700}.tutorial-msg{font-size:.82rem;line-height:1.5;color:var(--text,#f4eadc);margin-bottom:12px}.tutorial-msg strong{color:var(--green,#84ad4b)}.tutorial-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tutorial-next-btn{font-size:.78rem;padding:6px 18px}.tutorial-skip-btn{font-size:.68rem;color:var(--text-3,#9b9a8d);background:none;border:none;cursor:pointer;padding:4px 8px;text-decoration:underline}@media(hover:hover)and (pointer:fine){.tutorial-skip-btn:hover{color:var(--text,#f4eadc)}}.tutorial-hint-text{font-size:.7rem;color:var(--text-3,#9b9a8d);font-style:italic}.tutorial-highlight{position:relative;z-index:9995;animation:tutPulse 1.2s ease-in-out infinite;box-shadow:0 0 0 3px var(--green,#84ad4b),0 0 12px #84ad4b66!important;border-radius:6px}@keyframes tutPulse{0%,to{box-shadow:0 0 0 3px var(--green,#84ad4b),0 0 12px #84ad4b4d}50%{box-shadow:0 0 0 5px var(--green,#84ad4b),0 0 20px #84ad4b80}}.puzzle-card{max-width:480px}.puzzle-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.puzzle-diff{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:4px;background:#ffffff0f}.puzzle-diff--easy{color:#84ad4b;border:1px solid #84ad4b}.puzzle-diff--medium{color:#f0c040;border:1px solid #f0c040}.puzzle-diff--hard{color:#e04040;border:1px solid #e04040}.puzzle-streak-badge{font-size:.7rem;color:var(--green,#84ad4b);font-weight:600}.puzzle-prompt{font-size:.78rem;color:var(--text-2);margin-bottom:12px}.puzzle-board{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}.puzzle-section{background:#ffffff08;border-radius:8px;padding:10px}.puzzle-section--target{border:1px solid rgba(255,127,110,.25)}.puzzle-section-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);display:block;margin-bottom:6px;font-weight:600}.puzzle-card .home-dice-row,.puzzle-card .home-dice-row .hero-die{pointer-events:auto}.puzzle-die{cursor:pointer;transition:transform .15s,box-shadow .15s}@media(hover:hover)and (pointer:fine){.puzzle-die:hover{transform:scale(1.08)}}.puzzle-die.selected{box-shadow:0 0 0 2px var(--green,#84ad4b);border-radius:6px}.puzzle-die .die-svg,.puzzle-die .die-label{pointer-events:none}.puzzle-expr-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;min-height:32px}.puzzle-expr{flex:1;font-family:var(--f-mono);font-size:1.1rem;font-weight:600;color:var(--text);padding:6px 10px;background:#ffffff0a;border-radius:6px;min-height:28px}.puzzle-result{font-family:var(--f-mono);font-size:1rem;font-weight:700;min-width:60px;text-align:right}.puzzle-result--match{color:var(--green,#84ad4b)}.puzzle-result--miss{color:var(--red,#ff7f6e)}.puzzle-result--correct{color:var(--green,#84ad4b);font-size:1.2rem}.puzzle-ops{display:flex;gap:6px;margin-bottom:10px;justify-content:center}.review-card{max-width:880px;width:min(94vw,880px);max-height:88dvh;overflow:hidden;display:flex;flex-direction:column}.review-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.review-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;flex:1;min-height:0}.review-stage{display:flex;gap:10px;align-items:stretch;min-height:0}.review-board{flex:1;display:flex;flex-direction:column;gap:6px;justify-content:center;background:var(--surface);border:1px solid var(--b1);border-radius:var(--r);padding:14px 10px;min-width:0}.rv-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.rv-side-label{font-size:var(--fs-2xs);font-weight:800;color:var(--text-3);text-align:center;letter-spacing:.04em}.review-board .rv-die{width:54px;min-height:0;height:auto;padding:2px;border:2px solid transparent;border-radius:var(--r-sm);pointer-events:none}.review-board .rv-die svg,.review-board .rv-die .die-svg{width:100%;height:auto;display:block}.review-board .rv-die .die-label{font-size:9px;color:var(--text-3);margin-top:1px}.review-board .rv-die.captured{opacity:.4}.rv-attacker{outline:2px solid #5b9bd5;outline-offset:1px}.rv-target{outline:2px solid var(--red);outline-offset:1px}.rv-target.rv-good{outline-color:var(--amber)}.rv-target.rv-inaccuracy{outline-color:#e87040}.rv-target.rv-best,.rv-target.rv-excellent,.rv-target.rv-brilliant{outline-color:var(--green)}.review-evalbar{position:relative;width:16px;flex:0 0 auto;background:#1f1d1b;border:1px solid var(--b1);border-radius:8px;overflow:hidden}.review-evalbar-fill{position:absolute;left:0;right:0;bottom:0;height:50%;background:#e8e4dc;transition:height .2s ease}.review-evalbar-num{position:absolute;bottom:3px;left:50%;transform:translate(-50%);font-size:8px;font-weight:800;color:#1f1d1b;font-family:var(--f-mono);mix-blend-mode:difference;color:#fff}.review-list{display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:4px;min-height:0}.review-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--b1);border-radius:var(--r);background:var(--surface);width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;transition:border-color .12s,box-shadow .12s}@media(hover:hover)and (pointer:fine){.review-row:hover{border-color:#ffffff2e}}.review-row.active{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.review-turn{font-size:var(--fs-xs);font-weight:800;color:var(--text-3)}.review-main{min-width:0}.review-class{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:var(--fs-2xs);font-weight:900;margin-bottom:5px}.review-class.best,.review-class.brilliant,.review-class.excellent{background:#81b64c29;color:var(--green)}.review-class.good{background:#f0c04029;color:var(--amber)}.review-class.inaccuracy{background:#e8704029;color:#e87040}.review-class.mistake,.review-class.blunder{background:#fa412d29;color:var(--red)}.review-move{font-size:var(--fs-xs);color:var(--text);line-height:1.45}.review-best{font-size:var(--fs-2xs);color:var(--text-3);line-height:1.45;margin-top:3px}.review-empty{padding:18px;text-align:center;color:var(--text-3);font-size:var(--fs-sm)}.review-footer{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--b1)}.review-coach{font-size:var(--fs-sm);color:var(--text);line-height:1.5}.review-coach-tag{margin-right:8px;vertical-align:middle}.review-coach-who{font-weight:700;color:var(--text-3);margin-right:4px}.review-nav{display:flex;align-items:center;justify-content:center;gap:14px}.review-nav .modal-btn{min-width:52px;font-size:1.1rem;line-height:1;padding:8px 14px}.review-nav .modal-btn:disabled{opacity:.35;cursor:default}.review-nav-pos{font-family:var(--f-mono);font-weight:800;color:var(--text-3);min-width:72px;text-align:center}@media(max-width:640px){.review-card{width:min(94vw,420px);max-height:92dvh;padding:22px 20px}.review-header{margin-bottom:10px}.review-body{grid-template-columns:1fr;gap:10px}.review-stage{flex-direction:column;gap:8px}.review-evalbar{order:2;width:100%;height:18px;min-height:18px;border-radius:999px}.review-evalbar-fill{inset:0 auto 0 0;width:50%;height:auto!important;border-radius:999px}.review-evalbar-num{left:auto;right:8px;bottom:50%;transform:translateY(50%);font-size:10px;mix-blend-mode:normal;color:var(--text)}.review-board{padding:14px 8px 12px;gap:8px}.rv-row{gap:10px;row-gap:8px}.review-board .rv-die{width:clamp(50px,14.5vw,58px);padding:3px}.review-board .rv-die .die-label{font-size:10px;margin-top:2px}.rv-side-label{font-size:.7rem}.review-list{max-height:28dvh;padding-right:2px}.review-row{grid-template-columns:56px minmax(0,1fr);gap:8px;padding:11px 10px}.review-turn{font-size:.72rem}.review-move{font-size:.74rem}.review-best{font-size:.68rem}.review-footer{gap:12px;margin-top:10px;padding-top:10px}.review-coach{font-size:.8rem}.review-nav{gap:10px}.review-nav .modal-btn{flex:1;min-height:44px}}
