/* ============================================
   PREMIUM ANIMATIONS & TYPOGRAPHY
   ============================================ */

/* Typography Refinements */
h1,
h2,
h3,
.section-title,
.hero__title {
    letter-spacing: -0.02em;
    /* Tight tracking for headers -> more modern/premium */
}

.hero__subtitle {
    font-weight: 300;
    opacity: 0.9;
}

/* Premium Button Hover Effects ('Liquid Gold') */
.btn--primary,
.btn--gold {
    position: relative;
    overflow: hidden;
    z-index: 1;
}

.btn--primary::after,
.btn--gold::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0) 100%);
    transform: translateX(-100%) skewX(-15deg);
    transition: transform 0.6s cubic-bezier(0.19, 1, 0.22, 1);
    z-index: -1;
}

.btn--primary:hover::after,
.btn--gold:hover::after {
    transform: translateX(100%) skewX(-15deg);
}

/* Micro-interactions for Cards (Tilt/Lift) */
.program-card,
.result-card {
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.4s ease;
}

.program-card:hover,
.result-card:hover {
    transform: translateY(-8px) scale(1.01);
}

/* Smooth Fade-in Animation Classes */
@keyframes fadeInUpPremium {
    from {
        opacity: 0;
        transform: translateY(40px) scale(0.98);
        filter: blur(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

.animate-premium {
    animation: fadeInUpPremium 1s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
    opacity: 0;
    /* Initial state */
}

/* Stagger delays */
.delay-100 {
    animation-delay: 100ms;
}

.delay-200 {
    animation-delay: 200ms;
}

.delay-300 {
    animation-delay: 300ms;
}

/* Text Selection Color (Premium Gold) */
::selection {
    background: rgba(212, 175, 55, 0.3);
    color: var(--color-dark);
}