.dock-fab{position:fixed;z-index:60;width:54px;height:54px;border-radius:50%;border:1px solid var(--gold, #7d4e15);background:radial-gradient(circle at 34% 30%,var(--goldbg, #f4ecdf),var(--paper, #ffffff));box-shadow:0 10px 28px -12px var(--skyTop, #2f2a40);display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.dock-fab:active{cursor:grabbing}.dock-fab svg{display:block}.dock-fab .dock-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;padding:0 5px;box-sizing:border-box;background:var(--red, #8f2f22);color:#fff;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;font-family:IBM Plex Sans,system-ui,sans-serif}.dock-pop{position:fixed;z-index:59;width:344px;max-width:calc(100vw - 20px);height:min(500px,68vh);display:flex;flex-direction:column;background:var(--paper, #ffffff);border:1px solid var(--edge, #b9b2a1);border-radius:13px;overflow:hidden;box-shadow:0 24px 60px -20px var(--skyTop, #2f2a40);animation:dockpop .2s cubic-bezier(.2,1.4,.4,1)}@keyframes dockpop{0%{opacity:0;transform:translateY(10px) scale(.96)}}.dock-tabs{display:flex;gap:2px;padding:9px 10px 0;border-bottom:1px solid var(--line, #d9d5c9)}.dock-tab{border:none;background:transparent;cursor:pointer;padding:6px 11px 8px;font:600 10px/1 IBM Plex Sans,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--faint, #6f6a5c);border-bottom:2px solid transparent;margin-bottom:-1px}.dock-tab.on{color:var(--gold, #7d4e15);border-bottom-color:var(--gold, #7d4e15)}.dock-body{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:7px}.dock-foot{border-top:1px solid var(--line, #d9d5c9);padding:9px 10px;background:var(--soft, #f7f5ef)}.dock-row{border-left:2px solid var(--goldbg, #f4ecdf);padding:1px 0 1px 9px;animation:dockrow .24s ease-out}@keyframes dockrow{0%{opacity:0;transform:translateY(4px)}}.dock-row .who{font:600 11.5px/1.4 IBM Plex Sans,system-ui,sans-serif;color:var(--gold, #7d4e15);margin-right:6px}.dock-row .when{font-size:9.5px;color:var(--faintest, #8f897a);float:right}.dock-row .txt{font:400 12.5px/1.45 IBM Plex Sans,system-ui,sans-serif;color:var(--ink, #14120d);overflow-wrap:anywhere}.dock-row .txt.only-emoji{font-size:26px;line-height:1.2}.dock-row img{max-width:200px;max-height:150px;border-radius:8px;display:block;margin-top:3px;border:1px solid var(--line, #d9d5c9)}.dock-row.sys{border-left-color:var(--line2, #eae7de)}.dock-row.sys .txt{color:var(--faint, #6f6a5c);font-style:italic;font-size:11.5px}.dock-row.crit .who{color:var(--lantern, #e8b562)}.dock-row.fumble{filter:saturate(.55)}.dock-row .total{font-family:Fraunces,Georgia,serif;font-size:15px;font-weight:600}.dock-input{display:flex;gap:6px;align-items:center}.dock-input input[type=text]{flex:1;border:1px solid var(--line, #d9d5c9);border-radius:8px;background:var(--paper, #fff);color:var(--ink, #14120d);font:400 12.5px/1.4 IBM Plex Sans,system-ui,sans-serif;padding:7px 9px;min-width:0}.dock-btn{border:1px solid var(--gold, #7d4e15);background:var(--goldbg, #f4ecdf);color:var(--gold, #7d4e15);border-radius:8px;padding:6px 10px;cursor:pointer;font:600 11.5px/1.2 IBM Plex Sans,system-ui,sans-serif}.dock-btn:active{transform:translateY(1px)}.dock-emoji-toggle{border:1px solid var(--line, #d9d5c9);background:var(--paper, #fff);border-radius:8px;padding:5px 8px;cursor:pointer;font-size:14px}.dock-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:7px 6px 2px}.dock-picker button{border:none;background:transparent;font-size:17px;cursor:pointer;padding:3px;border-radius:6px}.dock-picker button:hover{background:var(--goldbg, #f4ecdf)}.dock-dice{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.dock-die{border:1px solid var(--gold, #7d4e15);background:var(--paper, #fff);color:var(--gold, #7d4e15);border-radius:8px;padding:6px 0;width:40px;font:600 11.5px/1.2 IBM Plex Sans,system-ui,sans-serif;cursor:pointer}.dock-die:active{transform:translateY(1px)}.dock-mode{border:1px solid var(--line, #d9d5c9);background:transparent;color:var(--faint, #6f6a5c);border-radius:6px;padding:4px 7px;font-size:10.5px;cursor:pointer}.dock-mode.on{border-color:var(--lantern, #e8b562);color:var(--lantern, #a8761f)}.bub{position:absolute;z-index:30;transform:translate(-50%,-100%);max-width:180px;padding:6px 9px;border-radius:11px;pointer-events:none;background:var(--paper, #ffffff);border:1px solid var(--edge, #b9b2a1);box-shadow:0 8px 22px -10px var(--skyTop, #2f2a40);font:400 12px/1.35 IBM Plex Sans,system-ui,sans-serif;color:var(--ink, #14120d);animation:bubin .26s cubic-bezier(.2,1.5,.4,1)}.bub:after{content:"";position:absolute;left:50%;bottom:-5px;width:9px;height:9px;background:inherit;border-right:1px solid var(--edge, #b9b2a1);border-bottom:1px solid var(--edge, #b9b2a1);transform:translate(-50%) rotate(45deg)}.bub .bub-who{display:block;font-weight:600;font-size:10px;color:var(--gold, #7d4e15);letter-spacing:.04em}.bub img{max-width:150px;max-height:110px;border-radius:7px;display:block}.bub.out{animation:bubout .4s ease-in forwards}@keyframes bubin{0%{opacity:0;transform:translate(-50%,-80%) scale(.5)}}@keyframes bubout{to{opacity:0;transform:translate(-50%,-130%) scale(.9)}}.bub.emo{background:transparent;border:none;box-shadow:none;padding:0;font-size:30px}.bub.emo:after{display:none}.bub.emo .bub-who{text-shadow:0 1px 4px var(--paper, #fff);text-align:center}.bub.emo .bub-face{display:block;text-align:center;animation:emobounce .7s cubic-bezier(.3,1.6,.4,1)}.bub.emo.laugh .bub-face{animation:emolaugh .9s ease-in-out}.bub.emo.anger .bub-face{animation:emoanger .6s ease-in-out;filter:drop-shadow(0 0 7px var(--red, #8f2f22))}.bub.emo.love .bub-face{animation:emolove 1.1s ease-in-out}.bub.emo.doom .bub-face{animation:emodoom 1.4s ease-out;filter:saturate(.4)}@keyframes emobounce{0%{transform:scale(.2)}55%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes emolaugh{0%,to{transform:rotate(0)}20%{transform:rotate(-14deg) scale(1.15)}45%{transform:rotate(11deg) scale(1.2)}70%{transform:rotate(-8deg) scale(1.1)}}@keyframes emoanger{0%,to{transform:translate(0)}15%{transform:translate(-5px) scale(1.2)}35%{transform:translate(5px) scale(1.25)}55%{transform:translate(-4px)}75%{transform:translate(3px)}}@keyframes emolove{0%{transform:scale(.3)}40%{transform:scale(1.3)}60%{transform:scale(1.05)}80%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes emodoom{0%{transform:translateY(8px) scale(.4);opacity:0}60%{transform:translateY(-2px) scale(1.1);opacity:1}to{transform:translateY(0) scale(1)}}.bub .bub-roll{font-family:Fraunces,Georgia,serif;font-weight:600;font-size:16px}.bub.crit{border-color:var(--lantern, #e8b562);box-shadow:0 0 14px var(--lantern, #e8b562)}.bub.fumble{filter:saturate(.5)}.dock-bubs{position:fixed;z-index:58;width:0;pointer-events:none}.dock-bubs .bub{position:absolute;left:0}@media (prefers-reduced-motion: reduce){.dock-pop,.dock-row,.bub,.bub.emo .bub-face{animation:none!important}.bub.out{opacity:0;transition:opacity .3s}}@keyframes fx-log-settle{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.fx-log-in{animation:fx-log-settle .45s cubic-bezier(.2,.9,.25,1)}.fx-log-crit{color:var(--lantern, #e8b562);text-shadow:0 0 9px rgba(232,181,98,.4)}.fx-log-fumble{color:var(--dread, #8f897a)}.fx-die{transition:transform .12s ease}.fx-die:active{transform:translateY(1px) scale(.98)}@keyframes fx-hp-bruise{0%{box-shadow:inset 0 0 0 1.5px var(--red, #8f2f22)}to{box-shadow:inset 0 0 0 1.5px transparent}}.fx-hp-hit{animation:fx-hp-bruise 1.2s ease-out}@media (prefers-reduced-motion: reduce){@keyframes fx-log-settle{0%{opacity:0}to{opacity:1}}.fx-log-in{animation-duration:.3s}.fx-die,.fx-die:active{transition:none;transform:none}}.fx-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;pointer-events:none;overflow:hidden}.fx-layer>*,.fx-death>*,.fx-damage>*,.fx-levelup>*{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.fx-canvas{width:100%;height:100%}.fx-damage-inner{animation:fxBruise 1.25s ease-out forwards}.fx-dmg-v0 .fx-damage-inner{background:radial-gradient(ellipse 90% 120% at 0% 50%,var(--red, #7e3024),transparent 55%),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.25))}.fx-dmg-v1 .fx-damage-inner{background:radial-gradient(ellipse 90% 120% at 100% 50%,var(--red, #7e3024),transparent 55%),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.25))}.fx-dmg-v2 .fx-damage-inner{background:radial-gradient(ellipse 130% 80% at 50% 100%,var(--red, #7e3024),transparent 55%),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.25))}@keyframes fxBruise{0%{opacity:0}12%{opacity:.9}to{opacity:0}}.fx-damage-tex{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");background-size:220px 220px;mix-blend-mode:multiply;-webkit-mask-image:radial-gradient(ellipse at center,transparent 45%,#000 90%);mask-image:radial-gradient(ellipse at center,transparent 45%,#000 90%);animation:fxBruiseTex 1.25s ease-out forwards}@keyframes fxBruiseTex{0%{opacity:0}15%{opacity:.45}to{opacity:0}}.fx-lowhp{backdrop-filter:saturate(.72) contrast(1.04);-webkit-backdrop-filter:saturate(.72) contrast(1.04);background:radial-gradient(ellipse at center,transparent 55%,rgba(126,48,36,.35));animation:fxLowHp 2.6s ease-in-out forwards}@keyframes fxLowHp{0%{opacity:0}18%{opacity:1}70%{opacity:1}to{opacity:0}}.fx-heal{background:radial-gradient(ellipse 70% 60% at 50% 62%,var(--lantern, #e2a84e),transparent 70%);animation:fxBreath 1.4s ease-in-out forwards}@keyframes fxBreath{0%{opacity:0;transform:scale(.92)}40%{opacity:.16}to{opacity:0;transform:scale(1.06)}}.fx-levelup-dim{background:radial-gradient(ellipse at center,transparent 30%,rgba(10,12,16,.5));animation:fxLvDim 3.4s ease-in-out forwards}@keyframes fxLvDim{0%{opacity:0}25%{opacity:.55}80%{opacity:.55}to{opacity:0}}.fx-levelup-bloom{background:radial-gradient(ellipse 60% 50% at 50% 38%,var(--goldbg, #e4d9bd),transparent 70%),radial-gradient(ellipse 100% 80% at 50% 50%,transparent 55%,var(--vashBlue, #2f5673));animation:fxBloom 3.8s ease-in-out 2.6s forwards;opacity:0}@keyframes fxBloom{0%{opacity:0}22%{opacity:.32}to{opacity:0}}.fx-critbloom{backdrop-filter:saturate(1.18) brightness(1.06) contrast(1.03);-webkit-backdrop-filter:saturate(1.18) brightness(1.06) contrast(1.03);background:radial-gradient(ellipse at center,transparent 50%,rgba(226,168,78,.22));animation:fxCritBloom .95s cubic-bezier(.2,.7,.3,1) forwards}@keyframes fxCritBloom{0%{opacity:0}13%{opacity:1}to{opacity:0}}.fx-surge{animation:fxSurge 1s ease-out forwards}@keyframes fxSurge{0%{opacity:0}15%{opacity:.3}to{opacity:0}}.fx-rest{background:radial-gradient(ellipse 130% 90% at 50% 100%,var(--lantern, #e2a84e),transparent 55%),radial-gradient(ellipse 120% 100% at 50% 50%,transparent 60%,var(--lantern, #e2a84e)),#0000001a;animation:fxRest 3s ease-in-out forwards}.fx-rest-long{animation-duration:5s}@keyframes fxRest{0%{opacity:0}30%{opacity:.45}70%{opacity:.45}to{opacity:0}}.fx-desat{backdrop-filter:saturate(.45) brightness(.94);-webkit-backdrop-filter:saturate(.45) brightness(.94);background:radial-gradient(ellipse at center,transparent 40%,var(--dread, #524d5e));opacity:0;transition:opacity 2.5s ease}.fx-death.fx-on .fx-desat{opacity:.55}.fx-warden{inset:auto 2vw 0 auto;width:14vh;height:42vh;filter:blur(7px);opacity:0;transform:translateY(4vh);transition:opacity 4s ease .8s,transform 6s ease}.fx-death.fx-on .fx-warden{opacity:.34;transform:translateY(0)}.fx-death.fx-on .fx-warden svg{animation:fxWardenBreathe 8s ease-in-out 5s infinite}@keyframes fxWardenBreathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(.5vh) scale(1.012,.994)}}.fx-warden-beak{opacity:.35}.fx-death.fx-on .fx-warden-beak{animation:fxGlint 9s ease-in-out 3s infinite}@keyframes fxGlint{0%,86%,to{opacity:.35}91%{opacity:.85}94%{opacity:.45}}.fx-warden-fog{inset:auto 0 0 auto;width:55vw;height:24vh;filter:blur(14px);opacity:0;transition:opacity 3.5s ease}.fx-warden-fog1{background:radial-gradient(ellipse 70% 90% at 80% 100%,var(--dread, #524d5e),transparent 70%)}.fx-warden-fog2{background:radial-gradient(ellipse 55% 70% at 60% 100%,var(--dread, #524d5e),transparent 70%)}.fx-death.fx-on .fx-warden-fog1{opacity:.4;animation:fxFogDrift1 16s ease-in-out infinite}.fx-death.fx-on .fx-warden-fog2{opacity:.28;animation:fxFogDrift2 23s ease-in-out infinite}@keyframes fxFogDrift1{0%,to{transform:translate(0) scaleY(1)}50%{transform:translate(-4vw) scaleY(1.12)}}@keyframes fxFogDrift2{0%,to{transform:translate(0) scaleY(1)}50%{transform:translate(3vw) scaleY(.92)}}.fx-revive{background:radial-gradient(ellipse 55% 45% at 50% 50%,var(--lantern, #e2a84e),transparent 70%);animation:fxRevive 2.8s ease-in-out forwards}@keyframes fxRevive{0%{opacity:0}55%{opacity:.2}to{opacity:0}}.fx-dread{background:linear-gradient(to right,var(--dread, #524d5e),transparent 15%),linear-gradient(to left,var(--dread, #524d5e),transparent 15%),linear-gradient(to bottom,var(--dread, #524d5e),transparent 15%),linear-gradient(to top,var(--dread, #524d5e),transparent 15%);transition:opacity 4s ease}.fx-dread:after{content:"";position:absolute;top:-6%;right:-6%;bottom:-6%;left:-6%;background:radial-gradient(ellipse 40% 30% at 12% 88%,var(--dread, #524d5e),transparent 70%),radial-gradient(ellipse 35% 28% at 90% 10%,var(--dread, #524d5e),transparent 70%);filter:blur(10px);opacity:0}.fx-dread.fx-on:after{opacity:.5;animation:fxDreadDrift 26s ease-in-out infinite}@keyframes fxDreadDrift{0%,to{transform:translate(0)}50%{transform:translate(2.5%,-2%)}}.fx-pulse{animation:fxPulse 1.2s ease-in-out forwards;opacity:0}@keyframes fxPulse{0%{opacity:0}30%{opacity:calc(var(--fxo, .5) * .6)}to{opacity:0}}.fx-flash{animation:fxFlash .7s ease-out forwards}@keyframes fxFlash{0%{opacity:0}25%{opacity:.25}to{opacity:0}}body.fx-shake-1{animation:fxShake1 .4s ease-out}body.fx-shake-2{animation:fxShake2 .42s ease-out}body.fx-shake-3{animation:fxShake3 .45s ease-out}@keyframes fxShake1{0%{transform:translate(0)}25%{transform:translateY(2px)}55%{transform:translate(calc(var(--fxsx, 1) * 1px),-1px)}to{transform:translate(0)}}@keyframes fxShake2{0%{transform:translate(0)}20%{transform:translate(calc(var(--fxsx, 1) * -1px),3px)}45%{transform:translate(calc(var(--fxsx, 1) * 2px),-2px)}70%{transform:translate(calc(var(--fxsx, 1) * -1px),1px)}to{transform:translate(0)}}@keyframes fxShake3{0%{transform:translate(0)}15%{transform:translate(calc(var(--fxsx, 1) * -2px),4px)}35%{transform:translate(calc(var(--fxsx, 1) * 3px),-3px)}55%{transform:translate(calc(var(--fxsx, 1) * -2px),2px)}75%{transform:translate(calc(var(--fxsx, 1) * 1px),-1px)}to{transform:translate(0)}}@media (prefers-reduced-motion: reduce){body.fx-shake-1,body.fx-shake-2,body.fx-shake-3{animation:none}.fx-warden{transform:none;transition:opacity 4s ease}.fx-death.fx-on .fx-warden svg,.fx-death.fx-on .fx-warden-fog1,.fx-death.fx-on .fx-warden-fog2,.fx-dread.fx-on:after{animation:none}.fx-heal{animation:fxFlash 1s ease-out forwards}}:where(button,[role=button]){transition:transform .1s ease,filter .18s ease,box-shadow .18s ease}:where(button,[role=button]):active{transform:translateY(1px) scale(.99);filter:brightness(1.07);transition-duration:.05s}:where(button):disabled{transform:none;filter:none}:where(input,textarea,select){transition:box-shadow .22s ease,border-color .22s ease}:where(input,textarea,select):focus-visible{box-shadow:0 0 0 1px color-mix(in srgb,var(--lantern, #e2a84e) 55%,transparent),0 0 12px -3px var(--lantern, #e2a84e)}:where(input[type=checkbox],input[type=radio]):active{transform:scale(.9)}:where(summary){transition:filter .18s ease}:where(details[open]>summary){filter:brightness(1.04)}:where(a){transition:filter .16s ease}:where(a):active{filter:brightness(1.12)}@media (prefers-reduced-motion: reduce){:where(button,[role=button]):active,:where(input[type=checkbox],input[type=radio]):active{transform:none}}html,body{margin:0;height:100%;background:var(--page, #363a33);color:var(--ink, #181a12);-webkit-font-smoothing:antialiased}#root{height:100%}a{color:var(--gold, #7d4e15);text-decoration:none}a:hover{color:var(--amber, #805d19);text-decoration:underline}input,textarea,button{font:inherit;color:inherit}input,textarea{background:transparent;border:none;min-width:0}input:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--gold, #7d4e15);outline-offset:1px}input::placeholder,textarea::placeholder{color:var(--faintest, #8f897a)}textarea{resize:none}::selection{background:var(--goldbg, #e4d9bd);color:var(--ink, #181a12)}button{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--edge, #b9b2a1);border-radius:5px}::-webkit-scrollbar-track{background:transparent}@keyframes dcping{0%{transform:scale(.2);opacity:.9}70%{opacity:.55}to{transform:scale(1);opacity:0}}@keyframes dcbanner{0%{opacity:0;transform:translateY(-6px)}12%{opacity:1;transform:none}82%{opacity:1;transform:none}to{opacity:0;transform:translateY(-4px)}}.hv-gold:hover{border-color:var(--gold, #7d4e15)!important;color:var(--gold, #7d4e15)}.hv-gold-fill:hover{border-color:var(--gold, #7d4e15)!important;background:var(--goldbg, #f4ecdf)!important}.hv-gold-soft:hover{border-color:var(--gold, #7d4e15)!important;background:var(--soft, #f7f5ef)!important}.hv-gold-border:hover{border-color:var(--gold, #7d4e15)!important}.hv-gold-text:hover{color:var(--gold, #7d4e15)}.hv-red:hover{border-color:var(--red, #8f2f22)!important;color:var(--red, #8f2f22)}.hv-red-text:hover{color:var(--red, #8f2f22)}.hv-green:hover{border-color:var(--green, #2f5c3c)!important;color:var(--green, #2f5c3c)}.hv-ink:hover{color:var(--ink, #181a12)}.hv-underline:hover{text-decoration:underline}.hv-die:hover{border-color:var(--lantern, #e8b562)!important;color:var(--lantern, #e8b562)}.hv-tray:hover{border-color:var(--lantern, #e8b562)!important}.hv-tray-red:hover{border-color:var(--red, #8f2f22)!important;color:#d98a7a}.paper-grain:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E") repeat;background-size:200px;opacity:.035;pointer-events:none;z-index:8999}.edge-strip{transition:background .14s ease}.edge-strip:hover{background:var(--goldbg, #f4ecdf)!important;border-color:var(--gold, #7d4e15)!important}.pane{transition:flex-grow .26s ease,flex-basis .26s ease,min-width .26s ease}@media (prefers-reduced-motion: reduce){.pane{transition:none}}.pane-console{container-type:inline-size}@container (max-width: 700px){.pane-console [style*="3fr"]{grid-template-columns:minmax(0,1fr)!important}}
