/* ============================================================
   JETPARTNER — přechody při scrollu (sdílené: index.html i technika.html)
   Jeden systém, „dorýsování výkresu“: svislé linky kolejnic se dotáhnou,
   nadpisy vyjedou po řádcích zpod masky, velká média se odkryjí shora dolů
   (clip-path) a zároveň dojedou z mírného zoomu, tmavé sekce se při příjezdu
   rozevřou z šířky obsahu na celou šířku okna (opona). JS: reveal.js.

   Značky v HTML (data-rv):
     lines    nadpis po řádcích (JS rozdělí text na řádky, po dojetí vrátí původní HTML)
     mask     jeden řádek (číslo, hodnota) vyjede zpod masky
     fade     odstavec, popisek: průhlednost + malý posun
     rise     objekt, blok: průhlednost + větší posun
     stagger  kontejner, jehož přímé potomky nastupují postupně (karty, parametry)
     wipe     médium: odkrytí zdola + dojezd ze zoomu (img / .tab-media uvnitř)
     curtain  tmavá sekce: opona podle scrollu (--cx nastavuje JS)
   Doplňky: data-rv-d="200" = zpoždění v ms, data-rv-group = potomci kontejneru
   dostanou zpoždění podle pořadí, data-rv-par = jemný parallax obrázku.

   Vypnutí: smažte <script src="reveal.js"> (obsah je pak hned vidět – skryté
   stavy platí jen s třídou .rv na <html>), nebo přidejte <html data-rv-off>.
   Ladění: tokeny níže. Animuje se jen opacity, translate/scale a clip-path.
   ============================================================ */
:root {
  --rv-ease:      cubic-bezier(.16, 1, .3, 1);    /* nástupy: rychlý start, dlouhé dojetí */
  --rv-ease-wipe: cubic-bezier(.77, 0, .18, 1);   /* odkrytí médií a linek: plynulé tam i zpět */
  --rv-dur:       1.1s;    /* řádky nadpisů, nástupy */
  --rv-dur-wipe:  1.5s;    /* odkrytí médií */
  --rv-rise:      32px;    /* posun karet a objektů */
  --rv-zoom:      1.14;    /* výchozí zoom média při odkrytí */
  --rv-stagger:   90;      /* ms mezi kartami / čísly (čte JS) */
  --rv-line:      95;      /* ms mezi řádky nadpisu (čte JS) */
}

/* řádky nadpisu: maska přes clip-path se záporným insetem (rezerva na háčky a descendery),
   takže obal nemění výšku ani zalomení */
.rl { display: block; clip-path: inset(-.34em -.5em -.26em -.5em); }
.rl > span { display: block; }
.rm { display: block; overflow: hidden; }
.ph { overflow: hidden; }

@media (prefers-reduced-motion: no-preference) {
  /* fade */
  .rv [data-rv="fade"] {
    opacity: 0; translate: 0 14px;
    transition: opacity .9s var(--rv-ease) var(--d, 0ms), translate var(--rv-dur) var(--rv-ease) var(--d, 0ms);
  }
  /* rise + potomci stagger */
  .rv [data-rv="rise"], .rv [data-rv="stagger"] > * {
    opacity: 0; translate: 0 var(--rv-rise);
    transition: opacity 1s var(--rv-ease) var(--d, 0ms), translate 1.25s var(--rv-ease) var(--d, 0ms), background-color .45s var(--rv-ease);
  }
  .rv [data-rv="fade"].is-in, .rv [data-rv="rise"].is-in, .rv [data-rv="stagger"] > .is-in { opacity: 1; translate: none; }

  /* lines: před rozdělením neviditelné (rozdělení čeká na načtení písem) */
  .rv [data-rv="lines"]:not(.is-split) { opacity: 0; }
  .rv [data-rv="lines"] .rl > span {
    translate: 0 150%;
    transition: translate var(--rv-dur) var(--rv-ease) calc(var(--d, 0ms) + var(--i, 0) * var(--rv-line) * 1ms);
  }
  .rv [data-rv="lines"].is-in .rl > span { translate: none; }

  /* mask: prvek zabalený do .rm */
  .rv .rm > [data-rv="mask"] { translate: 0 140%; transition: translate var(--rv-dur) var(--rv-ease) var(--d, 0ms); }
  .rv .rm > [data-rv="mask"].is-in { translate: none; }

  /* wipe: odkrytí shora dolů (horní hrana je při příjezdu vidět první), obsah současně dojede ze zoomu */
  .rv [data-rv="wipe"] {
    clip-path: inset(0 0 100% 0);
    transition: clip-path var(--rv-dur-wipe) var(--rv-ease-wipe) var(--d, 0ms);
  }
  .rv [data-rv="wipe"].is-in { clip-path: inset(0 0 0 0); }
  .rv [data-rv="wipe"].is-done { clip-path: none; transition: none; }
  .rv [data-rv="wipe"] > :is(img, .tab-media) {
    scale: var(--rv-zoom); transform-origin: 50% 30%;
    transition: scale calc(var(--rv-dur-wipe) + .5s) var(--rv-ease) var(--d, 0ms);
  }
  .rv [data-rv="wipe"].is-in > :is(img, .tab-media) { scale: var(--z1, 1); }
  /* parallax: obrázek je o kousek větší než rám, posun nastavuje JS přes translate */
  .rv [data-rv-par] { --z1: 1.1; }

  /* curtain: tmavá sekce se rozevře z šířky obsahu na celou šířku */
  .rv [data-rv="curtain"]:not(.is-full) { clip-path: inset(0 var(--cx, 0px) 0 var(--cx, 0px)); }

  /* svislá linka kolejnice se dorýsuje shora dolů */
  .rv :is(.sec-paper, .tk-schema)::before { scale: 1 0; transform-origin: 50% 0; transition: scale 1.8s var(--rv-ease-wipe) .1s; }
  .rv :is(.sec-paper, .tk-schema).is-drawn::before { scale: 1 1; }

  /* prvek už byl nad oknem (skok na kotvu): hned vidět, bez animace */
  .rv .rv-now, .rv .rv-now > *, .rv .rv-now .rl > span { transition: none !important; }
}
