/* public/oaks/trail-run-skin.css
   @shard S11
   Trail Run skin pack -- Oaks variant. Pitch-stadium palette, electric-mint
   accent, halftone ambient. Fixes the prior build's missing/wrong
   --runner-sprite-url URL (SOLUTION sec.3 -- folded into S11).
   The existing /shared/trail-run/ engine reads these tokens via the
   trail-run-skin contract (no engine changes this build).
   ZERO JavaScript in this shard (NO-JS LOCK). */

:root.oaks,
body.oaks,
.trail-skin-oaks {
  --runner-sprite-url:    url('/oaks/trail-run-sprites/runner.svg');
  --ghost-sprite-url:     url('/oaks/trail-run-sprites/ghost.svg');
  --lane-bg:              linear-gradient(90deg, var(--pitch), var(--midnight));
  --obstacle-sprite-url:  url('/oaks/trail-run-sprites/obstacle.svg');
  --bloom-vignette-bg:    radial-gradient(circle, var(--electric), transparent);
  --accent:               var(--electric);
  --tr-tap-min:           88px;                /* Lock 16: 88px Trail Run lanes Oaks */
}

/* Terminator-style bloom on try-zone reveal: pitch flash from baseline,
   electric-mint corona overhead as the try-line crosses the frame. */
@keyframes trail-bloom-oaks {
  0% {
    opacity: 0;
    clip-path: inset(100% 0 0 0);
    filter: blur(18px) brightness(1.8) saturate(1.4);
  }
  12% {
    opacity: 1;
    clip-path: inset(88% 0 0 0);
    filter: blur(12px) brightness(1.6) saturate(1.3);
    box-shadow: inset 0 -60px 80px rgba(60, 226, 165, .8);
  }
  30% {
    clip-path: inset(65% 0 0 0);
    filter: blur(7px) brightness(1.35) saturate(1.2);
    box-shadow: inset 0 -80px 100px rgba(60, 226, 165, .55);
  }
  55% {
    clip-path: inset(35% 0 0 0);
    filter: blur(3px) brightness(1.15) saturate(1.1);
    box-shadow: inset 0 -40px 60px rgba(60, 226, 165, .3);
  }
  80% {
    clip-path: inset(8% 0 0 0);
    filter: blur(.5px) brightness(1.05);
    box-shadow: none;
  }
  100% {
    opacity: 1;
    clip-path: inset(0% 0 0 0);
    filter: blur(0) brightness(1);
    box-shadow: none;
  }
}

.trail-bloom-oaks-active {
  animation: trail-bloom-oaks 3s cubic-bezier(.28, .68, .36, 1) forwards;
}

/* Lane minimum tap floor (Oaks: 88px lanes) */
.trail-skin-oaks .trail-lane,
.oaks .trail-lane {
  min-height: var(--tr-tap-min);
}

/* End of file: Lock 25 verbatim reduced-motion block (SOLUTION sec.2.4) */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
  }
  path[stroke-dasharray] { stroke-dashoffset: 0 !important; }
  .achieve::before, .companion-housing::before { animation-play-state: paused !important; }
  .trail-bloom-oaks-active {
    animation: none;
    transition: none;
    opacity: 1;
    clip-path: none;
    filter: none;
  }
}
