/* Explain: Layout styles for sections, hero background, and marquee text animation. */
.section-pad {
    padding-top: clamp(4.5rem, 9vw, 8.5rem);
    padding-bottom: clamp(4.5rem, 9vw, 8.5rem);
}

.hero-dark {
    background:
        radial-gradient(circle at 82% 10%, rgba(224, 169, 187, 0.12), transparent 38rem),
        radial-gradient(circle at 8% 92%, rgba(139, 107, 181, 0.12), transparent 30rem),
        var(--background-color);
}

.hero-cover-media {
    position: absolute;
    inset: 0;
    z-index: -2;
    overflow: hidden;
}

.hero-cover-anim {
    position: absolute;
    inset: 0;
    background-image: url('https://files.cdn-files-a.com/uploads/12546227/normal_6ae73ea97c49b.png?format=avif');
    background-size: contain;
    background-position: left center;
    background-repeat: no-repeat;
    transform-origin: left center;
    -webkit-mask-image: linear-gradient(to left, transparent 0%, rgba(0, 0, 0, 0.35) 22%, rgba(0, 0, 0, 0.85) 50%, #000 72%);
    mask-image: linear-gradient(to left, transparent 0%, rgba(0, 0, 0, 0.35) 22%, rgba(0, 0, 0, 0.85) 50%, #000 72%);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
}

/* Push the hero visual to the left on wide screens so it reads as a distinct
   element beside the headline instead of sitting behind the text. */
@media (min-width: 1024px) {
    .hero-cover-anim {
        background-size: contain;
        background-position: left center;
        transform-origin: left center;
    }
}



.hero-cover-scrim {
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(to left, var(--background-color) 0%, rgba(0, 25, 41, 0.92) 10%, rgba(0, 25, 41, 0) 30%);
    pointer-events: none;
}

.hero-sparkles {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.hero-sparkle {
    position: absolute;
    display: block;
    background: #ffffff;
    clip-path: polygon(50% 0%, 53% 47%, 100% 50%, 53% 53%, 50% 100%, 47% 53%, 0% 50%, 47% 47%);
    filter: drop-shadow(0 0 1px rgba(255, 255, 255, 0.7));
    pointer-events: none;
}

/* Sharp brief flash — long dim rest, one quick bright spike */
.hero-sparkle--flash {
    opacity: 0.08;
    animation: hero-sparkle-flash 5s ease-in-out infinite;
}

/* Gentle steady shimmer — softly present most of the time */
.hero-sparkle--pulse {
    opacity: 0.28;
    animation: hero-sparkle-pulse 6s ease-in-out infinite;
}

/* Slow faint twinkle — barely there, occasionally surfacing */
.hero-sparkle--soft {
    opacity: 0.14;
    animation: hero-sparkle-soft 7s ease-in-out infinite;
}

@keyframes hero-sparkle-flash {
    0%,
    58%,
    100% {
        opacity: 0.08;
        transform: scale(0.38) rotate(0deg);
    }

    68% {
        opacity: 0.72;
        transform: scale(1.08) rotate(35deg);
    }

    78% {
        opacity: 0.3;
        transform: scale(0.62) rotate(55deg);
    }
}

@keyframes hero-sparkle-pulse {
    0%,
    100% {
        opacity: 0.24;
        transform: scale(0.6) rotate(0deg);
    }

    50% {
        opacity: 0.78;
        transform: scale(1) rotate(22deg);
    }
}

@keyframes hero-sparkle-soft {
    0%,
    100% {
        opacity: 0.12;
        transform: scale(0.5) rotate(0deg);
    }

    45% {
        opacity: 0.64;
        transform: scale(0.9) rotate(28deg);
    }
}

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

    .hero-sparkle--flash {
        opacity: 0.55;
        transform: scale(0.8);
    }

    .hero-sparkle--pulse {
        opacity: 0.7;
        transform: scale(0.9);
    }

    .hero-sparkle--soft {
        opacity: 0.4;
        transform: scale(0.7);
    }
}

.contact-section {
    background:
        radial-gradient(circle at 88% 18%, rgba(224, 169, 187, 0.12), transparent 30rem),
        linear-gradient(180deg, var(--background-color), var(--surface-color));
}

.marquee-band {
    overflow: hidden;
}

.marquee-track {
    display: flex;
    width: max-content;
    align-items: center;
    direction: ltr;
    animation: marquee-scroll 38s linear infinite;
}

.marquee-item {
    display: inline-flex;
    align-items: center;
    gap: 1.6rem;
    padding: 0 1.6rem;
    white-space: nowrap;
    color: var(--on-accent);
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(1.4rem, 3vw, 2.2rem);
    line-height: 1.1;
}

.marquee-star {
    font-size: 0.85rem;
}

@keyframes marquee-scroll {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-50%);
    }
}

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

@media (min-width: 640px) and (max-width: 1023px) {
    .service-dots {
        flex-direction: row;
        align-items: center;
        justify-content: center;
    }
}