.fade-in{animation:fadeIn 0.5s var(--ease-out) forwards}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.slide-up{animation:slideUp 0.7s var(--ease-out) forwards;opacity:0}@keyframes slideUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}.slide-down{animation:slideDownExit 0.25s ease forwards}@keyframes slideDownExit{from{opacity:1;transform:translateY(0);max-height:200px}to{opacity:0;transform:translateY(16px);max-height:0;padding:0;margin:0}}.zoom-in{animation:zoomIn 0.7s var(--ease-out) forwards;opacity:0}@keyframes zoomIn{from{opacity:0;transform:scale(0.92)}to{opacity:1;transform:scale(1)}}@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes spin{to{transform:rotate(360deg)}}.float-anim{animation:float 5s ease-in-out infinite}@keyframes float{0%,100%{transform:translateY(0px)}50%{transform:translateY(-10px)}}.float-anim-2{animation:float 4s ease-in-out infinite;animation-delay:1s}.float-anim-3{animation:float 6s ease-in-out infinite;animation-delay:2s}.pulse{animation:pulse-anim 2s ease-in-out infinite}@keyframes pulse-anim{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:0.85}}.hero-blob-1,.hero-blob-2{transition:transform 0.1s linear}.logo:hover .logo-icon{animation:logo-bounce 0.5s var(--ease-bounce) both}@keyframes logo-bounce{0%{transform:scale(1) rotate(0)}30%{transform:scale(1.15) rotate(-5deg)}60%{transform:scale(0.95) rotate(4deg)}100%{transform:scale(1) rotate(0)}}.hover-scale{transition:transform var(--t-fast)}.hover-scale:hover{transform:scale(1.03)}.tool-card::after{content:'';position:absolute;top:var(--mouse-y,50%);left:var(--mouse-x,50%);transform:translate(-50%,-50%);width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(99,102,241,0.12) 0%,transparent 70%);pointer-events:none;opacity:0;transition:opacity var(--t-fast);z-index:1}.tool-card:hover::after{opacity:1}.badge-pulse{animation:badge-pulse-anim 2s ease-in-out infinite}@keyframes badge-pulse-anim{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0.4)}50%{box-shadow:0 0 0 5px rgba(239,68,68,0)}}.counter{display:inline-block}.text-shimmer{background:linear-gradient(90deg,var(--primary),var(--accent),var(--primary));background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:text-shimmer-anim 4s linear infinite}@keyframes text-shimmer-anim{0%{background-position:0%}100%{background-position:200%}}.ripple{position:absolute;border-radius:50%;transform:scale(0);animation:ripple-anim 0.6s linear;background:rgba(255,255,255,0.30);pointer-events:none}@keyframes ripple-anim{to{transform:scale(4);opacity:0}}@keyframes dropdown-in{from{opacity:0;transform:translateX(-50%) translateY(-8px) scale(0.97)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}.stagger-in>*{opacity:0;transform:translateY(12px);animation:stagger-item-in 0.5s var(--ease-out) forwards}.stagger-in>*:nth-child(1){animation-delay:0.05s}.stagger-in>*:nth-child(2){animation-delay:0.10s}.stagger-in>*:nth-child(3){animation-delay:0.15s}.stagger-in>*:nth-child(4){animation-delay:0.20s}.stagger-in>*:nth-child(5){animation-delay:0.25s}.stagger-in>*:nth-child(6){animation-delay:0.30s}.stagger-in>*:nth-child(7){animation-delay:0.35s}.stagger-in>*:nth-child(8){animation-delay:0.40s}@keyframes stagger-item-in{to{opacity:1;transform:translateY(0)}}@keyframes scan-line{0%{top:0%}100%{top:100%}}