/* The brand overlay owns the route reveal. Avoid a second browser root
   transition moving or duplicating it while native documents change. */
@view-transition{navigation:none}
.brand-loader{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:#fff;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 150ms ease}
.brand-loading .brand-loader{opacity:1;visibility:visible;pointer-events:auto}
.brand-revealing .brand-loader{opacity:0;visibility:visible}
.loader-art{width:clamp(148px,24vw,218px);height:auto;overflow:visible}
.brand-loading .loader-tile{transform-box:fill-box;transform-origin:center;animation:plot-assemble 350ms cubic-bezier(.22,1,.36,1) both;animation-delay:var(--loader-delay,0ms)}
.brand-loading .loader-tile-1{animation-delay:calc(75ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-3{animation-delay:calc(150ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-4{animation-delay:calc(225ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-2{animation-delay:calc(300ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-6{animation-delay:calc(375ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-5{animation-delay:calc(450ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-7{animation-delay:calc(525ms + var(--loader-delay,0ms))}.brand-loading .loader-tile-8{animation-delay:calc(600ms + var(--loader-delay,0ms))}
.brand-loading .loader-pin{animation:pin-jump 700ms both;animation-delay:calc(950ms + var(--loader-delay,0ms));will-change:transform,opacity}
.brand-loading .loader-shadow{transform-origin:218px 306px;animation:pin-shadow 700ms ease both;animation-delay:calc(950ms + var(--loader-delay,0ms))}
.loader-shadow{opacity:0}
.brand-loading .hero-line,.brand-loading .hero-rule,.brand-loading .hero-copy>p,.brand-loading .hero-buttons,.brand-loading .hero-image{animation-play-state:paused}
@keyframes plot-assemble{from{opacity:0;transform:translateY(10px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
/* One upward arc and one soft landing. Pin size stays fixed throughout. */
@keyframes pin-jump{0%{opacity:0;transform:translateY(72px);animation-timing-function:cubic-bezier(.16,1,.3,1)}16%{opacity:1}54%{transform:translateY(-22px);animation-timing-function:cubic-bezier(.42,0,.72,1)}100%{opacity:1;transform:translateY(0)}}
@keyframes pin-shadow{0%{opacity:0;transform:scale(.8)}54%{opacity:.045;transform:scale(1.12)}85%{opacity:.08;transform:scale(.96)}100%{opacity:0;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.brand-loader{display:none!important}.loader-art *{animation:none!important}}
