/* GSA interaktsioonikiht — kursor, aktiivsed pinnad, kerimisprogress.

   ARHITEKTUURIREEGEL: leht hüdreerub Frameri Reactiga, mis omab kogu DOM-i #main sees
   ja võib igal ajal uuesti renderdada. Seetõttu:
     - EI lisata Frameri sõlmedele klasse (re-render pühib need ära)
     - stiil seotakse OLEMASOLEVATE atribuutidega (data-border, data-highlight)
     - kasutame CSS-omadusi, mida Framer ei puutu: `translate`, `rotate`, `scale`,
       `:before` (Frameri äärejoon on `:after` — sinna EI TOHI puutuda)
     - ülekatted elavad <body> all, väljaspool #main puud

   Kogu kiht on `:root[data-gsa-fx]` taga — JS lisab selle kohe. Ilma JS-ita ei muutu midagi. */

:root {
  --gsa-y: 255, 222, 89;                       /* brändikollane */
  --gsa-ease: cubic-bezier(.22, .68, .24, 1);
}

/* ============ 1. Aktiivsed pinnad ============
   Valgus järgib kursorit kasti sees. --mx/--my seab JS delegeeritud pointermove'iga.
   Kasutame `:before`, sest `:after` on Frameri äärejoone oma. */
:root[data-gsa-fx] [data-gsa-card]::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  z-index: 1;
  background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%),
    rgba(var(--gsa-y), .15), rgba(var(--gsa-y), 0) 60%);
  opacity: 0;
  transition: opacity .4s ease;
}

:root[data-gsa-fx] [data-gsa-card]:hover::before { opacity: 1; }

/* Kaart tõuseb. `translate` on eraldi omadus — ei võitle Frameri `transform`-iga. */
:root[data-gsa-fx] [data-gsa-card] {
  transition:
    translate .45s var(--gsa-ease),
    box-shadow .45s var(--gsa-ease),
    --border-color .35s ease;
}

:root[data-gsa-fx] [data-gsa-card]:hover {
  translate: 0 -4px;
  box-shadow: 0 24px 55px -28px rgba(0, 0, 0, .85);
  /* Frameri äärevärv on inline-muutuja — !important võidab ja on re-renderi-kindel */
  --border-color: rgba(var(--gsa-y), .5) !important;
}

/* NB: siin oli varem `[data-gsa-card].hover::before { opacity: 0 }`, mõeldud
   kollaste nuppude jaoks. Framer lisab hõljutamisel KÕIGILE kaartidele klassi
   `hover` — seega summutas see reegel kuma just siis, kui seda oli vaja, ja
   kaart ei "aktiveerunud" nähtavalt. Kaardid ei ole nupud (min 200x120), nii et
   summutust ei ole vaja. Kontrollitud: klassid sisaldasid `hover`, ::before
   opacity oli 0 samal ajal kui :hover kehtis. */

/* ============ 2. Nupud tõmbuvad kursori poole ============
   `translate` omadust JS seab; siin ainult pehmendus. */
:root[data-gsa-fx] [data-highlight="true"] {
  transition: translate .35s var(--gsa-ease), filter .3s ease;
}

:root[data-gsa-fx] [data-highlight="true"]:hover { filter: brightness(1.07); }

/* magnetkütke ajal peab liikumine olema kiire, muidu jääb kursorist maha */
:root[data-gsa-fx] [data-highlight="true"][data-gsa-magnet] {
  transition: translate .12s linear, filter .3s ease;
}

/* ============ 3. Kursor ============ */
#gsa-glow,
#gsa-ring {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  opacity: 0;
  will-change: transform;
}

#gsa-glow {
  width: 560px;
  height: 560px;
  margin: -280px 0 0 -280px;
  border-radius: 50%;
  z-index: 2147483000;
  background: radial-gradient(circle closest-side,
    rgba(var(--gsa-y), .12), rgba(var(--gsa-y), .045) 45%, transparent 70%);
  mix-blend-mode: screen;
  transition: opacity .5s ease;
}

#gsa-ring {
  width: 26px;
  height: 26px;
  margin: -13px 0 0 -13px;
  border: 1px solid rgba(var(--gsa-y), .55);
  border-radius: 50%;
  z-index: 2147483001;
  transition: width .22s var(--gsa-ease), height .22s var(--gsa-ease),
              margin .22s var(--gsa-ease), opacity .3s ease,
              background-color .22s ease, border-color .22s ease;
}

#gsa-glow[data-on],
#gsa-ring[data-on] { opacity: 1; }

/* interaktiivse elemendi kohal suureneb */
#gsa-ring[data-over="link"] {
  width: 46px; height: 46px; margin: -23px 0 0 -23px;
  background: rgba(var(--gsa-y), .1);
  border-color: rgba(var(--gsa-y), .8);
}

/* video kohal muutub esitusmärgiks */
#gsa-ring[data-over="video"] {
  width: 58px; height: 58px; margin: -29px 0 0 -29px;
  background: rgba(var(--gsa-y), .16);
  border-color: rgb(var(--gsa-y));
}

/* ============ 4. Kerimisprogress ============ */
#gsa-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(90deg, rgba(var(--gsa-y), .5), rgb(var(--gsa-y)));
  box-shadow: 0 0 16px rgba(var(--gsa-y), .5);
  z-index: 2147483002;
  pointer-events: none;
  transform-origin: left center;
}

/* ============ 5. Sujuv ankrukerimine ============ */
:root[data-gsa-fx] { scroll-behavior: smooth; }

/* ============ Ligipääsetavus ============
   Vähendatud liikumise korral EI lülita kõike välja — Framer ise ignoreerib seda seadet.
   Ära jäävad ainult need efektid, mis päriselt liigutavad suuri pindu. */
/* Vähendatud liikumise korral jäävad OSUTIPÕHISED efektid alles (rõngas, kaardivalgus,
   nõrgem magnet) — need tekivad ainult kasutaja enda hiireliigutusest. Ära jäävad suur
   liikuv kuma, kaardi tõus ja sujuv kerimine. */
:root[data-gsa-reduced]:not([data-gsa-force]) { scroll-behavior: auto; }
:root[data-gsa-reduced]:not([data-gsa-force]) [data-gsa-card]:hover { translate: none; }
:root[data-gsa-reduced]:not([data-gsa-force]) #gsa-glow { display: none; }

/* ============ 6. Instagrami embed'i asendus ============
   Frameri "Code" komponent süstib Instagrami embed-skeleti HTML-ina, aga <script> sel teel
   EI KÄIVITU — seega jääb tumedale saidile igaveseks tühi valge ristkülik (kontrollitud:
   0 võrgupäringut, 0 iframe'i). Kujundame skeleti CSS-iga brändi sobivaks paneeliks, mis
   viib päris reelile. Ainult CSS — DOM-i ei puutu, seega React ei pühi seda ära. */
:root[data-gsa-fx] blockquote.instagram-media {
  background: linear-gradient(158deg, #2a2a2a 0%, #1d1d1d 100%) !important;
  border: 1px solid rgba(var(--gsa-y), .3) !important;
  border-radius: 18px !important;
  box-shadow: 0 26px 60px -34px rgba(0, 0, 0, .9) !important;
  min-width: 0 !important;
  overflow: hidden;
  position: relative;
  transition: border-color .35s ease, box-shadow .35s ease;
}

:root[data-gsa-fx] blockquote.instagram-media:hover {
  border-color: rgba(var(--gsa-y), .7) !important;
  box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .95) !important;
}

/* Instagrami tühjad kohatäited peitu */
:root[data-gsa-fx] blockquote.instagram-media > div > a > div { display: none !important; }
:root[data-gsa-fx] blockquote.instagram-media > div { padding: 0 !important; height: 100%; }

:root[data-gsa-fx] blockquote.instagram-media > div > a {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .9rem;
  height: 100%;
  min-height: 260px;
  text-decoration: none !important;
  padding: 2rem 1.25rem;
}

/* Instagrami märk */
:root[data-gsa-fx] blockquote.instagram-media > div > a::before {
  content: "";
  width: 56px;
  height: 56px;
  border-radius: 17px;
  border: 1px solid rgba(var(--gsa-y), .45);
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFDE59' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'><rect x='2' y='2' width='20' height='20' rx='5'/><circle cx='12' cy='12' r='4'/><circle cx='17.5' cy='6.5' r='1.2' fill='%23FFDE59' stroke='none'/></svg>") center / 28px no-repeat,
    rgba(var(--gsa-y), .1);
  transition: transform .35s var(--gsa-ease);
}

:root[data-gsa-fx] blockquote.instagram-media:hover > div > a::before { transform: scale(1.07); }

:root[data-gsa-fx] blockquote.instagram-media > div > a::after {
  content: "Watch the reel";
  font: 600 .95rem/1.2 "Geist", system-ui, sans-serif;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: rgb(var(--gsa-y));
}

/* ============ 7. 3D-kallutus ============
   `rotate` on Frameri `transform`-ist eraldi omadus — need liituvad, ei võitle.
   Perspektiiv tuleb panna VANEMALE; teeme selle :has()-iga, et JS ei peaks
   Frameri sõlmi puutuma. */
:root[data-gsa-fx] *:has(> [data-gsa-card]) { perspective: 1100px; }

:root[data-gsa-fx] [data-gsa-card] { transform-style: preserve-3d; }

/* `rotate` ILMA üleminekuta: CSS ei oska seda interpoleerida, kui pöörlemistelg
   muutub (iga hiireliigutus annab veidi teise telje) — üleminekuga jääb nurk 0 peale
   kinni. Kontrollitud. Hiireliigutus tuleb niikuinii ~60 fps, seega on liikumine sujuv. */
:root[data-gsa-fx] [data-gsa-card][data-gsa-tilt] {
  transition: translate .45s var(--gsa-ease), box-shadow .45s var(--gsa-ease);
}

/* NB: `rotate: none` reeglit SIIN EI OLE — 3D-kalle on osutipõhine efekt, mis tekib
   ainult kasutaja hiireliigutusest. Vähendatud liikumise korral on nurk lihtsalt
   väiksem (JS poolel), mitte välja lülitatud. */

/* ============ 8. Ticker / karussell: käsitsi kerimine ============
   ÄRA PANE SIIA `overflow-x: auto`. Proovisin — see LÕHUB sektsiooni.
   Framer liigutab rada `transform: translateX(-2116px)`-iga. Kui konteinerist
   teha kerimiskast, jääb see nihe kasti sisemiseks nihkeks ja kaardid lähevad
   nähtavast alast välja: "honest feedback" muutus täiesti tühjaks (kontrollitud
   ekraanipildiga — minu CSS välja = sektsioon korras, sees = tühi).

   Käsitsi kerimine on nüüd JS-is (`initDrag`), mis lisab raja `translate`
   omadusele nihke. `translate` on Frameri `transform`-ist eraldi omadus, need
   kaks liituvad ega võitle omavahel — ja paigutust ei muudeta üldse. */

/* ============ 8b. KKK-read: esiletõst ILMA liikumiseta ============
   KKK-read on 1400x79 — laiad ja madalad. Kursorit järgiv kuma ja tõus näevad
   sellisel ribal rahutud välja (Gregor: "sellel mingi effect et liigub").
   Jätame ainult staatilise esiletõsteni: veidi heledam pind + kollane ääris. */
:root[data-gsa-fx] [data-gsa-card][data-framer-name="Close"]::before {
  display: none;                          /* kursorit järgiv kuma maha */
}

:root[data-gsa-fx] [data-gsa-card][data-framer-name="Close"] {
  transition: background-color .25s ease, border-color .25s ease;
}

:root[data-gsa-fx] [data-gsa-card][data-framer-name="Close"]:hover {
  translate: none;                        /* ei tõuse */
  rotate: none;                           /* ei kaldu */
  box-shadow: none;
  background-color: rgba(255, 255, 255, .04);
}

/* ============ 9. "Free 15 minute demo call" — kõik keskele ============
   Sektsiooni ankur on #demo. Frameri paigutus jättis teksti vasakule
   (justify-content: flex-start), samas kui pealkiri ise oli tsentreeritud. */
:root[data-gsa-fx] #demo [data-framer-name="text"],
:root[data-gsa-fx] #demo [data-framer-name="header"],
:root[data-gsa-fx] #demo [data-framer-name="top"],
:root[data-gsa-fx] #demo [data-framer-name="buttons"],
:root[data-gsa-fx] #demo [data-framer-name="Content"] {
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
}

:root[data-gsa-fx] #demo h1,
:root[data-gsa-fx] #demo h2,
:root[data-gsa-fx] #demo h3,
:root[data-gsa-fx] #demo p {
  text-align: center !important;
  --framer-text-alignment: center !important;
}

/* lõigud ei tohi üle laiuse venida — hoiab hingamisruumi */
:root[data-gsa-fx] #demo [data-framer-component-type="RichTextContainer"] {
  margin-left: auto;
  margin-right: auto;
}

/* ============ 10. (eemaldatud) ============
   Siin oli `ul:has(> li:nth-child(8)) { overflow-x: auto }`, mis pidi tegema
   testimonial-karusselli keritavaks. See PEITIS KOGU SEKTSIOONI — vt punkt 8.
   Käsitsi kerimine tuleb JS-ist. */


/* ============ 11. Demo call: tühi pildikast välja ============
   Sektsioon oli kahe tulba paigutus: tekst vasakul (max-width 40%) ja paremal
   474x474 "Image" kast. Kast on TÜHI — ei ühtegi <img> ega <video>. Sellest jäi
   pool sektsiooni tühjaks ja tekst kreeni.
   Peidame kasti ainult siis, kui see on päriselt tühi, ja laseme tekstil keskele. */
:root[data-gsa-fx] #demo [data-framer-name="Image"]:not(:has(img)):not(:has(video)):not(:has(svg)) {
  display: none !important;
}

/* Sektsiooni polster oli `282px 20px 0` — see oli mõeldud kahetulbalisele
   paigutusele. Kui tühi pildikast ära võtta, lükkab 282px sisu alla ja üleval
   haigutab tühjus. Tasakaalustame. */
:root[data-gsa-fx] #demo {
  padding-top: 150px !important;
  padding-bottom: 120px !important;
}

:root[data-gsa-fx] #demo [data-framer-name="Story"] {
  max-width: min(760px, 100%) !important;
  width: 100% !important;
  flex: 1 1 auto !important;               /* algne oli 1 0 0px — 0 1 auto kahandas 1 pikslile */
  align-items: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
