/*
 * Pagina de prezentare a aplicației (prima pagină de pe domeniu). Fără biblioteci și fără CDN:
 * fontul din public/fonts, iconițele SVG în pagină, animațiile din CSS (landing.js: deschiderea, particulele, apariția la derulare).
 */
@import url('/fonts/plus-jakarta-sans/index.css');
@import url('/vendor/agrofleet/glio-palette.css');

/* nume scurte, legate de paleta Glio; tema = data-theme pe <html> (aceeași alegere ca în aplicație, implicit închisă).
   Recalculate și pe secțiunile cu tema lor (hero-ul e mereu închis): var() se rezolvă unde e declarată variabila. */
:root,
[data-theme] {
    --green: var(--glio-accent);
    --green-dark: var(--glio-accent-strong);
    --green-deep: #0a231e;
    --teal: var(--glio-teal);
    --gold: var(--glio-gold);
    --gold-dark: #8a6400;
    --ink: #0a1822;
    --header-bg: rgb(246 245 241 / 0.86);
    --band-1: #0a231e;
    --band-2: #1f6b5a;
    --band-3: #3a8c79;
    --text: var(--glio-text);
    --muted: var(--glio-text-muted);
    --bg: var(--glio-bg);
    --card: var(--glio-surface);
    --line: var(--glio-border);
    --shadow: var(--glio-shadow);
    --radius: 22px;
}

[data-theme='dark'] {
    --ink: #f3f0ea;
    --gold-dark: var(--glio-gold);
    --header-bg: rgb(10 24 34 / 0.82);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    font-family: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    color: var(--text);
    background: var(--bg);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}

img {
    max-width: 100%;
    display: block;
}

a {
    color: inherit;
}

.wrap {
    width: min(1180px, 100% - 2.5rem);
    margin-inline: auto;
}

.skip-link {
    position: absolute;
    left: -999px;
    top: 0.5rem;
    z-index: 200;
    background: var(--card);
    padding: 0.5rem 1rem;
    border-radius: 999px;
}

.skip-link:focus {
    left: 0.5rem;
}

/* ---------------------------------------------------------------- butoane */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 3rem;
    padding: 0.7rem 1.35rem;
    border-radius: 14px;
    font-weight: 800;
    font-size: 1rem;
    text-decoration: none;
    transition: transform 0.15s, box-shadow 0.15s, background-color 0.15s;
    white-space: nowrap;
}

.btn:hover {
    transform: translateY(-1px);
}

.btn:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
}

.btn-primary {
    background: var(--green);
    color: var(--glio-on-accent);
    box-shadow: 0 10px 24px -12px color-mix(in srgb, var(--green) 80%, transparent);
}

.btn-primary:hover {
    background: var(--green-dark);
}

.btn-outline {
    background: var(--card);
    color: var(--ink);
    box-shadow: inset 0 0 0 2px var(--gold);
}

.btn-outline:hover {
    background: var(--glio-surface-2);
}

.btn-light {
    background: #fff;
    color: #17574a;
}

.btn-ghost {
    color: #fff;
    box-shadow: inset 0 0 0 2px rgb(255 255 255 / 0.7);
}

.btn-ghost:hover {
    background: rgb(255 255 255 / 0.1);
}

.btn svg {
    width: 1.2rem;
    height: 1.2rem;
}

/* ---------------------------------------------------------------- antet */

.site-header {
    position: sticky;
    top: 0;
    z-index: 40;
    isolation: isolate;
}

/* fundalul antetului pe un strat separat: în deschidere apare treptat (opacity), peste hero-ul negru */
.site-header::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: var(--header-bg);
    backdrop-filter: saturate(1.4) blur(10px);
    -webkit-backdrop-filter: saturate(1.4) blur(10px);
    border-bottom: 1px solid var(--line);
}

.site-header .wrap {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    min-height: 4.25rem;
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    text-decoration: none;
    font-size: 1.35rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    color: var(--ink);
}

.brand picture {
    display: block;
}

/* logoul mic 3D: exact 32 px (fișierul 1x), ca deschiderea să aterizeze pixel pe pixel peste el */
.brand img {
    height: 2rem;
    width: auto;
}

.brand b {
    font-weight: 800;
}

.brand span {
    color: var(--green);
}

.site-nav {
    display: none;
    gap: 0.25rem;
    margin-left: 1rem;
}

.site-nav a {
    padding: 0.5rem 0.85rem;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 600;
    color: var(--muted);
}

.site-nav a:hover {
    background: var(--glio-accent-soft);
    color: var(--glio-accent-text);
}

.header-actions {
    margin-left: auto;
    display: flex;
    gap: 0.5rem;
}

.header-actions .btn {
    min-height: 2.6rem;
    padding: 0.5rem 0.95rem;
    font-size: 0.92rem;
}

@media (min-width: 900px) {
    .site-nav {
        display: flex;
    }
}

/* pe telefon: „Intră în cont” rămâne mereu vizibil; „Solicită cont” se micșorează, iar pe ecranele foarte înguste
   rămâne doar în pagină (secțiunea de sus și finalul) */
@media (max-width: 480px) {
    .header-actions .btn {
        padding: 0.45rem 0.7rem;
        font-size: 0.85rem;
    }
}

@media (max-width: 360px) {
    .header-actions .btn-request {
        display: none;
    }
}

/* ---------------------------------------------------------------- hero și deschiderea (partials/hero.blade.php) */

/*
 * Mereu pe fundal aproape negru (și în tema albă): data-theme="dark" pe secțiune. Starea finală = fără clase:
 * textul centrat, logoul în antet. Deschiderea rulează doar cu html.af-intro-on (o dată pe sesiune) și pornește la
 * af-intro-go (piesele logoului decodate). Se animă transform și opacity; excepții: masca dezvăluirii
 * (mask-position) și estomparea (filter: blur) logoului și a cuvintelor titlului.
 */
.hero {
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
    --mark-w: min(26rem, 30vw, 36svh);
    --gap: 1.75rem;
    position: relative;
    isolation: isolate;
    display: grid;
    align-items: center;
    min-height: calc(100svh - 4.25rem);
    padding: clamp(3rem, 7vh, 5rem) 0;
    background: #05090a;
    color: #eeebe4;
    text-align: center;
}

.hero-bg,
.hero-bg > *,
.hero-particles {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.hero-bg {
    z-index: -1;
    overflow: hidden;
}

/* lumina verde din spatele logoului / titlului */
.hero-glow {
    background:
        radial-gradient(42% 38% at 50% 34%, rgb(62 227 156 / 0.13), transparent 70%),
        radial-gradient(70% 50% at 50% 100%, rgb(31 107 90 / 0.22), transparent 70%);
}

/* rândurile câmpului, văzute de aproape de pământ: puncte în perspectivă, estompate spre orizont */
.hero-field {
    top: auto;
    left: -30%;
    right: -30%;
    height: 62%;
    background-image: radial-gradient(circle, rgb(62 227 156 / 0.5) 1.1px, transparent 1.7px);
    background-size: 34px 34px;
    transform: perspective(520px) rotateX(64deg);
    transform-origin: 50% 100%;
    -webkit-mask-image: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0.5) 35%, transparent 80%);
    mask-image: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0.5) 35%, transparent 80%);
    opacity: 0.32;
}

/* grăuntele (≈4%), ca fundalul să nu pară plat */
.hero-grain {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    opacity: 0.045;
    mix-blend-mode: overlay;
}

.hero-vignette {
    background: radial-gradient(120% 90% at 50% 45%, transparent 55%, rgb(0 0 0 / 0.6) 100%);
}

.hero-particles {
    width: 100%;
    height: 100%;
    z-index: -1;
}

.hero-inner {
    display: grid;
    justify-items: center;
}

.hero-stack {
    position: relative;
    max-width: 46rem;
}

.hero-kicker {
    margin: 0;
    font-weight: 800;
    font-size: 0.85rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--glio-gold);
}

.hero h1 {
    margin: 0.9rem 0 0;
    font-size: clamp(2.1rem, 5.4vw, 4rem);
    line-height: 1.06;
    letter-spacing: -0.035em;
    font-weight: 800;
    color: #f3f0ea;
    text-wrap: balance;
}

.hero h1 .w {
    display: inline-block;
    text-shadow: 0 0 28px rgb(62 227 156 / 0.18);
}

.hero h1 .p {
    margin-left: -0.06em;
}

/* gradientul pe fiecare cuvânt (cuvintele se mișcă separat) */
.hero h1 em {
    font-style: normal;
}

.hero h1 em .w {
    background: linear-gradient(100deg, #3ee39c 0%, #4fd1b0 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: none;
}

.hero p.lead {
    margin: 1.2rem auto 0;
    max-width: 38rem;
    font-size: clamp(1.02rem, 1.6vw, 1.2rem);
    color: rgb(238 235 228 / 0.72);
}

.hero-cta {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 1.9rem;
}

.hero-note {
    margin: 1.1rem 0 0;
    font-size: 0.92rem;
    color: rgb(238 235 228 / 0.6);
}

.hero-note a {
    color: #3ee39c;
    font-weight: 700;
}

/* butoanele: strălucire verde și tranziție lină la hover */
.btn-glow {
    transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), background-color 0.25s ease, color 0.25s ease;
}

.btn-glow:hover,
.btn-glow:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 0 0 1px rgb(62 227 156 / 0.35), 0 10px 34px -6px rgb(62 227 156 / 0.55);
}

@media (max-width: 640px) {
    .hero {
        --mark-w: min(46vw, 30svh);
        --gap: 1.25rem;
        padding: 8.5rem 0 2.5rem;
    }

    .hero-cta .btn {
        flex: 1 1 100%;
        justify-content: center;
        min-height: 3.25rem;
    }

    .hero-field {
        background-size: 26px 26px;
    }

    /* pe telefon, „Sari” sus, departe de text și de butoane */
    .hero .hero-skip {
        top: 0.75rem;
        bottom: auto;
        right: 0.75rem;
    }

    .hero-skip-more {
        display: none;
    }
}

/* ---- logoul 3D al deschiderii: deasupra textului, doar cât rulează deschiderea */

.hero-mark,
.hero-skip {
    display: none;
}

.af-intro-on .hero-mark {
    display: block;
    position: absolute;
    left: 50%;
    bottom: calc(100% + var(--gap));
    width: var(--mark-w);
    aspect-ratio: var(--ratio);
    margin-left: calc(var(--mark-w) / -2);
    transform-origin: 0 0;
}

.hero-piece {
    position: absolute;
}

.hero-piece img {
    width: 100%;
    height: 100%;
}

.hero-mark-pulse {
    position: absolute;
    inset: -30% -25%;
    background: radial-gradient(closest-side, rgb(62 227 156 / 0.32), rgb(62 227 156 / 0.08) 55%, transparent);
    opacity: 0;
}

/* banda de lumină: doar peste pixelii logoului (masca = imaginea piesei), de la stânga la dreapta */
.hero-sweep {
    position: absolute;
    inset: 0;
    overflow: hidden;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    mix-blend-mode: plus-lighter;
}

.hero-sweep span {
    position: absolute;
    inset: 0 auto 0 0;
    width: 55%;
    background: linear-gradient(100deg, transparent 0%, color-mix(in srgb, var(--glio-accent) 80%, transparent) 32%, var(--glio-glow-core) 50%, color-mix(in srgb, var(--glio-accent) 80%, transparent) 68%, transparent 100%);
    filter: blur(5px);
    transform: translateX(-110%);
}

/* banda de lumină verde, înclinată, care trece peste logo (marginea ei dezvăluie logoul): miez luminos, margini moi */
.af-intro-on .hero-mark::after {
    content: '';
    position: absolute;
    top: -4%;
    bottom: -4%;
    left: 0;
    width: 22%;
    background: linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--glio-accent) 30%, transparent) 25%, color-mix(in srgb, var(--glio-glow-soft) 70%, transparent) 44%, color-mix(in srgb, var(--glio-glow-core) 75%, transparent) 50%, color-mix(in srgb, var(--glio-glow-soft) 70%, transparent) 56%, color-mix(in srgb, var(--glio-accent) 30%, transparent) 75%, transparent 100%);
    filter: blur(9px);
    /* se stinge moale sus și jos: nu iese ca o dungă de neon din conturul logoului */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 26%, #000 74%, transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 26%, #000 74%, transparent 100%);
    mix-blend-mode: plus-lighter;
    opacity: 0;
    pointer-events: none;
}

.hero-node {
    position: absolute;
    width: 3.4%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, #f1fff8 0%, #8dffc9 30%, rgb(62 227 156 / 0.55) 55%, transparent 72%);
    transform: translate(-50%, -50%) scale(0.4);
    opacity: 0;
    mix-blend-mode: plus-lighter;
}

.hero-skip {
    position: absolute;
    right: 1rem;
    bottom: 1rem;
    padding: 0.45rem 0.85rem;
    border: 1px solid rgb(238 235 228 / 0.25);
    border-radius: 999px;
    background: rgb(5 9 10 / 0.5);
    color: rgb(238 235 228 / 0.75);
    font: inherit;
    font-size: 0.82rem;
    cursor: pointer;
}

.af-intro-on .hero-skip {
    display: block;
}

/* ---- cronologia (≈4,5 s) */

/* cât zboară logoul spre antet, hero-ul e deasupra antetului (nu se suprapun, în afară de logo) */
.af-intro-on .hero {
    z-index: 50;
}

/* sub antet (care apare abia la final), aceeași culoare ca hero-ul */
.af-intro-on body {
    background: #05090a;
}

/* înainte de pornire: doar negru */
.af-intro-on .hero-bg,
.af-intro-on .hero-particles,
.af-intro-on .hero-mark,
.af-intro-on .hero-kicker,
.af-intro-on .hero h1 .w,
.af-intro-on .hero p.lead,
.af-intro-on .hero-cta,
.af-intro-on .hero-note,
.af-intro-on .site-header::before,
.af-intro-on .site-header .wrap > *:not(.brand),
.af-intro-on .site-header .brand {
    opacity: 0;
}

/* textul stă mai jos cât logoul e deasupra lui, apoi urcă în locul final, odată cu plecarea logoului */
.af-intro-on .hero-stack {
    transform: translateY(calc((var(--mark-w) / var(--ratio) + var(--gap)) / 2));
}

.af-intro-go .hero-bg { animation: hero-fade 0.4s ease 0s forwards; }
.af-intro-go .hero-particles { animation: hero-fade 1.6s ease 1.4s forwards; }

/* 0,4–1,6 s: logoul, sub banda de lumină (masca pe fiecare piesă), din estompat în clar, de la 0,96 la 1 */
.af-intro-go .hero-mark { animation: mark-in 1.2s var(--ease) 0.4s both, mark-out 0.3s ease 3.65s forwards; }

.af-intro-go .hero-piece {
    -webkit-mask-image: linear-gradient(100deg, #000 45%, transparent 55%);
    mask-image: linear-gradient(100deg, #000 45%, transparent 55%);
    -webkit-mask-size: 260% 100%;
    mask-size: 260% 100%;
    animation: reveal 1.2s cubic-bezier(0.35, 0.15, 0.65, 0.85) 0.4s both;
}

.af-intro-go .hero-mark::after { animation: hero-beam 1.2s cubic-bezier(0.35, 0.15, 0.65, 0.85) 0.4s both; }
.af-intro-go .hero-sweep span { animation: sweep 1.2s cubic-bezier(0.35, 0.15, 0.65, 0.85) 0.4s forwards; }

/* 1,6–2,6 s: semnalul prin noduri, apoi un singur puls */
.af-intro-go .hero-node { animation: node-ping 0.42s ease-out calc(1.6s + var(--n) * 28ms) both; }
.af-intro-go .hero-mark-pulse { animation: pulse 0.9s ease-out 2.25s both; }

/* 2,6–3,6 s: titlul cuvânt cu cuvânt, subtitlul, butoanele */
.af-intro-go .hero-kicker { animation: rise 0.6s var(--ease) 2.5s both; }
.af-intro-go .hero h1 .w { animation: word-in 0.65s var(--ease) calc(2.6s + var(--i) * 65ms) both; }
.af-intro-go .hero p.lead { animation: rise 0.6s var(--ease) 3.15s both; }
.af-intro-go .hero-cta { animation: rise 0.6s var(--ease) 3.3s both; }
.af-intro-go .hero-note { animation: rise 0.6s var(--ease) 3.45s both; }
.af-intro-go .site-header .wrap > *:not(.brand),
.af-intro-go .site-header::before { animation: hero-fade 0.6s ease 3.5s forwards; }

/* 3,6–4,5 s: textul urcă; fără JavaScript logoul doar se estompează, iar cel din antet apare treptat */
.af-intro-go .hero-stack { animation: settle 0.75s var(--ease) 3.65s forwards; }
.af-intro-go .site-header .brand { animation: hero-fade 0.3s ease 3.95s forwards; }

/* cu JavaScript (landing.js pune --dx / --dy / --ds pe fiecare piesă): emblema și „GLIO” se mută exact peste partea lor din
   logoul din antet (FLIP). La sosire (4,35 s) cele două sunt aceeași imagine, în același loc: piesele dispar în același cadru
   în care apare logoul din antet, deci nu se vede niciodată dublat. Logoul mare nu se mai stinge pe drum. */
.af-intro-go .is-flip { animation: mark-in 1.2s var(--ease) 0.4s both; }
.af-intro-go .is-flip .hero-piece {
    transform-origin: 0 0;
    animation: reveal 1.2s cubic-bezier(0.35, 0.15, 0.65, 0.85) 0.4s both, dock 0.7s var(--ease) 3.65s forwards, hero-hide 0.02s linear 4.35s forwards;
}
.af-intro-go .is-flip .hero-mark-pulse { animation: hero-hide 0.38s ease 3.65s forwards; }
.af-intro-go.af-flip .site-header .brand { animation: hero-fade 0.02s linear 4.35s forwards; }

.af-intro-go .hero-skip { animation: hero-hide 0.3s ease 4.1s forwards; }

@keyframes hero-fade { to { opacity: 1; } }
@keyframes hero-hide { to { opacity: 0; } }

@keyframes mark-in {
    from { opacity: 0; transform: scale(0.96); filter: blur(8px); }
    to { opacity: 1; transform: none; filter: blur(0); }
}

@keyframes reveal {
    from { -webkit-mask-position: 100% 0; mask-position: 100% 0; }
    to { -webkit-mask-position: 0 0; mask-position: 0 0; }
}

@keyframes mark-out { to { opacity: 0; } }

@keyframes dock { to { transform: translate(var(--dx), var(--dy)) scale(var(--ds)); } }

@keyframes hero-beam {
    0% { opacity: 0; transform: translateX(-186%) skewX(-18deg); }
    16% { opacity: 0; }
    32% { opacity: 1; }
    70% { opacity: 1; }
    90% { opacity: 0; }
    100% { opacity: 0; transform: translateX(541%) skewX(-18deg); }
}

@keyframes sweep { to { transform: translateX(260%); } }

@keyframes node-ping {
    0% { opacity: 0; transform: translate(-50%, -50%) scale(0.4); }
    35% { opacity: 1; transform: translate(-50%, -50%) scale(1.25); }
    100% { opacity: 0; transform: translate(-50%, -50%) scale(1.9); }
}

@keyframes pulse {
    0% { opacity: 0; transform: scale(0.85); }
    40% { opacity: 1; transform: scale(1.04); }
    100% { opacity: 0.35; transform: scale(1); }
}

@keyframes word-in {
    from { opacity: 0; transform: translateY(12px); filter: blur(6px); }
    to { opacity: 1; transform: none; filter: blur(0); }
}

@keyframes rise {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: none; }
}

@keyframes settle { to { transform: none; } }

/* ---------------------------------------------------------------- cadrele de laptop și telefon */

.laptop {
    position: relative;
    filter: drop-shadow(0 30px 40px rgb(15 23 42 / 0.22));
}

.laptop-screen {
    background: #0f1512;
    border-radius: 18px 18px 6px 6px;
    padding: 2.2% 2.2% 3%;
    position: relative;
}

.laptop-screen::before {
    content: '';
    position: absolute;
    top: 0.9%;
    left: 50%;
    width: 6px;
    height: 6px;
    border-radius: 99px;
    background: #334155;
    transform: translateX(-50%);
}

.laptop-screen img {
    background: var(--glio-surface-2);
    width: 100%;
    height: auto;
    border-radius: 4px;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: top;
}

.laptop-base {
    height: 14px;
    margin: 0 -5%;
    background: linear-gradient(#e2e8f0, #94a3b8);
    border-radius: 0 0 22px 22px;
    position: relative;
}

.laptop-base::before {
    content: '';
    position: absolute;
    left: 42%;
    right: 42%;
    top: 0;
    height: 5px;
    border-radius: 0 0 8px 8px;
    background: #64748b;
}

.phone {
    position: relative;
    border-radius: 34px;
    padding: 9px;
    background: #0b0f0d;
    box-shadow: 0 30px 50px -18px rgb(15 23 42 / 0.45), inset 0 0 0 2px #2a332e;
}

.phone::before {
    content: '';
    position: absolute;
    top: 15px;
    left: 50%;
    width: 30%;
    height: 14px;
    border-radius: 99px;
    background: #0b0f0d;
    transform: translateX(-50%);
    z-index: 2;
}

.phone img {
    background: var(--glio-surface-2);
    width: 100%;
    height: auto;
    border-radius: 26px;
    aspect-ratio: 390 / 844;
    object-fit: cover;
    object-position: top;
}

/* ---------------------------------------------------------------- secțiuni */

.section {
    padding: 4.5rem 0;
}

.section-head {
    max-width: 44rem;
    margin-bottom: 2.25rem;
}

.section-head .kicker {
    display: inline-block;
    font-weight: 800;
    font-size: 0.85rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--green);
}

.section-head h2 {
    margin: 0.5rem 0 0;
    font-size: clamp(1.75rem, 3.6vw, 2.6rem);
    line-height: 1.12;
    letter-spacing: -0.03em;
    font-weight: 800;
    color: var(--ink);
}

.section-head p {
    margin: 0.85rem 0 0;
    color: var(--muted);
    font-size: 1.08rem;
}

.grid {
    display: grid;
    gap: 1rem;
}

@media (min-width: 640px) {
    .grid-2 {
        grid-template-columns: repeat(2, 1fr);
    }

    .grid-3 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1000px) {
    .grid-3 {
        grid-template-columns: repeat(3, 1fr);
    }

    .grid-4 {
        grid-template-columns: repeat(4, 1fr);
    }
}

.card {
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1.4rem;
}

.card h3 {
    margin: 0.9rem 0 0.35rem;
    font-size: 1.12rem;
    font-weight: 800;
    color: var(--ink);
    letter-spacing: -0.01em;
}

.card p {
    margin: 0;
    color: var(--muted);
    font-size: 0.98rem;
}

.icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 15px;
}

.icon svg {
    width: 1.55rem;
    height: 1.55rem;
}

/* ---------------------------------------------------------------- modulele: ferma interactivă */

/*
 * partials/farm.blade.php: zonele (.farm-zone) se luminează la mouse, la atingere și cu tastatura (doar opacity și
 * transform); celelalte se estompează. Culorile desenului, pe teme, în variabilele de mai jos.
 */
.modules {
    background: var(--card);
}

.farm {
    --farm-sky-1: #d6ece3;
    --farm-sky-2: #f3f1ea;
    --farm-sun: #f5c542;
    --farm-hill: #b7d3c1;
    --farm-hill-2: #cfe2d5;
    --farm-ground: #c6d9ad;
    --farm-field: #88ad62;
    --farm-field-2: #dcc06a;
    --farm-furrow: rgb(52 72 34 / 0.28);
    --farm-road: #6c7876;
    --farm-road-line: #f6f5f1;
    --farm-lane: #e2d6b8;
    --farm-building: #ece8de;
    --farm-roof: #3a8c79;
    --farm-door: #c7c0b0;
    --farm-line: rgb(37 48 51 / 0.18);
    --farm-window: #8fc3d6;
    --farm-machine: #e0a400;
    --farm-wheel: #253033;
    --farm-truck: #ffffff;
    --farm-crate: #c08a4a;
    --farm-awning-1: #1f6b5a;
    --farm-awning-2: #f6f5f1;
    --farm-person-1: #1f6b5a;
    --farm-person-2: #e0a400;
    --farm-person-3: #3a8c79;
    --farm-skin: #e9c4a0;
    --farm-label-bg: #0a1822;
    --farm-label-fg: #ffffff;
    --farm-glow: #1f6b5a;
    display: grid;
    gap: 1.25rem;
    align-items: center;
    margin-bottom: 2rem;
}

[data-theme='dark'] .farm {
    --farm-sky-1: #0c2233;
    --farm-sky-2: #143047;
    --farm-sun: #f5d27a;
    --farm-hill: #183a4b;
    --farm-hill-2: #12304a;
    --farm-ground: #15342a;
    --farm-field: #23573f;
    --farm-field-2: #5f5326;
    --farm-furrow: rgb(0 0 0 / 0.3);
    --farm-road: #2c4050;
    --farm-road-line: #a5b2ae;
    --farm-lane: #2a4a3c;
    --farm-building: #213d52;
    --farm-roof: #3ee39c;
    --farm-door: #2f4b60;
    --farm-line: rgb(238 235 228 / 0.14);
    --farm-window: #f5d27a;
    --farm-wheel: #0a1822;
    --farm-truck: #dfe7ea;
    --farm-crate: #a87a42;
    --farm-awning-2: #dfe7ea;
    --farm-person-1: #3ee39c;
    --farm-person-3: #8fd6c1;
    --farm-label-bg: #3ee39c;
    --farm-label-fg: #0a1822;
    --farm-glow: #3ee39c;
}

@media (min-width: 1000px) {
    .farm {
        grid-template-columns: 1fr 17rem;
    }
}

.farm-svg {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    font-family: inherit;
}

.farm-sun { fill: var(--farm-sun); }
.farm-cloud { fill: #ffffff; opacity: 0.75; }
[data-theme='dark'] .farm-cloud { opacity: 0.07; }
.farm-hill { fill: var(--farm-hill); }
.farm-hill-2 { fill: var(--farm-hill-2); }
.farm-ground { fill: var(--farm-ground); }
.farm-lane { fill: none; stroke: var(--farm-lane); stroke-width: 14; stroke-linecap: round; }
.farm-field { fill: var(--farm-field); }
.farm-field-2 { fill: var(--farm-field-2); }
.farm-furrows path { fill: none; stroke: var(--farm-furrow); stroke-width: 3; }
.farm-tractor rect { fill: var(--farm-machine); }
.farm-tractor .farm-cab { fill: none; stroke: var(--farm-machine); stroke-width: 4; }
.farm-wheel, .farm-wheel circle { fill: var(--farm-wheel); }
.farm-road { fill: var(--farm-road); }
.farm-road-line { fill: none; stroke: var(--farm-road-line); stroke-width: 3; stroke-dasharray: 14 12; }
.farm-trailer { fill: var(--farm-truck); }
.farm-truck-cab { fill: var(--farm-machine); }
.farm-window, .farm-window rect { fill: var(--farm-window); }
.farm-building { fill: var(--farm-building); }
.farm-roof { fill: var(--farm-roof); }
.farm-door { fill: var(--farm-door); }
.farm-door-lines, .farm-wall-lines { fill: none; stroke: var(--farm-line); stroke-width: 2; }
.farm-belt { fill: none; stroke: var(--farm-wheel); stroke-width: 5; stroke-linecap: round; }
.farm-crate rect { fill: var(--farm-crate); }
.farm-awning-edge { fill: none; stroke: var(--farm-awning-1); stroke-width: 3; }
.farm-person-1 path { fill: var(--farm-person-1); }
.farm-person-2 path { fill: var(--farm-person-2); }
.farm-person-3 path { fill: var(--farm-person-3); }
.farm-person-1 circle, .farm-person-2 circle, .farm-person-3 circle { fill: var(--farm-skin); }
.farm-pole { fill: var(--farm-wheel); }
.farm-clock { fill: var(--farm-truck); stroke: var(--farm-wheel); stroke-width: 4; }
.farm-clock-hands { fill: none; stroke: var(--farm-wheel); stroke-width: 3; stroke-linecap: round; }

.farm-zone {
    cursor: pointer;
    outline: none;
    transform-box: fill-box;
    transform-origin: center bottom;
    transition: opacity 0.25s ease, transform 0.25s ease;
}

.farm-glow {
    fill: var(--farm-glow);
    fill-opacity: 0.16;
    stroke: var(--farm-glow);
    stroke-width: 3;
    opacity: 0;
    transition: opacity 0.25s ease;
}

.farm-label {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.farm-label rect {
    fill: var(--farm-label-bg);
}

.farm-label text {
    fill: var(--farm-label-fg);
    font-size: 15px;
    font-weight: 800;
}

.farm-zone:hover,
.farm-zone:focus-visible,
.farm-zone.is-active {
    transform: translateY(-4px);
}

.farm-zone:hover .farm-glow,
.farm-zone:focus-visible .farm-glow,
.farm-zone.is-active .farm-glow,
.farm-zone:hover .farm-label,
.farm-zone:focus-visible .farm-label,
.farm-zone.is-active .farm-label {
    opacity: 1;
}

.farm-svg:has(.farm-zone:hover, .farm-zone:focus-visible, .farm-zone.is-active) .farm-zone:not(:hover, :focus-visible, .is-active) {
    opacity: 0.5;
}

/* caseta de lângă desen */
.farm-info {
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.25rem 1.35rem;
    min-height: 9rem;
}

.farm-info-hint {
    margin: 0;
    color: var(--muted);
}

.farm-info h3 {
    margin: 0.6rem 0 0.3rem;
    font-size: 1.3rem;
    font-weight: 800;
    color: var(--ink);
}

.farm-info p {
    margin: 0;
    color: var(--muted);
}

.farm-info a {
    display: inline-block;
    margin-top: 0.75rem;
    font-weight: 700;
    color: var(--glio-accent-text);
}

/* cardurile modulelor */
.module-grid {
    gap: 1rem;
}

@media (min-width: 640px) {
    .module-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1000px) {
    .module-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

.module-card {
    background: var(--bg);
    border: 1.5px solid transparent;
    box-shadow: none;
    transition: border-color 0.25s ease;
}

.module-card.is-soon {
    background: transparent;
    border: 1.5px dashed color-mix(in srgb, var(--muted) 45%, transparent);
}

.module-card.is-highlighted {
    border-color: var(--glio-accent);
}

.module-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.module-card .icon {
    background: var(--glio-accent-soft);
    color: var(--glio-accent-text);
}

.module-card.is-soon .icon {
    background: color-mix(in srgb, var(--gold) 16%, transparent);
    color: var(--gold-dark);
}

.module-summary {
    margin: 0 0 0.6rem !important;
}

.module-card ul {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.45rem;
}

.module-card li {
    position: relative;
    padding-left: 1.1rem;
    color: var(--text);
    font-size: 0.93rem;
}

.module-card li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--glio-accent);
}

.module-card.is-soon li::before {
    background: transparent;
    box-shadow: inset 0 0 0 2px var(--gold);
}

.module-note {
    margin-top: 0.75rem !important;
    font-size: 0.85rem !important;
    font-style: italic;
}

/* ---------------------------------------------------------------- de ce Glio */

.reasons {
    background: linear-gradient(120deg, var(--band-1) 0%, var(--band-2) 60%, var(--band-3) 130%);
    color: #fff;
}

.reasons .section-head h2,
.reasons .section-head .kicker {
    color: #fff;
}

.reason-grid {
    gap: 1rem;
}

.reason {
    padding: clamp(1.25rem, 3vw, 1.75rem);
    border-radius: var(--radius);
    background: rgb(255 255 255 / 0.07);
    box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.14);
}

.reason-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border-radius: 15px;
    background: rgb(62 227 156 / 0.16);
    color: #3ee39c;
}

.reason-icon svg {
    width: 1.6rem;
    height: 1.6rem;
}

.reason h3 {
    margin: 0.9rem 0 0.4rem;
    font-size: clamp(1.35rem, 2.6vw, 1.75rem);
    line-height: 1.15;
    letter-spacing: -0.02em;
    font-weight: 800;
}

.reason p {
    margin: 0;
    color: rgb(255 255 255 / 0.82);
}

/* ---------------------------------------------------------------- pașii */

.steps {
    list-style: none;
    margin: 0;
    padding: 0;
}

.step {
    position: relative;
}

.step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 999px;
    background: var(--green);
    color: var(--glio-on-accent);
    font-weight: 800;
    font-size: 1.15rem;
    box-shadow: 0 0 0 6px var(--glio-accent-soft);
}

@media (min-width: 1000px) {
    .steps .step:not(:last-child)::after {
        content: '';
        position: absolute;
        top: 2.75rem;
        left: calc(1.4rem + 3.1rem);
        right: -1rem;
        height: 3px;
        background: repeating-linear-gradient(90deg, var(--gold) 0 12px, transparent 12px 22px);
        opacity: 0.8;
    }
}

/* ---------------------------------------------------------------- capturi (tema închisă) */

.shots-section {
    background: var(--card);
}

.shots {
    display: grid;
    gap: 2rem;
    align-items: end;
}

.shots figure {
    margin: 0;
}

@media (min-width: 1000px) {
    .shots {
        grid-template-columns: 1fr 1fr;
    }

    .shots-phones {
        grid-column: 1 / -1;
    }
}

.shots-phones {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 13rem));
    justify-content: center;
    gap: 1.5rem;
}

.shot-caption {
    margin-top: 0.75rem;
    text-align: center;
    font-size: 0.9rem;
    color: var(--muted);
    font-weight: 600;
}

/* ---------------------------------------------------------------- comutatorul de temă (subsol) */

.footer-about {
    margin: 0.75rem 0 1rem;
    max-width: 26rem;
}

.theme-switch {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
    padding: 0.45rem 1rem;
    border: 0;
    border-radius: 999px;
    background: var(--bg);
    box-shadow: inset 0 0 0 1.5px var(--line);
    color: var(--ink);
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.theme-switch span {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.theme-switch svg {
    width: 1.2rem;
    height: 1.2rem;
}

.theme-switch:focus-visible {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
}

/* butonul arată tema în care trece */
.theme-switch-light,
[data-theme='dark'] .theme-switch-dark {
    display: none !important;
}

[data-theme='dark'] .theme-switch-light {
    display: inline-flex !important;
}

/* final */
.final {
    padding: 0 0 4.5rem;
}

.final-card {
    border-radius: 28px;
    padding: clamp(1.75rem, 4vw, 3rem);
    background: linear-gradient(120deg, var(--band-1) 0%, var(--band-2) 60%, var(--band-3) 130%);
    color: #fff;
    display: grid;
    gap: 1.5rem;
    align-items: center;
    box-shadow: 0 30px 60px -30px rgb(10 35 30 / 0.7);
}

@media (min-width: 900px) {
    .final-card {
        grid-template-columns: 1.3fr 1fr;
    }
}

.final-card h2 {
    margin: 0;
    font-size: clamp(1.7rem, 3.5vw, 2.5rem);
    line-height: 1.1;
    letter-spacing: -0.03em;
}

.final-card p {
    margin: 0.6rem 0 0;
    color: rgb(255 255 255 / 0.85);
}

.final-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

@media (min-width: 900px) {
    .final-actions {
        justify-content: flex-end;
    }
}

/* subsol */
.site-footer {
    border-top: 1px solid var(--line);
    background: var(--card);
    padding: 2.25rem 0;
    font-size: 0.95rem;
    color: var(--muted);
}

.site-footer .wrap {
    display: grid;
    gap: 1.5rem;
    align-items: start;
}

@media (min-width: 800px) {
    .site-footer .wrap {
        grid-template-columns: 1.4fr 1fr 1fr;
    }
}

.site-footer h4 {
    margin: 0 0 0.5rem;
    color: var(--ink);
    font-size: 0.95rem;
}

.site-footer ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.35rem;
}

.site-footer a {
    text-decoration: none;
}

.site-footer a:hover {
    color: var(--glio-accent-text);
    text-decoration: underline;
}

.copyright {
    margin-top: 1.5rem;
    font-size: 0.85rem;
}

/* ---------------------------------------------------------------- apariția la derulare (doar cu JavaScript) */

.js .reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
    transition-delay: var(--delay, 0s);
}

.js .reveal.is-in {
    opacity: 1;
    transform: none;
}

/* ---------------------------------------------------------------- etichete */

.badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.22rem 0.65rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.01em;
}

.badge-ready {
    background: var(--glio-ok-soft);
    color: var(--glio-ok);
}

.badge-soon {
    background: color-mix(in srgb, var(--gold) 16%, transparent);
    color: var(--gold-dark);
}

.badge-demo {
    background: var(--glio-info-soft);
    color: var(--glio-info);
}

/* ---------------------------------------------------------------- drumul de la sămânță la raft */

/*
 * Pe calculator (landing.js adaugă .is-pinned): secțiunea e mai înaltă decât ecranul, iar banda etapelor rămâne fixă
 * și se mută spre stânga pe măsură ce derulezi (doar transform). Fără JavaScript: banda se derulează pe orizontală.
 * Pe telefon: etapele una sub alta.
 */
.journey {
    position: relative;
    background: var(--bg);
    border-top: 1px solid var(--line);
}

.journey-sticky {
    padding: 4rem 0 3.5rem;
}

.journey-head {
    display: grid;
    gap: 1.25rem;
    align-items: end;
}

@media (min-width: 900px) {
    .journey-head {
        grid-template-columns: 1fr auto;
    }
}

.journey-head .section-head {
    margin-bottom: 0;
}

.crop-picker {
    border: 0;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    max-width: 34rem;
}

.crop-picker legend {
    float: left;
    width: 100%;
    margin-bottom: 0.5rem;
    padding: 0;
    font-weight: 700;
    font-size: 0.85rem;
    color: var(--muted);
}

.crop-option {
    position: relative;
}

.crop-option input {
    position: absolute;
    inset: 0;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.crop-option span {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 2.75rem;
    padding: 0.35rem 1rem 0.35rem 0.5rem;
    border-radius: 999px;
    background: var(--card);
    box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--muted) 35%, transparent);
    font-weight: 700;
    color: var(--ink);
    transition: box-shadow 0.15s, background-color 0.15s;
}

.crop-icon {
    width: 1.75rem;
    height: 1.75rem;
    flex: none;
}

.crop-option input:checked + span {
    background: color-mix(in srgb, var(--c) 16%, var(--card));
    box-shadow: inset 0 0 0 2px var(--c);
}

.crop-option input:focus-visible + span {
    outline: 3px solid var(--gold);
    outline-offset: 2px;
}

.journey-viewport {
    margin-top: 2rem;
}

.journey-track {
    list-style: none;
    margin: 0 auto;
    padding: 0;
    width: min(1180px, 100% - 2.5rem);
    display: grid;
    gap: 1rem;
}

.stage {
    position: relative;
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 1.2rem 1.25rem 1.25rem;
    border: 1.5px solid transparent;
    transition: border-color 0.25s, background-color 0.25s;
}

.stage.is-soon {
    background: color-mix(in srgb, var(--card) 55%, transparent);
    box-shadow: none;
    border: 1.5px dashed color-mix(in srgb, var(--muted) 45%, transparent);
}

.stage.is-current {
    border-color: var(--crop);
}

/* legătura dintre etape: pe telefon în jos, pe calculator spre dreapta */
.stage:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 2.3rem;
    top: 100%;
    width: 2px;
    height: 1rem;
    background: repeating-linear-gradient(var(--crop) 0 5px, transparent 5px 9px);
}

.stage-top {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.stage-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border-radius: 999px;
    font-weight: 800;
    font-size: 0.95rem;
    color: var(--ink);
    box-shadow: inset 0 0 0 2px var(--crop);
}

.stage-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 14px;
    background: color-mix(in srgb, var(--crop) 18%, transparent);
    color: var(--ink);
}

.stage-icon svg {
    width: 1.4rem;
    height: 1.4rem;
}

.stage h3 {
    margin: 0.85rem 0 0.3rem;
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--ink);
}

.stage p {
    margin: 0;
    color: var(--muted);
    font-size: 0.95rem;
}

.stage-modules {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.85rem;
}

.journey-progress {
    display: none;
}

@media (min-width: 900px) {
    .journey-viewport {
        overflow-x: auto;
        scrollbar-width: thin;
    }

    .journey-track {
        display: flex;
        gap: 1.5rem;
        width: max-content;
        margin: 0;
        padding: 0.5rem max(1.25rem, calc((100vw - 1180px) / 2)) 1rem;
    }

    .stage {
        flex: none;
        width: 18.5rem;
    }

    .stage:not(:last-child)::after {
        left: 100%;
        top: 2.25rem;
        width: 1.5rem;
        height: 2px;
        background: repeating-linear-gradient(90deg, var(--crop) 0 6px, transparent 6px 11px);
    }

    /* landing.js pune --pin-top: banda stă centrată pe ecran (dar sub antet) cât timp se mută */
    .journey.is-pinned .journey-sticky {
        position: sticky;
        top: var(--pin-top, 4.5rem);
        padding: 2.5rem 0 2rem;
        overflow: hidden;
    }

    .journey.is-pinned .journey-viewport {
        overflow: visible;
    }

    .journey.is-pinned .journey-track {
        transform: translate3d(var(--shift, 0px), 0, 0);
        will-change: transform;
    }

    .journey.is-pinned .journey-progress {
        display: block;
        margin-top: 1.25rem;
        height: 4px;
        border-radius: 99px;
        background: var(--line);
        overflow: hidden;
    }

    .journey-progress span {
        display: block;
        height: 100%;
        background: linear-gradient(90deg, var(--crop), var(--green));
        transform-origin: left;
        transform: scaleX(var(--p, 0));
    }
}

/* ---------------------------------------------------------------- „Scanează sacul” (exemplu cu date fictive) */

.scan {
    background: var(--card);
}

.scan-grid {
    display: grid;
    gap: 2.5rem;
    align-items: center;
}

@media (min-width: 1000px) {
    .scan-grid {
        grid-template-columns: 1fr 1fr;
    }
}

.scan-intro .section-head {
    margin-bottom: 1.5rem;
}

.scan-bag {
    position: relative;
    width: min(100%, 17rem);
    margin-bottom: 1.25rem;
}

.bag {
    display: block;
    width: 100%;
    height: auto;
}

.bag-body { fill: #c9aa76; }
.bag-neck { fill: #b48f58; }
.bag-weave { fill: none; stroke: rgb(90 64 30 / 0.22); stroke-width: 2; stroke-dasharray: 3 6; }
.bag-tie { fill: none; stroke: #7b5a2e; stroke-width: 5; stroke-linecap: round; }
.bag-label { fill: #fffdf7; stroke: rgb(10 24 34 / 0.12); }
.bag-crop circle { fill: var(--crop); }
.bag-product { font-weight: 800; font-size: 14px; fill: #0a1822; }
.bag-pack { font-size: 12px; font-weight: 600; fill: #5b6866; }
.bag-lot { font-size: 11px; font-weight: 800; fill: #0a1822; letter-spacing: 0.04em; }
.bag-demo { font-size: 10px; fill: #7d8985; }

/* raza care trece peste etichetă la scanare */
.scan-beam {
    position: absolute;
    left: 20%;
    right: 20%;
    top: 34%;
    height: 46%;
    overflow: hidden;
    pointer-events: none;
    opacity: 0;
}

.scan-beam::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, transparent 44%, rgb(62 227 156 / 0.45) 49%, #3ee39c 50%, rgb(62 227 156 / 0.45) 51%, transparent 56%);
    transform: translateY(-50%);
}

.scan.is-scanning .scan-beam {
    opacity: 1;
}

.scan.is-scanning .scan-beam::after {
    animation: beam 1.1s ease-in-out forwards;
}

@keyframes beam {
    to { transform: translateY(50%); }
}

.trace-card {
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: 24px;
    box-shadow: var(--shadow);
    padding: clamp(1.25rem, 3vw, 1.75rem);
}

.trace-card h3 {
    margin: 0.75rem 0 0.15rem;
    font-size: 1.3rem;
    font-weight: 800;
    color: var(--ink);
}

.trace-card header p {
    margin: 0;
    color: var(--muted);
}

.trace-card header b {
    color: var(--ink);
    letter-spacing: 0.03em;
}

.trace-hint {
    display: none;
    margin: 1.25rem 0 0;
    color: var(--muted);
}

.trace-rows {
    list-style: none;
    margin: 1.1rem 0 0;
    padding: 0;
}

.trace-rows li {
    display: grid;
    grid-template-columns: 0.9rem 5.75rem 1fr;
    gap: 0.15rem 0.75rem;
    align-items: baseline;
    padding: 0.7rem 0;
    border-top: 1px solid var(--line);
}

.trace-rows b {
    color: var(--ink);
    font-size: 0.95rem;
}

.trace-rows span {
    color: var(--text);
    font-size: 0.95rem;
}

.trace-rows small {
    grid-column: 3;
    font-size: 0.74rem;
    font-weight: 800;
    color: var(--glio-ok);
}

.trace-rows .is-soon small {
    color: var(--gold-dark);
}

.trace-rows .is-soon b,
.trace-rows .is-soon span {
    opacity: 0.72;
}

.trace-dot {
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    background: var(--glio-ok);
    align-self: center;
}

.trace-rows .is-soon .trace-dot {
    background: transparent;
    box-shadow: inset 0 0 0 2px var(--gold);
}

/* cu JavaScript: rândurile apar după „Scanează sacul” (fără el, totul e vizibil) */
.scan.scan-ready:not(.is-scanned) .trace-hint {
    display: block;
}

.scan.scan-ready .trace-rows li {
    transition: opacity 0.35s ease, transform 0.35s ease;
    transition-delay: calc(var(--i, 0) * 70ms);
}

.scan.scan-ready:not(.is-scanned) .trace-rows li {
    opacity: 0;
    transform: translateY(8px);
}

/* ---------------------------------------------------------------- „reduce motion” */

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .js .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .btn,
    .stage,
    .crop-option span,
    .scan.scan-ready .trace-rows li {
        transition: none;
    }

    .scan.is-scanning .scan-beam::after {
        animation: none;
    }
}

/* ---------------------------------------------------------------- pagini simple (confidențialitate) */

.doc {
    max-width: 46rem;
    margin: 0 auto;
    padding: 3rem 0 4rem;
}

.doc h1 {
    font-size: clamp(1.9rem, 4vw, 2.6rem);
    letter-spacing: -0.03em;
    color: var(--ink);
    margin: 0 0 0.5rem;
}

.doc h2 {
    margin-top: 2rem;
    font-size: 1.25rem;
    color: var(--ink);
}

.doc .placeholder {
    background: #fffbeb;
    border-left: 4px solid var(--gold);
    padding: 0.75rem 1rem;
    border-radius: 0 12px 12px 0;
    color: #78350f;
}
