/* Sitewide animated abstract background - fixed behind all content, drifts
   slowly across the whole viewport so it reads through the glass panels as
   you scroll, instead of being confined to a single section. */
.site-ambient-bg {
    position: fixed;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.site-ambient-blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    will-change: transform;
}

.site-ambient-blob--1 {
    background: radial-gradient(circle at 30% 30%, var(--orange-500), transparent 70%);
    width: 46vw;
    height: 46vw;
    top: -10vw;
    left: -12vw;
    opacity: 0.35;
    animation: driftOrbitA 34s var(--ease-standard) infinite;
}

.site-ambient-blob--2 {
    background: radial-gradient(circle at 70% 70%, var(--navy-600), transparent 70%);
    width: 52vw;
    height: 52vw;
    top: 30vh;
    right: -18vw;
    opacity: 0.4;
    animation: driftOrbitB 42s var(--ease-standard) infinite;
}

.site-ambient-blob--3 {
    background: radial-gradient(circle at 50% 50%, var(--orange-400), transparent 70%);
    width: 34vw;
    height: 34vw;
    bottom: -8vw;
    left: 20vw;
    opacity: 0.28;
    animation: driftOrbitC 28s var(--ease-standard) infinite;
}

.site-ambient-blob--4 {
    background: radial-gradient(circle at 50% 50%, var(--navy-500), transparent 70%);
    width: 30vw;
    height: 30vw;
    top: 60vh;
    left: 4vw;
    opacity: 0.3;
    animation: driftOrbitD 38s var(--ease-standard) infinite;
}

.site-ambient-blob--5 {
    background: radial-gradient(circle at 50% 50%, var(--orange-500), transparent 70%);
    width: 22vw;
    height: 22vw;
    top: 6vh;
    right: 12vw;
    opacity: 0.25;
    animation: driftOrbitE 24s var(--ease-standard) infinite;
}

@keyframes driftOrbitA {
    0%   { transform: translate(0, 0) scale(1); }
    25%  { transform: translate(18vw, 10vh) scale(1.12); }
    50%  { transform: translate(10vw, 26vh) scale(0.95); }
    75%  { transform: translate(-8vw, 12vh) scale(1.05); }
    100% { transform: translate(0, 0) scale(1); }
}

@keyframes driftOrbitB {
    0%   { transform: translate(0, 0) scale(1); }
    25%  { transform: translate(-16vw, 8vh) scale(0.92); }
    50%  { transform: translate(-24vw, -6vh) scale(1.08); }
    75%  { transform: translate(-6vw, -14vh) scale(1); }
    100% { transform: translate(0, 0) scale(1); }
}

@keyframes driftOrbitC {
    0%   { transform: translate(0, 0) scale(1); }
    33%  { transform: translate(12vw, -10vh) scale(1.1); }
    66%  { transform: translate(-10vw, -18vh) scale(0.94); }
    100% { transform: translate(0, 0) scale(1); }
}

@keyframes driftOrbitD {
    0%   { transform: translate(0, 0) scale(1); }
    50%  { transform: translate(14vw, -16vh) scale(1.1); }
    100% { transform: translate(0, 0) scale(1); }
}

@keyframes driftOrbitE {
    0%   { transform: translate(0, 0) scale(1); }
    50%  { transform: translate(-10vw, 14vh) scale(0.9); }
    100% { transform: translate(0, 0) scale(1); }
}

.reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity var(--duration-medium) var(--ease-standard), transform var(--duration-medium) var(--ease-standard);
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    .site-ambient-blob {
        animation: none !important;
    }

    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    html {
        scroll-behavior: auto;
    }
}
