@font-face{font-family:Cinzel Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(./cinzel-latin-ext-wght-normal-CG36JvV6.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:Cinzel Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(./cinzel-latin-wght-normal-DMUuCU8H.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}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-ext-wght-normal-D4X5GqEv.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-vietnamese-wght-normal-U01xdrZh.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-ext-wght-normal-CXYtwYOx.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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-wght-normal-BzFMHfZw.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}:root{--walnut-900:#120b07;--walnut-800:#1c120b;--walnut-700:#2a1b11;--walnut-600:#3a2718;--walnut-500:#4f3520;--gold-300:#f8e2a4;--gold-400:#f2c96a;--gold-500:#e2ae3f;--gold-600:#b8862a;--ink:#f6ecda;--ink-2:#d9c7a8;--muted:#a8926f;--felt:#1f6e3a;--ruby:#c8323c;--ruby-2:#e5484d;--sky:#5aa9e6;--ok:#58b36a;--line:#f2c96a38;--line-strong:#f2c96a73;--card:#ffeecd0b;--card-2:#ffeecd14;--shadow:0 10px 30px #00000073;--shadow-sm:0 3px 10px #00000059;--radius:16px;--radius-sm:10px;--font-display:"Cinzel Variable", "Cinzel", Georgia, serif;--font-body:"Nunito Variable", "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--header-h:64px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}html,body{max-width:100%;overflow-x:clip}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 700px at 20% -10%, #e2ae3f1f, transparent 60%), radial-gradient(900px 600px at 110% 10%, #c8323c1a, transparent 60%), linear-gradient(180deg, var(--walnut-800), var(--walnut-900));-webkit-font-smoothing:antialiased;overscroll-behavior:none;background-attachment:fixed;margin:0}body:before{content:"";pointer-events:none;opacity:.06;z-index:0;background-image:repeating-linear-gradient(92deg,#ffffff80 0 1px,#0000 1px 7px,#0009 7px 8px,#0000 8px 19px);position:fixed;inset:0}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--gold-400)}h1,h2,h3{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-weight:700}h1{background:linear-gradient(180deg, var(--gold-300), var(--gold-500) 60%, var(--gold-600));color:#0000;text-shadow:0 2px 18px #e2ae3f2e;-webkit-background-clip:text;background-clip:text;font-size:clamp(1.7rem,3vw + 1rem,2.6rem)}h2{color:var(--gold-400);font-size:1.15rem}h3{color:var(--ink-2);font-size:.95rem}::selection{background:var(--gold-500);color:#1b1208}:focus-visible{outline:2px solid var(--gold-400);outline-offset:2px}.page{z-index:1;max-width:1180px;margin:0 auto;padding:24px 16px 80px;position:relative}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-head p{color:var(--muted);margin:6px 0 0}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.stack{flex-direction:column;gap:12px;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;display:grid}.app-header{z-index:20;height:var(--header-h);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:linear-gradient(#1c120bf5,#1c120bd9);align-items:center;gap:14px;padding:0 16px;display:flex;position:sticky;top:0;box-shadow:0 8px 24px #0000004d}.brand{color:var(--ink);font-family:var(--font-display);letter-spacing:.04em;white-space:nowrap;flex:none;align-items:center;gap:10px;font-size:1.15rem;font-weight:800;text-decoration:none;display:flex}.brand svg{filter:drop-shadow(0 2px 6px #e2ae3f66)}.brand span{background:linear-gradient(180deg, var(--gold-300), var(--gold-500));color:#0000;-webkit-background-clip:text;background-clip:text}.nav{gap:4px;min-width:0;display:flex}.nav a{color:var(--ink-2);border-radius:999px;padding:8px 12px;font-weight:700;text-decoration:none;transition:background .2s,color .2s}.nav a:hover{background:var(--card-2);color:var(--ink)}.nav a.active{color:#1b1208;background:linear-gradient(180deg, var(--gold-300), var(--gold-500))}@media (max-width:480px){.app-header{gap:6px;padding:0 10px}.app-header .btn{padding:0 12px}.app-header .btn.icon{min-width:40px;padding:0}.nav{gap:0}.nav a{padding:8px 9px;font-size:.92rem}.segmented button{padding:6px 9px}}@media (max-width:640px){.brand span{display:none}.hide-sm{display:none!important}}.btn{--b1:var(--walnut-600);--b2:var(--walnut-700);border:1px solid var(--line-strong);background:linear-gradient(180deg, var(--b1), var(--b2));min-height:40px;color:var(--ink);letter-spacing:.01em;cursor:pointer;white-space:nowrap;box-shadow:inset 0 1px 0 #ffffff14, var(--shadow-sm);-webkit-user-select:none;user-select:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:800;text-decoration:none;transition:transform .12s,filter .2s,box-shadow .2s;display:inline-flex}.btn:hover{filter:brightness(1.12)}.btn:active{transform:translateY(1px)scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.btn.primary{--b1:var(--gold-400);--b2:var(--gold-600);color:#241706;text-shadow:0 1px #ffffff59;border-color:#fff0c899}.btn.danger{--b1:#7d1d24;--b2:#561218;border-color:#e5484d80}.btn.ghost{--b1:transparent;--b2:transparent;box-shadow:none;border-color:#0000}.btn.ghost:hover{background:var(--card-2)}.btn.icon{width:40px;padding:0}.btn.sm{min-height:32px;padding:0 12px;font-size:.85rem}.btn.sm.icon{width:32px;padding:0}.btn svg{flex:none}.panel{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#3a2718b3,#21160ed9);padding:18px;position:relative}.panel+.panel{margin-top:16px}.panel h2{align-items:center;gap:8px;margin-bottom:12px;display:flex}.panel .hint{color:var(--muted);margin:-6px 0 12px;font-size:.88rem}.card{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s,border-color .2s;position:relative;overflow:hidden}.card:hover{box-shadow:var(--shadow);border-color:var(--line-strong);transform:translateY(-3px)}.badge{white-space:nowrap;border:1px solid var(--line);color:var(--ink-2);background:#00000059;border-radius:999px;flex:none;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;font-weight:800;display:inline-flex}.badge.gold{color:var(--gold-300);background:#e2ae3f2e}.field{flex-direction:column;gap:6px;display:flex}.field>label,.label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.8rem;font-weight:800}.input,select.input,textarea.input{border-radius:var(--radius-sm);border:1px solid var(--line);width:100%;min-height:42px;color:var(--ink);background:#00000059;padding:8px 12px;transition:border-color .2s,box-shadow .2s}.input:focus{border-color:var(--gold-500);outline:none;box-shadow:0 0 0 3px #e2ae3f33}.input.big{font-family:var(--font-display);font-size:1.3rem;font-weight:700}.input.num{text-align:center;width:90px}.check{cursor:pointer;align-items:center;gap:10px;padding:6px 0;display:flex}.check input{width:20px;height:20px;accent-color:var(--gold-500)}.segmented{border:1px solid var(--line);background:#00000059;border-radius:999px;padding:3px;display:inline-flex}.segmented button{color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 12px;font-weight:800}.segmented button.on{background:linear-gradient(180deg, var(--gold-300), var(--gold-500));color:#241706}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip-btn{border:1px solid var(--line);cursor:pointer;background:#0000004d;border-radius:12px;min-width:44px;height:38px;padding:0 12px;font-weight:800;transition:all .15s}.chip-btn:hover{border-color:var(--gold-500)}.chip-btn.on{background:linear-gradient(180deg, var(--gold-300), var(--gold-500));color:#241706;border-color:#0000}.stepper{border:1px solid var(--line);background:#00000059;border-radius:999px;align-items:center;display:inline-flex;overflow:hidden}.stepper button{cursor:pointer;width:40px;height:40px;color:var(--gold-400);background:0 0;border:0;font-size:1.2rem;font-weight:900}.stepper button:hover{background:var(--card-2)}.stepper input{text-align:center;background:0 0;border:0;width:64px;height:40px;font-size:1.1rem;font-weight:900}.stepper input:focus{outline:none}.callout{border-radius:var(--radius-sm);color:#d6ebfb;background:#5aa9e61a;border:1px solid #5aa9e659;gap:12px;padding:12px 14px;font-size:.9rem;line-height:1.45;display:flex}.callout.warn{color:var(--gold-300);background:#f2c96a1a;border-color:#f2c96a59}.callout strong{margin-bottom:2px;display:block}.swatches{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #ffffff26;border-radius:50%;width:30px;height:30px;padding:0;transition:transform .15s;box-shadow:inset 0 -3px 6px #00000059,inset 0 2px 4px #ffffff40}.swatch:hover{transform:scale(1.12)}.swatch.on{border-color:var(--gold-300);box-shadow:0 0 0 3px #f2c96a59,inset 0 -3px 6px #00000059}.swatch.custom{background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);position:relative;overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;position:absolute;inset:-8px}.overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#080503a8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--line-strong);background:linear-gradient(#3a2718,#1f140c);border-radius:20px;width:min(560px,100%);max-height:min(88vh,900px);padding:20px;overflow:auto;box-shadow:0 30px 80px #0009}.modal.wide{width:min(860px,100%)}.modal-head{align-items:center;gap:10px;margin-bottom:14px;display:flex}.modal-head h2{flex:1;margin:0}.modal-foot{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.toasts{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(520px,100% - 32px);display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;border:1px solid var(--line-strong);box-shadow:var(--shadow);background:linear-gradient(#45301d,#2a1b10);border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-weight:700;display:flex}.toast .actions{gap:8px;margin-left:auto;display:flex}.ctx-menu{z-index:150;border:1px solid var(--line-strong);background:linear-gradient(#45301d,#26190f);border-radius:14px;min-width:220px;max-width:min(340px,100vw - 16px);padding:6px;position:fixed;box-shadow:0 20px 50px #0009}.ctx-menu .ctx-title{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:4px;padding:8px 10px;font-weight:800;display:flex}.ctx-item{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-weight:700;display:flex}.ctx-item:hover,.ctx-item:focus-visible{background:#f2c96a24;outline:none}.ctx-item.danger{color:#ff8a8f}.ctx-values{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px;max-height:220px;padding:6px;display:grid;overflow:auto}.face-chip{--size:40px;width:var(--size);height:var(--size);border-radius:calc(var(--size) * .24);font-weight:900;font-size:calc(var(--size) * .46);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative;box-shadow:inset 0 -3px #00000040,inset 0 2px #ffffff40,0 3px 8px #00000059}.face-chip svg{width:74%;height:74%}.face-chip.len2{font-size:calc(var(--size) * .38)}.face-chip.len3{font-size:calc(var(--size) * .3)}button.face-chip{cursor:pointer;border:0;transition:transform .12s}button.face-chip:hover{transform:scale(1.08)}.face-chip.selected{outline:3px solid var(--sky);outline-offset:2px}.empty{text-align:center;color:var(--muted);padding:40px 16px}.divider{background:var(--line);height:1px;margin:14px 0}.kbd{border:1px solid var(--line);background:#0006;border-radius:6px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:.8em}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.play-hint.pulse,.grab-hand,.grab-text span{animation:none}}main{z-index:1;position:relative}.search{align-items:center;min-width:200px;display:flex;position:relative}.search>svg{color:var(--muted);pointer-events:none;position:absolute;left:12px}.search .input{border-radius:999px;padding-left:38px}.die-thumb{flex:none;justify-content:center;align-items:center;display:inline-flex}.die-thumb img{object-fit:contain;filter:drop-shadow(0 6px 8px #00000073);width:100%;height:100%}.die-thumb-ph{background:#ffffff0f;border-radius:22%;width:55%;height:55%;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.4}}.menu-wrap{position:relative}.pop-menu{z-index:30;border:1px solid var(--line-strong);min-width:200px;box-shadow:var(--shadow);background:linear-gradient(#45301d,#26190f);border-radius:14px;padding:6px;position:absolute;bottom:calc(100% + 6px);right:0}.chip-badge{color:#1b1208;background:var(--gold-400);border-radius:50%;place-items:center;width:18px;height:18px;font-size:10px;font-weight:900;display:grid;position:absolute;top:-6px;right:-6px;box-shadow:0 1px 4px #00000080}.chip-badge.re{background:var(--sky);left:-6px;right:auto}.face-chip.ghost{color:var(--muted);background:#00000059;border:2px dashed}.face-chip.struck{opacity:.5;filter:grayscale(.4)}.set-card{flex-direction:column;display:flex}.set-card-bg{border-bottom:1px solid var(--line);background-position:50%;background-size:cover;height:150px;display:block;position:relative}.set-card-bg:after{content:"";background:linear-gradient(#0000 40%,#00000073);position:absolute;inset:0}.set-card-dice{z-index:1;flex-wrap:wrap;place-content:center;gap:2px;padding:10px;display:flex;position:absolute;inset:0}.set-card-die{transition:transform .25s;position:relative}.set-card:hover .set-card-die:nth-child(odd){transform:translateY(-4px)rotate(-6deg)}.set-card:hover .set-card-die:nth-child(2n){transform:translateY(-2px)rotate(5deg)}.set-card-die .count{color:var(--gold-300);background:#000000b3;border-radius:999px;padding:1px 6px;font-size:.8rem;font-weight:900;position:absolute;bottom:2px;right:-2px}.set-card-play{z-index:2;color:#241706;background:linear-gradient(180deg, var(--gold-300), var(--gold-500));opacity:0;border-radius:50%;place-items:center;width:44px;height:44px;transition:all .2s;display:grid;position:absolute;bottom:12px;right:12px;transform:scale(.8);box-shadow:0 6px 16px #00000080}.set-card:hover .set-card-play{opacity:1;transform:scale(1)}.set-card-body{flex-direction:column;gap:10px;padding:14px;display:flex}.set-card-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.set-card-title h3{color:var(--ink);font-size:1.05rem}.set-card-body p{margin:0}.dice-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.die-card{flex-direction:column;display:flex}.die-card-thumb{background:radial-gradient(circle at 50% 60%,#f2c96a1f,#0000 60%);place-items:center;padding:14px 0 4px;display:grid}.die-card-thumb .die-thumb{transition:transform .35s cubic-bezier(.2,1.4,.4,1)}.die-card:hover .die-card-thumb .die-thumb{transform:rotate(-12deg)scale(1.08)}.die-card-body{padding:10px 14px 14px}.die-card-body h3{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;margin-bottom:8px;overflow:hidden}.picker-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:14px;display:grid}.picker-item{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;transition:all .15s;display:flex}.picker-item:hover{border-color:var(--gold-500);transform:translateY(-2px)}.picker-item.flash{animation:.5s flash}@keyframes flash{30%{background:#f2c96a59;transform:scale(1.05)}}.picker-name{text-align:center;font-size:.9rem;font-weight:800}.share-url{color:var(--gold-400);align-items:center;gap:8px;display:flex}.share-url .input{font-family:ui-monospace,monospace;font-size:.8rem}.about ul{margin:0;padding-left:18px;line-height:1.6}.about p{margin:0}.editor-grid{grid-template-columns:minmax(260px,380px) 1fr;align-items:start;gap:20px;display:grid}.editor-preview{top:calc(var(--header-h) + 16px);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow);background:radial-gradient(circle at 50% 45%,#f2c96a29,#0000 60%),linear-gradient(#1f6e3a59,#0f321b8c);flex-direction:column;gap:8px;padding:12px;display:flex;position:sticky}.preview-stage{aspect-ratio:1;cursor:grab;width:100%}.preview-stage:active{cursor:grabbing}.editor-preview input[type=range]{width:100%;accent-color:var(--gold-500)}@media (max-width:820px){.editor-grid{grid-template-columns:1fr}.editor-preview{top:calc(var(--header-h) + 4px);z-index:5;flex-direction:row;align-items:center;padding:6px 10px;position:sticky}.preview-stage{flex:none;width:120px}}.materials{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.material{border:1px solid var(--line);cursor:pointer;background:#00000040;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;font-size:.85rem;font-weight:800;transition:all .15s;display:flex}.material:hover{border-color:var(--gold-500)}.material.on{border-color:var(--gold-400);background:#f2c96a24;box-shadow:0 0 0 2px #f2c96a4d}.material-ball{border-radius:50%;width:38px;height:38px;box-shadow:inset -4px -6px 10px #00000073,0 3px 8px #0006}.range-row{border:1px solid var(--line);background:#0003;border-radius:14px;padding:10px}.range-main{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.range-num{color:var(--muted);align-items:center;gap:6px;font-size:.8rem;font-weight:800;display:flex}.range-num .input.num{width:70px;min-height:36px}.range-props{flex-wrap:wrap;flex:1;gap:6px;display:flex}.range-props .chip-btn{align-items:center;gap:6px;height:34px;font-size:.8rem;display:inline-flex}.dot{border:1.5px solid var(--muted);border-radius:50%;width:14px;height:14px;display:inline-block}.range-edit{overflow:hidden}.face-grid{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:10px;display:grid}.face-cell{flex-direction:column;align-items:center;gap:4px;display:flex}.face-idx{color:var(--muted);font-size:.72rem;font-weight:800}.face-modal{grid-template-columns:1.3fr 1fr;gap:20px;display:grid}@media (max-width:700px){.face-modal{grid-template-columns:1fr}}.icon-picker .search{width:100%}.icon-grid{background:#00000040;border-radius:12px;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:6px;max-height:260px;padding:4px;display:grid;overflow:auto}.icon-cell{aspect-ratio:1;cursor:pointer;color:var(--ink);background:#ffffff0a;border:1px solid #0000;border-radius:10px;place-items:center;display:grid}.icon-cell:hover{border-color:var(--gold-500);background:#f2c96a1f}.icon-cell.on{border-color:var(--gold-400);background:#f2c96a40}.set-editor{max-width:860px}.set-dice{flex-direction:column;gap:8px;display:flex}.set-die-row{border:1px solid var(--line);background:#0003;border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 10px;display:flex}.set-die-info{flex-direction:column;flex:1;min-width:120px;display:flex}.stepper.small button{width:34px;height:34px}.stepper.small input{width:44px;height:34px;font-size:1rem}.bg-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.bg-tile{aspect-ratio:16/10;cursor:pointer;box-shadow:var(--shadow-sm);background-position:50%;background-size:cover;border:2px solid #0000;border-radius:14px;transition:transform .15s,border-color .15s;position:relative;overflow:hidden}.bg-tile:hover{transform:translateY(-2px)}.bg-tile.on{border-color:var(--gold-400);box-shadow:0 0 0 3px #f2c96a4d, var(--shadow-sm)}.bg-tile span{text-align:left;background:linear-gradient(#0000,#000000bf);padding:6px 8px;font-size:.8rem;font-weight:800;position:absolute;bottom:0;left:0;right:0}.bg-custom{flex-wrap:wrap;align-items:flex-start;gap:16px;margin-top:16px;display:flex}.import-hero{background-position:50%;background-size:cover;height:180px;margin-bottom:16px}.import-hero-inner{background:linear-gradient(#0000,#0009);flex-direction:column;justify-content:flex-end;gap:8px;height:100%;padding:16px;display:flex}.import-row{border:1px solid var(--line);background:#0003;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 10px;display:flex}.import-row.conflict{border-color:#f2c96a8c}.import-info{flex-direction:column;flex:1;gap:4px;min-width:140px;display:flex}.import-choice{flex-direction:column;gap:6px;min-width:220px;display:flex}.import-bg{background-position:50%;background-size:cover;border-radius:8px;width:64px;height:42px}.play{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background-position:50%;background-size:cover;position:fixed;inset:0;overflow:hidden}.play-vignette{pointer-events:none;background:radial-gradient(at 50% 45%,#0000 55%,#00000073);position:absolute;inset:0}.play-stage{touch-action:none;cursor:grab;position:absolute;inset:0}.play-stage:active{cursor:grabbing}.play-top{z-index:10;padding:max(10px, env(safe-area-inset-top)) 12px 10px;pointer-events:none;background:linear-gradient(#0c0805bf,#0c080500);align-items:center;gap:8px;display:flex;position:absolute;top:0;left:0;right:0}.play-top>*{pointer-events:auto}.set-switch{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:min(52vw,360px);min-height:40px;font-family:var(--font-display);cursor:pointer;background:#1c120bcc;border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-weight:800;display:inline-flex;position:relative}.set-switch-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.set-switch select{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.play-empty{z-index:6;text-align:center;border:1px solid var(--line-strong);box-shadow:var(--shadow);background:#140d08cc;border-radius:20px;padding:22px 26px;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%)}.play-empty p{margin:0 0 12px;font-weight:800}.play-dock{z-index:10;padding:0 12px max(12px, env(safe-area-inset-bottom));pointer-events:none;position:absolute;bottom:0;left:0;right:0}.play-dock>*{pointer-events:auto}.play-hint-wrap{justify-content:center;height:34px;display:flex;pointer-events:none!important}.play-hint{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);height:28px;color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;background:#0a070499;border-radius:999px;align-items:center;gap:6px;max-width:calc(100vw - 24px);padding:0 14px;font-size:.82rem;font-weight:700;display:inline-flex;overflow:hidden}.play-hint.pulse{color:var(--gold-300);animation:1s ease-in-out infinite pulse}.dock-panel{border:1px solid var(--line-strong);background:linear-gradient(#462f1deb,#21160ef0),repeating-linear-gradient(90deg,#0000 0 12px,#00000014 12px 13px);border-radius:22px;align-items:stretch;gap:12px;max-width:1100px;margin:0 auto;padding:10px;display:flex;box-shadow:0 -4px 30px #00000073,inset 0 1px #ffffff0f}.tally{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.tally-empty{text-align:center;color:var(--muted);flex:1;font-weight:700}.shimmer{background:linear-gradient(90deg, var(--muted) 30%, var(--gold-300) 50%, var(--muted) 70%);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:1.2s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.tally-chips{scrollbar-width:thin;flex:1;gap:10px;min-width:0;padding:8px 4px;display:flex;overflow-x:auto}.tally-slot{flex-direction:column;flex:none;align-items:center;gap:2px;display:inline-flex;position:relative}.chip-solid{color:var(--muted);text-transform:uppercase;font-size:.66rem;font-weight:900}.tally-summary{border-left:1px solid var(--line);flex:none;align-items:center;gap:12px;padding-left:12px;display:flex}.tally-sum{font-family:var(--font-display);align-items:baseline;gap:4px;display:flex}.tally-sum .label{color:var(--gold-500);font-size:1.2rem;font-weight:800}.tally-sum .value{color:var(--gold-400);text-shadow:0 2px 14px #f2c96a59;font-size:2.1rem;font-weight:900;line-height:1;animation:.4s ease-out hero-word}@keyframes hero-word{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.tally-groups{flex-wrap:wrap;gap:8px;max-width:260px;display:flex}.tally-group{border:1px solid var(--line);background:#00000059;border-radius:999px;align-items:center;gap:4px;padding:3px 8px 3px 10px;font-weight:900;display:inline-flex}.tally-group b{color:var(--gold-300);font-size:1.1rem}.tally-group .x{color:var(--muted)}.roll-actions{flex:none;align-items:center;gap:10px;display:flex}.reroll-group{align-items:center;gap:4px;display:flex}.reroll-btn{--b1:#2f6fa8;--b2:#1d4a73;border-color:#7cc4ff99}.roll-btn{cursor:pointer;color:#fff4dc;touch-action:none;background:radial-gradient(circle at 35% 30%,#ff6b73,#c8323c 45%,#7a1520);border:0;border-radius:50%;width:86px;height:86px;margin:6px;padding:0;transition:transform .15s,box-shadow .2s;position:relative;box-shadow:0 0 0 4px #f2c96ae6,0 0 0 7px #5a3a0ee6,0 10px 24px #0000008c,inset 0 -6px 12px #00000059,inset 0 4px 8px #ffffff40}.roll-btn:before{content:"";pointer-events:none;border:2px solid #f2c96a80;border-radius:50%;animation:2.4s ease-out infinite ring;position:absolute;inset:-10px}@keyframes ring{0%{opacity:.9;transform:scale(.9)}to{opacity:0;transform:scale(1.25)}}.roll-btn:hover{transform:scale(1.05)}.roll-btn:active{transform:scale(.94)}.roll-btn.busy:before{opacity:0;animation:none}.roll-btn:disabled{filter:grayscale(.8);opacity:.6}.roll-btn-inner{height:100%;font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;text-shadow:0 2px 4px #00000080;flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:.8rem;font-weight:900;display:flex}@media (max-width:640px){.dock-panel{gap:8px;padding:8px}.tally{flex-direction:column;align-items:stretch;gap:6px}.tally-chips{flex-wrap:wrap;overflow-x:visible}.tally-summary{border-left:0;justify-content:flex-start;padding-left:4px}.tally-sum .value{font-size:1.6rem}.roll-btn{width:74px;height:74px}.roll-actions{flex-direction:column-reverse;justify-content:center;gap:6px}.reroll-btn{padding:0 10px;font-size:.8rem}}.history{z-index:20;width:min(360px,92vw);padding:max(12px, env(safe-area-inset-top)) 14px 14px;border-left:1px solid var(--line-strong);background:linear-gradient(#2a1b11f7,#18100afa);flex-direction:column;gap:8px;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-20px 0 40px #00000080}.history-head{align-items:center;display:flex}.history-head h2{flex:1;align-items:center;gap:8px;display:flex}.history-list{flex-direction:column;flex:1;gap:10px;padding-right:4px;display:flex;overflow:auto}.hist-entry{border:1px solid var(--line);background:#ffffff0a;border-radius:14px;padding:10px}.hist-meta{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:6px;font-size:.78rem;font-weight:800;display:flex}.hist-line{align-items:center;gap:8px;display:flex}.hist-chips{flex-wrap:wrap;flex:1;gap:5px;display:flex}.hist-chip{align-items:center;gap:2px;display:inline-flex}.hist-chip .arrow{color:var(--muted);font-size:.8rem}.hist-sum{font-family:var(--font-display);color:var(--gold-300);white-space:nowrap;font-weight:900}.hist-reroll{border-top:1px dashed var(--line);border-left:2px solid #5aa9e699;margin-top:6px;padding-top:6px;padding-left:10px}.hist-reroll-label{color:var(--sky);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:.72rem;font-weight:900;display:block}.import-info .badge{align-self:flex-start}.set-editor,.import{margin-inline:auto}.page.editor:has(.set-editor) .page-head{max-width:860px;margin-inline:auto}body:has(.play) .toasts{top:70px;bottom:auto}.loading{place-items:center;display:grid;position:fixed;inset:0}.loading svg{animation:1.1s cubic-bezier(.5,0,.5,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.grab-prompt{z-index:20;pointer-events:none;color:var(--gold-300);filter:drop-shadow(0 3px 10px #000000b3);flex-direction:column;align-items:center;gap:4px;display:flex;position:fixed;transform:translate(-50%,-50%)}.grab-hand{transform-origin:50% 90%;animation:1.1s ease-in-out infinite grab-press}@keyframes grab-press{0%,to{transform:translateY(-14px)scale(1)}45%{transform:translateY(6px)scale(.86)}}.grab-text{letter-spacing:.02em;text-transform:uppercase;-webkit-text-stroke:2px #0a0704bf;paint-order:stroke fill;font-size:clamp(2rem,9vw,3.6rem);font-weight:900;display:flex}.grab-text span{animation:.9s ease-in-out infinite grab-bounce;display:inline-block}@keyframes grab-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.update-banner{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:60;background:var(--walnut-700);max-width:calc(100vw - 32px);color:var(--ink);border:1px solid var(--line-strong);border-radius:14px;align-items:center;gap:10px;padding:10px 12px 10px 16px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 8px 28px #00000073}.install-banner{top:calc(var(--header-h) + 8px);z-index:19;background:var(--walnut-700);width:max-content;max-width:calc(100vw - 32px);color:var(--ink);border:1px solid var(--line-strong);border-radius:14px;align-items:center;gap:10px;padding:8px 8px 8px 14px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #00000073}.install-text{font-size:.9rem}.home-brand{border:1px solid var(--line);background:linear-gradient(#ffeecd0f,#0000002e);border-radius:18px;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:18px;padding:14px 18px;display:flex}.home-brand>svg{filter:drop-shadow(0 3px 10px #e2ae3f59);flex:none}.home-brand-copy{min-width:0}.home-brand h1{text-transform:uppercase;letter-spacing:.05em;font-size:clamp(1.6rem,2.4vw + 1rem,2.2rem);line-height:1.1}.home-brand-copy p{color:var(--muted);margin:4px 0 0}.home-brand-actions{flex-wrap:wrap;gap:10px;margin-left:auto;display:flex}@media (max-width:560px){.home-brand{gap:12px;padding:14px}.home-brand-actions{flex:100%;margin-left:0}.home-brand-actions .btn{flex:auto}}.hero{border:1px solid var(--line-strong);box-shadow:var(--shadow);background:radial-gradient(600px 300px at 85% 10%,#e2ae3f2e,#0000 70%),radial-gradient(500px 300px at 0 100%,#1f6e3a47,#0000 70%),linear-gradient(#ffeecd12,#ffeecd05);border-radius:24px;grid-template-columns:1.1fr .9fr;align-items:center;gap:24px 32px;margin-bottom:34px;padding:36px 36px 28px;display:grid;position:relative;overflow:hidden}.hero-close{z-index:3;position:absolute;top:10px;right:10px}.hero-eyebrow{border:1px solid var(--line-strong);color:var(--gold-300);letter-spacing:.08em;text-transform:uppercase;background:#0000004d;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:.78rem;font-weight:800;display:inline-flex}.hero-title{font-family:var(--font-display);margin:14px 0 12px;font-size:clamp(1.9rem,4.6vw,3.2rem);line-height:1.12}.hero-rotor{min-height:1.2em;display:inline-block}.hero-rotor-word{background:linear-gradient(180deg, var(--gold-300), var(--gold-500));color:#0000;-webkit-background-clip:text;background-clip:text;display:inline-block}.hero-lead{max-width:52ch;color:var(--ink-2);margin:0 0 20px;font-size:1.08rem;line-height:1.5}.hero-cta{gap:12px}.btn.lg{min-height:52px;padding:0 24px;font-size:1.05rem}.hero-note{margin:12px 0 0}.hero-stage{place-items:center;height:280px;display:grid;position:relative}.hero-glow{background:radial-gradient(circle,#f2c96a59,#0000 70%);border-radius:50%;width:240px;height:240px;animation:4s ease-in-out infinite hero-pulse;position:absolute}.hero-main{z-index:2;cursor:pointer;filter:drop-shadow(0 18px 18px #00000080);background:0 0;border:0;place-items:center;width:170px;height:170px;padding:0;animation:4.5s ease-in-out infinite hero-float;display:grid;position:relative}.hero-main-die{place-items:center;display:grid;position:absolute;inset:0}.hero-shadow{filter:blur(8px);background:#00000080;border-radius:50%;width:140px;height:18px;animation:4.5s ease-in-out infinite hero-shadow;position:absolute;bottom:18px}.hero-sat{z-index:1;filter:drop-shadow(0 8px 10px #00000073);position:absolute}.hero-sat-0{animation:5.2s ease-in-out -1s infinite hero-float;top:12%;left:4%}.hero-sat-1{animation:4.8s ease-in-out -2s infinite hero-float;top:4%;right:2%}.hero-sat-2{animation:5.6s ease-in-out -3s infinite hero-float;bottom:8%;left:10%}.hero-sat-3{animation:5s ease-in-out -.5s infinite hero-float;bottom:10%;right:8%}.hero-steps{border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:repeat(3,1fr);gap:16px;margin:8px 0 0;padding:18px 0 0;list-style:none;display:grid}.hero-step{color:var(--gold-400);align-items:flex-start;gap:12px;display:flex;position:relative}.hero-step strong{color:var(--ink);display:block}.hero-step p{color:var(--muted);margin:2px 0 0;font-size:.9rem;line-height:1.4}.hero-step-num{color:#241706;background:linear-gradient(180deg, var(--gold-300), var(--gold-500));border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:.85rem;font-weight:900;display:grid}@keyframes hero-float{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-12px)rotate(3deg)}}@keyframes hero-shadow{0%,to{opacity:.6;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}@keyframes hero-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}@media (max-width:820px){.hero{grid-template-columns:1fr;padding:28px 18px 20px}.hero-stage{order:-1;height:170px;margin-top:8px}.hero-main{zoom:.72}.hero-sat{zoom:.75}.hero-title{margin-top:8px;font-size:1.45rem}.hero-steps{grid-template-columns:1fr}.hero-cta .btn{flex:100%}}@media (prefers-reduced-motion:reduce){.hero-main,.hero-sat,.hero-glow,.hero-shadow{animation:none}}.tip-modal-body{gap:16px}.tip-amounts{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.tip-amount-btn{border-radius:var(--radius-sm);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:12px 8px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.tip-amount-btn:hover{transform:translateY(-2px)}.tip-amount-val{font-size:1.15rem;font-weight:800;line-height:1.2}.tip-amount-sub{opacity:.85;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.tip-feature-callout{color:var(--ink);border-radius:var(--radius-sm);background:#e2ae3f14;border:1px solid #e2ae3f40;gap:12px;padding:12px 14px}.tip-feature-icon{color:var(--gold-400);flex:none;margin-top:2px}.tip-feature-callout strong{color:var(--gold-300);margin-bottom:4px;display:block}.tip-feature-callout p{color:var(--ink-2);margin:0;font-size:.88rem;line-height:1.45}.tip-modal-actions{justify-content:space-between;align-items:center;margin-top:6px}@media (max-width:440px){.tip-amounts{grid-template-columns:1fr 1fr}.tip-amounts .tip-amount-btn:last-child{grid-column:span 2}.tip-modal-actions{flex-direction:column-reverse;align-items:stretch;gap:8px}.tip-modal-actions .btn{justify-content:center;width:100%}}
