/* Longer, layered launch sequence that resolves into the dashboard. */
body:not(.app-open) .app-shell,body:not(.app-open) .bottom-nav{opacity:0;transform:translateY(18px) scale(.985);filter:blur(7px);pointer-events:none}body .app-shell,body .bottom-nav{transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1),filter .8s ease}.launch-screen{transition:opacity .8s ease,visibility .8s ease,transform .8s cubic-bezier(.2,.8,.2,1),filter .8s ease}.launch-screen::before,.launch-screen::after{content:"";position:absolute;inset:14%;border:1px solid rgba(155,247,255,.1);border-radius:50%;animation:launchRotate 13s linear infinite}.launch-screen::after{inset:25%;border-style:dashed;animation-direction:reverse;animation-duration:8s}.launch-mark{animation:launchFloat 2.6s ease-in-out infinite}.launch-mark span,.launch-mark i,.launch-mark b{animation:markBeat 1.15s ease-in-out infinite}.launch-mark i{animation-delay:.16s}.launch-mark b{animation-delay:.32s}.launch-kicker{animation:kickerGlow 2.3s ease-in-out infinite}.launch-content::after{content:"";display:block;width:74px;height:3px;margin:26px auto 0;border-radius:99px;background:linear-gradient(90deg,transparent,#9bf7ff,transparent);animation:scan 2.1s ease-in-out infinite}.launch-screen.is-welcoming .launch-content{animation:welcomeFloat 2.1s cubic-bezier(.2,.85,.2,1) both}.launch-screen.is-welcoming .launch-mark{animation:markArrival 1.3s cubic-bezier(.2,.8,.2,1) both}.launch-screen.is-welcoming .launch-button{opacity:0;transform:translateY(12px) scale(.96);pointer-events:none}.launch-screen.is-welcoming .launch-content::after{animation:scan .7s ease-in-out infinite}.launch-screen.is-leaving{opacity:0;visibility:hidden;transform:scale(1.045);filter:blur(10px);pointer-events:none}@keyframes launchRotate{to{transform:rotate(360deg)}}@keyframes launchFloat{50%{transform:translateY(-8px) rotate(-3deg)}}@keyframes markBeat{50%{transform:scaleY(1.18);filter:brightness(1.25)}}@keyframes kickerGlow{50%{opacity:.55;letter-spacing:.21em}}@keyframes scan{50%{transform:scaleX(1.8);opacity:.35}}@keyframes welcomeFloat{0%{transform:none}45%{transform:translateY(-7px) scale(1.03)}100%{transform:none}}@keyframes markArrival{35%{transform:rotate(170deg) scale(1.14)}100%{transform:rotate(354deg) scale(1)}}@media(prefers-reduced-motion:reduce){body:not(.app-open) .app-shell,body:not(.app-open) .bottom-nav{opacity:1;transform:none;filter:none;pointer-events:auto}.launch-screen::before,.launch-screen::after,.launch-mark,.launch-mark span,.launch-mark i,.launch-mark b,.launch-kicker,.launch-content::after{animation:none}}
