/* =========================================================
   Stiluri pentru efecte: preloader, grain, cursor, glow,
   titluri impartite pe cuvinte, nav, EN/RO.
   Se incarca DUPA style.css.
   ========================================================= */

/* Lenis (scroll fin) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

html.is-loading, html.is-loading body { overflow: hidden; }

/* ---------- Preloader ---------- */
.preloader {
    position: fixed; inset: 0; z-index: 10000;
    background: radial-gradient(ellipse 60% 50% at 50% 55%, rgba(230, 0, 0, 0.16), transparent 70%), #040404;
    clip-path: inset(0 0 0 0);
    display: grid; place-items: center;
    transition: opacity 0.6s ease, visibility 0.6s ease;
    /* siguranta: daca JavaScript nu porneste, preloader-ul dispare singur */
    animation: nv-pre-failsafe 0.6s ease 6s forwards;
}
.preloader.is-done { opacity: 0; visibility: hidden; }
@keyframes nv-pre-failsafe { to { opacity: 0; visibility: hidden; } }
.preloader-inner { display: flex; flex-direction: column; align-items: center; gap: 26px; }
.preloader-logo {
    width: clamp(90px, 12vw, 130px); height: auto;
    filter: drop-shadow(0 0 30px rgba(230, 0, 0, 0.45));
    animation: nv-pre-pulse 1.6s ease-in-out infinite;
}
@keyframes nv-pre-pulse { 50% { transform: scale(1.04); filter: drop-shadow(0 0 45px rgba(230, 0, 0, 0.7)); } }
.preloader-bar { width: min(240px, 60vw); height: 2px; background: rgba(255, 255, 255, 0.08); border-radius: 2px; overflow: hidden; }
.preloader-bar span {
    display: block; height: 100%; transform: scaleX(0); transform-origin: left;
    background: linear-gradient(90deg, #8b0000, var(--accent), #ff4d4d);
    box-shadow: 0 0 12px var(--accent-glow);
}
.preloader-meta {
    position: absolute; left: var(--gutter); right: var(--gutter); bottom: clamp(18px, 4vh, 40px);
    display: flex; justify-content: space-between; align-items: flex-end;
    font-size: 11px; font-weight: 800; letter-spacing: 2px; text-transform: uppercase; color: rgba(255, 255, 255, 0.45);
}
.preloader-count {
    font-size: clamp(3.5rem, 12vw, 10rem); font-weight: 900; line-height: 0.85; letter-spacing: -0.06em;
    color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, 0.28);
    font-variant-numeric: tabular-nums;
}
.preloader-count small { font-size: 0.35em; -webkit-text-stroke: 0; color: var(--accent); margin-left: 4px; }

/* ---------- Grain (textura de film) ---------- */
.grain {
    position: fixed; inset: 0; z-index: 9000; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    opacity: 0.07;
    /* perf: static grain (the animated 4x-viewport layer was repainted over the whole page every frame) */
}
@media (hover: none), (max-width: 760px) { .grain { display: none; } }
@keyframes nv-grain {
    0% { transform: translate(0, 0); } 20% { transform: translate(-3%, 2%); } 40% { transform: translate(2%, -3%); }
    60% { transform: translate(-2%, -1%); } 80% { transform: translate(3%, 3%); } 100% { transform: translate(0, 0); }
}

/* ---------- Lumina care urmareste mouse-ul ---------- */
.cursor-glow {
    position: fixed; top: 0; left: 0; z-index: -2; pointer-events: none;
    width: 52vmax; height: 52vmax; margin: -26vmax 0 0 -26vmax;
    background: radial-gradient(circle, rgba(230, 0, 0, 0.2) 0%, rgba(230, 0, 0, 0.07) 35%, transparent 65%);
    mix-blend-mode: screen; will-change: transform;
}

/* ---------- Cursor personalizat ---------- */
html.has-cursor, html.has-cursor * { cursor: none !important; }
.cursor-dot, .cursor-ring { position: fixed; top: 0; left: 0; z-index: 10001; pointer-events: none; will-change: transform; }
.cursor-dot { width: 0; height: 0; }
.cursor-dot::before {
    content: ''; position: absolute; width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 50%;
    background: var(--accent); box-shadow: 0 0 10px var(--accent-glow); transition: transform 0.25s ease, opacity 0.25s ease;
}
.cursor-ring { width: 0; height: 0; }
.cursor-ring::before {
    content: ''; position: absolute; left: 0; top: 0;
    width: 38px; height: 38px; transform: translate(-50%, -50%); border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.45);
    transition: width 0.35s cubic-bezier(0.2, 0.8, 0.2, 1), height 0.35s cubic-bezier(0.2, 0.8, 0.2, 1), background 0.3s ease, border-color 0.3s ease;
}
.cursor-ring.is-hover::before { width: 62px; height: 62px; background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.7); }
.cursor-ring.is-label::before { width: 60px; height: 60px; background: var(--accent); border-color: transparent; box-shadow: 0 0 22px var(--accent-glow); }   /* was 88px, too big */
.cursor-ring.is-down::before { transform: translate(-50%, -50%) scale(0.85); }
.cursor-label {
    position: absolute; left: 0; top: 0; transform: translate(-50%, -50%) scale(0.6); opacity: 0;
    font-size: 9.5px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: #fff; white-space: nowrap;
    transition: opacity 0.25s ease, transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.cursor-ring.is-label .cursor-label { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.cursor-ring.is-label + .cursor-dot::before { opacity: 0; }
html.cursor-hidden .cursor-dot, html.cursor-hidden .cursor-ring { opacity: 0; }

/* ---------- Titluri impartite pe cuvinte ---------- */
.is-split { -webkit-text-fill-color: initial; }
.split-w { display: inline-block; vertical-align: top; padding: 0.04em 0.03em 0.14em; margin: -0.04em -0.03em -0.14em;
    /* reveal mask: clips only below the baseline while words slide in; glow can spill out on top/sides */
    clip-path: inset(-1em -1em 0 -1em); }
/* after the reveal the mask is removed so glows/drop-shadows fade out naturally (no boxed edges) */
.split-done .split-w { clip-path: none; }
.split-i { display: inline-block; will-change: transform; transform-origin: 0 100%; }

/* ---------- Bara de navigare care se ascunde ---------- */
.nav-wrap { transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1); }
.nav-wrap.nav-hidden { transform: translateY(calc(-100% - 40px)); }
.nav-wrap.nav-scrolled .nav { box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45); }

/* ---------- Comutator EN / RO ---------- */
.lang-switch {
    display: inline-flex; align-items: center; gap: 2px; padding: 3px;
    border-radius: 999px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.08);
}
.nav .lang-switch { margin-left: auto; }
.lang-switch button {
    border: 0; background: transparent; color: rgba(255, 255, 255, 0.55);
    font: 800 10px/1 'Inter', sans-serif; letter-spacing: 1px; padding: 7px 10px; border-radius: 999px;
    cursor: pointer; transition: background 0.3s ease, color 0.3s ease;
}
.lang-switch button:hover { color: #fff; }
.lang-switch button.active { background: var(--accent); color: #fff; box-shadow: 0 0 16px var(--accent-glow); }
.mobile-menu .lang-switch { opacity: 0; transition: opacity 0.5s ease 0.3s; }
.menu-open .mobile-menu .lang-switch { opacity: 1; }
.mobile-menu .lang-switch button { font-size: 12px; padding: 10px 16px; }
@media (max-width: 1023.98px) {
    .nav .lang-switch { display: none; }
}

/* ---------- Mai putina miscare, daca utilizatorul a cerut ---------- */
@media (prefers-reduced-motion: reduce) {
    .grain, .preloader-logo { animation: none; }
    .preloader { display: none; }
}

/* butonul EN/RO nu mai dezaliniaza linkurile din dreapta */
.nav-left, .nav-right-links { align-items: center; }
