/* ============================================================
   animations.css — Webify
   ============================================================ */

@keyframes pulse-dot {
    0%,100% { opacity:1; transform:scale(1); }
    50%      { opacity:.5; transform:scale(1.3); }
}

@keyframes fade-in {
    from { opacity:0; }
    to   { opacity:1; }
}

@keyframes float-up {
    from { opacity:0; transform:translateY(40px); }
    to   { opacity:1; transform:translateY(0); }
}

body { animation:fade-in .4s ease both; }

/* Scroll-reveal */
.reveal-up,
.reveal-left,
.reveal-right {
    opacity:0;
    transition:
        opacity .65s cubic-bezier(.4,0,.2,1),
        transform .65s cubic-bezier(.4,0,.2,1);
    transition-delay: var(--delay, 0s);
}
.reveal-up    { transform:translateY(36px); }
.reveal-left  { transform:translateX(-36px); }
.reveal-right { transform:translateX(36px); }
.reveal-up.visible,
.reveal-left.visible,
.reveal-right.visible { opacity:1; transform:translate(0); }

/* Service card border-glow */
.service-row::before {
    content:'';
    position:absolute;
    inset:0;
    border-radius:inherit;
    border:2px solid transparent;
    background:linear-gradient(var(--white),var(--white)) padding-box,
               linear-gradient(135deg,var(--iris),transparent) border-box;
    opacity:0;
    transition:.3s ease;
    pointer-events:none;
}
.service-row:hover::before { opacity:1; }
.service-row { position:relative; }

/* Pricing card hover glow */
.pricing-card:hover:not(.pricing-popular) {
    border-color:var(--iris);
}

/* Step circle bounce on hover */
.process-step:hover .step-circle {
    transform:scale(1.06);
}

/* Portfolio card overlay */
.portfolio-featured .portfolio-overlay {
    opacity:1;
}

/* Blog card link hover */
.blog-body h3 {
    transition:.25s ease;
    cursor:pointer;
}
