/* Content stays visible by default; entrance reveals use the Web Animations API. */
[data-reveal] { scroll-margin-block-start: 6rem; }

/* A CSS-only escape hatch means the loader also clears when JavaScript is unavailable. */
#page-loader {
    animation: loader-fallback 0.25s ease 2.5s forwards;
}
#page-loader.is-loaded {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.22s ease, visibility 0.22s ease;
}
#page-loader[hidden] { display: none !important; }

.float-leaf, .gentle-bob { animation: leaf-drift 6s ease-in-out infinite; }
.float-leaf:nth-child(2n) { animation-delay: -2s; animation-duration: 7.5s; }
.float-cloud { animation: cloud-drift 9s ease-in-out infinite; }
.sun-spin { animation: sunshine-turn 45s linear infinite; }
.loader-sprout { transform-origin: 50% 100%; animation: sprout-sway 1.2s ease-in-out infinite; }
.loader-dot { animation: seed-bounce 1s ease-in-out infinite; }
.loader-dot:nth-child(2) { animation-delay: 0.12s; }
.loader-dot:nth-child(3) { animation-delay: 0.24s; }

.image-hover img { transition: transform 0.65s cubic-bezier(.2,.7,.2,1); }
@media (hover: hover) and (pointer: fine) {
    .image-hover:hover img { transform: scale(1.035); }
}

[data-image-loading] { position: relative; overflow: hidden; }
[data-image-loading]::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(100deg, transparent 20%, rgb(255 255 255 / 0.25) 45%, transparent 70%);
    animation: photo-shimmer 1.7s ease-in-out infinite;
}

@keyframes loader-fallback {
    to { opacity: 0; visibility: hidden; pointer-events: none; }
}
@keyframes leaf-drift {
    0%, 100% { transform: translateY(0) rotate(-5deg); }
    50% { transform: translateY(-10px) rotate(5deg); }
}
@keyframes cloud-drift {
    0%, 100% { transform: translateX(-7px); }
    50% { transform: translateX(7px); }
}
@keyframes sunshine-turn { to { transform: rotate(360deg); } }
@keyframes sprout-sway {
    0%, 100% { transform: rotate(-6deg) scale(0.97); }
    50% { transform: rotate(6deg) scale(1.03); }
}
@keyframes seed-bounce {
    0%, 70%, 100% { transform: translateY(0); opacity: 0.45; }
    35% { transform: translateY(-5px); opacity: 1; }
}
@keyframes photo-shimmer {
    from { transform: translateX(-100%); }
    to { transform: translateX(100%); }
}

@media (prefers-reduced-motion: reduce) {
    .float-leaf, .gentle-bob, .float-cloud, .sun-spin,
    .loader-sprout, .loader-dot, [data-image-loading]::after { animation: none !important; }
    .image-hover img { transition: none; }
    #page-loader { animation: loader-fallback 0.01s ease 1.5s forwards; }
    #page-loader.is-loaded { transition: none; }
    html { scroll-behavior: auto !important; }
}
