/* =====================================================================
   Lab-404 — chrome-ul comun al pasilor din coș (domeniu + configurare)
   ---------------------------------------------------------------------
   Tokenii, fundalul, layoutul cu sidebar, pilula de pas, titlul, butoanele si
   plasa pentru .w-hidden sunt IDENTICE pe cei doi pasi. Stateau in
   lab404-dom.css, iar pasul de configurare le-ar fi duplicat - 460 de linii
   copiate care apoi se despart una de alta la prima modificare.

   Selectoarele sunt scrise cu :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) fiindca :is() ia
   specificitatea celui mai tare argument, adica a unei singure clase - exact cat
   avea .lab404-dom singur. Asa nu se schimba nimic in cascada, iar regulile
   prefixate cu ID care bat tema (vezi comentariile de mai jos) rămân la aceeasi
   putere.

   NUANTA fundalului NU e aici: fiecare pas o pune in fisierul lui.
   Domeniu 162 (verde-turcoaz) · configurare 30 (ambra) · coș 168 (teal) ·
   finalizare 222 (azur) · pachete 280.

   DOVADA CA E REALA: la portarea transferului am uitat-o, iar pagina a ieșit
   text pe fundal negru - fara panouri, fara grila, fara butoane.

   CAND ADAUGI O PAGINA NOUA, trece clasa ei in lista din :is(). Altfel pagina nu
   primeste NIMIC de aici - nici tokenii - iar var(--sp-3) & co. rămân nerezolvate,
   deci proprietatile care le folosesc se ignora in silence. Asa a ieșit coșul fara
   spatii intre "Modifică" si "Șterge": regula avea gap: var(--sp-3), dar --sp-3 nu
   exista, deci gap-ul calculat era "normal".

   Se incarca INAINTEA fisierului de pagina.
   ===================================================================== */

/* =====================================================================
   Lab-404 — pasul de domeniu (configureproductdomain)
   ---------------------------------------------------------------------
   Port al designului aprobat din WHMCS-tests/domB-segmentat.html, cu aceleasi
   clase ca in prototip: .pagina, .sidebar-whmcs, .panou, .segment (aici
   .domain-selection-options), .rand-caută, .grup-domeniu, .zona-text.
   Marcajul il scrie templates/orderforms/lab404_cart/configureproductdomain.tpl.

   Trei lucruri de reținut:

   1. Tokenii stau pe invelisul paginii, nu pe :root. Tema foloseste si ea --bg, dar
      cu alt sens (#0b1220, suprafata de card); pe :root am fi schimbat toate
      cardurile din zona de client.

   2. Layoutul segmentat se obține fara sa mutam nimic in DOM. JS-ul WHMCS cere
      panoul INAUNTRU opțiunii lui, deci .option primește `display: contents`:
      eticheta si panoul devin celule ale grilei din .domain-selection-options.
      grid-row e fixat explicit, altfel plasarea automata pune panoul intre
      etichete. Consecinta: .option nu deseneaza nimic, deci vizualul merge pe
      `> label`.

   3. Radio-urile trec prin iCheck, care le inlocuiește cu div.iradio_* si lasa
      inputul real cu opacity 0. Bulina se deseneaza pe wrapperul lui.
   ===================================================================== */

/* .modal-cos-lab e in lista fiindca modalele de confirmare se mută la <body> (vezi
   viewcart.tpl: altfel raman prinse in contextul de stivuire al fundalului si backdropul
   le acopera). Iesind de sub wrapperul paginii, ies si de sub tokenii lui: fara linia asta,
   var(--surface), var(--line) si var(--r-lg) nu mai exista in modal, deci dialogul apărea ca
   un dreptunghi gri, fara colțuri rotunde si fara contur. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret, .modal-cos-lab) {
    --bg:        #030712;
    --surface:   #0b1220;
    --surface-2: #0f172a;

    --cyan:       #06b6d4;
    --cyan-light: #22d3ee;
    --cyan-pale:  #67e8f9;
    --violet:     #8b5cf6;

    /* Contrastul fiecarei trepte pe --bg e verificat:
       ink 19.4:1 · ink-2 12.6:1 · ink-3 7.9:1 · ink-4 5.8:1 */
    --ink:   #f8fafc;
    --ink-2: #cbd5e1;
    --ink-3: #94a3b8;
    --ink-4: #7c8aa0;

    --line:        rgba(255, 255, 255, .10);
    --line-soft:   rgba(255, 255, 255, .06);
    --line-strong: rgba(255, 255, 255, .20);

    --ok:  #22c55e;
    --err: #f87171;

/* 'Inter' vine dinadins imediat dupa Space Grotesk, inaintea fontului de sistem.
       Space Grotesk are doar latin + latin-ext + vietnameza: nu are chirilice si nu are
       grecesti. Deci pe rusa, ucraineana, macedoneana sau greaca titlurile cadeau pe
       fontul sistemului, iar pagina isi schimba vizibil aerul la comutarea limbii - exact
       ce s-a reclamat. Inter are chirilice, grecesti si vietnameza, e deja incarcat si e
       tot fontul nostru, deci nu costa nicio cerere in plus si nu aduce un al treilea
       caracter de scris in pagina.
       Araba, ebraica si CJK rămân pe fontul sistemului: nici Space Grotesk, nici Inter
       nu au acele alfabete. Ar fi nevoie de Noto Sans Arabic / Hebrew / SC, cate o
       familie pentru fiecare. */
    --font-display: 'Space Grotesk', 'Inter', 'Segoe UI', system-ui, sans-serif;
    --font-body:    'Inter', 'Segoe UI', system-ui, sans-serif;
    --font-mono:    'Fira Code', ui-monospace, Consolas, monospace;

    --t-xs:  .75rem;
    --t-sm:  .875rem;
    --t-base: 1rem;
    --t-lg:  1.25rem;
    --t-xl:  1.5625rem;
    --t-2xl: 1.953rem;

    --sp-2: .5rem;
    --sp-3: .75rem;
    --sp-4: 1rem;
    --sp-6: 1.5rem;
    --sp-8: 2rem;
    --sp-12: 3rem;

    --r-sm: 6px;
    --r-md: 10px;
    --r-lg: 16px;

    --ease-out: cubic-bezier(.22, 1, .36, 1);

    color: var(--ink-2);
    font-family: var(--font-body);
    /* 1,6, ca pe paginile de pachete. Cu 1,65, fiecare text care nu-si declara propriul
       line-height ieșea cu ~0,7px pe rând mai inalt decat acelasi text de pe pagina de
       pachete: bifele din cardul de plan, etichetele, notele. Nu se numeste, dar cand pui
       paginile una langa alta se vede ca nu respira la fel. */
    line-height: 1.6;
}


/* =====================================================================
   FUNDALUL — portat din WibePress (assets/css/style.css:1945-1990)
   Nuanta 162 e cea a secțiunii "pricing". Se pune pe section#main-body, nu pe
   un element fixed cu z-index negativ ingropat in pagina: acela cade sub
   fundalurile parintilor nepoziționați.
   ===================================================================== */
@property --sec-h {
    syntax: "<number>";
    inherits: true;
    initial-value: 220;
}

body:has(:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret)) section#main-body {
    position: relative;
    z-index: 0;
    background-image:
        /* Saturatia, luminozitatea, transparenta si opririle vin din reteta comuna
           din custom.css. Aici rămâne doar nuanta paginii, cu cele doua abateri de
           +22 si -18 grade care dau adancime petelor. */
        radial-gradient(74vw 64vh at 82% 6%, hsl(var(--sec-h) var(--sc-s1) var(--sc-l1) / var(--sc-a1)), transparent var(--sc-stop1)),
        radial-gradient(62vw 58vh at 6% 50%, hsl(calc(var(--sec-h) + 22) var(--sc-s2) var(--sc-l2) / var(--sc-a2)), transparent var(--sc-stop2)),
        radial-gradient(96vw 58vh at 50% 104%, hsl(calc(var(--sec-h) - 18) var(--sc-s3) var(--sc-l3) / var(--sc-a3)), transparent var(--sc-stop3));
    background-attachment: fixed;
}

/* Plasa de 88px, pe pseudo-element: masca ei nu trebuie sa atinga gradientul */
/* Checkout-ul e scos dinadins din lista: acolo pagina e numai formulare -
   adresa, metoda de plata, cardul, comentariile - iar reteaua din spate trece
   pe sub campuri si sub casutele de bifat, si nu se mai intelege ce e camp si
   ce e fundal. Pe celelalte pagini de cos, unde continutul e in carduri opace,
   reteaua ramane. */
body:has(:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret)) section#main-body::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background-image:
        linear-gradient(var(--sc-plasa) 1px, transparent 1px),
        linear-gradient(90deg, var(--sc-plasa) 1px, transparent 1px);
    background-size: 88px 88px;
    background-attachment: fixed;
    -webkit-mask-image: radial-gradient(120vw 90vh at 50% 42%, #000 10%, transparent 72%);
    mask-image: radial-gradient(120vw 90vh at 50% 42%, #000 10%, transparent 72%);
}

/* Banda de 1240px utili, ca pe site. Foaia se incarca doar aici. */
body:has(:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret)) .container {
    width: min(1270px, 100% - 3rem);
    max-width: none;
}

/* Breadcrumb-ul are un singur nivel care nu duce nicaieri; pagina are titlu */
body:has(:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret)) nav.master-breadcrumb { display: none; }


/* --- Revelarea la scroll --------------------------------------------- */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .fx-i {
    opacity: 0;
    transform: translate3d(0, 20px, 0);
    transition: opacity .5s linear, transform .6s cubic-bezier(.2, .8, .3, 1);
    transition-delay: calc(var(--n, 0) * 55ms);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .fx-i.fx-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .fx-i { opacity: 1; transform: none; transition: none; }
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .doar-citit-de-ecran {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}


/* =====================================================================
   LAYOUTUL
   ===================================================================== */
/* Fara padding sus: pe pagina de pachete .pagina porneste de la 0, deci
   categoriile si titlul incepeau cu 32px mai jos aici, iar la "Continuare" din
   pachete se vedea saltul. Amandoua pornesc acum la 131px de la marginea de sus
   a paginii. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pagina {
    display: grid;
    grid-template-columns: 250px minmax(0, 1fr);
    gap: clamp(1.5rem, 3vw, 2.5rem);
    align-items: start;
    padding: 0 0 var(--sp-12);
}

@media (max-width: 860px) {
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pagina { grid-template-columns: 1fr; }
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .sidebar-whmcs {
    position: sticky;
    top: calc(var(--bara-h, 0px) + var(--sp-4));
    display: grid;
    gap: var(--sp-4);
    align-content: start;
}

@media (max-width: 860px) {
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .sidebar-whmcs { position: static; }
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou {
    background: var(--surface);
    border: 1px solid var(--line-soft);
    border-radius: var(--r-lg);
    overflow: hidden;
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-titlu {
    margin: 0;
    padding: var(--sp-4);
    background: rgba(255, 255, 255, .03);
    border-bottom: 1px solid var(--line-soft);
    font-family: var(--font-display);
    font-size: var(--t-xs);
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--ink-3);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista { display: grid; }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista a {
    display: flex;
    align-items: center;
    /* space-between, ca in lab404-pg-pagina.css: eticheta la stanga, insigna la
       dreapta. Trebuie sa fie identic cu pagina de produse. */
    justify-content: space-between;
    gap: var(--sp-2);
    padding: .6rem var(--sp-4);
    border-bottom: 1px solid var(--line-soft);
    font-size: var(--t-sm);
    color: var(--ink-3);
    transition: color .18s var(--ease-out), background-color .18s var(--ease-out);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista a:last-child { border-bottom: 0; }
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista a:hover {
    /* Bleu, ca pe paginile de pachete: aceeasi bara laterala, acelasi hover. */
    background: rgba(6, 182, 212, .08);
    color: var(--cyan-pale);
}
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista .badge { margin-left: auto; }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista a[aria-current="page"] {
    position: relative;
    background: rgba(6, 182, 212, .1);
    color: var(--cyan-pale);
    font-weight: 500;
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-lista a[aria-current="page"]::before {
    content: "";
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 2px;
    background: var(--cyan);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-corp { padding: var(--sp-4); }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .panou-corp select {
    width: 100%;
    appearance: none;
    background: var(--surface-2);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    color: var(--ink);
    font-family: var(--font-body);
    font-size: var(--t-sm);
    padding: .4rem 2rem .4rem .6rem;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .6rem center;
}

/* Lista derulanta a unui <select> e desenata de sistem: culoarea pusa pe select
   se moștenește in <option>, dar fundalul popup-ului rămâne alb, deci ieseau
   opțiuni invizibile. Culorile trebuie puse pe <option>. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) select option { background-color: var(--surface-2); color: var(--ink); }


/* =====================================================================
   ANTETUL
   ===================================================================== */
/* Indicatorul de pas - designul p3 "pilula" din pas-designs.html.
   Alegerea lui a fost deliberata: rămâne UN rând, deci nu impinge titlul cu
   niciun pixel fata de pagina aprobata, dar cele trei segmente arata progresul
   in loc sa il scrie, si un reflex trece peste segmentul curent.

   inline-flex, nu flex: pilula trebuie sa fie doar cat conținutul, nu pe toata
   lățimea coloanei. Cu flex se intindea de la un capat la altul si arata ca o
   bara, nu ca o fisa. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pas {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-3);
    flex-wrap: wrap;
    padding: 7px var(--sp-4) 7px var(--sp-3);
    background: rgba(15, 23, 42, .55);
    border: 1px solid var(--line);
    border-radius: 999px;
    margin: 0 0 var(--sp-4);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-nr {
    font-family: var(--font-mono);
    font-size: var(--t-xs);
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--ink-3);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-nr b { color: var(--ink); font-weight: 600; }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-segmente { display: flex; gap: 4px; }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-seg {
    position: relative;
    width: 26px;
    height: 4px;
    border-radius: 2px;
    background: var(--line);
    overflow: hidden;
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-seg.plin { background: linear-gradient(90deg, var(--cyan), var(--cyan-light)); }
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-seg.acum { background: hsl(var(--sec-h, 162) 70% 45% / .45); }

/* Reflexul: un gradient care traversează, nicio imagine incarcata. Merge pe
   transform, nu pe left/background-position, ca sa stea pe compositor. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-seg.acum::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, var(--cyan-light), transparent);
    transform: translateX(-100%);
    animation: pi-reflex 2.4s var(--ease-out) infinite;
}

@keyframes pi-reflex {
    0%   { transform: translateX(-100%); }
    55%  { transform: translateX(100%); }
    100% { transform: translateX(100%); }
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-linie { width: 1px; height: 18px; background: var(--line); }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-fapt {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    font-size: var(--t-sm);
    color: var(--ink-3);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-fapt b { font-family: var(--font-display); font-weight: 600; color: var(--ink); }
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-fapt .pret { font-family: var(--font-mono); color: var(--cyan-light); }
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-fapt .mic { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--ink-4); }

/* Pe telefon pilula se rupe pe doua rânduri. Rotunjirea de 999px pe un bloc de
   doua rânduri arata ca o pastila umflata, deci trece pe raza normala, iar
   liniile despărțitoare dispar - la capat de rând nu despart nimic. */
@media (max-width: 620px) {
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pas { border-radius: var(--r-md); padding: var(--sp-3) var(--sp-4); gap: var(--sp-2) var(--sp-3); }
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-linie { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .pi-seg.acum::after { animation: none; }
}

/* Aceeasi mărime ca titlul de pe pagina de pachete. Acolo vine din
   ".titlu-grup { font-size: var(--t-mare) }", iar --t-mare e definit pe
   .lab404-pachete in lab404-pg-comun.css - fisier care NU se incarca pe pasul
   de domeniu, deci clamp-ul e copiat aici. Daca se schimba acolo, se schimba si
   aici. Cu --t-2xl titlul ieșea 31px fata de 42px si se vedea mai mic. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) {
    --t-mare: clamp(1.9rem, 1.2rem + 2.4vw, 2.6rem);
}

/* Titlul: aceleasi valori ca .titlu-grup de pe paginile de pachete - 1,1 si -.025em, nu
   1,15 si -.02em. La 41,6px diferența e de 2px pe rând si de 0,2px pe litera; nu se numeste,
   dar cand pui paginile una langa alta se vede ca nu e acelasi titlu. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) h1 {
    font-family: var(--font-display);
    font-size: var(--t-mare);
    font-weight: 700;
    letter-spacing: -.025em;
    line-height: 1.1;
    color: var(--ink);
    margin: 0 0 var(--sp-3);
}

/* Propozitia de sub titlu: 14px in ink-2, ca .descriere-grup de pe paginile de pachete.
   Era 16px in ink-3 - mai mare si mai stinsa in acelasi timp, adica invers decat pe restul
   site-ului, unde textul de sub titlu e mic si citibil. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .intro {
    color: var(--ink-2);
    font-family: var(--font-body);
    font-size: var(--t-sm);
    /* 1,65 aici, desi restul paginii e pe 1,6: propoziția asta sta chiar sub titlu, langa
       care se compara cu .descriere-grup de pe paginile de pachete - iar aceea moștenește
       1,65. E singura excepție, si exista ca sa fie identica perechea titlu + descriere. */
    line-height: 1.65;
    margin: 0 0 var(--sp-6);
    max-width: 62ch;
}



/* =====================================================================
   CAMPURILE
   ---------------------------------------------------------------------
   .nativ e clasa noastra pentru orice input/select scris de noi. A stat pana acum
   in fisierele de pagina, deci pagina de coș a ieșit cu inputuri complet
   nestilizate: fundal gri #3b3b3b, chenar 2px inset, padding 1px, colturi drepte -
   adica exact ce desenează browserul cand nu ii spui nimic. Se vedea la câmpul de
   cupon. Aici il are toata lumea.
   ===================================================================== */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .nativ {
    width: 100%;
    height: auto;
    padding: .7rem .9rem;
    background-color: rgba(3, 7, 18, .6);
    background-image: none;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: none;
    color: var(--ink);
    font-family: var(--font-body);
    font-size: var(--t-base);
}

/* Chenarul marcheaza focusul, deci inelul implicit al browserului - 3px alb - nu
   mai are ce spune si acopera colțurile rotunjite. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .nativ:focus {
    outline: none;
    border-color: hsl(var(--sec-h, 200) 70% 55% / .55);
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .nativ::placeholder { color: var(--ink-4); }

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) select.nativ {
    appearance: none;
    cursor: pointer;
    padding-right: 2.2rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .8rem center;
}

/* Lista derulanta e desenata de sistem: culorile trebuie puse pe <option>, altfel
   fundalul popup-ului rămâne alb si opțiunile ies invizibile. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) select option {
    background-color: var(--surface-2);
    color: var(--ink);
}


/* =====================================================================
   BUTOANELE
   ===================================================================== */
/* Prefixate cu "body #order-standard_cart", nu doar cu :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret): tema are
   "body #order-standard_cart .domain-selection-options .btn { padding: .375rem
   .75rem }" - specificitate 1,2,3 - care bate orice selector doar cu clase.
   Fara prefix, butoanele ieseau de 33px in loc de 49, adica altfel decat in
   prototip. A treia oara cand dau peste tiparul asta: tema si formularul de
   comanda isi scriu regulile cu ID-uri. */
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn:not(.multiselect),
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-primary:not(.multiselect),
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-add-to-cart {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    background: linear-gradient(135deg, var(--cyan) 0%, var(--violet) 100%);
    border: 0;
    border-radius: var(--r-md);
    color: #fff;
    font-family: var(--font-body);
    /* 14px e marimea butoanelor din tot fluxul. Cele doua pagini de domenii isi
       maresc butoanele mari la 16px, fiecare in foaia ei (lab404-domenii.css,
       lab404-dtr.css) - acolo butonul e actiunea paginii, nu un pas dintr-un
       formular lung. */
    font-size: var(--t-sm);
    font-weight: 600;
    padding: .8rem 1.6rem;
    white-space: nowrap;
    text-shadow: none;
    cursor: pointer;
    transition: transform .22s var(--ease-out), box-shadow .22s var(--ease-out), opacity .2s;
}

body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn:not(.multiselect):hover:not(:disabled),
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-primary:not(.multiselect):hover:not(:disabled),
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-add-to-cart:hover:not(:disabled) {
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 12px 24px -10px rgba(6, 182, 212, .6);
}

body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn:disabled,
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-primary:disabled { opacity: .38; cursor: not-allowed; }

/* btn-block din marcajul WHMCS intindea butonul pe toata coloana */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-block { display: inline-flex; width: auto; }

body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn-mare { padding: .95rem 2.2rem; font-size: 1.05rem; }

/* Butonul de continuare: centrat la finalul formularului, ca in WHMCS, unde
   porneste cu w-hidden si apare cand s-a ales un domeniu. */
:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .zona-continua {
    margin-top: var(--sp-8);
    display: flex;
    justify-content: center;
}

:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .nota-mica {
    font-size: var(--t-xs);
    color: var(--ink-4);
    margin: var(--sp-3) 0 0;
}



/* =====================================================================
   w-hidden TREBUIE SA CASTIGE — a se pastra LA FINALUL fisierului
   ---------------------------------------------------------------------
   WHMCS ascunde starile rezultatului cu clasa .w-hidden, definita simplu ca
   ".w-hidden { display: none }", fara !important, deci specificitate (0,1,0).
   Orice regula a noastra care pune `display` pe aceleasi elemente o bate: din
   :is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .btn { display: inline-flex } si din .domain-suggestion
   { display: flex } ieseau 38 din 77 de elemente ascunse devenite VIZIBILE -
   butonul "Contactați asistența", rândul-șablon de sugestie, incarcatoarele,
   textele "indisponibil". Se vedeau toate deodata.

   Clasa e scrisa de doua ori intenționat: asa regula are specificitate (1,3,1)
   si castiga fata de orice selector cu o singura clasa pe care il mai adaugam
   aici, indiferent de ordine. Nu folosim !important.

   Cand JS-ul vrea sa arate ceva, fie scoate clasa, fie apeleaza .show(), care
   pune display inline - amandoua bat regula asta, deci nu blocheaza nimic.
   ===================================================================== */
body #order-standard_cart:is(.lab404-dom, .lab404-cfg, .lab404-cos, .lab404-chk, .lab404-dcf, .lab404-dtr, .lab404-ren, .lab404-dpret) .w-hidden.w-hidden { display: none; }

