.app-loader{
 position:absolute;inset:0;z-index:100000;display:grid;place-items:center;isolation:isolate;
 width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none;touch-action:none;
 background:radial-gradient(ellipse at 46% 40%,#fff 0%,#f4f5f8 23%,#e1e4ea 50%,#c8cdd6 78%,#e9ecf2 100%);
 color:#f9fbff;contain:layout paint style;
}
/* Present in source HTML, before any application module executes. Visibility
   keeps layout measurable; it is released beneath the opaque loader at fade. */
#app[data-boot-loading] > :not(.app-loader):not(.max-auth-retry),
#app[data-boot-loading] > :not(.app-loader):not(.max-auth-retry) *{visibility:hidden!important;pointer-events:none!important}
.app-loader:before{
 content:"";position:absolute;inset:-20%;z-index:-1;pointer-events:none;
 background:linear-gradient(117deg,transparent 16%,#ffffffdc 28%,#ffffff00 43%,#8993a216 58%,#fff8 70%,transparent 85%);
 transform:rotate(-7deg);
}
.app-loader:after{
 content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
 background:radial-gradient(ellipse at 50% 47%,transparent 25%,#8f98a30b 80%),linear-gradient(150deg,#ffffff24,transparent 45%,#ffffff29);
}
.app-loader[data-loader-bound="page"]{position:fixed;min-height:100dvh}
.app-loader-stage{position:relative;width:min(90%,420px);max-width:94%;aspect-ratio:640/535;transform:translateY(-2%)}
.app-loader-stage:before{content:"";position:absolute;z-index:-1;left:13%;right:10%;top:26%;height:43%;background:radial-gradient(ellipse,#626b7c26,transparent 68%);transform:translateY(18%);pointer-events:none}
.app-loader-art{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:none;stroke-width:0}
.app-loader-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-height:540px) and (orientation:landscape){.app-loader-stage{width:min(72vw,73vh);transform:none}}
@media(prefers-reduced-motion:reduce){.app-loader-stage{transform:none}.app-loader,.app-loader *{scroll-behavior:auto}}
.app-loader-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;contain:strict}

/* The wordmark is the lettering itself, with thin attached drips. The
   shared mascot sits in front; there is no badge or frame. */
.app-loader-stage-v2{width:min(90%,380px);aspect-ratio:1.13;transform:translateY(-3%)}
.app-loader-stage-v2:before{content:none}
.app-loader-wordmark{position:absolute;left:0;top:0;width:100%;aspect-ratio:1200/480;z-index:1;isolation:isolate}
.app-loader-wordmark-image{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.app-loader-drips{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}
.app-loader-drip{position:absolute;inset:0;display:block;will-change:transform;pointer-events:none}
.app-loader-drip-image{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:contain;pointer-events:none}
.app-loader-companion{position:absolute;left:20%;top:24%;width:61%;aspect-ratio:1;z-index:2;isolation:isolate}
.app-loader-companion-image{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.app-loader-stage-v2 img{max-width:none;border:0;border-radius:0;box-shadow:none;filter:none}
@media(max-height:540px) and (orientation:landscape){.app-loader-stage-v2{width:min(65vw,72vh);transform:none}}
@media(prefers-reduced-motion:reduce){.app-loader-stage-v2{transform:none}}

#app[data-boot-loading][data-boot-paint] > .content,
#app[data-boot-loading][data-boot-paint] .content .view.active,
#app[data-boot-loading][data-boot-paint] .content .view.active *{visibility:visible!important}
