/* OSIRIS — intro-ul de logo MONTAT peste prima pagină. Pe site: /assets/css/intro.css.
   FIȘIER FĂCUT DE lab/intro_montaj/fa_copia.py (nu se editează de mână): stilul din lab/intro_logo/index.html, fără @font-face, :root,
   html și body (paleta și fonturile vin din osiris.css / type.css), apoi regulile montajului. */
.intro,.intro-fly{--soft:#c7cedb;--dim:#4b5468;--accent-2:#7dd3fc;--F:clamp(30px,10.4vw,112px);--mark:calc(var(--F)*.98);--gap:calc(var(--F)*.46);}
/* telefon / ecran în picioare: semnul DEASUPRA cuvântului, cuvântul ≈ 84 % din lățime (runda 5: finalul cu prezență) */
@media (max-aspect-ratio:3/4){
  :root{--F:min(15vw,8.5vh,112px);--mark:calc(var(--F)*2.2);--gap:calc(var(--F)*.52)}
  .lockup{flex-direction:column}
  .lockup .lockup__type{margin-left:.2em;margin-right:0;margin-top:var(--gap)}
}
.intro{position:fixed;inset:0;z-index:var(--z-intro,2000);background:var(--bg) radial-gradient(circle at 50% 44%,#0e121e 0,#0d111b 25vh,#090c14 50vh,#06080e 75vh,#04060a 110vh);overflow:hidden;cursor:default;-webkit-tap-highlight-color:transparent;touch-action:none}
.intro__gl{position:absolute;inset:0;width:100%;height:100%;display:block;transition:opacity .28s cubic-bezier(.2,.7,.2,1)}
.intro.is-skip .intro__gl{opacity:0}
.intro.is-done{touch-action:auto}

/* semnul + cuvântul, în locul lor final (3D-ul țintește exact cutia .lockup__mark) */
.lockup{position:absolute;inset:0;margin:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-weight:inherit}
.lockup__mark{position:relative;flex:none;width:var(--mark);height:var(--mark)}
.lockup__mark svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:0}
.lockup{will-change:transform}
.lockup__type{position:relative;margin-left:var(--gap);margin-right:-.2em;font-family:var(--font-wide);font-weight:900;font-stretch:125%;font-size:var(--F);letter-spacing:.2em;line-height:1;white-space:nowrap}
.lockup__word{display:block;color:var(--text)}
.lockup__word span{display:inline-block;opacity:0;will-change:transform,opacity}
/* trecerea de lumină peste cuvânt: o bandă (lățimea și locul le dă intro.js, în px) + strălucire doar unde e banda */
.lockup__shine{position:absolute;inset:-1.1em;padding:1.1em;display:block;color:transparent;opacity:0;pointer-events:none;
  background:linear-gradient(100deg,rgba(186,230,253,0) 28%,rgba(125,211,252,.95) 40%,#fff 46%,#fff 54%,rgba(125,211,252,.95) 60%,rgba(186,230,253,0) 72%) no-repeat;
  background-size:400px 100%;-webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 0 .06em rgba(240,250,255,.95)) drop-shadow(0 0 .22em rgba(56,189,248,.9)) drop-shadow(0 0 .5em rgba(56,189,248,.5))}

/* varianta ușoară (fără WebGL / aparat slab): raza e un div, semnul e SVG-ul de mai sus */
.intro__ray{position:absolute;left:50%;top:50%;width:260vmax;height:40px;margin:-20px 0 0 -130vmax;opacity:0;pointer-events:none;
  background:linear-gradient(to bottom,rgba(56,189,248,0),rgba(56,189,248,.14) 40%,rgba(56,189,248,.5) 47.5%,#e6f7ff 49%,#fff 50%,#e6f7ff 51%,rgba(56,189,248,.5) 52.5%,rgba(56,189,248,.14) 60%,rgba(56,189,248,0));
  -webkit-mask-image:linear-gradient(90deg,transparent 8%,#000 30%,#000 70%,transparent 92%);mask-image:linear-gradient(90deg,transparent 8%,#000 30%,#000 70%,transparent 92%);will-change:transform,opacity}
.intro__halo{position:absolute;left:0;top:0;width:10px;height:10px;border-radius:50%;opacity:0;pointer-events:none;
  background:radial-gradient(closest-side,rgba(125,211,252,.55),rgba(56,189,248,.18) 55%,rgba(56,189,248,0));will-change:transform,opacity}

/* butonul din colț: „Skip” cât rulează, „Replay” la final */
.intro__ctl{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px 0 14px;
  border:1px solid var(--line);border-radius:999px;background:rgba(14,18,28,.55);color:var(--muted);font:600 13px/1 var(--font-sans);letter-spacing:.01em;cursor:pointer;opacity:0;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:color .15s ease,border-color .15s ease,background-color .15s ease,opacity .35s ease}
.intro__ctl svg{width:14px;height:14px;flex:none}
.intro__ctl:hover{color:var(--text);border-color:var(--line-strong);background:rgba(14,18,28,.8)}
.intro__ctl:active{background:rgba(242,244,248,.08)}
.intro__ctl:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.intro__ctl.is-on{opacity:.9}
.intro__ctl[hidden]{display:none}
.intro__ctl .ico-replay,.intro__ctl.is-replay .ico-skip{display:none}
.intro__ctl.is-replay .ico-replay{display:block}

/* ---------- montajul pe prima pagină (lab/intro_montaj; restul fișierului e stilul din lab/intro_logo/index.html) ----------
   html.intro-on    = stratul se vede peste pagină (doar la prima vizită din filă; îl pune scriptul din <head>);
   html.intro-lock  = pagina nu se derulează și nu are bară;
   html.intro-brand = cuvântul din meniu (și textul hero-ului) așteaptă cuvântul care zboară;
   html.intro-done  = intro-ul s-a terminat în vizita asta. Fără aceste clase fișierul nu schimbă nimic pe pagină. */
.intro{display:none}
html.intro-on .intro{display:block}
html.intro-lock{overflow:hidden}
/* locul barei rămâne rezervat și DUPĂ intro (în aceeași vizită): altfel, la eliberare, unitățile „vw” (petele de lumină, cuvântul-fantomă
   din hero) cresc cu lățimea barei (~1 %) și pagina se mișcă puțin; pe telefon și pe Mac (bare care plutesc) regula nu schimbă nimic */
html.intro-on,html.intro-done{scrollbar-gutter:stable}
html.intro-brand .nav__brand b{opacity:0}
/* textul hero-ului: hero.js îl ridică imediat când e montat târziu (ceasul lui de 1,1 s de la deschiderea paginii a trecut deja), adică în
   timpul zborului; îl ținem în starea de pornire până ajunge cuvântul în meniu, apoi urcă exact ca acum (aceleași tranziții din home.css) */
html.intro-brand .hero.is-in .hero__eyebrow,html.intro-brand .hero.is-in .hero__title span,html.intro-brand .hero.is-in .hero__lead,
html.intro-brand .hero.is-in .hero__cta,html.intro-brand .hero.is-in .hero__hint{opacity:0;transform:translateY(18px)}
/* la final (sau la sărit) stratul nu mai prinde nimic: clicurile și derularea ajung la pagină cât cuvântul zboară spre meniu */
.intro.is-done{pointer-events:none;touch-action:auto}
/* „Replay” din probă nu există pe site: la final cuvântul pleacă în meniu */
.intro__ctl.is-replay,.intro.is-done .intro__ctl{visibility:hidden}
/* predarea: copia semnului + cuvântului zboară deasupra stratului, care se stinge sub ea (intro-montaj.js) */
.intro-fly{position:fixed;inset:0;z-index:calc(var(--z-intro,2000) + 1);pointer-events:none}
.intro-fly .lockup__type{clip-path:none}
.intro-fly .lockup__word span{transform-origin:0 50%;backface-visibility:hidden}
.intro-fly .lockup__mark{transform-origin:50% 50%;backface-visibility:hidden}
