/* ---------------------------------------------------------------------------
   The live homepage, new type and motion. Preview at /?preview=home-v2.
   Everything is scoped to body.lf-v2, so the live page is untouched.

   Type: the live site's own fonts. Fraunces, DM Sans and Nunito were each
   tried here on 2 October 2026 and rejected, so this preview changes motion
   only.
   Motion: one entrance for the hero on load, and sections rising in once as
   they scroll into view. Both are off under prefers-reduced-motion.
   --------------------------------------------------------------------------- */

/* Hero entrance: the photograph settles, then the lines arrive in order. */
@keyframes lf2-up { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes lf2-settle { from { opacity: 0; transform: scale(1.08); } to { opacity: 1; transform: scale(1.02); } }
.lf-v2 .lf-hero__img { animation: lf2-settle 1.6s cubic-bezier(.2,.7,.2,1) both; }
.lf-v2 .lf-hero__body > * { animation: lf2-up .9s cubic-bezier(.2,.7,.2,1) both; }
.lf-v2 .lf-hero__body > *:nth-child(1) { animation-delay: .25s; }
.lf-v2 .lf-hero__body > *:nth-child(2) { animation-delay: .4s; }
.lf-v2 .lf-hero__body > *:nth-child(3) { animation-delay: .55s; }
.lf-v2 .lf-hero__body > *:nth-child(4) { animation-delay: .7s; }
.lf-v2 .lf-hero__body > *:nth-child(5) { animation-delay: .85s; }
.lf-v2 .lf-hero__fair { animation: lf2-up .9s 1s both; }

/* Scroll reveal (classes added by site/home.js). */
.lf-v2 .lf-rise { opacity: 0; transform: translateY(32px); transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0ms); }
.lf-v2 .lf-rise.is-in { opacity: 1; transform: none; }

/* Small responses to the pointer. */
.lf-v2 .lf-card__media { overflow: hidden; }
.lf-v2 .lf-card__media img { transition: transform 1s cubic-bezier(.2,.7,.2,1); }
.lf-v2 .lf-card:hover .lf-card__media img { transform: scale(1.05); }
.lf-v2 .lf-btn { transition: background .25s ease, transform .25s ease; }
.lf-v2 .lf-btn:hover { transform: translateY(-2px); }
.lf-v2 .lf-link { background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-repeat: no-repeat; background-position: 0 100%; transition: background-size .4s ease; }
.lf-v2 .lf-link:hover { background-size: 100% 1px; }

@media (prefers-reduced-motion: reduce) {
  .lf-v2 .lf-hero__img, .lf-v2 .lf-hero__body > *, .lf-v2 .lf-hero__fair { animation: none !important; }
  .lf-v2 .lf-rise { opacity: 1 !important; transform: none !important; transition: none !important; }
}
