/* ═══════════════════════════════════════════════════════════════════════
   TCB — COMPONENTS PLUS
   Se încarcă DUPĂ components.css, ca fișier separat.
   Înregistrat în inc/enqueue.php ca 'components-plus'.
   Depinde de tokens-plus.css.

   Nimic din components.css nu e rescris aici. Secțiunile 1–4 adaugă
   clase noi. Secțiunile 5–7 ating componente existente, dar numai prin
   clase `.tcb-*` care încă nu sunt folosite nicăieri — deci până la
   tranșa 2 sunt inerte. Secțiunea 8 e dezactivată din start.
   ═══════════════════════════════════════════════════════════════════════ */


/* ═══ 1. ICOANE ═══════════════════════════════════════════════════════
   Sprite inline în footer.php, referit cu <use href="#tcb-i-...">.
   Culoarea vine din currentColor, deci nu există variante pentru fundal
   deschis / închis. O icoană desenată cu umplere albă în loc de contur
   dispare pe navy — ăsta e testul care o prinde. */

.tcb-icon{
  width:20px; height:20px;
  flex:none;
  display:inline-block;
  vertical-align:-4px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round;
}
/* punctele solide din floorplan-uri (scaunele) */
.tcb-icon .f{ fill:currentColor; stroke:none; }

/* Grosimea NU se scalează cu icoana: la 15px un contur de 1,6 se închide
   într-o pată, la 28px pare fragil. Trei trepte, atât. */
.tcb-icon--sm{ width:15px; height:15px; stroke-width:1.75; vertical-align:-3px; }
.tcb-icon--lg{ width:28px; height:28px; stroke-width:1.45; vertical-align:-6px; }

/* un singur chevron desenat; restul direcțiilor din rotație */
.tcb-icon--rot90 { transform:rotate(90deg); }
.tcb-icon--rot180{ transform:rotate(180deg); }
.tcb-icon--rot270{ transform:rotate(270deg); }

/* Pictogramă în capul de coloană al tabelului de capacități.
   Aici icoana nu decorează antetul, îl face citibil: „Careu U" și „Board"
   nu spun nimic cuiva din afara branșei, iar cine e din branșă scanează
   după formă. */
.tcb-caphead__icon{
  display:block;
  margin:0 0 .3rem auto;
  width:22px; height:22px;
  color:var(--tcb-ink-30);
}


/* ═══ 2. CÂMPURI GENERATE (carduri fără fotografie) ═══════════════════
   Arhitectura cere un fallback generat, nu un dreptunghi gri (§11.1).
   Fondul codează natura evenimentului. Mapările vin din același câmp de
   taxonomie care produce coeficienții de cerere — nu e o listă nouă. */

.tcb-field{ position:absolute; inset:0; pointer-events:none; }

/* public așezat — congres, conferință */
.tcb-field--rows{
  background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.22) 1px, transparent 0);
  background-size:var(--tcb-field-dot-size) var(--tcb-field-dot-size);
}
/* public în picioare — festival, târg */
.tcb-field--scatter{
  background-image:
    radial-gradient(circle at 3px 5px,   rgba(255,255,255,.20) 1px, transparent 0),
    radial-gradient(circle at 17px 11px, rgba(255,255,255,.18) 1px, transparent 0),
    radial-gradient(circle at 9px 21px,  rgba(255,255,255,.22) 1px, transparent 0),
    radial-gradient(circle at 25px 27px, rgba(255,255,255,.16) 1px, transparent 0),
    radial-gradient(circle at 30px 3px,  rgba(255,255,255,.20) 1px, transparent 0),
    radial-gradient(circle at 21px 17px, rgba(255,255,255,.14) 1px, transparent 0);
  background-size:34px 34px;
}
/* pe traseu — sportiv, orice legat de Bega */
.tcb-field--wave{
  background-image:var(--tcb-field-wave);
  background-size:var(--tcb-field-wave-size);
  background-repeat:repeat;
}


/* ═══ 3. SUBLINIEREA DE HOVER ═════════════════════════════════════════
   Nu text-decoration: nu poate fi animată de la lățime zero.
   Alternativa sub prefers-reduced-motion e o subliniere STATICĂ, nu
   absența ei — regula cere alternativă, nu dispariție. */

.tcb-link{
  color:inherit;
  text-decoration:none;
  padding-bottom:.28em;
  background-image:var(--tcb-underline);
  background-repeat:repeat-x;
  background-position:0 100%;
  background-size:0 2px;
  transition:background-size var(--tcb-t) var(--tcb-ease-ui);
}
.tcb-link:hover,
.tcb-link:focus-visible{ background-size:100% 2px; }


/* ═══ 4. CHIP DE STATUS ═══════════════════════════════════════════════
   `status` are trei valori și trece testul de enumerare — și totuși NU
   primește icoane. O stare nu e un lucru, e o proprietate, iar în calendar
   starea e deja purtată de chip. O icoană peste chip ar codifica de două
   ori aceeași informație.
   Diferențierea se face prin FORMA punctului, nu prin culoare: rămâne
   citibil și la print alb-negru, și pentru daltoniști. */

.tcb-chip__dot{
  width:7px; height:7px; border-radius:50%;
  background:currentColor; flex:none;
}
.tcb-chip--confirmat  { color:var(--tcb-green); }
.tcb-chip--provizoriu { color:var(--tcb-yellow-line); }
.tcb-chip--provizoriu .tcb-chip__dot{
  background:transparent;
  box-shadow:inset 0 0 0 2px currentColor;   /* gol */
}
.tcb-chip--aviz       { color:var(--tcb-ink-30); }
.tcb-chip--aviz .tcb-chip__dot{
  background:repeating-linear-gradient(45deg,currentColor 0 2px,transparent 2px 4px); /* hașurat */
}


/* ═══ 5. PASS-UL DE DENSITATE ═════════════════════════════════════════
   Opt schimbări, zero culori noi, zero token-uri noi. Doar UNDE se
   folosesc cele existente. Motivul de fond: galbenul apărea în șapte
   roluri, iar o culoare cu șapte înțelesuri nu mai are niciunul.
   Aici se reduce la două: acțiunea, și cifra care decide. */

/* 5.1 antet de tabel — linia de 2px e semnul unui tabel exportat */
.tcb-captable thead th{
  border-bottom:1px solid var(--tcb-ink);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.055em;
  text-transform:uppercase;
  color:var(--tcb-ink-60);
  vertical-align:bottom;
}
/* 5.2 celula găsită — fond + grosime, fără inel.
       Inelul dubla un mesaj deja transmis de fond. */
.tcb-captable td.is-hit{
  background:var(--tcb-yellow-soft);
  font-weight:800;
  transition:background var(--tcb-t) var(--tcb-ease-ui);
}
/* 5.3 bullet de dotare — eliberează unul din rolurile galbenului,
       pentru că icoana de grup preia ancorarea */
.tcb-facilities li::before{
  background:var(--tcb-ink-30);
  width:4px; height:4px; border-radius:50%;
}
.tcb-facilities li.is-absent::before{
  background:none;
  border:1px solid var(--tcb-line);
}
/* 5.4 titlu de grup — grupurile devin coloane citibile, nu liste alăturate */
.tcb-facilities__group h3{
  display:flex; align-items:center; gap:.5rem;
  padding-bottom:.5rem;
  border-bottom:1px solid var(--tcb-line);
}
/* 5.5 imagini — fotografiile deschise nu mai plutesc peste alb.
       Efect mare, cost zero. */
.tcb-shot, .tcb-gallery img, .tcb-venue-card img{
  box-shadow:inset 0 0 0 1px rgba(12,27,42,.10);
}
/* 5.6 panoul de fapte — cifra care decide se detașează */
.tcb-facts{
  background:#fff;
  border:1px solid var(--tcb-line);
}
.tcb-facts__lead{
  background:var(--tcb-paper);
  border-bottom:1px solid var(--tcb-line);
}
.tcb-facts__lead dd{ letter-spacing:-.04em; }
/* 5.7 chip de avertisment — al doilea rol recuperat de la galben */
.tcb-chip--warn{
  background:transparent;
  color:var(--tcb-ink-60);
  border-color:var(--tcb-yellow-line);
}
/* 5.8 ritmul de secțiune se setează NATIV, din padding-ul containerului
       Elementor (3.6rem), nu de aici. Layout-ul nu intră în CSS. */


/* ═══ 6. ITALICUL ═════════════════════════════════════════════════════
   Vezi tokens. Selectorul include tagul ca să bată tipografia globală
   pe care Elementor o scrie pe orice Heading (0-2-0). */

.elementor-widget-heading .elementor-heading-title em,
h1 em, h2 em, h3 em,
.tcb-em{
  font-family:var(--tcb-serif);
  font-style:italic;
  font-weight:400;
  font-size:var(--tcb-italic-scale);
  letter-spacing:-.01em;
}
p em, li em, .tcb-lede em{
  font-size:var(--tcb-italic-scale-body);
}


/* ═══ 7. MIȘCARE — alternativele ══════════════════════════════════════
   Regula: prefers-reduced-motion primește o ALTERNATIVĂ, nu absența
   animației. Sublinierea rămâne, doar că apare instant. */

@media (prefers-reduced-motion:reduce){
  .tcb-link{ transition:none; }
  .tcb-captable td.is-hit{ transition:none; }
  .tcb-skeleton__sweep{ display:none; }
  .tcb-skeleton{ background:var(--tcb-paper); }
}


/* ═══ 8. RAZA PE CONTROALE — DEZACTIVAT DIN START ═════════════════════
   Se activează DOAR împreună cu varianta B din tokens-plus.css.

   De ce e nevoie de un bloc separat: în tema asta butoanele, chip-urile
   și input-urile folosesc --tcb-r-pill, nu --tcb-r. Schimbarea lui
   --tcb-r singură nu le atinge. Iar suprascrierea lui --tcb-r-pill ar
   pătrăți și chip-urile, care trebuie să rămână pastilă.

   Deci trebuie țintit pe selector. Numele de clase de mai jos sunt
   presupuse din documentația proiectului — VERIFICĂ-LE în components.css
   înainte să decomentezi, altfel blocul nu face nimic și o să crezi că
   n-a mers schimbarea.

   Butonul primar își ia raza și din Elementor Theme Style, care bate
   CSS-ul temei. Blocul ăsta singur nu ajunge: trebuie și pasul 6 din
   ghidul de implementare.

.btn,
.btn--ghost,
.btn--onblue,
input[type="text"],
input[type="email"],
input[type="search"],
select,
textarea{
  border-radius:var(--tcb-r);
}

   Chip-urile NU intră aici. Rămân pastilă, și ăsta e singurul loc din
   sistem unde --tcb-r-pill mai are treabă.
   ═══════════════════════════════════════════════════════════════════ */
