/* Location indicator */

.blinking-dot {
    animation: locationPulse 1.8s ease-in-out infinite;
}

@keyframes locationPulse {
    0%,
    100% {
        opacity: 1;
        transform: scale(1);
        box-shadow: 0 0 8px var(--accent);
    }

    50% {
        opacity: 0.35;
        transform: scale(0.72);
        box-shadow: 0 0 18px var(--accent);
    }
}


/* Hero entrance */

.hero-content {
    animation: heroEnter 0.9s ease-out both;
}

@keyframes heroEnter {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}


/* Photo fade-in */

.hero-photo {
    animation: photoReveal 1.4s ease-out both;
}

@keyframes photoReveal {
    from {
        opacity: 0;
        transform: translateY(-50%) scale(1.04);
    }

    to {
        opacity: 0.62;
        transform: translateY(-50%) scale(1);
    }
}


/* Respect reduced-motion preferences */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
    }
}