/* Independent presentation of the existing launch DOM/timing contract.
 * Water renderer remains scheduled for independent replacement in phase 6.
 */
.launch{position:fixed;inset:0;z-index:100;background:#05060a;overflow:hidden;display:flex;align-items:center;justify-content:center;pointer-events:auto}
.startup-preparing .launch *{animation-play-state:paused!important}
.launch__canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.launch__canvas--fallback{background:radial-gradient(ellipse at center,#191330,transparent 60%)}
.launch__mark{position:relative;display:flex;align-items:center;justify-content:center;font-size:clamp(64px,8vw,126px);line-height:1;z-index:4;color:white}
.launch__word{display:block;height:1em;opacity:0;animation:brand-word 6.3s linear both}
.launch__left{width:4.95370370em;margin-right:.20em}
.launch__s{width:.70767196em}
.launch__letters{width:100%;height:100%;overflow:visible}
.launch__letters path{fill:currentColor;stroke:none}
.launch__suffix{display:flex;align-items:center;gap:.10em}
.launch__orbit{display:block;width:1em;height:1em;position:relative;animation:brand-orbit 6.3s linear both,brand-sheen 1.4s 3.85s ease-out both;filter:drop-shadow(0 0 0 transparent)}
.launch__glyph{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:none}
.launch__ink{opacity:1;animation:brand-white .35s 2.55s both}
.launch__stroke-j,.launch__stroke-a{stroke-dasharray:1;stroke-dashoffset:1;opacity:0}
.launch__colour{opacity:0;animation:brand-colour .35s 2.55s both}
.launch__dots circle{opacity:0;animation:brand-dot .12s both}
.launch__dots circle:nth-child(1){animation-delay:2.05s}.launch__dots circle:nth-child(2){animation-delay:2.12s}.launch__dots circle:nth-child(3){animation-delay:2.19s}.launch__dots circle:nth-child(4){animation-delay:2.26s}.launch__dots circle:nth-child(5){animation-delay:2.33s}.launch__dots circle:nth-child(6){animation-delay:2.40s}
.launch__wash-left{animation:brand-sweep-left 1.4s 3.95s cubic-bezier(.25,.6,.35,1) both}
.launch__wash-right{animation:brand-sweep-right 1.4s 3.95s cubic-bezier(.25,.6,.35,1) both}
.launch__hint{position:absolute;left:50%;bottom:12%;transform:translateX(-50%);font-size:12px;color:#999bad}
.launch.gone{display:none}.launch.revealing{background:transparent}
.launch.revealing>.launch__mark,.launch.revealing>.launch__logo,.launch.revealing>.launch__rule{visibility:hidden}
.launch__water-defs{position:absolute;width:0;height:0;overflow:hidden}
.launch__water{position:absolute;inset:0;z-index:2;backdrop-filter:url(#launch-water-refract) blur(1.8px)}
.launch__water-brand{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;filter:url(#launch-brand-refract);z-index:4}
.launch.revealing .launch__canvas{z-index:3}
.startup-water-underlay .call__captions{opacity:var(--startup-caption-opacity,0)}
html.skip-launch-animation .launch{display:none!important}
@keyframes brand-orbit{0%,45%{transform:translate(var(--logo-start-x,0px),var(--logo-start-y,0px)) scale(var(--logo-start-scale,3.5))}58%,100%{transform:none}}
@keyframes brand-word{0%,50%{opacity:0}61%,100%{opacity:1}}
@keyframes brand-white{to{opacity:0}}@keyframes brand-colour{to{opacity:1}}@keyframes brand-dot{to{opacity:1}}
@keyframes brand-sweep-left{to{transform:translateX(-1380px)}}@keyframes brand-sweep-right{to{transform:translateX(430px)}}
@keyframes brand-sheen{0%,100%{filter:drop-shadow(0 0 0 transparent)}18%{filter:drop-shadow(0 0 6px #acbaff99) brightness(1.15)}}
@media(prefers-reduced-motion:reduce){.launch{display:none}.shell{opacity:1}}

/* Warm transmission under the still-opaque water; particles replace brand ink. */
.shell.startup-water-prewarm{opacity:1}
.launch__powder{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}
