/**
 * Cohen House Scroll Animations
 * Non-critical animations loaded asynchronously
 * Moved from critical.css to reduce inline CSS budget
 */

/* Cohen House Scroll Animations */
.ch-animate {
    will-change: transform, opacity;
}

.ch-animate--fadeInUp {
    opacity: 0;
    transform: translateY(40px);
    animation: none;
}

.ch-animate--fadeInUp.ch-animate--visible {
    animation: ch-fadeInUp var(--animation-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.ch-animate--fadeInDown {
    opacity: 0;
    transform: translateY(-40px);
}

.ch-animate--fadeInDown.ch-animate--visible {
    animation: ch-fadeInDown var(--animation-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.ch-animate--fadeInLeft {
    opacity: 0;
    transform: translateX(-40px);
}

.ch-animate--fadeInLeft.ch-animate--visible {
    animation: ch-fadeInLeft var(--animation-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.ch-animate--fadeInRight {
    opacity: 0;
    transform: translateX(40px);
}

.ch-animate--fadeInRight.ch-animate--visible {
    animation: ch-fadeInRight var(--animation-duration, 800ms) cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.ch-animate--fadeIn {
    opacity: 0;
}

.ch-animate--fadeIn.ch-animate--visible {
    animation: ch-fadeIn var(--animation-duration, 800ms) ease-in forwards;
}

@keyframes ch-fadeInUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes ch-fadeInDown {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes ch-fadeInLeft {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes ch-fadeInRight {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes ch-fadeIn {
    to {
        opacity: 1;
    }
}

/* Service Worker Update Banner */
.ch-sw-update {
    position: fixed;
    bottom: 20px;
    right: 20px;
    background: linear-gradient(135deg, #D4AF37 0%, #FFF8DC 100%);
    color: #001F3F;
    padding: 16px 24px;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    z-index: 9999;
    animation: ch-slideIn 0.3s ease-out;
    font-weight: 600;
    font-size: 14px;
}

.ch-sw-update.hidden {
    display: none;
}

@keyframes ch-slideIn {
    from {
        transform: translateY(100px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* Font Loading States */
.fonts-loading {
    font-family: system-ui, -apple-system, sans-serif;
}

.fonts-loaded {
    font-family: 'Playfair Display', 'Lora', 'Montserrat', serif;
}

/* Image loading placeholder */
img[loading="lazy"] { background: linear-gradient(110deg, #f5f5f5 8%, #e5e5e5 18%, #f5f5f5 33%); background-size: 200% 100%; animation: shimmer 1.5s infinite linear; }
@keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
