/* ============ FALLBACK — tier lite/static ============
   lite: scrub zostaje (canvas 2D tani) — różnice ogarnia media query
   w sections.css + FRAMING_LITE w JS.
   static: zero pinów i animacji — film rozłożony do normalnego flow,
   poster <img> zamiast canvasa, sekwencja NIE jest pobierana.
   ====================================================== */

/* ---------- STATIC ---------- */
html[data-tier="static"] .s-film__stage {
  height: auto;
  min-height: 100svh;
  overflow: visible;
  display: flex;
  flex-direction: column;
  padding-bottom: var(--block-pad);
}

html[data-tier="static"] .s-film__canvas,
html[data-tier="static"] .s-film__hud,
html[data-tier="static"] .s-film__bar,
html[data-tier="static"] .ch__cue { display: none; }

html[data-tier="static"] .s-film__glow {
  height: 100svh;
}

html[data-tier="static"] .s-film__poster {
  position: relative;
  inset: auto;
  height: 64svh;
  padding: 0;
  margin-top: 12svh;
}

html[data-tier="static"] .ch {
  position: relative;
  inset: auto;
  translate: none;
  opacity: 1;
  pointer-events: auto;
  max-width: 640px;
  margin: clamp(40px, 7vw, 88px) auto 0;
  padding: 0 var(--gutter);
  text-align: center;
}
html[data-tier="static"] .ch--title {
  display: block;
  order: -1;
  padding-top: 16svh;
  margin-top: 0;
}
html[data-tier="static"] .ch__list { text-align: left; }
html[data-tier="static"] .ch__ctas { justify-content: center; }

/* Marquee bez JS — pętla CSS na zduplikowanych spanach */
html[data-tier="static"] .marquee__track {
  animation: marquee-loop 28s linear infinite;
}
@keyframes marquee-loop {
  to { transform: translateX(-25%); }
}
@media (prefers-reduced-motion: reduce) {
  html[data-tier="static"] .marquee__track { animation: none; }
}

/* Canvas kup — na static rysuje go IO i tak, ale bez JS-a daje pustkę: ukryj */
html[data-tier="static"] .s-buy__canvas { display: none; }
html[data-tier="static"] .s-buy__stage { grid-template-columns: 1fr; }
