.gradient-primary{background:var(--gradient-primary)}.gradient-accent{background:var(--gradient-accent)}.gradient-hero{background:var(--gradient-hero)}.gradient-text{background:var(--gradient-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hover-lift{transition:var(--transition-smooth)}.hover-lift:hover{transform:translateY(-4px)}.hover-scale{transition:var(--transition-smooth)}.hover-scale:hover{transform:scale(1.05)}.glass{background:rgba(255,255,255,.05);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1)}.glass-light{background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(12,30,33,.1)}.shadow-soft{box-shadow:var(--shadow-soft)}.shadow-medium{box-shadow:var(--shadow-medium)}.shadow-strong{box-shadow:var(--shadow-strong)}.shadow-glow{box-shadow:var(--shadow-glow)}.transition-smooth{transition:var(--transition-smooth)}.transition-bounce{transition:var(--transition-bounce)}.text-gradient-primary{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.text-gradient-accent{background:var(--gradient-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.scroll-snap-x{scroll-snap-type:x mandatory}.scroll-snap-y{scroll-snap-type:y mandatory}.scroll-snap-start{scroll-snap-align:start}.scroll-snap-center{scroll-snap-align:center}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-40px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-fade-in{animation:fadeIn .6s ease-out}.animate-fade-out{animation:fadeOut .6s ease-out}.animate-fade-in-up{animation:fadeInUp .8s ease-out}.animate-slide-up{animation:slideUp .6s ease-out}.animate-slide-down{animation:slideDown .6s ease-out}.animate-slide-in-left{animation:slideInLeft .6s ease-out}.animate-slide-in-right{animation:slideInRight .6s ease-out}.animate-scale-in{animation:scaleIn .5s ease-out}.animate-scale-out{animation:scaleOut .5s ease-out}.animate-spin{animation:spin 1s linear infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-bounce{animation:bounce 1s infinite}.animate-delay-100{animation-delay:.1s}.animate-delay-200{animation-delay:.2s}.animate-delay-300{animation-delay:.3s}.animate-delay-400{animation-delay:.4s}.animate-delay-500{animation-delay:.5s}