/* ==========================================================================
   EFFEKTER — allt rörligt. Bara när <body class="fx"> (inställningen
   "Effekter" i admin) och när besökaren inte bett om mindre rörelse.
   Utan effekter syns allt direkt, utan animation.
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {

  /* Glider upp och tonar in när det kommer i bild */
  .fx [data-reveal] {
    opacity: 0;
    transform: translate3d(0, 26px, 0);
    transition:
      opacity .8s var(--ease-out) calc(var(--i, 0) * 80ms),
      transform 1s var(--ease-out) calc(var(--i, 0) * 80ms);
  }
  .fx [data-reveal].is-in { opacity: 1; transform: none; }
  /* Kort som lyfter vid hover behåller sin egen transform när de väl syns */
  .fx .card-lift[data-reveal].is-in, .fx .week-day[data-reveal].is-in {
    transition: opacity .8s var(--ease-out) calc(var(--i, 0) * 80ms), transform var(--dur) var(--ease-out), box-shadow var(--dur), border-color var(--dur);
  }

  /* Rubrikraderna i hero sveper upp en i taget */
  .fx .hero__line > span { transform: translateY(105%); animation: line-up 1.1s var(--ease-out) forwards; animation-delay: calc(.1s + var(--i, 0) * .12s); }
  @keyframes line-up { to { transform: none; } }

  /* Lunchkortet glider in och den gula kanten "ritas" fram */
  .fx .lunch-card { animation: card-in 1s var(--ease-out) .15s both; }
  @keyframes card-in { from { opacity: 0; transform: translateY(22px); } }
  .fx .lunch-card::before { transform: scaleY(0); transform-origin: top; animation: bar-in 1.2s var(--ease-out) .5s forwards; }
  @keyframes bar-in { to { transform: none; } }

  /* Siffrorna lyser upp när de räknats klart */
  .fx .stat__value { transition: text-shadow 1s; }

  /* Rätterna i menyn tonar in i tur och ordning */
  .fx .menu-group .dish { opacity: 0; transform: translateX(-8px); transition: opacity .6s var(--ease-out) calc(var(--i, 0) * 60ms), transform .6s var(--ease-out) calc(var(--i, 0) * 60ms), background-color var(--dur-fast); }
  .fx .menu-group.is-in .dish { opacity: 1; transform: none; }
}

/* Ingen rörelse: allt visas direkt */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
.no-fx [data-parallax] { transform: none !important; }
