/* =====================================================================
   2. SZOLGÁLTATÁSOK – IDŐVONAL (előtag: iv-)
   Egy vágóprogram felülete: fent a monitor, alatta az idővonal 3 sávval,
   a piros lejátszófejet a görgetés viszi. Ami a fej alatt van, az az aktív
   szolgáltatás: a klip felizzik, a monitor „vág”, az infó panel frissül.
   Mobil első (390 px); asztal: @media (min-width: 900px).
   Animálva csak transform és opacity. Görgetés közben SEMMI nem vált
   elrendezést: a monitor rögzített képarányú, az infó panel elemei egymásra
   rétegezve (a panel magassága mindig a legmagasabb eleméé).
   ===================================================================== */

/* ---------- Rögzített (sticky) váz ----------
   A rögzített tartomány 150svh (5 klipre ennyi elég; korábban 260svh – túl sokáig
   „beragadt”). Klipenként kb. 0,3 képernyőnyi görgetés; a klipek közti 2%-os
   rések arányosan kb. 20–25 px görgetésnek felelnek meg – ez a váltás holtjátéka. */
.iv {
  padding: 0;
  height: calc(100vh + 150vh);
  height: calc(100svh + 150svh);
}
.iv-ragad {
  position: -webkit-sticky; position: sticky; top: 0;
  height: 100vh; height: 100svh;
  overflow: hidden;
  display: flex; flex-direction: column;
  /* felül a (mindig látható, fix) fejléc + levegő, hogy a szakaszcím soha ne csússzon
     alá; alul a ragadós sáv helye */
  padding: calc(var(--fejlec) + 12px) var(--pad) calc(90px + env(safe-area-inset-bottom));
  background:
    radial-gradient(90% 55% at 15% 0%, rgba(216, 38, 45, .07), transparent 70%),
    var(--bg);
}
.iv-keret {
  width: 100%; max-width: var(--max);
  margin: auto; /* függőlegesen középre; ha nem fér ki, felül nem vág le */
  display: grid; grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "fej" "mon" "tl" "info";
  gap: 12px;
}

/* ---------- Szakaszfej (kicsi, hogy a rögzített nézetbe minden beférjen) ---------- */
.iv-fej { grid-area: fej; display: grid; gap: 8px; justify-items: start; }
.iv-cim { font-size: clamp(22px, 5.8vw, 44px); }
.iv-sugo {
  margin: 0; display: inline-flex; align-items: center; gap: 8px;
  font: 600 12px/1.3 var(--font-szoveg); color: var(--halvany);
}
.iv-sugo-nyil {
  display: inline-grid; place-items: center; flex: none;
  width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--vonal);
  font-size: 11px; line-height: 1; color: var(--szoveg);
  animation: iv-bolint 1.4s var(--pasztaz) infinite alternate;
}
@keyframes iv-bolint { from { transform: translateY(-2px); } to { transform: translateY(2px); } }

/* ---------- Monitor ---------- */
.iv-monitor {
  grid-area: mon; justify-self: center;
  /* teljes szélesség; alacsony képernyőn arányosan kisebb, hogy minden beférjen */
  width: min(100%, max(240px, calc((100vh - 560px) * 16 / 9)));
  width: min(100%, max(240px, calc((100svh - 560px) * 16 / 9)));
  border: 1px solid var(--vonal); border-radius: 10px; overflow: hidden;
  background: #060606;
  box-shadow: 0 26px 60px -30px rgba(0, 0, 0, .95), 0 0 0 1px rgba(0, 0, 0, .6);
}
.iv-monitor-fej {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  height: 24px; padding: 0 10px;
  background: var(--bg2); border-bottom: 1px solid var(--vonal);
  font: 700 9.5px/1 var(--font-cim); letter-spacing: .14em; text-transform: uppercase; color: var(--halvany);
}
.iv-monitor-nev { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; overflow: hidden; }
.iv-pont { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--piros); box-shadow: 0 0 8px rgba(255, 61, 68, .8); }
.iv-tc { font-variant-numeric: tabular-nums; letter-spacing: .06em; color: var(--szoveg); white-space: nowrap; }

.iv-kepernyo { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; isolation: isolate; }
.iv-kockak { position: absolute; inset: 0; transition: opacity .6s var(--be) .15s, transform .9s var(--be) .15s; }

/* egy „kocka” = egy szolgáltatás képe (később videó: data-video) – vágásszerű, azonnali csere.
   Nincs váltáskori gyors ráközelítés (gyors görgetésnél zavart), csak a lassú. */
.iv-kocka { position: absolute; inset: 0; margin: 0; opacity: 0; pointer-events: none; }
.iv-kocka.iv-aktiv { opacity: 1; pointer-events: auto; }
.iv-kocka-belso { position: absolute; inset: 0; }
/* nyugalomban is lassan közelít („sosem áll”) */
.iv-kocka.iv-aktiv .iv-kocka-belso { animation: iv-lassu 16s linear both; }
@keyframes iv-lassu { from { transform: scale(1); } to { transform: scale(1.06); } }
.iv-kocka-kep { width: 100%; height: 100%; object-fit: cover; }

/* álló (9:16) kép a 16:9 monitorban: középen, két oldalt ugyanaz sötétítve, nagyítva */
.iv-allo .iv-kocka-hatter {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1.35); opacity: .3;
}
.iv-allo .iv-kocka-belso::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(90deg, rgba(0, 0, 0, .7), rgba(0, 0, 0, .2) 32%, rgba(0, 0, 0, .2) 68%, rgba(0, 0, 0, .7));
}
.iv-allo .iv-kocka-kep {
  position: relative; z-index: 2; width: auto; height: 100%; aspect-ratio: 9 / 16;
  margin-inline: auto; box-shadow: 0 0 40px rgba(0, 0, 0, .7);
}
.iv-kocka-cimke {
  position: absolute; left: 10px; bottom: 10px; z-index: 3;
  font: 700 9px/1 var(--font-cim); letter-spacing: .14em; text-transform: uppercase;
  background: rgba(0, 0, 0, .58); padding: 5px 7px; border-radius: 4px;
}

/* Forgatás: a fekvő showreel – koppintásra a nézőablakban, hanggal */
.iv-lejatszo {
  position: absolute; inset: 0; z-index: 4; display: grid; place-items: center;
  background: radial-gradient(closest-side, rgba(0, 0, 0, .35), transparent);
}
.iv-lejatszo-pill {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 10px 15px; border-radius: 999px;
  background: rgba(216, 38, 45, .94); color: #fff;
  font: 700 13px/1 var(--font-cim);
  box-shadow: 0 12px 30px -8px rgba(216, 38, 45, .75);
  transition: transform .25s var(--pattan);
}
.iv-lejatszo:hover .iv-lejatszo-pill { transform: scale(1.05); }
.iv-lejatszo:active .iv-lejatszo-pill { transform: scale(.97); }
.iv-lejatszo .lejatszas-ikon { border-width: 6px 0 6px 10px; }

/* képbiztos keret (sarokjelek) */
.iv-jelolo {
  position: absolute; inset: 7% 5%; z-index: 3; pointer-events: none; opacity: .32;
  --j: rgba(255, 255, 255, .9);
  background:
    linear-gradient(var(--j), var(--j)) left top / 14px 1px no-repeat,
    linear-gradient(var(--j), var(--j)) left top / 1px 14px no-repeat,
    linear-gradient(var(--j), var(--j)) right top / 14px 1px no-repeat,
    linear-gradient(var(--j), var(--j)) right top / 1px 14px no-repeat,
    linear-gradient(var(--j), var(--j)) left bottom / 14px 1px no-repeat,
    linear-gradient(var(--j), var(--j)) left bottom / 1px 14px no-repeat,
    linear-gradient(var(--j), var(--j)) right bottom / 14px 1px no-repeat,
    linear-gradient(var(--j), var(--j)) right bottom / 1px 14px no-repeat;
}
/* vágáskori villanás – alig látható (7%), rövid; a JS sűrű váltásnál el is hagyja.
   Két azonos animáció váltogatásával indul újra (nincs kényszerített újratördelés). */
.iv-villan { position: absolute; inset: 0; z-index: 5; background: #fff; opacity: 0; pointer-events: none; }
.iv-villan.iv-fut-a { animation: iv-villan-a .2s ease-out both; }
.iv-villan.iv-fut-b { animation: iv-villan-b .2s ease-out both; }
@keyframes iv-villan-a { from { opacity: .07; } to { opacity: 0; } }
@keyframes iv-villan-b { from { opacity: .07; } to { opacity: 0; } }
/* „Mozgás megállítása” gomb: a szüneteltetett animáció ne ragadjon világos fátyolként a képen */
.mozgas-all .iv-villan { visibility: hidden; }

/* ---------- Idővonal (mobilon a képernyő széléig ér, mint egy dokkolt panel) ---------- */
.iv-szerkeszto {
  grid-area: tl; position: relative; overflow: hidden;
  margin-inline: calc(var(--pad) * -1);
  padding: 6px;
  background: var(--bg2);
  border-block: 1px solid var(--vonal);
  --nev-w: 60px; --nev-gap: 4px;
  --sor-vonalzo: 16px; --sor-vagas: 34px; --sor-extra: 28px; --sor-zene: 14px;
}
.iv-eszkoztar { display: none; }
.iv-savok { position: relative; display: grid; row-gap: 3px; }
.iv-sor { display: grid; grid-template-columns: var(--nev-w) minmax(0, 1fr); column-gap: var(--nev-gap); }
.iv-sor-vonalzo { height: var(--sor-vonalzo); }
.iv-sor-vagas { height: var(--sor-vagas); }
.iv-sor-extra { height: var(--sor-extra); }
.iv-sor-zene { height: var(--sor-zene); }

/* sávnevek – közérthetően, nem „V1/A1” */
.iv-sav-nev {
  position: relative; z-index: 2; /* a beúszó klipek alatta csúsznak be */
  display: flex; align-items: center; gap: 6px; min-width: 0;
  padding: 0 4px; border-radius: 4px; background: var(--bg3);
  font: 700 8px/1.15 var(--font-cim); letter-spacing: .03em; text-transform: uppercase; color: var(--halvany);
  overflow: hidden;
}
.iv-sor-vonalzo .iv-sav-nev { background: transparent; }
.iv-sor-vagas .iv-sav-nev { color: var(--szoveg); box-shadow: inset 2px 0 0 var(--piros); }
.iv-sav-ikon { display: none; flex: none; width: 13px; height: 13px; }

.iv-sav { position: relative; min-width: 0; border-radius: 4px; background: rgba(255, 255, 255, .025); }

/* vonalzó: tickek + apró időkódok */
.iv-vonalzo {
  position: relative;
  background-image:
    linear-gradient(90deg, rgba(255, 255, 255, .42) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .16) 1px, transparent 1px);
  background-size: 10% 7px, 2% 4px;
  background-repeat: repeat-x;
  background-position: 0 100%, 0 100%;
  border-bottom: 1px solid var(--vonal);
}
.iv-vonalzo span {
  position: absolute; top: 1px; transform: translateX(3px);
  font: 600 7.5px/1 var(--font-cim); letter-spacing: .04em; font-variant-numeric: tabular-nums;
  color: rgba(255, 255, 255, .45); white-space: nowrap;
}

/* ---------- Klipek ---------- */
.iv-klip {
  position: absolute; z-index: 1; top: 2px; bottom: 2px;
  left: calc(var(--x) * 1%); width: calc(var(--w) * 1%);
  border-radius: 4px; text-align: left; color: #fff;
  /* belépő: jobbról beúszik és a helyére pattan (lépcsőzve, 100 ms) */
  transition: transform .7s var(--pattan) calc(var(--i) * 100ms), opacity .35s var(--be) calc(var(--i) * 100ms);
}
.iv-klip-test {
  position: absolute; inset: 0; border-radius: inherit; overflow: hidden;
  background: linear-gradient(180deg, #e3363d, #a5141b);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), inset 2px 0 0 rgba(0, 0, 0, .3), inset -2px 0 0 rgba(0, 0, 0, .3);
}
.iv-klip-masod .iv-klip-test { background: linear-gradient(180deg, #8a8891, var(--szurke-klip) 45%, #4c4a52); }
/* „filmcsík” – a klip képkockái, mint egy igazi vágóprogramban (a JS tölti be, ha közel a szakasz) */
.iv-klip-film {
  position: absolute; inset: 0;
  background-repeat: repeat-x; background-size: auto 100%; background-position: 0 0;
  opacity: .3; filter: grayscale(1) contrast(1.15);
}
.iv-klip-nev {
  position: relative; display: flex; align-items: center; gap: 5px;
  padding: 4px 5px 0; white-space: nowrap; overflow: hidden;
  font: 700 9px/1.1 var(--font-cim); letter-spacing: .01em;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .45);
}
.iv-klip-ikon { display: none; flex: none; width: 12px; height: 12px; }
/* nem aktív: kissé tompább; aktív: piros fény */
.iv-klip::before {
  content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit;
  background: rgba(10, 9, 9, .3); transition: opacity .25s var(--be); pointer-events: none;
}
.iv-klip::after {
  content: ""; position: absolute; inset: 0; z-index: 2; border-radius: inherit; pointer-events: none;
  box-shadow: 0 0 0 1.5px #ff6268, 0 0 14px 1px rgba(255, 61, 68, .7), 0 0 34px rgba(255, 61, 68, .35);
  opacity: 0; transition: opacity .25s var(--be);
}
.iv-klip:hover::before, .iv-klip.iv-aktiv::before { opacity: 0; }
.iv-klip.iv-aktiv::after { opacity: 1; }

/* zene: díszítő hangsáv hullámformával (egymásra rétegzett, ismétlődő színátmenetek) */
.iv-hang {
  position: absolute; inset: 1px 0; border-radius: 3px;
  background-color: rgba(120, 140, 150, .14);
  --h: rgba(205, 218, 228, .55);
  background-image:
    linear-gradient(90deg, var(--h) 0 1px, transparent 1px),
    linear-gradient(90deg, var(--h) 0 1px, transparent 1px),
    linear-gradient(90deg, var(--h) 0 1px, transparent 1px),
    linear-gradient(90deg, var(--h) 0 1px, transparent 1px);
  background-size: 7px 82%, 5px 52%, 3px 28%, 11px 100%;
  background-position: 0 50%, 2px 50%, 1px 50%, 4px 50%;
  background-repeat: repeat-x;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
  transform-origin: 0 50%;
  transition: transform 1s var(--be) .45s, opacity .4s var(--be) .45s;
}

/* ---------- Lejátszófej ---------- */
.iv-fej-sin {
  position: absolute; top: 0; bottom: 0; right: 0; z-index: 4; pointer-events: none;
  left: calc(var(--nev-w) + var(--nev-gap));
}
.iv-lejatszofej {
  position: absolute; top: 0; bottom: 0; left: 0; width: 0;
  will-change: transform; transition: opacity .3s var(--be);
}
.iv-lejatszofej::before {
  content: ""; position: absolute; top: 8px; bottom: 0; left: -1px; width: 2px;
  background: var(--piros-vilagos); box-shadow: 0 0 8px rgba(255, 61, 68, .85);
}
.iv-lf-fej {
  position: absolute; top: 0; left: -6px; width: 12px; height: 13px;
  background: var(--piros-vilagos);
  -webkit-clip-path: polygon(0 0, 100% 0, 100% 58%, 50% 100%, 0 58%);
  clip-path: polygon(0 0, 100% 0, 100% 58%, 50% 100%, 0 58%);
}

/* ---------- Belépő animáció (a JS teszi rá az .iv-elo-t, és veszi le, amikor beér) ---------- */
.iv-elo .iv-klip {
  opacity: 0; transition: none;
  transform: translateX(calc((100 - var(--x)) / var(--w) * 100% + 40%));
}
.iv-elo .iv-hang { transform: scaleX(0); opacity: 0; transition: none; }
.iv-elo .iv-lejatszofej { opacity: 0; transition: none; }
.iv-elo .iv-kockak { opacity: 0; transform: scale(1.03); transition: none; }

/* ---------- Infó panel (az aktív klipé látszik) ----------
   Mind az öt elem egy rácscellában, egymásra rétegezve: a rejtettek is helyet
   foglalnak (visibility, nem display), így a panel magassága állandó, váltáskor
   semmi nem ugrik. Csak opacity és transform változik. */
.iv-info { grid-area: info; display: grid; align-items: start; }
.iv-info-elem {
  grid-area: 1 / 1; display: grid; gap: 6px; align-content: start; justify-items: start;
  opacity: 0; transform: translateY(6px); visibility: hidden;
  transition: opacity .15s var(--ki), transform .15s var(--ki), visibility 0s linear .15s;
}
.iv-info-elem.iv-aktiv {
  opacity: 1; transform: none; visibility: visible;
  transition: opacity .32s var(--be) .04s, transform .4s var(--be) .04s, visibility 0s;
}
.iv-info-meta {
  margin: 0; display: flex; align-items: center; gap: 6px;
  font: 700 10px/1 var(--font-cim); letter-spacing: .16em; text-transform: uppercase; color: var(--halvany);
}
.iv-info-szam { color: var(--piros-vilagos); font-variant-numeric: tabular-nums; }
.iv-info-nev {
  margin: 0; font: 800 clamp(22px, 6.2vw, 46px)/1 var(--font-cim);
  text-transform: uppercase; letter-spacing: -.01em;
}
.iv-info-mondat { margin: 0; color: #d6d4d9; font-size: 15px; line-height: 1.4; }
.iv-info-gombok { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }

/* ---------- Alacsony mobilképernyő: a súgó elmarad, a cím kisebb ---------- */
@media (max-width: 899px) and (max-height: 700px) {
  .iv-sugo { display: none; }
  .iv-keret { gap: 9px; }
  .iv-cim { font-size: clamp(20px, 5.4vw, 28px); }
  .iv-monitor {
    width: min(100%, max(230px, calc((100vh - 530px) * 16 / 9)));
    width: min(100%, max(230px, calc((100svh - 530px) * 16 / 9)));
  }
}

/* ---------- Asztal ---------- */
@media (min-width: 900px) {
  .iv-ragad {
    padding: calc(var(--fejlec) + 16px) var(--pad) clamp(24px, calc(100vh - 640px), 132px);
    padding-bottom: clamp(24px, calc(100svh - 640px), 132px); /* alul a lebegő ajánlatgomb helye */
  }
  .iv-keret {
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-areas: "fej fej" "mon info" "tl tl";
    column-gap: clamp(28px, 4vw, 64px); row-gap: 20px; align-items: center;
  }
  .iv-fej { grid-template-columns: minmax(0, 1fr) auto; align-items: end; column-gap: 24px; row-gap: 10px; }
  .iv-fej .cimke { grid-column: 1 / -1; }
  .iv-sugo { justify-self: end; padding-bottom: 4px; }
  .iv-monitor {
    justify-self: start;
    width: min(calc(var(--max) - 420px), calc(100vw - 2 * var(--pad) - 360px), max(420px, calc((100vh - 540px) * 16 / 9)));
    width: min(calc(var(--max) - 420px), calc(100vw - 2 * var(--pad) - 360px), max(420px, calc((100svh - 540px) * 16 / 9)));
    border-radius: 12px;
  }
  .iv-monitor-fej { height: 28px; padding: 0 14px; font-size: 10.5px; }
  .iv-kocka-cimke { left: 14px; bottom: 14px; font-size: 10px; padding: 6px 9px; }
  .iv-lejatszo-pill { padding: 13px 20px; font-size: 15px; }

  .iv-info { align-self: center; border-left: 1px solid var(--vonal); padding-left: clamp(24px, 3vw, 40px); }
  .iv-info-elem { gap: 10px; }
  .iv-info-meta { font-size: 11px; }
  .iv-info-mondat { font-size: 18px; max-width: 30ch; }
  .iv-info-gombok { gap: 10px; margin-top: 10px; }
  .iv-info-gombok .gomb-kicsi { min-height: 46px; padding: 0 20px; font-size: 15px; }

  .iv-szerkeszto {
    margin-inline: 0; padding: 0 10px 10px;
    border: 1px solid var(--vonal); border-radius: 12px;
    --nev-w: 150px; --nev-gap: 6px;
    --sor-vonalzo: 22px; --sor-vagas: 46px; --sor-extra: 38px; --sor-zene: 20px;
  }
  .iv-eszkoztar {
    display: flex; align-items: center; gap: 18px; height: 30px;
    margin: 0 -10px 8px; padding: 0 14px; border-bottom: 1px solid var(--vonal);
    font: 700 10px/1 var(--font-cim); letter-spacing: .14em; text-transform: uppercase; color: var(--halvany);
  }
  .iv-tc-nagy { color: var(--piros-vilagos); font-size: 13px; letter-spacing: .08em; }
  .iv-eszkoztar-jobb { margin-left: auto; }
  .iv-savok { row-gap: 4px; }
  .iv-sav-nev { padding: 0 10px; font-size: 10px; letter-spacing: .1em; gap: 8px; }
  .iv-sav-ikon { display: block; }
  .iv-vonalzo span { font-size: 9px; top: 2px; transform: translateX(4px); }
  .iv-klip-nev { padding: 6px 8px 0; font-size: 12px; gap: 6px; }
  .iv-klip-ikon { display: block; }
  .iv-lf-fej { left: -7px; width: 14px; height: 15px; }
  .iv-lejatszofej::before { top: 10px; }
}

/* ---------- Nincs rögzítés: képkészítő mód és nagyon alacsony képernyő (fekvő telefon) ---------- */
.kepmod .iv { height: auto; }
.kepmod .iv-ragad { position: relative; height: auto; padding-top: 56px; padding-bottom: 56px; }
.kepmod .iv-monitor { width: 100%; }
@media (min-width: 900px) {
  .kepmod .iv-monitor { width: min(680px, calc(100vw - 2 * var(--pad) - 360px)); }
}
@media (max-height: 560px) {
  .iv { height: auto; }
  .iv-ragad { position: relative; height: auto; padding-top: calc(var(--fejlec) + 12px); padding-bottom: 48px; }
  .iv-monitor { width: min(520px, calc(100vw - 2 * var(--pad))); }
}
@media (max-height: 560px) and (min-width: 900px) {
  .iv-monitor { width: min(520px, calc(100vw - 2 * var(--pad) - 360px)); }
}

/* Bene 1. visszajelzése: kevesebb technikai díszítés („arany középút”) – a sarokjelek nem kellenek */
.iv-jelolo { display: none; }
