@font-face{font-family:Cinzel Decorative;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cinzel-decorative-latin-ext-400-normal-bHvtSFkP.woff2)format("woff2"),url(/assets/cinzel-decorative-latin-ext-400-normal-DFyBg16u.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cinzel Decorative;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cinzel-decorative-latin-400-normal-C3uAaiWr.woff2)format("woff2"),url(/assets/cinzel-decorative-latin-400-normal-Bspm-4mP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}img,svg,video,canvas{max-inline-size:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{background:0 0;border:none;padding:0}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}:focus:not(:focus-visible){outline:none}}@layer tokens{:root{--clay-900:#1b1410;--clay-800:#2f261e;--clay-700:#3a2f26;--clay-600:#4a3a24;--clay-500:#6b5744;--clay-400:#8a7358;--sand-50:#f7efdf;--sand-100:#f1e6d0;--sand-200:#e8dcc4;--sand-300:#d9cbb0;--sand-400:#cfbe9d;--sand-500:#b09b7c;--gold-300:#eccd5c;--gold-500:#cba62a;--gold-700:#94750f;--gold-800:#7a5f12;--ink-900:#2b2b2b;--red-500:#c4453a;--surface-base:var(--clay-900);--surface-sunken:var(--clay-800);--surface-raised:var(--clay-700);--surface-raised-hover:var(--clay-600);--surface-inset:var(--clay-600);--border:var(--clay-500);--border-strong:var(--clay-400);--border-muted:color-mix(in oklab, var(--border) 60%, var(--surface-base));--text:var(--sand-300);--text-strong:var(--sand-200);--text-muted:color-mix(in oklab, var(--text) 70%, var(--surface-raised));--accent:var(--gold-500);--accent-bright:var(--gold-300);--accent-deep:var(--gold-700);--accent-contrast:var(--clay-900);--accent-tint:color-mix(in oklab, var(--accent) 18%, transparent);--danger:var(--red-500);--focus-ring:var(--accent-bright);--piece-light:var(--sand-200);--piece-dark:var(--ink-900);--piece-light-pip:oklab(0% none none/.4);--piece-dark-pip:oklab(100% 0 5.96046e-8/.4);--piece-light-edge:oklab(0% none none/.33);--piece-dark-edge:oklab(100% 0 5.96046e-8/.2);--piece-light-ink:color-mix(in oklab, black 80%, var(--piece-light));--piece-dark-ink:color-mix(in oklab, white 85%, var(--piece-dark));--ring-arc:white;--ring-track:var(--surface-sunken);--die-face-lit:var(--sand-100);--die-face-mid:var(--sand-400);--die-face-shade:var(--sand-500);--die-mark-lit:var(--sand-50);--die-mark-mid:var(--sand-300);--die-mark-shade:color-mix(in oklab, var(--sand-500) 80%, var(--sand-300));--die-mark-gold-lit:var(--accent-bright);--die-mark-gold-mid:var(--accent);--die-mark-gold-shade:var(--accent-deep);--die-mark-gold-edge:var(--gold-800);--die-edge:var(--border);--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-xs:.25rem;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.5rem;--radius-full:9999px;--stroke-hairline:1px;--stroke-thin:1.5px;--stroke-thick:3px;--shadow-1:0 1px 2px oklab(0% none none/.35);--shadow-2:0 2px 2px oklab(0% none none/.4);--shadow-3:0 4px 12px oklab(0% none none/.45);--glow-accent:0 0 5px color-mix(in oklab, var(--accent) 34%, transparent);--dur-instant:80ms;--dur-fast:.12s;--dur-normal:.2s;--dur-slow:.32s;--dur-slower:.48s;--ease-out:cubic-bezier(.2, .7, .3, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--ease-pop:cubic-bezier(.2, 1.3, .4, 1);--ease-bounce:cubic-bezier(.2, 1.4, .4, 1);--loop-flow:.7s;--loop-pulse:1.4s;--loop-breathe:1.8s;--loop-tremble:.48s;--z-board:10;--z-pieces:20;--z-hud:30;--z-scene-overlay:100;--z-modal:200;--z-toast:300;--layout-max-inline:56.25rem;--scene-max-inline:26rem;--scrim:color-mix(in oklab, var(--surface-base) 72%, transparent);--board-max-block:60svb;--die-inline-size:2.5rem;--die-block-size:2.25rem;--swatch-size:.75rem;--tap-target:2.75rem;--font-display:"Cinzel Decorative", system-ui;--font-body:"Inter Variable", sans-serif;--font-numeric:var(--font-body);--text-2xs:clamp(.688rem, .66rem + .14vi, .75rem);--text-xs:clamp(.75rem, .72rem + .15vi, .813rem);--text-sm:clamp(.813rem, .78rem + .17vi, .875rem);--text-md:clamp(.875rem, .83rem + .23vi, 1rem);--text-lg:clamp(1rem, .94rem + .3vi, 1.125rem);--text-xl:clamp(1.125rem, 1.03rem + .47vi, 1.375rem);--text-2xl:clamp(1.375rem, 1.2rem + .86vi, 1.75rem);--text-3xl:clamp(1.75rem, 1.42rem + 1.63vi, 2.5rem);--text-4xl:clamp(2.25rem, 1.68rem + 2.86vi, 3.5rem);--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.5;--leading-loose:1.7;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.02em;--tracking-wider:.08em;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--measure:62ch}}@layer theme{:root,[data-theme=clay]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=lapis]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-base:#0d1420;--surface-sunken:#121c2c;--surface-raised:#1a2637;--surface-raised-hover:#243449;--surface-inset:#243449;--border:#3c5372;--border-strong:#6a86a8;--text:#cfdcef;--text-strong:#e8f0fb;--accent:#4fb3d9;--accent-bright:#8fd8f2;--accent-deep:#1d6b8c;--accent-contrast:#0d1420;--piece-light:#e8f0fb;--piece-dark:#16202e;--die-face-lit:#e8f0fb;--die-face-mid:#b6c6da;--die-face-shade:#90a2b8;--die-mark-lit:#f4f8fd;--die-mark-mid:#cbd8e7;--die-mark-shade:#a7b7c9}[data-theme=ivory]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface-base:#e6dcc6;--surface-sunken:#d8ccb2;--surface-raised:#f2ead8;--surface-raised-hover:#e9dec5;--surface-inset:#ded0b4;--border:#b6a37c;--border-strong:#8d7a5c;--text:#4a3a28;--text-strong:#2e2318;--accent:#a8791a;--accent-bright:#d0a63a;--accent-deep:#6f4d0c;--accent-contrast:#f7f1e3;--piece-light:#fbf5e7;--piece-dark:#3b3129;--die-face-lit:#fbf5e7;--die-face-mid:#e0d2b6;--die-face-shade:#c3b291;--die-mark-lit:#fff;--die-mark-mid:#ece0c8;--die-mark-shade:#cdbb99}}@layer base{html,body{block-size:100%}body{background-color:var(--surface-base);accent-color:var(--accent);place-items:center;display:grid;overflow:hidden}::selection{background-color:var(--accent-tint);color:var(--text-strong)}body{font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--text);text-rendering:optimizelegibility}}@layer components{.type-display{font-family:var(--font-display);font-size:var(--text-4xl);font-weight:var(--weight-regular);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--text-strong)}.type-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight);color:var(--text-strong)}.type-heading{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-snug);letter-spacing:var(--tracking-wide);color:var(--text-strong)}.type-eyebrow{font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-muted)}.type-body{font-size:var(--text-md);line-height:var(--leading-normal);max-inline-size:var(--measure)}.type-caption{font-size:var(--text-xs);line-height:var(--leading-snug);color:var(--text-muted)}.type-numeric{font-family:var(--font-numeric);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}@keyframes dash-flow{to{stroke-dashoffset:-32px}}@keyframes ring-pulse{50%{opacity:.45;transform:scale(1.12)}}@keyframes ghost-breathe{50%{opacity:.7}}@keyframes threat-tremble{25%{transform:translate(-1.2px)rotate(-2.5deg)}75%{transform:translate(1.2px)rotate(2.5deg)}}@keyframes die-spin{to{transform:rotate(calc(var(--spin-dir,1) * 360deg))}}@keyframes die-hop{to{transform:translateY(calc(-1 * var(--throw-h,14px)))}}@keyframes die-land{0%{transform:translateY(-7px)scale(1.06,.94)}40%{transform:translateY(0)scale(1.16,.84)}to{transform:translateY(0)scale(1)}}@keyframes die-pulse{50%{opacity:.55}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-scrolled-top{to{--fade-start:var(--fade-size)}}@keyframes fade-scrolled-bottom{0%{--fade-end:var(--fade-size)}}@keyframes pop-in{0%{opacity:0;transform:scale(.82)}60%{opacity:1;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}#app{block-size:100dvb;inline-size:100%;padding:var(--space-md);justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;padding-block-end:max(var(--space-md), env(safe-area-inset-bottom));display:flex}.controls{inline-size:100%;max-inline-size:var(--layout-max-inline);align-items:stretch;gap:var(--space-md);flex:none;display:flex}.button{min-block-size:var(--tap-target);justify-content:center;align-items:center;gap:var(--space-xs);padding-inline:var(--space-md);padding-block:var(--space-xs);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface-raised);color:var(--text);font-weight:var(--weight-medium);text-align:center;cursor:pointer;transition:background-color var(--dur-fast), border-color var(--dur-normal), color var(--dur-fast);display:inline-flex}.button:hover:not(.blocked){background-color:var(--surface-raised-hover);border-color:var(--accent)}.button:active:not(.blocked){transform:translateY(var(--stroke-hairline))}.button.blocked{cursor:not-allowed;border-color:var(--border-muted);background-color:var(--surface-sunken);color:var(--text-muted)}.button-icon{flex:none;block-size:1.25em;inline-size:1.25em}.button-primary{background-color:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:var(--weight-semibold)}.button-primary:hover:not(.blocked){background-color:var(--accent-bright);border-color:var(--accent-bright)}.button-ghost{background-color:#0000;border-color:#0000}.button-ghost:hover:not(.blocked){background-color:var(--surface-raised)}.button-ghost.blocked{background-color:#0000;border-color:#0000}.button-lg{min-block-size:calc(var(--tap-target) * 1.2);font-size:var(--text-lg);padding-inline:var(--space-lg)}.button-square{aspect-ratio:1;padding-inline:0}.dialog{inline-size:min(100% - var(--space-lg) * 2, var(--scene-max-inline));max-block-size:calc(100dvb - var(--space-xl));gap:var(--space-md);--stack-gap:var(--space-md);padding:var(--space-lg);color:var(--text);background-color:var(--surface-raised);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-3);flex-direction:column;margin:auto;overflow:hidden}.dialog[open]{display:flex}.dialog-end{border-radius:var(--radius-xl) 0 0 var(--radius-xl);block-size:100dvb;max-block-size:100dvb;inline-size:min(100%,24rem);border-inline-end:none;margin:0 0 0 auto;padding-inline-end:max(var(--space-lg), env(safe-area-inset-right))}.dialog::backdrop{background-color:var(--scrim)}.dialog-scroll{min-block-size:0;margin-inline:calc(var(--space-lg) * -1);padding-inline:var(--space-lg);overflow-y:auto}.dialog-title{align-items:center;gap:var(--space-xs);flex:none;display:flex}.dialog-icon{block-size:1.1em;inline-size:1.1em;color:var(--accent);flex:none}.dialog-light .dialog-icon,.dialog-light .dialog-title{color:var(--piece-light)}.dialog-dark .dialog-icon,.dialog-dark .dialog-title{color:var(--text-strong)}.dialog-actions{--row-gap:var(--space-xs);--stack-gap:var(--space-sm);flex:none}.dialog-actions.row>.button{flex:1}.pause-bar{z-index:var(--z-scene-overlay);position:fixed;inset-block-start:max(var(--space-md), env(safe-area-inset-top));inset-inline-end:max(var(--space-md), env(safe-area-inset-right))}.info-list{align-items:baseline;column-gap:var(--space-md);row-gap:var(--space-3xs);font-size:var(--text-sm);grid-template-columns:auto 1fr;padding-block-end:var(--space-sm);display:grid}.info-list>dt{color:var(--text-muted)}.info-value{text-align:end;color:var(--text-strong)}.info-seed{-webkit-user-select:all;user-select:all}.info-section{grid-column:1/-1;margin-block-start:var(--space-sm)}.info-section:first-child{margin-block-start:0}.history-tab{z-index:var(--z-scene-overlay);position:fixed;inset-block-start:50%;inset-inline-end:0;translate:0 -50%}.history-tab .button{border-start-end-radius:0;border-end-end-radius:0}.history-list{margin:0;padding:0;list-style:none}.history-entry{align-items:center;gap:var(--space-sm);padding-block:var(--space-xs);border-block-start:var(--stroke-hairline) solid var(--border);display:flex}.history-entry:first-child{border-block-start:none}.history-ordinal{text-align:end;font-variant-numeric:tabular-nums;flex:none;min-inline-size:2ch}.history-text{flex-direction:column;flex:1;min-inline-size:0;display:flex}.history-empty{margin:0}.field{justify-content:space-between;align-items:center;gap:var(--space-md);padding-block:var(--space-sm);border-block-start:var(--stroke-hairline) solid var(--border-muted);display:flex}.field:first-child{border-block-start:none}.field-block{justify-items:stretch;gap:var(--space-xs);display:grid}.field-text{gap:var(--space-3xs);min-inline-size:0;display:grid}.text-input{min-inline-size:0;min-block-size:var(--tap-target);padding-inline:var(--space-sm);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface-sunken);color:var(--text-strong);transition:border-color var(--dur-normal);flex:1}.text-input::placeholder{color:var(--text-muted)}.text-input:hover{border-color:var(--accent)}.stepper{flex:none}.stepper-value{min-inline-size:var(--tap-target);text-align:center;font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-strong)}.slider{inline-size:calc(var(--tap-target) * 3);min-block-size:var(--tap-target);accent-color:var(--accent);cursor:pointer;flex:none}.switch{inline-size:calc(var(--tap-target) * 1.1);block-size:calc(var(--tap-target) * .6);padding:var(--space-3xs);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-full);background-color:var(--surface-sunken);cursor:pointer;transition:background-color var(--dur-normal), border-color var(--dur-normal);flex:none;justify-content:flex-start;display:flex}.switch:hover{border-color:var(--accent)}.field.blocked{opacity:.5}.field.blocked .switch{cursor:not-allowed}.field.blocked .switch:not(.on):hover{border-color:var(--border)}.switch.on{background-color:var(--accent);border-color:var(--accent);justify-content:flex-end}.switch-thumb{aspect-ratio:1;border-radius:var(--radius-full);background-color:var(--text);block-size:100%;box-shadow:var(--shadow-1);transition:background-color var(--dur-normal)}.switch.on .switch-thumb{background-color:var(--accent-contrast)}.dropdown-field{gap:var(--space-sm)}.dropdown-field.blocked{opacity:.5}.dropdown-trigger{inline-size:min(10rem,55%);min-block-size:var(--tap-target);align-items:center;gap:var(--space-xs);padding-inline:var(--space-sm);padding-block:var(--space-2xs);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-sm);background-color:var(--surface-sunken);color:var(--text);cursor:pointer;transition:background-color var(--dur-fast), border-color var(--dur-normal);flex:none;display:flex}.dropdown-trigger:hover{background-color:var(--surface-raised-hover);border-color:var(--accent)}.dropdown-field.blocked .dropdown-trigger{cursor:not-allowed;border-color:var(--border-muted)}.dropdown-field.blocked .dropdown-trigger:hover{background-color:var(--surface-sunken);border-color:var(--border-muted)}.dropdown-chevron{block-size:1.125em;inline-size:1.125em;color:var(--text-muted);transition:transform var(--dur-normal) var(--ease-out);flex:none;margin-inline-start:auto}.dropdown-trigger[aria-expanded=true] .dropdown-chevron{transform:rotate(180deg)}.dropdown-icon{flex:none;block-size:1.125em;inline-size:1.125em}.dropdown-label{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:var(--leading-snug);color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;overflow:hidden}.dropdown-menu{padding:var(--space-2xs);overscroll-behavior:contain;border:var(--stroke-hairline) solid var(--border-strong);border-radius:var(--radius-md);background-color:var(--surface-raised);max-inline-size:min(20rem,100vi - 1rem);box-shadow:var(--shadow-3);animation:dropdown-in var(--dur-fast) var(--ease-out);margin:0;position:fixed;inset:auto;overflow-y:auto}.dropdown-option{align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--dur-fast);display:flex}.dropdown-option:hover{background-color:var(--surface-raised-hover)}.dropdown-option:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.dropdown-option[aria-selected=true]{background-color:var(--accent-tint)}.dropdown-option>.swatch{flex:none}.dropdown-text{min-inline-size:0;display:grid}.dropdown-check{block-size:1.125em;inline-size:1.125em;color:var(--accent);opacity:0;flex:none;margin-inline-start:auto}.dropdown-option[aria-selected=true] .dropdown-check{opacity:1}@keyframes dropdown-in{0%{opacity:0;transform:translateY(calc(-1 * var(--space-2xs)))}}.scene{inline-size:100%;max-inline-size:var(--scene-max-inline);gap:var(--space-lg);min-block-size:0;max-block-size:100%;padding-block:var(--space-md);flex-direction:column;justify-content:safe center;display:flex}.scene-body{align-content:start;gap:var(--space-lg);min-block-size:0;display:grid;overflow-y:auto}.scene-head{gap:var(--space-2xs);text-align:center;flex:none;justify-items:center;display:grid}.scene-fields{padding-inline:var(--space-md);padding-block:var(--space-2xs);background-color:var(--surface-raised);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-lg);display:grid}.scene-advanced{display:block}.scene-advanced>summary{cursor:pointer;list-style:none}.scene-advanced>summary::-webkit-details-marker{display:none}.scene-advanced>summary:hover{color:var(--accent)}.scene-advanced-chevron{block-size:1.25em;inline-size:1.25em;color:var(--text-muted);transition:rotate var(--dur-normal);flex:none}.scene-advanced[open] .scene-advanced-chevron{rotate:180deg}.scene-actions{--stack-gap:var(--space-sm);flex:none}.board{flex:1;min-block-size:0;inline-size:100%}.board-horizontal{max-inline-size:var(--layout-max-inline)}.board-vertical{max-inline-size:min(100%, var(--board-max-block))}.square{fill:var(--surface-raised);stroke:var(--border);stroke-width:var(--stroke-thin)}.square.rosette{fill:var(--surface-inset);stroke:var(--accent)}.square-pattern{color:var(--border);pointer-events:none;opacity:.5}.rosette-mark{fill:var(--accent);pointer-events:none}.piece{cursor:default}.piece-lift{transform-origin:0 0}.piece-body{stroke:var(--piece-light-edge);stroke-width:var(--stroke-thin)}.piece-pip{stroke:none;pointer-events:none}.piece-light .piece-body{fill:var(--piece-light)}.piece-light .piece-pip{fill:var(--piece-light-pip)}.piece-dark .piece-body{fill:var(--piece-dark);stroke:var(--piece-dark-edge)}.piece-dark .piece-pip{fill:var(--piece-dark-pip)}.piece.selectable{cursor:pointer}.piece.selectable .piece-body{stroke:var(--accent);stroke-width:var(--stroke-thick)}.piece:focus-visible{outline:none}.piece.selectable:hover .piece-body,.piece.selectable:focus-visible .piece-body{stroke-width:4.5px}.piece.threatened .piece-body{stroke:var(--danger);stroke-width:3.5px}.piece.threatened .piece-lift{animation:threat-tremble var(--loop-tremble) var(--ease-in-out) infinite}.preview-catcher{fill:#0000}.preview-target{fill:#0000;cursor:pointer}.move-preview{pointer-events:none}.move-track,.move-flow{fill:none;stroke:var(--accent);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.move-track{opacity:.22}.move-flow{stroke-dasharray:14 18;animation:dash-flow var(--loop-flow) linear infinite}.arrow-head{fill:var(--accent)}.dest-ring{fill:none;stroke:var(--accent);stroke-width:2.5px;transform-origin:50%;transform-box:fill-box;animation:ring-pulse var(--loop-pulse) var(--ease-in-out) infinite}.ghost{opacity:.45;animation:ghost-breathe var(--loop-breathe) var(--ease-in-out) infinite}.ghost .piece-body{stroke:var(--accent);stroke-width:2px;stroke-dasharray:5 4}.move-preview.rosette .ghost .piece-body{filter:drop-shadow(0 0 6px var(--accent))}.move-preview.capture .move-track,.move-preview.capture .move-flow,.move-preview.capture .dest-ring,.move-preview.capture .ghost .piece-body{stroke:var(--danger)}.arrow-head.capture{fill:var(--danger)}.dice-panel{gap:var(--space-sm);flex:none;align-content:start;justify-items:center;display:grid}.dice-tray{justify-items:center;gap:var(--space-2xs);padding:var(--space-xs);border:var(--stroke-thick) solid var(--border);border-radius:var(--radius-lg);background-color:var(--surface-raised);cursor:pointer;transition:background-color var(--dur-fast), border-color var(--dur-normal);display:grid}.dice-row{gap:var(--space-xs);grid-template-columns:repeat(2,1fr);place-items:center;display:grid}.dice-row .die:first-child:nth-last-child(odd){grid-column:span 2}.dice-tray:hover:not(.blocked){background-color:var(--surface-raised-hover);border-color:var(--accent)}.dice-tray.blocked{cursor:not-allowed;border-color:var(--border-muted);background-color:var(--surface-sunken)}.die{transform-origin:50% 70%;filter:drop-shadow(var(--shadow-2))}.die svg{inline-size:var(--die-inline-size);block-size:var(--die-block-size);overflow:visible}.die .face{stroke:var(--die-edge);stroke-width:.75px;stroke-linejoin:round}.die .face-left{fill:var(--die-face-lit)}.die .face-right{fill:var(--die-face-mid)}.die .face-base{fill:var(--die-face-shade)}.die .die-edge{fill:none;stroke:var(--die-edge);stroke-width:2px;stroke-linejoin:round}.die .mark-face{stroke:var(--die-edge);stroke-width:.9px;stroke-linejoin:round;transition:fill var(--dur-fast), stroke var(--dur-fast)}.die .mark-left{fill:var(--die-mark-lit)}.die .mark-right{fill:var(--die-mark-mid)}.die .mark-base{fill:var(--die-mark-shade)}.die .mark-gold{stroke:var(--die-mark-gold-edge)}.die .mark-gold.mark-left{fill:var(--die-mark-gold-lit)}.die .mark-gold.mark-right{fill:var(--die-mark-gold-mid)}.die .mark-gold.mark-base{fill:var(--die-mark-gold-shade)}.die.marked{filter:drop-shadow(var(--shadow-2)) drop-shadow(var(--glow-accent))}.dice-tray.blocked .die{opacity:.82}.die.rolling{animation:die-hop var(--hop-dur,.28s) var(--ease-in-out) infinite alternate;will-change:transform;filter:none}.die.rolling svg{animation:die-spin var(--spin-dur,.5s) linear infinite;transform-origin:50% 65%;will-change:transform}.die.rolling .mark-face{transition:none}.die.landed{animation:die-land var(--dur-slow) var(--ease-bounce)}.dice-total{text-align:center;min-block-size:1lh;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text-muted);animation:pop-in var(--dur-slow) var(--ease-pop);display:block}.dice-total.pass{color:var(--danger)}.panel{justify-content:space-between;align-items:flex-start;gap:var(--space-lg);padding:var(--space-sm) var(--space-sm);color:var(--text);background-color:var(--surface-raised);border:var(--stroke-hairline) solid var(--border);border-radius:var(--radius-lg);flex:1;display:flex}.panel-main{align-content:start;gap:var(--space-xs);min-inline-size:0;display:grid}.panel-turn{align-items:center;gap:var(--space-2xs);font-size:var(--text-lg);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);color:var(--accent);display:flex}.panel-message{min-block-size:2.6em;font-size:var(--text-md);line-height:var(--leading-snug);color:var(--text-strong)}.panel-scores{align-content:start;gap:var(--space-xs);border-inline-start:var(--stroke-hairline) solid var(--border);flex:none;padding-inline-start:var(--space-lg);display:grid}.score-row{align-items:center;gap:var(--space-sm);opacity:.55;transition:opacity var(--dur-fast);display:flex}.score-row.active{opacity:1}.score-text{gap:var(--space-3xs);display:grid}.score-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong)}.score-counts{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap}.score-ring{--ring-size:3.25rem;inline-size:var(--ring-size);block-size:var(--ring-size);transition:--ring-progress var(--dur-slower) var(--ease-out);flex:none;place-items:center;display:grid}.score-ring>*{grid-area:1/1}.ring-dial{block-size:100%;inline-size:100%}.ring-dial circle{fill:none;stroke-linecap:round}.ring-track{stroke:var(--ring-track);stroke-width:4px}.ring-fill{stroke:var(--ring-arc);stroke-width:4px;stroke-dasharray:100;stroke-dashoffset:calc((100 - var(--ring-progress)) * 1px)}.ring-value{font-size:var(--text-2xs);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;counter-reset:ring-pct var(--ring-progress)}.ring-value:after{content:counter(ring-pct) "%"}.score-ring-light .ring-hole{fill:var(--piece-light)}.score-ring-light .ring-value{color:var(--piece-light-ink)}.score-ring-dark .ring-hole{fill:var(--piece-dark)}.score-ring-dark .ring-value{color:var(--piece-dark-ink)}.swatch{inline-size:var(--swatch-size);block-size:var(--swatch-size);border-radius:var(--radius-full);border:var(--stroke-hairline) solid var(--border);flex:none}.swatch-light{background-color:var(--piece-light)}.swatch-dark{background-color:var(--piece-dark)}@media (width<=43.75rem){.panel{align-items:stretch;gap:var(--space-xs);flex-direction:column}.panel-scores{z-index:var(--z-scene-overlay);align-items:center;gap:var(--space-xs);border-inline-start:none;padding-inline-start:0;display:flex;position:fixed;inset-block-start:max(var(--space-md), env(safe-area-inset-top));inset-inline-start:max(var(--space-md), env(safe-area-inset-left))}.score-text{display:none}.score-ring{--ring-size:2.75rem}}}@layer utilities{.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;padding:0;position:absolute;overflow:hidden}.stack{align-content:start;gap:var(--stack-gap,var(--space-sm));display:grid}.row{align-items:center;gap:var(--row-gap,var(--space-xs));display:flex}.scroll-fade{--fade-size:var(--space-lg);-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--fade-start), black calc(100% - var(--fade-end)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--fade-start), black calc(100% - var(--fade-end)), transparent 100%)}@supports (animation-timeline:scroll()){.scroll-fade{animation-name:fade-scrolled-top,fade-scrolled-bottom;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(self),scroll(self);animation-range:0 var(--fade-size), calc(100% - var(--fade-size)) 100%}}}@layer overrides{@media (prefers-reduced-motion:reduce){.move-flow,.dest-ring,.ghost,.piece.threatened .piece-lift,.die.landed,.dropdown-menu,.dialog[open],.dialog[open]::backdrop,.dice-total{animation:none}.die.rolling{animation:die-pulse var(--dur-slow) var(--ease-in-out) infinite}.die.rolling svg{animation:none}.score-ring{transition:none}}}@property --ring-progress{syntax:"<integer>";inherits:true;initial-value:0}@property --fade-start{syntax:"<length>";inherits:false;initial-value:0}@property --fade-end{syntax:"<length>";inherits:false;initial-value:0}@property --fade-size{syntax:"<length>";inherits:false;initial-value:0}
