/* ============================================
   ANIMATIONS — Clean & Themed
   ============================================ */

/* Scroll-reveal (used by JS) */
@keyframes fadeInScroll {
    from {
        opacity: 0;
        transform: translateY(24px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fade-in {
    animation: fadeInScroll 0.6s ease-out forwards;
}

/* Fade in/out utilities */
@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

.fade-in-anim {
    animation: fadeIn 0.5s ease-out;
}

.fade-out-anim {
    animation: fadeOut 0.5s ease-out forwards;
}

/* Scale in */
@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.92);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

.scale-in {
    animation: scaleIn 0.4s ease-out;
}

/* Slide down (nav menu) */
@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-12px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.slide-down {
    animation: slideDown 0.35s ease-out;
}

/* Pulse dot (availability badge) */
@keyframes pulse-dot {

    0%,
    100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: 0.35;
        transform: scale(1.3);
    }
}

/* Blink (availability dot) */
@keyframes blink {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.25;
    }
}

/* Float (optional subtle hero detail) */
@keyframes float {

    0%,
    100% {
        transform: translateY(0px);
    }

    50% {
        transform: translateY(-8px);
    }
}

/* Shimmer loading placeholder */
@keyframes shimmer {
    from {
        background-position: -800px 0;
    }

    to {
        background-position: 800px 0;
    }
}

.shimmer {
    background: linear-gradient(90deg, var(--bg-light) 25%, var(--bg-subtle) 50%, var(--bg-light) 75%);
    background-size: 800px 100%;
    animation: shimmer 1.5s infinite;
}

/* Print styles */
@media print {

    .navbar,
    #scroll-progress,
    .hero-cta,
    .contact-form {
        display: none !important;
    }

    body {
        color: #000;
        background: #fff;
    }

    a {
        color: #000;
        text-decoration: underline;
    }
}