/* ==========================================================================
   Preloader — „Scânteia”
   Momentul în care se aprinde becul: desenul creier-copac e filamentul,
   discul portocaliu e becul. La final semnul zboară exact în logo-ul din
   bara de navigație și site-ul apare.

   1. Întuneric
   2. Filamentul — liniile pâlpâie neregulat și ard auriu; „camera” din jur
                   se luminează în ritmul pâlpâirii
   3. Ideea      — discul se aprinde din interior spre margini, cu un fulger,
                   o undă de șoc și scântei; filamentul se răcește în alb
   4. Încărcare  — halo-ul respiră; procentul 0–100% (preloader.js)
   5. Aterizare  — semnul zboară în logo (FLIP), fundalul se dizolvă

   Stările stau pe <html>:
   .ma-preloading      — preloader-ul e activ (pus de scriptul din <head>)
   .ma-preloader-done  — 100%: procentul se retrage
   .ma-preloader-fly   — zborul spre logo
   .ma-preloader-fade  — fără logo în pagină: preloader-ul doar se dizolvă

   Semnul e un singur SVG, fără <rect> rotite și fără filtre CSS pe straturi
   separate: la scalare (apropierea camerei, zborul) nimic nu alunecă.
   Referința vizuală: docs/preloader7.html.
   ========================================================================== */

.preloader {
  --preloader-ignite: 1850ms;   /* momentul în care se aprinde discul */
  --preloader-fly: 1000ms;
  --preloader-ease-fly: cubic-bezier(.75, 0, .2, 1);
  --preloader-filament: color-mix(in srgb, var(--on-invers), var(--implinire) 45%);

  display: none;
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
}
.ma-preloading .preloader {
  display: block;
  /* Plasă de siguranță fără JavaScript: după 12 secunde dispare oricum */
  animation: preloader-timeout 1ms linear 12s forwards;
}
.ma-preloader-fly .preloader { pointer-events: none; }
.ma-preloader-fade .preloader { opacity: 0; pointer-events: none; transition: opacity 600ms var(--ease-reveal); }

/* Fundalul, separat de semn: se dizolvă în timp ce semnul zboară */
.preloader__bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: var(--surface-invers);
  transition: opacity 700ms var(--ease-reveal) calc(var(--preloader-fly) * .45);
}
.ma-preloader-fly .preloader__bg { opacity: 0; }
.preloader__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at center, transparent 40%, color-mix(in srgb, var(--surface-invers), black 75%) 100%);
}

/* „Camera”: lumina caldă aruncată în jur de filament, apoi de bec */
.preloader__room {
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 45%,
    color-mix(in srgb, var(--implinire) 22%, transparent),
    color-mix(in srgb, var(--impuls) 8%, transparent) 30%,
    transparent 60%);
  opacity: 0;
  animation:
    preloader-room-flicker 1300ms linear 450ms forwards,
    preloader-room-ignite 1600ms var(--ease) var(--preloader-ignite) forwards;
}
.ma-preloader-fly .preloader__room { animation: none; opacity: 0; transition: opacity 400ms; }

/* Granulație de film, abia vizibilă */
.preloader__grain {
  position: absolute;
  inset: -50%;
  opacity: .06;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: preloader-grain 800ms steps(4) infinite;
  transition: opacity 400ms;
}
.ma-preloader-fly .preloader__grain { opacity: 0; }

/* Scena: semnul centrat, procentul sub el */
.preloader__stage {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: var(--sp-7);
}

/* Semnul. Stratul exterior zboară (FLIP), cel interior face intrarea. */
.preloader__sign {
  position: relative;
  height: 30vh;
  height: 30svh;
  aspect-ratio: 410.6 / 466.91;
  transform-origin: 0 0;
}
.ma-preloader-fly .preloader__sign {
  transform: translate(var(--fx), var(--fy)) scale(var(--fs));
  transition: transform var(--preloader-fly) var(--preloader-ease-fly);
}

/* Apropiere lentă a camerei pe toată intrarea, într-o singură mișcare */
.preloader__inner {
  position: absolute;
  inset: 0;
  transform: scale(.9);
  animation: preloader-push 3600ms cubic-bezier(.25, .6, .2, 1) forwards;
}
.preloader__inner > * { position: absolute; }
.preloader__inner svg { inset: 0; width: 100%; height: 100%; overflow: visible; }

/* Halo-ul din spate: apare la aprindere, apoi respiră */
.preloader__halo {
  inset: -45%;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--impuls) 55%, transparent), transparent 62%);
  filter: blur(20px);
  opacity: 0;
  animation:
    preloader-halo 1400ms ease-out var(--preloader-ignite) forwards,
    preloader-breathe 2400ms ease-in-out calc(var(--preloader-ignite) + 1400ms) infinite;
}
.ma-preloader-fly .preloader__halo { animation: none; opacity: 0; transition: opacity 250ms; }

/* Fulgerul alb din spatele discului, la aprindere */
.preloader__flash {
  inset: -30%;
  border-radius: 50%;
  background: radial-gradient(circle, var(--on-invers), color-mix(in srgb, var(--implinire) 50%, transparent) 30%, transparent 62%);
  opacity: 0;
  transform: scale(.2);
  animation: preloader-flash 1000ms cubic-bezier(.1, .7, .3, 1) var(--preloader-ignite) forwards;
}

/* Unda de șoc */
.preloader__ring {
  inset: 4%;
  border-radius: 50%;
  border: 2px solid var(--impuls-light);
  box-shadow: 0 0 18px color-mix(in srgb, var(--impuls) 80%, transparent), inset 0 0 18px color-mix(in srgb, var(--impuls) 60%, transparent);
  opacity: 0;
  transform: scale(.3);
  animation: preloader-ring 1200ms cubic-bezier(.15, .7, .3, 1) calc(var(--preloader-ignite) + 40ms) forwards;
}

/* Discul: se aprinde din interior spre margini */
.preloader__disc {
  fill: var(--impuls);
  clip-path: circle(0% at 53% 58%);
  animation: preloader-disc 750ms cubic-bezier(.2, .8, .2, 1) var(--preloader-ignite) forwards;
}
/* Fulgerul discului: o copie albă, decupată la fel, care se stinge */
.preloader__disc-flash {
  fill: var(--on-invers);
  clip-path: circle(0% at 53% 58%);
  animation: preloader-disc-flash 750ms cubic-bezier(.2, .8, .2, 1) var(--preloader-ignite) forwards;
}

/* Filamentul: pâlpâie și arde auriu; la aprindere, stratul alb îl acoperă
   treptat (se răcește), iar cel auriu se stinge și dispare înainte de zbor */
.preloader__gold {
  fill: var(--preloader-filament);
  opacity: 0;
  animation:
    preloader-flicker 1300ms linear 450ms forwards,
    preloader-glow-down 1200ms var(--ease-reveal) calc(var(--preloader-ignite) + 150ms) forwards;
}
.ma-preloader-done .preloader__gold { display: none; }
.preloader__white {
  fill: var(--on-invers);
  opacity: 0;
  animation: preloader-cool 900ms var(--ease-reveal) calc(var(--preloader-ignite) + 150ms) forwards;
}
.preloader__glow-near { flood-color: var(--implinire); }
.preloader__glow-far  { flood-color: var(--impuls); }

/* Scânteile, generate de preloader.js (--a unghiul, --d distanța, --t durata) */
.preloader__sparks { inset: 0; }
.preloader__spark {
  position: absolute;
  left: 53%;
  top: 58%;
  width: 3px;
  height: 3px;
  margin: -1.5px 0 0 -1.5px;
  border-radius: 50%;
  background: var(--on-invers);
  box-shadow: 0 0 6px 1px var(--implinire), 0 0 12px 2px var(--impuls);
  opacity: 0;
  animation: preloader-spark var(--t, 900ms) cubic-bezier(.1, .8, .3, 1) calc(var(--preloader-ignite) + 60ms) forwards;
}

/* Încărcarea */
.preloader__progress {
  width: min(240px, 60vw);
  opacity: 0;
  transform: translateY(8px);
  animation: preloader-rise 700ms var(--ease) calc(var(--preloader-ignite) + 450ms) forwards;
}
.ma-preloader-done .preloader__progress { animation: preloader-hide 300ms var(--ease-reveal) forwards; }

.preloader__track {
  position: relative;
  height: 1px;
  background: color-mix(in srgb, var(--on-invers) 16%, transparent);
}
.preloader__track::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--impuls);
  box-shadow: 0 0 10px color-mix(in srgb, var(--impuls) 80%, transparent);
  transform: scaleX(var(--p, 0));
  transform-origin: left;
}
.preloader__meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: var(--sp-3);
  color: color-mix(in srgb, var(--on-invers) 55%, transparent);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-xs);
  letter-spacing: .24em;
  text-transform: uppercase;
}
.preloader__num {
  color: var(--on-invers);
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
}

/* Logo-ul real stă ascuns până aterizează semnul; numele de brand apare după.
   Plasa de siguranță îl arată oricum după 12 secunde. */
.ma-preloading .nav__logo img { visibility: hidden; animation: preloader-timeout-show 1ms linear 12s forwards; }
.ma-preloading .nav__logo span { opacity: 0; transform: translateX(-8px); animation: preloader-timeout-show 1ms linear 12s forwards; }
.nav__logo span { transition: opacity 500ms var(--ease-reveal), transform 600ms var(--ease); }

/* --- Keyframes ----------------------------------------------------------- */
@keyframes preloader-timeout      { to { opacity: 0; visibility: hidden; } }
@keyframes preloader-timeout-show { to { visibility: visible; opacity: 1; transform: none; } }
@keyframes preloader-grain {
  0%   { transform: translate(0, 0); }
  25%  { transform: translate(-3%, 2%); }
  50%  { transform: translate(2%, -3%); }
  75%  { transform: translate(-2%, -1%); }
  100% { transform: translate(0, 0); }
}
@keyframes preloader-push { to { transform: scale(1); } }
/* Pâlpâirea: neregulată, cu stingeri scurte, până rămâne aprins */
@keyframes preloader-flicker {
  0%   { opacity: 0; }
  5%   { opacity: .75; }
  8%   { opacity: .05; }
  14%  { opacity: .55; }
  16%  { opacity: 0; }
  25%  { opacity: .9; }
  29%  { opacity: .2; }
  33%  { opacity: .95; }
  40%  { opacity: .35; }
  44%  { opacity: .6; }
  52%  { opacity: 1; }
  57%  { opacity: .7; }
  66%, 100% { opacity: 1; }
}
@keyframes preloader-room-flicker {
  0%   { opacity: 0; }
  5%   { opacity: .45; }
  8%   { opacity: 0; }
  14%  { opacity: .3; }
  16%  { opacity: 0; }
  25%  { opacity: .55; }
  29%  { opacity: .1; }
  33%  { opacity: .6; }
  40%  { opacity: .2; }
  44%  { opacity: .35; }
  52%  { opacity: .65; }
  57%  { opacity: .45; }
  66%, 100% { opacity: .6; }
}
@keyframes preloader-room-ignite {
  0%   { opacity: .6; }
  12%  { opacity: 1; }
  100% { opacity: .55; }
}
@keyframes preloader-cool      { from { opacity: 0; } to { opacity: 1; } }
@keyframes preloader-glow-down { from { opacity: 1; } to { opacity: 0; } }
@keyframes preloader-disc      { to { clip-path: circle(80% at 53% 58%); } }
@keyframes preloader-disc-flash {
  0%   { clip-path: circle(0% at 53% 58%); opacity: .95; }
  100% { clip-path: circle(80% at 53% 58%); opacity: 0; }
}
@keyframes preloader-flash {
  0%   { opacity: 0; transform: scale(.2); }
  12%  { opacity: .95; }
  100% { opacity: 0; transform: scale(1.5); }
}
@keyframes preloader-ring {
  0%   { opacity: 0; transform: scale(.3); }
  8%   { opacity: 1; }
  100% { opacity: 0; transform: scale(2.6); }
}
@keyframes preloader-spark {
  0%   { opacity: 1; transform: rotate(var(--a)) translateX(0) scale(1); }
  70%  { opacity: .9; }
  100% { opacity: 0; transform: rotate(var(--a)) translateX(var(--d)) translateY(12px) scale(.3); }
}
@keyframes preloader-halo    { to { opacity: .55; } }
@keyframes preloader-breathe { 0%, 100% { opacity: .55; } 50% { opacity: .8; } }
@keyframes preloader-rise    { to { opacity: 1; transform: none; } }
@keyframes preloader-hide    { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(-6px); } }

/* Fără animații: semnul apare direct, aprins; la final totul se dizolvă */
@media (prefers-reduced-motion: reduce) {
  .preloader__grain, .preloader__room, .preloader__halo, .preloader__flash, .preloader__ring, .preloader__spark { animation: none; }
  .preloader__inner { animation: none; transform: none; }
  .preloader__disc { animation: none; clip-path: none; }
  .preloader__disc-flash, .preloader__gold { display: none; }
  .preloader__white { animation: none; opacity: 1; }
  .preloader__progress { animation: none; opacity: 1; transform: none; }
}
