/* Native same-origin page transitions preserve the outgoing page until navigation. */
@view-transition{navigation:none}
::view-transition-old(root){animation:app-exit 280ms cubic-bezier(.22,.7,.2,1) both}
::view-transition-new(root){animation:app-enter 280ms cubic-bezier(.22,.7,.2,1) both}
@keyframes app-enter{from{opacity:1;transform:translateX(var(--page-enter-x,100%))}to{opacity:1;transform:none}}
@keyframes app-exit{to{opacity:1;transform:translateX(-25%)}}
html.app-booting:before{content:'';position:fixed;inset:0;z-index:2147482000;background:#fafbf8}
html.app-booting:after{content:'';position:fixed;z-index:2147482001;inset:20px 20px 90px;border-radius:16px;background:linear-gradient(#e3e6df,#e3e6df) 0 0/36% 20px no-repeat,linear-gradient(#edf0e8,#edf0e8) 0 58px/100% 48% no-repeat,linear-gradient(#e3e6df,#e3e6df) 0 65%/65% 16px no-repeat,linear-gradient(#edf0e8,#edf0e8) 0 73%/90% 12px no-repeat,linear-gradient(#edf0e8,#edf0e8) 0 80%/78% 12px no-repeat;animation:boot-pulse 1.3s ease-in-out infinite alternate;pointer-events:none}
@keyframes boot-pulse{to{opacity:.45}}
.boot-recovery{position:fixed;z-index:2147482002;left:20px;right:20px;bottom:24px;text-align:center;background:#fff;padding:16px;border-radius:14px;font:13px/1.6 Arial,sans-serif;color:#555}.boot-recovery button{margin-left:12px;border:0;background:#273221;color:#fff;border-radius:18px;padding:8px 14px;cursor:pointer}
@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root),html.app-booting:after{animation:none!important}}
html.app-reduced-motion::view-transition-old(root),html.app-reduced-motion::view-transition-new(root),html.app-reduced-motion.app-booting:after{animation:none!important}
