/*
 * Scroll reveal for homepage sections ([data-reveal]). Only active after the
 * inline head script adds .home-js-reveal (JavaScript available, motion allowed);
 * home.js adds .is-revealed once a section scrolls into view.
 * Order: node → label → trace draws to the card → card slides in.
 */
.home-js-reveal [data-reveal] .home-section-label { transition: color .4s ease .1s; }
.home-js-reveal [data-reveal] .home-section-label::before { transition: transform .35s cubic-bezier(.34, 1.56, .64, 1); }
.home-js-reveal [data-reveal] .home-trace__draw { stroke-dasharray: 1; }
.home-js-reveal [data-reveal] .home-trace__head .home-trace__draw { transition: stroke-dashoffset .35s ease-in .15s; }
.home-js-reveal [data-reveal] .home-trace__branch,
.home-js-reveal [data-reveal] .home-trace__pad { transition: opacity .3s ease .45s; }
.home-js-reveal [data-reveal] .home-trace__run { transform-origin: left; transition: transform .4s cubic-bezier(.65, 0, .35, 1) .45s; }
.home-js-reveal [data-reveal] .home-trace__corner .home-trace__draw { transition: stroke-dashoffset .2s linear .85s; }
.home-js-reveal [data-reveal] .home-trace__end { transform-box: fill-box; transform-origin: center; transition: transform .3s cubic-bezier(.34, 1.56, .64, 1) 1.05s; }
.home-js-reveal [data-reveal] .home-project-tabs { transition: opacity .45s ease .75s, transform .45s ease .75s; }
.home-js-reveal [data-reveal] .home-project-tabs::before { transform-origin: top; transition: transform .2s linear 1.05s; }
.home-js-reveal [data-reveal] .home-project-tabs::after { transition: transform .3s cubic-bezier(.34, 1.56, .64, 1) 1.25s; }
.home-js-reveal [data-reveal] .home-project-panels,
.home-js-reveal [data-reveal] > .home-project,
.home-js-reveal [data-reveal] > .home-launch,
.home-js-reveal [data-reveal] .home-contact__card,
.home-js-reveal [data-reveal] > .home-about__card,
.home-js-reveal [data-reveal] .home-gaming__grid { transition: opacity .6s ease .95s, transform .75s cubic-bezier(.2, .8, .2, 1) .95s; }
.home-js-reveal .home-projects[data-reveal] .home-project-panels { transition-delay: 1.2s; }

.home-js-reveal [data-reveal]:not(.is-revealed) .home-section-label { color: transparent; }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-section-label::before,
.home-js-reveal [data-reveal]:not(.is-revealed) .home-trace__end,
.home-js-reveal [data-reveal]:not(.is-revealed) .home-project-tabs::after { transform: scale(0); }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-trace__draw { stroke-dashoffset: 1; }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-trace__branch,
.home-js-reveal [data-reveal]:not(.is-revealed) .home-trace__pad { opacity: 0; }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-trace__run { transform: scaleX(0); }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-project-tabs::before { transform: scaleY(0); }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-project-tabs { opacity: 0; transform: translateY(12px); }
.home-js-reveal [data-reveal]:not(.is-revealed) .home-project-panels,
.home-js-reveal [data-reveal]:not(.is-revealed) > .home-project,
.home-js-reveal [data-reveal]:not(.is-revealed) > .home-launch,
.home-js-reveal [data-reveal]:not(.is-revealed) .home-contact__card,
.home-js-reveal [data-reveal]:not(.is-revealed) > .home-about__card,
.home-js-reveal [data-reveal]:not(.is-revealed) .home-gaming__grid { opacity: 0; transform: translateY(36px) scale(.985); }

/* Sections revealed while already scrolled past skip the animation. */
.home-js-reveal .is-reveal-instant *,
.home-js-reveal .is-reveal-instant *::before,
.home-js-reveal .is-reveal-instant *::after { transition: none !important; }

/* Stats: short stagger. */
.home-js-reveal .home-stats[data-reveal] > div { transition: opacity .5s ease, transform .5s cubic-bezier(.2, .8, .2, 1); }
.home-js-reveal .home-stats[data-reveal] > div:nth-child(2) { transition-delay: .08s; }
.home-js-reveal .home-stats[data-reveal] > div:nth-child(3) { transition-delay: .16s; }
.home-js-reveal .home-stats[data-reveal] > div:nth-child(4) { transition-delay: .24s; }
.home-js-reveal .home-stats[data-reveal] > div:nth-child(n+5) { transition-delay: .32s; }
.home-js-reveal .home-stats[data-reveal]:not(.is-revealed) > div { opacity: 0; transform: translateY(14px); }
