.reveal{opacity:0;transform:translateY(34px);transition:opacity .7s ease,transform .7s ease;will-change:opacity,transform}.reveal.reveal-right{transform:translateX(-40px)}.reveal.reveal-left{transform:translateX(40px)}.reveal.reveal-zoom{transform:scale(0.9)}.reveal.visible{opacity:1;transform:none}.delay-1{transition-delay:.1s}.delay-2{transition-delay:.2s}.delay-3{transition-delay:.3s}.delay-4{transition-delay:.4s}.delay-5{transition-delay:.5s}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,0.55)}70%{box-shadow:0 0 0 18px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}@keyframes pulseCall{0%{box-shadow:0 0 0 0 rgba(13,110,253,0.5)}70%{box-shadow:0 0 0 16px rgba(13,110,253,0)}100%{box-shadow:0 0 0 0 rgba(13,110,253,0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes snowDrift{0%{transform:translateY(-10%) translateX(0);opacity:0}15%{opacity:.7}100%{transform:translateY(110vh) translateX(40px);opacity:0}}@keyframes slideInRight{from{opacity:0;transform:translateX(-50px)}to{opacity:1;transform:translateX(0)}}.loader-screen{position:fixed;inset:0;background:var(--gradient-dark);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;z-index:var(--z-loader);transition:opacity .6s ease,visibility .6s ease}.loader-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}.loader-logo{width:96px;height:96px;animation:floatY 2.2s ease-in-out infinite}.loader-spinner{width:52px;height:52px;border:4px solid rgba(255,255,255,0.15);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.loader-text{color:var(--accent-light);font-size:.95rem;letter-spacing:1px}.snowflake{position:absolute;top:-5%;color:rgba(255,255,255,0.55);animation:snowDrift linear infinite;pointer-events:none}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}.reveal{opacity:1;transform:none}}