@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(212, 165, 116, 0.55);
    }

    70% {
        box-shadow: 0 0 0 12px rgba(212, 165, 116, 0);
    }

    100% {
        box-shadow: 0 0 0 0 rgba(212, 165, 116, 0);
    }
}

@keyframes rise {
    from {
        opacity: 0;
        transform: translateY(22px);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes drift {
    from {
        transform: translate3d(0, 0, 0);
    }

    to {
        transform: translate3d(0, -22px, 0);
    }
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
    .scroll-shimmer {
        background-image: linear-gradient(105deg,
                var(--text) 0 44%,
                var(--accent-light) 50%,
                var(--text) 56% 100%);
        background-size: 200% 100%;
        background-repeat: repeat-x;
        background-position: var(--shimmer-shift, 0%) 0;
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: transparent;
        color: transparent;
    }
}

html[data-theme-switch] *,
html[data-theme-switch] *::before,
html[data-theme-switch] *::after {
    transition: none !important;
}

::view-transition-old(root),
::view-transition-new(root) {
    animation-duration: 0.52s;
    animation-timing-function: var(--ease);
}

.fx-glow {
    position: relative;
    isolation: isolate;
}

.fx-glow::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    background: radial-gradient(var(--fx-glow-size, 340px) circle at var(--fx-mx, 50%) var(--fx-my, 50%), var(--fx-glow-color, rgba(255, 255, 255, 0.07)), transparent var(--fx-glow-stop, 72%));
    transition: opacity 0.35s var(--ease);
}

.fx-glow.fx-active::after {
    opacity: 1;
}

body.light-theme .fx-glow::after {
    --fx-glow-color: rgba(141, 100, 64, 0.12);
    --fx-glow-stop: 62%;
}

.reveal--delay-1 {
    transition-delay: 0.06s;
}

.reveal--delay-2 {
    transition-delay: 0.12s;
}

.reveal--delay-3 {
    transition-delay: 0.18s;
}

.reveal--delay-4 {
    transition-delay: 0.24s;
}

.reveal--delay-5 {
    transition-delay: 0.3s;
}

@keyframes shine {
    from {
        left: -60%;
        opacity: 0.9;
    }

    to {
        left: 120%;
        opacity: 0;
    }
}

@keyframes release-text {
    from {
        background-position: 200% 0;
    }

    to {
        background-position: 0% 0;
    }
}

@keyframes release-pulse {

    0%,
    100% {
        transform: scale(1);
        opacity: 1;
    }

    50% {
        transform: scale(1.14);
        opacity: 0.78;
    }
}

@keyframes float-soft {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-3px);
    }
}

@keyframes glow-drift {
    from {
        translate: 0 0;
        scale: 1;
    }

    to {
        translate: 26px -20px;
        scale: 1.1;
    }
}

@media (prefers-reduced-motion: no-preference) {
    @supports (animation-timeline: view()) {
        .scroll-anim {
            animation: rise both linear;
            animation-timeline: view();
            animation-range: entry 5% cover 32%;
        }

        .parallax-soft {
            animation: drift both linear;
            animation-timeline: view();
            animation-range: entry 0% exit 100%;
        }
    }
}

@keyframes platform-fade {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes platform-rise {
    from {
        opacity: 0;
        transform: translateY(14px) scale(0.98);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
    }

    .reveal {
        opacity: 1;
        transform: none;
    }

}