/* Dentist.leadgenbud - animations.css
   Scan-line, dot-pulse, bar-grow, section-reveal.
*/

@keyframes dent-reveal-up {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}

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

@keyframes dent-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.45); }
    70%  { box-shadow: 0 0 0 8px rgba(20, 184, 166, 0); }
    100% { box-shadow: 0 0 0 0 rgba(20, 184, 166, 0); }
}

@keyframes dent-scan {
    0%   { left: 0; opacity: 0; }
    10%  { opacity: 1; }
    90%  { opacity: 1; }
    100% { left: 100%; opacity: 0; }
}

@keyframes dent-shimmer {
    0%   { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

.reveal {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.7s var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1)),
                transform 0.7s var(--ease-out, cubic-bezier(0.16, 1, 0.3, 1));
    will-change: opacity, transform;
}
.reveal.is-in {
    opacity: 1;
    transform: none;
}

/* dot-pulse */
.dot-pulse {
    animation: dent-pulse 1.8s var(--ease) infinite;
}

/* scan-line travels across the dashboard card footer */
.scan-line {
    animation: dent-scan 2.4s var(--ease) infinite;
}

/* bar grow is triggered when parent gets .is-in (set in JS) */
.hero-card.is-in .bar {
    width: var(--w, 0%);
}

@media (prefers-reduced-motion: reduce) {
    .reveal { opacity: 1; transform: none; transition: none; }
    .dot-pulse, .scan-line { animation: none; }
    .hero-card .bar { width: var(--w, 0%); }
}
