/* Signature move: a golf ball plays the page from tee to green (docs/SITE-SCROLL-PLAN.md).
   flight.js measures waypoints into custom properties; the shared engine's --p on .flight is the
   only scroll input. Every output below is a pure function of --p (transform and opacity only),
   so scrubbing is symmetric and nothing runs on a timer. Legs: L1 tee to B, L2 B to C, F1/H/F2 the
   pinned C stage (follow, approach hop, follow), L3 C to D, L4 D to the E green. The overlay never
   receives pointer events, focus or layout; it lives in the empty gutter beside the copy. */
#main { position: relative; }
.flight {
  position: absolute;
  inset: 0;
  z-index: 1;
  visibility: hidden;
  overflow: hidden;
  pointer-events: none;
  --show: clamp(0, calc((var(--p) - var(--h0)) / (var(--h1) - var(--h0))), 1);
  --t1: clamp(0, calc((var(--p) - var(--a1)) / (var(--b1) - var(--a1))), 1);
  --t2: clamp(0, calc((var(--p) - var(--a2)) / (var(--b2) - var(--a2))), 1);
  --t3: clamp(0, calc((var(--p) - var(--a3)) / (var(--b3) - var(--a3))), 1);
  --t4: clamp(0, calc((var(--p) - var(--a4)) / (var(--b4) - var(--a4))), 1);
  --t5: clamp(0, calc((var(--p) - var(--a5)) / (var(--b5) - var(--a5))), 1);
  --t6: clamp(0, calc((var(--p) - var(--a6)) / (var(--b6) - var(--a6))), 1);
  --t7: clamp(0, calc((var(--p) - var(--a7)) / (var(--b7) - var(--a7))), 1);
  --e1: calc(var(--t1) * var(--t1) * (3 - 2 * var(--t1)));
  --e2: calc(var(--t2) * var(--t2) * (3 - 2 * var(--t2)));
  --e3: calc(var(--t3) * var(--t3) * (3 - 2 * var(--t3)));
  --e4: calc(var(--t4) * var(--t4) * (3 - 2 * var(--t4)));
  --e5: calc(var(--t5) * var(--t5) * (3 - 2 * var(--t5)));
  --e6: calc(var(--t6) * var(--t6) * (3 - 2 * var(--t6)));
  --e7: calc(var(--t7) * var(--t7) * (3 - 2 * var(--t7)));
  --gx: calc(var(--e1) * var(--dx1) + var(--e2) * var(--dx2) + var(--e3) * var(--dx3) + var(--e4) * var(--dx4) + var(--e5) * var(--dx5) + var(--e6) * var(--dx6) + var(--e7) * var(--dx7));
  --gy: calc(var(--t1) * var(--dy1) + var(--t2) * var(--dy2) + var(--t3) * var(--dy3) + var(--t4) * var(--dy4) + var(--t5) * var(--dy5) + var(--t6) * var(--dy6) + var(--t7) * var(--dy7));
  --lu: calc(4 * var(--k1) * var(--t1) * (1 - var(--t1)) + 4 * var(--k2) * var(--t2) * (1 - var(--t2)) + 4 * var(--k3) * var(--t3) * (1 - var(--t3)) + 4 * var(--k4) * var(--t4) * (1 - var(--t4)) + 4 * var(--k5) * var(--t5) * (1 - var(--t5)) + 4 * var(--k6) * var(--t6) * (1 - var(--t6)) + 4 * var(--k7) * var(--t7) * (1 - var(--t7)));
  --lift: calc(var(--arc) * var(--lu));
}
.flight[data-flight-ready] { visibility: visible; }
.flight-line {
  position: absolute;
  left: var(--lx);
  top: calc(var(--ly0) - var(--lh));
  width: var(--lw);
  height: var(--lh);
  overflow: hidden;
  opacity: var(--show);
  transform: translate3d(0, var(--gy), 0);
  will-change: transform;
}
.flight-line-in {
  position: absolute;
  left: 0;
  top: var(--lh);
  width: 100%;
  height: 100%;
  transform: translate3d(0, calc(-1 * var(--gy)), 0);
  will-change: transform;
}
.flight-path { display: block; width: 100%; height: 100%; overflow: visible; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.flight-path path:first-child { stroke: var(--aqua-400); stroke-opacity: .16; stroke-width: 12px; }
.flight-path path:last-child { stroke: var(--aqua-600); stroke-width: 2px; stroke-dasharray: .1 7; }
.flight[data-flight-compact] .flight-path path:first-child { display: none; }
.flight-tee, .flight-green { position: absolute; width: calc(var(--ball) * 3); height: auto; opacity: var(--show); }
.flight-tee { left: calc(var(--x0) - var(--ball) * 1.5); top: calc(var(--y0) - var(--ball) * .125); }
.flight-green {
  left: calc(var(--pin-x) - var(--ball) * 1.5);
  top: calc(var(--pin-y) - var(--ball) * 1.875);
  opacity: calc(var(--show) * clamp(0, calc((var(--t7) - .5) * 4), 1));
}
.flight-tee ellipse { fill: var(--aqua-400); fill-opacity: .2; stroke: var(--aqua-600); stroke-width: .75; }
.flight-green .patch { fill: var(--aqua-400); fill-opacity: .24; stroke: var(--aqua-100); stroke-opacity: .6; stroke-width: .75; }
.flight-green .pole { stroke: var(--aqua-100); stroke-width: 1.5; stroke-linecap: round; }
.flight-green .flag { fill: var(--coral-500); }
.flight[data-flight-compact] .flight-tee, .flight[data-flight-compact] .patch { display: none; }
.flight-shadow, .flight-ball {
  position: absolute;
  left: 0;
  top: 0;
  margin-left: calc(var(--ball) / -2);
  border-radius: 50%;
  will-change: transform, opacity;
}
.flight-shadow {
  width: var(--ball);
  height: calc(var(--ball) * .4);
  margin-top: calc(var(--ball) * .3);
  background: rgba(7, 24, 39, .55);
  filter: blur(1.5px);
  opacity: calc(var(--show) * (.55 - .3 * var(--lu)));
  transform: translate3d(calc(var(--x0) + var(--gx)), calc(var(--y0) + var(--gy)), 0) scale(calc(1 - .45 * var(--lu)));
}
.flight-ball {
  width: var(--ball);
  height: var(--ball);
  margin-top: calc(var(--ball) / -2);
  opacity: var(--show);
  background: radial-gradient(circle at 34% 30%, rgba(255, 255, 255, .95) 0 18%, transparent 19%),
    radial-gradient(circle, rgba(15, 35, 55, .22) 0 .7px, transparent .9px) 0 0 / 4px 4px,
    radial-gradient(circle, rgba(15, 35, 55, .22) 0 .7px, transparent .9px) 2px 2px / 4px 4px,
    radial-gradient(circle at 36% 32%, #fff, #e4ebf0 72%, #c3cfd8);
  box-shadow: 0 1px 3px rgba(7, 24, 39, .4), 0 0 0 1px rgba(7, 24, 39, .28);
  transform: translate3d(calc(var(--x0) + var(--gx)), calc(var(--y0) + var(--gy) - var(--lift)), 0);
}
@media (prefers-reduced-motion: reduce), print {
  .flight { display: none !important; }
}
