/* ==========================================================================
   Regulile temei peste chofu.css (care vine neschimbat din machetă).
   Puține și numite: fiecare bloc spune al cui este și de ce există.
   ========================================================================== */

/* --- Conținut: eticheta „original" din recenziile proiectelor --------------
   Apare doar după ce chofu.js încarcă recenzia (pe site calea funcționează;
   în machetă nu), deci nu schimbă nimic față de machetă. În chofu.css este o
   capsulă gri; regula casei (secțiunea 163 din chofu.css) spune că o
   etichetă statică nu poartă capsulă: rămâne text mic, cu majuscule. */
.crev__orig { border: 0; border-radius: 0; padding: 0; background: none;
              font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }

/* --- Magazin: finalizarea comenzii ----------------------------------------
   chofu.css spațiază consimțământul cu `#ckoForm .consent`. Formularul real
   nu poate purta id-ul „ckoForm" (chofu.js, M24, l-ar intercepta cu o
   confirmare falsă), așa că aceeași regulă stă pe clasa lui. */
.cko .consent { margin-bottom: clamp(1.25rem, 2.2vw, 1.75rem); }

/* --- Magazin: mesajele WooCommerce, în .notice din machetă ----------------
   Apar doar după o acțiune (cupon, eroare la plată), nu pe paginile din
   machetă. Lista din interior nu are buline; legătura din mesaj e subliniată. */
.chofu-notices { margin-block: 0 1.25rem; }
.chofu-notices .notice + .notice { margin-top: .5rem; }
.chofu-notice__l { margin: 0; padding: 0; list-style: none; }
.chofu-notice__l li + li { margin-top: .35rem; }
.notice a { text-decoration: underline; }
.woocommerce-NoticeGroup { margin-bottom: 1.25rem; }

/* --- Magazin: detaliile contului pentru proformă, pe „comanda primită" ---- */
.done__pay { font-size: var(--fs-small); }
.done__pay h2 { font-size: var(--fs-h3); margin: 0 0 .5rem; }
.done__pay ul { margin: .25rem 0 0; padding: 0; list-style: none; display: grid; gap: .2rem; }

/* --- Magazin: contul clientului (fără pagină în machetă) ------------------
   Meniul contului ca rând de legături, tabelele pe toată lățimea. */
.chofu-account .woocommerce-MyAccount-navigation ul { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem;
  margin: 0 0 1.5rem; padding: 0 0 1rem; list-style: none; border-bottom: 1px solid var(--divider); }
.chofu-account .woocommerce-MyAccount-navigation a { display: inline-flex; align-items: center; min-height: 44px;
  font-weight: 600; color: var(--text-muted); text-decoration: none; }
.chofu-account .woocommerce-MyAccount-navigation .is-active a { color: var(--ink); }
.chofu-account table { width: 100%; border-collapse: collapse; }
.chofu-account th, .chofu-account td { padding: .75rem .5rem; border-bottom: 1px solid var(--divider); text-align: left; }
.chofu-account .button { display: inline-flex; align-items: center; min-height: 44px; }

/* --- Câmpurile capcană (honeypot) cu .sr-only ------------------------------
   Regulile formularelor (lățime 100%, padding) bat .sr-only pe un <input>, iar
   câmpul ascuns ieșea din pagină: 59 px de derulare laterală la 375 px pe
   pagina de produs (#pumpDlgF). Un câmp vizual ascuns rămâne de 1 px. */
input.sr-only { width: 1px !important; min-width: 0 !important; max-width: 1px !important;
                height: 1px !important; padding: 0 !important; border: 0 !important; }

/* --- Magazin: sortarea din catalog la 320 px -------------------------------
   În machetă eticheta și lista nu încap pe rândul lor la 320 px: 2 px de
   derulare laterală. Lista se poate strânge; nimic nu se mișcă de la 340 în sus. */
.shopsort { min-width: 0; max-width: 100%; }
.shopsort select { min-width: 0; max-width: 100%; }

/* --- Magazin: butonul „Elimină" din coș ------------------------------------
   Pe site e o legătură (merge și fără script), nu un <button>: fără lățimea
   intrinsecă a butonului, celula de 1% îl strângea la 2 px pe telefon, iar pe telefon celula (poziționată
   absolut) avea 1% din rând, deci cercul ieșea din pagină. Cercul
   rămâne de 34 px, ca în machetă. */
a.ctab__rm { flex: none; min-width: 34px; box-sizing: border-box; outline-offset: 5px; }
@media (max-width: 759px) { .ctab__x { width: auto; } }

/* --- Magazin: livrarea la 320 px --------------------------------------------
   „îl stabilim telefonic" nu se rupe (white-space: nowrap în chofu.css) și, la
   320 px, rândul ieșea cu 14 px din pagină, și în machetă. Sub 360 px costul
   se poate rupe pe două rânduri. */
@media (max-width: 359px) {
  .pick--row { min-width: 0; }
  .pick--row b { white-space: normal; text-align: right; }
}

/* --- Recenzii Google: originalul unei recenzii traduse ----------------------
   Reviews\GoogleReviews dă traducerea lui Google; originalul stă într-un
   „details", deschis la clic, fără script. Eticheta rămâne text mic, ca
   .grev-tr din machetă, fără capsulă. */
.grev-orig { margin-top: .7rem; }
.grev-orig > summary { list-style: none; margin-top: 0; }
.grev-orig > summary::-webkit-details-marker { display: none; }
.grev-orig[open] > summary u::after { content: " \2191"; }
.grev-orig > .grev-q, .grev-orig > .crev__q { margin-top: .6rem; color: var(--text-muted); }
.grev-tr--note { cursor: default; }
.grev-tr--note:hover { color: var(--text-muted); }
.grev-id a, .crev__id a { color: inherit; text-decoration: none; }
.grev-id a:hover, .crev__id a:hover { text-decoration: underline; text-underline-offset: .2em; }

/* --- Germană și maghiară: cuvintele lungi se despart în silabe -------------
   „Warmwasserspeicher", „Dachbodendämmung", „energiahatékonysági" nu au unde
   să se rupă și ieșeau din carduri, butoane și coloane înguste (docs/TEXT-FIT.md).
   Chrome și Safari au dicționare de despărțire pentru de și hu; atributul lang
   al paginii le alege. Româna și engleza rămân neschimbate. Adresele, codurile
   de produs și numerele de telefon nu se despart. */
html:lang(de), html:lang(hu) { -webkit-hyphens: auto; hyphens: auto; }
html:lang(de) :is(a[href^="mailto:"], a[href^="tel:"], .pcard__code, .pcode, input, textarea),
html:lang(hu) :is(a[href^="mailto:"], a[href^="tel:"], .pcard__code, .pcode, input, textarea) {
  -webkit-hyphens: manual; hyphens: manual; }

/* --- Paginile de conținut și studiile de caz, pe toată lățimea -------------
   Cererea proprietarului: textul lung (Despre, Montaj, Garanție, Casa Verde,
   paginile legale, proiectele) curge pe toată lățimea .wrap, ca articolele de
   blog. chofu.css (secțiunea 142) a scos deja măsura de pe .wrap--text,
   .prose și .lead; aici cad cele rămase: corpul paginilor legale (74ch),
   capul secțiunilor cu paragraf (72ch) și introducerea unui proiect (56ch).
   Doar pe tipurile de pagină de mai jos (clasa „ctx-*" de pe <body>, din
   Views\PageContext); produsele, configuratorul, oferta, coșul și prima
   pagină rămân neschimbate. Lizibilitatea vine din rândul mai aerisit. */
:is(.ctx-about, .ctx-install, .ctx-warranty, .ctx-casaverde, .ctx-page, .ctx-projects) main
  :is(.legal__body, .section-head, .cs__lead, .prose, .wrap--text, .lead, .doc article p, .doc article li,
      .legal__body > p, .legal__body > ul, .legal__body > ol, .legal__body > .table-scroll) { max-width: none; }
:is(.ctx-about, .ctx-install, .ctx-warranty, .ctx-casaverde, .ctx-page, .ctx-projects) main
  :is(.legal__body, .prose) { line-height: 1.75; }
:is(.ctx-about, .ctx-install, .ctx-warranty, .ctx-casaverde, .ctx-page, .ctx-projects) main
  :is(.legal__body, .prose) :is(table, figure, img, .table-scroll) { max-width: 100%; }
@media (min-width: 1280px) {
  :is(.ctx-about, .ctx-install, .ctx-warranty, .ctx-casaverde, .ctx-page) main .legal__body { font-size: 1.0625rem; }
}

/* --- Magazin: coș sau ofertă completă, pe fiecare produs ------------------
   Regula NEDAVI: orice produs are preț și două acțiuni, ca într-un magazin
   obișnuit: coșul și cererea de ofertă completă (cu montaj și transport).
   Macheta avea pe card doar coșul (.pcard__quote e ascuns în chofu.css,
   secțiunea 62), deci a doua acțiune are aici regulile ei. Fără capsule gri. */

/* Cardul din /produse/ și de pe prima pagină: coșul lângă preț, oferta sub el,
   pe un rând întreg, despărțit printr-o linie. Ținta are cel puțin 44 px. */
.pcard .pcard__foot { padding-bottom: .85rem; }
.pcard__offer { display: flex; align-items: center; gap: .55rem; min-height: 48px;
  margin: 0 clamp(1rem, 1.8vw, 1.35rem); padding: .55rem 0 .75rem; border-top: 1px solid var(--divider);
  font-size: .875rem; font-weight: 600; line-height: 1.3; color: var(--ink); text-decoration: none; }
.pcard__offer svg { width: 18px; height: 18px; flex: none; }
.pcard__offer span { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: .2em;
  transition: text-decoration-color .2s; }
.pcard__offer:hover span { text-decoration-color: currentColor; }
.pcard__offer:focus-visible { outline: 3px solid var(--casing, var(--ink)); outline-offset: 2px; border-radius: 4px; }
.pcard .pcard__ask { display: block; padding-bottom: .35rem; line-height: 1.35; }

/* Cardul de pe paginile de categorie (/produse/pompe/, /produse/boilere/):
   imaginea în aceeași ramă pe toate cardurile, prețul ca pe card, butoanele
   pe toată lățimea, unul sub altul. */
.ptile .ptile__media { display: grid; place-items: center; aspect-ratio: 1 / 1; overflow: hidden;
  background: var(--bg-sunken, #f4f5f7); }
.ptile .ptile__media img { width: 100%; height: 100%; object-fit: contain; }
.ptile__name { text-decoration: none; }
.ptile__desc { margin: 0; font-size: var(--fs-small); color: var(--text-muted); }
.ptile__price { margin-bottom: 1rem; }
.ptile__act { display: grid; gap: .6rem; }
.ptile__act .btn { width: 100%; justify-content: center; min-height: 48px; }

/* Pagina produsului: cantitatea și coșul pe un rând, oferta dedesubt, cu
   rândul care spune ce cuprinde. */
.buybox__buy { display: flex; gap: .75rem; flex-wrap: wrap; align-items: stretch; }
.buybox__buy .btn { flex: 1; min-width: 200px; justify-content: center; }
.buybox__offer { display: grid; gap: .5rem; }
.buybox__offer .btn { justify-content: center; }
.buybox__note { margin: 0; font-size: var(--fs-micro, 13px); line-height: 1.45; color: var(--text-muted); }
.buybox > .pcard__ask { display: block; font-size: var(--fs-body, 1rem); color: var(--ink); }

/* Bara de jos de pe pagina produsului, pe telefon: textul lung al ofertei încape pe două rânduri. */
@media (max-width: 700px) {
  .quote-bar__act .btn { white-space: normal; line-height: 1.2; text-align: center; justify-content: center; }
}

/* /cere-oferta/?produs=: oferta completă este singura cerere; produsul
   singur se cumpără direct (butonul „Cumpără doar produsul"). */
.pq-full { margin: 0 0 clamp(1rem, 1.8vw, 1.5rem); }
.pq .pq-full__t { margin: 0 0 .4rem; font-size: clamp(1.3rem, 1.7vw, 1.6rem); line-height: 1.2; }
.pq-full__d { margin: 0; color: var(--text-muted); }
.pq-only { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.25rem;
  margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--divider); }
.pq-only__d { flex: 1 1 18rem; margin: 0; font-size: var(--fs-small); color: var(--text-muted); }
.pq-only__go { flex: none; min-height: 48px; justify-content: center; }
@media (max-width: 520px) { .pq-only__go { width: 100%; } }

/* Descrierea scurtă a produsului, sub atribute și deasupra casetei de cumpărare. */
.pintro { margin: clamp(1rem, 2vw, 1.4rem) 0; }
.pintro > :first-child { margin-top: 0; }
.pintro > :last-child { margin-bottom: 0; }
.pintro p + p { margin-top: .75em; }

/* Documentele oficiale (Chofu > Documente oficiale). Când documentul are un
   PDF, sub documentul mărit apar „Deschide PDF" și „Descarcă PDF", pe o bară
   albă lipită de marginea de jos a ferestrei cât timp se derulează scrisoarea;
   pe Despre Chofu, sub textul imaginii. Butonul e plin, legătura e text:
   fără capsule gri. Ținta are cel puțin 44 px. */
.certv__pdf { position: sticky; bottom: calc(-1 * clamp(1rem, 2.4vw, 2rem)); z-index: 1;
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem;
  margin: 0 calc(-1 * clamp(1rem, 2.4vw, 2rem)) calc(-1 * clamp(1rem, 2.4vw, 2rem));
  padding: .75rem clamp(1rem, 2.4vw, 2rem); background: #fff; border-top: 1px solid var(--divider); }
.docfig__pdf { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem; margin: .75rem 0 0; }
.certv__pdf-open, .docfig__pdf-open { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px;
  padding: .55rem 1.1rem; border-radius: 10px; background: var(--ink); color: #fff;
  font-size: var(--fs-small, .9375rem); font-weight: 600; line-height: 1.2; text-decoration: none; transition: background .2s; }
.certv__pdf-open:hover, .docfig__pdf-open:hover { background: var(--chofu-navy); color: #fff; }
.certv__pdf-save, .docfig__pdf-save { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px;
  color: var(--ink); font-size: var(--fs-small, .9375rem); font-weight: 600; line-height: 1.2; text-decoration: none; }
.certv__pdf-save span, .docfig__pdf-save span { text-decoration: underline; text-decoration-color: transparent;
  text-underline-offset: .2em; transition: text-decoration-color .2s; }
.certv__pdf-save:hover span, .docfig__pdf-save:hover span { text-decoration-color: currentColor; }
.certv__pdf svg, .docfig__pdf svg { width: 18px; height: 18px; flex: none; }
.certv__pdf a:focus-visible, .docfig__pdf a:focus-visible, .docfig__link:focus-visible { outline: 3px solid var(--casing, var(--ink)); outline-offset: 2px; border-radius: 10px; }
.docfig__link { display: block; }
@media (max-width: 560px) { .certv__pdf-open { flex: 1 1 auto; justify-content: center; } }
@media (prefers-reduced-motion: reduce) { .certv__pdf-open, .docfig__pdf-open, .certv__pdf-save span, .docfig__pdf-save span { transition: none; } }

/* Sigla NETOPIA Payments din subsol (scriptul pune un div înaintea lui). */
.np-badge { display: flex; justify-content: center; margin-top: 14px; }
.np-badge > div { width: 180px !important; height: 36px !important; }

/* --- Magazin: verificarea reCAPTCHA, înainte de „Plasează comanda" --------
   Captcha\Widget, doar cât e pornită. v2: titlul, ca eticheta unui câmp,
   apoi caseta Google (304 × 78 px, locul ținut dinainte, ca pagina să nu
   sară la încărcare). Eroarea, cu roșul de la .field-err, sub casetă; caseta
   greșită primește un contur roșu. v3: doar nota Google, mică, ca rândul de
   sub buton; insigna plutitoare e ascunsă (Google o permite cu nota vizibilă).
   Pe telefoanele foarte înguste caseta se micșorează, nu iese din pagină. */
.cko-captcha { margin: 0 0 clamp(1.25rem, 2.2vw, 1.75rem); }
.cko-captcha:focus { outline: none; }
.cko-captcha:focus-visible { outline: 3px solid var(--casing, var(--ink)); outline-offset: 4px; border-radius: 6px; }
.cko-captcha__l { margin: 0 0 .5rem; font-size: var(--fs-small); font-weight: 600; }
.cko-captcha__w { min-height: 78px; width: 304px; max-width: 100%; }
.cko-captcha__w > div { transform-origin: 0 0; }
.cko-captcha.is-bad .cko-captcha__w iframe { outline: 2px solid var(--chofu-red); outline-offset: 2px; border-radius: 3px; }
.cko-captcha__e { margin: .4rem 0 0; }
.cko-captcha__e:empty { margin: 0; }
.cko-captcha__note { margin: 0; font-size: var(--fs-micro); color: var(--text-muted); line-height: 1.5; }
.cko-captcha__note a { color: inherit; text-decoration: underline; }
.cko-captcha--v3 { margin-bottom: 1rem; }
.grecaptcha-badge { visibility: hidden; }
@media (max-width: 359px) {
  .cko-captcha__w { min-height: 70px; }
  .cko-captcha__w > div { transform: scale(.88); }
}

/* --- Configurator: „Cere ofertă cu datele casei tale" ----------------------
   Butonul apare în panoul întunecat al rezultatului (.cfg__out, fundal
   --casing) când nu există o recomandare sau când, până la pragul de cascadă
   (Configurator, „Cascadă de pompe doar peste"), propunem o singură pompă sub
   necesar. În chofu.css .btn--cyan are chiar culoarea panoului, iar săgeata
   SVG nu are mărime: butonul se vedea ca un text mic lângă o săgeată uriașă.
   Aici: buton alb, pe toată lățimea, cu săgeata de mărimea textului. */
.cfg__out .cfg__ask { width: 100%; margin-top: 1rem; background: #fff; border-color: #fff;
                      color: var(--ink); font-size: var(--fs-small, 16px); min-height: 48px;
                      padding: 10px 18px 10px 20px; gap: 12px; }
.cfg__out .cfg__ask::after { display: none; }
.cfg__out .cfg__ask svg { width: 20px; height: 20px; flex: none; }
.cfg__out .cfg__ask:hover { background: #e9eaee; border-color: #e9eaee; color: var(--ink); }
.cfg__out .cfg__ask:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }

/* --- Magazin: „Livrez la altă adresă" și adresele comenzii ----------------
   Fără pereche în machetă. Bifa folosește .consent, câmpurile .cko__g, ca la
   facturare; blocul dispare la ridicarea din depozit (commerce.js). Pe
   „comanda primită" și la plată, adresa de facturare și cea de livrare stau
   una lângă alta de la 700px în sus. */
.cko__ship-to { margin-top: clamp(1.25rem, 2.2vw, 1.75rem); }
.cko__ship-to .consent { margin-bottom: 0; }
.cko__hint { display: block; margin-top: .2rem; font-size: var(--fs-micro); color: var(--text-muted); }
.cko__addr { margin-top: 1rem; }
.cko__sh { margin: 0 0 .85rem; font-size: var(--fs-body, 1rem); font-weight: 700; }
.cko__opt { font-weight: 400; color: var(--text-muted); }
.cko__acct { margin-top: clamp(1.25rem, 2.2vw, 1.75rem); }
.cko__acct .field { margin-top: .75rem; }
.cko__addrs { display: grid; gap: 0 clamp(1rem, 2vw, 2rem); margin-bottom: 1rem; }
@media (min-width: 700px) { .cko__addrs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.cko__addrtxt { margin: 0; line-height: 1.55; overflow-wrap: anywhere; }

/* --- Magazin: mesajele WooCommerce ca în iOS / macOS -------------------------
   O carte cu nuanță discretă, pictogramă în cerc, text clar și o intrare lină.
   Eroare: roșu cald (text #7c1d1d pe #fdf3f2, 9,6:1); reușită: verde (#14532d
   pe #f1f8f3); informare: neutru. Pictogramele sunt SVG în mask, deci iau
   culoarea textului. Fără mișcare pentru cine a cerut mai puțină mișcare. */
.chofu-notices .notice,
.woocommerce-NoticeGroup .notice,
.cko .notice,
.cart .notice {
	--n-bg: #f5f6f8; --n-fg: #1d1d1f; --n-ic: #6e6e73; --n-edge: rgba(0, 0, 0, .06);
	--n-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8.2' fill='none' stroke='%23000' stroke-width='1.8'/%3E%3Cpath d='M10 9v5' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='6.2' r='1.15'/%3E%3C/svg%3E");
	position: relative;
	display: grid; grid-template-columns: 28px minmax(0, 1fr); column-gap: 14px; align-items: start;
	margin: 0 0 1.25rem; padding: 16px 20px 16px 18px;
	background: var(--n-bg); color: var(--n-fg);
	border: 1px solid var(--n-edge); border-left: 1px solid var(--n-edge); border-radius: 16px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 24px -12px rgba(0, 0, 0, .12);
	font-size: var(--fs-small, .95rem); line-height: 1.5;
	animation: chofu-notice-in .32s cubic-bezier(.2, .8, .2, 1) both;
}
.chofu-notices .notice::before,
.woocommerce-NoticeGroup .notice::before,
.cko .notice::before,
.cart .notice::before {
	content: ""; width: 28px; height: 28px; border-radius: 50%;
	background: color-mix(in srgb, var(--n-ic) 14%, transparent);
	-webkit-mask: none; mask: none;
	grid-row: 1;
}
.chofu-notices .notice::after,
.woocommerce-NoticeGroup .notice::after,
.cko .notice::after,
.cart .notice::after {
	content: ""; position: absolute; left: 22px; top: 20px; width: 20px; height: 20px;
	background: var(--n-ic);
	-webkit-mask: var(--n-mask) center / contain no-repeat; mask: var(--n-mask) center / contain no-repeat;
}
.notice .chofu-notice__l { grid-column: 2; grid-row: 1; align-self: center; min-height: 28px; display: grid; align-content: center; }
.notice .chofu-notice__l li { font-weight: 500; letter-spacing: -.005em; }
.notice .chofu-notice__l li + li { margin-top: .4rem; padding-top: .4rem; border-top: 1px solid var(--n-edge); }
.notice a { color: inherit; font-weight: 600; text-underline-offset: 3px; }

.chofu-notices .notice.woocommerce-error,
.woocommerce-NoticeGroup .notice.woocommerce-error,
.cko .notice.woocommerce-error,
.cart .notice.woocommerce-error,
.chofu-notices .notice--warn,
.cko .notice--warn,
.cart .notice--warn {
	--n-bg: #fdf3f2; --n-fg: #7c1d1d; --n-ic: #d0342c; --n-edge: rgba(208, 52, 44, .18);
	--n-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2.6 18.2 17H1.8z' fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M10 8v4.4' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='14.6' r='1.1'/%3E%3C/svg%3E");
}
.chofu-notices .notice.woocommerce-message,
.woocommerce-NoticeGroup .notice.woocommerce-message,
.cko .notice.woocommerce-message,
.cart .notice.woocommerce-message {
	--n-bg: #f1f8f3; --n-fg: #14532d; --n-ic: #1f8a4c; --n-edge: rgba(31, 138, 76, .18);
	--n-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8.2' fill='none' stroke='%23000' stroke-width='1.8'/%3E%3Cpath d='m6.3 10.3 2.5 2.5 5-5.3' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.notice.woocommerce-error:focus { outline: none; }
.notice.woocommerce-error:focus-visible { outline: 3px solid color-mix(in srgb, #d0342c 45%, transparent); outline-offset: 3px; }

/* Eroarea de sub verificarea reCAPTCHA, în același limbaj. */
.cko-captcha__e:not(:empty) {
	display: flex; gap: 8px; align-items: flex-start;
	margin-top: .6rem; padding: 10px 12px; border-radius: 12px;
	background: #fdf3f2; color: #7c1d1d; border: 1px solid rgba(208, 52, 44, .18);
	font-size: var(--fs-micro, .85rem); font-weight: 500;
	animation: chofu-notice-in .28s cubic-bezier(.2, .8, .2, 1) both;
}

@keyframes chofu-notice-in {
	from { opacity: 0; transform: translateY(-6px) scale(.985); }
	to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
	.chofu-notices .notice, .woocommerce-NoticeGroup .notice, .cko .notice, .cart .notice, .cko-captcha__e:not(:empty) { animation: none; }
}
@media (max-width: 600px) {
	.chofu-notices .notice, .woocommerce-NoticeGroup .notice, .cko .notice, .cart .notice { padding: 14px 16px 14px 14px; column-gap: 12px; border-radius: 14px; }
	.chofu-notices .notice::after, .woocommerce-NoticeGroup .notice::after, .cko .notice::after, .cart .notice::after { left: 18px; top: 18px; }
}

/* --- Magazin: confirmarea adresei de e-mail (plată, comandă plasată) -------
   WooCommerce o cere unui vizitator la mai mult de 10 minute de la comandă
   (views/woocommerce/verify-email.twig). O casetă ca „Comandă plasată"
   (.done): chenar subțire, fără umbră, centrată, cât un rând de citit. Un
   singur buton plin, pe toată lățimea. Eroarea stă sub câmp, în limbajul
   mesajelor de mai sus (roșu cald, pictograma în triunghi); goală nu ocupă
   loc, dar rămâne în pagină, ca cititorul de ecran să o anunțe. */
.vmail { display: flex; justify-content: center; margin-top: clamp(2rem, 4vw, 3.5rem); }
.vmail__card { width: 100%; max-width: 30rem; padding: clamp(1.5rem, 3vw, 2.5rem);
               border: 1px solid var(--divider); border-radius: var(--r-card);
               background: var(--bg-raised); }
.vmail__t { margin: 0; font-size: clamp(1.35rem, 2.2vw, 1.75rem); letter-spacing: -.02em; line-height: 1.15; }
.vmail__p { margin: .6rem 0 0; font-size: var(--fs-small); line-height: 1.55; color: var(--text-muted); }
.vmail__hint { display: block; margin-top: .5rem; }
.vmail__addr { font-weight: 600; color: var(--ink); overflow-wrap: anywhere; }
.vmail__field { margin: clamp(1.25rem, 2.4vw, 1.75rem) 0 1.25rem; }
.vmail__field input { max-width: none; }
.vmail__err { margin: 0; }
.vmail__err:not(:empty) {
	display: flex; gap: 8px; align-items: flex-start;
	margin-top: .6rem; padding: 10px 12px; border-radius: 12px;
	background: #fdf3f2; color: #7c1d1d; border: 1px solid rgba(208, 52, 44, .18);
	font-size: var(--fs-small); font-weight: 500; line-height: 1.45;
	animation: chofu-notice-in .28s cubic-bezier(.2, .8, .2, 1) both;
}
.vmail__err:not(:empty)::before {
	content: ""; flex: none; width: 16px; height: 16px; margin-top: .1em; background: #d0342c;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2.6 18.2 17H1.8z' fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M10 8v4.4' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='14.6' r='1.1'/%3E%3C/svg%3E") center / contain no-repeat;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2.6 18.2 17H1.8z' fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M10 8v4.4' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='14.6' r='1.1'/%3E%3C/svg%3E") center / contain no-repeat;
}
.vmail__more { display: grid; gap: .5rem; margin-top: 1.5rem; padding-top: 1.25rem;
               border-top: 1px solid var(--divider);
               font-size: var(--fs-small); line-height: 1.5; color: var(--text-muted); }
.vmail__more p { margin: 0; }
.vmail__more a { color: var(--ink); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
@media (prefers-reduced-motion: reduce) { .vmail__err:not(:empty) { animation: none; } }
@media (max-width: 600px) { .vmail { margin-top: 1.5rem; } .vmail__card { padding: 1.25rem; } }

/* Semnătura dezvoltatorului, în bara de copyright: discretă, sub legăturile ANPC. */
.copyright .credit { margin: 12px 0 0; font-size: 12px; letter-spacing: .01em; opacity: .72; }
.copyright .credit a { text-decoration: underline; text-underline-offset: 2px; }
.copyright .credit a:hover, .copyright .credit a:focus-visible { opacity: 1; }

/* „Înapoi sus": cerc discret, stânga jos (dreapta e a asistentului), deasupra
   barei de ofertă de pe pagina produsului; apare doar la derularea în sus. */
.totop {
	position: fixed; z-index: 85;
	left: max(16px, env(safe-area-inset-left));
	bottom: calc(max(16px, env(safe-area-inset-bottom) + 8px) + var(--qbar-on, 0px));
	width: 48px; height: 48px; padding: 0; display: grid; place-items: center;
	border: 1px solid rgba(0, 0, 0, .08); border-radius: 50%;
	background: rgba(255, 255, 255, .88); color: #1d1d1f;
	-webkit-backdrop-filter: saturate(180%) blur(16px); backdrop-filter: saturate(180%) blur(16px);
	box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 8px 24px -8px rgba(0, 0, 0, .22);
	cursor: pointer;
	opacity: 0; visibility: hidden; transform: translateY(12px) scale(.96);
	transition: opacity .22s ease, transform .28s cubic-bezier(.2, .8, .2, 1), visibility 0s linear .28s;
}
.totop.is-on { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.totop:hover { background: #fff; }
.totop:active { transform: scale(.94); }
.totop:focus { outline: none; }
.totop:focus-visible { outline: 3px solid rgba(28, 64, 148, .55); outline-offset: 3px; }
body:has(.quote-bar.is-on) .totop { --qbar-on: var(--qbar-h, 0px); }
@media (min-width: 900px) { .totop { left: 24px; bottom: 24px; width: 44px; height: 44px; } body:has(.quote-bar.is-on) .totop { bottom: calc(24px + var(--qbar-h, 0px)); } }
@media (prefers-reduced-motion: reduce) { .totop, .totop.is-on { transition: none; transform: none; } }
@media print { .totop { display: none !important; } }

/* Faptele de sub preț (partials/buy-facts.twig): stocul și livrarea, transportul,
   returul, garanția, plata. Rânduri liniștite, cu pictograme mici în culoarea
   textului secundar, fără chenare și fără fundal: citesc ca parte din caseta de
   cumpărare, nu ca un bloc lipit. O singură coloană la orice lățime: se citește
   de sus în jos, ca o listă. */
.bfacts { list-style: none; margin: 1.1rem 0 0; padding: 1.1rem 0 0; border-top: 1px solid var(--divider);
          display: grid; gap: .75rem; font-size: var(--fs-small); line-height: 1.4; }
.bfacts__item { display: flex; align-items: flex-start; gap: .65rem; min-width: 0; }
.bfacts__ic { flex: none; width: 20px; height: 20px; margin-top: .05em; color: var(--text-muted); }
.bfacts__ic svg { width: 20px; height: 20px; display: block; }
.bfacts__item--stock .bfacts__ic { color: var(--ink); }
.bfacts__tx { display: grid; gap: .1rem; min-width: 0; color: var(--ink); }
.bfacts__tx small { font-size: var(--fs-micro); line-height: 1.4; color: var(--text-muted); }
.bfacts__tx a { color: inherit; text-decoration: underline; text-decoration-color: var(--edge);
                text-decoration-thickness: 1px; text-underline-offset: 3px; }
.bfacts__tx a:hover { text-decoration-color: currentColor; }
.bfacts__rating a { display: inline-flex; align-items: center; gap: .6rem; min-height: 24px;
                    color: var(--ink); text-decoration: none; }
.bfacts__rating a:hover span:last-child { text-decoration: underline; text-underline-offset: 3px; }

/* Stelele cu umplere parțială (nota medie reală): cele gri dedesubt, cele colorate tăiate la procent. */
.bstars { position: relative; display: inline-flex; flex: none; font-size: 1rem; line-height: 1; }
.bstars > .stars { color: var(--tint-3); }
.bstars__on { position: absolute; inset: 0 auto 0 0; overflow: hidden; white-space: nowrap; }
.bstars__on .stars { color: #f5a623; }
.bstars .stars svg { flex: none; }
.bstars__on .stars { width: max-content; }
.bstars--lg { font-size: 1.35rem; }

/* Întrebările de pe pagina produsului: aceeași așezare ca pe prima pagină (.faqx). */
.pfaq .faqx__head h2 { max-width: 16ch; }
.pfaq .faqx__head .lead a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }

/* Recenziile WooCommerce (partials/product-reviews.twig). */
.revs__grid { display: grid; gap: clamp(1.75rem, 3.5vw, 4rem); align-items: start; }
@media (min-width: 900px) { .revs__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.revs__head .eyebrow { margin-bottom: .9rem; }
.revs__head .lead { max-width: 34ch; margin-top: 1rem; }
.revs__sum { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; margin: 1.25rem 0 0; font-size: var(--fs-body); }
.revs__body { display: grid; gap: 2rem; min-width: 0; }
.revs__note { margin: 0; padding: 1rem 1.25rem; border: 1px solid var(--divider); background: var(--bg-raised, #fff); font-size: var(--fs-small); }
.revs__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--divider); }
.rev { padding: 1.35rem 0; border-bottom: 1px solid var(--divider); }
.rev__top { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; font-size: var(--fs-small); }
.rev__by { font-weight: 600; }
.rev__ver { display: inline-flex; align-items: center; gap: .3rem; color: var(--text-muted); font-size: var(--fs-micro); }
.rev__ver svg { width: 14px; height: 14px; }
.rev__top time { margin-left: auto; color: var(--text-muted); font-size: var(--fs-micro); }
.rev__text { margin-top: .6rem; max-width: 68ch; }
.revs__only { margin: 0; font-size: var(--fs-small); color: var(--text-muted); }
.revs__only a { color: var(--ink); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.revform { padding: clamp(1.25rem, 2.5vw, 1.75rem); border: 1px solid var(--divider); background: var(--bg-raised, #fff); }
.revform__title { margin: 0 0 1.1rem; font-size: var(--fs-lead, 1.15rem); }
.revform__rate { margin: 0 0 1.1rem; padding: 0; border: 0; }
.revform__rate legend { padding: 0; margin-bottom: .45rem; font-size: var(--fs-small); font-weight: 600; }
.revform__who { display: grid; gap: 0 1rem; }
@media (min-width: 600px) { .revform__who { grid-template-columns: 1fr 1fr; } }
.revform .field { margin-bottom: 1rem; }
.revform textarea { min-height: 120px; }
/* Nota: cinci stele, de la dreapta la stânga în cod, ca „~ label" să coloreze stelele de dinainte. */
.rate { display: inline-flex; flex-direction: row-reverse; gap: .15rem; }
.rate label { display: grid; place-items: center; width: 44px; height: 44px; cursor: pointer; color: var(--edge); }
.rate label svg { width: 28px; height: 28px; fill: currentColor; transition: color .12s ease, transform .12s ease; }
.rate label:hover, .rate label:hover ~ label, .rate input:checked ~ label { color: #f5a623; }
.rate input:focus-visible + label { outline: 3px solid rgba(28, 64, 148, .55); outline-offset: -3px; border-radius: 8px; }
.rate label:active svg { transform: scale(.92); }
@media (prefers-reduced-motion: reduce) { .rate label svg { transition: none; } }
@media (forced-colors: active) { .rate input:checked ~ label, .bstars__on .stars { color: Highlight; } }

/* ==========================================================================
   Seobility, structura paginii (10.2026). Etichetele de interfață nu mai
   folosesc <b>/<strong> și titlurile de interfață nu mai sunt <h2>-<h4>:
   <strong> rămâne doar pentru accent real, iar titlurile (h1-h3) doar pentru
   structura conținutului. Regulile de mai jos dau claselor noi exact
   aspectul pe care îl aveau elementele vechi în chofu.css (care rămâne
   identic cu macheta). „font-weight: bolder" este stilul implicit al lui <b>.
   ========================================================================== */

/* Asistentul: numele din buton și din fereastră. */
.d-btn .tx .d-name { font-weight: bolder; font-size: var(--fs-small); }
.d-top .d-name { font-weight: bolder; font-size: var(--fs-small); display: block; }

/* Bara de sus și bara de copyright. */
.topbar__family .topbar__grp { font-weight: 700; opacity: 1; }
.copyright .copyright__co { font-weight: bolder; }

/* Subsolul: titlurile coloanelor erau <h2>; acum <p>, cu lista legată prin aria-labelledby. */
.footer .footer__h { text-wrap: balance; }

/* Firimiturile: pagina curentă (era <strong>); anulează regulile „.breadcrumbs span" ale separatorului. */
.breadcrumbs .breadcrumbs__cur { font-weight: 400; display: inline; min-height: 0; margin-inline: 0; align-items: normal; }

/* Cardul de pompă: valorile agent / putere / tensiune. */
.spec .spec__v { font-size: var(--fs-small); font-weight: 700; letter-spacing: -.01em; color: var(--ink); display: inline-flex; align-items: center; gap: .32rem; font-variant-numeric: tabular-nums; }

/* „Doar pompa / Instalație completă" (offers.css țintea „.pchoice__row b"). */
.seg .pchoice__lbl { font-size: var(--fs-small); font-weight: 600; }
.pchoice__row .pchoice__lbl { font-size: var(--fs-body); }
.cfg .pchoice__row .pchoice__lbl { overflow-wrap: anywhere; }
.cfg__out .pchoice__row .pchoice__lbl { display: inline-flex; align-items: center; gap: .55rem; }
.cfg__out .pchoice__row .pchoice__lbl::before { content: ""; flex: none; width: 14px; height: 14px; box-sizing: border-box; border: 2px solid currentColor; background: transparent; }
.cfg__out .pchoice .seg input:checked + span .pchoice__row .pchoice__lbl::before { border-color: var(--ink); background: var(--ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 5.2 4.1 7.3 8 3' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E") center / 10px no-repeat; }
.pchoice__note .pchoice__em { color: var(--ink); font-weight: 600; }
.cfg__out .pchoice__note .pchoice__em { color: #fff; }

/* Opțiunile din configurator și din caseta de ofertă (era „.seg b"). */
.seg .seg__t { font-size: var(--fs-small); font-weight: 600; }
.oq__opts .seg .seg__t { font-size: var(--fs-body); }

/* Butonul „Natalia, asistent NEDAVI" (era „.assist__x b"). */
.assist__x .assist__n { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; color: var(--ink); }
.assist--dark .assist__x .assist__n { color: #fff; }

/* Mesajele „Am primit…" (era „.csend__ok b" și „.preq__ok b"). */
.csend__ok .csend__t { font-weight: bolder; font-size: var(--fs-body); color: inherit; }
.preq__ok .preq__okt { font-weight: bolder; font-size: var(--fs-body); color: inherit; }

/* Galeriile: numele peste fotografie (era „.gal__cap b"; „.gal__cap span" este descrierea). */
.gal__cap .gal__t { font-weight: 600; font-size: var(--fs-small); opacity: 1; }
.gal__stage:fullscreen .gal__cap .gal__t { font-size: var(--fs-lead); }

/* Proiectele: titlul din „Alte proiecte" și din filele de pe prima pagină
   (erau „.rel-case__x b" și „.case-tab b"; regulile „span" de acolo sunt pentru rândul al doilea). */
.rel-case__x .rel-case__t { font-size: var(--fs-small); font-weight: 600; color: inherit; }
.case-tab .case-tab__x > .case-tab__t { font-weight: 600; font-size: var(--fs-small); line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; opacity: 1; }

/* Cardurile de contact de pe /dimensionare/ și /cere-oferta/ (era „.dcta__tx b"). */
.dcta__tx .dcta__t, .dcta__card--go .dcta__tx .dcta__t { font-weight: bolder; font-size: var(--fs-body); letter-spacing: -.01em; overflow-wrap: anywhere; color: inherit; }

/* Avantajele de sub prețul produsului (era „.trow b"). */
.trow .trow__t { font-weight: bolder; font-size: var(--fs-small); letter-spacing: -.01em; color: inherit; }

/* Numele autorului unei recenzii (erau „.crev__id b" și „.grev-id b"). */
.crev__id .crev__n, .grev-id .grev-n { font-size: var(--fs-small); font-weight: 600; color: inherit; }
.revs__sum .revs__avg { font-weight: bolder; }

/* Harta rețelei: cartela județului și cifrele de sub hartă (erau <b>; chofu.js
   rescrie cartela cu <b> la clic, care păstrează regulile din chofu.css). */
.cmap__card .cmap__t { font-weight: bolder; font-size: var(--fs-h3); letter-spacing: -.015em; display: flex; align-items: center; gap: 0; color: inherit; line-height: inherit; }
.cmap__note .cmap__num { font-weight: bolder; }

/* Îndemnul de la final: telefonul și cifrele (erau „.mcta__tel b" și „.mcta__facts b"). */
.mcta__tel .mcta__tn { font-weight: bolder; font-size: var(--fs-body); letter-spacing: -.01em; color: inherit; }
.mcta__facts .mcta__v { font-weight: bolder; font-size: var(--fs-lead); letter-spacing: -.015em; color: #fff; }

/* Nota Google din deschidere (era „.gpill b"; „.gpill span" este numărul de recenzii). */
.gpill .gpill__n { font-size: clamp(13px, min(1vw, 1.8vh), 15px); font-weight: 700; font-variant-numeric: tabular-nums; color: inherit; }
@media (max-width: 999px) { .chero .gpill .gpill__n { font-size: 15px; } }

/* Titlul casetei pliate cu instrumentele de pe /produse/, documentele produsului, filmul. */
.cfgfold__tx .cfgfold__t { font-weight: bolder; font-size: var(--fs-lead); letter-spacing: -.015em; color: inherit; }
.docs__tx .docs__t { font-weight: bolder; font-size: var(--fs-body); letter-spacing: -.01em; color: inherit; }
.vid__meta .vid__t { font-weight: bolder; font-size: var(--fs-small); color: inherit; }

/* Articolele: îndemnul spre dimensionare (era „.incta__tx b"). */
.incta__tx .incta__t { font-weight: bolder; font-size: var(--fs-lead); letter-spacing: -.015em; color: inherit; }

/* Listele „deliv" (/cere-oferta/, finalul articolelor; era „.deliv b"). */
.deliv .deliv__t { font-weight: bolder; align-self: end; font-size: var(--fs-body); letter-spacing: -.01em; }

/* Bara de cumpărare a produsului: numele (era <strong>). */
.quote-bar__name { font-weight: bolder; }
@media (max-width: 560px) { .quote-bar__inner > div:first-child .quote-bar__name { font-size: var(--fs-small); } }

/* Sursa hărților, pe prima pagină doar legătura spre Parteneri (aceeași mărime ca rezumatul <details>). */
p.cmap__attr { font-size: 12px; }

/* /produse/: legătura spre cererea de ofertă, în locul panoului de trimitere de sub calcul. */
.cfgfold__go { margin: clamp(1.1rem, 1.8vw, 1.5rem) 0 0; }

/* Documentele din deschiderea primei pagini și vizorul lor (src/Documents/Front/Markup.php;
   erau „.proof__x b" și „.certv__i figcaption b"; regulile „span" de acolo sunt pentru rândul al doilea). */
.proof__x .proof__t { font-size: clamp(13px, 1.75vh, 15px); font-weight: 600; letter-spacing: -.005em; color: inherit; display: inline; }
@media (max-width: 999px) { .chero .proof__x .proof__t { font-size: 13px; line-height: 1.25; hyphens: manual; display: inline; } }
@media (max-width: 359px) { .chero .proof__x .proof__t { font-size: 12px; } }
.certv__i figcaption .certv__t { font-weight: bolder; font-size: var(--fs-body); color: inherit; max-width: none; }

/* Cardul de produs și cardul de proiect: legătura este doar numele / titlul
   (textul ancorei era tot cardul: imagine, cod, cifre, rezumat). Tot cardul
   rămâne apăsabil prin ::after-ul legăturii; conturul de focus rămâne pe card. */
.pcard__link { position: relative; }
.pcard__body .pcard__name { color: inherit; }
.pcard__name::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.pcard__name:hover { opacity: 1; }
.pcard__name:focus-visible { outline: none; }
.prj__a { position: relative; }
.prj__body .prj__link { color: var(--ink); }
.prj__link::after { content: ""; position: absolute; inset: 0; z-index: 3; }
.prj__link:hover { opacity: 1; }
.prj__link:focus-visible { outline: none; }
.prj__a:has(.prj__link:focus-visible) { outline: 2px solid var(--chofu-navy); outline-offset: 2px; }
.pcard__link:has(.pcard__name:focus-visible) { outline: 3px solid var(--chofu-cyan); outline-offset: 2px; }

/* Foste titluri (h3) devenite <p>: aspectul titlului h3 din chofu.css. */
p.case-t { line-height: 1.25; color: var(--text); text-wrap: balance; }
.art__rel .card__body > p.card__title { font-weight: 700; color: var(--text); }
.art__rel .blog-grid .card__body > p.card__title { max-width: none; }

/* Clase pentru conținutul paginilor (content/acasa.html), ca <b>-urile de interfață
   de acolo să poată deveni <span> fără nicio schimbare de aspect: cifrele din
   ecuația din deschidere (era „.eq__part b"; chofu.js le numără și ca .eq__num[data-count])
   și titlul ferestrei cu piesele (era „.xp__pop b", id="xp-pop-t"). */
.eq__part .eq__num { display: inline; gap: normal; font-weight: 700; line-height: 1; letter-spacing: -.03em; color: #fff; font-variant-numeric: tabular-nums; text-shadow: 0 2px 18px rgba(0,0,0,.5); font-size: clamp(1.05rem, min(1.85vw, 3vh), 1.85rem); }
@media (max-width: 999px) { .chero .eq__part .eq__num { font-size: 1.125rem; letter-spacing: -.01em; line-height: 1; color: #fff; } }
@media (min-width: 600px) and (max-width: 999px) and (min-height: 701px) { .chero .eq__part .eq__num { font-size: 1.375rem; } }
.xp__pop .xp__pt { display: block; font-size: var(--fs-small); margin-bottom: .25em; font-weight: bolder; color: inherit; line-height: inherit; }

/* „Pe scurt" pe pagina unei pompe (partials/product-summary.twig) și rezumatul din
   date de sub cardurile catalogului (partials/catalog-facts.twig, prj-facts.twig). */
.psum h2 { margin-bottom: .75rem; }
.psum .wrap--text { max-width: none; } /* „Pe scurt" pe toată lățimea paginii, ca restul secțiunilor produsului. */
.psum__p { max-width: none; margin: 0 0 .9rem; line-height: 1.6; }
.psum__p:last-child { margin-bottom: 0; }
.psum__p a { text-decoration: underline; text-underline-offset: 2px; }
.catfacts { max-width: 78ch; margin-top: 2rem; color: var(--text-muted); font-size: var(--fs-small); line-height: 1.6; }
.catfacts p { margin: 0 0 .6rem; }
.catfacts p:last-child { margin-bottom: 0; }

/* Pagina produsului: galeria „plutește" lângă coloana de cumpărare. Pe ecrane late,
   coloana stângă se întinde cât cea dreaptă, iar galeria rămâne lipită sus până la
   finalul coloanei din dreapta, unde se oprește aliniată cu ea. Doar dacă încape în ecran. */
@media (min-width: 900px) and (min-height: 640px) {
	.pdp-media { align-self: stretch; }
	.pdp-media__in { position: sticky; top: clamp(1rem, 2vw, 1.5rem); }
}

/* --- Configurator: „Ce vrei de la pompă?" (Configurator\HotWater) ----------
   Aceleași butoane ca „Tip de încălzire", cu o pictogramă de 20 px în fața
   textului (chofu.css ascunde .field__ic din butoane, de aceea .seg__ic).
   Bifat: fundalul închis, pictograma albă odată cu textul. Fără răspuns la
   trimitere: conturul butoanelor în roșul erorilor, iar motivul sub ele, în
   .field-err (scris de chofu.js din data-err-msg). În rezultat, cât timp
   întrebarea nu are răspuns, o notă cu marginea din stânga caldă și butonul
   care duce la întrebare (44 px, ca orice țintă de atingere). */
.cfg .seg--ic > span { gap: .55rem; }
.cfg .seg__ic { display: inline-grid; place-items: center; flex: none; width: 20px; height: 20px; color: currentColor; }
.cfg .seg__ic svg { width: 100%; height: 100%; }
.cfg .seg--ic .seg__t { text-align: left; }
.cfg .field--apa .field-err:empty { display: none; }
.cfg .field--apa.is-bad .seg > span { border-color: var(--chofu-red); box-shadow: inset 0 0 0 1px var(--chofu-red); }
.cfg .field--apa { scroll-margin-block: 7rem 9rem; }
.cfg__apa {
	display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; column-gap: 12px; row-gap: 10px;
	margin: 0 0 1.1rem; padding: 12px 12px 12px 14px;
	background: rgba(255, 210, 122, .08); border: 1px solid rgba(255, 210, 122, .28); border-radius: 14px;
	color: #fff; animation: cfgApaIn .28s cubic-bezier(.2, .8, .2, 1) both;
}
.cfg__apa-ic { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%;
	background: rgba(255, 210, 122, .16); color: #ffd27a; }
.cfg__apa-ic svg { width: 18px; height: 18px; }
.cfg__apa-tx { display: grid; gap: 2px; min-width: 0; }
.cfg__apa-t { font-size: var(--fs-small); font-weight: 600; line-height: 1.3; letter-spacing: -.005em; }
.cfg__apa-d { font-size: var(--fs-micro, .82rem); line-height: 1.45; color: rgba(255, 255, 255, .78); }
.cfg__apago { grid-column: 2; justify-self: start; display: inline-flex; align-items: center; gap: 4px; min-height: 40px; padding: 0 12px 0 16px;
	border: 0; border-radius: 999px; background: #fff; color: #1d1d1f; font: inherit; font-size: var(--fs-small);
	font-weight: 600; cursor: pointer; white-space: nowrap; transition: transform .15s ease, background-color .15s ease; }
.cfg__apago svg { width: 16px; height: 16px; }
.cfg__apago:hover { background: #f2f2f2; }
.cfg__apago:active { transform: scale(.97); }
.cfg__apago:focus-visible { outline: 3px solid #ffd27a; outline-offset: 2px; }
@keyframes cfgApaIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .cfg__apa { animation: none; } }
.cfg__grp .field[hidden] { display: none; }
.csend__picks .pick[hidden] { display: none; }

/* Text aliniat stânga-dreapta (cerința clientului), și pentru textele generate de temă,
   care nu sunt în conținutul paginilor: rezumatul produsului, răspunsurile din FAQ,
   textele proiectelor, introducerea articolelor. Conținutul paginilor folosește
   pluginul „Justify for Paragraph Block" (clasa has-text-align-justify). */
:is(.prose > p, .pintro p, .psum__p, .pcs__i > p, .cs__lead, .art__lead, .faq details > div) {
	text-align: justify;
	-webkit-hyphens: auto;
	hyphens: auto;
}

/* Tot textul în paragrafe, pe tot site-ul, aliniat stânga-dreapta (cerința clientului):
   orice <p> din pagină, cu despărțire în silabe. Rămân cum au fost proiectate doar
   blocurile centrate sau aliniate la dreapta, butoanele, formularele, tabelele,
   cardurile mici de produs și elementele de interfață. Un rând singur rămâne la stânga
   (așa se comportă alinierea stânga-dreapta pe ultimul rând). */
main p:not(:is(
	.centered, .section-head, .feat__item, .trust__item, .hb__item, .creds__item, .imgtile__cap,
	.xp__cap, .unit__cap, .xp__hint, .cfgbar__note, .shop__empty, .prjs__empty, .grev-state, .langnote,
	.pcard, .ptile, .card__meta, .price, .eyebrow, .pkey, .pcode, .field-err, .csend__fine, .cko__fine,
	[style*="text-align"], [class*="__cap"], [class*="eyebrow"]
)):not(:is(
	.centered, .section-head, .feat__item, .trust__item, .hb__item, .creds__item, .imgtile__cap,
	.pcard, .ptile, .btn, form, table, figure, figcaption, nav, .buybox, .cfg__out, .qty, .stepper,
	.breadcrumbs, .stepq, .copyright, .np-badge, .cookie, .consent, .d-win, .d-bub, .assist,
	.quote-bar, .vmail, .chero__row, .cmap__card, [style*="text-align"]
) p) {
	text-align: justify;
	-webkit-hyphens: auto;
	hyphens: auto;
}

/* --- Magazin: euro mare, lei dedesubt (Commerce\Euro) ---------------------
   Prețul de vânzare este în euro; leii sunt suma încasată (coș, comandă,
   Netopia), recalculată zilnic după cursul BNR. Aceeași ierarhie ca
   .price__eur / .price__ron din chofu.css: euro în greutatea rândului, leii
   mai mici, în gri cu contrast AA (--text-muted). Fără capsule. */
.eur2 { display: inline-flex; flex-direction: column; align-items: flex-end; gap: .1rem;
        line-height: 1.2; font-variant-numeric: tabular-nums; }
.eur2__ron { font-size: var(--fs-micro); font-weight: 500; color: var(--text-muted);
             font-variant-numeric: tabular-nums; white-space: nowrap; }
.ctab td .eur2 { text-align: right; }
.pchoice__amt.eur2 { align-items: flex-end; }
.csum__tot .csum__ron { font-size: var(--fs-small); font-weight: 500; color: var(--text-muted); }
.csum__pay, .csum__rate { margin: 0 0 1rem; font-size: var(--fs-micro); line-height: 1.45;
                          color: var(--text-muted); }
.csum__tot .csum__rate { display: block; margin-top: .35rem; }

/* --- Text care încape în butoane, etichete și controale (toate limbile) -----
   Germana și maghiara au cuvinte lungi („Fußbodenheizung", „Dachbodendämmung").
   Despărțirea în silabe rămâne doar pentru paragrafe (textul aliniat stânga-
   dreapta); în butoane, etichete, titluri de card, capete de tabel și meniuri
   un cuvânt nu se mai rupe: controlul crește pe înălțime și rândurile se
   echilibrează, iar grupurile segmentate trec pe două rânduri când nu încap. */
:is(html:lang(de), html:lang(hu)) :is(
  button, .btn, label, legend, summary, dt, th, nav, h1, h2, h3, h4, h5, h6,
  .seg, .pick, .opt, .chip, .eyebrow, .card__title, .tab, .badge, select, .consent,
  .field__lbl, .field__legend, .lblwrap, .ss__row, .csum, .oq__sum, .ctab, .dcta, .cfgbar,
  #pdDropHint, [class*="__t"], [class*="__l"], [class*="title"]
),
:is(html:lang(de), html:lang(hu)) :is(button, .btn, label, summary, dt, th, .seg, .pick, .opt, .chip, .eyebrow, .card__title) * {
  -webkit-hyphens: manual !important; hyphens: manual !important;
}
:is(button, .btn, label, summary, th, .seg, .pick, .opt, .chip, .eyebrow, .card__title,
    .field__lbl, .field__legend, h1, h2, h3, h4) { text-wrap: balance; }

/* Butoanele segmentate: înălțime minimă în loc de fixă, text pe rânduri
   întregi, aceeași înălțime pe rând. Un grup care nu încape pe un rând trece
   pe două (fiecare buton e cel puțin cât cel mai lung cuvânt al lui). */
.cfg .seg > span { height: auto; min-height: var(--ctl, 50px); padding-block: .45rem;
                   line-height: 1.25; text-align: center; }
.cfg .seg__t { min-width: 0; }
.segs--row, .cfg .segs--row { display: flex; flex-wrap: wrap; }
.segs--row > .seg { display: flex; flex: 1 1 0; }
.segs--row > .seg > span { flex: 1; padding-inline: .5rem; }
@media (max-width: 479px) { .segs--row > .seg { flex-basis: 100%; } }

/* Etichetele din configurator: pe două rânduri când nu încap (nu tăiate). */
.cfg__grp .field__lbl, .cfg__grp .field__legend { white-space: normal; overflow: visible;
                                                  text-overflow: clip; }
.cfg__grp .field > .lblwrap { align-items: flex-start; }
.cfg__grp .field > .lblwrap .tipb { margin-top: -5px; }

/* Fișa tehnică: denumirea rămâne întreagă, valoarea se adaptează. */
.ss__row dt { flex: 0 1 auto; min-width: min-content; }
.ss__row dd { min-width: 0; }
/* Coșul și cardurile de contact: numele de produs și adresele se rup doar
   când un cuvânt nu încape deloc, nu oriunde. */
.ctab__p a, .dcta__tx b, .dcta__tx .dcta__t { overflow-wrap: break-word; }

/* Antetul în germană la 1221-1520px: „Angebot anfordern" și meniul mai lung
   împingeau butonul asistentului cu 9px peste marginea ferestrei. Spațiile
   dintre grupuri se strâng puțin, ca să încapă tot pe un rând. */
@media (min-width: 1221px) and (max-width: 1520px) {
  html:lang(de) .masthead__inner { gap: clamp(1rem, 1.5vw, 2rem); }
  html:lang(de) .masthead .btn-contact { padding-inline: 16px; }
}

/* Rezumatul casei din caseta de ofertă (#oferta): în germană și maghiară
   denumirile („Dachbodendämmung") sunt mai late decât o coloană din trei, așa
   că grila pune atâtea coloane câte încap la lățimea celei mai lungi. */
:is(html:lang(de), html:lang(hu)) .oq__sum { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
:is(html:lang(de), html:lang(hu)) .oq__sum dt { letter-spacing: .03em; }
/* Titlul articolului pe telefon: „Warmwasserspeicher" nu încăpea pe un rând
   la 32px; sub 420px titlul scade odată cu ecranul (de la 420px în sus, neschimbat). */
:is(html:lang(de), html:lang(hu)) .art__t { font-size: min(clamp(2rem, 3.8vw, 3rem), 7.6vw); }

/* Un mesaj de eroare golit în Chofu, Setări, Magazin: câmpul rămâne marcat
   (chenarul roșu, aria-invalid), dar rândul gol de sub el nu ocupă loc. */
.field-err:empty { display: none; }

/* Alinierea stânga-dreapta aleasă în editor. Editorul de blocuri (pluginul „Justify
   for Paragraph Block") pune clasa has-text-align-justify; regula pluginului stă în
   wp-block-library, pe care tema nu o încarcă (Performance\AssetOptimizer), deci este
   repetată aici, și pentru blocurile care nu sunt <p> (liste, citate, coloane).
   Editorul clasic (produsele) scrie style="text-align: justify", care se aplică singur;
   aici primește doar despărțirea în silabe, ca restul paragrafelor. */
.has-text-align-justify, [style*="text-align: justify"], [style*="text-align:justify"] {
	text-align: justify;
	-webkit-hyphens: auto;
	hyphens: auto;
}

/* Caseta de sub configurator (.cfgbar), partea stângă: titlul, o explicație
   scurtă (ce stă la baza estimării și ce adaugă dimensionarea gratuită) și un
   link descriptiv cu săgeată. Textul rămâne aliniat la stânga (regula de
   aliniere stânga-dreapta din main p ar întinde rândurile scurte) și fără
   despărțire în silabe; linkul are culoarea navy, subliniere la hover și
   contur la focus de la tastatură, ca să nu mai arate ca un subtitlu. */
.cfgbar__x { display: grid; gap: .55rem; align-content: center; min-width: 0; }
main aside.cfgbar p:is(.cfgbar__t, .cfgbar__p, .cfgbar__more) {
  margin: 0; text-align: left; -webkit-hyphens: manual; hyphens: manual;
}
.cfgbar__t { line-height: 1.3; text-wrap: balance; max-width: 38rem; }
.cfgbar__p { line-height: 1.6; max-width: 38rem; text-wrap: pretty; }
.cfgbar__lnk {
  display: inline-block; padding-block: .75rem; margin-bottom: -.75rem;
  color: var(--chofu-navy); font-size: var(--fs-small); font-weight: 600; line-height: 1.3;
  text-decoration: underline; text-decoration-color: transparent;
  text-decoration-thickness: 1px; text-underline-offset: .22em;
  transition: text-decoration-color .2s var(--quad), color .2s var(--quad);
}
.cfgbar__lnk svg { display: inline-block; width: 1.05em; height: 1.05em; margin-left: .35em; vertical-align: -.17em;
                   transition: transform .2s var(--quad); }
.cfgbar__lnk:hover { opacity: 1; color: var(--chofu-navy); text-decoration-color: currentColor; }
.cfgbar__lnk:hover svg { transform: translateX(3px); }
.cfgbar__lnk:focus-visible { outline: 2px solid var(--chofu-navy); outline-offset: 0;
                             border-radius: 4px; text-decoration-color: currentColor; }
@media (prefers-reduced-motion: reduce) {
  .cfgbar__lnk, .cfgbar__lnk svg { transition: none; }
  .cfgbar__lnk:hover svg { transform: none; }
}
