/**
 * Cetinis — tema magazinului CloudShop
 *
 * GENERAT AUTOMAT din theme/parts/*.css. Nu edita fisierul asta direct:
 * modificarile se pierd la urmatoarea rulare a build-style.sh.
 *
 * Ultima generare: 2026-09-21 20:33
 * Bucati: 17
 */

/* ══════════════════════════════════════════════════════════════
   00-fundatie.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIS — fundatia temei: tokeni proprii, stratul de identitate,
             vocabularul comun (ct-*)
   Ultima modificare: 2026-08-28 18:35
   Modificari:
     2026-08-28 18:35 — Scoasa reparatia de diacritice pentru Fraunces:
                        masurata in browser pe situl real, nu se manifesta
                        (vezi punctul 5 de mai jos). Ramane doar constatarea.
     2026-08-28 18:10 — Portare din C:\tmp\cetinis\design\parts\00-fundatie.css
                        pe magazinul real. Scos blocul :root cu --color-* si
                        fonturile (vin din Setari → Identitate), scos resetul
                        global (nucleul are deja Bootstrap Reboot + main.css),
                        scos routerul .ct-page, scoase --z-* / --transition* /
                        --border-radius* (le are nucleul), tokenii --ct-*
                        derivati cu color-mix din paleta.
   ───────────────────────────────────────────────────────────
   DE CITIT INAINTE SA SCRII IN ALT FISIER DIN parts/

   1. CULORILE SI FONTURILE NU SE SCRIU AICI. Vin din Setari → Identitate,
      emise de layout.php in :root: --color-bg, --color-white, --color-text,
      --color-text-secondary, --color-text-light, --color-border,
      --color-primary(+ -dark/-light/-lightest/-rgb), --color-on-primary,
      --color-accent(+ -rgb), --color-on-accent, --color-success/-danger/
      -warning/-info, --font-family, --font-family-heading,
      --border-radius(-sm/-lg), --logo-height(-mobile), --cs-menu-phone.
      Daca ai nevoie de o nuanta, o faci cu color-mix din ele — NU cu hex nou.

   2. Toate tranzitiile se scriu cu var(--t) / var(--t-fast) / var(--t-slow).
      La `prefers-reduced-motion: reduce` tokenii devin 0s, deci miscarea se
      opreste SINGURA. Daca scrii `.3s` in cifre, miscarea ta NU se opreste.

   3. Fisierul asta NU mai contine reset. Nucleul incarca Bootstrap Reboot +
      main.css inaintea temei; un reset aici ar dezbraca butoanele, listele si
      linkurile de pe TOT magazinul (cos, checkout, cont). Ce a ramas e strict
      stratul de identitate: fundalul paginii, marimea si ritmul textului,
      selectia, bara de derulare, focalizarea.

   4. `.ct-reveal` NU are motor propriu pe situl real. Observatorul de derulare
      din nucleu (assets/js/main.js) urmareste `.reveal` si pune `.revealed`.
      Deci se scrie MEREU `class="reveal ct-reveal"` — `.ct-reveal` doar
      rafineaza durata si curba, nu ascunde nimic singur (vezi §8).

   5. FRAUNCES — ce s-a verificat, ca sa nu se mai verifice o data.
      Fontul e self-hostat de platforma (`assets/css/theme-fonts.css`), livrat
      in DOUA subseturi declarate FARA `unicode-range`:
        · ...14c1qv86Rg.woff2 = latin-ext (289 glife): a-breve, s-virgula,
          t-virgula — dar FARA a-circumflex si i-circumflex;
        · ...14c7qv8.woff2    = latin     (222 glife): invers.
      Parea o capcana sigura (diacriticele romanesti ar cadea pe rezerva, iar
      layout.php lipeste `sans-serif` la ORICE font de titlu, deci pe Arial).
      MASURAT in Chrome pe situl real, cu amprenta de pixeli per caracter:
      a · a-breve · s-virgula · t-virgula · a-circumflex · i-circumflex se
      randeaza TOATE in Fraunces. Motorul cauta glifa in celelalte fete ale
      ACELEIASI familii inainte sa iasa din ea. Testul e sensibil — un semn
      care lipseste chiar (ideograma) a iesit corect drept „cade pe rezerva".
      ⇒ NU scriem aici @font-face cu `unicode-range`: ar fi o reparatie pentru
      o problema care nu se manifesta, platita cu doua cai de fisier scrise de
      mana in tema. Rezerva `sans-serif` din nucleu ramane un bug REAL, dar
      aici se vede doar ca o clipa de font sans la incarcare lenta; se repara
      in layout.php, pentru toti clientii.
      ⚠ Fisierul are DOAR axa `wght` (100-900). `opsz`, `SOFT` si `WONK` din
      propunere nu exista in el si se ignora tacut — de aceea `wght` e scris
      explicit peste tot (vezi §4).
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. TOKENII PROPRII (ct-*) SI SCARILE
   Tot ce e culoare porneste din paleta din Setari, prin color-mix:
   daca clientul schimba verdele din admin, suprafetele si firele
   il urmeaza fara sa umble nimeni prin CSS.
   ═══════════════════════════════════════════════════════════ */

:root{

  /* ── 1.1 Suprafete si fire ──────────────────────────────────────────────
     Toate sunt fundalul paginii impins spre verdele marcii. Procentele sunt
     alese ca sa cada pe valorile aprobate in propunere (#152620 / #1B3129 /
     #1E3A2C / #16291F), cu abatere sub un pas de culoare. */

  --ct-surface-2:   color-mix(in srgb, var(--color-bg) 90%, var(--color-primary));
                    /* suprafata ridicata: dropdown, drawer, mini-cos */
  --ct-surface-3:   color-mix(in srgb, var(--color-bg) 84%, var(--color-primary));
                    /* hover pe rand, campuri de formular */

  --ct-line:        var(--color-border);
                    /* FIRUL de 1px: despartitoare, rame de card.
                       Vine din Setari → Identitate → „Culoare bordura"
                       (#1E3A2C). E ornament, nu contur de control:
                       ~1.5:1 fata de fundal, intentionat abia vizibil. */
  --ct-line-soft:   color-mix(in srgb, var(--color-border) 60%, var(--color-bg));
                    /* firul care se stinge spre capete */
  --ct-line-control:color-mix(in srgb, var(--color-primary) 68%, var(--ct-mix-sink));
                    /* CONTURUL unui CONTROL (camp, buton fantoma, pastila).
                       Masurat pe paleta Cetinis: 4.76:1 pe fundal, 4.44:1 pe
                       suprafata cardului, 3.50:1 chiar si pe --ct-surface-3 —
                       deci trece pragul de 3:1 peste tot. --ct-line NU trece,
                       nu-l folosi la controale. */

  --ct-text-2:      var(--color-text-secondary);
                    /* text secundar — Setari → Identitate (#A8BFB2, 9.7:1) */
  --ct-text-3:      var(--color-text-light);
                    /* text tertiar, etichete, moneda — Setari → Identitate
                       (#8AA398): 7.0:1 pe fundal, 5.1:1 pe --ct-surface-3 */

  --ct-green-deep:  color-mix(in srgb, var(--color-primary) 60%, var(--ct-mix-sink));
                    /* umpluturi discrete si stari (nu contur) */

  /* ── 1.2 Alias-uri semantice peste paleta ──────────────────────────────── */
  --ct-ember:       var(--color-accent);   /* jarul: pret, „nou", reduceri */
  --ct-ember-soft:  rgba(var(--color-accent-rgb), .14);
  --ct-ok:          var(--color-success);
  --ct-warn:        var(--color-warning);
  --ct-danger:      var(--color-danger);

  /* cele doua capete de amestec — singurul mod permis de a spune
     „mai deschis" / „mai inchis" fara sa scrii hex nou intr-o componenta */
  --ct-mix-lift: #FFFFFF;
  --ct-lift-rgb: 255, 255, 255;
  --ct-mix-sink: #000000;

  /* aurele calde (lumina de jar) — se folosesc ca box-shadow, nu ca fundal */
  --ct-glow-ember: 0 10px 30px -12px rgba(var(--color-accent-rgb), .55),
                   0 2px 10px -4px  rgba(var(--color-accent-rgb), .35);
  --ct-glow-leaf:  0 10px 30px -14px rgba(var(--color-primary-rgb), .45),
                   0 2px 10px -6px  rgba(var(--color-primary-rgb), .30);

  /* ── 1.3 Tipografie ────────────────────────────────────────────────────
     Familiile vin din Setari → Identitate (Fraunces pe titluri, Manrope pe
     corp). Aici doar le dam nume scurte si stabilim scara. */

  --f-display: var(--font-family-heading);
  --f-body:    var(--font-family);

  --h1: clamp(38px, 5.4vw, 68px);
  --h2: clamp(28px, 3.6vw, 44px);
  --h3: clamp(19px, 1.7vw, 23px);
  --fs-body:  16.5px;
  --fs-small: 14px;
  --fs-label: 11.5px;
  --lh-body:  1.65;

  /* ── 1.4 Spatiu, container, raze ───────────────────────────────────────── */

  --s1:4px;  --s2:8px;  --s3:12px; --s4:16px; --s5:24px;
  --s6:32px; --s7:48px; --s8:64px; --s9:96px;

  --wrap: 1200px;
  --gut:  clamp(20px, 5vw, 40px);
  --sec-pad:        clamp(56px, 7vw, 104px);
  --sec-pad-tight:  clamp(32px, 4vw, 56px);

  /* razele urmeaza Setari → Identitate (14 / 8 / 22 px la Cetinis);
     rezervele sunt doar plasa daca setarea lipseste */
  --r-sm:   var(--border-radius-sm, 8px);
  --r:      var(--border-radius, 14px);
  --r-lg:   var(--border-radius-lg, 22px);
  --r-pill: 999px;

  --ct-tap: 44px;   /* tinta minima de atingere pe mobil */

  /* ── 1.5 Miscare — TOTUL trece pe aici ─────────────────────────────────
     NU redefinim --transition / --transition-fast / --transition-slow:
     in nucleu alea sunt scurtaturi COMPLETE (`all 0.2s ease`), nu durate,
     si sunt folosite de componentele platformei. */

  --ease:      cubic-bezier(.22, .61, .36, 1);
  --ease-out:  cubic-bezier(.16, 1, .3, 1);
  --t-fast: .12s;
  --t:      .22s;
  --t-slow: .42s;
  --ct-reveal-dur:   .7s;
  --ct-reveal-delay: 0ms;

  /* straturile (--z-dropdown … --z-toast) vin din main.css, cu aceleasi
     valori — nu le redeclaram. */

  color-scheme: dark;
}


/* ═══════════════════════════════════════════════════════════
   2. STRATUL DE IDENTITATE
   NU e reset. Sunt cele cinci lucruri pe care nucleul le pune altfel
   decat cere identitatea Cetinis, plus doua rafinari de citire.
   ═══════════════════════════════════════════════════════════ */

body{
  /* main.css pune `background-color: var(--color-white)` pe body. Pe o tema
     inchisa asta inseamna „pagina are culoarea cardului": la Cetinis fundalul
     ar iesi #0F1B16 in loc de #0A1310, iar cardurile ar disparea in el.
     Aici punem fundalul REAL al paginii; cardurile isi pastreaza --color-white
     si se disting prin firul de 1px, exact cum cere BRIEF §2. */
  background-color: var(--color-bg);

  font-size:   var(--fs-body);
  line-height: var(--lh-body);
  font-variant-numeric: lining-nums;
  text-rendering: optimizeLegibility;
  /* `display:flex` + `min-height` + `overflow-x:clip` raman ale nucleului
     (subsolul lipit de jos) — nu le atingem. */
}

/* cifrele care inseamna bani sau cantitati stau pe coloana */
.ct-price, .ct-chip, time, output,
input[type="number"], input[type="tel"]{
  font-variant-numeric: tabular-nums lining-nums;
}

p{ text-wrap: pretty; }

::selection{
  background: color-mix(in srgb, var(--color-primary) 34%, transparent);
  color: var(--color-text);
}

/* bara de derulare, ca sa nu iasa gri de sistem peste verde */
*{ scrollbar-color: var(--ct-line-control) transparent; scrollbar-width: thin; }
::-webkit-scrollbar{ width: 10px; height: 10px; }
::-webkit-scrollbar-track{ background: transparent; }
::-webkit-scrollbar-thumb{
  background: color-mix(in srgb, var(--ct-line-control) 70%, transparent);
  border-radius: var(--r-pill);
  border: 3px solid transparent;
  background-clip: content-box;
}


/* ═══════════════════════════════════════════════════════════
   3. STRUCTURA
   ⚠ `.container` al platformei NU e atins aici. Daca sectiunile proprii
   (.ct-wrap, 1200px) trebuie sa se alinieze cu cele de contract, decizia
   apartine directorului de arta — e o schimbare care muta TOATE paginile
   magazinului, nu doar cele scrise de noi.
   ═══════════════════════════════════════════════════════════ */

.ct-wrap{
  width: 100%;
  max-width: calc(var(--wrap) + var(--gut) * 2);
  margin-inline: auto;
  padding-inline: var(--gut);
}

.ct-sec{
  position: relative;
  padding-block: var(--sec-pad);
}
.ct-sec--tight{ padding-block: var(--sec-pad-tight); }
.ct-sec--flush{ padding-block: 0; }

.ct-grid{
  display: grid;
  gap: var(--s5);
  grid-template-columns: 1fr;
}
@media (min-width: 640px){
  .ct-grid--2, .ct-grid--3, .ct-grid--4{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 960px){
  .ct-grid--3, .ct-grid--4{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1160px){
  .ct-grid--4{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
}


/* ═══════════════════════════════════════════════════════════
   4. TIPOGRAFIE
   `font-variation-settings` cere axele in fisierul de font. Fraunces-ul
   self-hostat are DOAR `wght`; „opsz", „SOFT" si „WONK" raman scrise
   pentru ziua in care platforma livreaza fisierul complet, dar azi se
   ignora. De aceea `wght` e scris explicit peste tot — el chiar lucreaza.
   ═══════════════════════════════════════════════════════════ */

.ct-h1, .ct-h2, .ct-h3{
  font-family: var(--f-display);
  font-weight: 400;
  color: var(--color-text);
  text-wrap: balance;
  margin: 0;
}

.ct-h1{
  font-size: var(--h1);
  line-height: 1.02;
  letter-spacing: -.024em;
  font-variation-settings: "opsz" 144, "wght" 450, "SOFT" 22, "WONK" 1;
}
.ct-h2{
  font-size: var(--h2);
  line-height: 1.08;
  letter-spacing: -.018em;
  font-variation-settings: "opsz" 96, "wght" 500, "SOFT" 20, "WONK" 1;
}
.ct-h3{
  font-size: var(--h3);
  line-height: 1.28;
  letter-spacing: -.008em;
  font-variation-settings: "opsz" 36, "wght" 600, "SOFT" 10, "WONK" 0;
}

.ct-lede{
  font-family: var(--f-body);
  font-size: clamp(16.5px, 1.3vw, 19px);
  line-height: 1.68;
  font-weight: 400;
  color: var(--ct-text-2);
  max-width: 62ch;
  text-wrap: pretty;
}

/* eticheta majuscula — ecoul taglineului „DESIS DE GUSTURI" din logo.
   ⚠ Cand eticheta sta intr-un antet de sectiune al platformei, se foloseste
   `.section-badge` (clasa reala din homepage.css/pages.css). `.ct-eyebrow`
   ramane pentru cazurile in care chiar e altceva — mai ales `--ruled`. */
.ct-eyebrow{
  display: inline-flex;
  align-items: center;
  gap: var(--s3);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: var(--fs-label);
  line-height: 1;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}
.ct-eyebrow--ruled{
  display: flex;
  width: 100%;
}
.ct-eyebrow--ruled::after{
  content: "";
  flex: 1 1 auto;
  min-width: 32px;
  height: 1px;
  /* firul porneste din verdele de control (se VEDE ca linie voita) si se
     stinge complet spre dreapta — „aprins la mijloc, stins la capete" */
  background: linear-gradient(90deg,
              color-mix(in srgb, var(--ct-line-control) 58%, transparent) 0%,
              color-mix(in srgb, var(--ct-line-control) 22%, transparent) 55%,
              transparent 100%);
}

.ct-muted{ color: var(--ct-text-2); }


/* ═══════════════════════════════════════════════════════════
   5. BUTOANE
   Clase proprii. NU redefinim `.btn` al platformei — acolo se intra
   doar cu ce spune tema de pagina, nu din fundatie.
   ═══════════════════════════════════════════════════════════ */

.ct-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 46px;
  padding-inline: var(--s5);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  background-color: transparent;
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 15px;
  line-height: 1;
  letter-spacing: .004em;
  color: var(--color-text);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
  transition: background-color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              color var(--t) var(--ease),
              box-shadow var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.ct-btn > svg,
.ct-btn > i{ flex: 0 0 auto; }
.ct-btn:active{ transform: translateY(1px); }
.ct-btn[disabled], .ct-btn[aria-disabled="true"], .ct-btn.is-disabled{
  opacity: .48;
  pointer-events: none;
}

/* primar — verde plin, cu AURA DE JAR (calda), nu umbra neagra generica:
   butonul pare luminat de cuptor, nu ridicat de pe hartie.
   Textul e --color-on-primary, calculat de layout.php din luminanta verdelui
   (la #6FCF89 iese #111318, 9.8:1) — NU se scrie de mana. */
.ct-btn--primary{
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  box-shadow: 0 0 0 0 rgba(var(--color-accent-rgb), 0),
              0 12px 28px -14px rgba(var(--color-accent-rgb), .50),
              0 4px 14px -8px   rgba(var(--color-primary-rgb), .45),
              inset 0 1px 0 rgba(var(--ct-lift-rgb), .18);
}
.ct-btn--primary:hover{
  background-color: color-mix(in srgb, var(--color-primary) 88%, var(--ct-mix-lift));
  box-shadow: 0 0 0 6px rgba(var(--color-accent-rgb), .10),
              0 16px 34px -14px rgba(var(--color-accent-rgb), .62),
              0 6px 18px -8px   rgba(var(--color-primary-rgb), .52),
              inset 0 1px 0 rgba(var(--ct-lift-rgb), .22);
}

/* jar plin — pentru „Comanda acum", promotii */
.ct-btn--ember{
  background-color: var(--color-accent);
  color: var(--color-on-accent);
  box-shadow: 0 12px 28px -14px rgba(var(--color-accent-rgb), .62),
              inset 0 1px 0 rgba(var(--ct-lift-rgb), .20);
}
.ct-btn--ember:hover{
  background-color: color-mix(in srgb, var(--color-accent) 88%, var(--ct-mix-lift));
  box-shadow: 0 0 0 6px rgba(var(--color-accent-rgb), .12),
              0 16px 34px -14px rgba(var(--color-accent-rgb), .74),
              inset 0 1px 0 rgba(var(--ct-lift-rgb), .24);
}

/* fantoma — conturul e --ct-line-control (3:1 garantat), nu firul ornamental */
.ct-btn--ghost{
  border-color: var(--ct-line-control);
  color: var(--color-text);
}
.ct-btn--ghost:hover{
  border-color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
  color: var(--color-primary);
}

/* discret — doar text si icoana */
.ct-btn--quiet{
  padding-inline: var(--s3);
  color: var(--ct-text-2);
}
.ct-btn--quiet:hover{
  color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 8%, transparent);
}

.ct-btn--sm{ min-height: 38px; padding-inline: var(--s4); font-size: 13.5px; }
.ct-btn--lg{ min-height: 56px; padding-inline: var(--s6); font-size: 16.5px; }
.ct-btn--block{ display: flex; width: 100%; }

/* pe atingere, niciun buton nu coboara sub tinta de 44px */
@media (pointer: coarse){
  .ct-btn--sm{ min-height: var(--ct-tap); }
}


/* ═══════════════════════════════════════════════════════════
   6. SUPRAFETE
   Delimitarea se face cu FIRUL de 1px, nu cu umbra grea si nu cu
   contur gri — logoul e line-art, deci si interfata e line-art.
   ═══════════════════════════════════════════════════════════ */

.ct-card{
  position: relative;
  background-color: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  transition: border-color var(--t) var(--ease),
              background-color var(--t) var(--ease),
              transform var(--t) var(--ease),
              box-shadow var(--t) var(--ease);
}
.ct-card--raised{
  background-color: var(--ct-surface-2);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--color-primary) 10%, transparent),
              0 22px 46px -32px var(--ct-mix-sink);
}

.ct-panel{
  position: relative;
  background-color: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  padding: clamp(20px, 3vw, 48px);
}

/* pastile */
.ct-chip{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  min-height: 26px;
  padding-inline: var(--s3);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background-color: color-mix(in srgb, var(--color-primary) 8%, transparent);
  color: var(--ct-text-2);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 11px;
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  white-space: nowrap;
}
.ct-chip--ember{
  border-color: color-mix(in srgb, var(--color-accent) 55%, transparent);
  background-color: var(--ct-ember-soft);
  color: var(--color-accent);
}
.ct-chip--ok{
  border-color: color-mix(in srgb, var(--ct-ok) 55%, transparent);
  background-color: color-mix(in srgb, var(--ct-ok) 12%, transparent);
  color: var(--ct-ok);
}


/* ═══════════════════════════════════════════════════════════
   7. PRETUL — obiect tipografic
   Cifre Fraunces tabulare + moneda mica, majuscula, in text tertiar.
   Bani: PUNCT la zecimale, miile NEDESPARTITE, 2 zecimale — 129.50 lei.
   (In Setari → Magazin: separator zecimal „.", separator mii GOL.)
   ═══════════════════════════════════════════════════════════ */

.ct-price{
  display: inline-flex;
  align-items: baseline;
  gap: .34em;
  white-space: nowrap;
}
.ct-price-n{
  font-family: var(--f-display);
  font-variation-settings: "opsz" 72, "wght" 600, "SOFT" 14, "WONK" 0;
  font-weight: 400;
  font-size: 1.3em;
  line-height: 1;
  letter-spacing: -.012em;
  color: var(--color-text);
  font-variant-numeric: tabular-nums lining-nums;
}
.ct-price-c{
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}

/* pretul vechi: stins si taiat. NICIODATA invers. */
.ct-price--old .ct-price-n{
  font-variation-settings: "opsz" 48, "wght" 500, "SOFT" 10, "WONK" 0;
  font-size: 1em;
  color: var(--ct-text-3);
}
.ct-price--old{
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in srgb, var(--ct-text-3) 75%, transparent);
  color: var(--ct-text-3);
}
/* pretul nou, cand exista unul taiat inaintea lui, preia jarul */
.ct-price--old + .ct-price{ margin-left: var(--s2); }
.ct-price--old + .ct-price .ct-price-n{ color: var(--ct-ember); }

.ct-price--lg .ct-price-n{
  font-size: clamp(26px, 3vw, 38px);
  font-variation-settings: "opsz" 144, "wght" 600, "SOFT" 20, "WONK" 1;
  letter-spacing: -.02em;
}
.ct-price--lg .ct-price-c{ font-size: 13px; }


/* ═══════════════════════════════════════════════════════════
   8. MISCARE — aparitia la derulare
   ═══════════════════════════════════════════════════════════

   MOTORUL E AL PLATFORMEI. `assets/js/main.js` urmareste `.reveal`,
   `.reveal-left`, `.reveal-right`, `.reveal-scale` si pune `.revealed`.
   NU exista niciun observator care sa puna `.is-in`.

   DECI SE SCRIE:   <div class="reveal ct-reveal">…</div>

   `.ct-reveal` NU ascunde nimic singur — doar inlocuieste durata si curba
   nucleului (0.6s ease) cu ale noastre. Daca cineva il scrie fara `.reveal`,
   elementul ramane VIZIBIL: nu se poate pierde continut pe ecran.

   Intarzierea in cascada: se foloseste `.ct-reveal-stagger` SAU
   `.reveal-stagger` al platformei, niciodata amandoua — regula lor
   (`.reveal-stagger > .reveal:nth-child(n)`) are specificitate mai mare si
   ar castiga in fata intarzierii noastre.
   ─────────────────────────────────────────────────────────── */

.ct-reveal{
  transition-duration: var(--ct-reveal-dur);
  transition-timing-function: var(--ease-out);
  transition-delay: var(--ct-reveal-delay);
}
/* daca elementul poarta si `.reveal`, deplasarea de start e a noastra */
.reveal.ct-reveal{ transform: translate3d(0, 16px, 0); }
.reveal.ct-reveal.revealed{ transform: none; }

.ct-reveal-stagger > *:nth-child(1){  --ct-reveal-delay: 0ms;   }
.ct-reveal-stagger > *:nth-child(2){  --ct-reveal-delay: 60ms;  }
.ct-reveal-stagger > *:nth-child(3){  --ct-reveal-delay: 120ms; }
.ct-reveal-stagger > *:nth-child(4){  --ct-reveal-delay: 180ms; }
.ct-reveal-stagger > *:nth-child(5){  --ct-reveal-delay: 240ms; }
.ct-reveal-stagger > *:nth-child(6){  --ct-reveal-delay: 300ms; }
.ct-reveal-stagger > *:nth-child(7){  --ct-reveal-delay: 360ms; }
.ct-reveal-stagger > *:nth-child(8){  --ct-reveal-delay: 420ms; }
.ct-reveal-stagger > *:nth-child(9){  --ct-reveal-delay: 480ms; }
.ct-reveal-stagger > *:nth-child(10){ --ct-reveal-delay: 540ms; }
.ct-reveal-stagger > *:nth-child(11){ --ct-reveal-delay: 600ms; }
.ct-reveal-stagger > *:nth-child(n+12){ --ct-reveal-delay: 660ms; }


/* ═══════════════════════════════════════════════════════════
   9. ACCESIBILITATE
   ═══════════════════════════════════════════════════════════ */

.ct-sr{
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* sarirea la continut — tinta reala din platforma e #main-content */
.ct-skip{
  position: fixed;
  top: var(--s4);
  left: var(--s4);
  z-index: var(--z-toast);
  display: inline-flex;
  align-items: center;
  min-height: var(--ct-tap);
  padding-inline: var(--s5);
  border-radius: var(--r-pill);
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 15px;
  box-shadow: var(--ct-glow-leaf);
  transform: translateY(calc(-100% - var(--s6)));
  transition: transform var(--t) var(--ease);
}
.ct-skip:focus-visible,
.ct-skip:focus{ transform: translateY(0); }

/* conturul de focalizare, peste tot, o singura data */
:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
:focus:not(:focus-visible){ outline: none; }


/* ═══════════════════════════════════════════════════════════
   10. MISCARE REDUSA
   Tokenii de durata devin 0s, deci se opresc TOATE tranzitiile scrise
   cu var(--t*) — inclusiv cele ale celorlalte bucati din parts/, fara
   !important si fara ca fiecare sa scrie propriul bloc media.
   (`.reveal` al platformei se opreste singur — main.css il trateaza
   deja cu `opacity:1 !important`.)
   ═══════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  :root{
    --t-fast: 0s;
    --t: 0s;
    --t-slow: 0s;
    --ct-reveal-dur: 0s;
    --ct-reveal-delay: 0ms;
  }

  .ct-reveal{ transition: none; }
  .ct-reveal-stagger > *{ --ct-reveal-delay: 0ms; }

  .ct-btn{ transition: none; }
  .ct-btn:active{ transform: none; }
  .ct-card{ transition: none; }
  .ct-skip{ transition: none; }
}


/* ══════════════════════════════════════════════════════════════
   02-semnatura.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIS — semnatura vizuala: textura de cetina, lumina de jar,
             limbajul liniar, marca drept ornament
   Ultima modificare: 2026-08-28 18:20
   Modificari:
     2026-08-28 18:20 — Portare din C:\tmp\cetinis\design\parts\02-semnatura.css
                        pe magazinul real. Textura trecuta de pe
                        `background-image` cu hex scris in SVG pe `mask` +
                        `background-color` derivat din paleta (urmeaza culorile
                        din Setari, merge si pe tema deschisa). Filigranul nu
                        mai citeste `--ct-bg` (mecanism de prototip) ci
                        `--ct-mark-src`, cu calea reala din /uploads.
   ───────────────────────────────────────────────────────────
   CE E IN FISIERUL ASTA SI CUM SE FOLOSESTE

   Patru familii de utilitare, toate DECORATIVE. Niciuna nu schimba asezarea
   in pagina: se pun peste clasele existente (ale noastre SAU ale platformei),
   nu in locul lor.

     1. .ct-tex      textura de cetina  — pe benzi/sectiuni
     2. .ct-glow     lumina de jar      — sub fotografii si sub butonul principal
     3. .ct-rule / .ct-corner / .ct-frame   limbajul liniar (logoul e line-art)
     4. .ct-mark     frunza ca filigran — in coltul benzilor mari
     (+ .ct-noise    grain fin impotriva benzilor de gradient)

   REGULI CARE SE APLICA LA TOATE:
   · Nimic nu se misca singur — nicio animatie, deci nimic de oprit la
     `prefers-reduced-motion`. Blocul de la final e o plasa de siguranta
     pentru cine adauga mai tarziu o miscare pe clasele astea.
   · Toate straturile decorative sunt `pointer-events:none` si n-au continut
     — se presupune `aria-hidden="true"` unde e element real in markup.
   · Zero `!important`, zero gazda externa, zero `blur`/`backdrop-filter` pe
     suprafete mari care se deruleaza (aurele sunt gradienti radiali).
   · Tokenii vin din 00-fundatie.css, iar culorile din Setari → Identitate.
     In fisierul asta NU mai exista niciun hex de culoare: pana si desenele
     SVG intra ca MASCA, iar culoarea le-o da `background-color` din paleta.

   ⚠ STRATURI: `.ct-tex`, `.ct-mark-host`, `.ct-glow`, `.ct-frame` si
   `.ct-noise` fac `isolation:isolate`, ca straturile lor negative sa ramana
   DEASUPRA fundalului gazdei si SUB continut. Nu pune `z-index` pe continutul
   dinauntru — n-ai nevoie, ordinea e deja corecta.

   ⚠ ICOANE: pe situl real icoanele NU mai sunt SVG din sprite, ci clasele
   `icon-<nume>` (Lucide self-hostat, `assets/css/lucide.css` — font de icoane,
   marimea din `font-size`, culoarea din `currentColor`). Nici propunerea si
   nici fisierul asta nu stilizau `.ct-ico`, deci n-a fost nimic de rescris;
   `.ct-btn > i` e tratat in 00-fundatie.
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. TEXTURA DE CETINA — .ct-tex
   ═══════════════════════════════════════════════════════════

   Ace de brad desenate cu firul, in doua directii, intr-un verde abia mai
   deschis decat fundalul. Se SIMTE, nu se vede: la 100% zoom fundalul pare
   doar putin „viu". Daca distingi clar motivul, ai pus `--dense` unde nu
   trebuia.

   Doua straturi cu perioade diferite (160px si 230px, decalate) — asa dispare
   senzatia de dala repetata; ochiul nu prinde ritmul.

   CULOAREA: in propunere acele erau desenate cu #2E5A44 scris in SVG, fiindca
   `var()` nu trece pragul unui `data:` URI. Aici desenul intra ca MASCA, iar
   culoarea vine din `background-color` — deci textura urmeaza paleta din
   Setari si ramane corecta si daca magazinul trece vreodata pe o tema
   deschisa. Valoarea implicita reproduce exact verdele aprobat.

   FOLOSIRE
     <section class="ct-sec ct-tex">…</section>
     <section class="ct-sec ct-tex ct-tex--faint">…</section>   mai discret
     <div class="ct-panel ct-tex ct-tex--dense ct-tex--fade">…</div>

   Reglaj fin fara clasa noua:  style="--ct-tex-o:.24"
   ⚠ NU pune textura peste o fotografie — se pune pe FUNDAL, sub continut.
   ⚠ Pe carduri mici nu se vede oricum; e facuta pentru benzi mari.
   ─────────────────────────────────────────────────────────── */

.ct-tex{
  position: relative;
  isolation: isolate;
}

.ct-tex::before{
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  border-radius: inherit;   /* altfel textura iese cu colturi drepte
                               dintr-un panou rotunjit */

  /* Motivul e format din MANUNCHIURI de 2-3 ace pornite din acelasi punct,
     nu din linii izolate: manunchiul citeste „cetina", linia izolata citeste
     „hasura". Ochiul prinde grupul, nu firul.
     Stratul 1 — dala de 160px. Stratul 2 — dala de 230px, decalata si cu
     manunchiurile orientate invers, ca sa nu se simta repetitia. */
  background-color: var(--ct-tex-color,
                    color-mix(in srgb, var(--color-primary) 38%, var(--color-bg)));

  -webkit-mask-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='%23000' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M14,26l11,-6M14,26l9,-10M14,26l4,-11M58,14l-11,-6M58,14l-9,-10M58,14l-4,-11M102,34l11,-6M102,34l9,-10M102,34l4,-11M140,18l-11,-6M140,18l-9,-10M140,18l-4,-11M30,64l11,-6M30,64l9,-10M30,64l4,-11M74,52l-11,-6M74,52l-9,-10M74,52l-4,-11M118,74l11,-6M118,74l9,-10M118,74l4,-11M152,58l-11,-6M152,58l-9,-10M152,58l-4,-11M10,102l11,-6M10,102l9,-10M10,102l4,-11M52,96l-11,-6M52,96l-9,-10M52,96l-4,-11M96,112l11,-6M96,112l9,-10M96,112l4,-11M136,100l-11,-6M136,100l-9,-10M136,100l-4,-11M24,140l11,-6M24,140l9,-10M24,140l4,-11M68,132l-11,-6M68,132l-9,-10M68,132l-4,-11M112,150l11,-6M112,150l9,-10M112,150l4,-11M148,138l-11,-6M148,138l-9,-10M148,138l-4,-11'/%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='230' height='230' viewBox='0 0 230 230'%3E%3Cg fill='none' stroke='%23000' stroke-width='.75' stroke-linecap='round'%3E%3Cpath d='M20,40l-11,-6M20,40l-9,-10M20,40l-4,-11M78,22l11,-6M78,22l9,-10M78,22l4,-11M130,48l-11,-6M130,48l-9,-10M130,48l-4,-11M196,30l11,-6M196,30l9,-10M196,30l4,-11M46,92l-11,-6M46,92l-9,-10M46,92l-4,-11M104,78l11,-6M104,78l9,-10M104,78l4,-11M158,100l-11,-6M158,100l-9,-10M158,100l-4,-11M212,84l11,-6M212,84l9,-10M212,84l4,-11M14,150l-11,-6M14,150l-9,-10M14,150l-4,-11M70,136l11,-6M70,136l9,-10M70,136l4,-11M126,160l-11,-6M126,160l-9,-10M126,160l-4,-11M184,144l11,-6M184,144l9,-10M184,144l4,-11M38,206l-11,-6M38,206l-9,-10M38,206l-4,-11M96,194l11,-6M96,194l9,-10M96,194l4,-11M150,214l-11,-6M150,214l-9,-10M150,214l-4,-11M206,198l11,-6M206,198l9,-10M206,198l4,-11'/%3E%3C/g%3E%3C/svg%3E");
          mask-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='%23000' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M14,26l11,-6M14,26l9,-10M14,26l4,-11M58,14l-11,-6M58,14l-9,-10M58,14l-4,-11M102,34l11,-6M102,34l9,-10M102,34l4,-11M140,18l-11,-6M140,18l-9,-10M140,18l-4,-11M30,64l11,-6M30,64l9,-10M30,64l4,-11M74,52l-11,-6M74,52l-9,-10M74,52l-4,-11M118,74l11,-6M118,74l9,-10M118,74l4,-11M152,58l-11,-6M152,58l-9,-10M152,58l-4,-11M10,102l11,-6M10,102l9,-10M10,102l4,-11M52,96l-11,-6M52,96l-9,-10M52,96l-4,-11M96,112l11,-6M96,112l9,-10M96,112l4,-11M136,100l-11,-6M136,100l-9,-10M136,100l-4,-11M24,140l11,-6M24,140l9,-10M24,140l4,-11M68,132l-11,-6M68,132l-9,-10M68,132l-4,-11M112,150l11,-6M112,150l9,-10M112,150l4,-11M148,138l-11,-6M148,138l-9,-10M148,138l-4,-11'/%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='230' height='230' viewBox='0 0 230 230'%3E%3Cg fill='none' stroke='%23000' stroke-width='.75' stroke-linecap='round'%3E%3Cpath d='M20,40l-11,-6M20,40l-9,-10M20,40l-4,-11M78,22l11,-6M78,22l9,-10M78,22l4,-11M130,48l-11,-6M130,48l-9,-10M130,48l-4,-11M196,30l11,-6M196,30l9,-10M196,30l4,-11M46,92l-11,-6M46,92l-9,-10M46,92l-4,-11M104,78l11,-6M104,78l9,-10M104,78l4,-11M158,100l-11,-6M158,100l-9,-10M158,100l-4,-11M212,84l11,-6M212,84l9,-10M212,84l4,-11M14,150l-11,-6M14,150l-9,-10M14,150l-4,-11M70,136l11,-6M70,136l9,-10M70,136l4,-11M126,160l-11,-6M126,160l-9,-10M126,160l-4,-11M184,144l11,-6M184,144l9,-10M184,144l4,-11M38,206l-11,-6M38,206l-9,-10M38,206l-4,-11M96,194l11,-6M96,194l9,-10M96,194l4,-11M150,214l-11,-6M150,214l-9,-10M150,214l-4,-11M206,198l11,-6M206,198l9,-10M206,198l4,-11'/%3E%3C/g%3E%3C/svg%3E");

  -webkit-mask-size: 160px 160px, 230px 230px;
          mask-size: 160px 160px, 230px 230px;
  -webkit-mask-position: 0 0, 53px 87px;
          mask-position: 0 0, 53px 87px;
  -webkit-mask-repeat: repeat, repeat;
          mask-repeat: repeat, repeat;

  opacity: var(--ct-tex-o, .15);
}

/* mai apasat — doar pe suprafete MICI (un panou, o caseta), nu pe o banda
   intreaga; pe banda intreaga incepe sa se vada motivul */
.ct-tex--dense{ --ct-tex-o: .26; }

/* aproape numai o banuiala — pentru benzi foarte mari, langa fotografii */
.ct-tex--faint{ --ct-tex-o: .08; }

/* Stinge textura spre marginile de sus si de jos, ca banda sa nu se termine
   cu o taietura dreapta in textura cand urmeaza alta sectiune.

   Textura foloseste deja masca pentru desen, deci estomparea NU se mai poate
   face cu un `mask-image` separat: se compune in ACEEASI masca, cu trei
   straturi. ORDINEA CONTEAZA — operatorul fiecarui strat spune cum se compune
   cu tot ce e SUB el, iar straturile se scriu de sus in jos:
     1. gradientul   `intersect`  → taie tot ce iese din interval
     2. acele 160px  `add`        ─┐ reunite intre ele
     3. acele 230px  (jos, ignorat)┘
   Adica gradient ∩ (ace160 ∪ ace230). Scris invers (gradientul ultimul) ar da
   ace160 ∪ (ace230 ∩ gradient) — adica primul strat NEatenuat la capete. */
.ct-tex--fade::before{
  -webkit-mask-image:
    linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='%23000' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M14,26l11,-6M14,26l9,-10M14,26l4,-11M58,14l-11,-6M58,14l-9,-10M58,14l-4,-11M102,34l11,-6M102,34l9,-10M102,34l4,-11M140,18l-11,-6M140,18l-9,-10M140,18l-4,-11M30,64l11,-6M30,64l9,-10M30,64l4,-11M74,52l-11,-6M74,52l-9,-10M74,52l-4,-11M118,74l11,-6M118,74l9,-10M118,74l4,-11M152,58l-11,-6M152,58l-9,-10M152,58l-4,-11M10,102l11,-6M10,102l9,-10M10,102l4,-11M52,96l-11,-6M52,96l-9,-10M52,96l-4,-11M96,112l11,-6M96,112l9,-10M96,112l4,-11M136,100l-11,-6M136,100l-9,-10M136,100l-4,-11M24,140l11,-6M24,140l9,-10M24,140l4,-11M68,132l-11,-6M68,132l-9,-10M68,132l-4,-11M112,150l11,-6M112,150l9,-10M112,150l4,-11M148,138l-11,-6M148,138l-9,-10M148,138l-4,-11'/%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='230' height='230' viewBox='0 0 230 230'%3E%3Cg fill='none' stroke='%23000' stroke-width='.75' stroke-linecap='round'%3E%3Cpath d='M20,40l-11,-6M20,40l-9,-10M20,40l-4,-11M78,22l11,-6M78,22l9,-10M78,22l4,-11M130,48l-11,-6M130,48l-9,-10M130,48l-4,-11M196,30l11,-6M196,30l9,-10M196,30l4,-11M46,92l-11,-6M46,92l-9,-10M46,92l-4,-11M104,78l11,-6M104,78l9,-10M104,78l4,-11M158,100l-11,-6M158,100l-9,-10M158,100l-4,-11M212,84l11,-6M212,84l9,-10M212,84l4,-11M14,150l-11,-6M14,150l-9,-10M14,150l-4,-11M70,136l11,-6M70,136l9,-10M70,136l4,-11M126,160l-11,-6M126,160l-9,-10M126,160l-4,-11M184,144l11,-6M184,144l9,-10M184,144l4,-11M38,206l-11,-6M38,206l-9,-10M38,206l-4,-11M96,194l11,-6M96,194l9,-10M96,194l4,-11M150,214l-11,-6M150,214l-9,-10M150,214l-4,-11M206,198l11,-6M206,198l9,-10M206,198l4,-11'/%3E%3C/g%3E%3C/svg%3E");
          mask-image:
    linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg fill='none' stroke='%23000' stroke-width='.8' stroke-linecap='round'%3E%3Cpath d='M14,26l11,-6M14,26l9,-10M14,26l4,-11M58,14l-11,-6M58,14l-9,-10M58,14l-4,-11M102,34l11,-6M102,34l9,-10M102,34l4,-11M140,18l-11,-6M140,18l-9,-10M140,18l-4,-11M30,64l11,-6M30,64l9,-10M30,64l4,-11M74,52l-11,-6M74,52l-9,-10M74,52l-4,-11M118,74l11,-6M118,74l9,-10M118,74l4,-11M152,58l-11,-6M152,58l-9,-10M152,58l-4,-11M10,102l11,-6M10,102l9,-10M10,102l4,-11M52,96l-11,-6M52,96l-9,-10M52,96l-4,-11M96,112l11,-6M96,112l9,-10M96,112l4,-11M136,100l-11,-6M136,100l-9,-10M136,100l-4,-11M24,140l11,-6M24,140l9,-10M24,140l4,-11M68,132l-11,-6M68,132l-9,-10M68,132l-4,-11M112,150l11,-6M112,150l9,-10M112,150l4,-11M148,138l-11,-6M148,138l-9,-10M148,138l-4,-11'/%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='230' height='230' viewBox='0 0 230 230'%3E%3Cg fill='none' stroke='%23000' stroke-width='.75' stroke-linecap='round'%3E%3Cpath d='M20,40l-11,-6M20,40l-9,-10M20,40l-4,-11M78,22l11,-6M78,22l9,-10M78,22l4,-11M130,48l-11,-6M130,48l-9,-10M130,48l-4,-11M196,30l11,-6M196,30l9,-10M196,30l4,-11M46,92l-11,-6M46,92l-9,-10M46,92l-4,-11M104,78l11,-6M104,78l9,-10M104,78l4,-11M158,100l-11,-6M158,100l-9,-10M158,100l-4,-11M212,84l11,-6M212,84l9,-10M212,84l4,-11M14,150l-11,-6M14,150l-9,-10M14,150l-4,-11M70,136l11,-6M70,136l9,-10M70,136l4,-11M126,160l-11,-6M126,160l-9,-10M126,160l-4,-11M184,144l11,-6M184,144l9,-10M184,144l4,-11M38,206l-11,-6M38,206l-9,-10M38,206l-4,-11M96,194l11,-6M96,194l9,-10M96,194l4,-11M150,214l-11,-6M150,214l-9,-10M150,214l-4,-11M206,198l11,-6M206,198l9,-10M206,198l4,-11'/%3E%3C/g%3E%3C/svg%3E");
  -webkit-mask-size: 100% 100%, 160px 160px, 230px 230px;
          mask-size: 100% 100%, 160px 160px, 230px 230px;
  -webkit-mask-position: 0 0, 0 0, 53px 87px;
          mask-position: 0 0, 0 0, 53px 87px;
  -webkit-mask-repeat: no-repeat, repeat, repeat;
          mask-repeat: no-repeat, repeat, repeat;
  -webkit-mask-composite: source-in, source-over, source-over;
          mask-composite: intersect, add, add;
}


/* ═══════════════════════════════════════════════════════════
   2. LUMINA DE JAR — .ct-glow
   ═══════════════════════════════════════════════════════════

   Aura calda radiala, pe un pseudo-element IN SPATELE continutului. Nu e
   „glow de neon": nu are contur, nu are inel, se stinge complet inainte de
   marginea aurei. Gandeste-o ca lumina care iese din gura cuptorului.

   Locul ei natural: sub pizzele DECUPATE (plutesc pe verde, fara rama — vezi
   BRIEF §12) si sub butonul principal al paginii.

   FOLOSIRE
     <figure class="ct-glow">
       <img src="/uploads/…/pizza-cetinis.png" alt="Pizza Cetinis" width="900" height="895">
     </figure>

     <a class="ct-btn ct-btn--primary ct-glow ct-glow--sm ct-glow--leaf" href="/shop">Comanda</a>
     <div class="ct-glow ct-glow--under"> …obiect care „sta" pe o suprafata… </div>

   Reglaj fin:  style="--ct-glow-i:34%; --ct-glow-y:44%"
   ⚠ Elementul care primeste `.ct-glow` devine `position:relative` +
     `isolation:isolate`. Daca avea deja `position:absolute`, aura merge la
     fel — schimba doar `relative`-ul implicit, nu ce ai scris tu dupa.
   ⚠ NU pune `.ct-glow` pe un card cu fundal opac si aura in afara lui: aura
     e taiata de `overflow` daca un stramos are `overflow:hidden/clip`. Pe
     situl real asta se intampla usor — `.ct-mark-host`, `.category-hero` si
     mai multe sectiuni ale platformei taie la margine.
   ─────────────────────────────────────────────────────────── */

.ct-glow{
  position: relative;
  isolation: isolate;
}

.ct-glow::before{
  content: "";
  position: absolute;
  z-index: -1;
  pointer-events: none;

  left: 50%;
  top:    var(--ct-glow-y, 54%);
  width:  var(--ct-glow-w, 116%);
  height: var(--ct-glow-h, 104%);
  transform: translate(-50%, -50%);

  /* Masurat pe #0A1310: sub 30% aura pur si simplu nu exista pe ecran —
     obiectul acopera miezul aprins si afara ramane doar coada gradientului.
     De aceea miezul e mai tare decat pare firesc pe hartie, iar stingerea
     e lunga (pana la 84%), ca marginea sa nu se citeasca niciodata ca inel. */
  background: radial-gradient(closest-side at 50% 50%,
      color-mix(in srgb, var(--ct-glow-color, var(--ct-ember)) var(--ct-glow-i,  40%), transparent) 0%,
      color-mix(in srgb, var(--ct-glow-color, var(--ct-ember)) var(--ct-glow-i2, 15%), transparent) 46%,
      transparent 84%);
}

/* mic si strans — sub un buton, sub o insigna, sub o icoana */
.ct-glow--sm{
  --ct-glow-w: 128%;
  --ct-glow-h: 230%;
  --ct-glow-i: 34%;
  --ct-glow-i2: 12%;
}

/* mare si larg — sub o fotografie mare de fel principal, sub o pizza intreaga */
.ct-glow--lg{
  --ct-glow-w: 150%;
  --ct-glow-h: 140%;
  --ct-glow-i: 46%;
  --ct-glow-i2: 17%;
}

/* lumina se strange DEDESUBT, ca un obiect care sta pe o masa luminata */
.ct-glow--under{
  --ct-glow-y: 88%;
  --ct-glow-w: 104%;
  --ct-glow-h: 64%;
  --ct-glow-i: 42%;
  --ct-glow-i2: 15%;
}

/* aceeasi aura, dar in cetina in loc de jar — pentru accente verzi
   (buton primar, insigna „nou") unde chihlimbarul ar bate in portocaliu */
.ct-glow--leaf{ --ct-glow-color: var(--color-primary); }

/* Pe telefon aura lata iese lateral din ecran. Masurat la 360px: o figura de
   300px cu `--lg` (150%) ajunge la 395px, adica 35px peste ecran. Nu produce
   derulare laterala (main.css pune `overflow-x:clip` pe body), dar e o risipa
   de lumina in afara cadrului — deci o strangem.
   Regulile stau DUPA modificatori si au aceeasi specificitate, deci castiga. */
@media (max-width: 640px){
  .ct-glow{ --ct-glow-w: 120%; }
  .ct-glow--under{ --ct-glow-w: 100%; }
}


/* ═══════════════════════════════════════════════════════════
   3. LIMBAJUL LINIAR — .ct-rule / .ct-corner / .ct-frame
   ═══════════════════════════════════════════════════════════
   Logoul e desenat din linii, deci tot ce delimiteaza e un FIR, nu o umbra
   si nu un dreptunghi gri. Firele se sting spre capete: nicio linie nu se
   opreste brusc.
   ─────────────────────────────────────────────────────────── */

/* ── 3.1 .ct-rule — despartitorul ────────────────────────────
   FOLOSIRE
     <hr class="ct-rule">                         despartitor neutru
     <div class="ct-rule ct-rule--brand"></div>   banda de brand
     <span class="ct-rule ct-rule--v"></span>     fir vertical intre coloane

   `.ct-rule--brand` e DELIMITAREA OFICIALA langa fotografii (BRIEF §2):
   fotografia ramane curata, iar banda in culoarea identitatii marcheaza
   marginea. Peste poza NU se pune tenta. */

.ct-rule{
  display: block;
  width: 100%;
  height: var(--ct-rule-h, 1px);
  border: 0;
  margin: 0;
  flex: none;
  opacity: 1;   /* Bootstrap Reboot pune `opacity:.25` pe <hr> */
  background: linear-gradient(90deg,
      transparent 0%,
      var(--ct-line) 16%,
      color-mix(in srgb, var(--ct-line) 55%, var(--ct-mix-lift)) 50%,
      var(--ct-line) 84%,
      transparent 100%);
}

/* banda de brand: aprinsa la mijloc, stinsa spre capete */
.ct-rule--brand{
  height: var(--ct-rule-h, 2px);
  background: linear-gradient(90deg,
      transparent 0%,
      color-mix(in srgb, var(--color-primary) 14%, transparent) 14%,
      color-mix(in srgb, var(--color-primary) 88%, transparent) 50%,
      color-mix(in srgb, var(--color-primary) 14%, transparent) 86%,
      transparent 100%);
}

/* varianta calda a benzii — langa fotografii de mancare la gratar */
.ct-rule--ember{
  height: var(--ct-rule-h, 2px);
  background: linear-gradient(90deg,
      transparent 0%,
      color-mix(in srgb, var(--ct-ember) 12%, transparent) 14%,
      color-mix(in srgb, var(--ct-ember) 84%, transparent) 50%,
      color-mix(in srgb, var(--ct-ember) 12%, transparent) 86%,
      transparent 100%);
}

/* fir vertical — aceeasi logica, rotita; inaltimea o da contextul */
.ct-rule--v{
  width: var(--ct-rule-h, 1px);
  height: auto;
  align-self: stretch;
  min-height: var(--ct-rule-len, 100%);
  background: linear-gradient(180deg,
      transparent 0%,
      var(--ct-line) 16%,
      color-mix(in srgb, var(--ct-line) 55%, var(--ct-mix-lift)) 50%,
      var(--ct-line) 84%,
      transparent 100%);
}
.ct-rule--v.ct-rule--brand{
  width: var(--ct-rule-h, 2px);
  background: linear-gradient(180deg,
      transparent 0%,
      color-mix(in srgb, var(--color-primary) 14%, transparent) 14%,
      color-mix(in srgb, var(--color-primary) 88%, transparent) 50%,
      color-mix(in srgb, var(--color-primary) 14%, transparent) 86%,
      transparent 100%);
}


/* ── 3.2 .ct-corner — colturi de fotograf ────────────────────
   Patru colturi desenate din fir, ca reperele de pe un vizor. Se pune pe
   carduri IMPORTANTE (felul zilei, oferta), nu pe toate — altfel nu mai
   marcheaza nimic.

   FOLOSIRE
     <article class="ct-card ct-corner">…</article>
     <article class="ct-card ct-corner ct-corner--diag">…</article>   doar 2 colturi
     <div class="ct-corner" style="--ct-corner-size:34px; --ct-corner-color:var(--color-primary)">

   Un singur pseudo-element: o rama de 1px din care masca lasa vizibile doar
   patratele din colturi. Deci NU intra in conflict cu ::after-ul tau. */

.ct-corner{
  position: relative;
}

.ct-corner::before{
  content: "";
  position: absolute;
  inset: var(--ct-corner-inset, 8px);
  z-index: 1;
  pointer-events: none;
  border: 1px solid var(--ct-corner-color, var(--ct-line-control));
  border-radius: var(--ct-corner-radius, var(--r-sm));

  --ct-corner-s: var(--ct-corner-size, 20px);
  -webkit-mask-image:
    linear-gradient(#000, #000), linear-gradient(#000, #000),
    linear-gradient(#000, #000), linear-gradient(#000, #000);
          mask-image:
    linear-gradient(#000, #000), linear-gradient(#000, #000),
    linear-gradient(#000, #000), linear-gradient(#000, #000);
  -webkit-mask-size: var(--ct-corner-s) var(--ct-corner-s);
          mask-size: var(--ct-corner-s) var(--ct-corner-s);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: left top, right top, left bottom, right bottom;
          mask-position: left top, right top, left bottom, right bottom;
}

/* doar coltul stanga-sus si dreapta-jos — mai discret, bun pe citate */
.ct-corner--diag::before{
  -webkit-mask-position: left top, right bottom, left top, right bottom;
          mask-position: left top, right bottom, left top, right bottom;
}

/* colturile se aprind cand cardul e survolat, fara sa se miste nimic */
.ct-corner--hover::before{
  border-color: var(--ct-corner-color, var(--ct-line));
  transition: border-color var(--t) var(--ease);
}
.ct-corner--hover:hover::before,
.ct-corner--hover:focus-within::before{
  border-color: var(--color-primary);
}


/* ── 3.3 .ct-frame — rama cu colturi taiate ──────────────────
   Pentru citate si marturii: o rama subtire de 1px cu colturile retezate,
   ecou al frunzei din logo (forma inchisa, desenata din linii).

   FOLOSIRE
     <blockquote class="ct-frame">…</blockquote>
     <blockquote class="ct-frame" style="--ct-frame-bg:var(--color-white)">…</blockquote>

   ⚠ `--ct-frame-bg` TREBUIE sa fie culoarea suprafetei de DEDESUBT: rama e
   desenata ca un octogon plin din care se decupeaza un octogon mai mic, in
   culoarea fundalului. Implicit `--color-bg`. Pe un `.ct-card` pui
   `--ct-frame-bg:var(--color-white)`, pe `.ct-card--raised` pui
   `var(--ct-surface-2)`. Peste o TEXTURA nu o folosi — se vede plombajul. */

.ct-frame{
  position: relative;
  isolation: isolate;   /* fara el, octogoanele de pe z-index:-1 fug sub
                           fundalul sectiunii si rama dispare */
  --ct-frame-cut: 16px;
  padding: var(--s6);
}

.ct-frame::before,
.ct-frame::after{
  content: "";
  position: absolute;
  pointer-events: none;
  clip-path: polygon(
    var(--ct-frame-cut) 0,
    calc(100% - var(--ct-frame-cut)) 0,
    100% var(--ct-frame-cut),
    100% calc(100% - var(--ct-frame-cut)),
    calc(100% - var(--ct-frame-cut)) 100%,
    var(--ct-frame-cut) 100%,
    0 calc(100% - var(--ct-frame-cut)),
    0 var(--ct-frame-cut));
}

/* octogonul plin, in culoarea firului */
.ct-frame::before{
  inset: 0;
  z-index: -1;
  background: var(--ct-frame-color, var(--ct-line-control));
}

/* octogonul decupat din interior — lasa vizibil doar firul de 1px */
.ct-frame::after{
  inset: 1px;
  z-index: -1;
  background: var(--ct-frame-bg, var(--color-bg));
  --ct-frame-cut: 15px;
}


/* ═══════════════════════════════════════════════════════════
   4. MARCA DREPT ORNAMENT — .ct-mark
   ═══════════════════════════════════════════════════════════

   Frunza din logo, mare, la 4-6% opacitate, in coltul benzilor mari.
   NICIODATA peste text, NICIODATA peste mancare — sta pe un strat negativ,
   sub tot continutul, si e `pointer-events:none`.

   Filigranul e colorat din TEMA: imaginea intra ca `mask`, iar culoarea vine
   din `background-color`. Asa merge `var()` — spre deosebire de o imagine
   pusa direct in `background-image`, unde culoarea ar fi a fisierului.

   FOLOSIRE
     <section class="ct-sec ct-tex ct-mark-host">
       <span class="ct-mark ct-mark--tr" aria-hidden="true"></span>
       <div class="ct-wrap">…continutul…</div>
     </section>

   Variante:  .ct-mark--tr (sus-dreapta) · .ct-mark--tl · .ct-mark--bl
              (implicit: jos-dreapta) · .ct-mark--xl (filigran urias, mai palid)
              · .ct-mark--ember (in chihlimbar)
   Reglaj:    style="--ct-mark-size:340px; --ct-mark-o:.045"

   ⚠ VALOARE CODATA, DE MUTAT INTR-O SETARE: calea imaginii.
     In propunere cheia `logo-mark` era injectata de build.py prin `--ct-bg`.
     Pe situl real marca vine din Setari → General → „Iconita logo"
     (`general.logo_icon_url`), dar platforma NU o emite ca variabila CSS —
     nu exista niciun `--cs-logo-icon` in layout.php. Pana cand nucleul
     capata asa ceva, calea e scrisa aici, in `--ct-mark-src`, pe locul
     standard folosit de provisioner. Daca fisierul se muta, se schimba
     UN singur rand.
   ⚠ Proportia implicita e a frunzei reale din propunere (180x256). Fisierul
     de pe server e inca patratul livrat de provisioner; cu `mask-size:contain`
     iese doar mai mic, nu deformat. Cand intra frunza adevarata, raportul e
     corect din start; daca are alta proportie, se schimba `--ct-mark-ar`.
   ⚠ Gazda are nevoie de `.ct-mark-host` (pozitionare + context de strat +
     taiere la margine). Fara ea, filigranul iese din banda.
   ─────────────────────────────────────────────────────────── */

.ct-mark-host{
  position: relative;
  isolation: isolate;
  overflow: clip;   /* `clip`, nu `hidden`: nu creeaza container de derulare */
}

.ct-mark{
  position: absolute;
  z-index: -1;
  pointer-events: none;
  display: block;

  width: var(--ct-mark-size, 250px);
  aspect-ratio: var(--ct-mark-ar, 180 / 256);

  background-color: var(--ct-mark-color, var(--color-primary));
  opacity: var(--ct-mark-o, .05);

  -webkit-mask-image: var(--ct-mark-src, url("/uploads/site/logo-icon.png"));
          mask-image: var(--ct-mark-src, url("/uploads/site/logo-icon.png"));
  -webkit-mask-size: contain;
          mask-size: contain;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;

  /* implicit: jos-dreapta, cu un sfert iesit din banda */
  right:  var(--ct-mark-x, -4%);
  bottom: var(--ct-mark-y, -8%);
}

.ct-mark--tr{ top: var(--ct-mark-y, -10%); right: var(--ct-mark-x, -3%); bottom: auto; left: auto; }
.ct-mark--tl{ top: var(--ct-mark-y, -10%); left:  var(--ct-mark-x, -4%); bottom: auto; right: auto; }
.ct-mark--bl{ bottom: var(--ct-mark-y, -8%); left: var(--ct-mark-x, -4%); top: auto; right: auto; }

/* filigran urias — pe banda de poveste, pe subsol; cu cat e mai mare,
   cu atat mai palid, altfel devine desen, nu filigran */
.ct-mark--xl{
  --ct-mark-size: clamp(280px, 36vw, 520px);
  --ct-mark-o: .04;
}

/* filigran in chihlimbar — pe benzile calde (gratar, tochitura) */
.ct-mark--ember{ --ct-mark-color: var(--ct-ember); --ct-mark-o: .045; }

/* pe telefon filigranul mare mananca latimea; il strangem */
@media (max-width: 640px){
  .ct-mark{ --ct-mark-size: 170px; }
  .ct-mark--xl{ --ct-mark-size: 230px; }
}


/* ═══════════════════════════════════════════════════════════
   5. .ct-noise — grain fin impotriva benzilor de gradient
   ═══════════════════════════════════════════════════════════

   VERIFICAT IN BROWSER, nu presupus: pe un gradient #1B3129 → #0A1310 lat de
   800px, treptele se vad ca dungi moi (paleta noastra are ~17 trepte pe canal
   pe toata banda, deci fiecare treapta tine ~47px). Cu grainul de mai jos,
   dungile dispar. De asta exista clasa; daca gradientul tau e scurt (sub
   ~400px) sau are contrast mare, nu-ti trebuie.

   Se pune DOAR pe elementul care are gradientul, nu pe toata pagina.

   FOLOSIRE
     <div class="hero-section ct-noise">…</div>
     <div class="ct-noise" style="--ct-noise-o:.05">…</div>

   ⚠ Nu-l combina cu `.ct-tex` pe acelasi element: acele de brad fac deja
     treaba asta pe suprafata lor. Grainul e pentru gradientii CURATI.
   ⚠ E o singura dala de 160px, tiled — se randeaza o data, nu costa la
     derulare (spre deosebire de un `filter` pe element mare).
   ─────────────────────────────────────────────────────────── */

.ct-noise{
  position: relative;
  isolation: isolate;
}

.ct-noise::after{
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  border-radius: inherit;   /* coltul patrat al grainului peste un panou
                               rotunjit se vede — masurat, nu presupus */
  opacity: var(--ct-noise-o, .035);
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 160px 160px;
  background-repeat: repeat;
  mix-blend-mode: overlay;
}


/* ═══════════════════════════════════════════════════════════
   6. MISCARE — plasa de siguranta
   ═══════════════════════════════════════════════════════════
   Niciun utilitar de mai sus nu se anima singur: aurele nu pulseaza,
   textura nu se deruleaza, filigranul nu se roteste. Blocul de mai jos
   exista ca oricine adauga ulterior o tranzitie pe clasele astea sa nu
   scape de regula.
   ─────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce){
  .ct-tex::before,
  .ct-glow::before,
  .ct-corner::before,
  .ct-corner--hover::before,
  .ct-frame::before,
  .ct-frame::after,
  .ct-mark,
  .ct-noise::after{
    animation: none;
    transition: none;
  }
}


/* ══════════════════════════════════════════════════════════════
   10-antet.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIS — antet, navigatie, cautare, mini-cos, meniu mobil (T2)

   Ultima modificare: 2026-08-30 02:05
   Modificari:
     2026-08-30 02:05 — X-ul meniului de pe telefon isi primeste inapoi pastila
                        verde (regula `#navbarToggle{background:none}`, selector de ID,
                        stergea pastila nucleului si ramanea cerneala inchisa pe fundal
                        inchis — contrast 1.01). Sub 380px se ascunde tot randul cu
                        orele, nu doar textul: ramanea iconita de ceas singura.
     2026-08-28 18:10 — Portare din C:\tmp\cetinis\design\parts\10-antet.css
                        pe contractele REALE ale platformei CloudShop.

   ───────────────────────────────────────────────────────────
   CE S-A SCHIMBAT FATA DE PROTOTIP (si de ce)

   1. `#siteNavbar` RAMANE — nu era scop artificial: id-ul exista in
      `templates/partials/header.php`. La fel `#navbarSearchBar`, `#miniCart`,
      `#navbarMenu`, `#navbarToggle`, `#navbarCartCloseMobile`.

   2. MENIUL SI HAMBURGERUL SE MUTA SUB <body> pe mobil (`main.js`, portal
      anti-iOS). Deci `#siteNavbar .navbar-menu` ar inceta sa se aplice fix
      cand meniul e deschis. Toate regulile de meniu sunt scopate pe
      `#navbarMenu` / `#navbarToggle`, nu pe antet. Aceeasi capcana la
      cautare (`#navbarSearchBar`) si la mini-cos (`#miniCart`).

   3. ANTETUL RAMANE `position: sticky` (contractul platformei, comandat de
      cele 4 setari `general.header_sticky_*`), NU `fixed` ca in prototip.
      Consecinta: banda utilitara NU se mai retrage la derulare — cu antet in
      flux, micsorarea lui ar impinge tot continutul in sus cu 36px, adica un
      salt vizibil. `.navbar-spacer` ramane 0, ca in nucleu.

   4. ICOANELE: spriteul `#ct-i-*` a disparut. Pe situl real sunt
      `<i class="icon-NUME">` din Lucide self-hostat. Regulile tintesc
      elementul (`.ct-topbar-item i`), nu clasa `.ct-ico`, ca sa nu depinda
      de fragmentul de icoane.

   5. X-UL PANOULUI MOBIL nu mai e `.ct-menu-close` scris de noi: platforma
      transforma deja hamburgerul in X de 44px pe culoarea marcii si il muta
      peste panou (`body.menu-open .navbar-menu-btn`, navbar.css). Aici il
      REASEZAM in coltul panoului lateral (panoul are 400px, nu tot ecranul).
      Un al doilea X ar fi cerut si JS propriu in sablon.

   6. LATIMEA randului o da `.container` din Bootstrap, ca in restul sitului.
      Prototipul folosea `--wrap`; aici nu se scrie `max-width`, altfel
      antetul s-ar termina pe alta linie verticala decat continutul paginii.

   7. Tokenii `--ct-*`, `--s*`, `--r*`, `--f-*` vin din `00-fundatie.css`.
      Culorile `--color-*` vin din Setari → Identitate. Nu se redefineste
      NICIUNA aici.
   ═══════════════════════════════════════════════════════════ */


/* ═══ 1. ANTETUL ═══════════════════════════════════════════════════════ */

#siteNavbar{
  --ct-topbar-h: 36px;
  background-color: color-mix(in srgb, var(--color-bg) 88%, transparent);
  border-bottom: 0;
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  backdrop-filter: blur(16px) saturate(1.15);
  transition: background-color var(--t) var(--ease),
              box-shadow var(--t) var(--ease);
}

/* firul de 1px care se stinge spre capete — semnatura liniara a marcii.
   Inlocuieste `border-bottom` plat din navbar.css (stins mai sus). */
#siteNavbar::after{
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  pointer-events: none;
  background-image: linear-gradient(90deg,
      transparent 0%,
      var(--ct-line-soft) 10%,
      color-mix(in srgb, var(--color-primary) 55%, var(--ct-line)) 50%,
      var(--ct-line-soft) 90%,
      transparent 100%);
}

/* la derulare antetul se inchide la culoare si capata umbra (clasa o pune main.js) */
#siteNavbar.navbar-scrolled{
  background-color: color-mix(in srgb, var(--color-bg) 97%, #000);
  box-shadow: 0 14px 34px -20px #000;
}

/* Cat e deschis un panou, antetul NU are voie sa poarte transform sau filtru:
   ambele l-ar face containing-block pentru copiii `position:fixed` (capcana
   iOS din contractul platformei). Pentru meniu regula exista deja in
   navbar.css; aici o completam pentru cos. */
body.cart-open #siteNavbar{
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  filter: none !important;
  will-change: auto !important;
}


/* ═══ 2. BANDA UTILITARA (ct-*, nu exista in nucleu) ═══════════════════
   Marcajul vine din `theme/templates/partials/header.php`. Textele: programul
   din Setari → Adresa, telefonul din Setari → Contact. Zero valoare scrisa
   in CSS sau in sablon. Structura: .ct-topbar > .container.ct-topbar-inner,
   ca sa cada pe ACEEASI linie verticala cu randul principal. */

#siteNavbar .ct-topbar{
  height: var(--ct-topbar-h);
  background-color: color-mix(in srgb, var(--color-bg) 55%, #000);
  border-bottom: 1px solid var(--ct-line-soft);
  overflow: hidden;
}

#siteNavbar .ct-topbar-inner{
  height: 100%;
  display: flex;
  align-items: center;
  gap: var(--s5);
  font-size: 12.5px;
  line-height: 1;
}

#siteNavbar .ct-topbar-item{
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin: 0;
  color: var(--ct-text-2);
  white-space: nowrap;
}
#siteNavbar .ct-topbar-item i{ font-size: 14px; color: var(--ct-text-3); line-height: 1; }

#siteNavbar .ct-topbar-hours{ color: var(--ct-text-2); font-variant-numeric: tabular-nums; }
#siteNavbar .ct-topbar-sep{ color: var(--ct-line-control); }
#siteNavbar .ct-topbar-zone{ margin-inline-start: auto; }

#siteNavbar .ct-topbar-phone{
  color: var(--ct-text-2);
  text-decoration: none;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  border-radius: var(--r-pill);
  padding: .3rem .55rem;
  margin-inline-end: -.55rem;
  position: relative;
  transition: color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
/* banda are doar 36px inaltime, deci tinta se intinde cu un strat invizibil,
   nu cu inaltimea benzii — 44x44 fara sa se miste nimic */
#siteNavbar .ct-topbar-phone::after{
  content: "";
  position: absolute;
  left: 0; right: 0;
  top: 50%;
  height: 44px;
  transform: translateY(-50%);
}
#siteNavbar .ct-topbar-phone:hover{
  color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
}
#siteNavbar .ct-topbar-phone:hover i{ color: var(--color-primary); }


/* ═══ 3. RANDUL PRINCIPAL ══════════════════════════════════════════════ */

#siteNavbar .navbar-inner{
  padding: .7rem 0;
  display: flex;
  align-items: center;
  gap: var(--s5);
}

#siteNavbar .navbar-logo{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  border-radius: var(--r-sm);
  min-height: var(--ct-tap);
}
#siteNavbar .navbar-logo img{
  display: block;
  height: var(--logo-height, 40px);
  width: auto;
  transition: transform var(--t) var(--ease), filter var(--t) var(--ease);
}
#siteNavbar .navbar-logo:hover img{
  transform: translateY(-1px);
  filter: drop-shadow(0 6px 14px color-mix(in srgb, var(--color-primary) 40%, transparent));
}


/* Marcajul meniului de pe telefon exista mereu in DOM; pe calculator nu se vede.
   Ascuns AICI, in afara media query-ului, ca sa nu depinda de ordinea regulilor. */
.ct-mm-cap,
.ct-mm-shop{ display: none; }

/* ═══ 4. MENIUL ════════════════════════════════════════════════════════
   Scopat pe `#navbarMenu`, NU pe `#siteNavbar .navbar-menu`: pe mobil
   `main.js` muta nodul sub <body>. */

#navbarMenu{
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s4);
}

#navbarMenu .navbar-nav{
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: .125rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

#navbarMenu .nav-item{ position: relative; }

#navbarMenu .nav-link{
  display: inline-flex;
  align-items: center;
  gap: .42rem;
  position: relative;
  min-height: 40px;
  padding: .5rem .78rem;
  font-family: var(--f-body);
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: .005em;
  color: var(--ct-text-2);
  text-decoration: none;
  border: 0;
  border-radius: var(--r-sm);
  background: none;
  cursor: pointer;
  transition: color var(--t-fast) var(--ease);
}
#navbarMenu .nav-link:hover{ color: var(--color-text); }

/* elementul activ: SUBLINIERE in primary, nu fundal plin */
#navbarMenu .nav-link.active{ color: var(--color-text); font-weight: 600; }
#navbarMenu .nav-link.active::after{
  content: '';
  display: block;
  position: absolute;
  left: .78rem; right: .78rem;
  bottom: 2px;
  height: 2px;
  border-radius: 2px;
  background-image: linear-gradient(90deg,
      color-mix(in srgb, var(--color-primary) 22%, transparent),
      var(--color-primary) 45%,
      color-mix(in srgb, var(--color-primary) 22%, transparent));
}

#navbarMenu .nav-link .nav-icon{
  font-size: 16px;
  color: var(--ct-text-3);
  transition: color var(--t-fast) var(--ease);
}
#navbarMenu .nav-link:hover .nav-icon,
#navbarMenu .nav-link.active .nav-icon{ color: var(--color-primary); }

#navbarMenu .nav-arrow{
  margin-inline-start: .1rem;
  transition: transform var(--t) var(--ease);
}
#navbarMenu .nav-item:hover .nav-arrow,
#navbarMenu .nav-item:focus-within .nav-arrow{ transform: rotate(180deg); }

/* ── dropdownul de categorii ────────────────────────────────────────── */
#navbarMenu .nav-dropdown{
  position: absolute;
  top: calc(100% + .7rem);
  left: 50%;
  transform: translateX(-50%) translateY(6px);
  min-width: 274px;
  padding: .5rem;
  background-color: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  box-shadow: 0 26px 50px -26px #000,
              0 0 0 1px color-mix(in srgb, var(--color-primary) 10%, transparent);
  opacity: 0;
  visibility: hidden;
  z-index: var(--z-dropdown, 100);
  transition: opacity var(--t) var(--ease), transform var(--t) var(--ease), visibility var(--t);
}
/* puntea invizibila dintre link si panou, ca mouse-ul sa nu cada intre ele */
#navbarMenu .nav-dropdown::before{
  content: '';
  position: absolute;
  top: -.7rem; left: 0; right: 0;
  height: .7rem;
}
#navbarMenu .nav-item:hover .nav-dropdown,
#navbarMenu .nav-item:focus-within .nav-dropdown{
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}

#navbarMenu .nav-dropdown-item{
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .58rem .75rem;
  min-height: 40px;
  font-size: 14px;
  font-weight: 500;
  color: var(--ct-text-2);
  text-decoration: none;
  border-radius: var(--r-sm);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
#navbarMenu .nav-dropdown-item:hover{
  background-color: var(--ct-surface-3);
  color: var(--color-text);
}
#navbarMenu .nav-dropdown-item .nav-dropdown-icon{
  font-size: 17px;
  width: 22px;
  color: var(--color-primary);
  text-align: center;
}
/* contorul de produse: nucleul il randeaza cu `style=` inline (culoare +
   margine), deci aici se regleaza doar ce NU e scris inline. */
#navbarMenu .nav-dropdown-item small{ font-variant-numeric: tabular-nums; }

/* ── butonul de telefon: la un restaurant cu livrare e actiunea principala.
      In nucleu e `display:none` implicit; temele care il vor il aprind. ── */
#navbarMenu .navbar-menu-call{
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-height: 40px;
  padding: .45rem .95rem;
  border-radius: var(--r-pill);
  text-decoration: none;
  font-weight: 700;
  font-size: 14px;
  color: var(--ct-ember);
  background-color: var(--ct-ember-soft);
  border: 1px solid color-mix(in srgb, var(--ct-ember) 34%, transparent);
  transition: background-color var(--t) var(--ease), color var(--t) var(--ease),
              box-shadow var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
#navbarMenu .navbar-menu-call:hover{
  background-color: var(--ct-ember);
  color: var(--color-on-accent);
  box-shadow: var(--ct-glow-ember);
}
#navbarMenu .navbar-menu-call:hover i{ color: var(--color-on-accent); }
#navbarMenu .navbar-menu-call:active{ transform: translateY(1px); }
#navbarMenu .navbar-menu-call-ico{ display: inline-flex; font-size: 15px; }
#navbarMenu .navbar-menu-call-num{ font-variant-numeric: tabular-nums; letter-spacing: .01em; }


/* ═══ 5. ICOANELE DIN DREAPTA ══════════════════════════════════════════ */

#siteNavbar .navbar-icons{
  display: flex;
  align-items: center;
  gap: .15rem;
  flex: 0 0 auto;
}

#siteNavbar .navbar-icon-btn{
  position: relative;
  width: 42px; height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: 0;
  border-radius: var(--r-sm);
  color: var(--ct-text-2);
  font-size: 19px;
  cursor: pointer;
  text-decoration: none;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
#siteNavbar .navbar-icon-btn:hover{
  background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
  color: var(--color-primary);
}

#siteNavbar .navbar-icon-btn .badge{
  position: absolute;
  top: 1px; right: 1px;
  min-width: 18px; height: 18px;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: var(--ct-ember);
  color: var(--color-on-accent);
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  border-radius: var(--r-pill);
  border: 2px solid var(--color-bg);
}
#siteNavbar .navbar-icon-btn .badge:empty{ display: none; }

#siteNavbar .navbar-icon-btn.navbar-cart-btn{
  background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
  color: var(--color-primary);
}
#siteNavbar .navbar-icon-btn.navbar-cart-btn:hover{
  background-color: var(--color-primary);
  color: var(--color-on-primary);
}

#siteNavbar .mini-cart-wrapper{ position: relative; }


/* ═══ 6. CAUTAREA (overlay) ════════════════════════════════════════════
   Se muta sub <body> cat e deschisa (main.js), deci se scopeaza pe id. */

#navbarSearchBar{
  padding-top: 16vh;
  background-color: color-mix(in srgb, var(--color-bg) 82%, transparent);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  transition: opacity var(--t) var(--ease), visibility var(--t);
}

#navbarSearchBar .navbar-search-inner{
  max-width: 680px;
  padding-inline: var(--gut);
  gap: .75rem;
  transform: translateY(-14px) scale(.98);
  transition: transform var(--t) var(--ease-out);
}
#navbarSearchBar.open .navbar-search-inner{ transform: none; }

#navbarSearchBar .navbar-search-input{
  min-height: 56px;
  padding: .95rem 1.35rem;
  font-family: var(--f-body);
  font-size: 17px;
  color: var(--color-text);
  background-color: var(--ct-surface-2);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  outline: none;
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
#navbarSearchBar .navbar-search-input::placeholder{ color: var(--ct-text-3); opacity: 1; }
#navbarSearchBar .navbar-search-input:focus{
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--color-primary) 18%, transparent);
}

#navbarSearchBar .navbar-search-close{
  width: var(--ct-tap); height: var(--ct-tap);
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: var(--color-text);
  background-color: var(--ct-surface-3);
  border: 1px solid var(--ct-line);
  border-radius: 50%;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), transform var(--t) var(--ease),
              color var(--t-fast) var(--ease);
}
#navbarSearchBar .navbar-search-close:hover{
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  transform: rotate(90deg);
}

#navbarSearchBar .ct-search-hint{
  margin-top: var(--s4);
  max-width: 680px;
  padding-inline: var(--gut);
  color: var(--ct-text-3);
  font-size: 13px;
  text-align: center;
}
#navbarSearchBar .ct-search-hint b{ color: var(--ct-text-2); font-weight: 600; }


/* ═══ 7. MINI-COSUL ════════════════════════════════════════════════════
   Pe mobil devine copil direct al <body> (regula iOS a platformei) — de
   aceea toate regulile lui se scriu pe #miniCart, nu sub #siteNavbar. */

#miniCart{
  position: absolute;
  top: calc(100% + .55rem);
  right: 0;
  width: 372px;
  max-height: min(72vh, 540px);
  display: flex;
  flex-direction: column;
  background-color: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  box-shadow: 0 30px 60px -28px #000,
              0 0 0 1px color-mix(in srgb, var(--color-primary) 10%, transparent);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  z-index: calc(var(--z-navbar, 1000) + 40);
  transition: opacity var(--t) var(--ease), transform var(--t) var(--ease), visibility var(--t);
}
#miniCart.open{ opacity: 1; visibility: visible; transform: none; }

#miniCart .mini-cart-header{
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: var(--s4) var(--s4) var(--s3);
  border-bottom: 1px solid var(--ct-line-soft);
}
#miniCart .mini-cart-header h4{
  margin: 0;
  font-family: var(--f-display);
  font-size: 18px;
  font-weight: 500;
  color: var(--color-text);
}
#miniCart .mini-cart-count{
  color: var(--ct-text-3);
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
#miniCart .mini-cart-close{
  margin-inline-start: auto;
  width: var(--ct-tap); height: var(--ct-tap);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  color: var(--ct-text-2);
  background-color: color-mix(in srgb, var(--color-text) 6%, transparent);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
#miniCart .mini-cart-close:hover{
  background-color: var(--color-primary);
  color: var(--color-on-primary);
}

#miniCart .mini-cart-items{
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--s2) var(--s3);
}

#miniCart .mini-cart-item{
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .6rem .5rem;
}
#miniCart .mini-cart-item + .mini-cart-item{ border-top: 1px solid var(--ct-line-soft); }
#miniCart .mini-cart-item-image{
  width: 56px; height: 56px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: var(--r-sm);
  background-image: radial-gradient(circle at 50% 55%,
      color-mix(in srgb, var(--ct-ember) 26%, transparent) 0%, transparent 70%);
}
#miniCart .mini-cart-item-image img{
  width: 56px; height: 56px;
  object-fit: contain;
  display: block;
}
#miniCart .mini-cart-item-details{ min-width: 0; flex: 1 1 auto; }
#miniCart .mini-cart-item-title{
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#miniCart .mini-cart-item-meta{
  margin-top: 2px;
  font-size: 12.5px;
  color: var(--ct-text-3);
  font-variant-numeric: tabular-nums;
}
#miniCart .mini-cart-item-price{ margin-top: 3px; color: var(--color-text); }
#miniCart .mini-cart-item-remove{
  width: 36px; height: 36px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  color: var(--ct-text-3);
  background: none;
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
#miniCart .mini-cart-item-remove:hover{
  color: var(--ct-danger);
  background-color: color-mix(in srgb, var(--ct-danger) 14%, transparent);
}

#miniCart .mini-cart-footer{
  padding: var(--s3) var(--s4) var(--s4);
  border-top: 1px solid var(--ct-line-soft);
  background-color: color-mix(in srgb, var(--color-bg) 45%, transparent);
  border-radius: 0 0 var(--r-lg) var(--r-lg);
}
#miniCart .mini-cart-shipping{
  font-size: 12.5px;
  color: var(--ct-text-2);
}
#miniCart .mini-cart-shipping strong{ color: var(--ct-ember); font-variant-numeric: tabular-nums; }
#miniCart .mini-cart-shipping.success{ color: var(--ct-ok); }
#miniCart .mini-cart-total{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s3);
  margin-bottom: .85rem;
  font-size: 13px;
  color: var(--ct-text-2);
}
#miniCart .mini-cart-total-amount{ color: var(--color-text); font-variant-numeric: tabular-nums; }
#miniCart .mini-cart-actions{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .55rem;
}
#miniCart .mini-cart-empty{
  padding: var(--s7) var(--s5);
  text-align: center;
  color: var(--ct-text-2);
}
#miniCart .mini-cart-empty-icon{
  font-size: 34px;
  color: var(--ct-line-control);
  margin-bottom: var(--s3);
}
#miniCart .mini-cart-empty p{ margin: 0 0 var(--s4); font-size: 14px; }

/* fundalul mini-cosului — nucleul il creeaza din JS, direct pe <body>
   (`.mini-cart-overlay`), deci nu are id propriu. */
.mini-cart-overlay{
  background-color: color-mix(in srgb, var(--color-bg) 72%, transparent);
}


/* ═══ 8. MOBIL ═════════════════════════════════════════════════════════ */

@media (max-width: 991.98px){

  #siteNavbar .navbar-inner{ gap: .6rem; padding: .6rem 0; }
  #siteNavbar .navbar-logo img{ height: var(--logo-height-mobile, 34px); }
  #siteNavbar .navbar-icons{ margin-inline-start: auto; gap: 0; }
  #siteNavbar .navbar-icon-btn{ width: var(--ct-tap); height: var(--ct-tap); }

  /* hamburgerul (nucleul il porteaza sub <body> cat e meniul deschis) */
  #navbarToggle{
    width: var(--ct-tap); height: var(--ct-tap);
    flex: 0 0 auto;
    font-size: 21px;
    color: var(--ct-text-2);
    background: none;
    border: 0;
    border-radius: var(--r-sm);
  }
  #navbarToggle:hover{ background: none; color: var(--color-primary); }

  /* PANOUL PE TOT ECRANUL (cerere user 2026-08-30). Era o fasie laterala de
     min(88vw, 400px), care lasa o dunga din pagina la dreapta si arata a sertar
     de administrare, nu a meniu de restaurant. Acum acopera tot: marca sus,
     traseul principal, apoi meniul propriu-zis cu categoriile pe doua coloane. */
  #navbarMenu{
    position: fixed;
    inset: 0;
    width: 100%;
    z-index: calc(var(--z-navbar, 1000) + 50);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    padding: calc(env(safe-area-inset-top, 0px) + var(--s5)) 0
             calc(env(safe-area-inset-bottom, 0px) + var(--s6));
    background-color: var(--color-bg);
    border-right: 0;
    box-shadow: none;
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateX(-100%);
    visibility: hidden;
    transition: transform var(--t-slow) var(--ease-out), visibility var(--t-slow);
  }
  #navbarMenu.open{ transform: none; visibility: visible; }

  /* X-UL PANOULUI. De cand panoul e pe TOT ecranul, X-ul se intoarce in coltul
     lui dreapta-sus — exact unde il pune nucleul. Ramane scris aici fiindca tot
     noi trebuie sa-i redam pastila (vezi mai jos) si sa-l coboram sub bara de
     stare a telefonului. `!important` bate `!important`-ul din navbar.css. */
  html body.menu-open #navbarToggle{
    top: calc(env(safe-area-inset-top, 0px) + 12px) !important;
    right: 12px !important;
    left: auto !important;
    /* PASTILA, nu doar cerneala. Nucleul o pune pe `body.menu-open .navbar-menu-btn`
       (0,2,0), dar regula noastra `#navbarToggle{background:none}` de mai jos e
       selector de ID (1,0,0) si o sterge — ramanea cerneala inchisa pe fundalul
       inchis al panoului, contrast 1.01:1, adica X-ul devenea invizibil
       (masurat 30 aug). Cu pastila la loc: 9.7:1. */
    background: var(--color-primary) !important;
    color: var(--color-on-primary) !important;
    border-radius: 12px;
    box-shadow: 0 8px 18px color-mix(in srgb, var(--color-primary) 40%, transparent);
  }

  #navbarMenu .navbar-nav{
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
    padding: var(--s3) var(--s4);
  }
  #navbarMenu .nav-item{ width: 100%; }
  #navbarMenu .nav-link{
    width: 100%;
    min-height: var(--ct-tap);
    padding: .9rem .25rem;
    font-size: 16px;
    border-radius: 0;
    border-bottom: 1px solid var(--ct-line-soft);
  }
  #navbarMenu .nav-link.active::after{
    left: -.85rem; right: auto;
    top: 50%; bottom: auto;
    width: 3px; height: 22px;
    transform: translateY(-50%);
    background-image: none;
    background-color: var(--color-primary);
  }
  #navbarMenu .nav-link .nav-arrow{ margin-inline-start: auto; }

  #navbarMenu .nav-dropdown{
    position: static;
    transform: none;
    min-width: 0;
    padding: .25rem 0 .5rem .9rem;
    background: none;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    opacity: 1;
    visibility: visible;
  }
  #navbarMenu .nav-dropdown::before{ display: none; }
  #navbarMenu .nav-dropdown-item{ min-height: var(--ct-tap); }

  #navbarMenu .navbar-menu-call{
    margin: var(--s5) var(--s4) 0;
    min-height: 52px;
    justify-content: center;
    font-size: 15.5px;
  }

  /* ═══ MENIUL DE PE TELEFON — capul cu marca ══════════════════════════
     Panoul acopera tot ecranul, deci acopera si antetul cu logoul. Fara
     randul asta omul ramane intr-un ecran fara niciun semn unde se afla. */
  .ct-mm-cap{
    display: flex !important;
    flex-direction: column;
    gap: 4px;
    padding: 0 var(--s4) var(--s5);
    margin-bottom: var(--s4);
    border-bottom: 1px solid var(--ct-line-soft);
  }
  .ct-mm-logo{ height: 34px; width: auto; align-self: flex-start; }
  .ct-mm-tag{
    font-family: var(--f-body);
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ct-text-3);
  }

  /* ═══ „Vezi tot meniul" + CATEGORIILE PE DOUA COLOANE ═════════════════ */
  .ct-mm-shop{ display: block !important; padding: var(--s5) var(--s4) 0; }

  .ct-mm-all{
    display: flex;
    align-items: center;
    gap: var(--s4);
    min-height: 62px;
    padding: var(--s3) var(--s4);
    border-radius: var(--r);
    border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
    background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
    color: var(--color-text);
    text-decoration: none;
    transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease);
  }
  .ct-mm-all:active{ background-color: color-mix(in srgb, var(--color-primary) 18%, transparent); }
  .ct-mm-all-ico{
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 40px; height: 40px;
    border-radius: var(--r-sm);
    background-color: var(--color-primary);
    color: var(--color-on-primary);
    font-size: 19px;
  }
  .ct-mm-all-txt{ display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .ct-mm-all-txt strong{
    font-family: var(--f-display);
    font-size: 17px;
    font-weight: 500;
    color: var(--color-text);
  }
  .ct-mm-all-txt small{ font-size: 12.5px; color: var(--ct-text-3); }
  .ct-mm-all-go{ margin-inline-start: auto; font-size: 18px; color: var(--color-primary); }

  .ct-mm-title{
    margin: var(--s5) 0 var(--s3);
    font-family: var(--f-body);
    font-size: var(--fs-label);
    font-weight: 600;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--ct-text-3);
  }

  /* DOUA COLOANE — ca la La Pascan. `minmax(0, 1fr)`, nu `1fr`: fara el, un
     nume lung de categorie umfla pista si iese din ecran. */
  .ct-mm-grid{
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s3);
  }
  .ct-mm-cat{
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 84px;
    padding: var(--s4) var(--s3);
    border-radius: var(--r);
    border: 1px solid var(--ct-line);
    background-color: var(--ct-surface-2);
    color: var(--color-text);
    text-decoration: none;
    transition: border-color var(--t) var(--ease), background-color var(--t) var(--ease);
  }
  .ct-mm-cat:active{
    border-color: color-mix(in srgb, var(--color-primary) 45%, transparent);
    background-color: color-mix(in srgb, var(--color-primary) 8%, var(--ct-surface-2));
  }
  .ct-mm-cat-ico{ font-size: 21px; color: var(--color-primary); line-height: 1; }
  .ct-mm-cat-name{
    font-family: var(--f-body);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.25;
    overflow-wrap: break-word;
  }
  .ct-mm-cat-n{
    position: absolute;
    top: var(--s3);
    right: var(--s3);
    min-width: 22px;
    padding: 1px 6px;
    border-radius: var(--r-pill);
    background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
    color: var(--color-primary);
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
  }

  /* sub 360px numele lungi n-ar mai incapea pe doua coloane */
  @media (max-width: 359.98px){
    .ct-mm-grid{ grid-template-columns: minmax(0, 1fr); }
    .ct-mm-cat{ min-height: 0; flex-direction: row; align-items: center; gap: var(--s3); }
    .ct-mm-cat-n{ position: static; margin-inline-start: auto; }
  }

  /* mini-cosul devine panou pe tot ecranul (contractul platformei) */
  #miniCart{
    position: fixed;
    inset: 0;
    width: auto;
    max-height: none;
    border: 0;
    transform: translateY(2%);
    z-index: calc(var(--z-navbar, 1000) + 55);
  }
  #miniCart .mini-cart-header{ padding: var(--s4); }
  #miniCart .mini-cart-header h4{ font-size: 20px; }
  #miniCart .mini-cart-footer{
    border-radius: 0;
    padding-bottom: max(var(--s5), env(safe-area-inset-bottom));
  }

  /* X-ul care ia locul hamburgerului cat e cosul deschis */
  #navbarCartCloseMobile{
    width: var(--ct-tap); height: var(--ct-tap);
    font-size: 24px;
    color: var(--color-text);
    background: none;
    border: 0;
    border-radius: var(--r-sm);
  }
}

@media (max-width: 767.98px){
  #siteNavbar .ct-topbar-zone{ display: none; }
  #siteNavbar .ct-topbar-inner{ gap: var(--s4); justify-content: space-between; }
  #siteNavbar .ct-topbar-phone{ margin-inline-start: 0; }
  #miniCart .mini-cart-actions{ grid-template-columns: 1fr; }
  #navbarSearchBar{ padding-top: 10vh; }
  /* 16px = pragul sub care iOS mareste singur pagina la focus */
  #navbarSearchBar .navbar-search-input{ font-size: 16px; }
}

/* Sub 380px orele nu mai incap. Se ascunde TOT randul, nu doar textul: pana acum
   ramanea iconita de ceas singura in stanga, fara nimic langa ea (masurat 30 aug). */
@media (max-width: 380px){
  #siteNavbar .ct-topbar-hours,
  #siteNavbar .ct-topbar-sep,
  #siteNavbar .ct-topbar-item:has(.ct-topbar-hours){ display: none; }
}


/* ═══ 9. MISCAREA — se opreste la cerere ══════════════════════════════ */
@media (prefers-reduced-motion: reduce){
  #siteNavbar,
  #navbarMenu,
  #navbarMenu .nav-dropdown,
  #siteNavbar .navbar-logo img,
  #miniCart,
  #navbarSearchBar,
  #navbarSearchBar .navbar-search-inner{ transition: none !important; }
  #navbarSearchBar .navbar-search-close:hover{ transform: none; }
}


/* ══════════════════════════════════════════════════════════════
   12-insigna-delivery.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIS — insigna „Meniu exclusiv delivery" din antet + butonul
   „Meniu" (fost „Filtre") de pe /shop si /categorie

   Ultima modificare: 2026-09-15 21:40
   Modificari:
     2026-09-15 21:40 — Creare: insigna de langa logo (4 trepte de latime,
                        masurate pe antetul real) + iconita butonului „Meniu".

   ───────────────────────────────────────────────────────────
   DE UNDE VINE MARCAJUL
   `theme/templates/partials/header.php`, blocul [CETINIS] (5):
     .ct-dlv > .ct-dlv-ico > i.icon-truck
             > .ct-dlv-txt > .ct-dlv-a („Meniu exclusiv") + .ct-dlv-b („delivery")
   Textul vine din `general.header_delivery_badge`; impartirea pe doua
   bucati o face PHP-ul (echilibrat pe numar de litere), ca pe telefon sa
   poata sta pe doua randuri fara sa depinda de latimea fontului.

   SPATIUL MASURAT (15 sep 2026, antetul viu, fara insigna):
     360px, vizitator  →  ~84px liberi intre logo si iconite
     360px, client logat (apare inima de favorite, +44px) → ~40px
     1000px            →  navigatia mai are ~79px de rezerva
     1200px+           →  peste 250px de rezerva
   De aici cele patru trepte de mai jos. Iconitele raman de 44px — nu se
   micsoreaza tinte de atingere ca sa incapa o insigna.

   Tokenii `--ct-*`, `--s*`, `--r*`, `--t*` vin din `00-fundatie.css`;
   culorile din Setari → Identitate. Zero hex nou.
   ═══════════════════════════════════════════════════════════ */


/* ═══ 1. INSIGNA — calculator lat (≥1200px): un singur rand ════════════ */

#siteNavbar .ct-dlv{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  margin: 0;
  padding: .3rem .9rem .3rem .3rem;
  border-radius: var(--r-pill);
  border: 1px solid color-mix(in srgb, var(--color-primary) 40%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 9%, transparent);
  background-image: linear-gradient(120deg,
      color-mix(in srgb, var(--color-primary) 16%, transparent) 0%,
      transparent 70%);
  box-shadow: inset 0 1px 0 rgba(var(--ct-lift-rgb), .06);
  color: var(--color-text);
  font-family: var(--f-body);
  white-space: nowrap;
  cursor: default;
  user-select: none;
}

/* pastila cu iconita: plina, pe culoarea marcii */
#siteNavbar .ct-dlv-ico{
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border-radius: 50%;
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  font-size: 15px;
  line-height: 1;
  box-shadow: var(--ct-glow-leaf);
}
#siteNavbar .ct-dlv-ico i{ line-height: 1; }

#siteNavbar .ct-dlv-txt{
  display: inline-flex;
  align-items: baseline;
  gap: .3em;
  font-size: 13px;
  line-height: 1.15;
  letter-spacing: .005em;
}
#siteNavbar .ct-dlv-a{ color: var(--ct-text-2); font-weight: 600; }
#siteNavbar .ct-dlv-b{ color: var(--color-text); font-weight: 800; }


/* ═══ 2. PULSUL — foarte discret, doar daca omul nu a cerut miscare redusa ═
   Un inel care se desprinde din pastila la ~3,6s. Scris DOAR sub
   `no-preference`, deci la `reduce` nici nu exista animatia. */
@media (prefers-reduced-motion: no-preference){
  #siteNavbar .ct-dlv-ico::after{
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid var(--color-primary);
    opacity: 0;
    pointer-events: none;
    animation: ctDlvRing 3.6s var(--ease-out) 1.2s infinite;
  }
  @keyframes ctDlvRing{
    0%        { opacity: .55; transform: scale(1); }
    45%, 100% { opacity: 0;   transform: scale(1.75); }
  }
}


/* ═══ 3. CALCULATOR INGUST (992–1199px): doua randuri + navigatie stransa ══
   Intre 992 si 1199px `.container` are MEREU 960px, deci masuratoarea de la
   1000px e valabila pentru tot intervalul. Acolo navigatia mai avea ~79px
   liberi, iar insigna pe doua randuri are ~131px: butonul de telefon se rupea
   pe doua randuri („0751 420 / 234", masurat). Se recupereaza diferenta din
   golurile randului si din spatierea interioara a linkurilor (nu din textul
   lor), iar butonul de telefon nu mai are voie sa se rupa. */
@media (min-width: 992px) and (max-width: 1199.98px){
  #siteNavbar .ct-dlv{ padding: .22rem .7rem .22rem .22rem; gap: .45rem; }
  #siteNavbar .ct-dlv-ico{ width: 26px; height: 26px; font-size: 13px; }
  #siteNavbar .ct-dlv-txt{
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    font-size: 11.5px;
    line-height: 1.12;
  }
  #siteNavbar .navbar-inner{ gap: var(--s3); }
  #navbarMenu{ gap: var(--s2); }
  #navbarMenu .nav-link{ padding-inline: .5rem; }
  #navbarMenu .nav-link.active::after{ left: .5rem; right: .5rem; }
  #navbarMenu .navbar-menu-call{ padding-inline: .7rem; white-space: nowrap; }
}


/* ═══ 4. TELEFON / TABLETA (<992px): doua randuri, compacta ════════════ */
@media (max-width: 991.98px){
  #siteNavbar .ct-dlv{
    padding: .2rem .55rem .2rem .2rem;
    gap: .35rem;
    max-height: 40px;
  }
  #siteNavbar .ct-dlv-ico{ width: 24px; height: 24px; font-size: 12.5px; box-shadow: none; }
  #siteNavbar .ct-dlv-txt{
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    font-size: 11px;
    line-height: 1.1;
    letter-spacing: 0;
  }

  /* Randul de pe telefon are `justify-content: space-between` si iconitele cu
     margini `auto` (navbar.css + mobile-wow.css). Insigna se lipeste de logo,
     iconitele raman centrate in ce ramane. */
  #siteNavbar .ct-dlv{ margin-inline-start: -.1rem; }
}

/* LATIMI MASURATE ale insignei pe telefon (15 sep, Manrope):
     doua randuri + pastila = 121px · trei randuri + pastila = 74px · doar pastila = 30px
   Loc liber langa logo = latimea ecranului − 276px (vizitator) sau − 320px (logat),
   plus golul de 6px al insignei. De aici pragurile:
     vizitator: doua randuri de la 408px, trei randuri 356–407px, doar pastila sub 356px
     logat:     doua randuri de la 480px, trei randuri 420–479px, doar pastila sub 420px
   (la 390px, logat, trei randuri ieseau cu 14px in afara ecranului — masurat). */

/* Telefon ingust, vizitator (<408px): TREI randuri scurte
   („Meniu / exclusiv / delivery"). `min-content` rupe la fiecare spatiu, deci
   latimea = cel mai lung cuvant, nu tot textul. */
@media (max-width: 407.98px){
  #siteNavbar .ct-dlv{ padding: .18rem .45rem .18rem .18rem; gap: .3rem; border-radius: 14px; }
  #siteNavbar .ct-dlv-ico{ width: 20px; height: 20px; font-size: 11px; }
  #siteNavbar .ct-dlv-txt{
    display: block;
    width: min-content;
    white-space: normal;
    font-size: 9.5px;
    line-height: 1.08;
  }
  #siteNavbar .ct-dlv-a,
  #siteNavbar .ct-dlv-b{ display: inline; }
}

/* Client LOGAT: inima de favorite ocupa inca 44px. Trei randuri sub 480px, iar
   sub 420px ramane doar pastila cu iconita — textul nu dispare, trece in
   stratul pentru cititoarele de ecran. */
@media (max-width: 479.98px){
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv{
    padding: .18rem .45rem .18rem .18rem; gap: .3rem; border-radius: 14px;
  }
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-ico{
    width: 20px; height: 20px; font-size: 11px;
  }
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-txt{
    display: block;
    width: min-content;
    white-space: normal;
    font-size: 9.5px;
    line-height: 1.08;
  }
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-a,
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-b{ display: inline; }
}
@media (max-width: 419.98px){
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv{
    padding: 0; border: 0; background: none; box-shadow: none;
  }
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-ico{
    width: 30px; height: 30px; font-size: 14px;
  }
  #siteNavbar .navbar-inner:has(.navbar-favorites-btn.is-logged) .ct-dlv-txt{
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
  }
}

/* Sub 356px nici vizitatorul nu mai are loc de text: doar pastila. */
@media (max-width: 355.98px){
  #siteNavbar .ct-dlv{ padding: 0; border: 0; background: none; box-shadow: none; }
  #siteNavbar .ct-dlv-txt{
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
  }
}


/* ═══ 5. BUTONUL „MENIU" de pe /shop si /categorie ══════════════════════
   Textul, `aria-label`-ul si iconita se schimba din `header.php` (blocul
   [CETINIS] (6)), cat se construieste pagina — deci nu apare niciodata
   „Filtre" pe ecran. Aici doar marimea iconitei Lucide care inlocuieste
   `fa-sliders` (Font Awesome si Lucide au alta linie de baza). */
.shop-filter-toggle .ct-menu-ico{
  font-size: 17px;
  line-height: 1;
  color: var(--color-primary);
}
.shop-filter-toggle:hover .ct-menu-ico{ color: currentColor; }


/* ══════════════════════════════════════════════════════════════
   20-acasa-hero.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — prima pagină: sliderul premium (T3)
   Ultima modificare: 2026-09-21 15:20
   Modificari:
     2026-09-21 15:20 — Incadrarea pozei aleasa din admin (fit_desktop / fit_mobile)
                        castiga: nucleul emite reguli `#heroSlider #hps-<id>` (2 id-uri),
                        peste ale noastre. Respiratia (scale) se opreste cand slide-ul
                        nu e `cover` (data-fit-d / data-fit-m). Scos tratamentul
                        „pizza decupata" de pe :nth-of-type(2) — acum ar fi nimerit o
                        fotografie intreaga.
     2026-08-28 18:20 — Portare din propunere (parts/20-acasa-hero.css):
                        scoparea de prototip devine `#heroSlider` (id-ul REAL
                        emis de home.php); `#hps-2` devine :nth-of-type(2)
                        fiindca id-ul slide-ului e `hps-<id din baza>`;
                        `.ct-hero-trust` scos (INTEGRARE §13 — ramane
                        `.benefits-bar`); banca de imagini `data-ct-bg`
                        inlocuita de `<style>`-ul per slide din home.php.

   ─── DE CE `#heroSlider` RAMANE ────────────────────────────────
   Nu e o ramasita de prototip: `templates/pages/home.php` emite
   `<section class="hero-section" id="heroSlider">`. Scopul e si NECESAR:
   home.php injecteaza un bloc <style> propriu, IN CORPUL paginii, deci
   dupa theme/style.css. La specificitate egala ar castiga el. Regulile de
   mai jos sunt (1,x,y) si trec peste (0,2,0)-ul lui, fara `!important`.

   ─── INCADRAREA POZEI (din admin, 21 sep 2026) ──────────────────
   Proprietarul alege per slide, separat desktop/mobil: cover (implicit) |
   contain | natural. Nucleul emite regulile pe `#heroSlider #hps-<id>` —
   (2,x,y), deci bat tot ce e aici. Cand slide-ul NU e `cover`, poarta
   `data-fit-d` / `data-fit-m`; pe ele oprim respiratia (un zoom peste o poza
   „intreaga" i-ar taia din nou marginile).
   Tratamentul „pizza decupata" de pe slide-ul 2 a fost scos: nu mai exista
   poza decupata, iar :nth-of-type(2) nimerea o fotografie intreaga.
   ═══════════════════════════════════════════════════════════ */


/* ─────────────────────────────────────────────────────────────
   1. Scheletul
   ───────────────────────────────────────────────────────────── */
#heroSlider{
  position: relative;
  overflow: hidden;
  background: var(--color-bg);
  /* culoarea valului de peste fotografie: fundalul paginii, cu alfa */
  --ct-val-98: color-mix(in srgb, var(--color-bg) 98%, transparent);
  --ct-val-92: color-mix(in srgb, var(--color-bg) 92%, transparent);
  --ct-val-62: color-mix(in srgb, var(--color-bg) 62%, transparent);
  --ct-val-18: color-mix(in srgb, var(--color-bg) 18%, transparent);
  --ct-val-0:  color-mix(in srgb, var(--color-bg)  0%, transparent);
}

#heroSlider .hero-slides{
  position: relative;
  height: auto;
  min-height: 550px;
  background: var(--color-bg);
}

#heroSlider .hero-premium-slide{
  position: absolute;
  inset: 0;
  opacity: 0;
  /* nucleul nu pune `visibility`, deci butonul din slide-urile invizibile
     ramane in ordinea de tabulare (bugul B-4 din PORTARE). Il inchidem local. */
  visibility: hidden;
  transition: opacity .8s ease, visibility 0s linear .8s;
  z-index: 0;
  display: flex;
  align-items: center;
  min-height: 550px;
  background-color: var(--color-bg);
}
#heroSlider .hero-premium-slide.active{
  opacity: 1;
  visibility: visible;
  z-index: 1;
  transition: opacity .8s ease, visibility 0s linear 0s;
}


/* ─────────────────────────────────────────────────────────────
   2. Fotografia — ramane CURATA. Nicio tenta pe ea.
      `background-image` vine din <style>-ul per slide al nucleului.
   ───────────────────────────────────────────────────────────── */
#heroSlider .hps-bg{
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center right;
  background-repeat: no-repeat;
  z-index: 1;
}

/* respiratia lenta a cadrului — fotografia traieste, nu pulseaza */
#heroSlider .hero-premium-slide.active .hps-bg{
  animation: ctHeroRespira 22s ease-in-out infinite alternate;
}
@keyframes ctHeroRespira{
  from{ transform: scale(1); }
  to  { transform: scale(1.045); }
}
/* poza aleasa „intreaga" (contain / natural) nu respira — zoom-ul i-ar taia marginile */
@media (min-width: 768px){
  #heroSlider .hero-premium-slide[data-fit-d].active .hps-bg{ animation: none; transform: none; }
}
@media (max-width: 767.98px){
  #heroSlider .hero-premium-slide[data-fit-m].active .hps-bg{ animation: none; transform: none; }
}


/* ─────────────────────────────────────────────────────────────
   3. `.hps-overlay` — SINGURUL strat peste fotografie (BRIEF §2,
      exceptia explicita) si numai ca gradient dinspre stanga.
   ───────────────────────────────────────────────────────────── */
#heroSlider .hps-overlay{
  position: relative;
  z-index: 2;
  width: 100%;
  align-self: stretch;
  display: flex;
  align-items: center;
  background: linear-gradient(90deg,
      var(--ct-val-98)  0%,
      var(--ct-val-92) 34%,
      var(--ct-val-62) 54%,
      var(--ct-val-18) 74%,
      var(--ct-val-0) 100%);
}
/* firul de brand care inchide banda jos — delimitare prin identitate,
   nu prin linie gri (BRIEF §2) */
#heroSlider .hero-slides::after{
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  z-index: 4;
  background: linear-gradient(90deg,
      transparent 0%,
      color-mix(in srgb, var(--color-primary) 55%, transparent) 50%,
      transparent 100%);
}


/* ─────────────────────────────────────────────────────────────
   4. Continutul — dimensiunile contractului, tipografia Cetinis
   ───────────────────────────────────────────────────────────── */
#heroSlider .hps-content{
  max-width: 550px;
  padding: 3rem 0;
}

#heroSlider .hps-title-1{
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(2.1rem, 3.6vw, 2.8rem);
  line-height: 1.12;
  letter-spacing: -.01em;
  margin: 0 0 .5rem;
  font-variation-settings: "SOFT" 20, "WONK" 0;
  text-shadow: 0 2px 26px color-mix(in srgb, var(--color-bg) 80%, transparent);
  text-wrap: balance;
}

#heroSlider .hps-title-2{
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  line-height: 1.3;
  margin: 0 0 1.5rem;
}
#heroSlider .hps-title-2 .hps-highlight{
  display: inline-block;
  padding: .1em .45em;
  border-radius: var(--r-sm);
  font-variant-numeric: tabular-nums;
  box-shadow: var(--ct-glow-ember, 0 10px 30px -12px rgba(232,164,76,.55));
}
#heroSlider .hps-title-2 .hps-highlight-plain{
  padding: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  text-shadow: 0 2px 26px color-mix(in srgb, var(--color-bg) 80%, transparent);
}

#heroSlider .hps-subtitle{
  font-family: var(--f-body);
  font-size: 1.05rem;
  line-height: 1.6;
  margin: 0 0 2rem;
  max-width: 400px;
  text-shadow: 0 1px 18px color-mix(in srgb, var(--color-bg) 80%, transparent);
}

#heroSlider .btn-hps{
  border: none;
  border-radius: var(--r-pill);
  padding: 14px 30px;
  min-height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-body);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-decoration: none;
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease),
              background-color var(--t) var(--ease), color var(--t) var(--ease);
  box-shadow: var(--ct-glow-leaf, 0 10px 30px -14px rgba(111,207,137,.45));
}
#heroSlider .btn-hps:hover{ transform: translateY(-2px); }


/* ─────────────────────────────────────────────────────────────
   6. Buline si sageti
   ───────────────────────────────────────────────────────────── */
#heroSlider .hero-dots{
  position: absolute;
  bottom: 1.75rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: .625rem;
  z-index: 5;
}
#heroSlider .hero-dot{
  position: relative;
  width: 10px;
  height: 10px;
  border-radius: var(--r-pill);
  border: 2px solid color-mix(in srgb, var(--color-text) 55%, transparent);
  background: transparent;
  cursor: pointer;
  padding: 0;
  transition: all var(--t) var(--ease);
}
/* tinta de atingere reala, 44×44, fara sa creasca bulina */
#heroSlider .hero-dot::after{
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
}
#heroSlider .hero-dot:hover{ border-color: var(--color-primary); }
#heroSlider .hero-dot.active{
  background: var(--color-primary);
  border-color: var(--color-primary);
  transform: scale(1.35);
}

#heroSlider .hero-arrow{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--color-bg) 62%, transparent);
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  border: 1px solid color-mix(in srgb, var(--color-primary) 34%, transparent);
  color: var(--color-text);
  font-size: 1.1rem;
  cursor: pointer;
  z-index: 5;
  transition: all var(--t) var(--ease);
  display: flex;
  align-items: center;
  justify-content: center;
}
#heroSlider .hero-arrow:hover{
  background: color-mix(in srgb, var(--color-primary) 22%, var(--color-bg));
  border-color: var(--color-primary);
  transform: translateY(-50%) scale(1.06);
}
#heroSlider .hero-arrow-prev{ left: 1.5rem; }
#heroSlider .hero-arrow-next{ right: 1.5rem; }


/* ─────────────────────────────────────────────────────────────
   6.b Tableta (768–1199) — continutul de 550px ocupa aproape toata
       latimea, deci valul trebuie sa tina mai mult ca textul sa ramana
       peste 4.5:1. Sagetile s-ar aseza peste buton ⇒ stinse pana la 992.
   ───────────────────────────────────────────────────────────── */
@media (min-width: 768px) and (max-width: 1199.98px){
  #heroSlider .hps-overlay{
    background: linear-gradient(90deg,
        var(--ct-val-98)  0%,
        var(--ct-val-92) 52%,
        var(--ct-val-62) 72%,
        var(--ct-val-18) 88%,
        var(--ct-val-0) 100%);
  }
}
@media (max-width: 991.98px){
  #heroSlider .hero-arrow{ display: none; }
}


/* Animatia de intrare a slide-ului (`data-anim-in` + `--hs-anim-dur`) e deja
   in `assets/css/homepage.css`, pe `.hps-content` — nu se rescrie aici. */


/* ─────────────────────────────────────────────────────────────
   7. Mobil — contractul: continut SUS, fotografia JOS
   ───────────────────────────────────────────────────────────── */
@media (max-width: 767.98px){
  #heroSlider .hero-slides{ min-height: 92vh; }
  #heroSlider .hero-premium-slide{
    min-height: 92vh;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
  }
  #heroSlider .hps-bg{ background-position: center bottom; }
  #heroSlider .hps-overlay{
    align-self: auto;
    flex: 1 1 auto;
    align-items: flex-start;
    /* pe mobil valul cade de sus in jos: textul respira, mancarea ramane curata */
    background: linear-gradient(180deg,
        var(--ct-val-98)  0%,
        var(--ct-val-92) 26%,
        var(--ct-val-62) 44%,
        var(--ct-val-18) 60%,
        var(--ct-val-0)  74%);
  }
  #heroSlider .hps-content{
    max-width: 100%;
    padding: 1.5rem 0 .5rem;
    text-align: left;
  }
  #heroSlider .hps-title-1{ font-size: 1.72rem; line-height: 1.14; margin-bottom: .4rem; font-weight: 600; }
  #heroSlider .hps-title-2{ font-size: 1.25rem; line-height: 1.2;  margin-bottom: .6rem; font-weight: 600; }
  #heroSlider .hps-subtitle{ font-size: .95rem; line-height: 1.4;  margin-bottom: .9rem; max-width: 34ch; }
  #heroSlider .btn-hps{ padding: 12px 24px; font-size: 13px; border-radius: var(--r-pill); }

  #heroSlider .hero-arrow{ display: none; }
  #heroSlider .hero-dots{ bottom: 1rem; }
  #heroSlider .hero-dot{ width: 9px; height: 9px; }
}


/* ─────────────────────────────────────────────────────────────
   8. Miscare redusa — se opreste TOT (BRIEF §8)
   ───────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  #heroSlider .hero-premium-slide,
  #heroSlider .hero-premium-slide.active,
  #heroSlider .hero-premium-slide.active .hps-bg,
  #heroSlider .hero-slide.active[data-anim-in] .hps-content{
    animation: none !important;
    transition: none !important;
  }
  #heroSlider .btn-hps:hover{ transform: none; }
}


/* ══════════════════════════════════════════════════════════════
   21-acasa-sectiuni.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — antete de sectiune, beneficii, categorii, cardul de
             produs (T3)
   Ultima modificare: 2026-08-29 12:40
   Modificari:
     2026-08-29 12:40 — Bara de beneficii nu mai iese din coloana ei pe
                        telefon: latimea minima de 200px pusa de nucleu
                        (`mobile-wow.css`) taia un cuvant din subtext la 360.
     2026-08-28 18:35 — Portare din propunere (parts/21-acasa-sectiuni.css):
                        scoparea `.ct-b2` scoasa; grila Bootstrap emulata
                        stearsa (layout.php incarca bootstrap.min.css real);
                        cardul de produs devine GLOBAL (acelasi component pe
                        acasa, /shop, categorie, cautare, produse similare);
                        `.ct-ph` / `.ct-card-desc` / `.ct-card-float` scoase —
                        cer structura noua in `partials/product-card.php`
                        (vezi raport: optiunile O-1, O-2 din PORTARE §3).

   ─── DOUA CAPCANE DE SPECIFICITATE, AMBELE MASURATE ────────────
   1. `templates/pages/home.php` injecteaza blocuri <style> IN CORPUL
      paginii, deci DUPA theme/style.css. La specificitate egala castiga
      el. De aceea regulile pentru categoriile de pe prima pagina sunt
      scrise `body .section-categories …` (0,2,1) — trec peste (0,2,0)-ul
      lui fara `!important`.
   2. Cardul „poza pe tot cardul" din home.php foloseste `!important` pe
      opt declaratii (`border`, `padding`, `background`, `border-radius`,
      `color`, `display`). Acolo unde designul cere altceva, raspundem tot
      cu `!important` — se vede clar unde si de ce.
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. ANTETUL DE SECTIUNE (.section-header / .section-badge /
      .section-title / .section-subtitle)
      Se scriu O SINGURA DATA aici, pentru toate sectiunile.
   ═══════════════════════════════════════════════════════════ */

.section-header{
  max-width: 62ch;
  margin-inline: auto;
  margin-bottom: clamp(32px, 4vw, 56px);
}

/* eticheta: pastila cu firul de 1px, ecou al taglineului din logo */
.section-badge{
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  margin-bottom: var(--s4);
  padding-inline: var(--s4);
  border: 1px solid color-mix(in srgb, var(--ct-line-control) 70%, transparent);
  border-radius: var(--r-pill);
  background-color: color-mix(in srgb, var(--color-primary) 9%, transparent);
  color: var(--color-primary);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: var(--fs-label);
  line-height: 1;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.section-title{
  margin: 0;
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  font-variation-settings: "opsz" 144, "wght" 480, "SOFT" 20, "WONK" 1;
  line-height: 1.1;
  letter-spacing: -.015em;
  color: var(--color-text);
  text-wrap: balance;
}

.section-subtitle{
  margin: var(--s4) auto 0;
  max-width: 56ch;
  color: var(--ct-text-2);
  font-size: clamp(15.5px, 1.2vw, 17.5px);
  line-height: 1.62;
  text-wrap: pretty;
}


/* ═══════════════════════════════════════════════════════════
   2. BARA DE BENEFICII (.benefits-bar)
   Delimitata prin BANDA DE BRAND (aprinsa la mijloc, stinsa spre
   capete) — nu prin linie gri si nu prin tenta. BRIEF §2.
   ═══════════════════════════════════════════════════════════ */

.benefits-bar{
  position: relative;
  background-color: color-mix(in srgb, var(--color-primary) 4%, var(--color-bg));
}
.benefits-bar::before,
.benefits-bar::after{
  content: "";
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    color-mix(in srgb, var(--color-primary) 12%, transparent) 12%,
    color-mix(in srgb, var(--color-primary) 46%, transparent) 50%,
    color-mix(in srgb, var(--color-primary) 12%, transparent) 88%,
    transparent 100%);
}
.benefits-bar::before{ top: 0; }
.benefits-bar::after{ bottom: 0; }

.benefits-bar .benefit-item{
  display: flex;
  align-items: center;
  gap: var(--s4);
  height: 100%;
  padding: var(--s3) var(--s2);
}

.benefits-bar .benefit-item-icon{
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid color-mix(in srgb, var(--ct-line-control) 62%, transparent);
  border-radius: var(--r-sm);
  background-color: color-mix(in srgb, var(--color-primary) 8%, transparent);
  color: var(--color-primary);
  font-size: 20px;
  transition: border-color var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
.benefits-bar .benefit-item:hover .benefit-item-icon{
  border-color: color-mix(in srgb, var(--color-primary) 55%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
}

.benefits-bar .benefit-item-text{
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 14.5px;
  line-height: 1.3;
  color: var(--color-text);
}
.benefits-bar .benefit-item-subtext{
  margin-top: 3px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--ct-text-2);
}

/* Pe telefon, cutia beneficiului nu mai iese din coloana ei.
   `assets/css/mobile-wow.css` pregateste bara ca pe un CARUSEL orizontal:
   pune `display:flex` + `overflow-x:auto` pe SECTIUNE si `min-width:200px`
   pe cutii. Numai ca marcajul real din `home.php` e o grila Bootstrap
   (`.container > .row > .col-6`), asa ca flexul cade pe container, nu pe
   cutii: caruselul nu se deruleaza niciodata (`scrollWidth == clientWidth`),
   iar cei 200px raman intr-o coloana de 156px la 360. Cutia din dreapta
   ajungea la 388, `.container{overflow-x:clip}` taia la 352 si se pierdea
   un cuvant din subtext. Grila de doua coloane e oricum ce cere designul,
   deci scoatem latimea minima si lasam coloana sa comande. */
@media (max-width: 767.98px){
  .benefits-bar .benefit-item{
    min-width: 0;
    width: 100%;
    max-width: 100%;
  }
}

@media (max-width: 575.98px){
  .benefits-bar .benefit-item{
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s3);
  }
  .benefits-bar .benefit-item-icon{ width: 42px; height: 42px; font-size: 18px; }
  .benefits-bar .benefit-item-text{ font-size: 13.5px; }
  .benefits-bar .benefit-item-subtext{ font-size: 12.5px; }
}


/* ═══════════════════════════════════════════════════════════
   3. CATEGORIILE — carusel orizontal, carduri cu icoana
   ⚠️ Aici se lupta cu blocul <style> din home.php, care deseneaza alt
      card („poza pe tot cardul, titlu peste degrade negru"). Designul
      Cetinis vrea limbaj LINIAR: cerc cu fir de 1px, titlu si contor pe
      suprafata cardului. De aceea `body …` si `!important` punctual.
   ═══════════════════════════════════════════════════════════ */

body .section-categories .categories-wrap{ position: relative; }

body .section-categories .categories-grid{
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-start;
  gap: var(--s4);
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  scroll-padding-inline: 2px;
  padding: 6px 2px 16px;
  margin-inline: -2px;
  cursor: grab;
  scrollbar-width: none;
  -ms-overflow-style: none;
  overscroll-behavior-x: contain;
}
body .section-categories .categories-grid::-webkit-scrollbar{ display: none; }
body .section-categories .categories-grid:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 4px;
  border-radius: var(--r-sm);
}
body .section-categories .categories-grid.is-dragging{
  cursor: grabbing;
  scroll-snap-type: none;
  scroll-behavior: auto;
}

body .section-categories .category-card{
  position: relative;
  flex: 0 0 clamp(148px, 19vw, 198px);
  aspect-ratio: auto;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s3);
  padding: var(--s5) var(--s3) var(--s4) !important;   /* home.php: padding:0 !important */
  border: 1px solid var(--ct-line) !important;         /* home.php: border:none !important */
  border-radius: var(--r);
  overflow: visible;
  background-color: var(--color-white);
  text-align: center;
  isolation: isolate;
  box-shadow: none;
  transition: border-color var(--t) var(--ease),
              background-color var(--t) var(--ease),
              transform var(--t) var(--ease),
              box-shadow var(--t) var(--ease);
}

/* firul de 1px care se APRINDE la hover — aprins la mijloc, stins la capete */
body .section-categories .category-card::before{
  content: "";
  position: absolute;
  inset: -1px auto auto -1px;
  width: calc(100% + 2px);
  height: 1px;
  border-radius: var(--r) var(--r) 0 0;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--color-primary) 50%,
    transparent 100%);
  opacity: 0;
  transition: opacity var(--t) var(--ease);
}
body .section-categories .category-card:hover::before,
body .section-categories .category-card:focus-visible::before{ opacity: .9; }

body .section-categories .category-card:hover,
body .section-categories .category-card:focus-visible{
  border-color: color-mix(in srgb, var(--color-primary) 42%, transparent) !important;
  background-color: var(--ct-surface-2);
  transform: translateY(-3px);
  /* aura CALDA, nu umbra neagra — cardul pare luminat de cuptor */
  box-shadow: 0 14px 34px -20px rgba(232, 164, 76, .55),
              0 4px 16px -10px rgba(111, 207, 137, .40);
}

/* cercul icoanei. Categoria poate avea si POZA in loc de <i> — atunci poza
   se aseaza rotund in acelasi cerc, ca ritmul randului sa nu se schimbe. */
body .section-categories .category-card .category-card-icon{
  position: relative !important;
  inset: auto !important;
  display: grid;
  place-items: center;
  width: 54px !important;
  height: 54px !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--ct-line-control) 58%, transparent) !important;
  border-radius: var(--r-pill) !important;
  background-color: color-mix(in srgb, var(--color-primary) 7%, transparent) !important;
  color: var(--color-primary);
  font-size: 23px;
  transition: border-color var(--t) var(--ease),
              background-color var(--t) var(--ease),
              transform var(--t) var(--ease);
}
body .section-categories .category-card-icon img{
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  border-radius: var(--r-pill);
}
body .section-categories .category-card:hover .category-card-icon{
  border-color: color-mix(in srgb, var(--color-primary) 62%, transparent) !important;
  background-color: color-mix(in srgb, var(--color-primary) 15%, transparent) !important;
  transform: scale(1.06);
}

body .section-categories .category-card .category-card-title{
  position: static;
  margin: 0 !important;
  padding: 0 !important;
  background: none;
  text-shadow: none;
  font-family: var(--f-display);
  font-variation-settings: "opsz" 36, "wght" 550, "SOFT" 12, "WONK" 0;
  font-weight: 400;
  font-size: 16.5px;
  line-height: 1.22;
  letter-spacing: -.006em;
  color: var(--color-text) !important;   /* home.php: color:#ffffff !important */
  text-wrap: balance;
}
body .section-categories .category-card:hover .category-card-title{
  color: var(--color-primary) !important;
}

/* numarul de feluri — pastila discreta, nu text razlet.
   home.php il stinge cu `display:none !important`; la Cetinis conteaza. */
body .section-categories .category-card-count{
  display: inline-flex !important;
  align-items: center;
  min-height: 22px;
  padding-inline: 9px;
  /* pastila e ORNAMENT, nu control: informatia o duce textul.
     Conturul sta intentionat discret, ca sa nu concureze cu numele felului. */
  border: 1px solid color-mix(in srgb, var(--ct-line-control) 58%, transparent);
  border-radius: var(--r-pill);
  color: var(--ct-text-3);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 11px;
  line-height: 1;
  letter-spacing: .06em;
  font-variant-numeric: tabular-nums lining-nums;
  white-space: nowrap;
  transition: color var(--t) var(--ease), border-color var(--t) var(--ease);
}
body .section-categories .category-card:hover .category-card-count{
  color: var(--ct-text-2);
  border-color: color-mix(in srgb, var(--ct-line-control) 70%, transparent);
}

/* sagetile caruselului */
body .section-categories .cat-nav{
  position: absolute;
  top: 50%;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  margin-top: -8px;
  transform: translateY(-50%);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background-color: var(--ct-surface-2);
  color: var(--color-text);
  font-size: 18px;
  cursor: pointer;
  box-shadow: 0 10px 26px -16px var(--ct-mix-sink);
  transition: opacity var(--t) var(--ease),
              background-color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              color var(--t) var(--ease);
}
body .section-categories .cat-nav:hover{
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-on-primary);
}
body .section-categories .cat-nav-prev{ left: calc(var(--s5) * -1); }
body .section-categories .cat-nav-next{ right: calc(var(--s5) * -1); }
body .section-categories .cat-nav.is-hidden,
body .section-categories .cat-nav:disabled{
  opacity: 0;
  pointer-events: none;
  /* fara asta sageata ramane in ordinea de tabulare: Tab-ul se opreste pe un
     buton pe care nu-l vede nimeni */
  visibility: hidden;
}

@media (max-width: 991.98px){
  body .section-categories .cat-nav-prev{ left: -6px; }
  body .section-categories .cat-nav-next{ right: -6px; }
  body .section-categories .category-card{ flex: 0 0 clamp(140px, 30vw, 180px); }
}
@media (max-width: 767.98px){
  body .section-categories .cat-nav{ display: none; }
  body .section-categories .category-card{
    flex: 0 0 clamp(136px, 42vw, 168px);
    padding: var(--s4) var(--s3) !important;
  }
  body .section-categories .category-card .category-card-icon{ width: 48px !important; height: 48px !important; font-size: 21px; }
  body .section-categories .category-card .category-card-title{ font-size: 15px; }
}


/* ═══════════════════════════════════════════════════════════
   4. CARDUL DE PRODUS — GLOBAL
   Acelasi component (`templates/partials/product-card.php` + geamanul
   lui din `assets/js/shop.js`) se randeaza pe acasa, /shop, categorie,
   cautare, favorite si „produse similare". Se scrie O SINGURA DATA.
   Rafinarile per pagina stau in 30-categorie.css si 40-produs.css.
   ⚠️ Nicio tenta peste fotografie (BRIEF §2): butonul e o pastila
      asezata peste coltul de jos, nu un degrade negru peste mancare.
   ═══════════════════════════════════════════════════════════ */

.product-card{
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background-color: var(--color-white);
  isolation: isolate;
  transition: border-color var(--t) var(--ease),
              transform var(--t) var(--ease),
              box-shadow var(--t) var(--ease);
}
.product-card:hover{
  border-color: color-mix(in srgb, var(--color-primary) 38%, transparent);
  transform: translateY(-3px);
  box-shadow: 0 16px 38px -22px rgba(232, 164, 76, .50),
              0 4px 16px -10px rgba(111, 207, 137, .34);
}

.product-card .product-card-image{
  position: relative;
  flex: 0 0 auto;
  aspect-ratio: 1 / 1;
  /* fara `min-height:0` fotografia inalta IMPINGE cutia peste raportul cerut
     si titlurile de pe acelasi rand ies decalate */
  min-height: 0;
  border-radius: calc(var(--r) - 1px) calc(var(--r) - 1px) 0 0;
  overflow: hidden;
  background-color: color-mix(in srgb, var(--color-primary) 4%, var(--color-bg));
}
/* legatura e scoasa din flux: asa cutia isi tine raportul, indiferent de
   proportiile fotografiei dinauntru */
.product-card .product-card-image > a{
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
}
.product-card .product-card-image img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--t-slow) var(--ease-out);
}
.product-card:hover .product-card-image img{ transform: scale(1.045); }

/* ── insigne ── */
.product-card .product-card-badges{
  position: absolute;
  top: var(--s3);
  left: var(--s3);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  /* nu trec pe sub butonul de favorite (44px pe atingere) */
  max-width: calc(100% - 60px);
  pointer-events: none;
}
.product-card .product-card-badge{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 22px;
  padding-inline: 9px;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 10.5px;
  line-height: 1;
  letter-spacing: .1em;
  text-transform: uppercase;
  max-width: 100%;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.product-card .badge-new{
  border-color: color-mix(in srgb, var(--color-primary) 55%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 16%, var(--color-bg));
  color: var(--color-primary);
}
.product-card .badge-sale{
  background-color: var(--color-accent);
  color: var(--color-on-accent);
}
.product-card .badge-bestseller{
  border-color: color-mix(in srgb, var(--color-accent) 55%, transparent);
  background-color: color-mix(in srgb, var(--color-accent) 16%, var(--color-bg));
  color: var(--color-accent);
}
.product-card .badge-sgr{
  border-color: color-mix(in srgb, var(--color-primary) 45%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 12%, var(--color-bg));
  color: var(--color-primary);
  pointer-events: auto;
}

/* ── favorite ── */
.product-card .product-card-wishlist{
  position: absolute;
  top: var(--s3);
  right: var(--s3);
  z-index: 4;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid color-mix(in srgb, var(--ct-line-control) 55%, transparent);
  border-radius: var(--r-pill);
  /* «NUCLEU» shop.css pune `rgba(255,255,255,.95)` — pastila alba pe tema
     inchisa. Se acopera aici; reparatia in nucleu e in raport. */
  background-color: color-mix(in srgb, var(--color-bg) 74%, transparent);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
  color: var(--ct-text-2);
  font-size: 16px;
  cursor: pointer;
  transition: color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              background-color var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.product-card .product-card-wishlist:hover{
  color: var(--ct-danger);
  border-color: color-mix(in srgb, var(--ct-danger) 55%, transparent);
  transform: scale(1.06);
}
.product-card .product-card-wishlist.active,
.product-card .product-card-wishlist.is-active,
.product-card .product-card-wishlist[aria-pressed="true"]{
  color: var(--ct-danger);
  border-color: color-mix(in srgb, var(--ct-danger) 62%, transparent);
  background-color: color-mix(in srgb, var(--ct-danger) 16%, var(--color-bg));
}
@media (pointer: coarse){
  .product-card .product-card-wishlist{ width: var(--ct-tap); height: var(--ct-tap); }
}

/* ── butonul de actiune ── */
.product-card .product-card-overlay{
  position: absolute;
  left: var(--s3);
  right: var(--s3);
  bottom: var(--s3);
  z-index: 4;
  display: flex;
  /* fara degrade peste mancare: poza ramane curata (BRIEF §2) */
  background: none;
  padding: 0;
}
.product-card .product-card-overlay .btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  width: 100%;
  min-height: var(--ct-tap);
  padding-inline: var(--s3);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 12.5px;
  line-height: 1;
  letter-spacing: .01em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--t) var(--ease),
              box-shadow var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.product-card .product-card-overlay .btn > span{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.product-card .product-card-overlay .btn:active{ transform: translateY(1px); }
.product-card .product-card-overlay .btn i{ font-size: 14px; }

/* „Adauga in cos", „Alege optiuni" si „Alege variante" sunt TOATE verzi.
   La Cetinis aproape tot meniul are grupuri de optiuni: daca butonul de
   configurare ar fi chihlimbar, grila intreaga ar deveni chihlimbar si
   jarul n-ar mai insemna nimic. Se deosebesc prin ICOANA si ETICHETA;
   chihlimbarul ramane al PRETULUI si al insignelor (BRIEF §2). */
.product-card .btn-add-cart{
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  box-shadow: 0 10px 24px -14px rgba(111, 207, 137, .70);
}
.product-card .btn-add-cart:hover{
  background-color: color-mix(in srgb, var(--color-primary) 88%, var(--ct-mix-lift));
  box-shadow: 0 14px 30px -14px rgba(111, 207, 137, .85);
}
.product-card .btn-pick-options i,
.product-card .btn-pick-variant i{
  color: color-mix(in srgb, var(--color-on-primary) 74%, var(--ct-ember));
}

/* pe indicator fin butonul apare la hover; pe atingere il muta 95-integrare.css
   SUB fotografie, ca sa nu acopere mancarea */
@media (hover: hover) and (pointer: fine){
  .product-card .product-card-overlay{
    opacity: 0;
    transform: translateY(10px);
    transition: opacity var(--t) var(--ease), transform var(--t) var(--ease);
  }
  .product-card:hover .product-card-overlay,
  .product-card:focus-within .product-card-overlay{
    opacity: 1;
    transform: none;
  }
}

/* ── corpul ── */
.product-card .product-card-body{
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 6px;
  padding: var(--s4);
}
.product-card .product-card-category{
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 10.5px;
  line-height: 1;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ct-text-3);
  text-decoration: none;
  transition: color var(--t) var(--ease);
}
.product-card .product-card-category:hover{ color: var(--color-primary); }

.product-card .product-card-title{
  margin: 0;
  font-family: var(--f-display);
  font-variation-settings: "opsz" 36, "wght" 560, "SOFT" 12, "WONK" 0;
  font-weight: 400;
  font-size: 17px;
  line-height: 1.26;
  letter-spacing: -.008em;
  color: var(--color-text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(17px * 1.26 * 2);
}
.product-card .product-card-title a{
  color: inherit;
  text-decoration: none;
  transition: color var(--t) var(--ease);
}
.product-card .product-card-title a:hover{ color: var(--color-primary); }

/* pretul ca obiect tipografic (BRIEF §4.4).
   ⚠️ `formatPrice()` scoate „42.00 lei" ca UN singur nod text, deci moneda
   nu se poate separa tipografic fara o schimbare in nucleu. Ce se poate
   din CSS: Fraunces, cifre TABULARE, aliniere pe coloana. */
.product-card .product-card-price{
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s3);
  margin-top: auto;
  padding-top: var(--s3);
}
.product-card .product-card-price .current-price{
  font-family: var(--f-display);
  font-size: 20px;
  font-weight: 500;
  font-variant-numeric: tabular-nums lining-nums;
  font-feature-settings: "tnum" 1;
  letter-spacing: .01em;
  color: var(--color-text);
}
.product-card .product-card-price .old-price{
  color: var(--ct-text-3);
  font-size: 14px;
  text-decoration: line-through;
  font-variant-numeric: tabular-nums;
}
/* pretul nou preia jarul DOAR cand exista unul taiat inaintea lui */
.product-card .product-card-price .old-price + .current-price{ color: var(--ct-ember); }
.product-card .product-card-price .price-prefix{
  color: var(--ct-text-3);
  font-size: 13px;
  text-transform: lowercase;
}

@media (max-width: 575.98px){
  .product-card .product-card-body{ padding: var(--s3); }
  .product-card .product-card-title{
    font-size: 14.5px;
    min-height: calc(14.5px * 1.26 * 2);
  }
  .product-card .product-card-price{ padding-top: var(--s2); }
  .product-card .product-card-price .current-price{ font-size: 17px; }
  .product-card .product-card-badge{ font-size: 9.5px; padding-inline: 7px; }
}


/* ═══════════════════════════════════════════════════════════
   5. BANDA CU DEGRADE DE SUB PRODUSELE DE PE ACASA
   (.section-products.section-bg-gradient)
   ═══════════════════════════════════════════════════════════ */

.section-bg-gradient{
  position: relative;
  background-image: linear-gradient(180deg,
    color-mix(in srgb, var(--color-primary) 6%, var(--color-bg)) 0%,
    color-mix(in srgb, var(--color-primary) 10%, var(--color-bg)) 44%,
    color-mix(in srgb, var(--color-primary) 3%, var(--color-bg)) 100%);
  /* `clip`, nu `hidden`: taie fara sa creeze container de derulare
     (altfel gestul de derulare inceput peste sectiune se agata) */
  overflow-x: clip;
}
.section-bg-gradient::before,
.section-bg-gradient::after{
  content: "";
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    color-mix(in srgb, var(--color-primary) 40%, transparent) 50%,
    transparent 100%);
}
.section-bg-gradient::before{ top: 0; }
.section-bg-gradient::after{ bottom: 0; }

/* butonul de sub o grila de produse */
.section-products .text-center > .btn,
.section-products .section-actions{
  margin-top: clamp(32px, 4vw, 52px);
}


/* ═══════════════════════════════════════════════════════════
   6. MISCARE REDUSA
   ═══════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  body .section-categories .category-card,
  .product-card,
  .product-card .product-card-image img{ transition: none; }

  body .section-categories .category-card:hover,
  .product-card:hover{ transform: none; }
  .product-card:hover .product-card-image img{ transform: none; }
  body .section-categories .categories-grid{ scroll-behavior: auto; }
}


/* ══════════════════════════════════════════════════════════════
   22-acasa-poveste.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — povestea locului, incredere, petreceri, marturii,
             intrebari frecvente, indemn final (T3)
   Ultima modificare: 2026-08-28 18:50
   Modificari:
     2026-08-28 18:50 — Portare din propunere (parts/22-acasa-poveste.css):
                        schela Bootstrap scoasa; `.section-badge` ramane
                        pastila din 21 (in propunere erau doua variante ale
                        aceleiasi clase, de la doi agenti); `.ct-story-rule`,
                        `.ct-story-band` si `.ct-mosaic-band` devin
                        pseudo-elemente (nu se poate adauga marcaj in
                        home.php fara sa-l furcam); `.ct-cta-btn` devine
                        `.site-cta-btn`; fundalul indemnului trece pe
                        `.site-cta-inner`, unde il pune nucleul;
                        `body:not(.theme-light)` (solutie de avarie in
                        artefact, unde nu puteam emite eticheta <body>) devine
                        `body.theme-dark` — clasa reala pe care o pune
                        `layout.php` din luminanta lui `color_bg`.

   ⚠️ SCOASE, fiindca cer MARCAJ nou in `home.php` (raportate ca optiuni):
      `.ct-story-facts` (adresa/program/tagline sub poveste),
      `.ct-story-caption`, `.ct-catering-call`, `.ct-ts-note` (starea goala
      onesta a marturiilor), `.ct-machete-tag`.
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. POVESTEA LOCULUI — .section-story
   ═══════════════════════════════════════════════════════════ */

.section-story{
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
body.theme-dark .section-story{
  background-image: linear-gradient(180deg,
      color-mix(in srgb, var(--ct-green-deep) 9%, var(--color-bg)) 0%,
      var(--color-bg) 62%);
}

.section-story .story-grid{
  display: grid;
  grid-template-columns: 1.04fr 1fr;
  align-items: center;
  gap: clamp(32px, 5vw, 72px);
}

.section-story .story-content{ min-width: 0; }

.section-story .story-title{
  max-width: 15ch;
  margin-bottom: 0;
}
/* firul de brand de sub titlu — inlocuieste `.ct-story-rule` din propunere,
   care ar fi cerut un <span> in plus in home.php */
.section-story .story-title::after{
  content: "";
  display: block;
  width: 140px;
  height: 3px;
  margin: var(--s4) 0 var(--s5);
  border-radius: 2px;
  background: linear-gradient(90deg,
      var(--color-primary) 0%,
      color-mix(in srgb, var(--color-primary) 40%, transparent) 70%,
      transparent 100%);
}

.section-story .story-text{
  margin: 0 0 var(--s6);
  max-width: 56ch;
  font-size: 17px;
  line-height: 1.72;
  color: var(--ct-text-2);
  text-wrap: pretty;
}

/* fotografia: ramane CURATA. Delimitarea o face banda de brand de pe
   marginea de jos, iar aura de jar sta DEDESUBT, nu peste. */
.section-story .story-image-wrap{
  position: relative;
  border-radius: var(--r-lg);
}
.section-story .story-image{
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1600 / 1180;
  object-fit: cover;
  border-radius: var(--r-lg);
  position: relative;
  z-index: 1;
}
/* banda de brand pe marginea de jos a fotografiei */
.section-story .story-image-wrap::after{
  content: "";
  position: absolute;
  left: 8%;
  right: 8%;
  bottom: -1px;
  z-index: 2;
  height: 3px;
  border-radius: 2px;
  background: linear-gradient(90deg,
      transparent 0%,
      var(--color-primary) 26%,
      var(--color-accent) 50%,
      var(--color-primary) 74%,
      transparent 100%);
}
/* aura de jar, IN SPATELE fotografiei */
.section-story .story-image-glow{
  position: absolute;
  inset: -8%;
  z-index: 0;
  pointer-events: none;
  border-radius: 50%;
  background: radial-gradient(closest-side at 50% 58%,
      color-mix(in srgb, var(--ct-ember) 26%, transparent) 0%,
      color-mix(in srgb, var(--ct-ember) 10%, transparent) 48%,
      transparent 82%);
  filter: blur(10px);
}


/* ═══════════════════════════════════════════════════════════
   2. DE CE CETINIS — .section-trust
   ⚠️ Textele cardurilor sunt scrise IN `home.php` (bugul B-2 din
      PORTARE §7): pana la reparatia in nucleu ele raman ale altui
      client. Aici doar imbracam structura.
   ═══════════════════════════════════════════════════════════ */

.section-trust .trust-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s5);
}

.section-trust .trust-card{
  position: relative;
  padding: var(--s6);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background-color: var(--color-white);
  transition: border-color var(--t) var(--ease),
              transform var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
.section-trust .trust-card:hover{
  border-color: color-mix(in srgb, var(--color-primary) 45%, var(--ct-line));
  background-color: var(--ct-surface-2);
  transform: translateY(-3px);
}

/* icoana: fir de 1px, nu pastila plina — limbajul liniar al marcii */
.section-trust .trust-card-icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: var(--s5);
  border: 1px solid color-mix(in srgb, var(--color-primary) 38%, transparent);
  border-radius: var(--r-sm);
  background-color: color-mix(in srgb, var(--color-primary) 9%, transparent);
  background-image: none;
  color: var(--color-primary);
  font-size: 23px;
}

.section-trust .trust-card-title{
  margin: 0 0 var(--s3);
  font-family: var(--f-display);
  font-size: var(--h3);
  font-weight: 500;
  font-variation-settings: "opsz" 48, "wght" 520, "SOFT" 14, "WONK" 0;
  line-height: 1.25;
  color: var(--color-text);
}

.section-trust .trust-card-text{
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.62;
  color: var(--ct-text-2);
}
.section-trust .trust-card-text a{
  color: var(--color-primary);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}


/* ═══════════════════════════════════════════════════════════
   3. PETRECERI SI EVENIMENTE — .section-catering
   ═══════════════════════════════════════════════════════════ */

.section-catering{
  position: relative;
  border-top: 1px solid var(--ct-line-soft);
  border-bottom: 1px solid var(--ct-line-soft);
}
body.theme-dark .section-catering{
  background-color: color-mix(in srgb, var(--ct-green-deep) 6%, var(--color-bg));
}

.section-catering .catering-grid{
  display: grid;
  grid-template-columns: 1fr 1.02fr;
  align-items: center;
  gap: clamp(32px, 5vw, 72px);
}

.section-catering .catering-title{ max-width: 16ch; }

.section-catering .catering-text{
  margin: 0 0 var(--s6);
  max-width: 54ch;
  font-size: 17px;
  line-height: 1.72;
  color: var(--ct-text-2);
  text-wrap: pretty;
}

.section-catering .catering-features{
  list-style: none;
  margin: 0 0 var(--s7);
  padding: 0;
  display: grid;
  gap: var(--s3);
}
.section-catering .catering-features > li{
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--s3);
  font-size: var(--fs-small);
  line-height: 1.55;
  color: var(--ct-text-2);
}
.section-catering .catering-features > li > i{
  margin-top: 2px;
  font-size: 16px;
  color: var(--color-primary);
}

/* mozaicul: doua fotografii CURATE, decalate pe verticala. Fiecare isi are
   banda ei calda pe marginea de jos — delimitare prin brand, nu prin tenta. */
.section-catering .catering-mosaic{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s4);
  align-items: start;
}
.section-catering .catering-img-1,
.section-catering .catering-img-2{
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
}
/* decalajul: a doua fotografie coboara, ca perechea sa nu para un tabel */
.section-catering .catering-img-2{ margin-top: 22%; }

.section-catering .catering-mosaic img{
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
.section-catering .catering-img-1::after,
.section-catering .catering-img-2::after{
  content: "";
  position: absolute;
  left: 10%;
  right: 10%;
  bottom: 0;
  height: 3px;
  border-radius: 2px;
  background: linear-gradient(90deg,
      transparent 0%,
      var(--color-accent) 50%,
      transparent 100%);
}


/* ═══════════════════════════════════════════════════════════
   4. MARTURII — .section-testimonials
   ═══════════════════════════════════════════════════════════ */

body.theme-dark .section-testimonials.section-bg-gradient{
  background-image: linear-gradient(180deg,
      var(--color-bg) 0%,
      color-mix(in srgb, var(--ct-green-deep) 11%, var(--color-bg)) 50%,
      var(--color-bg) 100%);
}

.section-testimonials .ts-slider{
  position: relative;
  padding-inline: clamp(0px, 3vw, 56px);
}
.section-testimonials .ts-page{
  display: none;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s5);
}
.section-testimonials .ts-page.active{ display: grid; }

.section-testimonials .testimonial-card{
  display: flex;
  flex-direction: column;
  gap: var(--s4);
  padding: var(--s6);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background-color: var(--color-white);
}

.section-testimonials .testimonial-card-stars{
  display: flex;
  gap: 3px;
  font-size: 16px;
  color: var(--ct-ember);
}

.section-testimonials .testimonial-card-text{
  flex: 1 1 auto;
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--f-display);
  font-size: 16.5px;
  font-weight: 400;
  font-variation-settings: "opsz" 24, "wght" 400, "SOFT" 24, "WONK" 0;
  line-height: 1.6;
  color: var(--color-text);
  text-wrap: pretty;
}

.section-testimonials .testimonial-card-author{
  display: flex;
  align-items: center;
  gap: var(--s3);
  padding-top: var(--s4);
  border-top: 1px solid var(--ct-line);
}
.section-testimonials .testimonial-card-avatar{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--color-primary) 36%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
  background-image: none;
  color: var(--color-primary);
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 15px;
}
.section-testimonials .testimonial-card-name{
  font-weight: 700;
  font-size: var(--fs-small);
  color: var(--color-text);
}
.section-testimonials .testimonial-card-location{
  display: flex;
  align-items: center;
  gap: 5px;
  margin-top: 2px;
  font-size: 13px;
  color: var(--ct-text-3);
}

/* sageti si buline */
.section-testimonials .ts-arrow{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--ct-tap);
  height: var(--ct-tap);
  padding: 0;
  border: 1px solid var(--ct-line-control);
  border-radius: 50%;
  background-color: var(--ct-surface-2);
  color: var(--color-text);
  font-size: 18px;
  cursor: pointer;
  transition: background-color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              color var(--t) var(--ease);
}
.section-testimonials .ts-arrow:hover{
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-on-primary);
}
.section-testimonials .ts-arrow--l{ left: 0; }
.section-testimonials .ts-arrow--r{ right: 0; }

.section-testimonials .ts-dots{
  display: flex;
  justify-content: center;
  gap: var(--s3);
  margin-top: var(--s6);
}
.section-testimonials .ts-dot{
  width: var(--ct-tap);
  height: 22px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  cursor: pointer;
  position: relative;
}
/* tinta de atingere reala, 44×44, fara sa ingroase linia vizibila */
.section-testimonials .ts-dot::before{
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 44px;
  transform: translateY(-50%);
}
.section-testimonials .ts-dot::after{
  content: "";
  position: absolute;
  inset: 50% 0 auto 0;
  transform: translateY(-50%);
  height: 3px;
  border-radius: 2px;
  background-color: var(--ct-line-control);
  transition: background-color var(--t) var(--ease);
}
.section-testimonials .ts-dot.active::after{ background-color: var(--color-primary); }


/* ═══════════════════════════════════════════════════════════
   5. INTREBARI FRECVENTE — .section-faq (acordeonul Bootstrap)
   ⚠️ `home.php` pune stiluri INLINE pe `.accordion-item` (contur,
      rotunjire, fundal) si pe `.accordion-button` (greutate, culoare).
      Inline bate orice selector, deci acolo unde designul cere altceva
      raspundem cu `!important`; restul se potriveste deja
      (`--color-border` = firul nostru, `--color-white` = suprafata).
   ═══════════════════════════════════════════════════════════ */

.section-faq .accordion-item{
  border-radius: var(--r) !important;
  margin-bottom: var(--s3);
  transition: border-color var(--t) var(--ease);
}
.section-faq .accordion-item:has(.accordion-button[aria-expanded="true"]){
  border-color: color-mix(in srgb, var(--color-primary) 42%, var(--ct-line)) !important;
}

.section-faq .accordion-header{ margin: 0; }

.section-faq .accordion-button{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  width: 100%;
  min-height: var(--ct-tap);
  padding: var(--s5);
  border: 0;
  background: none;
  box-shadow: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 16px;
  line-height: 1.45;
  color: var(--color-text);
  transition: background-color var(--t) var(--ease), color var(--t) var(--ease);
}
.section-faq .accordion-button:hover{ background-color: var(--ct-surface-2); }
.section-faq .accordion-button:not(.collapsed){
  /* Nucleul (main.css:1122) pune AICI `background-color: var(--color-primary) !important`.
     Regula noastra avea `background: none` FARA `!important`, deci culoarea noastra castiga
     (specificitate 0,3,0) dar fundalul lui ramanea: verde pe verde, 1.00:1 — intrebarea
     deschisa nu se citea deloc. Punem o suprafata ridicata, explicita, si o impunem. */
  color: var(--color-primary) !important;   /* inline: color:var(--color-text) */
  background-color: var(--ct-surface-2) !important;
  background-image: none !important;
  box-shadow: none;
}
.section-faq .accordion-button:focus{
  box-shadow: none;
  outline: 2px solid var(--color-primary);
  outline-offset: -2px;
}
/* sageata nativa a acordeonului — culoarea vine din `--bs-accordion-btn-icon`,
   pe care nucleul o leaga deja de paleta; aici doar temperam marimea */
.section-faq .accordion-button::after{
  flex: 0 0 auto;
  width: 1.05rem;
  height: 1.05rem;
  background-size: 1.05rem;
}

.section-faq .accordion-body{
  padding: var(--s4) var(--s5) var(--s5);
  font-size: var(--fs-small);
  line-height: 1.68;
  color: var(--ct-text-2);
  border-top: 1px solid var(--ct-line-soft);
}


/* ═══════════════════════════════════════════════════════════
   6. INDEMNUL FINAL — .site-cta
   ⚠️ Nucleul pune fundalul pe `.site-cta-inner`, NU pe sectiune
      (`components.css`: `.site-cta-gradient-green .site-cta-inner`).
      Aici scriem pe amandoua, ca banda sa fie intreaga.
   ═══════════════════════════════════════════════════════════ */

.site-cta{
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding-block: clamp(56px, 7vw, 96px);
}
body.theme-dark .site-cta-gradient-green,
body.theme-dark .site-cta-gradient-green .site-cta-inner{
  background-image: linear-gradient(160deg,
      color-mix(in srgb, var(--ct-green-deep) 70%, var(--color-bg)) 0%,
      color-mix(in srgb, var(--ct-green-deep) 42%, var(--color-bg)) 100%);
}

.site-cta .site-cta-inner{
  max-width: 720px;
  margin-inline: auto;
  text-align: center;
}

.site-cta .site-cta-badges{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--s3);
  margin-bottom: var(--s6);
}
.site-cta .site-cta-badge{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 14px;
  border: 1px solid color-mix(in srgb, var(--color-text) 26%, transparent);
  border-radius: var(--r-pill);
  background-color: rgba(0, 0, 0, .26);
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 12.5px;
  line-height: 1.2;
  color: var(--color-text);
}
.site-cta .site-cta-badge i{ font-size: 14px; }

.site-cta .site-cta-title{
  margin: 0 0 var(--s4);
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  font-variation-settings: "opsz" 144, "wght" 500, "SOFT" 22, "WONK" 1;
  line-height: 1.08;
  letter-spacing: -.015em;
  color: var(--color-text);
}

.site-cta .site-cta-text{
  margin: 0 auto var(--s7);
  max-width: 54ch;
  font-size: 17px;
  line-height: 1.65;
  color: var(--color-text);
  text-wrap: pretty;
}

.site-cta .site-cta-actions{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--s4);
}

/* butoanele indemnului: pe banda de brand nu folosim verdele (verde pe
   verde), ci contrastul invers — cald plin, iar al doilea fantoma cu contur */
.site-cta .site-cta-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 52px;
  padding-inline: var(--s6);
  border-radius: var(--r-pill);
  border: 1px solid transparent;
  background-color: var(--color-accent);
  color: var(--color-on-accent);
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 16px;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  box-shadow: var(--ct-glow-ember);
  transition: transform var(--t) var(--ease),
              background-color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              color var(--t) var(--ease);
}
.site-cta .site-cta-btn:hover{
  background-color: color-mix(in srgb, var(--color-accent) 86%, #FFFFFF);
  color: var(--color-on-accent);
}
.site-cta .site-cta-btn i{ font-size: 18px; }
.site-cta .site-cta-btn:active{ transform: translateY(1px); }

/* al doilea buton (conturat) — fantoma pe banda */
.site-cta .site-cta-actions .site-cta-btn + .site-cta-btn,
.site-cta .site-cta-btn.btn-outline-light,
.site-cta .site-cta-btn.btn-outline-primary{
  background-color: rgba(0, 0, 0, .22);
  border-color: color-mix(in srgb, var(--color-text) 52%, transparent);
  color: var(--color-text);
  box-shadow: none;
}
.site-cta .site-cta-actions .site-cta-btn + .site-cta-btn:hover,
.site-cta .site-cta-btn.btn-outline-light:hover,
.site-cta .site-cta-btn.btn-outline-primary:hover{
  background-color: rgba(0, 0, 0, .38);
  border-color: var(--color-text);
  color: var(--color-text);
}


/* ═══════════════════════════════════════════════════════════
   7. RESPONSIV — pragurile platformei
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 1199.98px){
  .section-trust .trust-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .section-testimonials .ts-page{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 991.98px){
  .section-story .story-grid,
  .section-catering .catering-grid{ grid-template-columns: 1fr; }

  /* pe ingust povestea vine prima, fotografia dupa ea */
  .section-story .story-image-wrap{ order: 2; }
  .section-story .story-content{ order: 1; }
  .section-story .story-title{ max-width: none; }
  .section-catering .catering-title{ max-width: none; }

  .section-catering .catering-mosaic{ max-width: 560px; }

  /* pe ingust sagetile coboara pe un rand propriu, cu bulinele intre ele,
     ca sa nu acopere cardurile. Fiecare control isi are ZONA lui. */
  .section-testimonials .ts-slider{
    display: grid;
    grid-template-areas:
      "pages pages pages"
      "prev  dots  next";
    grid-template-columns: auto 1fr auto;
    padding-inline: 0;
    row-gap: var(--s6);
    align-items: center;
  }
  .section-testimonials .ts-page{ grid-area: pages; width: 100%; }
  .section-testimonials .ts-arrow{ position: static; transform: none; }
  .section-testimonials .ts-arrow--l{ grid-area: prev; justify-self: start; }
  .section-testimonials .ts-arrow--r{ grid-area: next; justify-self: end; }
  .section-testimonials .ts-dots{ grid-area: dots; margin-top: 0; align-self: center; }
}

@media (max-width: 767.98px){
  .section-trust .trust-grid{ grid-template-columns: 1fr; }
  .section-trust .trust-card{ padding: var(--s5); }

  .section-testimonials .ts-page{ grid-template-columns: 1fr; }

  .section-story .story-text,
  .section-catering .catering-text,
  .site-cta .site-cta-text{ font-size: 16px; }

  .section-faq .accordion-button{ padding: var(--s4); font-size: 15.5px; }
  .section-faq .accordion-body{ padding-inline: var(--s4); padding-bottom: var(--s4); }

  .site-cta .site-cta-actions{ flex-direction: column; }
  .site-cta .site-cta-btn{ width: 100%; }
}

@media (max-width: 480px){
  .section-catering .catering-mosaic{ grid-template-columns: 1fr; }
  .section-catering .catering-img-2{ margin-top: 0; }
  .section-catering .catering-mosaic img{ aspect-ratio: 5 / 4; }
}


/* ═══════════════════════════════════════════════════════════
   8. MISCARE REDUSA
   ═══════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  .section-trust .trust-card,
  .section-testimonials .ts-arrow,
  .site-cta .site-cta-btn{ transition: none; }
  .section-trust .trust-card:hover{ transform: none; }
  .site-cta .site-cta-btn:active{ transform: none; }
}


/* ══════════════════════════════════════════════════════════════
   23-acasa-aplicatie.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — banda „Descarcă aplicația" de pe prima pagină
   Ultima modificare: 2026-09-21 21:00
   Modificari:
     2026-09-21 21:00 — Banda pe verde de cetină ÎNCHIS, cu text deschis (cerere user).
                        Pe verdele de brand (#6FCF89) nucleul punea text închis (~9,7:1);
                        albul acolo ar fi ieșit ~1,9:1, ilizibil. Acum fundalul e amestecat
                        din verdele temei cu fundalul sitului (~#325D3F → #284B34), iar
                        textul deschis al temei dă ~7,7:1. Zero hex nou: doar paleta.
   ═══════════════════════════════════════════════════════════ */

/* Nucleul (app-download.css) colorează TOT din --color-on-primary. Îl redefinim
   local pe card: textul, eticheta, iconițele, conturul insignelor și petele de
   lumină trec automat pe deschis, fără să rescriem fiecare regulă. */
body .app-download-section .app-dl-card{
  --color-on-primary: var(--color-text);
  background: linear-gradient(118deg,
      color-mix(in srgb, var(--color-primary-dark) 55%, var(--color-bg)) 0%,
      color-mix(in srgb, var(--color-primary) 30%, var(--color-bg)) 100%);
  color: var(--color-text);
  border: 1px solid color-mix(in srgb, var(--color-primary) 28%, transparent);
  box-shadow: 0 24px 60px color-mix(in srgb, #000 45%, transparent),
              0 0 0 1px color-mix(in srgb, var(--color-primary) 10%, transparent) inset;
}
/* Petele de lumină: verde de brand în loc de alb, ca banda să „ardă" discret. */
body .app-download-section .app-dl-card::before,
body .app-download-section .app-dl-card::after{
  background: radial-gradient(circle, color-mix(in srgb, var(--color-primary) 26%, transparent) 0%, transparent 70%);
}
body .app-download-section .app-dl-glow{
  background: radial-gradient(circle, color-mix(in srgb, var(--color-primary) 34%, transparent) 0%, transparent 68%);
}

/* Accentele în verdele deschis al temei. */
body .app-download-section .app-dl-eyebrow{
  color: var(--color-primary-light);
  background: color-mix(in srgb, var(--color-primary) 16%, transparent);
  border-color: color-mix(in srgb, var(--color-primary) 38%, transparent);
}
body .app-download-section .app-dl-title{ color: var(--color-text); }
body .app-download-section .app-dl-lead{ color: color-mix(in srgb, var(--color-text) 80%, transparent); }
body .app-download-section .app-dl-perks li{ color: color-mix(in srgb, var(--color-text) 92%, transparent); }
body .app-download-section .app-dl-perks li i{
  color: var(--color-primary-light);
  background: color-mix(in srgb, var(--color-primary) 20%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
}

/* Insignele App Store / Google Play rămân negre; conturul fin le desparte de bandă. */
body .app-download-section .app-dl-text .app-badge{
  border-color: color-mix(in srgb, var(--color-text) 28%, transparent);
}

/* În telefonul desenat, butonul „Comandă" stă tot pe verdele deschis → text închis,
   altfel l-ar lua pe cel deschis redefinit mai sus. */
body .app-download-section .app-dl-screen-cta{ color: var(--color-bg); }


/* ══════════════════════════════════════════════════════════════
   24-butoane-card-si-tooltip.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — butoanele de pe cardul de produs + tooltipul sitului
   Ultima modificare: 2026-09-21 21:25
   Modificari:
     2026-09-21 21:25 — La cererea userului, aceeași rețetă ca benzile (23 / 91): butoanele
                        „Adaugă în coș" / „Alege opțiuni" / „Alege variante" pe verde de
                        cetină ÎNCHIS cu text deschis, la orice tip de produs; tooltipul
                        (`.site-tooltip`, din main.js) negru cu text alb. Se încarcă după 21.
   ═══════════════════════════════════════════════════════════ */

/* Toate trei la fel — se deosebesc doar prin icoană și etichetă. `!important` fiindcă nucleul
   (shop.css, `.product-card-overlay .btn-add-cart`) pune fundalul și culoarea cu !important,
   iar „Alege variante / opțiuni” poartă și ele clasa btn-add-cart. */
.product-card .product-card-overlay .btn,
.product-card .btn-add-cart,
.product-card .btn-pick-options,
.product-card .btn-pick-variant{
  background-color: color-mix(in srgb, var(--color-primary-dark) 55%, var(--color-bg)) !important;
  border: 1px solid color-mix(in srgb, var(--color-primary) 45%, transparent);
  color: var(--color-text) !important;
  box-shadow: 0 10px 24px -12px color-mix(in srgb, #000 70%, transparent);
}
.product-card .product-card-overlay .btn:hover,
.product-card .btn-add-cart:hover,
.product-card .btn-pick-options:hover,
.product-card .btn-pick-variant:hover{
  background-color: color-mix(in srgb, var(--color-primary-dark) 78%, var(--color-bg)) !important;
  border-color: var(--color-primary);
  color: var(--color-text) !important;
  box-shadow: 0 14px 30px -12px color-mix(in srgb, var(--color-primary) 45%, transparent);
}
.product-card .product-card-overlay .btn i,
.product-card .btn-add-cart i,
.product-card .btn-pick-options i,
.product-card .btn-pick-variant i{
  color: var(--color-primary-light);
}
.product-card .product-card-overlay .btn:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Tooltipul sitului: negru, text alb, săgeata la fel. `#fff` e permis aici: fundalul e
   mereu închis (excepția din regula culorilor). */
.site-tooltip{
  background: color-mix(in srgb, #000 88%, var(--color-bg));
  color: #fff;
  border: 1px solid color-mix(in srgb, var(--color-primary) 22%, transparent);
  box-shadow: 0 10px 28px color-mix(in srgb, #000 55%, transparent);
}
.site-tooltip.pos-top::after{ border-top-color: color-mix(in srgb, #000 88%, var(--color-bg)); }
.site-tooltip.pos-bottom::after{ border-bottom-color: color-mix(in srgb, #000 88%, var(--color-bg)); }


/* ══════════════════════════════════════════════════════════════
   30-categorie.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — meniul: /shop si /categorie/<slug> (T3)
   Ultima modificare: 2026-08-28 19:05
   Modificari:
     2026-08-28 19:05 — Portare din propunere (parts/30-categorie.css):
                        scoparea `#ct-meniu` scoasa (clasele exista doar pe
                        paginile de magazin); `.container` si
                        `.show-desktop-down` nu se mai redefinesc (vin din
                        Bootstrap si din `responsive.css`); `.ct-noimg` si
                        `.ct-card-desc` scoase (cer marcaj nou in
                        `product-card.php` — optiunile O-1 si O-2);
                        tratamentul „pizza decupata" pe card scos (nu exista
                        `data-ct-cutout`); cardul de baza sta in 21.

   ⚠️ `category.php`, `shop.php` si `partials/product-card.php` NU se pot
      suprascrie per client. Tot ce urmeaza e CSS peste structura nucleului.

   Comentariile «NUCLEU» arata unde `assets/css/shop.css` are un `#ffffff`
   scris de mana care cade pe tema inchisa. Se acopera aici, iar reparatia
   in nucleu (pentru toti cei 12) e in raport.
   ═══════════════════════════════════════════════════════════ */


/* ═══ 1. RITMUL PAGINII ══════════════════════════════════════ */

.shop-section{ padding: var(--s5) 0 clamp(56px, 7vw, 96px); }


/* ═══ 2. BREADCRUMB (contract partials/breadcrumbs.php) ══════
   Se scrie AICI o singura data — acelasi breadcrumb apare si pe pagina de
   produs si in cos. ⚠️ Capcana cunoscuta: pe banda de brand ajunge la
   contrast 1.00. La noi sta pe FUNDALUL paginii, iar culorile sunt din
   paleta: link `--ct-text-2`, curent `--color-text`, despartitor
   `--ct-text-3`.
   ═══════════════════════════════════════════════════════════ */

.breadcrumb-wrapper{
  padding-top: var(--s5);
  padding-bottom: var(--s2);
  background: transparent;
}

.breadcrumb{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s2);
  margin: 0;
  padding: 0;
  list-style: none;
  background: none;
  font-family: var(--f-body);
  font-size: 13px;
  letter-spacing: .01em;
}

.breadcrumb-item{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  min-height: 24px;
  color: var(--ct-text-2);
}
/* Bootstrap pune singur un despartitor prin `--bs-breadcrumb-divider`;
   il inlocuim cu ghilimeaua noastra, in culoarea potrivita */
.breadcrumb-item + .breadcrumb-item{ padding-left: 0; }
.breadcrumb-item + .breadcrumb-item::before{
  content: "›";
  padding-right: 0;
  color: var(--ct-text-3);
  font-size: 15px;
  line-height: 1;
  transform: translateY(-1px);
}

.breadcrumb-item a{
  color: var(--ct-text-2);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--t) var(--ease), border-color var(--t) var(--ease);
}
.breadcrumb-item a:hover{
  color: var(--color-primary);
  border-bottom-color: color-mix(in srgb, var(--color-primary) 50%, transparent);
}
.breadcrumb-item.active,
.breadcrumb-item.active span{
  color: var(--color-text);
  font-weight: 600;
}


/* ═══ 3. BANDA DE CATEGORIE ══════════════════════════════════
   Efectul e o AURA DIN POZA INSASI, in spate — nu o tenta peste poza.
   ═══════════════════════════════════════════════════════════ */

.category-hero{ padding: var(--s3) 0 var(--s6); }

.category-hero-inner{
  position: relative;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  align-items: center;
  gap: clamp(20px, 3vw, 44px);
  padding: clamp(28px, 3.4vw, 48px) clamp(24px, 3.4vw, 48px);
  border-radius: var(--r-lg);
  border: 1px solid color-mix(in srgb, var(--color-primary) 22%, transparent);
  overflow: hidden;
  isolation: isolate;
  /* structura de fundal a contractului, cu tokenii temei inchise:
     `--color-white` = suprafata inchisa, `--color-primary-lightest` = verde
     adanc. Nicio tenta peste poza, niciun gri. */
  background:
    radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--color-primary) 14%, transparent) 0%, transparent 55%),
    radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--color-accent) 9%, transparent) 0%, transparent 48%),
    linear-gradient(135deg, var(--color-white) 0%, var(--color-primary-lightest) 100%);
  box-shadow:
    0 1px 2px rgba(0,0,0,.35),
    0 18px 48px -18px color-mix(in srgb, var(--color-primary) 26%, transparent);
  transition: box-shadow .6s cubic-bezier(.22,1,.36,1);
}

.category-hero.has-random-bg .category-hero-inner::after{
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--hero-random-bg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  filter: blur(28px) saturate(1.15) brightness(.95);
  opacity: .18;
  z-index: 0;
  pointer-events: none;
  transform: scale(1.05);
  transition: opacity .6s cubic-bezier(.22,1,.36,1),
              filter  .6s cubic-bezier(.22,1,.36,1),
              transform .8s cubic-bezier(.22,1,.36,1);
  -webkit-mask-image: radial-gradient(ellipse at center, rgba(0,0,0,1) 35%, rgba(0,0,0,.4) 70%, rgba(0,0,0,0) 100%);
          mask-image: radial-gradient(ellipse at center, rgba(0,0,0,1) 35%, rgba(0,0,0,.4) 70%, rgba(0,0,0,0) 100%);
}
.category-hero.has-random-bg:hover .category-hero-inner::after{
  opacity: .32;
  filter: blur(18px) saturate(1.3) brightness(1.05);
  transform: scale(1.1);
}
.category-hero.has-random-bg:hover .category-hero-inner{
  box-shadow:
    0 1px 2px rgba(0,0,0,.35),
    0 26px 60px -18px color-mix(in srgb, var(--color-primary) 34%, transparent),
    inset 0 0 90px color-mix(in srgb, var(--color-primary) 7%, transparent);
}

/* aura de brad in colt */
.category-hero-inner::before{
  content: '';
  position: absolute;
  top: -140px; right: -140px;
  width: 380px; height: 380px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--color-primary) 16%, transparent) 0%, transparent 70%);
  z-index: 0;
  pointer-events: none;
}

.category-hero-content,
.category-hero-image{ position: relative; z-index: 2; }

.category-hero-content{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s3);
}

.category-hero-badge{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  align-self: flex-start;
  padding: 6px 13px;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--color-primary) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 34%, transparent);
  color: var(--color-primary);   /* «NUCLEU» folosea --color-primary-dark, prea inchis */
  font-family: var(--f-body);
  font-size: 11.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .18em;
}
.category-hero-badge i{ font-size: 13px; }

.category-hero-title{
  margin: 0;
  font-family: var(--f-display);
  font-size: clamp(30px, 4.2vw, 52px);
  font-weight: 500;
  font-variation-settings: "SOFT" 20, "WONK" 1;
  line-height: 1.06;
  letter-spacing: -.01em;
  /* gradientul contractului, cu capetele din paleta: text → cetina */
  background: linear-gradient(118deg, var(--color-text) 0%, var(--color-primary) 100%);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
}

.category-hero-desc{
  margin: 0;
  max-width: 46ch;
  color: var(--ct-text-2);
  font-size: 16px;
  line-height: 1.6;
  white-space: pre-line;
}

.category-hero-meta{
  display: flex;
  flex-wrap: wrap;
  gap: var(--s2);
  margin-top: var(--s1);
}

.category-hero-count{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 16px;
  border-radius: var(--r-pill);
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  /* «NUCLEU» shop.css:1188 pune `color:#ffffff` — alb pe verdele nostru da
     1.92:1. Pe tema inchisa textul trebuie sa fie `--color-on-primary`. */
  color: var(--color-on-primary);
  font-family: var(--f-body);
  font-size: 13px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  box-shadow: 0 6px 18px -6px color-mix(in srgb, var(--color-primary) 55%, transparent);
}
/* «NUCLEU» pastila are `content:'\f49e'` din Font Awesome; punem punctul de
   cetina, ca sa nu depindem de setul de icoane incarcat */
.category-hero-count::before{
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-on-primary);
  opacity: .55;
}

.category-hero-image{
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  perspective: 1000px;
}

/* aura de jar din spatele mancarii (BRIEF §2), scrisa ca regula, nu ca
   clasa: `category.php` nu se poate suprascrie per client */
.category-hero-image::before{
  content: '';
  position: absolute;
  left: 50%; top: 54%;
  width: 150%; height: 140%;
  transform: translate(-50%, -50%);
  background: radial-gradient(closest-side at 50% 50%,
      color-mix(in srgb, var(--ct-ember) 46%, transparent) 0%,
      color-mix(in srgb, var(--ct-ember) 17%, transparent) 46%,
      transparent 84%);
  z-index: 0;
  pointer-events: none;
}

.category-hero-image img{
  position: relative;
  z-index: 1;
  width: 290px;
  height: 290px;
  max-width: 100%;
  object-fit: cover;
  border-radius: var(--r-lg);
  /* «NUCLEU» shop.css:1229 pune `border:4px solid #ffffff` — rama alba in
     jurul mancarii, pe tema inchisa e o cicatrice. Aici firul de 1px verde. */
  border: 1px solid color-mix(in srgb, var(--color-primary) 26%, transparent);
  box-shadow: 0 26px 60px -18px rgba(0,0,0,.55);
  animation: ctHeroFloat 5.5s ease-in-out infinite;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
.category-hero-image img:hover{ transform: translateY(-6px) rotate(-1deg) scale(1.02); }

@keyframes ctHeroFloat{
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50%      { transform: translateY(-10px) rotate(-1deg); }
}

/* fara poza: iconita categoriei, mare — fallbackul din nucleu */
.category-hero-icon-wrap{
  width: 290px;
  height: 290px;
  max-width: 100%;
}
.category-hero-icon{
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  font-size: 7.5rem;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-lg);
  border: 1px solid color-mix(in srgb, var(--color-primary) 24%, transparent);
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--color-primary) 9%, var(--color-white)) 0%,
              var(--color-white) 100%);
  animation: ctHeroFloat 5.5s ease-in-out infinite;
}


/* ═══ 4. BARA DE SORTARE ═════════════════════════════════════ */

.shop-header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--s4);
  margin-bottom: var(--s5);
  padding-bottom: var(--s4);
  /* banda de brand, aprinsa la mijloc si stinsa spre capete — nu linie gri */
  border-bottom: 0;
  background:
    linear-gradient(90deg, transparent 0%,
      color-mix(in srgb, var(--color-primary) 42%, transparent) 50%,
      transparent 100%) bottom / 100% 1px no-repeat;
}

.shop-header-count{
  font-family: var(--f-body);
  font-size: 14px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--ct-text-2);
  letter-spacing: .02em;
}

.shop-header-controls{
  display: flex;
  align-items: center;
  gap: var(--s3);
}

.shop-filter-toggle{
  display: none;                 /* apare doar sub 992px */
  align-items: center;
  gap: var(--s2);
  min-height: var(--ct-tap);
  padding: 0 var(--s4);
  border-radius: var(--r-pill);
  background: transparent;
  border: 1px solid var(--ct-line-control);   /* control ⇒ contur vizibil */
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color var(--t) var(--ease), color var(--t) var(--ease), background var(--t) var(--ease);
}
.shop-filter-toggle:hover{
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 8%, transparent);
}

/* ── dropdownul de sortare ── */
.sort-dropdown{ position: relative; display: inline-block; }

.sort-dropdown-trigger{
  display: inline-flex;
  align-items: center;
  gap: var(--s3);
  min-width: 216px;
  min-height: var(--ct-tap);
  padding: 0 var(--s4);
  border-radius: var(--r-pill);
  background: var(--color-white);
  border: 1px solid var(--ct-line-control);
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease), transform var(--t) var(--ease);
}
.sort-dropdown-trigger:hover,
.sort-dropdown-trigger[aria-expanded="true"]{
  border-color: var(--color-primary);
  box-shadow: 0 8px 22px -12px color-mix(in srgb, var(--color-primary) 70%, transparent);
  transform: translateY(-1px);
}
.sort-dropdown-icon{ font-size: 17px; color: var(--color-primary); }
.sort-dropdown-label{ flex: 1; text-align: left; white-space: nowrap; }
.sort-dropdown-chevron{
  font-size: 14px;
  color: var(--ct-text-3);
  transition: transform var(--t) var(--ease);
}
.sort-dropdown-trigger[aria-expanded="true"] .sort-dropdown-chevron{
  transform: rotate(180deg);
  color: var(--color-primary);
}

.sort-dropdown-menu{
  position: absolute;
  top: calc(100% + var(--s2));
  right: 0;
  min-width: 252px;
  padding: var(--s1);
  border-radius: var(--r);
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  box-shadow: 0 24px 54px -18px rgba(0,0,0,.75);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px) scale(.97);
  transform-origin: top right;
  /* ⚠️ `visibility` NU intra in tranzitia de durata: daca intra, la deschidere
     meniul e inca `hidden` in prima pictare, iar `focus()` pe primul rand nu
     prinde — dropdownul devine inaccesibil de la tastatura. */
  transition: opacity var(--t) var(--ease),
              transform var(--t) var(--ease),
              visibility 0s linear var(--t);
  z-index: var(--z-dropdown);
}
.sort-dropdown.open .sort-dropdown-menu{
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
  transition: opacity var(--t) var(--ease),
              transform var(--t) var(--ease),
              visibility 0s linear;
}

.sort-dropdown-item{
  display: flex;
  align-items: center;
  gap: var(--s3);
  width: 100%;
  min-height: 44px;
  padding: 0 var(--s3);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 14.5px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.sort-dropdown-item > i:first-child{ font-size: 16px; color: var(--ct-text-3); }
.sort-dropdown-item span{ flex: 1; }
.sort-dropdown-check{ opacity: 0; color: var(--color-primary); font-size: 16px; }

.sort-dropdown-item:not(.active):hover{
  background: var(--ct-surface-3);
  color: var(--color-primary);
}
.sort-dropdown-item:not(.active):hover > i:first-child{ color: var(--color-primary); }

.sort-dropdown-item.active{
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  /* «NUCLEU» shop.css:3344 pune `color:#fff` pe verde. */
  color: var(--color-on-primary);
  font-weight: 700;
}
.sort-dropdown-item.active > i:first-child,
.sort-dropdown-item.active .sort-dropdown-check{
  color: var(--color-on-primary);
  opacity: 1;
}


/* ═══ 5. ASEZAREA: COLOANA DE FILTRE + GRILA ═════════════════ */

.shop-layout{
  display: grid;
  grid-template-columns: 272px 1fr;
  gap: clamp(20px, 2.4vw, 36px);
  align-items: start;
  position: relative;
}

.shop-sidebar{
  position: sticky;
  /* antetul sitului e fix si are ~100px; coloana se opreste SUB el */
  top: 112px;
}

.shop-sidebar-section{
  padding: var(--s4);
  margin-bottom: var(--s3);
  border-radius: var(--r);
  background: var(--color-white);
  border: 1px solid var(--ct-line);
}

.shop-sidebar-title{
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin: 0 0 var(--s3);
  padding-bottom: var(--s3);
  font-family: var(--f-body);
  font-size: 11.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .18em;
  color: var(--ct-text-3);            /* eticheta „eyebrow" din BRIEF §4 */
  border-bottom: 1px solid var(--ct-line);
}
.shop-sidebar-title i{ font-size: 14px; color: var(--color-primary); }

/* ── cardul de cautare (.product-search-card / .psq-*) ── */
.product-search-card{
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--color-primary) 10%, var(--color-white)) 0%, var(--color-white) 62%);
  border-color: color-mix(in srgb, var(--color-primary) 26%, transparent);
}
.product-search-card::before{
  content: '';
  position: absolute;
  top: -55px; right: -55px;
  width: 130px; height: 130px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--color-primary) 22%, transparent) 0%, transparent 70%);
  pointer-events: none;
}
.product-search-card.has-query{
  border-color: color-mix(in srgb, var(--color-primary) 52%, transparent);
}

.psq-field{ position: relative; display: flex; align-items: center; }
.psq-ico{
  position: absolute;
  left: 14px;
  font-size: 16px;
  color: var(--color-primary);
  pointer-events: none;
  transition: transform var(--t-fast) var(--ease);
}
.product-search-card:focus-within .psq-ico{ transform: scale(1.12); }

.psq-input{
  width: 100%;
  height: var(--ct-tap);
  padding: 0 42px 0 40px;
  border-radius: var(--r-pill);
  border: 1px solid var(--ct-line-control);
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 14px;
  font-weight: 500;
  outline: none;
  -webkit-appearance: none;
          appearance: none;
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.psq-input::placeholder{ color: var(--ct-text-3); font-weight: 400; }
.psq-input:focus{
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--color-primary) 18%, transparent);
}
.psq-input::-webkit-search-cancel-button{ -webkit-appearance: none; appearance: none; }

.psq-clear{
  position: absolute;
  right: 6px;
  width: 32px; height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: color-mix(in srgb, var(--color-text) 12%, transparent);
  color: var(--ct-text-2);
  cursor: pointer;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.psq-clear:hover{
  background: var(--color-primary);
  color: var(--color-on-primary);      /* «NUCLEU» shop.css:3738 avea `#fff` */
  transform: rotate(90deg);
}

.psq-meta{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s2);
  margin-top: var(--s3);
  font-size: 12px;
  color: var(--ct-text-2);
}
.psq-scope{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--color-primary) 14%, transparent);
  color: var(--color-primary);
  font-weight: 700;
}
.psq-scope i{ font-size: 12px; }
.psq-count{ font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ── lista de categorii ──
   „Categoriile trebuie sa se distinga la o privire": fiecare rand are icoana
   ei, contorul aliniat pe coloana (cifre tabulare) si, la cea activa, un fir
   de cetina pe muchie + suprafata aprinsa. */
.category-list{ display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 0; list-style: none; }

.category-list-item a{
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--s3);
  min-height: var(--ct-tap);
  padding: 0 var(--s3);
  border-radius: var(--r-sm);
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 14.5px;
  font-weight: 500;
  text-decoration: none;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.category-list-item a > span:first-of-type{
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.category-list-icon{
  flex: 0 0 auto;
  font-size: 17px;
  color: var(--ct-text-3);
  transition: color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.category-list-item a:hover{
  background: var(--ct-surface-3);
  color: var(--color-primary);
}
.category-list-item a:hover .category-list-icon{
  color: var(--color-primary);
  transform: scale(1.1);
}

.category-list-item .count{
  flex: 0 0 auto;
  min-width: 30px;
  padding: 2px 7px;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--color-text) 8%, transparent);
  color: var(--ct-text-2);
  font-size: 11.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.category-list-item.active a{
  background: color-mix(in srgb, var(--color-primary) 13%, transparent);
  color: var(--color-primary);
  font-weight: 700;
}
.category-list-item.active a::before{
  content: '';
  position: absolute;
  left: 0; top: 9px; bottom: 9px;
  width: 2px;
  border-radius: 2px;
  background: var(--color-primary);
}
.category-list-item.active .category-list-icon{ color: var(--color-primary); }
.category-list-item.active .count{
  background: var(--color-primary);
  color: var(--color-on-primary);
}

/* ── sliderul de pret ── */
.price-slider-wrap{ padding: var(--s1) 2px var(--s3); }

.price-slider-labels{
  display: flex;
  justify-content: space-between;
  gap: var(--s2);
  margin-bottom: var(--s4);
}
.price-slider-labels span{
  min-width: 62px;
  padding: 6px 12px;
  border-radius: var(--r-pill);
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  /* «NUCLEU» shop.css:297 avea `color:#fff` pe verde. */
  color: var(--color-on-primary);
  font-family: var(--f-body);
  font-size: 12.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.price-slider-track{
  position: relative;
  height: 6px;
  margin: var(--s1) 6px var(--s2);
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--ct-text-3) 34%, transparent);
}
.price-slider-range{
  position: absolute;
  top: 0;
  height: 100%;
  border-radius: var(--r-pill);
  background: linear-gradient(90deg, var(--color-primary) 0%, var(--color-accent) 100%);
  box-shadow: 0 0 14px -2px color-mix(in srgb, var(--color-accent) 55%, transparent);
}

.price-slider-input{
  position: absolute;
  left: -6px; right: -6px;
  top: -9px;
  width: calc(100% + 12px);
  height: 24px;
  margin: 0;
  background: transparent;
  pointer-events: none;
  -webkit-appearance: none;
          appearance: none;
  z-index: 2;
}
.price-slider-input::-webkit-slider-thumb{
  -webkit-appearance: none;
          appearance: none;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--color-bg);
  border: 3px solid var(--color-primary);
  cursor: grab;
  pointer-events: all;
  box-shadow: 0 4px 14px rgba(0,0,0,.5);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.price-slider-input::-webkit-slider-thumb:hover{
  transform: scale(1.16);
  box-shadow: 0 6px 18px rgba(0,0,0,.55), 0 0 0 6px color-mix(in srgb, var(--color-primary) 20%, transparent);
}
.price-slider-input::-webkit-slider-thumb:active{
  cursor: grabbing;
  background: var(--color-primary);
}
.price-slider-input::-moz-range-thumb{
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--color-bg);
  border: 3px solid var(--color-primary);
  cursor: grab;
  pointer-events: all;
  box-shadow: 0 4px 14px rgba(0,0,0,.5);
}
.price-slider-input::-moz-range-track,
.price-slider-input::-moz-range-progress{ background: transparent; }
.price-slider-input:focus-visible::-webkit-slider-thumb{
  box-shadow: 0 0 0 3px var(--color-bg), 0 0 0 5px var(--color-primary);
}

/* ── antetul panoului de filtre pe mobil ── */
.shop-sidebar-mobile-header{
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  padding-bottom: var(--s4);
  margin-bottom: var(--s4);
  border-bottom: 1px solid var(--ct-line);
}
.shop-sidebar-mobile-title{
  font-family: var(--f-display);
  font-size: 20px;
  font-weight: 500;
  color: var(--color-text);
}
.shop-sidebar-close-btn{
  width: var(--ct-tap);
  height: var(--ct-tap);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ct-line-control);
  border-radius: 50%;
  background: transparent;
  color: var(--color-text);
  font-size: 20px;
  cursor: pointer;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.shop-sidebar-close-btn:hover{
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-on-primary);
}

.sidebar-overlay{
  background: rgba(4, 9, 7, .62);
  -webkit-backdrop-filter: blur(3px);
          backdrop-filter: blur(3px);
  z-index: calc(var(--z-overlay) - 1);
}


/* ═══ 6. GRILA ═══════════════════════════════════════════════
   Cardul de produs e definit in 21-acasa-sectiuni.css (acelasi component
   peste tot). Aici doar grila si cateva reglaje de densitate.
   ═══════════════════════════════════════════════════════════ */

.shop-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--s3);
}
@media (min-width: 768px){
  .shop-grid{ grid-template-columns: repeat(3, 1fr); gap: var(--s5); }
}
.shop-grid-item{ min-width: 0; }

.shop-grid .product-card .product-card-title{ font-size: 18px; }
.shop-grid .product-card .product-card-price .current-price{ font-size: 20px; }


/* ═══ 7. STAREA GOALA SI DERULAREA INFINITA ══════════════════ */

.shop-empty{
  text-align: center;
  padding: clamp(40px, 6vw, 72px) var(--s5);
  border: 1px dashed color-mix(in srgb, var(--color-primary) 26%, transparent);
  border-radius: var(--r-lg);
  background: color-mix(in srgb, var(--color-primary) 4%, transparent);
}
.shop-empty-icon{
  width: 76px; height: 76px;
  margin: 0 auto var(--s4);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--ct-line-control);
  background: var(--color-white);
  color: var(--color-primary);
  font-size: 30px;
}
.shop-empty h3{
  margin: 0 0 var(--s2);
  font-family: var(--f-display);
  font-size: 22px;
  font-weight: 500;
  color: var(--color-text);
}
.shop-empty p{
  margin: 0 0 var(--s5);
  color: var(--ct-text-2);
}

.infinite-scroll-trigger{
  display: flex;
  justify-content: center;
  padding: var(--s6) 0;
  min-height: 84px;
}
.infinite-scroll-loader{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s3);
  opacity: .55;
  transition: opacity var(--t) var(--ease);
}
.infinite-scroll-trigger.is-loading .infinite-scroll-loader{ opacity: 1; }
.loader-dots{ display: flex; gap: 6px; }
.loader-dots span{
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--color-primary);
  animation: ctDotPulse 1.2s ease-in-out infinite;
}
.loader-dots span:nth-child(2){ animation-delay: .15s; }
.loader-dots span:nth-child(3){ animation-delay: .3s; }
@keyframes ctDotPulse{
  0%, 80%, 100% { opacity: .3; transform: scale(.8); }
  40%           { opacity: 1;  transform: scale(1.1); }
}
/* Nucleul tine loaderul la `opacity:0` si il arata doar cat se incarca; tema il mutase
   pe .55, deci textul statea permanent decolorat — 2.92:1. Culoare secundara, opaca. */
.loader-text{ font-size: 13px; color: var(--ct-text-2); opacity: 1; }

.infinite-scroll-end{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  margin-top: var(--s5);
  padding: var(--s5) 0 0;
  font-size: 13.5px;
  color: var(--ct-text-2);
  border-top: 0;
  background:
    linear-gradient(90deg, transparent 0%,
      color-mix(in srgb, var(--color-primary) 34%, transparent) 50%,
      transparent 100%) top / 100% 1px no-repeat;
}
.infinite-scroll-end i{ color: var(--color-primary); font-size: 16px; }


/* ═══ 8. RESPONSIV ═══════════════════════════════════════════ */

/* Tableta si mai jos: coloana de filtre devine panou lateral */
@media (max-width: 991.98px){
  .shop-layout{ grid-template-columns: 1fr; }

  .shop-filter-toggle{ display: inline-flex; }

  .shop-sidebar{ position: static; }
  .shop-sidebar.sidebar-open{
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: min(320px, 88vw);
    z-index: var(--z-overlay);
    padding: var(--s5);
    overflow-y: auto;
    overscroll-behavior: contain;
    background: var(--color-bg);
    border-right: 1px solid var(--ct-line);
    box-shadow: 24px 0 60px -20px rgba(0,0,0,.8);
    animation: ctSlideFromLeft .3s var(--ease-out);
  }
  @keyframes ctSlideFromLeft{
    from { transform: translateX(-100%); }
    to   { transform: translateX(0); }
  }

  .product-search-card{ position: sticky; top: 0; z-index: 3; }
  /* iOS nu mai mareste pagina la focus daca fontul e ≥16px */
  .psq-input{ font-size: 16px; }

  .category-hero-inner{ grid-template-columns: 1.3fr 1fr; }
  .category-hero-image img,
  .category-hero-icon-wrap{ width: 220px; height: 220px; }
}

/* Telefon */
@media (max-width: 767.98px){
  .category-hero{ padding: var(--s2) 0 var(--s5); }
  .category-hero-inner{
    grid-template-columns: 1fr;
    text-align: center;
    padding: var(--s6) var(--s5);
  }
  .category-hero-content{ align-items: center; order: 2; }
  .category-hero-image{ order: 1; }
  .category-hero-image img,
  .category-hero-icon-wrap{ width: 190px; height: 190px; }
  .category-hero-icon{ font-size: 5rem; }
  .category-hero-desc{ max-width: 100%; font-size: 15px; }

  .shop-header{ gap: var(--s3); }
  .shop-header-left{ flex: 1 1 100%; }
  .shop-header-controls{ flex: 1 1 100%; }
  .shop-filter-toggle{ flex: 0 0 auto; }
  .sort-dropdown{ flex: 1; }
  .sort-dropdown-trigger{ min-width: 0; width: 100%; font-size: 13.5px; padding: 0 var(--s3); }
  .sort-dropdown-menu{ right: 0; left: auto; min-width: min(268px, 78vw); }

  .shop-grid .product-card .product-card-title{ font-size: 15.5px; }
  .shop-grid .product-card .product-card-price .current-price{ font-size: 17px; }
}

/* Telefon mic — 360px */
@media (max-width: 400px){
  .shop-grid{ gap: var(--s2); }
  .category-hero-title{ font-size: 27px; }
  .sort-dropdown-trigger .sort-dropdown-label{ overflow: hidden; text-overflow: ellipsis; }
}


/* ═══ 9. MISCARE REDUSA ══════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  .category-hero-image img,
  .category-hero-icon,
  .loader-dots span{ animation: none !important; }
  .shop-sidebar.sidebar-open{ animation: none !important; }
  .category-hero.has-random-bg .category-hero-inner::after,
  .category-hero-inner,
  .sort-dropdown-trigger{ transition: none; }
}


/* ══════════════════════════════════════════════════════════════
   40-produs.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — pagina de produs (T3)
   Ultima modificare: 2026-09-11 16:40
   Modificari:
     2026-09-11 16:40 — Grupurile de optiuni cu 5+ optiuni („Extra burger",
                        „Extra pizza") trec pe DOUA COLOANE de la 576px in sus,
                        cu text si pastile mai stranse ca numele si pretul sa
                        incapa pe acelasi rand. Pe telefon ramane o coloana.
     2026-08-28 19:25 — Portare din propunere (parts/40-produs.css):
                        `#produs-detaliu` → `.product-detail-section`,
                        `#produs-taburi` → `.product-tabs-section`,
                        `#produs-inrudite` → `.related-products-section`
                        (sectiunile REALE emise de `product.php`);
                        `.ct-ico` → `i` (nucleul randeaza Font Awesome);
                        starile reale ale JS-ului: `.pog-error` (nu
                        `.is-incomplete`), `.btn-added`, `.is-disabled`,
                        `.pps-pulse`; adaugat blocul de VARIANTE
                        (`.variant-*`, `.variation-spec`) si mentiunea SGR,
                        care nu existau in propunere.

   ⚠️ `product.php` NU se poate suprascrie per client. Tot ce urmeaza e CSS
      peste structura nucleului. Rezumatul de pret foloseste EXACT clasele
      emise de `assets/js/product.js:495-515`:
        .pps-head > .pps-name + .pps-qty
        .pps-rows > .pps-row.pps-subtotal > .pps-label + .pps-amount
                  > .pps-row.pps-option   > .pps-label + .pps-amount
        .pps-total > .pps-total-label + .pps-amount

   SCOASE (cer marcaj nou — sunt in raport ca optiuni de nucleu):
     suma pe butonul „Adauga in cos" (O-3), ghidajul grupurilor de optiuni
     (O-4: numarul de alegeri, motivul blocarii, „sterge alegerile"),
     eticheta de deasupra titlului la produse similare (O-7), desenul de
     umplutura cand produsul n-are poza (O-2).
   ═══════════════════════════════════════════════════════════ */


/* ═══ 0. CADRUL PAGINII ══════════════════════════════════════ */

.product-detail-section{
  position: relative;
  padding-block-start: var(--s5);
  isolation: isolate;
}

/* lumina difuza din spatele fotografiei — nu e peste poza, e in fundal */
.product-detail-section::before{
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 auto auto 0;
  width: min(760px, 70vw);
  height: min(620px, 60vh);
  pointer-events: none;
  background: radial-gradient(58% 58% at 34% 42%,
              rgba(var(--color-primary-rgb), .07) 0%,
              rgba(var(--color-primary-rgb), .02) 52%,
              transparent 74%);
}

/* Plasa pentru `hidden`: orice regula care pune `display:flex/grid` pe un
   element ascuns il invie (specificitatea bate `[hidden]`). Se repara O
   SINGURA DATA, aici. */
.product-detail-section [hidden],
.product-tabs-section  [hidden],
.related-products-section [hidden]{ display: none !important; }

.product-detail-section .product-breadcrumbs-wrap{ margin-block-end: var(--s5); }


/* ═══ 1. ASEZAREA ════════════════════════════════════════════ */

.product-detail{
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 68px);
  align-items: start;
}
@media (max-width: 1024px){
  .product-detail{ grid-template-columns: 1fr; gap: var(--s6); }
}


/* ═══ 2. GALERIA ═════════════════════════════════════════════ */

.product-gallery{
  position: sticky;
  top: clamp(12px, 5vh, 88px);
  display: flex;
  flex-direction: column;
  gap: var(--s4);
}
@media (max-width: 1024px){
  .product-gallery{ position: static; }
}

/* fotografia ramane CURATA: card cu fir de 1px + BANDA DE BRAND jos.
   Delimitarea se face cu banda in culoarea identitatii, NU cu tenta. */
.product-gallery-main{
  position: relative;
  display: grid;
  place-items: center;
  min-height: clamp(300px, 42vw, 520px);
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  background: var(--color-white);
}
.product-gallery-main::after{
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 3px;
  background: linear-gradient(90deg,
              transparent 0%,
              var(--color-primary) 26%,
              var(--color-accent) 50%,
              var(--color-primary) 74%,
              transparent 100%);
  opacity: .95;
  pointer-events: none;
  z-index: 2;
}
.product-gallery-main #productMainImage{
  display: block;
  width: 100%;
  height: auto;
  max-height: clamp(300px, 42vw, 520px);
  object-fit: cover;
  border-radius: 0;
}

/* ── insignele de pe fotografie ── */
.product-gallery-badges{
  position: absolute;
  inset: var(--s4) auto auto var(--s4);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s2);
  z-index: 3;
}
.product-detail-section .product-card-badge{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 26px;
  padding: 0 var(--s3);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font: 700 11px/1 var(--f-body);
  letter-spacing: .07em;
  text-transform: uppercase;
  white-space: nowrap;
}
.product-detail-section .badge-bestseller,
.product-detail-section .badge-sale{
  background: var(--color-accent);
  color: var(--color-on-accent);
}
.product-detail-section .badge-new{
  background: rgba(var(--color-primary-rgb), .16);
  border-color: rgba(var(--color-primary-rgb), .45);
  color: var(--color-primary);
}

/* ── contorul ── */
.product-gallery-counter{
  position: absolute;
  inset: var(--s4) var(--s4) auto auto;
  z-index: 3;
  min-height: 26px;
  display: inline-flex;
  align-items: center;
  padding: 0 var(--s3);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--color-bg) 78%, transparent);
  color: var(--ct-text-2);
  font: 600 12px/1 var(--f-body);
  font-variant-numeric: tabular-nums;
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
}
.product-gallery-counter span{ color: var(--color-text); }

/* ── miniaturile ── */
.product-gallery-thumbs{
  display: flex;
  gap: var(--s3);
  flex-wrap: wrap;
}
.product-gallery-thumb{
  position: relative;
  width: 72px;
  height: 72px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--ct-line);
  border-radius: var(--r-sm);
  background: var(--ct-surface-2);
  cursor: pointer;
  transition: border-color var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
.product-gallery-thumb img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.product-gallery-thumb:hover{ border-color: var(--ct-line-control); }
.product-gallery-thumb.active{
  border-color: var(--color-primary);
  box-shadow: 0 0 0 1px var(--color-primary);
}
/* starea „aleasa" nu se transmite doar prin culoare: are si un semn */
.product-gallery-thumb.active::after{
  content: "";
  position: absolute;
  inset: auto 4px 4px auto;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 0 2px var(--color-bg);
}
@media (max-width: 640px){
  .product-gallery-thumb{ width: var(--ct-tap); height: var(--ct-tap); }
}


/* ═══ 3. COLOANA DE INFORMATII ═══════════════════════════════ */

.product-info{
  display: flex;
  flex-direction: column;
  gap: var(--s4);
  min-width: 0;
}

.product-info-category{
  align-self: flex-start;
  color: var(--ct-text-3);
  font: 600 11.5px/1 var(--f-body);
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  transition: color var(--t) var(--ease);
}
.product-info-category:hover{ color: var(--color-primary); }

.product-title{
  margin: 0;
  font-family: var(--f-display);
  font-size: clamp(30px, 3.6vw, 48px);
  font-weight: 500;
  font-variation-settings: "SOFT" 20, "WONK" 0;
  line-height: 1.08;
  letter-spacing: -.01em;
  color: var(--color-text);
}

/* recenzii: stare goala ONESTA, fara stele inventate */
.product-rating{
  display: flex;
  align-items: center;
  gap: var(--s2);
  font-size: 13.5px;
  color: var(--ct-text-2);
}
.product-rating .fa-star,
.product-rating .fa-star-half-stroke{ color: var(--ct-ember); }
.product-rating .rating-text{ color: var(--ct-text-3); }
.product-rating a{
  color: var(--color-primary);
  text-decoration: none;
  border-block-end: 1px solid rgba(var(--color-primary-rgb), .4);
}
.product-rating a:hover{ border-block-end-color: var(--color-primary); }

/* ── pretul, ca obiect tipografic ── */
.product-price{
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s3);
}
.product-price .current-price{
  font-family: var(--f-display);
  font-size: clamp(30px, 3.2vw, 40px);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  color: var(--color-text);
}
.product-price .price-prefix{
  color: var(--ct-text-3);
  font: 600 11.5px/1 var(--f-body);
  letter-spacing: .16em;
  text-transform: uppercase;
}
.product-price .old-price{
  color: var(--ct-text-3);
  font-size: 17px;
  text-decoration: line-through;
  font-variant-numeric: tabular-nums;
}
.product-price .old-price + .current-price{ color: var(--ct-ember); }
.product-price .discount-tag{
  padding: 3px var(--s3);
  border-radius: var(--r-pill);
  background: var(--color-accent);
  color: var(--color-on-accent);
  font: 700 12px/1.6 var(--f-body);
}

.product-short-description{
  color: var(--ct-text-2);
  font-size: 16px;
  line-height: 1.62;
  max-width: 56ch;
}
.product-short-description p{ margin: 0 0 var(--s3); }
.product-short-description p:last-child{ margin-bottom: 0; }

/* ── starea produsului ── */
.product-stock-status{
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  gap: var(--s2);
  min-height: 32px;
  /* pe telefon textul se rupe pe doua randuri: ii trebuie aer si interlinie */
  padding: 6px var(--s4);
  border: 1px solid rgba(var(--color-primary-rgb), .30);
  border-radius: var(--r-pill);
  background: rgba(var(--color-primary-rgb), .08);
  color: var(--color-primary);
  font: 600 13px/1.35 var(--f-body);
  text-wrap: balance;
}
.product-stock-status.out-of-stock{
  border-color: color-mix(in srgb, var(--ct-danger) 40%, transparent);
  background: color-mix(in srgb, var(--ct-danger) 10%, transparent);
  color: var(--ct-danger);
}

/* ── mentiunea SGR ── */
.product-sgr-note{
  display: flex;
  align-items: flex-start;
  gap: var(--s3);
  padding: var(--s3) var(--s4);
  border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
  border-left: 3px solid var(--color-primary);
  border-radius: var(--r-sm);
  background: color-mix(in srgb, var(--color-primary) 7%, transparent);
  color: var(--ct-text-2);
  font-size: 13px;
  line-height: 1.55;
}
.product-sgr-note > i{ color: var(--color-primary); font-size: 18px; margin-top: 2px; flex: 0 0 auto; }
.product-sgr-note strong{ display: block; color: var(--color-text); }


/* ═══ 4. VARIANTE (produs variabil) ══════════════════════════ */

.product-variants{ display: flex; flex-direction: column; gap: var(--s4); }

.variant-group-header{
  display: flex;
  align-items: baseline;
  gap: var(--s3);
  margin-bottom: var(--s2);
}
.variant-group-label{
  color: var(--ct-text-3);
  font: 600 11.5px/1 var(--f-body);
  letter-spacing: .18em;
  text-transform: uppercase;
}
.variant-group-chosen{ color: var(--color-text); font-weight: 600; font-size: 13.5px; }
.variant-group-desc{
  margin-bottom: var(--s3);
  color: var(--ct-text-3);
  font-size: 13px;
  line-height: 1.5;
}

.variant-options{ display: flex; flex-wrap: wrap; gap: var(--s2); }
.variant-option{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  min-height: var(--ct-tap);
  padding: 0 var(--s4);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background: var(--ct-surface-2);
  color: var(--color-text);
  font: 600 14px/1 var(--f-body);
  cursor: pointer;
  transition: border-color var(--t) var(--ease), background-color var(--t) var(--ease), color var(--t) var(--ease);
}
.variant-option:hover{ border-color: var(--color-primary); background: var(--ct-surface-3); }
.variant-option.is-selected{
  border-color: var(--color-primary);
  background: var(--color-primary);
  color: var(--color-on-primary);
}
.variant-option.is-disabled{
  opacity: .42;
  cursor: not-allowed;
  text-decoration: line-through;
}

.variant-option-desc{
  display: flex;
  align-items: flex-start;
  gap: var(--s2);
  margin-top: var(--s3);
  color: var(--ct-text-3);
  font-size: 12.5px;
  line-height: 1.45;
}
.variant-option-desc > i{ color: var(--color-primary); margin-top: 2px; flex: 0 0 auto; }

.variation-spec{ display: flex; }
.variation-spec-chip{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px var(--s3);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-pill);
  background: var(--ct-surface-2);
  color: var(--ct-text-2);
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}
.variation-spec-chip > i{ color: var(--color-primary); }
.variation-spec-value{ color: var(--color-text); font-weight: 700; }


/* ═══ 5. GRUPURILE DE OPTIUNI — inima paginii ════════════════ */

.product-option-groups{
  display: flex;
  flex-direction: column;
  gap: var(--s4);
  margin-block-start: var(--s2);
}

.pog-block{
  padding: var(--s4);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background: var(--color-white);
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
/* starea de „mai ai ceva de ales" — clasa REALA pusa de product.js */
.pog-block.pog-error{
  border-color: rgba(var(--color-accent-rgb), .55);
  box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), .16);
}

.pog-header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--s2) var(--s4);
  margin-block-end: var(--s2);
}
.pog-title{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  font-family: var(--f-display);
  font-size: 19px;
  font-weight: 500;
  color: var(--color-text);
}
.pog-emoji{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(var(--color-primary-rgb), .12);
  color: var(--color-primary);
  font-size: 15px;
}
.pog-required{
  color: var(--color-accent);
  font-size: 18px;
  line-height: 1;
}
.pog-rules{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  padding: 3px 9px;
  border-radius: var(--r-pill);
  border: 1px solid var(--ct-line-control);
  color: var(--ct-text-3);
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.pog-description{
  margin-block-end: var(--s3);
  color: var(--ct-text-3);
  font-size: 13.5px;
  line-height: 1.55;
}

/* ── pastilele ── */
.pog-options{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: var(--s2);
}
@media (max-width: 480px){
  .pog-options{ grid-template-columns: 1fr; }
}

.pog-option{
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--s3);
  min-height: var(--ct-tap);
  padding: 9px var(--s3);
  margin: 0;
  border: 1px solid var(--ct-line);
  border-radius: 11px;
  background: var(--ct-surface-2);
  cursor: pointer;
  user-select: none;
  transition: border-color var(--t) var(--ease), background-color var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.pog-option:hover{
  border-color: var(--ct-line-control);
  background: var(--ct-surface-3);
}
.pog-option:active{ transform: translateY(1px); }

/* starea aleasa se citeste din input, nu dintr-o clasa: nucleul nu pune
   niciuna pe eticheta */
.pog-option:has(input:checked){
  border-color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 11%, var(--ct-surface-2));
  box-shadow: 0 0 0 1px rgba(var(--color-primary-rgb), .35);
}

/* ── bifa: controale desenate de noi, NU casetele native minuscule ── */
.pog-option input{
  flex: 0 0 auto;
  appearance: none;
  -webkit-appearance: none;
  width: 22px;
  height: 22px;
  margin: 0;
  border: 1.5px solid var(--ct-line-control);
  background-color: transparent;
  cursor: inherit;
  transition: background-color var(--t-fast) var(--ease),
              border-color var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease);
}
.pog-option input[type="radio"]{ border-radius: 50%; }
.pog-option input[type="checkbox"]{ border-radius: 7px; }

.pog-option input[type="radio"]:checked{
  border-color: var(--color-primary);
  background-color: var(--color-primary);
  box-shadow: inset 0 0 0 4px var(--ct-surface-2);
}
/* Bifa e un `data:` URI SVG: acolo `var()` NU functioneaza (limitare de
   motor). Culoarea e exact `--color-on-primary` din Setari → Identitate;
   daca se schimba paleta, se schimba si hexul de mai jos. */
.pog-option input[type="checkbox"]:checked{
  border-color: var(--color-primary);
  background-color: var(--color-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111318' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 15px 15px;
}
.pog-option input:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}

.pog-option-body{
  display: flex;
  align-items: center;
  gap: var(--s3);
  flex: 1 1 auto;
  min-width: 0;
}
.pog-option-emoji{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  flex: 0 0 auto;
  border-radius: 7px;
  background: rgba(var(--color-primary-rgb), .1);
  color: var(--color-primary);
}
.pog-option-img{
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  border-radius: 7px;
  object-fit: cover;
}
/* poza de umplutura a optiunii: se stinge, ca sa nu para poza reala */
.pog-option-img-placeholder{ opacity: .35; }
.pog-option-name{
  flex: 1 1 auto;
  min-width: 0;
  color: var(--color-text);
  font: 500 14.5px/1.3 var(--f-body);
}
.pog-option-price{
  flex: 0 0 auto;
  color: var(--color-accent);
  font: 700 13px/1 var(--f-body);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ── grupurile LUNGI pe DOUA COLOANE ──────────────────────────
   „Extra burger" (12 optiuni) si „Extra pizza" (24) sunt pe `display_type = list`,
   iar nucleul le tine pe o singura coloana cu `!important` (`.pog-options.is-list`
   din shop.css) — 24 de randuri = ~1050px de derulat doar pentru extrasuri.

   Aici le punem pe doua coloane si strangem putin textul, ca numele SI pretul sa
   incapa pe acelasi rand in coloana ingusta (masurat in pagina reala la 1440:
   coloana = 278px, toate cele 24 de randuri raman pe o linie, zero taieri).
   Inaltimea grupului scade de la ~1050px la 482px.

   NU se atinge nucleul (contractul §1): totul e override in tema clientului.
   NU se schimba `display_type` in CDM — coloana aia e citita si de BistroPOS /
   Delivero (`POSLib.Helpers.DisplayTypeRule`), deci ar muta si afisarea de pe statii.

   `:has(.pog-option:nth-child(5))` = doar grupurile cu 5+ optiuni. „Sosuri" (3)
   ramane o coloana, ca sa nu iasa un rand orfan langa un gol.
   Sub 576px ramane totul ca in nucleu: o coloana, randuri de 48px (tinta de atingere).
   ────────────────────────────────────────────────────────────── */
@media (min-width: 576px){
  .pog-options.is-list:has(.pog-option:nth-child(5)){
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option{
    min-height: 40px !important;
    padding: 6px 10px !important;
    gap: 8px !important;
  }
  /* primul rand al grilei = primele DOUA pastile (nucleul scuteste doar `:first-child`) */
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option:nth-child(-n+2){
    border-top: 0;
  }
  /* linia dintre coloane, in acelasi ton cu liniile dintre randuri */
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option:nth-child(odd){
    border-right: 1px solid color-mix(in srgb, var(--color-border) 70%, transparent);
  }
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option-name{
    font-size: 12.8px !important;
    line-height: 1.25;
  }
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option-price{
    font-size: 12px !important;
    padding: 2px 7px !important;
  }
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option-emoji{
    width: 22px;
    height: 22px;
    font-size: 1rem !important;
  }
  .pog-options.is-list:has(.pog-option:nth-child(5)) .pog-option input{
    width: 17px !important;
    height: 17px !important;
  }
}


/* ═══ 6. ACTIUNILE ═══════════════════════════════════════════ */

.product-actions{
  display: flex;
  flex-direction: column;
  gap: var(--s4);
  padding: var(--s5);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  background: linear-gradient(180deg, var(--ct-surface-2), var(--color-white));
}

/* ── cantitate ── */
.product-quantity{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  flex-wrap: wrap;
}
.product-quantity label{
  margin: 0;
  color: var(--ct-text-3);
  font: 600 11.5px/1 var(--f-body);
  letter-spacing: .18em;
  text-transform: uppercase;
}
.product-quantity .qty-group{
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background: var(--color-bg);
  overflow: hidden;
}
.product-quantity .qty-group .qty-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--ct-tap);
  height: var(--ct-tap);
  border: 0;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.product-quantity .qty-group .qty-btn:hover{ background: rgba(var(--color-primary-rgb), .14); color: var(--color-primary); }
.product-quantity .qty-group .qty-input{
  width: 56px;
  height: var(--ct-tap);
  border: 0;
  border-inline: 1px solid var(--ct-line);
  background: transparent;
  color: var(--color-text);
  text-align: center;
  font: 600 16px/1 var(--f-body);
  font-variant-numeric: tabular-nums;
  -moz-appearance: textfield;
}
.product-quantity .qty-group .qty-input::-webkit-outer-spin-button,
.product-quantity .qty-group .qty-input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }

/* ── rezumatul de pret (clasele emise de product.js) ── */
.product-price-summary{
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: var(--s4);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background: var(--color-bg);
  font-size: 13.5px;
}
.product-price-summary .pps-head{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s3);
  padding-block-end: var(--s2);
  border-block-end: 1px solid var(--ct-line-soft);
  color: var(--color-text);
  font-weight: 600;
}
.product-price-summary .pps-qty{ color: var(--ct-text-3); font-variant-numeric: tabular-nums; }

.product-price-summary .pps-rows{ display: flex; flex-direction: column; gap: 5px; }
.product-price-summary .pps-row{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s4);
  color: var(--ct-text-2);
  font-variant-numeric: tabular-nums;
}
.product-price-summary .pps-row > .pps-label{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.product-price-summary .pps-row.pps-subtotal{ color: var(--color-text); font-weight: 600; }
.product-price-summary .pps-option > .pps-amount{ color: var(--color-accent); font-weight: 600; }

.product-price-summary .pps-total{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s4);
  margin-block-start: var(--s2);
  padding-block-start: var(--s3);
  border-block-start: 1px dashed var(--ct-line-control);
}
.product-price-summary .pps-total-label{
  color: var(--ct-text-3);
  font: 600 11.5px/1 var(--f-body);
  letter-spacing: .18em;
  text-transform: uppercase;
}
.product-price-summary .pps-total-label small{
  font-size: inherit;
  letter-spacing: inherit;
}
.product-price-summary .pps-total .pps-amount{
  font-family: var(--f-display);
  font-size: 27px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  font-variant-numeric: tabular-nums;
  color: var(--color-text);
  transition: color .18s var(--ease), transform .18s var(--ease);
  transform-origin: right center;
}
/* `pps-pulse` e clasa REALA pe care o pune product.js la fiecare recalcul */
.product-price-summary.pps-pulse .pps-total .pps-amount{
  color: var(--color-accent);
  transform: scale(1.06);
}

/* ── butoanele ── */
.product-actions-buttons{
  display: flex;
  align-items: stretch;
  gap: var(--s3);
}
.product-add-to-cart{
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s3);
  min-height: 56px;
  padding: 0 var(--s5);
  border: 1px solid var(--color-primary);
  border-radius: var(--r-pill);
  background: var(--color-primary);
  color: var(--color-on-primary);
  font: 700 15.5px/1 var(--f-body);
  cursor: pointer;
  box-shadow: var(--ct-glow-leaf);
  transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease),
              color var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
.product-add-to-cart:hover{
  background: color-mix(in srgb, var(--color-primary) 88%, var(--ct-mix-lift));
}
.product-add-to-cart:active{ transform: translateY(1px); }
/* confirmarea de dupa adaugare — jarul, o clipa */
.product-add-to-cart.btn-added{
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}
/* blocat: se VEDE ca e blocat, nu doar prin culoare */
.product-add-to-cart.is-disabled,
.product-add-to-cart:disabled{
  background: var(--ct-surface-3);
  border: 1px dashed var(--ct-line-control);
  color: var(--ct-text-2);
  box-shadow: none;
  cursor: not-allowed;
}

.product-favorite-btn{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  min-height: 56px;
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--ct-text-2);
  font-size: 19px;
  cursor: pointer;
  transition: color var(--t) var(--ease), border-color var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
.product-favorite-btn:hover{ color: var(--color-text); border-color: var(--color-text); }
.product-favorite-btn.active{
  color: var(--ct-danger);
  border-color: color-mix(in srgb, var(--ct-danger) 50%, transparent);
  background: color-mix(in srgb, var(--ct-danger) 12%, transparent);
}

/* ── semnale de incredere + meta ── */
.product-trust-info{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--s3);
}
.product-trust-info .trust-item{
  display: flex;
  align-items: center;
  gap: var(--s2);
  padding: var(--s3);
  border: 1px solid var(--ct-line-soft);
  border-radius: var(--r-sm);
  color: var(--ct-text-2);
  font-size: 12.5px;
  line-height: 1.35;
}
.product-trust-info .trust-item i{ color: var(--color-primary); flex: 0 0 auto; }

.product-meta{
  display: flex;
  flex-direction: column;
  gap: 0;
  border-block-start: 1px solid var(--ct-line);
  padding-block-start: var(--s3);
}
.product-meta-row{
  display: flex;
  align-items: baseline;
  gap: var(--s4);
  padding: 7px 0;
  border-block-end: 1px solid var(--ct-line-soft);
  font-size: 13px;
}
.product-meta-row:last-child{ border-block-end: 0; }
.product-meta-label{
  flex: 0 0 120px;
  color: var(--ct-text-3);
  font-weight: 600;
  letter-spacing: .04em;
}
.product-meta-value{ color: var(--ct-text-2); }
.product-meta-value a{
  color: var(--color-primary);
  text-decoration: none;
  border-block-end: 1px solid rgba(var(--color-primary-rgb), .4);
}


/* ═══ 7. TABURI ══════════════════════════════════════════════ */

.product-tabs-section{ padding-block: clamp(40px, 5vw, 72px); }

.product-tabs{
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  background: var(--color-white);
  overflow: hidden;
}
.product-tabs-nav{
  display: flex;
  gap: 0;
  border-block-end: 1px solid var(--ct-line);
  background: var(--ct-surface-2);
  /* pe orizontala se deruleaza (taburi multe pe telefon); pe verticala NU —
     altfel apare o bara de derulare verticala de 1px, vizibila ca dunga */
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.product-tabs-nav::-webkit-scrollbar{ height: 0; width: 0; }
.product-tab-btn{
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  min-height: 52px;
  padding: 0 var(--s5);
  border: 0;
  background: transparent;
  color: var(--ct-text-2);
  font: 600 14px/1 var(--f-body);
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--t) var(--ease), background-color var(--t) var(--ease);
}
.product-tab-btn:hover{ color: var(--color-text); background: var(--ct-surface-3); }
.product-tab-btn.active{ color: var(--color-text); background: var(--color-white); }
.product-tab-btn.active::after{
  content: "";
  position: absolute;
  inset: auto 0 -1px 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--color-primary) 30%,
                              var(--color-primary) 70%, transparent);
}
.product-tab-panel{ padding: clamp(20px, 3vw, 36px); }

.product-description{
  color: var(--ct-text-2);
  font-size: 15.5px;
  line-height: 1.72;
}
.product-description p{ margin: 0 0 var(--s4); }
.product-description h2,
.product-description h3{
  font-family: var(--f-display);
  font-weight: 500;
  color: var(--color-text);
  margin: var(--s5) 0 var(--s3);
}

/* ── recenzii ── */
.reviews-empty{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--s3);
  padding: clamp(28px, 5vw, 56px) var(--s4);
  border: 1px dashed var(--ct-line-control);
  border-radius: var(--r);
  color: var(--ct-text-3);
}
.reviews-empty > i{ color: var(--ct-green-deep); font-size: 30px; }
.reviews-empty p{
  margin: 0;
  color: var(--color-text);
  font-family: var(--f-display);
  font-size: 21px;
  font-weight: 500;
}

.review-item{
  padding: var(--s4) 0;
  border-block-end: 1px solid var(--ct-line-soft);
}
.review-item:last-child{ border-block-end: 0; }
.review-avatar{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--color-primary) 36%, transparent);
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
  color: var(--color-primary);
  font-weight: 700;
}
.review-author{ color: var(--color-text); font-weight: 700; }
.review-date{ color: var(--ct-text-3); font-size: 12.5px; }
.review-stars,
.review-summary-stars{ color: var(--ct-ember); }
.review-summary-number{
  font-family: var(--f-display);
  font-size: 34px;
  font-weight: 500;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}
.review-summary-count{ color: var(--ct-text-3); font-size: 13px; }
.review-verified{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--color-primary);
  font-size: 12px;
  font-weight: 700;
}
.review-content{ color: var(--ct-text-2); line-height: 1.65; }


/* ═══ 8. PRODUSE SIMILARE ════════════════════════════════════
   Cardul e cel global (21-acasa-sectiuni.css); aici doar antetul si grila.
   ═══════════════════════════════════════════════════════════ */

.related-products-section{ padding-block: 0 clamp(48px, 6vw, 88px); }

.related-products-section .section-header-row{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s4);
  flex-wrap: wrap;
  margin-block-end: var(--s6);
}
.related-products-section .section-title-sm{
  margin: 0;
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1.1;
  color: var(--color-text);
}
.related-products-section .section-link{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  color: var(--color-primary);
  font-weight: 700;
  font-size: 14px;
  text-decoration: none;
  border-block-end: 1px solid rgba(var(--color-primary-rgb), .4);
}
.related-products-section .section-link:hover{ border-block-end-color: var(--color-primary); }

.related-products-grid{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s4);
}
@media (max-width: 1024px){
  .related-products-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px){
  .related-products-grid{ grid-template-columns: 1fr; }
}
.related-product-item{ min-width: 0; }


/* ═══ 9. RESPONSIV ═══════════════════════════════════════════ */

@media (max-width: 768px){
  .product-actions{ padding: var(--s4); }
  .product-quantity{ justify-content: flex-start; }
  .product-meta-label{ flex-basis: 100px; }
  .product-tab-btn{ padding: 0 var(--s4); }
}

@media (max-width: 480px){
  .product-gallery-main{ min-height: 260px; }
  .product-title{ font-size: clamp(26px, 8vw, 34px); }
  .pog-block{ padding: var(--s3); }
  .product-actions-buttons{ flex-wrap: wrap; }
  .product-add-to-cart{ flex: 1 1 100%; }
  .product-favorite-btn{ width: 100%; }
  .product-price-summary .pps-total .pps-amount{ font-size: 23px; }
  .product-trust-info{ grid-template-columns: 1fr; }
}

@media (max-width: 380px){
  .product-detail-section .breadcrumb{ font-size: 12px; }
  .product-price .current-price{ font-size: 30px; }
}


/* ═══ 10. MISCARE REDUSA ═════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  .product-price-summary .pps-total .pps-amount{ transition: none; }
  .product-price-summary.pps-pulse .pps-total .pps-amount{ transform: none; }
  .product-add-to-cart,
  .variant-option,
  .pog-option{ transition: none; }
}


/* ══════════════════════════════════════════════════════════════
   41-bara-adauga-in-cos.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — bara flotanta „cantitate + Adauga in cos" (pagina de produs)
   Ultima modificare: 2026-09-15 21:43
   Modificari:
     2026-09-15 21:43 — Creare. Bara apare cat timp butonul REAL „Adauga in
                        cos" nu se vede pe ecran si dispare cand omul ajunge
                        la el. Pe telefon sta DEASUPRA barei `.ct-bar`
                        (Meniu · Suna · Cos), pe desktop pluteste centrat jos.
                        Marcajul il creeaza JS-ul din
                        `theme/templates/partials/footer.php` (blocul
                        `ct-atc-bar`), ca copil direct al <body>.

   Contractul cu JS-ul (nume de clase si variabile scrise de script):
     .ct-atc.is-on        — bara e afisata
     body.ct-atc-page     — pagina are bara (rezerva loc jos, ca ultimul rand
                            de continut sa nu ramana sub ea)
     body.ct-atc-on       — bara e afisata ACUM (butoanele plutitoare urca)
     --ct-bar-h           — inaltimea MASURATA a barei mobile `.ct-bar`
     --ct-atc-lift        — inaltimea MASURATA a barei + spatiul de sub ea
     .ct-atc-btn.is-locked / .is-off / .is-added — starea butonului real

   Zero culori noi: tot din `--color-*` / `--ct-*`, nuantele cu color-mix.
   Tranzitiile doar pe `--t` / `--t-slow`, deci se opresc singure la
   `prefers-reduced-motion`.
   ═══════════════════════════════════════════════════════════ */


/* ── 1. Bara din nucleu iese din joc ─────────────────────────────────
   `mobile-wow.js` din nucleu creeaza pe telefon `.mw-sticky-cart` (z-index
   99, lipita de marginea de jos). La Cetinis ea sta oricum SUB `.ct-bar`
   (z-index 900), deci nu se vedea; o ascundem explicit, ca sa nu existe doua
   bare cu acelasi rol. `product.js` continua sa-i scrie pretul — inofensiv.
   Tema se incarca dupa `mobile-wow.css`, deci specificitatea egala ajunge. */
.mw-sticky-cart{ display: none; }


/* ── 2. Bara — desktop (implicit) ────────────────────────────────── */
.ct-atc{
  position: fixed;
  /* sub bara mobila (900), sub antet (1000+), meniu, cos si notificari */
  z-index: 890;
  left: 50%;
  bottom: calc(var(--s5) + env(safe-area-inset-bottom, 0px));
  /* latimea lasa loc de ~128px pe fiecare parte: in dreapta stau butoanele
     plutitoare (WhatsApp, „sus", asistentul), deci bara nu le atinge nici la
     768px */
  width: min(820px, calc(100vw - 256px));
  display: flex;
  align-items: center;
  gap: var(--s3);
  padding: var(--s2) var(--s2) var(--s2) var(--s2);
  border: 1px solid color-mix(in srgb, var(--color-primary) 32%, var(--ct-line));
  border-radius: var(--r-pill);
  background-color: color-mix(in srgb, var(--ct-surface-2) 92%, #000);
  box-shadow: 0 24px 50px -18px rgba(0, 0, 0, .72), var(--ct-glow-leaf);
  color: var(--color-text);
  -webkit-tap-highlight-color: transparent;

  /* ascunsa: coborata sub marginea ecranului + transparenta. `visibility`
     se stinge abia DUPA ce s-a terminat coborarea. */
  transform: translate(-50%, calc(100% + var(--s7)));
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform var(--t-slow) var(--ease),
              opacity var(--t) var(--ease),
              visibility 0s linear var(--t-slow);
}
.ct-atc.is-on{
  transform: translate(-50%, 0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform var(--t-slow) var(--ease),
              opacity var(--t) var(--ease),
              visibility 0s linear 0s;
}
/* firul de lumina de sus — acelasi limbaj ca la `.ct-bar::before` */
.ct-atc::before{
  content: '';
  position: absolute;
  top: -1px;
  left: 14%;
  right: 14%;
  height: 1px;
  pointer-events: none;
  background-image: linear-gradient(90deg,
    transparent,
    color-mix(in srgb, var(--color-primary) 70%, transparent),
    transparent);
}

/* cat e deschis un panou al platformei, bara nu are ce cauta deasupra lui */
body.menu-open .ct-atc,
body.cart-open .ct-atc{ display: none; }

/* loc rezervat jos, ca ultimul rand de continut sa nu ramana sub bara */
body.ct-atc-page{
  padding-bottom: calc(var(--ct-atc-lift, 80px) + var(--s5));
}


/* ── 3. Poza + nume + pret ───────────────────────────────────────── */
.ct-atc-thumb{
  flex: 0 0 auto;
  display: none;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid var(--ct-line);
  background-color: var(--ct-surface-3);
  object-fit: cover;
}
.ct-atc-info{
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: var(--s3);
}
@media (min-width: 992px){
  .ct-atc-thumb{ display: block; }
  .ct-atc-thumb + .ct-atc-info{ padding-left: 0; }
}
.ct-atc-name{
  font: 600 14px/1.25 var(--f-body);
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ct-atc-price{
  display: flex;
  align-items: baseline;
  gap: 6px;
  white-space: nowrap;
}
.ct-atc-price[hidden]{ display: none; }
.ct-atc-price-lbl{
  font: 600 11px/1 var(--f-body);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}
.ct-atc-price-val{
  font-family: var(--f-display);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.1;
  font-variant-numeric: tabular-nums lining-nums;
  color: var(--color-text);
}


/* ── 4. Cantitatea ───────────────────────────────────────────────── */
.ct-atc-qty{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  height: 48px;
  padding: 0 1px;
  border: 1px solid var(--ct-line);
  border-radius: var(--r-pill);
  background-color: color-mix(in srgb, var(--color-bg) 70%, transparent);
}
.ct-atc-qty-btn{
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--ct-text-2);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  transition: color var(--t) var(--ease), background-color var(--t) var(--ease);
}
.ct-atc-qty-btn:hover{
  color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
}
.ct-atc-qty-btn:disabled{
  color: var(--ct-text-3);
  background: transparent;
  cursor: default;
  opacity: .55;
}
.ct-atc-qty-input{
  width: 38px;
  height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--color-text);
  /* 16px: sub pragul asta iOS mareste pagina cand intri in camp */
  font: 700 16px/1 var(--f-body);
  font-variant-numeric: tabular-nums;
  text-align: center;
  -moz-appearance: textfield;
  appearance: textfield;
}
.ct-atc-qty-input::-webkit-outer-spin-button,
.ct-atc-qty-input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }
.ct-atc-qty-btn:focus-visible,
.ct-atc-qty-input:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: -2px;
}


/* ── 5. Butonul ──────────────────────────────────────────────────── */
.ct-atc-btn{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 48px;
  padding: 0 var(--s5);
  border: 1px solid var(--color-primary);
  border-radius: var(--r-pill);
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  font: 700 15px/1 var(--f-body);
  white-space: nowrap;
  cursor: pointer;
  box-shadow: var(--ct-glow-leaf);
  transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease),
              color var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
.ct-atc-btn:hover{
  background-color: color-mix(in srgb, var(--color-primary) 88%, var(--ct-mix-lift));
}
.ct-atc-btn:active{ transform: translateY(1px); }
.ct-atc-btn:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
.ct-atc-ico{ font-size: 18px; line-height: 1; }
.ct-atc-lbl-short{ display: none; }

/* varianta sau optiunile nu sunt alese: se VEDE ca e blocat, dar raspunde la
   atingere (duce omul la zona de ales) — deci cursorul ramane „mana" */
.ct-atc-btn.is-locked{
  background-color: var(--ct-surface-3);
  border: 1px dashed var(--ct-line-control);
  color: var(--ct-text-2);
  box-shadow: none;
}
/* stoc epuizat / indisponibil */
.ct-atc-btn.is-off{
  background-color: var(--ct-surface-3);
  border: 1px dashed var(--ct-line);
  color: var(--ct-text-3);
  box-shadow: none;
  cursor: not-allowed;
}
/* confirmarea de dupa adaugare — jarul, o clipa (ca la butonul real) */
.ct-atc-btn.is-added{
  background-color: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
  box-shadow: var(--ct-glow-ember);
}


/* ── 6. Telefon: deasupra barei „Meniu · Suna · Cos" ─────────────── */
@media (max-width: 767.98px){
  .ct-atc{
    left: var(--s2);
    right: var(--s2);
    width: auto;
    /* `--ct-bar-h` e masurata de JS si include deja zona sigura de jos a
       iPhone-ului (padding-ul barei). Fara JS ar fi 62px, ca in 90-subsol. */
    bottom: calc(var(--ct-bar-h, 62px) + var(--s2));
    gap: var(--s2);
    padding: 6px;
    border-radius: var(--r-lg);
    /* iese de SUB bara mobila (care are z-index mai mare), nu de nicaieri */
    transform: translateY(calc(100% + var(--s2) + var(--ct-bar-h, 62px)));
  }
  .ct-atc.is-on{ transform: translateY(0); }

  .ct-atc-name{ display: none; }
  .ct-atc-info{ flex: 0 0 auto; padding-left: var(--s2); }
  .ct-atc-price-val{ font-size: 17px; }
  .ct-atc-price{ flex-direction: column; align-items: flex-start; gap: 3px; }
  .ct-atc-price-lbl{ font-size: 10px; }

  .ct-atc-qty{ height: 46px; }
  .ct-atc-qty-input{ width: 32px; }

  .ct-atc-btn{
    flex: 1 1 auto;
    min-width: 0;
    min-height: 46px;
    padding: 0 var(--s3);
    border-radius: calc(var(--r-lg) - 6px);
    font-size: 14.5px;
  }

  /* loc rezervat: bara mobila + bara asta */
  body.ct-atc-page{
    padding-bottom: calc(var(--ct-bar-h, 62px) + var(--ct-atc-lift, 72px));
  }

  /* Butoanele plutitoare (WhatsApp, „sus", asistentul) au pozitia scrisa
     inline de `layout.php` din Setari. NU o rescriem: le ridicam doar cu
     `translate` (proprietate separata de `transform`, deci nu strica
     `.back-to-top.visible{transform:…}`), exact cu inaltimea masurata a barei.
     Tranzitia lor nucleu e `all .3s`, deci urca lin. */
  body.ct-atc-on .whatsapp-float,
  body.ct-atc-on .back-to-top,
  body.ct-atc-on #_aw{
    translate: 0 calc(-1 * var(--ct-atc-lift, 72px));
  }
}

/* telefoane inguste: eticheta scurta, ca pretul si cantitatea sa incapa */
@media (max-width: 519.98px){
  .ct-atc-lbl-long{ display: none; }
  .ct-atc-lbl-short{ display: inline; }
}
@media (max-width: 359.98px){
  .ct-atc-ico{ display: none; }
}

@media print{
  .ct-atc{ display: none; }
}


/* ══════════════════════════════════════════════════════════════
   50-cos-checkout.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — cosul si finalizarea comenzii (T3)
   Ultima modificare: 2026-09-21 10:30
   Modificari:
     2026-09-21 10:30 — FINALIZARE: comutatoarele de la „Date facturare" nu mai arata
                        bulina lui Bootstrap in bifa goala; bifele stau in flux cu gol
                        fix fata de eticheta; cardurile fara antet (Tacamuri, Note,
                        Termeni) au umplutura si sus, nu doar jos.
     2026-08-30 01:35 — MOBIL: randul luat INTREG in flux. Sub 768px se aplicau
                        doua asezari deodata (nucleul + tema) si poza, ancorata
                        absolut de nucleu, cadea peste titlu, optiuni si eticheta
                        „SUBTOTAL", iar subtotalul peste butonul „+". Randul devine
                        placa in culorile temei; caseta cifrei revine la 44px.
                        Tot azi: campul dintr-un grup cu iconita nu mai sare pe
                        rand nou (`width:100%` calca regula Bootstrap din
                        `.input-group`) si metodele de livrare nu mai ies din ecran
                        (grila fara `grid-template-columns` isi umfla pista).
     2026-08-28 19:50 — Portare din propunere (parts/50-cos-checkout.css):
                        scoparea `.ct-cos` scoasa; sumarul cosului rescris pe
                        structura REALA (`.card.cart-summary > .card-body` cu
                        randuri Bootstrap, nu `.cart-summary-row`); tabelul e
                        `#cartTable`, nu `.cart-table`; `.ct-selwrap`,
                        `.ct-fields`/`.ct-field*` inlocuite de clasele
                        Bootstrap ale nucleului; scoase `.ct-freeship*`,
                        `.ct-when*`, `.ct-pickup*`, `.ct-step-*` si
                        `.ct-dialog*` — cer JS si marcaj nou (optiunile O-5,
                        O-6, O-8 din PORTARE §3).

   ⚠️ `cart.php` si `checkout.php` NU se pot suprascrie per client.
      Tabelul cosului il randeaza `assets/js/cart.js`, cu `data-label` pe
      celule — de acolo vine lista de carduri de pe telefon.

   ZONE DE CULOARE (contract CloudShop):
     fundal pagina  --color-bg + --color-text
     card           --color-white (pe tema inchisa = suprafata inchisa)
     banda/buton    --color-on-primary / --color-on-accent, niciodata #fff
     CONTROALE      contur --ct-line-control (--ct-line e ornament, prea slab
                    pentru un control)
   ═══════════════════════════════════════════════════════════ */


/* ═══ 1. CADRUL ══════════════════════════════════════════════ */

.cart-section,
.checkout-section{ padding-block: var(--s5) clamp(48px, 6vw, 88px); }

.cart-section .h3,
.checkout-section .h3,
.cart-section h1,
.checkout-section h1{
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  color: var(--color-text);
}


/* ═══ 2. CAMPURI SI CONTROALE (Bootstrap, imbracate) ═════════ */

.cart-section .form-control,
.checkout-section .form-control,
.checkout-section .form-select{
  width: 100%;
  min-height: 46px;
  /* vezi regula de imediat dupa bloc: in `.input-group`, `width:100%` rupe randul */
  padding: 11px 14px;
  font-family: var(--f-body);
  font-size: 15px;
  line-height: 1.4;
  color: var(--color-text);
  /* Fundal ABIA sugerat si contur NEUTRU. Verdele aprins pe fiecare camp
     (--ct-surface-3 + --ct-line-control) facea din formular un sir de blocuri grele;
     verdele ramane unde inseamna ceva: la focus. Reper: porcusorul. */
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-radius: 10px;
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
/* CAMPUL DINTR-UN GRUP CU ICONITA — latimea o da Bootstrap, nu noi.
   Bootstrap tine grupul pe un rand cu `.input-group > .form-control{flex:1 1 auto;
   width:1%}`. Regula noastra de mai sus are aceeasi specificitate (0,2,0) dar vine
   mai tarziu, deci castiga `width:100%`; iar `.input-group` are `flex-wrap:wrap`
   => campul cere toata latimea si SARE PE RANDUL URMATOR, lasand iconita singura
   deasupra lui. Se vedea la fiecare camp din finalizarea comenzii, pe TOATE
   ecranele, inclusiv pe calculator (masurat 30 aug: grup de 61px in loc de 46px).
   Judetul si Orasul aratau corect doar fiindca sunt select2, nu `.form-control`. */
.cart-section .input-group > .form-control,
.checkout-section .input-group > .form-control,
.checkout-section .input-group > .form-select{
  width: 1%;
  min-width: 0;
  flex: 1 1 auto;
}

.checkout-section .form-select{ cursor: pointer; }
.checkout-section .form-select option{ background: var(--ct-surface-2); color: var(--color-text); }
.cart-section .form-control::placeholder,
.checkout-section .form-control::placeholder{ color: var(--ct-text-3); opacity: .85; }
.cart-section .form-control:focus,
.checkout-section .form-control:focus,
.checkout-section .form-select:focus{
  outline: none;
  border-color: var(--color-primary);
  background: var(--ct-surface-3);
  color: var(--color-text);
  box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb), .22);
}
.checkout-section textarea.form-control{ min-height: 96px; resize: vertical; line-height: 1.55; }
.checkout-section .form-control.is-invalid,
.checkout-section .form-select.is-invalid{
  border-color: var(--ct-danger);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ct-danger) 18%, transparent);
}

.checkout-section .form-label{
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ct-text-2);
}

.checkout-section .input-group-text{
  display: grid;
  place-items: center;
  min-width: 46px;
  color: var(--ct-text-3);
  font-size: 17px;
  /* ACELASI fundal ca al campului. Cu fundal mai inchis, iconita arata ca o gaura
     lipita de casuta, iar controlul se citea ca doua bucati. */
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-right: 0;
  border-radius: 10px 0 0 10px;
}
.checkout-section .input-group:focus-within .input-group-text{
  border-color: var(--color-primary);
  color: var(--color-primary);
}

/* --- CAMPURI MAI MICI PE ECRANE LATE (cerere user, 10 sep 2026) ---------------
   Inaltimea vine din `checkout.css` (comun, toti clientii) printr-un selector cu ID
   si `!important`: `#checkoutForm .form-control{min-height:46px!important}`. Ca s-o
   pot cobori DOAR aici imi trebuie specificitate mai mare, iar `.checkout-section`
   e PARINTELE formularului, deci `.checkout-section #checkoutForm` (1-2-0) bate
   `#checkoutForm` (1-1-0). Fara ID-ul in fata, regula comuna ar castiga si n-ar
   avea niciun efect.
   Pe telefon NU coboram: sub 767.98px regula comuna pune 46px tocmai ca tinta de
   atingere sa fie destul de mare si ca textul sa nu declanseze marirea din iOS. */
@media (min-width: 768px) {
  .checkout-section #checkoutForm .form-control,
  .checkout-section #checkoutForm .form-select {
    min-height: 34px !important;
    padding: 5px 11px !important;
    font-size: 13.5px !important;
  }
  .checkout-section #checkoutForm .input-group-text {
    min-height: 34px !important;
    min-width: 34px !important;
    padding: 0 9px !important;
    font-size: 14px !important;
  }
  .checkout-section #checkoutForm .select2-container--default .select2-selection--single {
    height: 34px !important;
    font-size: 13.5px !important;
  }
  .checkout-section #checkoutForm .select2-container--default .select2-selection--single .select2-selection__rendered {
    font-size: 13.5px !important;
    line-height: 32px;
  }
  .checkout-section #checkoutForm .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 32px !important;
  }
  .checkout-section #checkoutForm .select2-icon-prepend {
    min-height: 34px !important;
    width: 34px;
    font-size: 14px !important;
  }
  .checkout-section #checkoutForm textarea.form-control {
    min-height: 68px !important;
  }
  /* Randurile si etichetele urmeaza campurile: degeaba scazi casuta daca ramane
     acelasi gol intre randuri — formularul tot lung arata. */
  .checkout-section #checkoutForm .row.g-3 { --bs-gutter-y: 0.8rem; }
  .checkout-section #checkoutForm .row.g-4 { --bs-gutter-y: 1.1rem; }
  .checkout-section #checkoutForm .form-label {
    font-size: 11.5px;
    margin-bottom: 4px;
  }
}

/* CASUTA ICONITEI + COLTURILE — tot cu ID in fata, din acelasi motiv.
   `checkout.css` (comun) ii da iconitei fundalul PAGINII
   (`#checkoutForm .input-group-text{background:var(--color-bg)}`) si rotunjeste campul
   cu `--border-radius`, care la noi e 14px. Rezultatul: casuta iconitei arata ca o gaura
   lipita de camp, iar campul de 38px cu colturi de 14px se citea ca o pastila latita.
   Vrem un singur control, cu colturi potolite. */
.checkout-section #checkoutForm .input-group-text {
  background: var(--ct-surface-2) !important;
  border-color: var(--ct-line) !important;
  border-right: 0 !important;
}
/* Colturile din STANGA au nevoie de acelasi selector ca in checkout.css
   (`> .input-group-text:first-child`, specificitate 1-2-1) plus `.checkout-section`,
   altfel regula comuna cu `--border-radius` (14px la noi) castiga si iconita ramane
   mai rotunda decat campul de langa ea. */
.checkout-section #checkoutForm .input-group > .input-group-text:first-child {
  border-radius: 10px 0 0 10px !important;
}
.checkout-section #checkoutForm .input-group > .input-group-text:first-child + .form-control:last-child,
.checkout-section #checkoutForm .input-group > .input-group-text:first-child + .form-select:last-child {
  border-top-right-radius: 10px !important;
  border-bottom-right-radius: 10px !important;
}
.checkout-section #checkoutForm .form-control,
.checkout-section #checkoutForm .form-select {
  border-radius: 10px;
}

/* bife */
.checkout-section .form-check-input{
  flex: 0 0 auto;
  appearance: none;
  -webkit-appearance: none;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  border: 1px solid var(--ct-line-control);
  border-radius: 6px;
  background-color: var(--ct-surface-3);
  cursor: pointer;
  transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease);
}
.checkout-section .form-check-input[type="radio"]{ border-radius: 50%; }
/* Bifa e un `data:` URI SVG: acolo `var()` NU functioneaza. Culoarea e exact
   `--color-on-primary` calculat de layout.php pentru verdele Cetinis. */
.checkout-section .form-check-input:checked{
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111318' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-size: 15px;
  background-position: center;
  background-repeat: no-repeat;
}
.checkout-section .form-check-input:focus{
  box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb), .22);
  border-color: var(--color-primary);
}
.checkout-section .form-check-label{
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--ct-text-2);
  cursor: pointer;
}
.checkout-section .form-check-label a{
  color: var(--color-primary);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--color-primary-rgb), .4);
}
@media (pointer: coarse){
  .checkout-section .form-check-input{ width: 26px; height: 26px; }
}
/* Asezarea bifelor. `.form-check` e flex centrat (nucleul), dar Bootstrap pastreaza
   si vechiul truc cu umplutura la stanga + marginea negativa pe bifa — iar umplutura
   difera: 24.75px la bifele simple, 41.25px la comutatoare. In flex trucul nu mai
   pune bifa in umplutura, ci o trage peste inceputul etichetei: textul pornea lipit
   de bifa si la alta distanta de la un rand la altul. Acum bifa sta in flux, cu un
   gol fix intre ea si eticheta. Atentie: flex-ul vine din nucleu DOAR pe ecran ingust;
   pe desktop `.form-check` era bloc simplu, deci bifa statea aliniata la marginea de sus
   a randului si golul era doar spatiul dintre cuvinte (masurat: 3px, bifa cu 5px mai sus
   decat textul). De aceea flex-ul se pune aici, pe toate latimile. */
.checkout-section .form-check{
  display: flex;
  padding-left: 0;
  gap: var(--s3);
  align-items: center;
}
.checkout-section .form-check .form-check-input{
  float: none;
  margin: 0;
}
/* „Persoana juridica" si „Adresa de facturare diferita" sunt `form-switch` in nucleu.
   Tema le deseneaza ca bife, dar Bootstrap le lasa pe fundal desenul bulinei de
   comutator (cerc gri, aliniat la stanga) — de aici „punctul" din mijlocul bifei goale.
   Bifate, bifa temei castiga deja (aceeasi specificitate, tema vine ultima). */
.checkout-section .form-switch .form-check-input:not(:checked){
  background-image: none;
}


/* ═══ 3. COSUL — tabelul ═════════════════════════════════════ */

.cart-content .table-responsive{
  background: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
}

#cartTable{
  width: 100%;
  margin: 0;
  border-collapse: collapse;
  color: var(--color-text);
  --bs-table-bg: transparent;
  --bs-table-color: var(--color-text);
}
#cartTable thead th{
  padding: var(--s3) var(--s4);
  font-family: var(--f-body);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ct-text-3);
  text-align: left;
  background: color-mix(in srgb, var(--ct-surface-2) 70%, var(--color-white));
  border-bottom: 1px solid var(--ct-line);
}
#cartTable thead th:last-child,
#cartTable thead th.text-end{ text-align: right; }
#cartTable tbody td{
  padding: var(--s4);
  border-bottom: 1px solid var(--ct-line-soft);
  background: transparent;
  vertical-align: middle;
}
#cartTable tbody tr:last-child td{ border-bottom: 0; }
#cartTable tbody tr{ transition: background var(--t) var(--ease); }
#cartTable tbody tr:hover td{ background: color-mix(in srgb, var(--ct-surface-3) 55%, transparent); }

.cart-item-product{ display: flex; align-items: center; gap: var(--s4); min-width: 0; }
.cart-item-image{
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 88px;
  height: 88px;
  border-radius: var(--r);
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  overflow: hidden;
}
/* lumina de jar sub mancare — nu tenta PESTE poza */
.cart-item-image::before{
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(60% 55% at 50% 62%,
             rgba(var(--color-accent-rgb), .20), transparent 72%);
}
.cart-item-image img{
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cart-item-title{ min-width: 0; }
.cart-item-title > a{
  font-family: var(--f-display);
  font-size: 18px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--color-text);
  text-decoration: none;
}
.cart-item-title > a:hover{ color: var(--color-primary); }

.cart-item-forced-badge{
  display: inline-flex;
  align-items: center;
  margin-left: 6px;
  padding: 2px 8px;
  border-radius: var(--r-pill);
  border: 1px solid color-mix(in srgb, var(--color-primary) 40%, transparent);
  background: color-mix(in srgb, var(--color-primary) 12%, transparent);
  color: var(--color-primary);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.cart-item-forced-qty{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--ct-text-3);
  font-variant-numeric: tabular-nums;
}

.cart-item-price,
.cart-item-subtotal{
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cart-item-subtotal{
  font-family: var(--f-display);
  font-size: 20px;
  font-weight: 500;
  color: var(--color-text);
}

/* cantitatea */
.cart-item-qty{ text-align: center; }
.qty-selector{
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-pill);
  background: var(--ct-surface-3);
}
.qty-selector .qty-btn{
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  background: transparent;
  color: var(--color-text);
  font-size: 15px;
  transition: background var(--t) var(--ease), color var(--t) var(--ease);
}
.qty-selector .qty-btn:hover{
  background: var(--color-primary);
  color: var(--color-on-primary);
}
.qty-selector .qty-input{
  width: 40px;
  height: 36px;
  padding: 0;
  text-align: center;
  border: 0;
  background: transparent;
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  -moz-appearance: textfield;
}
.qty-selector .qty-input::-webkit-outer-spin-button,
.qty-selector .qty-input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }

.cart-item-remove{ text-align: right; width: 60px; }
.btn-remove-item{
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid transparent;
  border-radius: 50%;
  background: transparent;
  color: var(--ct-text-3);
  font-size: 17px;
  cursor: pointer;
  transition: color var(--t) var(--ease), border-color var(--t) var(--ease), background var(--t) var(--ease);
}
.btn-remove-item:hover{
  color: var(--ct-danger);
  border-color: color-mix(in srgb, var(--ct-danger) 45%, transparent);
  background: color-mix(in srgb, var(--ct-danger) 10%, transparent);
}
@media (pointer: coarse){
  .btn-remove-item{ width: var(--ct-tap); height: var(--ct-tap); }
  .qty-selector .qty-btn{ width: 40px; height: 40px; }
}

/* Tabelul devine lista de carduri sub 900px. `cart.js` pune `data-label` pe
   celule, deci eticheta din stanga se ia de acolo; celula „Produs" nu are
   eticheta si nici nu-i trebuie. */
@media (max-width: 899.98px){
  #cartTable thead{
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
  #cartTable,
  #cartTable tbody,
  #cartTable tr,
  #cartTable tbody td{ display: block; width: 100%; }
  /* Randul e o PLACA, nu o linie de lista: sub 768px nucleul ii da oricum
     rama si coltul rotunjit (`responsive.css` `#cartTable tr`), iar o singura
     linie de jos peste rama aia arata ca o scapare. Le scriem pe toate in
     culorile temei, ca placa sa fie aceeasi si intre 768 si 900px, unde
     nucleul nu se aplica.
     `min-height` de la nucleu (108px, calculat pentru o poza scoasa din flux)
     se anuleaza — de la reasezarea de mai jos poza e in flux si inaltimea
     si-o da continutul. */
  #cartTable tbody tr{
    position: relative;
    min-height: 0;
    margin-bottom: var(--s4);
    padding: var(--s4);
    border: 1px solid var(--ct-line);
    border-radius: var(--r);
    background-color: var(--ct-surface-2);
  }
  #cartTable tbody td{ padding: 0; border: 0; }
  #cartTable tbody td.cart-item-product{ padding-right: 56px; }
  /* specificitate egala cu regula `tbody td` de mai sus, altfel `display:block`
     ar castiga si randul n-ar mai avea etichetele pe stanga */
  #cartTable tbody td.cart-item-price,
  #cartTable tbody td.cart-item-qty,
  #cartTable tbody td.cart-item-subtotal{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s3);
    margin-top: var(--s3);
    padding-top: var(--s3);
    border-top: 1px dashed var(--ct-line-soft);
    text-align: right;
  }
  #cartTable tbody td.cart-item-price{ flex-wrap: wrap; }
  #cartTable tbody td.cart-item-price::before,
  #cartTable tbody td.cart-item-qty::before,
  #cartTable tbody td.cart-item-subtotal::before{
    content: attr(data-label);
    font-size: var(--fs-label);
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ct-text-3);
    font-weight: 600;
    margin-right: auto;
  }
  #cartTable tbody td.cart-item-remove{
    position: absolute;
    top: var(--s4);
    right: var(--s4);
    width: auto;
    margin: 0;
    padding: 0;
    border: 0;
  }
  .cart-item-image{ width: 72px; height: 72px; }
  /* tinte de atingere ≥44px pe ecranele mici, indiferent daca browserul
     raporteaza sau nu „pointer: coarse" */
  .qty-selector .qty-btn{ width: 44px; height: 44px; }
  .qty-selector .qty-input{ height: 44px; width: 46px; }
  .btn-remove-item{ width: 44px; height: 44px; }

  /* ═══ REASEZAREA RANDULUI — de ce exista blocul asta ═══════════════════
     Sub 768px se aplica DOUA asezari de mobil deodata, si fiecare castiga
     cate o bucata:
       · nucleul (`site/assets/css/responsive.css`) scoate poza din flux
         (`position:absolute; left:12px`) si ii rezerva o banda pe rand,
         prin `padding-left:110px`;
       · noi (regula `#cartTable tbody tr` de mai sus) punem `padding:var(--s4)`
         si castigam la specificitate (1,0,2 > 1,0,1) — deci BANDA DISPARE,
         dar poza ramane ancorata absolut peste ea.
     Masurat pe 30 aug 2026, la 360px: poza acoperea titlul cu 80x42 px,
     eticheta „SUBTOTAL" si optiunile variantei cu inca 80px, iar subtotalul,
     ancorat `bottom:14px`, cadea peste butonul „+" pe toata latimea lui.
     Aici luam randul INTREG in flux, cum a fost gandita tema. Selectorii sunt
     dimensionati anume ca sa bata regulile nucleului — inclusiv pe cele cu
     `!important`; ordinea in fisier NU e suficienta. */

  /* (1,1,2)+imp > (1,1,0)+imp — `responsive.css` „.cart-item-product{display:block}".
     `padding-right` are nevoie de `!important` pentru un motiv separat: nucleul
     pune `#cartTable tr td{ padding: 0 !important }` (1,0,2)+imp, iar `!important`
     bate specificitatea — deci cei 56px rezervati mai sus pentru cosul de gunoi
     erau sterși si titlul lung intra SUB buton (masurat: 44x44 de suprapunere). */
  #cartTable tbody td.cart-item-product{
    display: flex !important;
    align-items: flex-start;
    gap: var(--s4);
    padding-right: 56px !important;
  }
  /* (1,2,2) > (1,2,0) — poza se intoarce in flux.
     ⚠️ `relative`, NU `static`. Poza are un halou desenat cu `::before` si
     `inset: 0`; un pseudo-element absolut se ancoreaza la cel mai apropiat
     STRAMOS POZITIONAT. Cu `static` pe poza, acela devine `tr` (are
     `position:relative`), deci haloul se intindea peste TOT randul — si, fiind
     copil al ancorei pozei, inghitea atingerile: „+" si „−" duceau la pagina
     produsului in loc sa schimbe cantitatea (raportat de user, 30 aug).
     `relative` il tine in flux SI ii da inapoi ancora.
     `top`/`left` se anuleaza explicit: nucleul le lasa pe 12px pentru ancorarea
     lui absoluta, iar la `relative` acelea ar DECALA poza cu 12px pe ambele axe. */
  #cartTable tbody td.cart-item-product .cart-item-image{
    position: relative;
    top: auto;
    left: auto;
    flex: 0 0 auto;
    width: 72px;
    height: 72px;
  }
  #cartTable tbody td.cart-item-product .cart-item-image img{
    width: 100%;
    height: 100%;
  }
  /* nucleul pune `padding-right:36px` pe titlu pentru cosul de gunoi; la noi
     spatiul e deja rezervat pe CELULA (`padding-right:56px`), deci l-ar dubla */
  #cartTable tbody td.cart-item-product .cart-item-title{
    flex: 1 1 auto;
    min-width: 0;
    padding-right: 0;
  }

  /* (1,1,2) > (1,1,0) — subtotalul coboara de peste butonul „+" */
  #cartTable tbody td.cart-item-subtotal{
    position: static;
    bottom: auto;
    right: auto;
    line-height: 1.3;
  }

  /* (1,2,2)+imp > (1,2,0)+imp. Nucleul forteaza 28px, calculati pe vremea cand
     `mobile-wow.css` nu impunea inca `min-height:44px` pe butoane: azi butonul
     iese 44 (din `min-height`) iar CASETA CIFREI ramane 34x28, adica mica si
     dezaliniata in pilula. Le aducem pe amandoua la ținta de atingere. */
  #cartTable tbody td.cart-item-qty .qty-btn{
    width: var(--ct-tap) !important;
    height: var(--ct-tap) !important;
    font-size: 15px !important;
  }
  #cartTable tbody td.cart-item-qty .qty-input{
    width: 46px !important;
    height: var(--ct-tap) !important;
    font-size: 16px !important;
  }
}


/* ═══ 4. COSUL — sumarul (card Bootstrap) ════════════════════ */

.cart-summary.card,
.checkout-summary{
  background: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.cart-summary .card-body{ padding: var(--s5); }
.cart-summary .card-title{
  margin: 0 0 var(--s4);
  padding-bottom: var(--s3);
  border-bottom: 1px solid var(--ct-line);
  font-family: var(--f-display);
  font-size: 18px;
  font-weight: 600;
  color: var(--color-text);
}
.cart-summary .card-body > .d-flex{
  font-size: 14.5px;
  color: var(--ct-text-2);
  font-variant-numeric: tabular-nums;
}
.cart-summary .card-body > .d-flex.fw-bold{
  color: var(--color-text);
  font-family: var(--f-body);
}
.cart-summary .card-body > .d-flex.fw-bold > span:last-child{
  font-family: var(--f-display);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.1;
  color: var(--color-text) !important;   /* Bootstrap `.text-primary` pe #cartTotal */
}
.cart-summary hr{
  margin: var(--s4) 0;
  border: 0;
  border-top: 1px solid var(--ct-line);
  opacity: 1;
}
.cart-summary #freeShippingNote{
  display: block;
  margin-top: var(--s4);
  font-size: 12.5px;
  color: var(--ct-text-3);
}
.cart-summary #checkoutBtn{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 56px;
  border: 0;
  border-radius: var(--r-pill);
  background: linear-gradient(180deg,
             color-mix(in srgb, var(--color-accent) 92%, var(--ct-mix-lift)),
             var(--color-accent));
  color: var(--color-on-accent);
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: .01em;
  box-shadow: var(--ct-glow-ember);
  transition: transform var(--t) var(--ease), filter var(--t) var(--ease);
}
.cart-summary #checkoutBtn:hover{ transform: translateY(-1px); filter: brightness(1.05); }

.cart-min-order-alert,
.checkout-min-order-alert{
  color: var(--color-text);
  border-radius: var(--r-sm) !important;
}
.cart-sgr-info{
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-top: var(--s3);
  font-size: 12px;
  color: var(--ct-text-3);
}
.cart-sgr-info i{ color: var(--color-primary); margin-top: 2px; }

/* cuponul */
.cart-coupon .form-control{ border-radius: var(--r-pill); }
.cart-coupon .btn{ border-radius: var(--r-pill); }
.coupon-message{ margin-top: 6px; color: var(--ct-text-3); }
.coupon-message.text-success{ color: var(--color-primary) !important; }
.coupon-message.text-danger{ color: var(--ct-danger) !important; }


/* ═══ 5. COS GOL ═════════════════════════════════════════════ */

.cart-empty{
  background: var(--color-white);
  border: 1px dashed var(--ct-line-control);
  border-radius: var(--r-lg);
  padding: clamp(48px, 8vw, 88px) var(--s5) !important;
}
.cart-empty > i,
.cart-empty .cart-empty-icon{
  display: grid;
  place-items: center;
  width: 84px;
  height: 84px;
  margin: 0 auto var(--s4);
  border-radius: 50%;
  font-size: 38px;
  color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 28%, transparent);
}
.cart-empty h2,
.cart-empty h3,
.cart-empty .cart-empty-title{
  font-family: var(--f-display);
  font-size: var(--h3);
  font-weight: 500;
  color: var(--color-text);
}
.cart-empty p{ max-width: 44ch; margin-inline: auto; color: var(--ct-text-2); }


/* ═══ 6. FINALIZAREA — pasii de sus ══════════════════════════ */

.checkout-progress{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  flex-wrap: nowrap;
}
.checkout-progress-step{
  display: flex;
  align-items: center;
  gap: var(--s3);
  background: none;
  border: 0;
  padding: var(--s2) var(--s3);
  border-radius: var(--r-pill);
  color: var(--ct-text-3);
  font-family: var(--f-body);
  font-size: 13px;
  font-weight: 600;
  transition: color var(--t) var(--ease), background var(--t) var(--ease);
}
.checkout-progress-icon{
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--ct-line-control);
  color: var(--ct-text-3);
  background: var(--color-white);
  font-size: 15px;
  transition: background var(--t) var(--ease), color var(--t) var(--ease), border-color var(--t) var(--ease);
}
.checkout-progress-step.done{ color: var(--ct-text-2); }
.checkout-progress-step.done .checkout-progress-icon{
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 12%, var(--color-white));
}
.checkout-progress-step.active{ color: var(--color-text); }
.checkout-progress-step.active .checkout-progress-icon{
  background: var(--color-primary);
  color: var(--color-on-primary);
  border-color: var(--color-primary);
  box-shadow: var(--ct-glow-leaf);
}
.checkout-progress-line{
  flex: 1 1 auto;
  max-width: 96px;
  height: 1px;
  background: var(--ct-line);
}
.checkout-progress-line.done{ background: var(--color-primary); opacity: .55; }

@media (max-width: 560px){
  .checkout-progress-label{ display: none; }
  .checkout-progress-step.active .checkout-progress-label{ display: inline; }
  .checkout-progress-line{ max-width: 40px; }
}


/* ═══ 7. FINALIZAREA — pasii ═════════════════════════════════ */

.checkout-step{
  background: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  /* Umplutura pe ORIZONTALA sta AICI, pe card, nu pe fiecare bucata dinauntru.
     Inainte era `0 0 var(--s5)` si se bazata pe `.checkout-block` ca sa distanteze
     continutul — dar in sablonul de finalizare exista UN SINGUR `.checkout-block`
     in toata pagina. Restul (randurile de campuri, metodele de livrare, bifele de
     facturare) atarnau direct in card, deci campurile ieseau LIPITE de marginea lui.
     Randurile Bootstrap au margine negativa pe lateral, care musca exact din
     umplutura asta — asa se aliniaza coloanele fix pe marginea continutului. */
  padding: 0 var(--s5) var(--s5);
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.checkout-step-header{
  display: flex;
  align-items: center;
  gap: var(--s3);
  /* Fara umplutura laterala proprie: o are deja cardul (altfel s-ar aduna de doua ori). */
  padding: var(--s4) 0;
}
/* Aceeasi poveste: bucata isi punea singura umplutura, acum o are de la card. */
.checkout-step .checkout-block{ padding-inline: 0; }
/* Cardurile FARA antet (Tacamuri, Note comanda, Acord marketing, Termeni) mosteneau
   `padding-top: 0` gandit pentru cardurile cu antet (acolo spatiul de sus il da
   antetul). Continutul statea lipit de marginea de sus, cu 24px liber doar jos. */
.checkout-step:not(:has(> .checkout-step-header)){
  padding-top: var(--s5);
}
.checkout-step:not(:has(> .checkout-step-header)) > .form-check{
  margin-bottom: 0;
}
.checkout-step-number{
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  font-size: 14px;
  font-weight: 700;
  color: var(--color-on-primary);
  background: var(--color-primary);
  border: 1px solid var(--color-primary);
}
.checkout-step-title{
  margin: 0;
  font-family: var(--f-display);
  font-size: 19px;
  font-weight: 500;
  color: var(--color-text);
}
.checkout-block{ padding-inline: var(--s5); }


/* ═══ 8. METODE DE LIVRARE SI DE PLATA ═══════════════════════ */

/* `grid-template-columns` NU e optional aici: fara el pista implicita e `auto`,
   adica `max-content`, iar un card cu text lung („gata in circa 30 de minute")
   cere 375px si umfla pista peste containerul de 326px. Textul nu producea
   derulare — era TAIAT de `overflow-x: clip` de pe `.container`, deci disparea
   tacut. Masurat la 360px pe 30 aug: +32,5px in afara ecranului.
   `minmax(0, 1fr)` leaga pista de container. (Nucleul folosea `flex` in coloana,
   unde problema nu putea aparea.) */
.checkout-delivery-methods,
.checkout-payment-methods{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s3);
}

.checkout-delivery-method,
.checkout-payment-method{
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--s4);
  padding: var(--s4);
  min-height: var(--ct-tap);
  cursor: pointer;
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r);
  transition: border-color var(--t) var(--ease), background var(--t) var(--ease);
}
.checkout-delivery-method:hover,
.checkout-payment-method:hover{ border-color: var(--color-primary); }
.checkout-delivery-method.selected,
.checkout-payment-method.selected{
  border-color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 9%, var(--ct-surface-2));
}
.checkout-delivery-method:has(input:focus-visible),
.checkout-payment-method:has(input:focus-visible){
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
.checkout-delivery-method input[type="radio"],
.checkout-payment-method input[type="radio"]{
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin: 0;
}
.checkout-delivery-radio,
.checkout-payment-radio{
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--ct-line-control);
  background: var(--color-bg);
  display: grid;
  place-items: center;
  transition: border-color var(--t) var(--ease);
}
.checkout-delivery-method.selected .checkout-delivery-radio,
.checkout-payment-method.selected .checkout-payment-radio{ border-color: var(--color-primary); }
.checkout-delivery-method.selected .checkout-delivery-radio::after,
.checkout-payment-method.selected .checkout-payment-radio::after{
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--color-primary);
}
.checkout-delivery-icon,
.checkout-payment-icon{
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: var(--r-sm);
  font-size: 20px;
  color: var(--ct-text-2);
  background: var(--ct-surface-3);
  border: 1px solid var(--ct-line);
  transition: background var(--t) var(--ease), color var(--t) var(--ease), border-color var(--t) var(--ease);
}
.checkout-delivery-method.selected .checkout-delivery-icon,
.checkout-payment-method.selected .checkout-payment-icon{
  color: var(--color-on-primary);
  background: var(--color-primary);
  border-color: var(--color-primary);
}
.checkout-delivery-info,
.checkout-payment-info{ flex: 1 1 auto; min-width: 0; display: block; }
.checkout-delivery-name,
.checkout-payment-name{
  display: block;
  font-size: 15.5px;
  font-weight: 700;
  color: var(--color-text);
  /* Numele metodei nu se rupe in doua randuri — e scurt si e primul lucru citit. */
  white-space: nowrap;
}
.checkout-delivery-meta,
.checkout-payment-desc{
  display: block;
  margin-top: 2px;
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--ct-text-3);
}
/* `flex: 0 0 auto` insemna „nu ma micsorez niciodata". Cu indiciul lung din dreapta
   („Alege localitatea pentru a vedea costul", 253px, pe un rand), blocul din stanga
   ramanea cu 136px si numele metodei se rupea in doua randuri („Livrare la /
   domiciliu"). Acum indiciul cedeaza latime si se aseaza pe doua randuri daca e
   nevoie; pretul propriu-zis („4.00 lei") e scurt, deci nu se rupe niciodata. */
.checkout-delivery-cost{
  flex: 0 1 auto;
  min-width: 0;
  text-align: right;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.dm-cost-free{
  color: var(--color-primary);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.dm-cost-value{ font-weight: 700; color: var(--color-text); }
.dm-cost-pending{ font-size: 13px; color: var(--ct-text-3); font-style: italic; }
.dm-time{ display: block; font-size: 12.5px; color: var(--ct-text-3); }

/* programarea comenzii (contract .sp-*) */
.sp-wrap{
  padding: var(--s4);
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
}
.sp-header{ display: flex; align-items: flex-start; gap: var(--s3); margin-bottom: var(--s4); }
.sp-header-icon{
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  border-radius: var(--r-sm);
  font-size: 19px;
  color: var(--color-accent);
  background: var(--ct-ember-soft);
}
.sp-header-title{ margin: 0; font-size: 15px; font-weight: 700; color: var(--color-text); }
.sp-header-subtitle{ margin: 2px 0 0; font-size: 12.5px; line-height: 1.45; color: var(--ct-text-3); }
.sp-trigger{
  min-height: 46px;
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-sm);
  background: var(--ct-surface-3);
  color: var(--color-text);
}
.sp-trigger-icon,
.sp-trigger-chevron{ color: var(--color-primary); }
.sp-popup{
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  box-shadow: 0 24px 54px -18px rgba(0,0,0,.75);
}
.sp-cal-day.sp-selected,
.sp-time-item.sp-selected{
  background: var(--color-primary);
  color: var(--color-on-primary);
}
.sp-cal-day.sp-today{ border-color: var(--color-accent); }
.sp-cal-day.sp-disabled,
.sp-time-item.sp-disabled{ color: var(--ct-text-3); opacity: .45; }
.sp-alert{
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: var(--s4);
  padding: var(--s3) var(--s4);
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text);
  background: color-mix(in srgb, var(--color-info) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-info) 32%, transparent);
  border-radius: var(--r-sm);
}
.sp-error{ color: var(--ct-danger); font-weight: 600; font-size: 13px; }


/* ═══ 9. SUMARUL DE LA FINALIZARE ════════════════════════════ */

.checkout-summary-header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  padding: var(--s4) var(--s5);
  background: color-mix(in srgb, var(--ct-surface-2) 80%, var(--color-white));
  border-bottom: 1px solid var(--ct-line);
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 600;
  color: var(--color-text);
}
.checkout-summary-header i{ color: var(--color-primary); }

.checkout-summary-items{
  padding: var(--s4) var(--s5) 0;
  max-height: 340px;
  overflow-y: auto;
}
.checkout-summary-item{
  display: flex;
  align-items: center;
  gap: var(--s3);
  padding-bottom: var(--s3);
  margin-bottom: var(--s3);
  border-bottom: 1px solid var(--ct-line-soft);
}
.checkout-summary-item:last-child{ border-bottom: 0; }
.checkout-summary-item-image{
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border-radius: var(--r-sm);
  background: var(--ct-surface-2);
  border: 1px solid var(--ct-line);
  overflow: hidden;
}
.checkout-summary-item-image img{ width: 100%; height: 100%; object-fit: cover; }
.checkout-summary-item-qty{
  position: absolute;
  top: -7px;
  right: -7px;
  min-width: 22px;
  height: 22px;
  padding: 0 5px;
  display: grid;
  place-items: center;
  border-radius: var(--r-pill);
  font-size: 12px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--color-on-accent);
  background: var(--color-accent);
}
.checkout-summary-item-info{ flex: 1 1 auto; min-width: 0; }
.checkout-summary-item-name{
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.checkout-summary-item-variant{
  display: block;
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.35;
  color: var(--ct-text-3);
}
.checkout-summary-item-price{
  flex: 0 0 auto;
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--color-text);
}

.checkout-summary-totals{ padding: var(--s5); }
.checkout-summary-row{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s3);
  margin-bottom: var(--s3);
  font-size: 14.5px;
  color: var(--ct-text-2);
  font-variant-numeric: tabular-nums;
}
.checkout-total{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s3);
  margin: var(--s4) 0 0;
  padding-top: var(--s4);
  border-top: 1px solid var(--ct-line);
}
.checkout-total-label{ font-size: 16px; font-weight: 700; color: var(--color-text); }
.checkout-total-amount{
  font-family: var(--f-display);
  font-size: 32px;
  font-weight: 500;
  line-height: 1.1;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}

.checkout-shipping-time{
  display: flex;
  align-items: center;
  gap: var(--s3);
  margin: 0 var(--s5) var(--s4);
  padding: var(--s3) var(--s4);
  background: color-mix(in srgb, var(--color-primary) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 26%, transparent);
  border-radius: var(--r-sm);
  font-size: 13.5px;
  color: var(--color-text);
}
.checkout-shipping-time i{ color: var(--color-primary); font-size: 19px; flex: 0 0 auto; }

.checkout-place-order{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  width: calc(100% - var(--s5) * 2);
  margin: 0 var(--s5) var(--s4);
  min-height: 56px;
  padding: 0 var(--s5);
  border: 0;
  border-radius: var(--r-pill);
  cursor: pointer;
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: .01em;
  color: var(--color-on-accent);
  background: linear-gradient(180deg,
             color-mix(in srgb, var(--color-accent) 92%, var(--ct-mix-lift)),
             var(--color-accent));
  box-shadow: var(--ct-glow-ember);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease), filter var(--t) var(--ease);
}
.checkout-place-order:hover{ transform: translateY(-1px); filter: brightness(1.05); }
.checkout-place-order:active{ transform: translateY(0); }
.checkout-place-order:disabled{
  background: var(--ct-surface-3);
  color: var(--ct-text-3);
  box-shadow: none;
  cursor: not-allowed;
}
.checkout-message{ margin: 0 var(--s5) var(--s4); }

.checkout-validation-alert{
  display: flex;
  align-items: flex-start;
  gap: var(--s2);
  color: var(--ct-danger);
  font-size: 13px;
  font-weight: 600;
}

.checkout-trust-signals{
  display: flex;
  flex-wrap: wrap;
  gap: var(--s3) var(--s4);
  justify-content: center;
  padding: var(--s4) var(--s5);
  border-top: 1px solid var(--ct-line-soft);
  background: color-mix(in srgb, var(--ct-surface-2) 55%, var(--color-white));
}
.checkout-trust-item{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--ct-text-3);
}
.checkout-trust-item i{ color: var(--color-primary); }


/* ═══ 10. CONFIRMAREA ════════════════════════════════════════ */

.checkout-thankyou{ padding-block: clamp(48px, 7vw, 96px); }
.checkout-thankyou .thankyou-icon{
  display: grid;
  place-items: center;
  width: 96px;
  height: 96px;
  margin: 0 auto var(--s5);
  border-radius: 50%;
  font-size: 46px;
  color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 34%, transparent);
  box-shadow: var(--ct-glow-leaf);
}
.checkout-thankyou .h2{
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  color: var(--color-text);
}
.checkout-thankyou .lead{ color: var(--ct-text-2); }
.checkout-thankyou .order-number{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 18px;
  border-radius: var(--r-pill);
  background: var(--ct-ember-soft);
  border: 1px solid color-mix(in srgb, var(--color-accent) 36%, transparent);
  font-size: 14px;
  color: var(--ct-text-2);
}
.checkout-thankyou .order-number strong{
  font-family: var(--f-display);
  font-size: 19px;
  font-variant-numeric: tabular-nums;
  color: var(--color-accent);
  letter-spacing: .02em;
}

.checkout-thankyou .card,
.order-confirmation{
  background: var(--color-white);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.order-confirmation-header{
  padding: var(--s4) var(--s5);
  background: color-mix(in srgb, var(--ct-surface-2) 80%, var(--color-white));
  border-bottom: 1px solid var(--ct-line);
}
.order-confirmation-header h4{
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin: 0;
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 600;
  color: var(--color-text);
}
.order-confirmation-header i{ color: var(--color-primary); }
.order-confirmation-body{ padding: var(--s5); }
.order-item-row{
  display: flex;
  align-items: baseline;
  gap: var(--s3);
  padding: var(--s3) 0;
  border-bottom: 1px solid var(--ct-line-soft);
}
.order-item-row:last-child{ border-bottom: 0; }
.order-item-qty{
  flex: 0 0 auto;
  min-width: 34px;
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  color: var(--color-accent);
}
.order-item-name{ flex: 1 1 auto; min-width: 0; color: var(--color-text); font-size: 15px; }
.order-item-price{ flex: 0 0 auto; text-align: right; font-variant-numeric: tabular-nums; }
.order-detail-row{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  padding: var(--s3) 0;
  border-top: 1px solid var(--ct-line-soft);
}
.order-detail-label{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--ct-text-3);
}
.order-detail-label i{ color: var(--color-primary); }
.order-detail-value{ text-align: right; font-size: 14.5px; color: var(--color-text); }
.order-detail-total{
  font-family: var(--f-display);
  font-size: 26px;
  font-weight: 500;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}
.thank-you-actions{
  display: flex;
  flex-wrap: wrap;
  gap: var(--s3);
  justify-content: center;
  margin: var(--s6) 0 var(--s4);
}


/* ═══ 11. RESPONSIV ══════════════════════════════════════════ */

@media (max-width: 991.98px){
  .checkout-summary.sticky-top{ position: static !important; }
}
@media (max-width: 560px){
  .checkout-step-header{ flex-wrap: wrap; }
  .checkout-place-order{
    width: calc(100% - var(--s4) * 2);
    margin-inline: var(--s4);
  }
  .checkout-summary-items,
  .checkout-summary-totals{ padding-inline: var(--s4); }
  .cart-summary .card-body{ padding: var(--s4); }
}


/* ═══ 12. MISCARE REDUSA ═════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  .checkout-place-order:hover,
  .cart-summary #checkoutBtn:hover{ transform: none; }
  .checkout-delivery-method,
  .checkout-payment-method,
  .btn-remove-item,
  .qty-selector .qty-btn{ transition: none; }
}


/* ══════════════════════════════════════════════════════════════
   60-contact.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — contact, despre noi si paginile de continut (T3)
   Ultima modificare: 2026-08-29 14:05
   Modificari:
     2026-08-29 14:05 — Tabelele din continut treceau pe tema DESCHISA:
                        Bootstrap pune pe fiecare celula
                        `background-color: var(--bs-table-bg)`, care cade pe
                        `--bs-body-bg` = alb. Pe fundalul alb, `<strong>`-ul
                        (culoarea temei, deschisa) devenea invizibil —
                        vizibil pe /livrare-anulare-si-retur si pe
                        /politica-de-confidentialitate. Rescrise variabilele
                        `--bs-table-*` pe suprafetele noastre.
     2026-08-28 20:15 — Portare din propunere (parts/60-contact.css):
                        `#ct-contact-*` scoase; banda de deschidere NU mai
                        foloseste `.category-hero` (aia traieste in
                        `shop.css`, care NU se incarca pe contact) ci
                        `.contact-hero` / `.about-hero`, benzile REALE ale
                        nucleului; harta desenata in SVG, zonele de livrare,
                        cele patru raspunsuri mari si formularul de rezervare
                        scoase (cer marcaj nou — sunt in raport); adaugate
                        paginile generice `.page-section` / `.page-content` /
                        `.legal-content` / `.faq-section`.

   ⚠️ DOUA CAPCANE DE INCARCARE, verificate in `layout.php:176-196`:
      · `shop.css` se incarca DOAR pe paginile de magazin si pe prima
        pagina ⇒ orice clasa de acolo (`.category-hero`, `.shop-*`) ar
        ramane NESTILIZATA pe contact. De aceea nu o folosim.
      · `pages.css` se incarca DOAR pe `about` si `contact`
        (`$_isStaticPage`) ⇒ paginile generice (Termeni, Cookie, Livrare,
        Intrebari) raman fara el. Le imbracam aici, in tema, care se
        incarca pe TOATE paginile.
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. BANDA DE DESCHIDERE — .contact-hero / .about-hero
   Delimitare prin BANDA DE BRAND, cu aura in spate; zero tenta.
   ═══════════════════════════════════════════════════════════ */

.contact-hero,
.about-hero{
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(36px, 5vw, 68px) clamp(32px, 4.5vw, 60px);
  background:
    radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--color-primary) 12%, transparent) 0%, transparent 55%),
    radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--color-accent) 8%, transparent) 0%, transparent 50%),
    var(--color-bg);
}
/* firul de brand care inchide banda jos */
.contact-hero::after,
.about-hero::after{
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: linear-gradient(90deg,
      transparent 0%,
      color-mix(in srgb, var(--color-primary) 55%, transparent) 50%,
      transparent 100%);
}
/* stratul decorativ al nucleului: la noi e aura de brad din colt */
.contact-hero-bg,
.about-hero-bg{
  position: absolute;
  top: -160px; right: -160px;
  width: 420px; height: 420px;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--color-primary) 14%, transparent) 0%, transparent 70%);
  opacity: 1;
  filter: none;
  z-index: 0;
  pointer-events: none;
}

.contact-hero-content,
.about-hero-content{
  position: relative;
  z-index: 2;
  max-width: 62ch;
  margin-inline: auto;
}

.contact-hero-badge,
.about-hero-badge{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  margin-bottom: var(--s4);
  padding: 7px var(--s4);
  border-radius: var(--r-pill);
  /* pastila sta pe suprafata proprie: peste aura, verdele pe verde ar scapa
     sub prag — se rezolva LOCAL, nu global */
  background: color-mix(in srgb, var(--ct-surface-2) 88%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
  color: var(--color-primary);
  font-family: var(--f-body);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  line-height: 1;
}

.contact-hero-title,
.about-hero-title{
  margin: 0 0 var(--s4);
  font-family: var(--f-display);
  font-size: var(--h1);
  font-weight: 500;
  font-variation-settings: 'SOFT' 20, 'WONK' 1, 'opsz' 40;
  line-height: 1.02;
  letter-spacing: -.015em;
  color: var(--color-text);
  text-wrap: balance;
}

.contact-hero-subtitle,
.about-hero-subtitle{
  margin: 0;
  max-width: 56ch;
  margin-inline: auto;
  color: var(--ct-text-2);
  font-size: 17px;
  line-height: 1.62;
  text-wrap: pretty;
}


/* ═══════════════════════════════════════════════════════════
   2. CARDURILE DE CONTACT
   ═══════════════════════════════════════════════════════════ */

.contact-cards-section{ padding-block: clamp(40px, 5vw, 72px); }

.contact-cards-grid{
  display: grid;
  gap: var(--s4);
  grid-template-columns: 1fr;
}
@media (min-width: 520px){
  .contact-cards-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 992px){
  .contact-cards-grid{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.contact-card{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s2);
  padding: var(--s5);
  min-height: 100%;
  border-radius: var(--r);
  border: 1px solid var(--ct-line);
  background: var(--color-white);
  color: var(--color-text);
  text-decoration: none;
  transition: border-color var(--t) var(--ease), transform var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
a.contact-card:hover{
  border-color: color-mix(in srgb, var(--color-primary) 42%, transparent);
  background: var(--ct-surface-2);
  transform: translateY(-2px);
}

.contact-card-icon{
  display: inline-grid;
  place-items: center;
  width: 44px; height: 44px;
  border-radius: var(--r-sm);
  background: color-mix(in srgb, var(--color-primary) 13%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 26%, transparent);
  color: var(--color-primary);
  font-size: 19px;
  margin-bottom: var(--s2);
}
.contact-card-whatsapp .contact-card-icon{
  background: color-mix(in srgb, var(--color-accent) 13%, transparent);
  border-color: color-mix(in srgb, var(--color-accent) 28%, transparent);
  color: var(--ct-ember);
}

.contact-card-title{
  margin: 0;
  font-family: var(--f-body);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}
.contact-card-value{
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.35;
  /* adresa de email e un singur cuvant lung: se rupe DOAR daca nu incape,
     nu la fiecare rand (`anywhere` o taia la „gmail.co / m") */
  overflow-wrap: break-word;
  hyphens: none;
  letter-spacing: -.005em;
}
.contact-card-action{
  margin-top: auto;
  padding-top: var(--s3);
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--color-primary);
}
.contact-card-action i{ transition: transform var(--t) var(--ease); }
a.contact-card:hover .contact-card-action i{ transform: translateX(3px); }
.contact-card-action-muted{ color: var(--ct-text-3); font-weight: 500; }


/* ═══════════════════════════════════════════════════════════
   3. FORMULARUL DE CONTACT
   ═══════════════════════════════════════════════════════════ */

.contact-form-section{ padding-block: clamp(40px, 5vw, 72px); }

.contact-form-card{
  padding: clamp(20px, 3vw, 36px);
  border-radius: var(--r-lg);
  border: 1px solid var(--ct-line);
  background: var(--color-white);
}

.contact-form-header{ margin-bottom: var(--s5); }
.contact-form-title{
  display: flex;
  align-items: center;
  gap: var(--s3);
  margin: 0 0 var(--s2);
  font-family: var(--f-display);
  font-size: 24px;
  font-weight: 500;
  color: var(--color-text);
}
.contact-form-title i{ color: var(--color-primary); font-size: 21px; }
.contact-form-subtitle{ margin: 0; font-size: var(--fs-small); color: var(--ct-text-2); }

.contact-field{ display: flex; flex-direction: column; gap: 6px; min-width: 0; margin-bottom: var(--s4); }

.contact-field-label{
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--color-text);
}
.contact-field-optional{
  font-size: 12.5px;
  font-weight: 500;
  color: var(--ct-text-3);
}

.contact-form-card .form-control,
.contact-form-card .form-select{
  width: 100%;
  min-height: var(--ct-tap);
  padding: 11px var(--s4);
  border-radius: var(--r-sm);
  border: 1px solid var(--ct-line-control);   /* contur de CONTROL, nu ornament */
  background: var(--ct-surface-3);
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: 15.5px;
  line-height: 1.4;
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
.contact-form-card .form-control::placeholder{ color: var(--ct-text-3); }
.contact-form-card .form-control:hover,
.contact-form-card .form-select:hover{
  border-color: color-mix(in srgb, var(--color-primary) 60%, transparent);
}
.contact-form-card .form-control:focus,
.contact-form-card .form-select:focus{
  outline: none;
  border-color: var(--color-primary);
  background: color-mix(in srgb, var(--color-primary) 7%, var(--ct-surface-3));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 24%, transparent);
}
.contact-form-card textarea.form-control{ min-height: 116px; resize: vertical; }

.contact-form-footer{
  display: flex;
  flex-direction: column;
  gap: var(--s3);
  margin-top: var(--s5);
  padding-top: var(--s5);
  border-top: 1px solid var(--ct-line);
}
.contact-submit-btn{
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 52px;
  padding-inline: var(--s6);
  border: 0;
  border-radius: var(--r-pill);
  background: var(--color-primary);
  color: var(--color-on-primary);
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 700;
  box-shadow: var(--ct-glow-leaf);
  transition: background-color var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
.contact-submit-btn:hover{
  background: color-mix(in srgb, var(--color-primary) 88%, var(--ct-mix-lift));
  color: var(--color-on-primary);
}
.contact-submit-btn:active{ transform: translateY(1px); }

.contact-form-note{
  display: flex;
  align-items: flex-start;
  gap: var(--s2);
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--ct-text-3);
}
.contact-form-note i{ margin-top: 2px; flex: 0 0 auto; color: var(--color-primary); }
.contact-form-note a{ color: var(--color-primary); font-weight: 700; }


/* ═══════════════════════════════════════════════════════════
   4. CARDURILE LATERALE, HARTA SI RETELELE
   ═══════════════════════════════════════════════════════════ */

.contact-sidebar-card{
  padding: var(--s5);
  margin-bottom: var(--s4);
  border-radius: var(--r-lg);
  border: 1px solid var(--ct-line);
  background: var(--ct-surface-2);
}
.contact-sidebar-card-highlight{
  border-color: color-mix(in srgb, var(--color-accent) 30%, transparent);
  background:
    radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--color-accent) 9%, transparent) 0%, transparent 55%),
    var(--ct-surface-2);
}
.contact-sidebar-card-icon{
  display: inline-grid;
  place-items: center;
  width: 40px; height: 40px;
  border-radius: var(--r-sm);
  background: color-mix(in srgb, var(--color-primary) 13%, transparent);
  border: 1px solid color-mix(in srgb, var(--color-primary) 26%, transparent);
  color: var(--color-primary);
  font-size: 18px;
}
.contact-sidebar-card-highlight .contact-sidebar-card-icon{
  background: color-mix(in srgb, var(--color-accent) 13%, transparent);
  border-color: color-mix(in srgb, var(--color-accent) 28%, transparent);
  color: var(--ct-ember);
}
.contact-sidebar-card-title{
  margin: var(--s3) 0 var(--s2);
  font-family: var(--f-display);
  font-size: 21px;
  font-weight: 500;
  font-variation-settings: 'SOFT' 14, 'opsz' 24;
  color: var(--color-text);
}
.contact-sidebar-card-text{
  margin: 0 0 var(--s3);
  color: var(--ct-text-2);
  font-size: var(--fs-small);
  line-height: 1.6;
}
.contact-sidebar-card-link{
  display: inline-flex;
  align-items: center;
  gap: var(--s2);
  color: var(--color-primary);
  font-weight: 700;
  font-size: var(--fs-small);
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--color-primary-rgb), .4);
}
.contact-sidebar-card-link:hover{ border-bottom-color: var(--color-primary); }

/* harta (Leaflet sau iframe) — rama de brand, fara tenta peste ea */
.contact-map{
  border-radius: var(--r);
  border: 1px solid color-mix(in srgb, var(--color-primary) 22%, transparent);
  overflow: hidden;
  background: var(--color-bg);
}
.contact-map iframe,
.contact-map .leaflet-container{ display: block; width: 100%; border: 0; }

.contact-social-links{
  display: flex;
  flex-wrap: wrap;
  gap: var(--s3);
  margin-top: var(--s3);
}
.contact-social-link{
  display: inline-grid;
  place-items: center;
  width: var(--ct-tap); height: var(--ct-tap);
  border-radius: var(--r-sm);
  border: 1px solid var(--ct-line-control);
  color: var(--ct-text-2);
  font-size: 18px;
  text-decoration: none;
  transition: color var(--t) var(--ease), border-color var(--t) var(--ease),
              background-color var(--t) var(--ease);
}
.contact-social-link:hover{
  color: var(--color-on-primary);
  background: var(--color-primary);
  border-color: var(--color-primary);
}


/* ═══════════════════════════════════════════════════════════
   5. INTREBARILE DE PE CONTACT (.contact-faq)
   ═══════════════════════════════════════════════════════════ */

.contact-faq{ padding-block: clamp(40px, 5vw, 72px) clamp(56px, 7vw, 96px); }

.contact-faq-item{
  margin-bottom: var(--s3);
  border-radius: var(--r);
  border: 1px solid var(--ct-line);
  background: var(--color-white);
  overflow: hidden;
  transition: border-color var(--t) var(--ease);
}
.contact-faq-item:hover{ border-color: var(--ct-line-control); }
.contact-faq-item.open{
  border-color: color-mix(in srgb, var(--color-primary) 42%, var(--ct-line));
}

.contact-faq-question{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s4);
  width: 100%;
  min-height: var(--ct-tap);
  padding: var(--s4) var(--s5);
  border: 0;
  background: none;
  text-align: left;
  cursor: pointer;
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text);
  transition: color var(--t) var(--ease), background-color var(--t) var(--ease);
}
.contact-faq-question:hover{ color: var(--color-primary); background: var(--ct-surface-2); }
.contact-faq-item.open .contact-faq-question{ color: var(--color-primary); }

.contact-faq-arrow{
  flex: 0 0 auto;
  color: var(--ct-text-3);
  font-size: 15px;
  transition: transform var(--t) var(--ease), color var(--t) var(--ease);
}
.contact-faq-item.open .contact-faq-arrow{
  transform: rotate(180deg);
  color: var(--color-primary);
}

.contact-faq-answer p{
  margin: 0;
  padding: var(--s3) var(--s5) var(--s5);
  border-top: 1px solid var(--ct-line-soft);
  color: var(--ct-text-2);
  font-size: var(--fs-small);
  line-height: 1.68;
}


/* ═══════════════════════════════════════════════════════════
   6. DESPRE NOI — .about-*
   ⚠️ `about.php` randeaza continutul din baza cand pagina „despre-noi"
      are text (`about.php:45`); blocurile de mai jos imbraca varianta de
      rezerva a nucleului, ca sa nu ramana nestilizata daca apare.
   ═══════════════════════════════════════════════════════════ */

.about-story{ padding-block: clamp(40px, 5vw, 72px); }
.about-story-title{
  margin: 0 0 var(--s4);
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  line-height: 1.1;
  color: var(--color-text);
}
.about-story-text{
  margin: 0 0 var(--s4);
  color: var(--ct-text-2);
  font-size: 16.5px;
  line-height: 1.7;
  max-width: 60ch;
}
.about-story-image-wrapper{ position: relative; }
.about-story-image{
  width: 100%;
  height: auto;
  border-radius: var(--r-lg);
  border: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
}
.about-story-image-badge{
  position: absolute;
  right: var(--s4);
  bottom: var(--s4);
  display: grid;
  place-items: center;
  padding: var(--s3) var(--s4);
  border-radius: var(--r);
  background: var(--color-accent);
  color: var(--color-on-accent);
  text-align: center;
}
.about-story-image-badge-number{
  font-family: var(--f-display);
  font-size: 28px;
  font-weight: 600;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.about-story-image-badge-text{ font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

.about-story-highlights{
  display: grid;
  gap: var(--s3);
  grid-template-columns: 1fr;
  margin: var(--s4) 0 0;
  padding: 0;
  list-style: none;
}
@media (min-width: 560px){
  .about-story-highlights{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.about-story-highlight{
  display: flex;
  align-items: center;
  gap: var(--s3);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--color-text);
}
.about-story-highlight-icon{
  display: inline-grid;
  place-items: center;
  width: 34px; height: 34px;
  flex: 0 0 auto;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--color-primary) 32%, transparent);
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
  color: var(--color-primary);
  font-size: 16px;
}

.about-values-grid,
.about-cert-grid{
  display: grid;
  gap: var(--s5);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 991.98px){
  .about-values-grid,
  .about-cert-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px){
  .about-values-grid,
  .about-cert-grid{ grid-template-columns: 1fr; }
}
.about-value-card,
.about-cert-card{
  padding: var(--s6);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background: var(--color-white);
  transition: border-color var(--t) var(--ease), transform var(--t) var(--ease);
}
.about-value-card:hover,
.about-cert-card:hover{
  border-color: color-mix(in srgb, var(--color-primary) 45%, var(--ct-line));
  transform: translateY(-3px);
}
.about-value-icon,
.about-cert-icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px; height: 52px;
  margin-bottom: var(--s5);
  border: 1px solid color-mix(in srgb, var(--color-primary) 38%, transparent);
  border-radius: var(--r-sm);
  background: color-mix(in srgb, var(--color-primary) 9%, transparent);
  background-image: none;
  color: var(--color-primary);
  font-size: 23px;
}
.about-value-title,
.about-cert-title{
  margin: 0 0 var(--s3);
  font-family: var(--f-display);
  font-size: var(--h3);
  font-weight: 500;
  color: var(--color-text);
}
.about-value-text,
.about-cert-text{
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.62;
  color: var(--ct-text-2);
}

.about-stats{ padding-block: clamp(32px, 4vw, 56px); }
.about-stats-grid{
  display: grid;
  gap: var(--s5);
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
.about-stat-item{ text-align: center; }
.about-stat-number{
  display: block;
  font-family: var(--f-display);
  font-size: clamp(30px, 4vw, 46px);
  font-weight: 500;
  line-height: 1;
  color: var(--color-primary);
  font-variant-numeric: tabular-nums;
}
.about-stat-label{
  display: block;
  margin-top: var(--s2);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}


/* ═══════════════════════════════════════════════════════════
   7. PAGINILE DE CONTINUT (Termeni, Cookie, Livrare, Q&A…)
   `pages.css` NU se incarca acolo, deci tot ce urmeaza e singura
   imbracaminte pe care o primesc.
   ═══════════════════════════════════════════════════════════ */

.page-section,
.faq-section{ padding-block: clamp(32px, 4vw, 56px) clamp(56px, 7vw, 96px); }

.page-section > .container > .row > [class*="col-"] > .h2,
.page-section .h2,
.faq-section .h2{
  font-family: var(--f-display);
  font-size: var(--h2);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -.015em;
  color: var(--color-text);
  margin-bottom: var(--s5);
}

.page-content{
  color: var(--ct-text-2);
  font-size: 16px;
  line-height: 1.75;
}
.page-content h2,
.page-content h3,
.page-content h4{
  margin: var(--s7) 0 var(--s3);
  font-family: var(--f-display);
  font-weight: 500;
  line-height: 1.2;
  color: var(--color-text);
}
.page-content h2{ font-size: clamp(22px, 2.4vw, 30px); }
.page-content h3{ font-size: clamp(19px, 1.8vw, 23px); }
.page-content h2:first-child,
.page-content h3:first-child{ margin-top: 0; }
.page-content p{ margin: 0 0 var(--s4); }
.page-content strong{ color: var(--color-text); }
.page-content a{
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--color-primary-rgb), .4);
}
.page-content a:hover{ border-bottom-color: var(--color-primary); }
.page-content ul,
.page-content ol{ margin: 0 0 var(--s4); padding-left: var(--s5); }
.page-content li{ margin-bottom: var(--s2); }
.page-content ul{ list-style: none; padding-left: 0; }
.page-content ul > li{
  position: relative;
  padding-left: var(--s5);
}
.page-content ul > li::before{
  content: "";
  position: absolute;
  left: 6px;
  top: .68em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
}
/* ── Tabelele din continut ─────────────────────────────────────────────
   ⚠ CAPCANA (masurata in Chrome, 29 aug): continutul din baza scrie
   `<table class="table">`, iar Bootstrap 5.3 pune pe FIECARE celula
   `.table > :not(caption) > * > * { background-color: var(--bs-table-bg) }`,
   cu `--bs-table-bg: var(--bs-body-bg)` = **alb**. Situl e pe tema inchisa,
   deci ieseau doua lucruri:
     · o gaura alba in mijlocul paginii;
     · `<strong>`-urile din prima coloana, care iau `--color-text` (#EAF2EC,
       culoarea temei INCHISE), ajungeau deschis-pe-alb: 1.17:1, ilizibil.
   Nucleul rezolva asta doar pentru `.dash-orders-table` (main.css), nu si
   pentru tabelele din pagini — de aceea reparatia sta aici, in tema.
   Rescriem TOATE variabilele `--bs-table-*`, ca sa nu ramana nicio stare
   (striped/hover/active) care sa aduca albul inapoi pe alta cale. */
.page-content table,
.page-content .table{
  width: 100%;
  margin: 0 0 var(--s5);
  border-collapse: collapse;

  --bs-table-color:          var(--ct-text-2);
  --bs-table-bg:             transparent;
  --bs-table-border-color:   var(--ct-line);
  --bs-table-accent-bg:      transparent;
  --bs-table-striped-color:  var(--ct-text-2);
  --bs-table-striped-bg:     transparent;
  --bs-table-active-color:   var(--ct-text-2);
  --bs-table-active-bg:      transparent;
  --bs-table-hover-color:    var(--color-text);
  --bs-table-hover-bg:       transparent;

  background-color: transparent;
  color: var(--ct-text-2);
  border-color: var(--ct-line);
}

/* (0,2,2) — bate `.table > :not(caption) > * > *` al lui Bootstrap, care e (0,1,1).
   `box-shadow: none` scoate si stratul `inset … var(--bs-table-accent-bg)`.
   ⚠ Fiindca regula asta e mai TARE decat `.page-content th` (0,1,1),
   suprafetele reale (antet, zebra) se scriu mai jos, cu selectoare si mai
   specifice — altfel resetul de aici le-ar sterge pe ele, nu pe Bootstrap. */
.page-content table > :not(caption) > * > *{
  background-color: transparent;
  box-shadow: none;
  color: inherit;
}

.page-content th,
.page-content td{
  padding: var(--s3);
  border: 1px solid var(--ct-line);
  text-align: left;
  vertical-align: top;
}
.page-content th{ font-weight: 600; }

/* (0,2,4) si (0,3,4) — peste resetul de mai sus */
.page-content table > thead > tr > th{
  background-color: var(--ct-surface-2);
  color: var(--color-text);
}
.page-content table > tbody > tr:nth-child(even) > td{
  background-color: var(--ct-surface-2);
}
.page-content img{ max-width: 100%; height: auto; border-radius: var(--r); }
.page-content blockquote{
  margin: 0 0 var(--s5);
  padding: var(--s4) var(--s5);
  border-left: 3px solid var(--color-primary);
  background: var(--ct-surface-2);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  color: var(--color-text);
}

/* pagini legale — ritm mai strans, text lung */
.legal-content{ font-size: 15.5px; }
.legal-content h2{ font-size: clamp(20px, 2.1vw, 26px); }

/* acordeonul de pe pagina de intrebari — acelasi limbaj ca pe acasa */
.faq-section .accordion-item{
  margin-bottom: var(--s3);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  overflow: hidden;
  background: var(--color-white);
}
.faq-section .accordion-button{
  min-height: var(--ct-tap);
  padding: var(--s4) var(--s5);
  background: none;
  box-shadow: none;
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 16px;
  color: var(--color-text);
}
.faq-section .accordion-button:not(.collapsed){ color: var(--color-primary); background: none; }
.faq-section .accordion-button:focus{ box-shadow: none; outline: 2px solid var(--color-primary); outline-offset: -2px; }
.faq-section .accordion-body{
  padding: var(--s4) var(--s5) var(--s5);
  border-top: 1px solid var(--ct-line-soft);
  color: var(--ct-text-2);
  font-size: var(--fs-small);
  line-height: 1.68;
}

/* breadcrumbul paginilor de continut sta pe fundalul paginii, nu pe banda */
.page-section .breadcrumb,
.faq-section .breadcrumb,
.container.mt-3 .breadcrumb{ margin-bottom: var(--s4); }

/* ── Breadcrumbul de pe benzile de deschidere (Contact / Despre) ────────
   ⚠ CAPCANA (masurata, 29 aug): `pages.css` din nucleu picteaza breadcrumbul
   acestor benzi cu `color-mix(in srgb, var(--color-on-primary, #fff) 70%, …)`.
   Pe Cetinis primary-ul e VERDE DESCHIS, deci `--color-on-primary` e o culoare
   INCHISA (#111318) — corecta pe un buton verde, gresita aici: banda
   `.contact-hero` nu e colorata cu primary, e fundalul inchis al paginii cu un
   halou discret. Iesea inchis pe inchis: 1.01:1, practic invizibil.
   ⚠ Regula din nucleu e scrisa cu `!important`, deci specificitatea singura NU
   o bate — de aceea si aici e `!important`. (Prima incercare a folosit doar
   selectoare mai specifice si a ramas fara efect: 1.01:1 si dupa livrare.) */
.contact-hero .breadcrumb .breadcrumb-item,
.contact-hero .breadcrumb .breadcrumb-item a,
.contact-hero .breadcrumb .breadcrumb-item + .breadcrumb-item::before,
.about-hero .breadcrumb .breadcrumb-item,
.about-hero .breadcrumb .breadcrumb-item a,
.about-hero .breadcrumb .breadcrumb-item + .breadcrumb-item::before{
  color: var(--ct-text-2) !important;
}
.contact-hero .breadcrumb .breadcrumb-item.active,
.about-hero .breadcrumb .breadcrumb-item.active{
  color: var(--color-text) !important;
}
.contact-hero .breadcrumb .breadcrumb-item a:hover,
.about-hero .breadcrumb .breadcrumb-item a:hover{
  color: var(--color-primary) !important;
}


/* ═══════════════════════════════════════════════════════════
   8. RESPONSIV
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 420px){
  .contact-hero-title,
  .about-hero-title{ font-size: clamp(32px, 10vw, 40px); }
  .contact-card,
  .contact-sidebar-card{ padding: var(--s4); }
  .contact-faq-question{ padding: var(--s4); font-size: 15px; }
  .contact-faq-answer p{ padding: var(--s3) var(--s4) var(--s4); }
  .contact-form-card{ padding: var(--s4); }
}


/* ═══════════════════════════════════════════════════════════
   9. MISCARE REDUSA
   ═══════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){
  .contact-card,
  .about-value-card,
  .about-cert-card,
  .contact-faq-arrow,
  .contact-submit-btn{ transition: none; }
  a.contact-card:hover,
  .about-value-card:hover,
  .about-cert-card:hover{ transform: none; }
}


/* ══════════════════════════════════════════════════════════════
   90-subsol.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIS — subsol, newsletter, zone de livrare, bara mobila (T2)

   Ultima modificare: 2026-08-30 01:20
   Modificari:
     2026-08-30 01:20 — Bara mobila: pastila plina marcheaza PAGINA CURENTA
                        (`.is-active`), nu mai sta agatata pe „Suna"; „Suna"
                        primeste contur. Clasa o pune footer.php.
     2026-08-28 18:25 — Portare din C:\tmp\cetinis\design\parts\90-subsol.css
                        pe contractele REALE ale platformei CloudShop.

   ───────────────────────────────────────────────────────────
   CE S-A SCHIMBAT FATA DE PROTOTIP (si de ce)

   1. `#ct-subsol` A DISPARUT — era scop artificial de prototip. Subsolul real
      e `.site-footer` (`templates/partials/footer.php`). `#newsletterSection`
      RAMANE: id-ul exista in `partials/newsletter-section.php`.

   2. ⚠ `--footer-fg` NU EXISTA in nucleul ACESTUI client. MASURAT pe server
      (28 aug 2026): `/var/www/mycs-cetinis/public_html/assets/css/components.css`
      e din 9 iulie si are ZERO aparitii `footer-fg`; blocul
      `body.theme-dark .site-footer` lipseste complet. Doar `cloudshopdemo`
      (27 iul) il are — la `cloudshop`, `donfoodro`, `lapascanro` si in masterul
      auriu `/var/www/_cloudshop-core` lipseste la fel. E DATORIE DE ROLLOUT de
      nucleu, nu o scapare la Cetinis.
      Consecinta pe magazinul real, cu nucleul de azi: `.site-footer` primeste
      `background: linear-gradient(var(--color-text) …)`, iar pe tema inchisa
      `--color-text` e DESCHIS => subsol ALB, `.footer-title` (are `#ffffff`
      scris de mana in acel fisier) alb pe alb, iar `.footer-brand img` cu
      `filter: brightness(10)` face logoul alb sa dispara.
      De aceea sectiunea 3 de mai jos DEFINESTE ea tokenii si fundalul.
      Cand se face rolloutul lui `--footer-fg` la toti cei 11, regulile alea
      devin redundante si se pot scoate (sunt marcate una cate una).

   3. `.container` din subsol NU se largeste la `--wrap` (prototipul o facea).
      Pe situl real toate paginile stau in `.container` Bootstrap; largirea
      doar aici ar termina subsolul pe alta linie verticala decat continutul.
      Daca se decide `--wrap` global, se schimba in `05-grila`/fundatie, nu aici.

   4. INSIGNELE ANPC si ICOANELE DE PLATA raman marcajul REAL din nucleu
      (`<img>` ANPC + `<i>` Font Awesome pentru Visa/Mastercard). Prototipul le
      desenase ca placute tipografice doar fiindca CSP-ul artefactului bloca
      gazdele externe. Aici se stilizeaza placuta in jurul marcajului existent,
      deci nu mai e nevoie de clasele `.ct-anpc` / `.ct-plata`.

   5. ZONA DE LIVRARE (`.ct-livrare`, `.ct-harta`, `.ct-calc`, `.ct-liv-*`) e
      o SECTIUNE DE PAGINA, nu subsol. CSS-ul e portat aici (era in fragmentul
      de subsol al propunerii), dar MARCAJUL trebuie asezat de sablonul de
      pagina (acasa sau contact). Fara marcaj, regulile de mai jos sunt inerte.

   6. Tokenii `--ct-*`, `--s*`, `--r*`, `--f-*`, `--fs-*` vin din
      `00-fundatie.css`; `.ct-tex`, `.ct-rule--brand`, `.ct-mark` din
      `02-semnatura.css`. Culorile `--color-*` din Setari → Identitate.
   ═══════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════
   1. ZONA DE LIVRARE — harta vie
   (marcajul: sablon de pagina; vezi nota 5 din antet)
   ═══════════════════════════════════════════════════════════ */

.ct-livrare{
  position: relative;
  border-top: 1px solid var(--ct-line-soft);
}
.ct-livrare-cap{
  max-width: 62ch;
  margin-bottom: var(--s7);
}
.ct-livrare-cap .ct-h2{ margin-block: var(--s3) var(--s4); }

.ct-livrare-corp{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s7);
  align-items: start;
}
@media (min-width: 1000px){
  .ct-livrare-corp{ grid-template-columns: minmax(0, 44%) minmax(0, 1fr); }
}

/* ── 1.1 Harta ──────────────────────────────────────────── */
.ct-harta{
  position: relative;
  margin: 0;
  padding: var(--s5);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-lg);
  background-color: var(--color-white);
}
@media (min-width: 1000px){
  .ct-harta{ position: sticky; top: var(--s6); }
}
.ct-harta-svg{
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
.ct-harta-legenda{
  margin-top: var(--s4);
  padding-top: var(--s3);
  border-top: 1px solid var(--ct-line-soft);
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--ct-text-3);
}

/* inelele de distanta: FIR, nu contur de control — sunt ornament */
.ct-harta-inel{
  fill: none;
  stroke: var(--ct-line);
  stroke-width: 1;
  stroke-dasharray: 3 6;
}
.ct-harta-km{
  fill: var(--ct-text-3);
  font-family: var(--f-body);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.ct-harta-creasta{ pointer-events: none; }

.ct-harta-raze line{
  stroke: var(--ct-line-control);
  stroke-width: 1;
  stroke-opacity: .45;
  stroke-dasharray: 2 4;
  transition: stroke-opacity var(--t) var(--ease), stroke-width var(--t) var(--ease);
}
.ct-harta-raze line.is-aprins{
  stroke: var(--ct-ember);
  stroke-opacity: 1;
  stroke-width: 1.6;
  stroke-dasharray: none;
}

.ct-harta-halo{
  fill: var(--color-primary);
  opacity: 0;
  transform-origin: center;
  transition: opacity var(--t) var(--ease);
}
.ct-harta-bulina{
  fill: var(--color-white);
  stroke: var(--color-primary);
  stroke-width: 1.8;
  transition: fill var(--t) var(--ease), stroke var(--t) var(--ease);
}
.ct-harta-eticheta{
  fill: var(--ct-text-2);
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .01em;
  transition: fill var(--t) var(--ease);
}
.ct-harta-eticheta--acasa{
  fill: var(--color-text);
  font-size: 11.5px;
  font-weight: 700;
}
.ct-harta-pin.is-aprins .ct-harta-halo{ opacity: .22; }
.ct-harta-pin.is-aprins .ct-harta-bulina{
  fill: var(--ct-ember);
  stroke: var(--ct-ember);
}
.ct-harta-pin.is-aprins .ct-harta-eticheta{ fill: var(--color-text); }

/* vatra: restaurantul. Pulseaza rar, ca un jar, nu ca un buton. */
.ct-harta-vatra{
  fill: var(--ct-ember);
  stroke: var(--color-bg);
  stroke-width: 2;
}
.ct-harta-puls{
  fill: var(--ct-ember);
  opacity: .18;
  transform-origin: center;
  animation: ctVatra 3.6s var(--ease) infinite;
}
@keyframes ctVatra{
  0%, 100% { transform: scale(1);    opacity: .18; }
  50%      { transform: scale(1.28); opacity: .06; }
}
.ct-harta-acasa.is-aprins .ct-harta-vatra{ fill: var(--color-primary); }

/* ── 1.2 Calculatorul „cat platesc eu" ──────────────────── */
.ct-calc{
  margin-bottom: var(--s5);
  padding: var(--s4) var(--s5);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background-color: var(--ct-surface-2);
}
.ct-calc-eticheta{
  display: block;
  margin-bottom: var(--s3);
  font-family: var(--f-body);
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}
.ct-calc-rand{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s4);
}
.ct-calc-camp{
  position: relative;
  flex: 0 0 auto;
  width: 168px;
}
.ct-calc-input{
  width: 100%;
  min-height: 46px;
  padding: 0 46px 0 var(--s4);
  border: 1px solid var(--ct-line-control);
  border-radius: var(--r-sm);
  background-color: var(--color-bg);
  color: var(--color-text);
  font-family: var(--f-display);
  font-variation-settings: "opsz" 48, "wght" 500, "SOFT" 10, "WONK" 0;
  font-size: 22px;
  font-variant-numeric: tabular-nums lining-nums;
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.ct-calc-input::placeholder{ color: var(--ct-text-3); opacity: 1; }
.ct-calc-input:focus{
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 22%, transparent);
}
.ct-calc-input::-webkit-outer-spin-button,
.ct-calc-input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }
.ct-calc-input[type="number"]{ -moz-appearance: textfield; appearance: textfield; }
.ct-calc-moneda{
  position: absolute;
  top: 50%;
  right: var(--s4);
  transform: translateY(-50%);
  font-family: var(--f-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ct-text-3);
  pointer-events: none;
}
.ct-calc-hint{
  flex: 1 1 220px;
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--ct-text-2);
}

/* ── 1.3 Cardurile de zona ──────────────────────────────── */
.ct-liv-lista{
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--s3);
}
.ct-liv-zona{
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: var(--s4);
  padding: var(--s4) var(--s5) var(--s4) var(--s4);
  border: 1px solid var(--ct-line);
  border-radius: var(--r);
  background-color: var(--color-white);
  cursor: default;
  transition: border-color var(--t) var(--ease),
              background-color var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.ct-liv-zona:focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}
.ct-liv-zona.is-aprins{
  border-color: color-mix(in srgb, var(--ct-ember) 55%, var(--ct-line));
  background-color: var(--ct-surface-2);
  transform: translateY(-1px);
}
.ct-liv-index{
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--r-pill);
  border: 1px solid var(--ct-line);
  background-color: var(--ct-surface-3);
  color: var(--color-primary);
  font-size: 18px;
}
.ct-liv-zona--gratuit .ct-liv-index{
  border-color: color-mix(in srgb, var(--color-primary) 45%, transparent);
  color: var(--color-primary);
}
.ct-liv-zona.is-aprins .ct-liv-index{ color: var(--ct-ember); }

.ct-liv-nume{
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s3);
  margin: 0 0 var(--s1);
  font-family: var(--f-display);
  font-variation-settings: "opsz" 40, "wght" 500, "SOFT" 16, "WONK" 0;
  font-weight: 400;
  font-size: 19px;
  line-height: 1.25;
  color: var(--color-text);
}
.ct-liv-km{
  font-family: var(--f-body);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ct-text-3);
}
.ct-liv-mica{
  margin: 0 0 var(--s3);
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--ct-text-2);
}
.ct-liv-fapte{
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s2) var(--s4);
  margin: 0;
}
.ct-liv-cost{
  font-family: var(--f-body);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--color-text);
}
.ct-liv-cost--gratuit{
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: var(--r-pill);
  border: 1px solid color-mix(in srgb, var(--color-primary) 45%, transparent);
  background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
  color: var(--color-primary);
  font-size: 12px;
  letter-spacing: .04em;
}
.ct-liv-minim{
  font-size: var(--fs-small);
  color: var(--ct-text-2);
}
.ct-liv-minim strong{
  color: var(--color-text);
  font-variant-numeric: tabular-nums lining-nums;
  font-weight: 600;
}
.ct-liv-verdict{
  margin: var(--s3) 0 0;
  padding-top: var(--s3);
  border-top: 1px solid var(--ct-line-soft);
  font-size: var(--fs-small);
  line-height: 1.5;
  font-variant-numeric: tabular-nums lining-nums;
  color: var(--ct-text-2);
}
.ct-liv-zona--ok  .ct-liv-verdict{ color: var(--ct-ok); }
.ct-liv-zona--sub .ct-liv-verdict{ color: var(--ct-warn); }
.ct-liv-zona--sub{ border-color: color-mix(in srgb, var(--ct-warn) 34%, var(--ct-line)); }

.ct-liv-nota{
  display: flex;
  align-items: flex-start;
  gap: var(--s3);
  margin: var(--s5) 0 0;
  font-size: var(--fs-small);
  line-height: 1.55;
  color: var(--ct-text-2);
}
.ct-liv-nota i{ color: var(--color-primary); margin-top: .15em; }
.ct-liv-nota strong{ color: var(--color-text); font-weight: 600; }


/* ═══════════════════════════════════════════════════════════
   2. NEWSLETTER — `#newsletterSection`, marcajul nucleului
   Banda de brand: gradient primary-dark → primary → primary-dark.
   ═══════════════════════════════════════════════════════════ */

#newsletterSection.newsletter-section{
  position: relative;
  overflow: clip;
  padding: clamp(40px, 5vw, 64px) 0;
  /* Contractul are capetele pe `--color-primary-dark` curat. Pe paleta
     noastra acela e mix(primary 74%, negru) = rgb(82,153,101), iar textul
     mic la 72% alfa a MASURAT 3.62:1 acolo — sub prag, desi in mijlocul
     benzii arata 6.48:1. Capetele se ridica la 70% primary-dark + 30%
     primary: banda ramane „aprinsa la mijloc, stinsa spre capete", dar
     punctul cel mai intunecat urca la 6.55:1 pentru textul plin. */
  background-image: linear-gradient(135deg,
              color-mix(in srgb, var(--color-primary-dark) 70%, var(--color-primary)) 0%,
              var(--color-primary) 50%,
              color-mix(in srgb, var(--color-primary-dark) 70%, var(--color-primary)) 100%);
}
#newsletterSection.newsletter-section::before{
  content: '';
  position: absolute;
  top: -50%;
  right: -20%;
  width: 500px;
  height: 500px;
  border-radius: 50%;
  background-image: radial-gradient(circle,
              color-mix(in srgb, var(--ct-mix-lift) 8%, transparent) 0%, transparent 70%);
  pointer-events: none;
}
#newsletterSection.newsletter-section::after{
  content: '';
  position: absolute;
  bottom: -30%;
  left: -10%;
  width: 400px;
  height: 400px;
  border-radius: 50%;
  background-image: radial-gradient(circle,
              color-mix(in srgb, var(--ct-ember) 14%, transparent) 0%, transparent 70%);
  pointer-events: none;
}
#newsletterSection .container{ position: relative; z-index: 1; }
#newsletterSection .newsletter-inner{ padding: var(--s1) 0; }

#newsletterSection .newsletter-title{
  margin: 0 0 var(--s3);
  font-family: var(--f-display);
  font-variation-settings: "opsz" 96, "wght" 500, "SOFT" 22, "WONK" 0;
  font-weight: 400;
  font-size: clamp(26px, 2.8vw, 34px);
  line-height: 1.14;
  letter-spacing: -.012em;
  color: var(--color-on-primary);
}
#newsletterSection .newsletter-text{
  margin: 0;
  max-width: 44ch;
  font-size: var(--fs-body);
  line-height: 1.6;
  color: color-mix(in srgb, var(--color-on-primary) 88%, transparent);
}
#newsletterSection .newsletter-form-group{
  display: flex;
  gap: var(--s3);
}
#newsletterSection .newsletter-input-wrapper{ position: relative; flex: 1; min-width: 0; }
#newsletterSection .newsletter-input-icon{
  position: absolute;
  left: var(--s5);
  top: 50%;
  transform: translateY(-50%);
  color: var(--ct-text-3);
  font-size: 17px;
  pointer-events: none;
}
#newsletterSection .newsletter-input{
  width: 100%;
  min-height: 52px;
  padding: var(--s3) var(--s5) var(--s3) 48px;
  /* contur pe on-primary 60%: 3.86:1 fata de banda — trece pragul de 3:1
     pentru controale; alb-transparent (implicitul nucleului) ar da 1.6:1 */
  border: 2px solid color-mix(in srgb, var(--color-on-primary) 60%, transparent);
  border-radius: var(--r-pill);
  background-color: var(--color-white);
  color: var(--color-text);
  font-family: var(--f-body);
  font-size: var(--fs-body);
  transition: border-color var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
#newsletterSection .newsletter-input::placeholder{ color: var(--ct-text-3); opacity: 1; }
#newsletterSection .newsletter-input:focus{
  outline: none;
  border-color: var(--color-on-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-on-primary) 26%, transparent);
}
#newsletterSection .newsletter-input[aria-invalid="true"]{ border-color: var(--ct-danger); }

#newsletterSection .newsletter-submit{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s2);
  min-height: 52px;
  padding-inline: var(--s6);
  border: 2px solid var(--color-on-primary);
  border-radius: var(--r-pill);
  background-color: var(--color-on-primary);
  /* contractul cere `--color-primary-dark` (5.43:1). Pe paleta noastra
     inchisa, `--color-primary` da 9.75:1 si e chiar culoarea marcii. */
  color: var(--color-primary);
  font-family: var(--f-body);
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--t) var(--ease),
              color var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
#newsletterSection .newsletter-submit:hover{
  background-color: color-mix(in srgb, var(--color-on-primary) 82%, var(--ct-ember));
  transform: translateY(-2px);
}
#newsletterSection .newsletter-submit:focus-visible{
  outline: 2px solid var(--color-on-primary);
  outline-offset: 3px;
}
#newsletterSection .newsletter-submit[disabled]{ opacity: .7; cursor: progress; transform: none; }

#newsletterSection .newsletter-message{
  margin-top: var(--s3);
  padding: var(--s3) var(--s4);
  border-radius: var(--r-sm);
  font-size: var(--fs-small);
  line-height: 1.5;
  font-weight: 600;
}
#newsletterSection .newsletter-message-success{
  color: var(--color-on-primary);
  background-color: color-mix(in srgb, var(--ct-mix-lift) 40%, transparent);
}
#newsletterSection .newsletter-message-error{
  color: var(--color-on-primary);
  background-color: color-mix(in srgb, var(--ct-danger) 62%, var(--ct-mix-lift));
}
#newsletterSection .newsletter-disclaimer{
  display: flex;
  align-items: center;
  gap: var(--s2);
  margin: var(--s3) 0 0;
  font-size: 13px;
  /* 84%, nu 72%: la 72% textul de 13px pica pe capetele benzii (3.62:1) */
  color: color-mix(in srgb, var(--color-on-primary) 84%, transparent);
}


/* ═══════════════════════════════════════════════════════════
   3. SUBSOLUL — `.site-footer`
   ═══════════════════════════════════════════════════════════ */

.site-footer{
  position: relative;
  overflow: clip;
  padding: clamp(40px, 5vw, 56px) 0 0;
  margin-top: 0;

  /* ⚠ COMPENSARE PENTRU NUCLEUL VECHI AL ACESTUI CLIENT (vezi nota 2 din
     antetul fisierului). `components.css` de pe `/var/www/mycs-cetinis/` e din
     9 iulie: n-are `--footer-fg`, n-are derivatele si n-are blocul
     `body.theme-dark .site-footer`. Fara randurile de mai jos, subsolul iese
     ALB pe o tema inchisa, iar titlurile (scrise `#ffffff` in acel fisier)
     devin alb pe alb.
     Le scriem cu ACELEASI valori pe care le are contractul nou din nucleu, ca
     rezultatul sa fie identic dupa rollout. Tema se incarca ULTIMA, deci
     castiga fara `!important`.
     ⇒ DE STERS cand `--footer-fg` ajunge la toti cei 11 clienti. */
  --footer-fg:       var(--color-text);
  --footer-fg-muted: color-mix(in srgb, var(--footer-fg) 78%, transparent);
  --footer-fg-soft:  color-mix(in srgb, var(--footer-fg) 62%, transparent);
  /* gradientul vechi e background-IMAGE; un `background-color` singur nu-l
     acopera, deci se stinge explicit — exact ce face contractul nou. */
  background-image: none;
  background-color: color-mix(in srgb, var(--color-bg) 92%, #000);
  color: var(--footer-fg-muted);

  /* reglajele filigranului (variabilele lui `.ct-mark` din 02-semnatura) */
  --ct-mark-size: clamp(240px, 30vw, 420px);
  --ct-mark-o: .045;
  --ct-mark-x: -3%;
  --ct-mark-y: -14%;
}
.site-footer .container{ position: relative; z-index: 1; }

/* banda de brand deasupra — desenul e al utilitarului `.ct-rule--brand`;
   aici doar o asezam. */
.site-footer .ct-rule--brand{
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 2;
  --ct-rule-h: 2px;
}
/* plasa cu specificitate ZERO: orice regula de clasa din 02-semnatura o bate */
:where(.site-footer .ct-rule--brand){
  background-image: linear-gradient(90deg,
    transparent 0%,
    color-mix(in srgb, var(--color-primary) 28%, transparent) 18%,
    var(--color-primary) 50%,
    color-mix(in srgb, var(--color-primary) 28%, transparent) 82%,
    transparent 100%);
}

/* ── 3.1 Brand ──────────────────────────────────────────── */
.site-footer .footer-brand{ margin-bottom: var(--s4); }
.site-footer .footer-brand a{ display: inline-block; }
.site-footer .footer-brand img{
  height: 46px;
  width: auto;
  /* ⚠ COMPENSARE: nucleul pune `filter: brightness(10)` pe logoul din subsol,
     ca sa albeasca un logo colorat pe banda inchisa. Logoul lui Cetinis
     (`logo_url`) e DEJA alb pe transparent, deci filtrul nu-i mai trebuie —
     iar cat timp nucleul vechi al acestui client desena subsolul DESCHIS
     (vezi nota 2), un logo alb pe fundal alb insemna logo disparut. Il
     stingem explicit ca sa nu depinda de fundal.
     ⇒ Se poate pastra si dupa rollout: pe un PNG alb `brightness()` inmulteste
     canalele RGB (255 e deja plafonat) si nu atinge alfa, deci rezultatul e
     acelasi cu sau fara filtru. */
  filter: none;
}
.site-footer .footer-description{
  max-width: 34ch;
  margin-bottom: 0;
  font-size: var(--fs-small);
  line-height: 1.65;
  color: var(--footer-fg-muted);
}
.site-footer .footer-social{
  display: flex;
  flex-wrap: wrap;
  gap: var(--s2);
  margin-top: var(--s4);
}
.site-footer .footer-social a{
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--r-pill);
  border: 1px solid var(--ct-line);
  background-color: color-mix(in srgb, var(--footer-fg) 5%, transparent);
  color: var(--footer-fg-muted);
  font-size: 17px;
  text-decoration: none;
  transition: background-color var(--t) var(--ease),
              border-color var(--t) var(--ease),
              color var(--t) var(--ease),
              transform var(--t-fast) var(--ease);
}
.site-footer .footer-social a:hover,
.site-footer .footer-social a:focus-visible{
  border-color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 14%, transparent);
  color: var(--color-primary);
  transform: translateY(-3px);
}

/* ── 3.2 Titluri si liste ───────────────────────────────── */
.site-footer .footer-title{
  position: relative;
  margin: 0 0 var(--s4);
  padding-bottom: var(--s3);
  font-family: var(--f-body);
  font-size: var(--fs-label);
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--footer-fg);
}
.site-footer .footer-title::after{
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 30px;
  height: 2px;
  border-radius: 1px;
  background-color: var(--color-primary);
}
.site-footer .footer-links{ list-style: none; margin: 0; padding: 0; }
.site-footer .footer-links li{ margin-bottom: var(--s2); }
.site-footer .footer-links a{
  display: inline-block;
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--footer-fg-muted);
  text-decoration: none;
  transition: color var(--t) var(--ease), transform var(--t-fast) var(--ease);
}
.site-footer .footer-links a:hover,
.site-footer .footer-links a:focus-visible{
  color: var(--color-primary);
  transform: translateX(3px);
}

/* ── 3.3 Contact ────────────────────────────────────────── */
.site-footer .footer-contact{ list-style: none; margin: 0; padding: 0; }
.site-footer .footer-contact li{
  display: flex;
  align-items: flex-start;
  gap: var(--s3);
  margin-bottom: var(--s3);
}
.site-footer .footer-contact i{
  flex-shrink: 0;
  margin-top: .2em;
  width: 16px;
  color: var(--color-primary);
  font-size: 15px;
}
.site-footer .footer-contact a,
.site-footer .footer-contact span{
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--footer-fg-muted);
  text-decoration: none;
  transition: color var(--t) var(--ease);
}
.site-footer .footer-contact a:hover,
.site-footer .footer-contact a:focus-visible{ color: var(--color-primary); }

/* blocul „Operator comercial" — culorile le MOSTENESTE de la subsol.
   Nucleul ii da deja `align-items` si marimile prin `<style id="footer-legal-style">`;
   aici doar firul de despartire, ca sa se citeasca drept ultimul rand. */
.site-footer .footer-contact li.footer-company{
  margin-top: var(--s3);
  padding-top: var(--s3);
  border-top: 1px solid var(--ct-line);
}
.site-footer .footer-company-label{ color: var(--footer-fg-soft); }
.site-footer .footer-company-body strong{ color: var(--footer-fg); }
.site-footer .footer-company-body span{ color: var(--footer-fg-soft); }

/* ── 3.4 Bara de jos ────────────────────────────────────── */
.site-footer .footer-bottom{
  margin-top: var(--s6);
  padding: var(--s4) 0 var(--s5);
  border-top: 1px solid color-mix(in srgb, var(--footer-fg) 14%, transparent);
}
.site-footer .footer-copyright{
  margin: 0;
  font-size: 13px;
  color: var(--footer-fg-muted);
}
.site-footer .footer-credit{
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--footer-fg-soft);
}
.site-footer .footer-credit strong{ color: var(--footer-fg-muted); font-weight: 600; }

/* Insignele ANPC raman `<img>`-urile reale ale nucleului; aici primesc placuta
   in care statea, in propunere, marcajul tipografic `.ct-anpc`. */
.site-footer .footer-anpc{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--s3);
  row-gap: var(--s2);
}
.site-footer .footer-anpc a{
  display: inline-flex;
  align-items: center;
  height: 44px;
  padding: 0 var(--s3);
  border: 1px solid var(--ct-line);
  border-radius: var(--r-sm);
  background-color: color-mix(in srgb, var(--footer-fg) 5%, transparent);
  text-decoration: none;
  transition: border-color var(--t) var(--ease), background-color var(--t) var(--ease);
}
.site-footer .footer-anpc a:hover,
.site-footer .footer-anpc a:focus-visible{
  border-color: var(--color-primary);
  background-color: color-mix(in srgb, var(--color-primary) 10%, transparent);
}
.site-footer .footer-anpc img{ display: block; height: 28px; width: auto; }

/* Marcile de plata: acelasi tratament de placuta, pe `<i>`-urile nucleului
   (`.ct-plata` din propunere nu mai e nevoie — marcajul exista deja). */
.site-footer .footer-payment{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--s3);
}
.site-footer .footer-payment-label{
  font-size: 12.5px;
  color: var(--footer-fg-soft);
}
.site-footer .footer-payment i{
  display: inline-grid;
  place-items: center;
  width: 38px;
  height: 30px;
  border: 1px solid var(--ct-line);
  border-radius: var(--r-sm);
  color: var(--footer-fg-muted);
  font-size: 16px;
}


/* ═══════════════════════════════════════════════════════════
   4. BARA MOBILA DE ACTIUNI — Meniu · Suna · Cos
   (marcajul: `theme/templates/partials/footer.php`)
   ═══════════════════════════════════════════════════════════ */

.ct-bar{ display: none; }

@media (max-width: 767.98px){
  /* ultimul rand de continut nu are voie sa ramana sub bara */
  body{
    padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px));
  }
  .site-footer .footer-bottom{ padding-bottom: var(--s5); }

  .ct-bar{
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 900;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    border-top: 1px solid var(--ct-line);
    background-color: color-mix(in srgb, var(--ct-surface-2) 96%, #000);
    box-shadow: 0 -10px 30px rgba(0, 0, 0, .45);
  }
  .ct-bar::before{
    content: '';
    position: absolute;
    top: -1px;
    left: 12%;
    right: 12%;
    height: 1px;
    background-image: linear-gradient(90deg,
      transparent,
      color-mix(in srgb, var(--color-primary) 60%, transparent),
      transparent);
  }
  /* cat e deschis un panou al platformei, bara nu are ce cauta deasupra lui */
  body.menu-open .ct-bar,
  body.cart-open .ct-bar{ display: none; }

  .ct-bar-btn{
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-height: 58px;
    padding: 6px 4px;
    color: var(--ct-text-2);
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
    transition: color var(--t) var(--ease), background-color var(--t) var(--ease);
  }
  .ct-bar-btn:active{ background-color: color-mix(in srgb, var(--color-primary) 10%, transparent); }
  .ct-bar-btn:focus-visible{ outline: 2px solid var(--color-primary); outline-offset: -3px; }
  .ct-bar-ico{ font-size: 21px; line-height: 1; }
  .ct-bar-txt{
    font-family: var(--f-body);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .06em;
    line-height: 1;
  }
  /* PASTILA VERDE = UNDE ESTI, nu o actiune fixa (cerere user 2026-08-30).
     Pana acum plinul statea agatat pe „Suna", deci bara arata la fel pe toate
     paginile si nu spunea nimic. Regula `.is-active` exista de la inceput, dar
     clasa n-o punea NIMENI — marcajul o pune acum din `footer.php`, dupa calea
     curenta. „Suna" e un `tel:`, nu o pagina: nu poate fi niciodata „unde esti",
     deci primeste conturul, nu plinul. */
  .ct-bar-btn{ position: relative; }
  .ct-bar-btn::before{
    content: '';
    position: absolute;
    inset: 6px 8px;
    border-radius: var(--r-pill);
    border: 1px solid transparent;
    background-color: transparent;
    z-index: 0;
    transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease);
  }
  /* continutul sta DEASUPRA pastilei; `.ct-bar-cos` invaleste iconita cosului,
     deci are nevoie si el de nivel, altfel insigna cade sub plin */
  .ct-bar-ico,
  .ct-bar-txt,
  .ct-bar-cos{ position: relative; z-index: 1; }

  /* „Suna" — actiune la vedere, dar conturata: nu se citeste ca „pagina curenta" */
  .ct-bar-btn--suna{ color: var(--color-primary); }
  .ct-bar-btn--suna::before{
    border-color: color-mix(in srgb, var(--color-primary) 45%, transparent);
    background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
  }

  /* unde esti: pastila plina. Scrisa DUPA `--suna`, ca la specificitate egala
     (0,2,0) sa castige plinul daca vreodata cele doua s-ar suprapune. */
  .ct-bar-btn.is-active{ color: var(--color-on-primary); }
  .ct-bar-btn.is-active::before{
    border-color: transparent;
    background-color: var(--color-primary);
  }

  .ct-bar-cos{ display: inline-flex; }
  .ct-bar-badge{
    position: absolute;
    top: -6px;
    right: -10px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: var(--r-pill);
    background-color: var(--ct-ember);
    color: var(--color-on-accent);
    font-family: var(--f-body);
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    font-variant-numeric: tabular-nums lining-nums;
  }
  .ct-bar-badge[hidden]{ display: none; }
}


/* ═══════════════════════════════════════════════════════════
   5. Praguri responsive — 360 / 768 / 1440
   ═══════════════════════════════════════════════════════════ */
@media (max-width: 999.98px){
  .ct-harta{ order: 2; }
  .ct-livrare-lista{ order: 1; }
}
@media (max-width: 767.98px){
  #newsletterSection .newsletter-form-group{ flex-direction: column; }
  #newsletterSection .newsletter-submit{ width: 100%; }
  /* TINTE DE ATINGERE: masurat, link-urile din subsol aveau 21px inaltime.
     Pe telefon primesc plaja verticala pana la 44px; ritmul listei il da
     acum plaja, nu marginea, ca lista sa nu se umfle. */
  .site-footer .footer-links li{ margin-bottom: 0; }
  .site-footer .footer-links a,
  .site-footer .footer-contact a{
    padding-block: 12px;
    min-height: 44px;
    display: flex;
    align-items: center;
  }
  .site-footer .footer-contact li{ margin-bottom: 0; align-items: center; }
  .site-footer .footer-contact li.footer-company{ align-items: flex-start; margin-top: var(--s3); }
  .site-footer .footer-social a{ width: 46px; height: 46px; }

  .site-footer .footer-bottom .row{ text-align: center; row-gap: var(--s4); }
  .site-footer .footer-payment{ justify-content: center; }
  .site-footer .footer-description{ max-width: none; }
  .ct-calc-camp{ width: 100%; }
  .ct-calc-rand{ gap: var(--s3); }
}
@media (max-width: 400px){
  .ct-liv-zona{ grid-template-columns: 36px minmax(0, 1fr); gap: var(--s3); padding-inline: var(--s4); }
  .ct-liv-index{ width: 36px; height: 36px; font-size: 15px; }
  .ct-liv-nume{ font-size: 17px; }
  .ct-bar-txt{ font-size: 10.5px; }
}


/* ═══════════════════════════════════════════════════════════
   6. Miscarea se opreste la cerere
   ═══════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce){
  .ct-harta-puls{ animation: none; opacity: .14; }
  .site-footer .footer-links a:hover,
  .site-footer .footer-social a:hover,
  #newsletterSection .newsletter-submit:hover,
  .ct-liv-zona.is-aprins{ transform: none; }
}


/* ══════════════════════════════════════════════════════════════
   91-newsletter-verde-inchis.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — banda de newsletter („Noutăți de la Cetiniș") pe verde ÎNCHIS
   Ultima modificare: 2026-09-21 21:15
   Modificari:
     2026-09-21 21:15 — Aceeași rețetă ca banda aplicației (23-acasa-aplicatie.css), la cererea
                        userului: fundal verde de cetină închis, text deschis. Se încarcă DUPĂ
                        90-subsol.css și suprascrie doar culorile; geometria rămâne acolo.
   ═══════════════════════════════════════════════════════════ */

/* 90-subsol.css colorează banda din --color-on-primary (închis pe verdele deschis).
   Redefinit local: titlul, textul, conturul câmpului, mesajele și nota de jos trec
   pe deschis, fără să rescriem fiecare regulă. */
#newsletterSection.newsletter-section{
  --color-on-primary: var(--color-text);
  background-image: linear-gradient(135deg,
      color-mix(in srgb, var(--color-primary-dark) 55%, var(--color-bg)) 0%,
      color-mix(in srgb, var(--color-primary) 30%, var(--color-bg)) 50%,
      color-mix(in srgb, var(--color-primary-dark) 55%, var(--color-bg)) 100%);
  border-top: 1px solid color-mix(in srgb, var(--color-primary) 28%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--color-primary) 28%, transparent);
}
/* Petele de lumină: verde de brand, discret. */
#newsletterSection.newsletter-section::before{
  background-image: radial-gradient(circle,
      color-mix(in srgb, var(--color-primary) 18%, transparent) 0%, transparent 70%);
}

/* Câmpul: conturul deschis e prea tare pe verdele închis — îl cobor la verde. */
#newsletterSection .newsletter-input{
  border-color: color-mix(in srgb, var(--color-primary) 45%, transparent);
}
#newsletterSection .newsletter-input:focus{
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 26%, transparent);
}

/* Butonul „Abonează-te": verdele mărcii cu text închis (~9,7:1). În forma veche fundalul
   venea din --color-on-primary, care acum e deschis → butonul ar fi ieșit aproape alb. */
#newsletterSection .newsletter-submit{
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-bg);
}
#newsletterSection .newsletter-submit:hover{
  background-color: color-mix(in srgb, var(--color-primary) 86%, var(--color-text));
  border-color: color-mix(in srgb, var(--color-primary) 86%, var(--color-text));
  color: var(--color-bg);
}
#newsletterSection .newsletter-submit:focus-visible{ outline-color: var(--color-primary); }

/* Lacătul și nota: verde deschis pe icoană, text deschis atenuat. */
#newsletterSection .newsletter-disclaimer i{ color: var(--color-primary-light); }


/* ══════════════════════════════════════════════════════════════
   95-integrare.css
   ══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   CETINIȘ — reparatii de integrare (T3)
   Ultima modificare: 2026-08-29 12:40
   Modificari:
     2026-08-29 12:40 — Conturul sagetilor de slider urcat la 3:1 pe orice
                        fundal (scris AICI, nu in fisierul heroului, la care
                        lucreaza alt agent); contorul de preparate din banda
                        de sus ascuns, ca sa nu se mai scrie de doua ori pe
                        /shop si pe /categorie.
     2026-08-28 20:35 — Portare din propunere (parts/95-integrare.css):
                        butonul de pe cardul de produs nu mai acopera
                        mancarea pe telefon (rescris pentru structura reala,
                        cu `<a>` care isi tine singur raportul); banda de
                        ancore de pe Contact si `h1.ct-sr` scoase (marcajul
                        lor nu exista pe situl real); adaugata pastila
                        „Indisponibil" / „Stoc epuizat", care vine din nucleu
                        cu fundal ALB scris inline.

   Se incarca ULTIMUL, deci bate fisierele celorlalti fara `!important`.
   Aici stau doar reparatiile care ating mai multe zone deodata; ce e local
   ramane in fisierul zonei.
   ═══════════════════════════════════════════════════════════ */


/* ── 1. Pe telefon, actiunea nu mai sta PESTE mancare ────────────────
   Contractul CloudShop aseaza `.product-card-overlay` peste fotografie.
   Pe desktop apare la hover, deci nu deranjeaza. Pe telefon nu exista
   hover: banda ar ramane permanent afisata si ar taia treimea de jos a
   pozei — exact ce interzice BRIEF §2, „poza ramane curata".

   Sub 768px scoatem butonul din suprapunere si il punem SUB imagine.
   Mecanica: fotografia primeste ea raportul 1/1 (pe `<a>`), iar cutia
   `.product-card-image` devine o coloana care creste cu butonul. Fara
   asta, `aspect-ratio` de pe cutie ar tine inaltimea fixa si butonul ar
   cadea tot peste poza. */
@media (max-width: 767.98px){
  .product-card .product-card-image{
    aspect-ratio: auto;
    min-height: 0;
    overflow: visible;
    display: flex;
    flex-direction: column;
    border-radius: calc(var(--r) - 1px) calc(var(--r) - 1px) 0 0;
  }
  .product-card .product-card-image > a{
    position: relative;
    inset: auto;
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border-radius: calc(var(--r) - 1px) calc(var(--r) - 1px) 0 0;
  }

  .product-card .product-card-overlay{
    position: static;
    inset: auto;
    opacity: 1;
    visibility: visible;
    transform: none;
    background: none;
    -webkit-backdrop-filter: none;
            backdrop-filter: none;
    padding: var(--s2) var(--s3) 0;
  }
  .product-card .product-card-overlay .btn{ width: 100%; }

  /* insignele si inima raman ancorate de fotografie, nu de cutia crescuta */
  .product-card .product-card-badges{ top: var(--s2); left: var(--s2); }
  .product-card .product-card-wishlist{ top: var(--s2); right: var(--s2); opacity: 1; }
}


/* ── 2. „Indisponibil la comanda" / „Stoc epuizat" ───────────────────
   `templates/partials/product-card.php` scrie pe pastila
   `style="background:rgba(255,255,255,0.9)"` — alb aprins peste o poza,
   pe o tema inchisa. Stilul e INLINE, deci singurul mod de a-l acoperi e
   `!important` (regula de autor bate stilul inline non-important).
   Reparatia in nucleu, pentru toti, e in raport. */
.product-card .product-card-overlay > span.btn{
  background: var(--ct-surface-2) !important;
  border: 1px solid var(--ct-line-control);
  color: var(--ct-text-2) !important;
  width: 100% !important;
  padding: 0 var(--s3) !important;
  cursor: default;
}
.product-card .product-card-overlay > span.btn .fa-ban{ color: var(--ct-danger); }
.product-card .product-card-overlay > span.btn .fa-cart-shopping{ color: var(--ct-warn); }


/* ── 3. Nimic nu impinge pagina lateral ──────────────────────────────
   Benzile cu fundal propriu (indemnul final, produsele de pe acasa)
   contin randuri Bootstrap cu margini negative. `clip` taie fara sa
   creeze container de derulare — cu `hidden` gestul de derulare inceput
   peste banda s-ar agata. */
.site-cta,
.section-products,
.section-story,
.section-catering,
.contact-hero,
.about-hero{ overflow-x: clip; }


/* ── 4. Sagetile sliderului: conturul se vede pe ORICE fundal ────────
   Sageata sta PESTE fotografie, deci fundalul de sub ea variaza de la
   verdele paginii pana la albul pe care sunt decupate pizzele. Cu discul
   la 62% si firul la 34% (valorile din propunere, in `20-acasa-hero.css`),
   conturul iese 2.16:1 pe fundal inchis si mai putin pe cel luminos — sub
   pragul de 3:1 cerut controalelor. Cu 84% / 62% masuram 4.44:1 pe fundal
   inchis si 3.38:1 in cazul cel mai luminos, iar chevronul din mijloc
   ramane la peste 16:1.
   ⚠️ Scris AICI, nu in fisierul heroului, fiindca la el lucreaza alt agent
      (fundalurile slide-urilor) — asa nu ne calcam pe modificari. */
#heroSlider .hero-arrow{
  background: color-mix(in srgb, var(--color-bg) 84%, transparent);
  border-color: color-mix(in srgb, var(--color-primary) 62%, transparent);
}


/* ── 5. Contorul de preparate se scrie o singura data ────────────────
   `shop.php` si `category.php` scriu ACELASI numar de doua ori, la doi
   centimetri distanta: o data in banda de sus (`.category-hero-count`) si
   o data in capul listei (`.shop-header-count`). Pe magazinul gol iesea
   „0 produse" scris de doua ori sub el insusi.

   Il pastram pe cel din capul listei, nu pe cel din banda: `shop.js` il
   tine la zi cand se filtreaza (`#shopResultsCount`), pe cand cel din banda
   e scris o singura data pe server si ar arata un numar VECHI dupa primul
   filtru. In plus, doar cel din lista asculta setarea „Afiseaza numarul de
   produse"; cel din banda o ignora. Reparatia in nucleu e in raport. */
.category-hero .category-hero-meta{ display: none; }


/* ── 6. Tinte de atingere, verificate la final ───────────────────────
   Se scriu ULTIMELE ca sa bata regulile de baza la specificitate egala. */
@media (max-width: 767.98px){
  .product-card .product-card-wishlist{ width: var(--ct-tap); height: var(--ct-tap); }
  .product-card .product-card-overlay .btn{ min-height: var(--ct-tap); }
  .sort-dropdown-item{ min-height: var(--ct-tap); }
  .contact-social-link{ width: var(--ct-tap); height: var(--ct-tap); }
}


