/* Explain: Animations and hover effects for dynamic elements. */
.gradient-text {
    color: var(--accent-color);
}

@supports (-webkit-background-clip: text) or (background-clip: text) {
    .gradient-text {
        background-image: var(--gradient-accent);
        background-size: 200% auto;
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: transparent;
        color: transparent;
        animation: gradientShift 7s linear infinite alternate;
    }
}

.section-kicker {
    color: var(--accent-alt);
}

.section-kicker::before {
    height: 2px;
    background: var(--gradient-accent);
}

.cta-glow {
    transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
}

.cta-glow:hover {
    transform: translateY(-3px);
    box-shadow: 0 22px 55px var(--glow-accent), 0 12px 30px rgba(0, 0, 0, 0.45);
}

.glass-panel {
    transition: border-color 0.4s ease, box-shadow 0.4s ease;
}

.glass-panel:hover {
    border-color: rgba(139, 124, 255, 0.40);
}

.class-card:hover {
    border-color: rgba(139, 124, 255, 0.55);
    box-shadow: 0 30px 90px rgba(139, 124, 255, 0.20), 0 26px 80px rgba(0, 0, 0, 0.50);
}

.amenity-dot {
    animation: dotPulse 3s ease-in-out infinite;
}

@keyframes dotPulse {
    0%, 100% {
        box-shadow: 0 0 0 0.45rem var(--terracotta-soft);
    }
    50% {
        box-shadow: 0 0 0 0.65rem rgba(53, 224, 206, 0.16);
    }
}

@media (prefers-reduced-motion: reduce) {
    .gradient-text {
        animation: none;
    }

    .amenity-dot {
        animation: none;
    }
}