/* ==========================================================================
   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 fram ur dimman: uppåt, från oskärpa till skarpt */
  .fx [data-reveal] {
    opacity: 0;
    transform: translate3d(0, 34px, 0) scale(.985);
    filter: blur(10px);
    transition:
      opacity 1s var(--ease-out) calc(var(--i, 0) * 90ms),
      transform 1.2s var(--ease-out) calc(var(--i, 0) * 90ms),
      filter 1s var(--ease-out) calc(var(--i, 0) * 90ms);
  }
  .fx [data-reveal].is-in { opacity: 1; transform: none; filter: none; }
  /* Kort som lutar har sin egen transform när de väl syns */
  .fx .event-card[data-reveal].is-in, .fx .hero__card[data-reveal].is-in, .fx .poster[data-reveal].is-in {
    transform: perspective(1100px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(var(--lift, 0));
    transition: opacity 1s var(--ease-out) calc(var(--i, 0) * 90ms), transform .6s var(--ease-out), filter 1s var(--ease-out) calc(var(--i, 0) * 90ms);
  }
  .fx .event-card.is-tilting, .fx .hero__card.is-tilting, .fx .poster.is-tilting { transition: transform .12s linear, opacity 1s, filter 1s; }

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

  /* Guldet i rubriker skimrar */
  .fx .text-gold { animation: gold-shimmer 9s ease-in-out infinite; }
  @keyframes gold-shimmer { 0%, 100% { background-position: 0% 0; } 50% { background-position: 100% 0; } }

  /* Glans som sveper över guldknappar och stora glasskivor */
  .fx .btn--shine::after {
    content: ""; position: absolute; inset: 0; z-index: -1;
    background: linear-gradient(105deg, transparent 35%, rgb(255 255 255 / .55) 50%, transparent 65%);
    background-size: 250% 100%;
    animation: btn-shine 5s ease-in-out infinite;
  }
  @keyframes btn-shine { 0%, 62% { background-position: 150% 0; } 100% { background-position: -50% 0; } }
  .fx .glass__sheen::before { animation: sheen 9s ease-in-out infinite; }
  @keyframes sheen { 0%, 70% { transform: rotate(18deg) translateX(-120%); } 100% { transform: rotate(18deg) translateX(420%); } }

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

/* 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; }
  .stage__orbs i { animation: none; }
}
.no-fx .stage__orbs i, .no-fx .hero__logo, .no-fx .cta-band__star, .no-fx .ticker__track { animation: none; }
.no-fx .ticker__track { flex-wrap: wrap; width: auto; justify-content: center; }
