/* FiveBench motion: entrances, scroll reveals, growing bars, hover lift.
   Everything sits behind prefers-reduced-motion:no-preference, and design.css
   already strips animation and transition under reduce, so a reader who asks
   for stillness gets the finished page with nothing hidden. */
@media (prefers-reduced-motion:no-preference){
  @keyframes fx-rise{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:none}}
  @keyframes fx-fade{from{opacity:0}to{opacity:1}}
  @keyframes fx-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  @keyframes fx-shimmer{from{background-position:-200% 0}to{background-position:200% 0}}

  /* Route entrance: direct children of the page rise in, staggered. */
  .fx-enter{animation:fx-rise .72s cubic-bezier(.16,.84,.3,1) both;animation-delay:calc(var(--i,0) * 70ms)}
  .fx-enter-soft{animation:fx-fade .6s ease both;animation-delay:calc(var(--i,0) * 40ms)}

  /* Below-the-fold sections wait for the reader. */
  .fx-reveal{opacity:0;transform:translate3d(0,22px,0);transition:opacity .85s cubic-bezier(.16,.84,.3,1),transform .85s cubic-bezier(.16,.84,.3,1);transition-delay:calc(var(--i,0) * 60ms)}
  .fx-reveal.fx-in{opacity:1;transform:none}

  /* Data bars draw from zero once their chart is on screen. */
  .fx-bars .index-chart-track>span,.fx-bars .weight-track>span,.fx-bars .bar>span{transform-origin:left center;transform:scaleX(0)}
  .fx-bars.fx-in .index-chart-track>span,.fx-bars.fx-in .weight-track>span,.fx-bars.fx-in .bar>span{animation:fx-grow 1.15s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 80ms + 120ms)}

  /* Ranked rows settle in one after another. */
  .results-table tbody tr.fx-row{animation:fx-rise .55s cubic-bezier(.16,.84,.3,1) both;animation-delay:calc(var(--i,0) * 35ms + 150ms)}

  /* Lift and light on hover. */
  .artifact-card,.judge-card,.subject-row,.stat,.home-metrics>a,.capability-links a{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s,background-color .35s}
  .artifact-card:hover,.judge-card:hover{transform:translate3d(0,-5px,0);box-shadow:0 22px 44px -28px rgba(24,32,22,.45)}
  .stat:hover{background:#fbfbf8}
  .results-table tbody tr{transition:background-color .25s}
  .button span,.text-link span,.inline-link span,.home-cta span,.home-secondary span{display:inline-block;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
  .button:hover span,.text-link:hover span,.inline-link:hover span,.home-cta:hover span,.home-secondary:hover span{transform:translate3d(3px,-2px,0)}
  .nav-item:before{transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s}
  .nav-item:not(.active):hover{transform:translate3d(2px,0,0)}

  /* Thumbnails shimmer until their image arrives, then fade in. */
  .fx-thumb{background:linear-gradient(100deg,#eceee7 30%,#f6f7f2 50%,#eceee7 70%);background-size:200% 100%;animation:fx-shimmer 1.6s linear infinite}
  .fx-thumb img{opacity:0;transition:opacity .6s ease}
  .fx-thumb.fx-loaded{animation:none;background:#f1f2ed}
  .fx-thumb.fx-loaded img{opacity:1}
}
