/* ============================================================
   EASI - Efecte interactive pentru vizitatori
   (cifre animate, aparitie la scroll, inapoi sus, copiere email,
   cautare, partajare). Toate respecta "fara animatii" din sistem.
   ============================================================ */

/* ---------- 1. Cifre animate pe homepage ----------
   Cifrele au toate aceeasi latime (tabular-nums), ca numarul sa nu
   "tremure" stanga-dreapta in timp ce creste. */
.easi-stat__num{ font-variant-numeric:tabular-nums; }

/* ---------- 2. Aparitie lina la scroll ----------
   Clasa .easi-reveal e pusa din JS DOAR pe elementele aflate sub ecran
   la incarcare (ce se vede deja nu clipeste). Cand elementul intra in ecran
   primeste .is-in si urca usor in pozitie. --rd = mica intarziere in cascada
   pentru cardurile de pe acelasi rand. */
.easi-reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .7s ease, transform .8s cubic-bezier(.2,.7,.2,1);
  transition-delay:var(--rd, 0s);
  will-change:opacity, transform;
}
.easi-reveal.is-in{ opacity:1; transform:none; }

/* La printare totul trebuie sa fie vizibil */
@media print{
  .easi-reveal{ opacity:1 !important; transform:none !important; }
}

/* ---------- 3. Buton "Inapoi sus" ----------
   Cerc discret in coltul din dreapta-jos. Inelul albastru se umple pe masura
   ce cobori in pagina. Apare/dispare lin. */
.easi-totop{
  position:fixed; right:22px; bottom:22px; z-index:900;
  width:48px; height:48px; padding:0; border:0; border-radius:50%;
  background:#fff; color:var(--blue, #2f4fd0);
  box-shadow:0 8px 24px rgba(11,18,32,.16);
  cursor:pointer; display:grid; place-items:center;
  opacity:0; visibility:hidden; transform:translateY(14px) scale(.9);
  transition:opacity .35s ease, transform .45s cubic-bezier(.2,.7,.2,1), visibility 0s linear .45s, box-shadow .25s ease;
}
.easi-totop.is-visible{
  opacity:1; visibility:visible; transform:none;
  transition:opacity .35s ease, transform .45s cubic-bezier(.2,.7,.2,1), visibility 0s, box-shadow .25s ease;
}
.easi-totop__ring{ position:absolute; inset:0; width:100%; height:100%; transform:rotate(-90deg); }
.easi-totop__track{ fill:none; stroke:rgba(47,79,208,.12); stroke-width:2.5; }
.easi-totop__prog{ fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round;
  stroke-dasharray:100 100; stroke-dashoffset:100; transition:stroke-dashoffset .15s linear; }
.easi-totop__arrow{ position:relative; width:20px; height:20px;
  fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .25s ease; }
.easi-totop:hover{ box-shadow:0 12px 30px rgba(11,18,32,.22); }
.easi-totop:hover .easi-totop__arrow{ transform:translateY(-2px); }
.easi-totop:focus-visible{ outline:2px solid var(--blue, #2f4fd0); outline-offset:3px; }

html[data-theme="dark"] .easi-totop{ background:#18223a; color:#9db2f5; box-shadow:0 8px 24px rgba(0,0,0,.45); }
html[data-theme="dark"] .easi-totop__track{ stroke:rgba(157,178,245,.16); }

@media (max-width:620px){
  .easi-totop{ right:14px; bottom:14px; width:44px; height:44px; }
}
@media (prefers-reduced-motion: reduce){
  .easi-totop, .easi-totop.is-visible, .easi-totop__prog, .easi-totop__arrow{ transition:none; }
}
@media print{ .easi-totop{ display:none !important; } }

/* ---------- 4. Copiere email cu un click (profil profesor) ----------
   Mic buton cu doua foi langa adresa. La click copiaza adresa si arata
   un balon "Copiat!" deasupra; iconita devine o bifa cateva secunde. */
.easi-copywrap{ display:inline-flex; align-items:center; gap:8px; }
.easi-copy{
  position:relative; flex:0 0 auto;
  width:30px; height:30px; padding:0; border-radius:8px;
  display:inline-grid; place-items:center; cursor:pointer;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.22); color:#dfe6f7;
  transition:background .2s ease, border-color .2s ease, color .2s ease, transform .15s ease;
}
.easi-copy:hover{ background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.45); color:#fff; }
.easi-copy:active{ transform:scale(.92); }
.easi-copy:focus-visible{ outline:2px solid #9db2f5; outline-offset:2px; }
.easi-copy svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; grid-area:1/1; transition:opacity .2s ease, transform .25s ease; }
.easi-copy__ok{ opacity:0; transform:scale(.5); }
.easi-copy.is-done{ background:rgba(74,201,140,.18); border-color:rgba(74,201,140,.6); color:#7fe0b0; }
.easi-copy.is-done .easi-copy__ico{ opacity:0; transform:scale(.5); }
.easi-copy.is-done .easi-copy__ok{ opacity:1; transform:none; }

/* balonul "Copiat!" */
.easi-copy__tip{
  position:absolute; left:50%; bottom:calc(100% + 9px);
  transform:translate(-50%, 4px); opacity:0; pointer-events:none;
  background:#fff; color:#15233f; font-size:.75rem; font-weight:600; line-height:1;
  padding:6px 9px; border-radius:6px; white-space:nowrap;
  box-shadow:0 6px 18px rgba(0,0,0,.25);
  transition:opacity .2s ease, transform .25s ease;
}
.easi-copy__tip::after{
  content:""; position:absolute; left:50%; top:100%; margin-left:-5px;
  border:5px solid transparent; border-top-color:#fff;
}
.easi-copy.is-done .easi-copy__tip{ opacity:1; transform:translate(-50%, 0); }

@media (prefers-reduced-motion: reduce){
  .easi-copy, .easi-copy svg, .easi-copy__tip{ transition:none; }
}
@media print{ .easi-copy{ display:none !important; } }

/* Text doar pentru cititoarele de ecran */
.easi-sr{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ---------- 5. Cautare rapida in tot site-ul ----------
   Lupa din header + fereastra de cautare (Ctrl+K sau "/"). */
.easi-searchbtn{
  width:36px; height:36px; padding:0; border:0; background:none; border-radius:10px;
  display:inline-grid; place-items:center; cursor:pointer; color:var(--ink);
  transition:background .2s ease, color .2s ease;
}
.easi-searchbtn svg{ width:21px; height:21px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; }
.easi-searchbtn:hover{ background:var(--blue-soft, #e8eefc); color:var(--blue); }
.easi-searchbtn:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; }
html[data-theme="dark"] .easi-searchbtn:hover{ background:rgba(125,152,240,.14); }

.easi-search{ position:fixed; inset:0; z-index:1300; display:flex; justify-content:center; align-items:flex-start; padding:12vh 16px 16px; }
.easi-search[hidden]{ display:none !important; }
.easi-search__backdrop{ position:absolute; inset:0; background:rgba(11,18,32,.55); opacity:0; transition:opacity .2s ease;
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.easi-search__panel{
  position:relative; width:100%; max-width:640px; max-height:76vh; display:flex; flex-direction:column;
  background:#fff; border:1px solid var(--line); border-radius:16px; overflow:hidden;
  box-shadow:0 30px 80px rgba(11,18,32,.35);
  opacity:0; transform:translateY(-10px) scale(.98); transition:opacity .2s ease, transform .25s cubic-bezier(.2,.7,.2,1);
}
.easi-search.is-open .easi-search__backdrop{ opacity:1; }
.easi-search.is-open .easi-search__panel{ opacity:1; transform:none; }

.easi-search__bar{ display:flex; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid var(--line); }
.easi-search__bar > svg{ width:20px; height:20px; flex:0 0 auto; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; }
.easi-search.is-loading .easi-search__bar > svg{ stroke:var(--blue); animation:easiSearchPulse .9s ease-in-out infinite; }
@keyframes easiSearchPulse{ 50%{ opacity:.35; } }
.easi-search__input{
  flex:1; min-width:0; border:0; outline:0; background:transparent; font:inherit; font-size:1.05rem; color:var(--ink); padding:4px 0;
}
.easi-search__input::placeholder{ color:var(--muted); }
.easi-search__input::-webkit-search-cancel-button{ -webkit-appearance:none; }
.easi-search__esc{
  flex:0 0 auto; font:inherit; font-size:.72rem; font-weight:600; color:var(--muted); cursor:pointer;
  background:var(--bg-alt); border:1px solid var(--line); border-radius:6px; padding:4px 8px;
}
.easi-search__esc:hover{ color:var(--ink); }

.easi-search__body{ overflow-y:auto; overscroll-behavior:contain; padding:8px; }
.easi-search__group + .easi-search__group{ margin-top:6px; padding-top:6px; border-top:1px solid var(--line); }
.easi-search__glabel{ font-family:var(--font-head); font-size:.7rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); padding:8px 10px 6px; }
.easi-search__glabel span{ display:inline-block; margin-left:4px; padding:1px 7px; border-radius:999px; background:var(--blue-soft, #e8eefc); color:var(--blue); letter-spacing:0; font-size:.7rem; }
.easi-search__item{ display:block; padding:9px 12px; border-radius:10px; text-decoration:none; color:var(--ink); scroll-margin:8px; }
.easi-search__item:hover, .easi-search__item.is-active{ background:var(--blue-soft, #e8eefc); color:var(--ink); }
.easi-search__item.is-active{ box-shadow:inset 3px 0 0 var(--blue); }
.easi-search__t{ display:block; font-weight:600; font-size:.95rem; line-height:1.35; }
.easi-search__m{ display:block; margin-top:2px; font-size:.82rem; line-height:1.4; color:var(--body); }
.easi-search mark{ background:rgba(255,206,84,.45); color:inherit; border-radius:3px; padding:0 1px; }
.easi-search__more{ display:inline-block; margin:4px 12px 6px; font-size:.85rem; font-weight:600; color:var(--blue); text-decoration:none; }
.easi-search__more:hover{ text-decoration:underline; }
.easi-search__empty{ padding:28px 16px; text-align:center; color:var(--ink); font-size:.95rem; }
.easi-search__empty span{ color:var(--muted); font-size:.85rem; }
.easi-search__hint{ padding:14px 12px 10px; }
.easi-search__hint p{ margin:0 0 12px; color:var(--body); font-size:.9rem; }
.easi-search__chips{ display:flex; flex-wrap:wrap; gap:8px; }
.easi-search__chips a{ padding:6px 12px; border-radius:999px; border:1px solid var(--line); color:var(--ink); font-size:.85rem; text-decoration:none; }
.easi-search__chips a:hover{ border-color:var(--blue); color:var(--blue); }
.easi-search__foot{ display:flex; gap:16px; padding:10px 16px; border-top:1px solid var(--line); background:var(--bg-alt); font-size:.75rem; color:var(--muted); }
.easi-search__foot kbd{ font:inherit; font-size:.7rem; font-weight:600; border:1px solid var(--line); background:#fff; border-radius:4px; padding:1px 5px; margin-right:3px; color:var(--body); }

html[data-theme="dark"] .easi-search__panel{ background:#141d31; border-color:#243049; box-shadow:0 30px 80px rgba(0,0,0,.6); }
html[data-theme="dark"] .easi-search__item:hover,
html[data-theme="dark"] .easi-search__item.is-active{ background:rgba(125,152,240,.14); }
html[data-theme="dark"] .easi-search__glabel span{ background:rgba(125,152,240,.16); }
html[data-theme="dark"] .easi-search__foot{ background:#101829; }
html[data-theme="dark"] .easi-search__foot kbd{ background:#18223a; }
html[data-theme="dark"] .easi-search mark{ background:rgba(255,206,84,.28); }

@media (max-width:620px){
  .easi-search{ padding:10px; }
  .easi-search__panel{ max-height:calc(100vh - 20px); max-height:calc(100dvh - 20px); border-radius:14px; }
  .easi-search__foot{ display:none; }
  .easi-search__input{ font-size:16px; } /* sub 16px, iPhone face zoom pe camp */
}
@media (prefers-reduced-motion: reduce){
  .easi-search__backdrop, .easi-search__panel{ transition:none; }
  .easi-search.is-loading .easi-search__bar > svg{ animation:none; }
}
@media print{ .easi-search, .easi-searchbtn{ display:none !important; } }
