*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;font-family:Inter,system-ui,sans-serif;color:#e8dccc;-webkit-user-select:none;user-select:none}@media (hover: none) and (pointer: coarse){html{height:calc(100% + 1px);overflow-y:scroll}body{position:fixed;top:0;left:0;width:100%;height:100%}}html{--felt-top: #2d5038;--felt-bot: #1f3828}html.theme-dark{--felt-top: #5a1825;--felt-bot: #2e0a10}.host-page{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background:repeating-linear-gradient(45deg,rgba(0,0,0,.04) 0 2px,transparent 2px 4px),linear-gradient(180deg,var(--felt-top) 0%,var(--felt-bot) 100%);transition:background .4s ease}canvas{display:block}#scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none}.ui{position:fixed;z-index:20;pointer-events:none}.ui>*{pointer-events:auto}.readout{top:1.5rem;left:50%;transform:translate(-50%);text-align:center;pointer-events:none}.readout .label{font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;opacity:.5;margin-bottom:.3rem}.readout .value{font-size:3rem;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}.readout .sub{font-size:.75rem;opacity:.55;margin-top:.3rem;font-variant-numeric:tabular-nums}.temp-stack{top:2rem;right:2rem;display:flex;flex-direction:column;align-items:center;gap:.75rem}.fx-slider{position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%) scale(.9);transform-origin:top center;background:#14100ebf;border:1px solid rgba(255,255,255,.12);border-radius:28px;padding:.75rem .5rem .9rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 6px 24px #00000080;display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}.fx-slider.open{opacity:1;transform:translate(-50%) scale(1);pointer-events:auto}.fx-slider.open.disabled{opacity:.45}.fx-slider.disabled .vslider{pointer-events:none}.heat-readout{font-size:.8rem;font-weight:700;color:#fa4;font-variant-numeric:tabular-nums;min-width:1.6em;text-align:center;text-shadow:0 0 10px rgba(255,140,40,.7);letter-spacing:.02em;transition:color .2s,text-shadow .2s;-webkit-user-select:none;user-select:none}.vslider{position:relative;width:24px;height:180px;cursor:pointer;display:flex;justify-content:center;touch-action:none}.vslider-track{position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:6px;background:linear-gradient(180deg,#f0ebe138,#c8c3b924);border-radius:3px;box-shadow:inset 0 0 4px #00000080}.vslider-fill{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:6px;height:0%;background:linear-gradient(180deg,#fc5,#ff6820);border-radius:3px;pointer-events:none;box-shadow:0 0 8px #ff8c2899;transition:background .15s}.vslider-thumb{position:absolute;left:50%;top:100%;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,#d8d0c0);border:2px solid #2a1810;box-shadow:0 0 8px #ffb45099,0 2px 4px #0006;pointer-events:none;transition:box-shadow .15s}.vslider:focus-visible{outline:none}.vslider:focus-visible .vslider-thumb{box-shadow:0 0 0 3px #78b4ff80,0 0 8px #ffb45099,0 2px 4px #0006}.fx-icon,.tx-icon,.th-icon,.dp-icon{width:44px;height:44px;border-radius:50%;background:#14100e8c;color:#e8dccc;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .2s ease;box-shadow:0 4px 12px #0000004d;padding:0}.fx-icon{border:1px solid rgba(200,200,220,.25);color:#c8cad0}.tx-icon{border:1px solid rgba(220,180,120,.25);color:#d8c090}.th-icon,.dp-icon{border:1px solid rgba(255,255,255,.2)}.dp-icon{position:relative}.fx-icon:hover{color:#fff;border-color:#c8c8dc80;transform:translateY(-1px)}.tx-icon:hover{color:#ffe0a0;border-color:#dcb47880;transform:translateY(-1px)}.th-icon:hover,.dp-icon:hover{border-color:#ffffff73;transform:translateY(-1px)}.fx-menu,.tx-menu,.th-menu,.dp-menu{position:absolute;display:flex;gap:6px;padding:6px;background:#14100ebf;border:1px solid rgba(255,255,255,.12);border-radius:28px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 6px 24px #00000080;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;white-space:nowrap}.fx-menu,.tx-menu,.th-menu{top:50%;flex-direction:row;transform:translateY(-50%) scale(.9)}.fx-menu,.tx-menu{right:calc(100% + 10px);transform-origin:right center}.th-menu{left:calc(100% + 10px);transform-origin:left center}.fx-menu.open,.tx-menu.open,.th-menu.open{opacity:1;transform:translateY(-50%) scale(1);pointer-events:auto}.fx-option,.tx-option,.th-option{width:36px;height:36px;border-radius:50%;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:#dcdce6b3;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;padding:0}.fx-option:hover,.tx-option:hover,.th-option:hover{transform:translateY(-1px);color:#fff}.fx-option.selected,.tx-option.selected,.th-option.selected{box-shadow:0 0 0 2px currentColor,0 0 12px currentColor}.effect-picker{position:relative}@keyframes fx-wobble{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}@keyframes fx-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fx-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.fx-option[data-effect=off]{color:#bbb}.texture-picker{position:relative}.tx-option[data-texture=none]{color:#bbb}.theme-stack{top:2rem;left:2rem}.theme-picker{position:relative}.th-option[data-theme=light]{color:#ffd080}.th-option[data-theme=dark]{color:#c890a0}.th-option[data-theme=system]{color:#a0c0e0}.dice-stack{top:calc(2.75rem + 44px);left:2rem}.dice-picker{position:relative}.dp-menu{left:calc(100% + 10px);top:0;flex-direction:column;transform:scale(.9);transform-origin:left top}.dp-menu.open{opacity:1;transform:scale(1);pointer-events:auto}.dp-option{width:40px;height:40px;border-radius:50%;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:#dcdce6bf;cursor:pointer;font-family:inherit;font-size:.72rem;font-weight:700;letter-spacing:.01em;display:flex;align-items:center;justify-content:center;transition:all .15s ease;padding:0;position:relative}.dp-option:hover{transform:translate(2px);color:#fff;border-color:#ffffff59}.dp-option.selected{background:linear-gradient(180deg,#c8a06466,#78502880);border-color:#ffc878b3;color:#fff;box-shadow:0 0 10px #ffb45059}.dp-badge,.dp-option .dp-count{position:absolute;background:#c8641e;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(20,16,14,.85);pointer-events:none}.dp-badge{bottom:-4px;right:-4px;font-size:.62rem;min-width:16px;height:16px;padding:0 4px;border-radius:8px;letter-spacing:.02em}.dp-option .dp-count{bottom:-3px;right:-3px;font-size:.55rem;min-width:14px;height:14px;padding:0 3px;border-radius:7px}.roll-dock{bottom:2rem;right:2rem;display:flex;flex-direction:column;align-items:flex-end;gap:.75rem}.modifier-picker{position:relative}.mod-icon{width:44px;height:44px;border-radius:50%;background:#14100e8c;border:1px solid rgba(255,255,255,.2);color:#d8cdb8;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .2s ease;box-shadow:0 4px 12px #0000004d;padding:0;font-family:inherit}.mod-icon:hover{border-color:#ffffff73;transform:translateY(-1px)}.mod-icon.active{background:linear-gradient(180deg,#c8a06466,#78502880);border-color:#ffc878b3;color:#fff;box-shadow:0 0 10px #ffb45059}.mod-icon-label{font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1;-webkit-user-select:none;user-select:none}.mod-menu{position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%) scale(.9);transform-origin:right center;background:#14100ebf;border:1px solid rgba(255,255,255,.12);border-radius:22px;padding:.55rem .75rem .7rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 6px 24px #00000080;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;white-space:nowrap;display:flex;flex-direction:column;align-items:center;gap:.4rem}.mod-menu.open{opacity:1;transform:translateY(-50%) scale(1);pointer-events:auto}.mod-menu-label{font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:#d8cdb8;opacity:.7}.mod-controls{display:flex;align-items:center;gap:6px}.mod-step{width:32px;height:32px;border-radius:50%;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:#dcdce6d9;cursor:pointer;font-family:inherit;font-size:1.1rem;font-weight:600;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s ease;padding:0}.mod-step:hover{transform:translateY(-1px);color:#fff;border-color:#ffffff59}.mod-step.mod-step-plus{background:linear-gradient(180deg,#c8a06459,#78502873);border-color:#ffc8788c;color:#fff}.mod-step.mod-step-plus:hover{border-color:#ffc878d9}.mod-value{min-width:44px;height:32px;padding:0 .4rem;border-radius:16px;background:#ffffff0a;border:1px solid rgba(255,255,255,.12);color:#f0d09a;font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.mod-preset{height:32px;min-width:36px;padding:0 .55rem;border-radius:16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:#dcdce6d9;cursor:pointer;font-family:inherit;font-size:.78rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.mod-preset:hover{transform:translateY(-1px);color:#fff;border-color:#ffffff59}.mod-preset.selected{background:linear-gradient(180deg,#c8a06466,#78502880);border-color:#ffc878b3;color:#fff;box-shadow:0 0 10px #ffb45059}.bd-mod,.hist-bd-mod{color:#f0d09a;font-weight:600;opacity:.95}.bd-sep,.hist-bd-sep{opacity:.35;margin:0 .35em}.hist-dice-mod{color:#f0d09a;margin-left:.25em}.roll-primary{background:linear-gradient(180deg,#e05420,#a82810);border:1px solid rgba(255,180,120,.4);color:#fff;font-family:inherit;font-size:1rem;font-weight:700;letter-spacing:.25em;padding:1.1rem 2.2rem;cursor:pointer;border-radius:999px;box-shadow:0 0 0 1px #00000080,0 4px #501408e6,0 8px 24px #dc461e73,inset 0 1px #ffdcb466;transition:transform .1s ease,box-shadow .1s ease,filter .1s ease;position:relative;overflow:hidden}.roll-primary:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.25) 0%,transparent 50%);pointer-events:none;border-radius:inherit}.roll-primary:hover{filter:brightness(1.08);box-shadow:0 0 0 1px #00000080,0 6px #501408e6,0 10px 30px #dc461e99,inset 0 1px #ffdcb466}.roll-primary:active{transform:translateY(3px);box-shadow:0 0 0 1px #00000080,0 1px #501408e6,0 2px 8px #dc461e4d,inset 0 1px #ffdcb466}.roll-primary:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.4)}.hint{position:fixed;bottom:.75rem;left:1rem;font-size:.65rem;opacity:.25;letter-spacing:.2em;text-transform:uppercase}.hint-mobile,html.touch .hint-desktop{display:none}html.touch .hint-mobile{display:inline}.history-stack{bottom:2rem;left:2rem;z-index:50;display:flex;align-items:flex-end;gap:.5rem}.history-picker{position:relative}.home-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#c8baa8;opacity:.4;text-decoration:none;border-radius:50%;transition:opacity .15s ease;flex-shrink:0}.home-link:hover{opacity:.85}.mute-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#c8baa8;opacity:.4;background:none;border:none;border-radius:50%;cursor:pointer;padding:0;transition:opacity .15s ease;flex-shrink:0}.mute-btn:hover{opacity:.85}.mute-btn.muted{opacity:.3}.hist-icon{width:44px;height:44px;border-radius:50%;background:#1c160e8c;border:1px solid rgba(200,160,96,.45);color:#d8b56a;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .2s ease;box-shadow:0 4px 12px #0000004d;padding:0}.hist-icon:hover{border-color:#dcb470bf;color:#f0c87a;transform:translateY(-1px)}.hist-icon.active{border-color:#dcb470e6;color:#ffd088;box-shadow:0 0 14px #dcaa6459,0 4px 12px #0000004d}.hist-panel{position:absolute;bottom:calc(100% + 10px);left:0;width:340px;max-height:70vh;overflow-y:auto;padding:.75rem .85rem .5rem;background:#14100ed1;border:1px solid rgba(255,255,255,.1);border-radius:18px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 28px #0000008c;opacity:0;transform:translateY(8px) scale(.96);transform-origin:bottom left;pointer-events:none;transition:opacity .18s ease,transform .18s ease;color:#e8dccc;font-size:.8rem;line-height:1.35}.hist-panel.open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.hist-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.25rem .15rem .6rem}.hist-panel-title{font-size:.7rem;letter-spacing:.32em;text-transform:uppercase;opacity:.55;font-weight:600}.hist-clear-btn{background:transparent;border:1px solid rgba(255,255,255,.2);color:#d8cdb8;font-family:inherit;font-size:.65rem;letter-spacing:.25em;text-transform:uppercase;padding:.3rem .7rem;border-radius:999px;cursor:pointer;transition:all .15s ease}.hist-clear-btn:hover{border-color:#ffffff73;color:#fff}.hist-clear-btn:disabled{opacity:.3;cursor:not-allowed}.hist-empty{opacity:.45;font-style:italic;padding:1rem .2rem;text-align:center}.hist-row{display:flex;align-items:center;gap:.55rem;padding:.55rem .2rem;border-top:1px solid rgba(255,255,255,.06)}.hist-row:first-of-type{border-top:none}.hist-fx-dot-slot{width:10px;flex:0 0 10px;display:flex;justify-content:center}.hist-fx-dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 6px currentColor}.hist-total{font-size:1.7rem;font-weight:600;font-variant-numeric:tabular-nums;color:#f0d09a;line-height:1;min-width:2.2ch;text-align:right}.hist-middle{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.hist-dice-label{font-size:.7rem;letter-spacing:.18em;color:#d8cdb8;opacity:.8}.hist-breakdown{font-variant-numeric:tabular-nums;font-size:.78rem;opacity:.65;word-break:break-word}.hist-time{font-size:.7rem;opacity:.45;font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}
