/* ============================================================================
   BOG'ART × CIBINNO AI — STILURI DE MODUL
   Continuarea temei din bg-theme.css. Aici stau DOAR clasele emise de
   modulele de aplicație (bg-exec, bg-control, bg-agents, bg-field, bg-fin,
   bg-tenders). Nicio clasă din tema de bază nu este redefinită: se folosesc
   exclusiv tokenii ei (--brand, --ok, --warn, --bad, --line, --r, --sh …).

   Reguli respectate peste tot în fișierul acesta:
     · nimic nu iese pe orizontală — componentele late au propriul
       `overflow-x:auto`, iar copiii de grid/flex primesc `min-width:0`;
     · cifrele folosesc `font-variant-numeric:tabular-nums`, ca să se alinieze
       pe coloană;
     · micro-etichetele sunt majuscule cu letter-spacing, ca în temă.
   ========================================================================== */

/* ==========================================================================
   0. UTILITARE MICI ȘI TEXT
   Clase folosite în toate modulele, de obicei în interiorul celulelor de
   tabel sau al listelor de definiții.
   ========================================================================== */

/* Text secundar sub o valoare — apare în celule de tabel, sub un <b>. */
.sub,
.sub-l{
  display:block;
  font-size:11px;
  line-height:1.4;
  color:var(--muted);
  font-weight:400;
  margin-top:2px;
}
.sub-l{color:var(--faint)}

/* Text de corp, pentru paragrafele explicative din carduri. */
.txt{
  font-size:12.5px;
  line-height:1.65;
  color:var(--ink-soft);
  max-width:96ch;
}
.txt + .txt{margin-top:9px}

/* Text estompat inline. `.mut` și `.muted` sunt sinonime istorice, folosite
   în module diferite; le ținem identice ca să nu apară două nuanțe de gri. */
.mut,
.muted{
  color:var(--faint);
  font-weight:400;
}
.muted{display:inline-block;font-size:11px;line-height:1.4;margin-top:2px}

/* Valori colorate inline. v-poz/v-neg sunt semantica „bine / rău", v-mut e
   informația de context care nu are semafor. */
.v-poz{color:var(--ok)}
.v-neg{color:var(--bad)}
.v-mut{color:var(--faint);font-weight:400}
.v-ok{color:var(--ok)}
.v-warn{color:var(--warn)}
.v-bad{color:var(--bad)}

/* Stare goală — se afișează în locul unei liste care nu are ce arăta. */
.empty{
  padding:26px 18px;
  text-align:center;
  font-size:12.5px;
  color:var(--faint);
  background:#FCFCFD;
  border:1px dashed var(--line);
  border-radius:var(--r-s);
}

/* Buton „liniștit" — varianta fără accent a butonului din temă. */
.btn.ghost{
  background:transparent;
  border-color:transparent;
  color:var(--muted);
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-color:var(--line);
}
.btn.ghost:hover{
  background:var(--line-soft);
  border-color:var(--line);
  color:var(--ink-soft);
  text-decoration-color:transparent;
}

/* Legendă de grafic — perechi pătrat colorat + text. */
.legend{
  display:flex;
  flex-wrap:wrap;
  gap:6px 18px;
  margin-top:11px;
  font-size:11px;
  color:var(--muted);
}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{
  width:11px;height:11px;border-radius:3px;flex:0 0 auto;
  background:var(--line);
}
/* Specificitatea contează: `.legend i` (0,1,1) bate `.lg-a` (0,1,0), așa că
   swatch-urile colorate trebuie scrise la fel de specific, altfel rămân gri. */
.legend i.lg-a,.lg-a{background:#B9D9C3}
.legend i.lg-b,.lg-b{background:var(--accent)}

/* Eticheta compactă a unui proiect: nume îngroșat + cod dedesubt. */
.pr-et{
  display:inline-flex;
  flex-direction:column;
  line-height:1.3;
  min-width:0;
}
.pr-et b{font-weight:650;font-size:12.5px}
.pr-et i{
  font-style:normal;
  font-size:10px;
  color:var(--faint);
  letter-spacing:.06em;
  text-transform:uppercase;
  font-weight:600;
}

/* ==========================================================================
   1. BARE DE FILTRE ȘI CONTROALE
   Trei variante emise de module diferite: .fbar (etichetă + butoane .fbtn),
   .flt-bar (etichetă + select/chips) și .seg (buton segmentat).
   Toate sunt aliniate vizual cu `.filters` din temă.
   ========================================================================== */

.fbar,
.flt-bar{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
  margin-bottom:12px;
  min-width:0;
}
.fbar-l,
.flt-l{
  font-size:10.5px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.07em;
  font-weight:700;
  margin-right:4px;
  flex:0 0 auto;
}

/* Select de filtrare — aceeași greutate vizuală ca .fbtn. */
select.flt,
input.flt{
  padding:5px 10px;
  max-width:100%;
  border:1px solid var(--line);
  background:#fff;
  border-radius:999px;
  font-family:inherit;
  font-size:11.5px;
  color:var(--ink-soft);
  cursor:pointer;
  outline:none;
  transition:border-color .15s,color .15s;
}
input.flt{border-radius:9px;cursor:text;min-width:0;flex:1 1 200px}
select.flt:hover,
input.flt:focus,
select.flt:focus{border-color:var(--brand);color:var(--brand)}
input.flt:focus{color:var(--ink)}

/* Chip = filtru rotund, echivalentul .fbtn în modulele fin/tenders/offer. */
.chip{
  padding:5px 10px;
  border:1px solid var(--line);
  background:#fff;
  border-radius:999px;
  font-family:inherit;
  font-size:11.5px;
  color:var(--ink-soft);
  cursor:pointer;
  transition:all .15s;
}
.chip:hover{border-color:var(--brand);color:var(--brand)}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:650}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;min-width:0}

/* Grup segmentat: butoane lipite, un singur contur. */
.seg{
  display:inline-flex;
  flex-wrap:wrap;
  border:1px solid var(--line);
  border-radius:999px;
  background:#fff;
  padding:2px;
  gap:2px;
  max-width:100%;
}
.seg-b{
  border:0;
  background:none;
  font-family:inherit;
  font-size:11.5px;
  color:var(--muted);
  padding:4px 11px;
  border-radius:999px;
  cursor:pointer;
  white-space:nowrap;
  transition:background .15s,color .15s;
}
.seg-b:hover{color:var(--brand)}
.seg-b.on{background:var(--brand);color:#fff;font-weight:650}

/* ==========================================================================
   2. BENZI DE CIFRE ȘI SEMNALE
   .stat-strip = cifre compacte sub titlul unui panou.
   .sig-list   = semnale agregate, cheie în stânga, valoare în dreapta.
   ========================================================================== */

/* Notă: tema definește deja `.st` pentru pastilele de subtab (contur rotund,
   fundal alb). În banda de cifre folosim aceeași formă, dar o declarăm
   explicit aici, ca aspectul benzii să nu depindă de o clasă cu alt rol. */
.stat-strip{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:11px 12px;
  margin-bottom:12px;
  background:#FCFCFD;
  border:1px solid var(--line);
  border-radius:var(--r-s);
  min-width:0;
}
.stat-strip .st{
  display:inline-flex;
  align-items:baseline;
  gap:6px;
  padding:5px 12px;
  border:1px solid var(--line);
  background:#fff;
  border-radius:999px;
  font-size:11px;
  color:var(--muted);
  min-width:0;
}
.stat-strip .st b{
  font-size:15px;
  font-weight:750;
  letter-spacing:-.02em;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.stat-strip .st.ok b{color:var(--ok)}
.stat-strip .st.warn b{color:var(--warn)}
.stat-strip .st.bad b{color:var(--bad)}

.sig-list{display:flex;flex-direction:column;gap:1px}
.sig{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px 14px;
  align-items:baseline;
  padding:9px 12px;
  border-left:2.5px solid var(--line);
  background:#FCFCFD;
  border-radius:0 8px 8px 0;
}
.sig.ok{border-left-color:var(--ok);background:var(--ok-soft)}
.sig.warn{border-left-color:var(--warn);background:var(--warn-soft)}
.sig.bad{border-left-color:var(--bad);background:var(--bad-soft)}
.sig.ai{border-left-color:var(--accent);background:var(--accent-soft)}
.sig-k{font-size:12px;color:var(--ink-soft);min-width:0}
.sig-k b{font-weight:650;color:var(--ink)}
.sig-v{
  font-size:12.5px;
  font-weight:700;
  color:var(--ink);
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}

/* Briefing narativ — paragrafe lungi, coloană îngustă pentru lizibilitate. */
.brief{font-size:13px;line-height:1.7;color:var(--ink-soft);max-width:92ch}
.brief p + p{margin-top:11px}
.brief b{color:var(--ink);font-weight:650}

/* Subtitlu în interiorul unui card, între două blocuri. */
.sub-h{
  font-size:10.5px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--muted);
  margin:18px 0 8px;
  padding-bottom:6px;
  border-bottom:1px solid var(--line-soft);
}
.c-b > .sub-h:first-child{margin-top:0}

/* ==========================================================================
   3. CASCADA DE COST (.casc) — cele 5 niveluri
   Contract → baseline → buget → angajat → real → EAC. Fiecare rând: etichetă,
   bară proporțională pe scală comună, valoare și, opțional, un delta.
   Grila are 4 coloane pe desktop; delta ocupă rândul al doilea.
   ========================================================================== */

/* ATENȚIE: `.casc` este refolosit de bg-proc.js pentru cascada de preț unitar,
   cu alți copii (.cs-row) și alt ritm. De aceea regulile specifice cascadei de
   COST se scriu pe `.casc:has(.casc-r)`, nu pe `.casc` simplu — altfel ultima
   definiție din fișier ar decide pentru amândouă. */
.casc{
  display:flex;
  flex-direction:column;
  min-width:0;
}
.casc:has(> .casc-r){
  gap:2px;
  margin:4px 0 14px;
}
.casc-r{
  display:grid;
  grid-template-columns:minmax(112px,20%) minmax(0,1fr) minmax(96px,auto);
  grid-template-areas:"l t v" ". d d";
  align-items:center;
  gap:2px 12px;
  padding:7px 2px;
  border-bottom:1px solid var(--line-soft);
  min-width:0;
}
.casc-r:last-child{border-bottom:0}
.casc-r.acc{
  background:#FCFDFC;
  border-bottom:1px solid var(--line);
}
.casc-l{
  grid-area:l;
  font-size:11.5px;
  color:var(--ink-soft);
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.casc-r.acc .casc-l{font-weight:700;color:var(--ink)}
.casc-t{
  grid-area:t;
  display:block;
  height:10px;
  min-width:0;
  background:var(--line-soft);
  border-radius:999px;
  overflow:hidden;
}
.casc-t > i{
  display:block;
  height:100%;
  border-radius:999px;
  background:var(--brand);
  transition:width .45s ease;
}
.casc-t > i.ok{background:var(--ok)}
.casc-t > i.warn{background:var(--warn)}
.casc-t > i.bad{background:var(--bad)}
.casc-t > i.ai{background:var(--accent)}
.casc-v{
  grid-area:v;
  font-size:12.5px;
  font-weight:700;
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  color:var(--ink);
}
.casc-d{
  grid-area:d;
  font-size:10.5px;
  color:var(--faint);
  line-height:1.4;
  text-align:right;
}

/* ==========================================================================
   4. PUNTEA DE MARJĂ (.brg) — waterfall orizontal
   Barele pașilor sunt poziționate cu `left` inline, deci pista trebuie să fie
   `position:relative` iar barele `position:absolute`. Rândurile „tot" sunt
   capetele punții (marja contractată și cea proiectată).
   ========================================================================== */

.brg{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin:4px 0 12px;
  min-width:0;
}
.brg-r{
  display:grid;
  grid-template-columns:minmax(130px,22%) minmax(0,1fr) minmax(104px,auto);
  grid-template-areas:"l t v" ". d d";
  align-items:center;
  gap:2px 12px;
  padding:7px 2px;
  min-width:0;
}
.brg-r.tot{
  background:#FBFCFB;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.brg-l{
  grid-area:l;
  font-size:11.5px;
  color:var(--ink-soft);
  min-width:0;
  overflow-wrap:anywhere;
}
.brg-r.tot .brg-l{font-weight:700;color:var(--ink)}
.brg-t{
  grid-area:t;
  position:relative;        /* barele au `left` inline */
  display:block;
  height:12px;
  min-width:0;
  background:var(--line-soft);
  border-radius:4px;
  overflow:hidden;
}
.brg-t > i{
  position:absolute;
  top:0;
  bottom:0;
  border-radius:3px;
  background:var(--brand);
  min-width:2px;
  transition:left .45s ease,width .45s ease;
}
.brg-t > i.ok{background:var(--ok)}
.brg-t > i.warn{background:var(--warn)}
.brg-t > i.bad{background:var(--bad)}
.brg-v{
  grid-area:v;
  font-size:12.5px;
  font-weight:700;
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.brg-r.tot .brg-v{font-size:13.5px}
.brg-d{
  grid-area:d;
  font-size:10.5px;
  color:var(--faint);
  line-height:1.4;
  text-align:right;
}

/* ==========================================================================
   5. CARDURI DE CONTROL DE COST (.cc)
   Antet cu numele contractului, marja la terminare și butonul de drill;
   sub el cascada și lista de definiții; la deschidere, blocul de drill.
   ========================================================================== */

.cc-list{display:flex;flex-direction:column;gap:12px}
.cc{
  border:1px solid var(--line);
  border-radius:var(--r);
  background:var(--card);
  padding:14px 15px;
  box-shadow:var(--sh);
  min-width:0;
  transition:border-color .15s,box-shadow .15s;
}
.cc.open{border-color:var(--brand-line);box-shadow:var(--sh-l)}
.cc-h{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;
  gap:10px 16px;
  align-items:center;
  padding-bottom:11px;
  margin-bottom:6px;
  border-bottom:1px solid var(--line-soft);
  min-width:0;
}
.cc-t{font-size:13px;font-weight:750;letter-spacing:-.01em;min-width:0}
.cc-m{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  line-height:1.15;
  flex:0 0 auto;
}
.cc-m-v{
  font-size:20px;
  font-weight:800;
  letter-spacing:-.025em;
  font-variant-numeric:tabular-nums;
}
.cc-m-l{
  font-size:9.5px;
  color:var(--faint);
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:650;
  margin-top:2px;
  white-space:nowrap;
}
.cc-a{flex:0 0 auto}

/* Blocul de descompunere, deschis sub card. */
.cc-drill{
  margin-top:14px;
  padding-top:13px;
  border-top:2px solid var(--brand-line);
  min-width:0;
}
.cc-drill-h,
.evm-drill-h,
.erod-drill-h{
  font-size:10.5px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--brand);
  margin:16px 0 8px;
}
.cc-drill > .cc-drill-h:first-child,
.evm-drill > .evm-drill-h:first-child,
.erod-drill > .erod-drill-h:first-child{margin-top:0}

/* ==========================================================================
   6. EVM ȘI ERODARE — blocuri de analiză
   ========================================================================== */

.evm-drill,
.erod-drill{min-width:0}

/* Cele două coloane CPI / SPI. */
.evm-2col{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
  min-width:0;
}
.evm-2col > div{min-width:0}
.evm-col-h{
  font-size:10.5px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--muted);
  margin-bottom:10px;
  padding-bottom:6px;
  border-bottom:1px solid var(--line-soft);
}

/* Legenda de indicatori — o listă de definiții cu paragrafe lungi, deci
   valoarea se aliniază la stânga, nu la dreapta ca în .dl standard. */
.evm-legend .dl{grid-template-columns:minmax(150px,26%) 1fr;column-gap:18px}
.evm-legend .dl-v{
  text-align:left;
  font-weight:400;
  color:var(--ink-soft);
  line-height:1.55;
}
.evm-legend .dl-k{padding-top:8px}

/* ==========================================================================
   7. DECIZII (.dec)
   Două variante de markup coexistă:
     a) exec  — numărul deciziei, corpul cu opțiuni, coloana de impact;
     b) field — antet cu pastilă, context, acțiune propusă.
   Se disting după copiii prezenți, nu după o clasă suplimentară.
   ========================================================================== */

.dec-list{display:flex;flex-direction:column;gap:10px}
.dec{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:12px 14px;
  align-items:start;
  padding:13px 15px;
  background:var(--card);
  border:1px solid var(--line);
  border-left:3px solid var(--line);
  border-radius:var(--r-s);
  box-shadow:var(--sh);
  min-width:0;
}
.dec.ok{border-left-color:var(--ok)}
.dec.warn{border-left-color:var(--warn)}
.dec.bad{border-left-color:var(--bad)}

/* Varianta field: fără numerotare și fără coloană de impact — se
   comportă ca un bloc simplu pe o coloană. */
.dec:not(:has(.dec-m)){display:block}

.dec-n{
  font-size:15px;
  font-weight:800;
  color:var(--faint);
  font-variant-numeric:tabular-nums;
  min-width:22px;
  line-height:1.3;
}
.dec-m{min-width:0}
.dec-h{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px 9px;
  margin-bottom:5px;
  min-width:0;
}
.dec-h b{font-size:13px;font-weight:750;letter-spacing:-.01em;min-width:0}
.dec-cat{
  font-size:9.5px;
  font-weight:800;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--brand);
  background:var(--brand-soft);
  border:1px solid var(--brand-line);
  padding:2px 7px;
  border-radius:999px;
  white-space:nowrap;
}
.dec-t{font-size:13px;font-weight:750;letter-spacing:-.01em;min-width:0}
.dec-c{font-size:12px;color:var(--ink-soft);line-height:1.55}
.dec-e{
  font-size:12px;
  color:var(--bad);
  line-height:1.5;
  margin-top:5px;
  font-weight:600;
}
.dec-a{
  font-size:12px;
  color:var(--brand);
  font-weight:600;
  line-height:1.5;
  margin-top:6px;
}

/* Opțiunile de pe masă — A / B / C, fiecare cu impactul ei. */
.dec-o{
  margin-top:10px;
  padding:10px 12px;
  background:#FBFCFD;
  border:1px solid var(--line-soft);
  border-radius:9px;
  min-width:0;
}
.dec-o-h{
  display:block;
  font-size:9.5px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--muted);
  margin-bottom:7px;
}
.dec-o-r{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) minmax(90px,auto);
  gap:4px 10px;
  align-items:baseline;
  padding:5px 0;
  border-top:1px solid var(--line-soft);
  min-width:0;
}
.dec-o-r:first-of-type{border-top:0}
.dec-o-n{
  width:18px;height:18px;
  display:flex;align-items:center;justify-content:center;
  border-radius:5px;
  background:var(--ink);
  color:#fff;
  font-size:9.5px;
  font-weight:800;
  flex:0 0 auto;
}
.dec-o-t{font-size:12px;color:var(--ink-soft);line-height:1.5;min-width:0}
.dec-o-i{
  font-size:11px;
  color:var(--muted);
  text-align:right;
  font-variant-numeric:tabular-nums;
  line-height:1.5;
}

/* Coloana de impact, în dreapta cardului. */
.dec-r{flex:0 0 auto;min-width:0}
.dec-i{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:2px;
  text-align:right;
}
.dec-i-lei{
  font-size:16px;
  font-weight:800;
  letter-spacing:-.025em;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.dec.bad .dec-i-lei{color:var(--bad)}
.dec.warn .dec-i-lei{color:var(--warn)}
.dec-i-zile{font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.dec-i-u{
  font-size:9.5px;
  color:var(--faint);
  text-transform:uppercase;
  letter-spacing:.07em;
  font-weight:650;
  white-space:nowrap;
}

/* ==========================================================================
   8. ACȚIUNI (.act) — coada de lucru cu responsabil și termen
   ========================================================================== */

.act-list{display:flex;flex-direction:column;gap:8px}
.act{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:10px 14px;
  align-items:start;
  padding:11px 14px;
  background:var(--card);
  border:1px solid var(--line);
  border-left:3px solid var(--line);
  border-radius:var(--r-s);
  min-width:0;
}
.act.ok{border-left-color:var(--ok)}
.act.warn{border-left-color:var(--warn)}
.act.bad{border-left-color:var(--bad)}
.act-p{
  font-size:9.5px;
  font-weight:800;
  letter-spacing:.05em;
  color:var(--muted);
  background:var(--line-soft);
  border-radius:6px;
  padding:3px 7px;
  white-space:nowrap;
}
.act.bad .act-p{background:var(--bad-soft);color:var(--bad)}
.act.warn .act-p{background:var(--warn-soft);color:var(--warn)}
.act-m{min-width:0}
.act-t{font-size:12.5px;font-weight:700;letter-spacing:-.01em;line-height:1.4}
.act-d{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:2px}
.act-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.act-r{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:3px;
  text-align:right;
  flex:0 0 auto;
}
.act-o{font-size:11.5px;font-weight:650;color:var(--ink-soft);white-space:nowrap}
.act-term{
  font-size:10.5px;
  color:var(--muted);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.act-term.warn{color:var(--warn);font-weight:650}
.act-term.bad{color:var(--bad);font-weight:700}

/* ==========================================================================
   9. DETECȚII (.det) — ce a măsurat agentul, ce propune, cine semnează
   ========================================================================== */

.det-list{display:flex;flex-direction:column;gap:10px}
.det{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:12px;
  align-items:start;
  padding:13px 15px;
  background:linear-gradient(180deg,#F9FBFE,#fff);
  border:1px solid #DEE9F6;
  border-left:3px solid var(--accent);
  border-radius:var(--r-s);
  min-width:0;
}
.det.ok{border-left-color:var(--ok)}
.det.warn{border-left-color:var(--warn)}
.det.bad{border-left-color:var(--bad)}
.det-p{
  font-size:9.5px;
  font-weight:800;
  letter-spacing:.05em;
  color:var(--accent);
  background:var(--accent-soft);
  border-radius:6px;
  padding:3px 7px;
  white-space:nowrap;
}
.det.bad .det-p{background:var(--bad-soft);color:var(--bad)}
.det.warn .det-p{background:var(--warn-soft);color:var(--warn)}
.det-m{min-width:0}
.det-t{font-size:13px;font-weight:750;letter-spacing:-.01em;line-height:1.4}
.det-c{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:3px}
.det-d,
.det-pr{
  font-size:12px;
  color:var(--ink-soft);
  line-height:1.55;
  margin-top:8px;
}
.det-d b,
.det-pr b{color:var(--ink);font-weight:700}
.det-pr{color:var(--brand-dark)}
.det-v{
  font-size:10.5px;
  color:var(--faint);
  margin-top:9px;
  padding-top:8px;
  border-top:1px solid var(--line-soft);
  letter-spacing:.02em;
}

/* ==========================================================================
   10. FLOTA DE AGENȚI (.ag-*)
   Grila de carduri + fișa completă deschisă sub grupul din care face parte.
   Atenție: tema definește deja .ag-h / .ag-i / .ag-b / .ag-a pentru panoul
   `.agent`; aici nu le atingem, adăugăm doar ce e specific cardurilor.
   ========================================================================== */

.ag-lead{
  font-size:13px;
  line-height:1.7;
  color:var(--ink-soft);
  max-width:96ch;
  margin-bottom:12px;
}
.ag-note{
  display:block;
  font-size:11px;
  color:var(--faint);
  line-height:1.55;
  margin-top:10px;
}
.ag-dom-x{
  font-size:12px;
  color:var(--muted);
  line-height:1.6;
  margin-bottom:14px;
  max-width:96ch;
}

.ag-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(258px,1fr));
  gap:12px;
  min-width:0;
}
.ag-card{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:14px 15px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--sh);
  min-width:0;
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.ag-card:hover{border-color:#CFE0F5;box-shadow:var(--sh-l)}
.ag-card.star{
  border-color:#CFE0F5;
  background:linear-gradient(180deg,#F8FBFF,#fff);
}
.ag-card.open{border-color:var(--accent);box-shadow:var(--sh-l)}
.ag-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-width:0;
}
.ag-cod{
  font-size:9.5px;
  font-weight:800;
  letter-spacing:.1em;
  color:var(--accent);
  background:var(--accent-soft);
  border:1px solid #D9E7F8;
  padding:2px 7px;
  border-radius:999px;
  white-space:nowrap;
}
.ag-stare{
  font-size:9.5px;
  font-weight:700;
  letter-spacing:.05em;
  color:var(--muted);
  white-space:nowrap;
}
.ag-stare.ok{color:var(--ok)}
.ag-nume{font-size:13.5px;font-weight:750;letter-spacing:-.015em;line-height:1.3}
.ag-rol{font-size:11.5px;color:var(--muted);line-height:1.5;min-height:34px}
.ag-imp{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin-top:4px;
  padding:9px 11px;
  background:#FBFCFD;
  border:1px solid var(--line-soft);
  border-radius:9px;
  min-width:0;
}
.ag-imp-v{
  font-size:16px;
  font-weight:800;
  letter-spacing:-.025em;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.ag-imp-t{font-size:10.5px;color:var(--faint);line-height:1.45}
.ag-mod{
  font-size:9.5px;
  color:var(--faint);
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:650;
  margin-top:2px;
}
/* Bara de acțiune a cardului: tema stilizează .ag-a pentru panoul .agent, cu
   fundal și chenar. În card o readucem la un simplu rând de butoane. */
.ag-card .ag-a{
  margin-top:auto;
  padding:10px 0 0;
  background:none;
  border-top:1px solid var(--line-soft);
}

/* --- fișa completă a agentului --- */
.ag-det{
  margin-top:14px;
  padding:16px 17px;
  background:linear-gradient(180deg,#F7FAFE,#fff);
  border:1px solid #D9E7F8;
  border-radius:var(--r);
  min-width:0;
}
.ag-det-top{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px 18px;
  padding-bottom:12px;
  margin-bottom:12px;
  border-bottom:1px solid #E6EFFA;
  min-width:0;
}
.ag-det-imp{min-width:0}
.ag-det-v{
  font-size:24px;
  font-weight:800;
  letter-spacing:-.03em;
  line-height:1.15;
  color:var(--accent);
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.ag-det-t{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:3px}
.ag-det-id{
  font-size:10.5px;
  color:var(--faint);
  letter-spacing:.05em;
  text-align:right;
  min-width:0;
  overflow-wrap:anywhere;
}
.ag-det-id b{color:var(--accent);letter-spacing:.09em}
.ag-det-rol{font-size:12.5px;color:var(--ink-soft);line-height:1.6;max-width:92ch}
.ag-det-h{
  font-size:10px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--accent);
  margin:16px 0 8px;
}
.ag-det ul{margin:0 0 4px;padding-left:17px}
.ag-det li{font-size:12px;color:var(--ink-soft);line-height:1.6;margin-bottom:3px}
.ag-ex{
  font-size:12.5px;
  line-height:1.65;
  color:var(--ink-soft);
  background:#fff;
  border:1px solid var(--line);
  border-left:3px solid var(--accent);
  border-radius:0 9px 9px 0;
  padding:11px 13px;
}
.ag-guard{
  font-size:11.5px;
  line-height:1.6;
  color:var(--brand-dark);
  background:var(--brand-soft);
  border:1px solid var(--brand-line);
  border-radius:9px;
  padding:10px 13px;
  margin-top:14px;
}

/* --- guvernanță: ce NU decide agentul --- */
.gv-list{display:flex;flex-direction:column;gap:8px}
.gv{
  padding:11px 13px;
  background:#FCFCFD;
  border:1px solid var(--line);
  border-left:3px solid var(--brand);
  border-radius:0 var(--r-s) var(--r-s) 0;
  min-width:0;
}
.gv-k{font-size:12.5px;font-weight:750;letter-spacing:-.01em;color:var(--ink)}
.gv-v{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:4px}
.gv-p{
  font-size:10px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--brand);
  margin-top:6px;
}

/* ==========================================================================
   11. GRAFICE COMPUSE — coloane verticale (.cols)
   Seria de ani din fișa firmei. Se derulează pe orizontală dacă nu încape,
   nu deformează pagina.
   ========================================================================== */

.cols{
  display:flex;
  align-items:flex-end;
  justify-content:flex-start;
  gap:14px;
  height:186px;
  padding:6px 2px 0;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  max-width:100%;
}
.col{
  display:grid;
  /* Ca la .fi-tl: valoarea și eticheta au rândul lor, bara ia restul. */
  grid-template-rows:17px minmax(0,1fr) 17px;
  justify-items:center;
  align-items:end;
  gap:5px;
  /* Plafonat: o serie de 3 ani întinsă pe toată lățimea ar produce blocuri,
     nu coloane. Seriile lungi umplu spațiul, cele scurte rămân citibile. */
  flex:1 1 0;
  min-width:56px;
  max-width:132px;
  height:100%;
}
.col-v{
  grid-row:1;
  font-size:11px;
  font-weight:700;
  color:var(--ink);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  line-height:17px;
}
.col-t{
  grid-row:2;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  align-self:stretch;
  width:100%;
  min-height:0;
}
.col-t > i{
  display:block;
  width:100%;
  max-width:92px;
  flex:1 1 auto;
  border-radius:5px 5px 0 0;
  background:var(--brand);
  transition:height .45s ease;
}
.col-t > i.ok{background:var(--ok)}
.col-t > i.warn{background:var(--warn)}
.col-t > i.bad{background:var(--bad)}
.col-t > i.ai{background:var(--accent)}
.col-l{
  grid-row:3;
  font-size:10.5px;
  color:var(--muted);
  white-space:nowrap;
  line-height:17px;
}

/* ==========================================================================
   12. PERSOANE ȘI SERVICII (fișa firmei)
   ========================================================================== */

.pers-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(248px,1fr));
  gap:12px;
  min-width:0;
}
.pers{
  padding:13px 15px;
  background:#FCFCFD;
  border:1px solid var(--line);
  border-radius:var(--r-s);
  min-width:0;
}
.pers-n{font-size:13px;font-weight:750;letter-spacing:-.01em}
.pers-r{
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--brand);
  margin-top:2px;
}
.pers-x{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:7px}

.svc-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(206px,1fr));
  gap:8px;
  min-width:0;
}
.svc{
  font-size:12px;
  color:var(--ink-soft);
  padding:9px 12px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:9px;
  min-width:0;
  overflow-wrap:anywhere;
}

/* ==========================================================================
   13. FINANCIAR (.fi-*)
   Bandă de segmente, perechi metrică, cascadă verticală și linie de timp.
   ========================================================================== */

/* --- bandă de segmente proporționale (ciclul de conversie) --- */
.fi-strip{
  display:flex;
  width:100%;
  max-width:100%;
  min-width:0;
  border-radius:9px;
  overflow:hidden;
  border:1px solid var(--line);
  margin:4px 0 10px;
}
.fi-seg{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:1px;
  padding:9px 8px;
  min-width:0;
  overflow:hidden;
  background:var(--line-soft);
  border-right:1px solid rgba(255,255,255,.7);
}
.fi-seg:last-child{border-right:0}
.fi-seg b{
  font-size:10px;
  font-weight:700;
  letter-spacing:.03em;
  color:var(--ink-soft);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.fi-seg i{
  font-style:normal;
  font-size:11.5px;
  font-weight:750;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.fi-seg.ok{background:var(--ok-soft)}
.fi-seg.ok b,.fi-seg.ok i{color:var(--ok)}
.fi-seg.warn{background:var(--warn-soft)}
.fi-seg.warn b,.fi-seg.warn i{color:var(--warn)}
.fi-seg.bad{background:var(--bad-soft)}
.fi-seg.bad b,.fi-seg.bad i{color:var(--bad)}
.fi-seg.ai{background:var(--accent-soft)}
.fi-seg.ai b,.fi-seg.ai i{color:var(--accent)}

/* --- perechi etichetă / valoare mare --- */
.fi-metric-row{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(184px,1fr));
  gap:10px;
  margin-bottom:12px;
  min-width:0;
}
.fi-metric{
  padding:12px 14px;
  background:#FCFCFD;
  border:1px solid var(--line);
  border-radius:var(--r-s);
  min-width:0;
}
.fi-metric.ok{background:var(--ok-soft);border-color:#CFE7D8}
.fi-metric.warn{background:var(--warn-soft);border-color:#F0DFC2}
.fi-metric.bad{background:var(--bad-soft);border-color:#F0CFCF}
.fi-m-l{
  font-size:10px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:700;
}
.fi-m-v{
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:7px;
  font-size:20px;
  font-weight:800;
  letter-spacing:-.025em;
  line-height:1.2;
  margin:4px 0 2px;
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.fi-delta{
  font-size:11px;
  font-weight:750;
  letter-spacing:0;
  padding:1px 6px;
  border-radius:999px;
  background:var(--line-soft);
  color:var(--ink-soft);
  white-space:nowrap;
}
.fi-delta.ok{background:var(--ok-soft);color:var(--ok)}
.fi-delta.warn{background:var(--warn-soft);color:var(--warn)}
.fi-delta.bad{background:var(--bad-soft);color:var(--bad)}
.fi-m-x{font-size:11px;color:var(--muted);line-height:1.5}

/* --- cascadă verticală: de la producție la bani în cont --- */
.fi-wf{
  display:flex;
  flex-direction:column;
  gap:2px;
  margin:4px 0 10px;
  min-width:0;
}
.fi-wf-r{
  display:grid;
  grid-template-columns:minmax(126px,22%) minmax(0,1fr) minmax(104px,auto) minmax(52px,auto);
  grid-template-areas:"l b v p" ". x x x";
  align-items:center;
  gap:2px 12px;
  padding:7px 2px;
  border-bottom:1px solid var(--line-soft);
  min-width:0;
}
.fi-wf-r:last-child{border-bottom:0}
.fi-wf-l{
  grid-area:l;
  font-size:11.5px;
  color:var(--ink-soft);
  min-width:0;
  overflow-wrap:anywhere;
}
.fi-wf-b{
  grid-area:b;
  position:relative;
  display:block;
  height:10px;
  min-width:0;
  background:var(--line-soft);
  border-radius:999px;
  overflow:hidden;
}
.fi-wf-b > i{
  display:block;
  height:100%;
  border-radius:999px;
  background:var(--brand);
  transition:width .45s ease;
}
.fi-wf-r.ok .fi-wf-b > i{background:var(--ok)}
.fi-wf-r.warn .fi-wf-b > i{background:var(--warn)}
.fi-wf-r.bad .fi-wf-b > i{background:var(--bad)}
.fi-wf-r.ai .fi-wf-b > i{background:var(--accent)}
.fi-wf-v{
  grid-area:v;
  font-size:12.5px;
  font-weight:700;
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.fi-wf-r.bad .fi-wf-v{color:var(--bad)}
.fi-wf-r.ok .fi-wf-v{color:var(--ok)}
.fi-wf-p{
  grid-area:p;
  font-size:11px;
  color:var(--faint);
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.fi-wf-x{
  grid-area:x;
  font-size:10.5px;
  color:var(--faint);
  line-height:1.45;
}

/* --- linie de timp cu bare pozitive și negative --- */
.fi-tl{
  display:flex;
  align-items:flex-end;
  gap:6px;
  height:172px;
  padding:6px 2px 0;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  max-width:100%;
}
.fi-tl-c{
  display:grid;
  /* Trei rânduri fixe: valoarea sus, bara (singura elastică), eticheta jos.
     Fără rândul rezervat, o bară de 100% împinge valoarea în afara cadrului. */
  grid-template-rows:16px minmax(0,1fr) 16px;
  justify-items:center;
  align-items:end;
  gap:4px;
  flex:1 1 0;
  min-width:44px;
  height:100%;
}
.fi-tl-b{
  display:block;
  width:100%;
  max-width:34px;
  border-radius:4px 4px 0 0;
  background:var(--brand);
  grid-row:2;
  align-self:end;
  transition:height .45s ease;
}
.fi-tl-c.ok .fi-tl-b{background:var(--ok)}
.fi-tl-c.warn .fi-tl-b{background:var(--warn)}
.fi-tl-c.bad .fi-tl-b,
.fi-tl-c.neg .fi-tl-b{background:var(--bad)}
.fi-tl-c.ai .fi-tl-b{background:var(--accent)}
.fi-tl-v{
  grid-row:1;
  font-size:10.5px;
  font-weight:700;
  color:var(--ink);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  line-height:16px;
}
.fi-tl-c.neg .fi-tl-v{color:var(--bad)}
.fi-tl-l{
  grid-row:3;
  font-size:10px;
  color:var(--muted);
  white-space:nowrap;
  line-height:16px;
}

/* ==========================================================================
   14. LICITAȚII — pâlnia de pipeline și banda de preț câștigător
   ========================================================================== */

.funnel{display:flex;flex-direction:column;gap:2px;min-width:0}
.fn-row{
  display:grid;
  grid-template-columns:minmax(132px,24%) minmax(0,1fr) minmax(112px,auto);
  gap:12px;
  align-items:center;
  padding:9px 4px;
  border-bottom:1px solid var(--line-soft);
  cursor:pointer;
  border-radius:7px;
  transition:background .15s;
  min-width:0;
}
.fn-row:hover{background:var(--brand-soft)}
.fn-row:last-child{border-bottom:0}
.fn-l{
  display:flex;
  flex-direction:column;
  font-size:12px;
  font-weight:650;
  color:var(--ink);
  min-width:0;
}
.fn-l i{
  font-style:normal;
  font-size:10.5px;
  font-weight:400;
  color:var(--faint);
  margin-top:1px;
}
.fn-bar{
  position:relative;              /* .fn-fill / .fn-pond au width inline */
  display:block;
  height:20px;
  min-width:0;
  background:var(--line-soft);
  border-radius:5px;
  overflow:hidden;
}
.fn-fill,
.fn-pond{
  position:absolute;
  top:0;
  left:0;
  bottom:0;
  border-radius:5px;
  transition:width .45s ease;
}
/* Culorile trebuie să fie EXACT cele din legendă (.lg-a / .lg-b): banda
   plină = valoare brută, banda suprapusă = valoare ponderată. */
.fn-fill{background:#B9D9C3}
.fn-pond{background:var(--accent)}
.fn-v{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  font-size:12.5px;
  font-weight:700;
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.fn-v i{
  font-style:normal;
  font-size:10.5px;
  font-weight:400;
  color:var(--faint);
}

/* --- banda de preț: zonă câștigătoare, zonă pierdută, marker --- */
.banda{display:flex;flex-direction:column;gap:5px;min-width:0}
.bd-track{
  position:relative;              /* bd-lose / bd-win / bd-mark au left inline */
  display:block;
  height:12px;
  width:100%;
  min-width:70px;
  background:var(--line-soft);
  border-radius:999px;
  overflow:visible;
}
.bd-lose,
.bd-win{
  position:absolute;
  top:0;
  bottom:0;
  border-radius:999px;
}
.bd-lose{background:#F7D8D8;border:1px solid #E9BDBD}
.bd-win{background:#C6E5D1;border:1px solid #9CCEB0}
.bd-mark{
  position:absolute;
  top:-4px;
  width:2.5px;
  height:20px;
  background:var(--ink);
  border-radius:2px;
  transform:translateX(-1px);
  z-index:1;
}
.bd-lbl{
  font-size:10.5px;
  color:var(--muted);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}

/* Celula de scor 0-100 din tabelul de licitații. */
.scor-cell{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:96px;
}
.scor-cell b{
  font-size:12.5px;
  font-weight:750;
  font-variant-numeric:tabular-nums;
}

/* ==========================================================================
   15. MOBIL
   Toate componentele cu mai multe coloane se pliază; nimic nu iese lateral.
   ========================================================================== */

@media (max-width:960px){
  .evm-2col{grid-template-columns:1fr;gap:16px}
  .ag-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
  .evm-legend .dl{grid-template-columns:minmax(120px,32%) 1fr}
}

@media (max-width:720px){
  /* --- cascadă / punte / cascadă financiară: eticheta trece pe rândul ei --- */
  .casc-r{
    grid-template-columns:minmax(0,1fr) minmax(84px,auto);
    grid-template-areas:"l v" "t t" "d d";
    gap:4px 10px;
    padding:9px 2px;
  }
  .casc-l{white-space:normal}
  .casc-d{text-align:left}

  .brg-r{
    grid-template-columns:minmax(0,1fr) minmax(92px,auto);
    grid-template-areas:"l v" "t t" "d d";
    gap:4px 10px;
    padding:9px 2px;
  }
  .brg-d{text-align:left}

  .fi-wf-r{
    grid-template-columns:minmax(0,1fr) minmax(92px,auto) minmax(44px,auto);
    grid-template-areas:"l v p" "b b b" "x x x";
    gap:4px 10px;
    padding:9px 2px;
  }

  /* --- carduri de cost --- */
  .cc{padding:12px 13px}
  .cc-h{
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px 12px;
  }
  .cc-a{grid-column:1 / -1}
  .cc-a .fbtn,.cc-a .btn{width:100%}
  .cc-m-v{font-size:17px}

  /* --- decizii / acțiuni / detecții: coloana de dreapta trece dedesubt --- */
  .dec{
    grid-template-columns:auto minmax(0,1fr);
    padding:12px 13px;
  }
  .dec-r{grid-column:1 / -1}
  .dec-i{align-items:flex-start;text-align:left;flex-direction:row;flex-wrap:wrap;gap:4px 12px}
  .dec-o-r{grid-template-columns:auto minmax(0,1fr);gap:3px 9px}
  .dec-o-i{grid-column:2;text-align:left}

  .act{grid-template-columns:auto minmax(0,1fr);padding:11px 12px}
  .act-r{
    grid-column:1 / -1;
    flex-direction:row;
    flex-wrap:wrap;
    align-items:baseline;
    justify-content:flex-start;
    gap:4px 10px;
    text-align:left;
  }

  .det{padding:12px 13px}

  /* --- pâlnie --- */
  .fn-row{
    grid-template-columns:minmax(0,1fr) minmax(96px,auto);
    grid-template-areas:"l v" "b b";
    gap:5px 10px;
  }
  .fn-l{grid-area:l}
  .fn-v{grid-area:v}
  .fn-bar{grid-area:b;height:14px}

  /* --- restul --- */
  .ag-grid{grid-template-columns:1fr}
  .ag-rol{min-height:0}
  .ag-det{padding:14px 13px}
  .ag-det-top{align-items:flex-start}
  .ag-det-id{text-align:left}
  .ag-det-v{font-size:20px}
  .pers-grid,.svc-grid{grid-template-columns:1fr}
  .fi-metric-row{grid-template-columns:1fr}
  .fi-m-v{font-size:18px}
  .stat-strip{gap:8px 14px;padding:10px 12px}
  .evm-legend .dl{grid-template-columns:1fr}
  .evm-legend .dl-k{padding-bottom:0;border-bottom:0;font-weight:650}
  .cols{height:158px}
  .fi-tl{height:150px}
  .sig{grid-template-columns:1fr;gap:3px}
  .sig-v{text-align:left}
  .brief{font-size:12.5px}
}

/* Sub 400px banda de segmente devine ilizibilă cu 3-4 segmente pe lățime;
   se rupe în rânduri, fiecare segment păstrându-și proporția relativă. */
@media (max-width:400px){
  .fi-strip{flex-wrap:wrap}
  .fi-seg{flex-grow:1;min-width:33%}
}

/* ==========================================================================
   OFERTARE AI · ACHIZIȚII · SUBCONTRACTORI — completare
   Clase emise de bg-offer.js, bg-proc.js și bg-subc.js.
   ========================================================================== */

/* --- Fluxul de generare pe pași (of-flow) ------------------------------- */
.of-flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:8px;margin:14px 0}
.of-pas{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;
  padding:11px 12px;border:1px solid var(--line);background:#fff;border-radius:11px;
  font-family:inherit;cursor:pointer;transition:all .15s;min-width:0}
.of-pas:hover{border-color:var(--brand);background:var(--brand-soft)}
.of-pas-n{width:20px;height:20px;border-radius:6px;background:var(--line-soft);color:var(--muted);
  font-size:10.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.of-pas-t{font-size:12px;font-weight:700;color:var(--ink);line-height:1.3}
.of-pas-s{font-size:10.5px;color:var(--muted);line-height:1.4}
.of-pas.gata{border-color:var(--brand-line);background:var(--brand-soft)}
.of-pas.gata .of-pas-n{background:var(--brand);color:#fff}
.of-pas.activ{border-color:var(--accent);background:var(--accent-soft);box-shadow:var(--sh)}
.of-pas.activ .of-pas-n{background:var(--accent);color:#fff}
.of-pas.activ .of-pas-t{color:var(--accent)}

/* --- Comparație înainte / după (of-cmp) --------------------------------- */
.of-cmp{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch;margin:14px 0}
.of-cmp-c{border:1px solid var(--line);border-radius:12px;padding:14px 15px;background:#fff;min-width:0}
.of-cmp-c.bad{border-color:#F0D2D2;background:var(--bad-soft)}
.of-cmp-c.ok{border-color:var(--brand-line);background:var(--brand-soft)}
.of-cmp-h{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.of-cmp-v{font-size:22px;font-weight:850;letter-spacing:-.025em;margin:4px 0 9px;line-height:1.15}
.of-cmp-c.bad .of-cmp-v{color:var(--bad)}
.of-cmp-c.ok .of-cmp-v{color:var(--brand)}
.of-cmp-l{list-style:none;display:flex;flex-direction:column;gap:6px}
.of-cmp-l li{font-size:11.5px;color:var(--ink-soft);line-height:1.5;padding-left:13px;position:relative}
.of-cmp-l li::before{content:"·";position:absolute;left:3px;font-weight:800;color:var(--faint)}
.of-cmp-x{display:flex;align-items:center;justify-content:center;font-size:19px;color:var(--faint)}

/* --- Scor de potrivire (of-score) --------------------------------------- */
.of-score{font-variant-numeric:tabular-nums;font-weight:750}

/* --- Sparkline preț (of-spark) ------------------------------------------ */
.of-spark{display:flex;align-items:flex-end;gap:3px;height:52px;padding:4px 0}
.of-sp-c{flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;
  align-items:center;height:100%;gap:3px}
.of-sp-b{display:block;width:100%;max-width:16px;border-radius:3px 3px 0 0;background:var(--line);
  transition:height .3s}
.of-sp-c.ultim .of-sp-b{background:var(--brand)}
.of-sp-c.bad .of-sp-b{background:var(--bad)} .of-sp-c.warn .of-sp-b{background:var(--warn)}
.of-sp-c.ok .of-sp-b{background:var(--ok)}
.of-sp-l{font-size:8.5px;color:var(--faint);white-space:nowrap}
.of-seg,.of-mmut{font-size:10.5px;color:var(--muted)}

/* --- Cascada de preț unitar (casc / cs-*) ------------------------------- */
.casc{display:flex;flex-direction:column;gap:5px}
.cs-row{display:grid;grid-template-columns:minmax(112px,30%) 1fr minmax(112px,auto);gap:10px;
  align-items:center;font-size:12px}
.cs-l{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cs-bar{background:var(--line-soft);border-radius:999px;height:9px;overflow:hidden;min-width:0}
.cs-bar>i{display:block;height:100%;border-radius:999px;background:var(--muted)}
.cs-v{text-align:right;font-variant-numeric:tabular-nums;font-weight:650;white-space:nowrap}
.cs-baza .cs-bar>i{background:var(--ink-soft)}
.cs-baza .cs-l,.cs-baza .cs-v{font-weight:750}
.cs-plus .cs-bar>i{background:var(--warn)} .cs-plus .cs-v{color:var(--warn)}
.cs-minus .cs-bar>i{background:var(--ok)} .cs-minus .cs-v{color:var(--ok)}
.cs-total{border-top:1px solid var(--line);margin-top:4px;padding-top:7px}
.cs-total .cs-bar>i{background:var(--brand)}
.cs-total .cs-l,.cs-total .cs-v{font-weight:800;color:var(--brand)}

/* --- Scara de maturitate a integrării B2B (ladder) ---------------------- */
.ladder{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.ladder>i{width:13px;height:6px;border-radius:2px;background:var(--line);display:block}
.ladder>i.on{background:var(--brand)}
.ladder>b{font-size:10.5px;color:var(--muted);font-weight:700;margin-left:4px}

/* --- Scorecard subcontractori (sc-*) ------------------------------------ */
.sc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:12px}
.sc-card{border:1px solid var(--line);border-left-width:3px;border-radius:12px;padding:13px 14px;
  background:#fff;min-width:0}
.sc-card.ok{border-left-color:var(--ok)} .sc-card.warn{border-left-color:var(--warn)}
.sc-card.bad{border-left-color:var(--bad)} .sc-card.neutral{border-left-color:var(--line)}
.sc-h{font-size:12.5px;font-weight:750;line-height:1.3;margin-bottom:2px}
.sc-tot{font-size:22px;font-weight:850;letter-spacing:-.025em;line-height:1.15;margin:5px 0 3px}
.sc-card.ok .sc-tot{color:var(--ok)} .sc-card.warn .sc-tot{color:var(--warn)}
.sc-card.bad .sc-tot{color:var(--bad)}
.sc-meta{font-size:10.5px;color:var(--muted);line-height:1.45;margin-bottom:8px}
.sc-f{display:flex;flex-direction:column;gap:4px;font-size:11px}

/* --- Poziții critice (crit-*) ------------------------------------------- */
.crit-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:baseline;
  padding:7px 0;border-bottom:1px solid var(--line-soft)}
.crit-row:last-child{border-bottom:0}
.crit-l{font-size:12px;color:var(--ink-soft);min-width:0}
.crit-v{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}

/* --- Ponderi resursă M/m/U/T (mat/man/uti/tra) -------------------------- */
.mat,.man,.uti,.tra{font-size:10px;font-weight:700}
.mat{color:var(--brand)} .man{color:var(--accent)}
.uti{color:var(--warn)} .tra{color:var(--muted)}

@media (max-width:720px){
  .of-cmp{grid-template-columns:1fr}
  .of-cmp-x{transform:rotate(90deg);padding:2px 0}
  .cs-row{grid-template-columns:minmax(92px,38%) 1fr}
  .cs-v{grid-column:2;text-align:left}
}

/* --- Corecții de containment găsite la QA pe 390px ----------------------
   Etichetele lungi de KPI și celulele de cronologie nu trebuie să împingă
   cardul; se rup pe cuvânt, nu pe container. */
.k-l,.k-v,.k-h{overflow-wrap:anywhere;min-width:0}
/* Cronologia de cash: eticheta și valoarea nu au voie să lățească celula —
   se rup pe cuvânt; lățimea o dictează grila, nu textul. */
.fi-tl-l,.fi-tl-v{max-width:100%;overflow-wrap:anywhere;text-align:center;line-height:1.2}

/* ============================================================================
   ============================================================================
   SECȚIUNE NOUĂ — MODULELE ADĂUGATE ÎN VALUL 2
   Clase emise de bg-plan.js, bg-quality.js, bg-log.js, bg-hr.js, bg-legal.js,
   bg-analiza.js, bg-reorder.js, plus completările din bg-field.js, bg-subc.js,
   bg-proc.js și bg-offer.js.

   Reguli respectate în toată secțiunea:
     · nicio regulă de mai sus nu este modificată — se adaugă doar clase noi;
     · tokenii vin din bg-theme.css, nu se redefinește nicio culoare;
     · orice componentă lată își are propriul `overflow-x:auto`; pagina nu
       capătă niciodată scroll orizontal (de aceea `min-width:0` pe copiii
       de grilă și flex — un descendent cu `min-width:max-content` lățește
       tăcut toți strămoșii);
     · toate cifrele primesc `font-variant-numeric:tabular-nums`, ca să nu
       „danseze" coloanele când se schimbă valorile.
   ============================================================================
   ========================================================================== */

/* ==========================================================================
   PLANIFICARE · GRAFICUL GANTT MULTI-PROIECT (pl-g-*)
   Barele sunt poziționate cu `left`/`width` inline, în procente din fereastra
   globală de timp. Prin urmare:
     .pl-g-track  este ANCORA (position:relative) — tot ce e în ea e absolut;
     .pl-g-inner  are lățime minimă mare și trăiește într-un scroller propriu;
     .pl-g-lbl    rămâne lipită la stânga (sticky) când se derulează pista.
   Pagina nu se lățește niciodată: singurul element care se mișcă e
   .pl-g-scroll.
   ========================================================================== */
.pl-gantt{position:relative;min-width:0;max-width:100%}
.pl-g-scroll{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;padding-bottom:4px}
.pl-g-inner{position:relative;min-width:940px;padding:0 62px 6px 0}
/* Rezerva din dreapta (62px) e pentru eticheta de dată de la capătul barei:
   fără ea, ultima dată din grafic se taie la marginea scrollerului. */

/* --- antetul cu ani și trimestre --- */
.pl-g-head{display:flex;align-items:stretch;position:sticky;top:0;z-index:4;
  background:#FCFCFD;border-bottom:1px solid var(--line);min-height:38px;
  padding-bottom:15px}
/* Banda de antet are 15px în plus jos: acolo stă pastila „azi", ca să nu se
   suprapună peste etichetele de trimestru. */
.pl-g-head .pl-g-track{background:none}
.pl-g-an{position:absolute;top:2px;height:15px;display:flex;align-items:center;
  justify-content:center;font-size:10px;font-weight:800;letter-spacing:.09em;
  color:var(--ink-soft);font-variant-numeric:tabular-nums;
  border-left:1px solid var(--line);overflow:hidden;white-space:nowrap}
.pl-g-tri{position:absolute;top:19px;height:16px;display:flex;align-items:center;
  justify-content:center;font-size:9px;font-weight:700;letter-spacing:.06em;
  color:var(--faint);font-variant-numeric:tabular-nums;
  border-left:1px solid var(--line-soft);overflow:hidden;white-space:nowrap}

/* --- rândul de proiect --- */
.pl-g-row{display:flex;align-items:stretch;border-bottom:1px solid var(--line-soft)}
.pl-g-row:last-of-type{border-bottom:0}
.pl-g-row:hover{background:#FBFCFB}

/* Eticheta rămâne vizibilă la derularea pistei. Fundal opac obligatoriu:
   altfel barele trec pe sub ea și textul devine ilizibil. */
.pl-g-lbl{position:sticky;left:0;z-index:3;flex:0 0 auto;width:210px;min-width:210px;
  padding:9px 12px 9px 2px;background:var(--card);
  border-right:1px solid var(--line);display:flex;flex-direction:column;gap:1px;
  justify-content:center;overflow:hidden}
.pl-g-head .pl-g-lbl{background:#FCFCFD}
.pl-g-row:hover .pl-g-lbl{background:#FBFCFB}
.pl-g-lbl b{font-size:12px;font-weight:700;letter-spacing:-.01em;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-g-lbl span{font-size:10px;color:var(--faint);line-height:1.35;
  font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-g-lbl i{font-style:normal;font-weight:700}
.pl-g-lbl i.bad{color:var(--bad)}

/* Pista: ancora tuturor pozițiilor procentuale. */
.pl-g-track{position:relative;flex:1 1 auto;min-width:0;min-height:40px;
  margin:6px 14px 6px 0}

/* grila verticală, sub bare */
.pl-g-grid{position:absolute;inset:0;pointer-events:none;z-index:0}
.pl-g-grid>i{position:absolute;top:0;bottom:0;width:1px;background:var(--line-soft)}

/* bara contractuală */
.pl-g-bar{position:absolute;top:50%;transform:translateY(-50%);height:17px;
  border-radius:5px;background:var(--brand-soft);border:1px solid var(--brand-line);
  z-index:1;overflow:visible;min-width:3px}
.pl-g-bar.ok{background:var(--ok-soft);border-color:#BFE3CC}
.pl-g-bar.warn{background:var(--warn-soft);border-color:#F0D6AC}
.pl-g-bar.bad{background:var(--bad-soft);border-color:#F1C4C4}

/* umplerea de progres realizat — procent din durata proiectului */
.pl-g-fill{position:absolute;left:0;top:0;bottom:0;border-radius:4px 0 0 4px;
  background:var(--brand);opacity:.88}
.pl-g-bar.ok>.pl-g-fill{background:var(--ok)}
.pl-g-bar.warn>.pl-g-fill{background:var(--warn)}
.pl-g-bar.bad>.pl-g-fill{background:var(--bad)}

/* reperul de progres planificat: linie verticală în interiorul barei */
.pl-g-plan{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);
  opacity:.55;border-radius:1px;transform:translateX(-1px);z-index:2}

/* marcaj de fază pe bară (romb) */
.pl-g-faza{position:absolute;top:50%;width:8px;height:8px;z-index:3;
  transform:translate(-50%,-50%) rotate(45deg);border-radius:1.5px;
  background:var(--ok);border:1px solid #fff;box-shadow:0 0 0 .5px rgba(16,17,20,.22)}
.pl-g-faza.warn{background:var(--warn)}
.pl-g-faza.bad{background:var(--bad)}

/* prelungirea punctată = alunecarea proiectată */
.pl-g-slip{position:absolute;top:50%;transform:translateY(-50%);height:11px;
  border-radius:0 5px 5px 0;z-index:1;
  border:1px dashed var(--bad);border-left:0;background:rgba(185,28,28,.06)}

/* eticheta de capăt cu data de finalizare */
.pl-g-cap{position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  font-size:9.5px;font-weight:700;color:var(--muted);white-space:nowrap;
  font-variant-numeric:tabular-nums;padding-left:5px;pointer-events:none}

/* linia „azi", peste toate rândurile */
.pl-g-azi{position:absolute;top:53px;bottom:0;width:0;z-index:5;
  border-left:1.5px dashed var(--accent);pointer-events:none;
  margin-left:210px}
.pl-g-azi>b{position:absolute;top:-15px;left:0;transform:translateX(-50%);
  font-size:9px;font-weight:800;letter-spacing:.05em;white-space:nowrap;
  color:#fff;background:var(--accent);border-radius:999px;padding:2px 7px;
  font-variant-numeric:tabular-nums}

/* Corecția de ancorare: linia „azi" se poziționează în procente din PISTĂ,
   nu din containerul întreg — pista începe după eticheta lipită. Marginea de
   mai sus rezervă exact lățimea etichetei, iar lățimea rămasă se calculează
   din ea. `right` compensează marginea din dreapta pistei. */
.pl-g-azi{right:14px}

/* legenda */
.pl-g-lgd{display:flex;flex-wrap:wrap;gap:9px 16px;margin-top:12px;
  padding-top:11px;border-top:1px solid var(--line-soft)}
.pl-g-lgd>span{display:inline-flex;align-items:center;gap:6px;
  font-size:10.5px;color:var(--muted);white-space:nowrap}
.pl-g-lgd-bar{width:20px;height:9px;border-radius:3px;flex:0 0 auto;
  background:var(--brand-soft);border:1px solid var(--brand-line)}
.pl-g-lgd-bar.ok{background:var(--ok-soft);border-color:#BFE3CC}
.pl-g-lgd-bar.warn{background:var(--warn-soft);border-color:#F0D6AC}
.pl-g-lgd-bar.bad{background:var(--bad-soft);border-color:#F1C4C4}
.pl-g-lgd-fill{width:20px;height:9px;border-radius:3px;flex:0 0 auto;
  background:linear-gradient(90deg,var(--brand) 60%,var(--brand-soft) 60%)}
.pl-g-lgd-plan{width:2px;height:13px;flex:0 0 auto;background:var(--ink);opacity:.55;
  border-radius:1px}
.pl-g-lgd-faza{width:8px;height:8px;flex:0 0 auto;transform:rotate(45deg);
  border-radius:1.5px;background:var(--ok);border:1px solid #fff;
  box-shadow:0 0 0 .5px rgba(16,17,20,.22)}
.pl-g-lgd-faza.warn{background:var(--warn)}
.pl-g-lgd-faza.bad{background:var(--bad)}
.pl-g-lgd-slip{width:20px;height:9px;border-radius:0 3px 3px 0;flex:0 0 auto;
  border:1px dashed var(--bad);border-left:0;background:rgba(185,28,28,.06)}

/* ==========================================================================
   PLANIFICARE · DRUMUL CRITIC (pl-cp-*)
   Lanțul e o bandă orizontală de noduri legate prin săgeți; derulează în
   propriul container, nu lățește cardul.
   ========================================================================== */
.pl-cp-chain{display:flex;align-items:stretch;gap:0;overflow-x:auto;
  -webkit-overflow-scrolling:touch;padding:2px 0 8px;max-width:100%}
.pl-cp-node{flex:0 0 auto;width:168px;display:flex;flex-direction:column;gap:3px;
  padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card)}
.pl-cp-node>b{font-size:11px;font-weight:800;letter-spacing:.06em;color:var(--muted);
  font-variant-numeric:tabular-nums}
.pl-cp-node>span{font-size:11.5px;font-weight:650;line-height:1.35;color:var(--ink)}
.pl-cp-node>i{font-style:normal;font-size:10px;color:var(--faint);
  font-variant-numeric:tabular-nums}
.pl-cp-node.gata{border-left-color:var(--ok);background:#FCFEFD}
.pl-cp-node.warn{border-left-color:var(--warn)}
.pl-cp-node.bad{border-left-color:var(--bad)}
/* nodul aflat în execuție: singurul cu accent plin */
.pl-cp-node.on{border-color:var(--brand);border-left-color:var(--brand);
  background:var(--brand-soft);box-shadow:var(--sh)}
.pl-cp-node.on>span{color:var(--brand-dark)}
.pl-cp-arrow{flex:0 0 auto;display:flex;align-items:center;padding:0 7px;
  color:var(--faint);font-size:13px;user-select:none;pointer-events:none}

/* celula de rezervă din tabel */
.pl-cp-float{font-variant-numeric:tabular-nums;white-space:nowrap}
.pl-cp-float b{font-weight:750}

/* blocul „ce se întâmplă dacă alunecă" */
.pl-cp-imp{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
  margin-top:4px}
.pl-cp-imp-c{min-width:0;padding:12px 14px;border:1px solid var(--line);
  border-radius:var(--r-s);background:#FCFCFD;text-align:center}
.pl-cp-imp-v{display:block;font-size:20px;font-weight:800;letter-spacing:-.025em;
  font-variant-numeric:tabular-nums;line-height:1.2;overflow-wrap:anywhere}
.pl-cp-imp-c.ok .pl-cp-imp-v{color:var(--ok)}
.pl-cp-imp-c.warn .pl-cp-imp-v{color:var(--warn)}
.pl-cp-imp-c.bad .pl-cp-imp-v{color:var(--bad)}
.pl-cp-imp-l{display:block;font-size:10.5px;color:var(--muted);line-height:1.4;
  margin-top:4px;overflow-wrap:anywhere}

/* ==========================================================================
   PLANIFICARE · CAPACITATE (pl-cap-*)
   Heat-map textual: meserii pe rânduri × săptămâni pe coloane. Grila are
   lățime proprie și derulează orizontal; eticheta de meserie rămâne lipită.
   ========================================================================== */
.pl-cap-grid{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--line);border-radius:var(--r-s);background:var(--card)}
.pl-cap-h,.pl-cap-r{display:flex;align-items:stretch;min-width:max-content}
.pl-cap-h{position:sticky;top:0;z-index:3;background:#FCFCFD;
  border-bottom:1.5px solid var(--line)}
.pl-cap-r{border-bottom:1px solid var(--line-soft)}
.pl-cap-r:last-child{border-bottom:0}
.pl-cap-r:hover{background:#FBFCFB}
/* Eticheta de meserie conține numele (<b>) și efectivul disponibil (<i>/<em>).
   Sunt două elemente inline lipite: fără `gap` explicit s-ar citi „Zidari17
   disponibili". Se așază pe două rânduri când nu încap pe unul. */
.pl-cap-l{position:sticky;left:0;z-index:2;flex:0 0 auto;width:186px;min-width:186px;
  padding:8px 11px;background:var(--card);border-right:1px solid var(--line);
  font-size:11.5px;font-weight:650;color:var(--ink-soft);display:flex;
  flex-wrap:wrap;align-items:center;gap:2px 7px;line-height:1.3;overflow:hidden}
.pl-cap-l>b{font-weight:700}
.pl-cap-l>i,.pl-cap-l>em{font-style:italic;font-weight:400;font-size:10.5px;
  color:var(--faint);font-variant-numeric:tabular-nums}
.pl-cap-h .pl-cap-l{background:#FCFCFD;font-size:10px;font-weight:750;
  text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.pl-cap-r:hover .pl-cap-l{background:#FBFCFB}
/* o celulă săptămână × meserie */
.pl-cap-c{flex:0 0 auto;width:56px;min-height:40px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:1px;padding:5px 3px;
  border-right:1px solid var(--line-soft);position:relative;
  font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;
  color:var(--ink-soft);text-align:center;line-height:1.2}
.pl-cap-c:last-child{border-right:0}
.pl-cap-h .pl-cap-c{font-size:9.5px;font-weight:750;color:var(--muted)}
.pl-cap-h .pl-cap-c b{font-size:10.5px;font-weight:800;color:var(--ink-soft);display:block}
.pl-cap-c.ok{background:var(--ok-soft);color:var(--ok)}
.pl-cap-c.warn{background:var(--warn-soft);color:var(--warn)}
.pl-cap-c.bad{background:var(--bad-soft);color:var(--bad)}
.pl-cap-c.gol{background:var(--line-soft);color:var(--faint)}
/* săptămâna curentă, în antet */
.pl-cap-h .pl-cap-c.acum{background:var(--accent-soft);
  box-shadow:inset 0 -2.5px 0 var(--accent)}
.pl-cap-h .pl-cap-c.acum b{color:var(--accent)}
/* bara verticală de încărcare dintr-o celulă */
.pl-cap-bar{position:absolute;left:0;right:0;bottom:0;
  background:currentColor;opacity:.16;pointer-events:none}
/* legenda */
.pl-cap-lgd{display:inline-block;width:16px;height:10px;border-radius:3px;
  vertical-align:-1px;margin-right:5px;background:var(--line-soft)}
.pl-cap-lgd.ok{background:var(--ok-soft);box-shadow:inset 0 0 0 1px #BFE3CC}
.pl-cap-lgd.warn{background:var(--warn-soft);box-shadow:inset 0 0 0 1px #F0D6AC}
.pl-cap-lgd.bad{background:var(--bad-soft);box-shadow:inset 0 0 0 1px #F1C4C4}
.pl-cap-lgd.gol{background:var(--line-soft);box-shadow:inset 0 0 0 1px var(--line)}
.pl-cap-off{font-size:11px;color:var(--muted);line-height:1.5;margin-top:10px}

/* ==========================================================================
   PLANIFICARE · SCENARII WHAT-IF (pl-sc-*)
   Cardurile sunt <button>: se resetează stilul nativ, altfel moștenesc
   fontul și alinierea de sistem.
   ========================================================================== */
.pl-sc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));
  gap:12px}
.pl-sc-card{position:relative;min-width:0;display:flex;flex-direction:column;gap:8px;
  text-align:left;font-family:inherit;padding:14px 15px;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--r);background:var(--card);
  box-shadow:var(--sh);transition:border-color .15s,box-shadow .15s,background .15s}
.pl-sc-card:hover{border-color:var(--brand);box-shadow:var(--sh-l)}
.pl-sc-card.on{border-color:var(--brand);border-width:1.5px;background:var(--brand-soft);
  box-shadow:var(--sh-l)}
.pl-sc-card.rec{border-color:var(--accent)}
.pl-sc-card.rec.on{border-color:var(--accent);background:var(--accent-soft)}
.pl-sc-t{font-size:12.5px;font-weight:750;letter-spacing:-.01em;line-height:1.35;
  color:var(--ink);padding-right:74px}
.pl-sc-x{font-size:11px;color:var(--muted);line-height:1.45}
.pl-sc-rec{position:absolute;top:12px;right:13px;font-size:9px;font-weight:800;
  letter-spacing:.07em;text-transform:uppercase;color:var(--accent);
  background:var(--accent-soft);border:1px solid #CFE0F5;padding:2px 7px;
  border-radius:999px;white-space:nowrap}
.pl-sc-eff{display:flex;flex-wrap:wrap;gap:6px 14px;padding-top:8px;
  border-top:1px solid var(--line-soft)}
.pl-sc-e{display:flex;flex-direction:column;gap:1px;min-width:0}
.pl-sc-e-v{font-size:14px;font-weight:800;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.2}
.pl-sc-e-v.ok{color:var(--ok)} .pl-sc-e-v.warn{color:var(--warn)}
.pl-sc-e-v.bad{color:var(--bad)}
.pl-sc-e-l{font-style:normal;font-size:9.5px;color:var(--faint);line-height:1.35;
  overflow-wrap:anywhere}
.pl-sc-v{font-size:11px;color:var(--ink-soft);line-height:1.5;padding-top:8px;
  border-top:1px solid var(--line-soft)}

/* balanța „ce câștigi / ce pierzi" */
.pl-sc-bal{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pl-sc-bal-c{min-width:0;padding:12px 14px;border:1px solid var(--line);
  border-top:2.5px solid var(--line);border-radius:var(--r-s);background:#FCFCFD}
.pl-sc-bal-c.ok{border-top-color:var(--ok);background:#FCFEFD}
.pl-sc-bal-c.bad{border-top-color:var(--bad);background:#FFFCFC}
.pl-sc-bal-h{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);margin-bottom:8px}
.pl-sc-bal-c.ok .pl-sc-bal-h{color:var(--ok)}
.pl-sc-bal-c.bad .pl-sc-bal-h{color:var(--bad)}
.pl-sc-bal-c ul{margin:0;padding-left:16px}
.pl-sc-bal-c li{font-size:11.5px;color:var(--ink-soft);line-height:1.55;margin-bottom:4px}

/* ==========================================================================
   PLANIFICARE · CONFLICTE DE RESURSĂ (pl-cf-*)
   ========================================================================== */
.pl-cf-list{display:flex;flex-direction:column;gap:11px}
.pl-cf{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);padding:12px 14px;background:var(--card)}
.pl-cf.warn{border-left-color:var(--warn)}
.pl-cf.bad{border-left-color:var(--bad)}
.pl-cf-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.pl-cf-h b{font-size:12.5px;font-weight:750;letter-spacing:-.01em}
/* cele două părți, față în față */
.pl-cf-vs{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.pl-cf-p{flex:1 1 220px;min-width:0;padding:10px 12px;border:1px solid var(--line-soft);
  border-radius:var(--r-s);background:#FCFCFD;display:flex;flex-direction:column;gap:2px}
.pl-cf-p b{font-size:11.5px;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.pl-cf-p span{font-size:10.5px;color:var(--muted);line-height:1.4;
  font-variant-numeric:tabular-nums}
.pl-cf-vs-x{flex:0 0 auto;align-self:center;font-size:10px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;color:var(--faint)}
.pl-cf-x{font-size:11.5px;color:var(--ink-soft);line-height:1.55;margin-top:10px}
.pl-cf-fix{font-size:11.5px;color:var(--ink-soft);line-height:1.55;margin-top:9px;
  padding:9px 12px;border-radius:var(--r-s);background:var(--brand-soft);
  border:1px solid var(--brand-line)}
.pl-cf-fix b{color:var(--brand-dark)}

/* ==========================================================================
   CALITATE · CARTEA TEHNICĂ (cq-*)
   Capitole A/B/C/D cu bară de completitudine în trei segmente și listă de
   piese cu debitor. Bara este un flex de trei <i> care însumează 100%.
   ========================================================================== */
.cq-cap{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:13px 15px;margin-bottom:12px}
.cq-cap:last-child{margin-bottom:0}
.cq-cap.ok{border-left-color:var(--ok)}
.cq-cap.warn{border-left-color:var(--warn)}
.cq-cap.bad{border-left-color:var(--bad)}
.cq-cap-h{display:flex;align-items:center;gap:12px;margin-bottom:11px}
.cq-cap-l{flex:0 0 auto;width:34px;height:34px;display:flex;align-items:center;
  justify-content:center;border-radius:9px;font-size:16px;font-weight:800;
  letter-spacing:-.02em;background:var(--line-soft);color:var(--ink-soft);
  font-variant-numeric:tabular-nums}
.cq-cap.ok .cq-cap-l{background:var(--ok-soft);color:var(--ok)}
.cq-cap.warn .cq-cap-l{background:var(--warn-soft);color:var(--warn)}
.cq-cap.bad .cq-cap-l{background:var(--bad-soft);color:var(--bad)}
.cq-cap-t{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.cq-cap-t b{font-size:12.5px;font-weight:750;letter-spacing:-.01em;line-height:1.35}
.cq-cap-v{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;gap:1px}
.cq-cap-v b{font-size:16px;font-weight:800;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.2}
.cq-cap-v b.ok{color:var(--ok)} .cq-cap-v b.warn{color:var(--warn)}
.cq-cap-v b.bad{color:var(--bad)}
/* bara în trei segmente lipite */
.cq-cap-bar{display:flex;height:8px;border-radius:999px;overflow:hidden;
  background:var(--line-soft)}
.cq-cap-bar>i{display:block;height:100%;transition:width .4s}
.cq-seg-ok{background:var(--ok)}
.cq-seg-part{background:var(--warn)}
.cq-seg-lipsa{background:var(--bad-soft);box-shadow:inset 0 0 0 1px #F1C4C4}
.cq-cap-note{font-size:10.5px;color:var(--faint);line-height:1.45;margin-top:8px;
  padding-bottom:9px;border-bottom:1px solid var(--line-soft)}

/* rândul unei piese de dosar */
/* Rândul de piesă: patru zone pe UN singur rând — marcaj, denumire, debitor,
   termen. Debitorul are coloană proprie, altfel ar trece pe rândul următor și
   ar dubla înălțimea listei. */
.cq-doc{display:grid;
  grid-template-columns:auto minmax(0,1fr) minmax(140px,auto) minmax(74px,auto);
  gap:2px 12px;align-items:baseline;padding:6px 0;
  border-bottom:1px solid var(--line-soft)}
.cq-doc:last-child{border-bottom:0}
.cq-doc-st{grid-row:1;align-self:baseline;font-size:11px;line-height:1.45;
  color:var(--faint)}
.cq-doc-st.ok{color:var(--ok)} .cq-doc-st.warn{color:var(--warn)}
.cq-doc-st.bad{color:var(--bad)}
.cq-doc-n{min-width:0;font-size:11.5px;color:var(--ink);line-height:1.45}
.cq-doc-n .sub{display:inline;margin-left:6px}
.cq-doc-d{font-size:10.5px;color:var(--muted);line-height:1.45;text-align:right;
  min-width:0}
.cq-doc-t{text-align:right;font-size:11px;font-weight:650;
  color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}
.cq-doc.warn .cq-doc-t{color:var(--warn)}
.cq-doc.bad .cq-doc-t{color:var(--bad)}

/* lanțul cauzal Carte Tehnică → recepție → retenție */
.cq-chain{display:flex;align-items:stretch;gap:0;flex-wrap:wrap}
.cq-chain-pas{flex:1 1 168px;min-width:0;display:flex;flex-direction:column;gap:3px;
  padding:12px 14px;border:1px solid var(--line);border-top:2.5px solid var(--line);
  border-radius:var(--r-s);background:#FCFCFD}
.cq-chain-pas.ok{border-top-color:var(--ok)}
.cq-chain-pas.warn{border-top-color:var(--warn)}
.cq-chain-pas.bad{border-top-color:var(--bad)}
.cq-chain-t{font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted)}
.cq-chain-v{font-size:21px;font-weight:800;letter-spacing:-.025em;line-height:1.2;
  font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cq-chain-pas.ok .cq-chain-v{color:var(--ok)}
.cq-chain-pas.warn .cq-chain-v{color:var(--warn)}
.cq-chain-pas.bad .cq-chain-v{color:var(--bad)}
.cq-chain-x{font-size:10.5px;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}
.cq-chain-sg{flex:0 0 auto;display:flex;align-items:center;padding:0 8px;
  color:var(--faint);font-size:14px;pointer-events:none;user-select:none}

/* laborator de încercări */
.cq-lab{border:1px solid var(--line);border-radius:var(--r-s);padding:12px 14px;
  background:var(--card);height:100%}
.cq-lab-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.cq-lab-h b{font-size:12px;font-weight:750;letter-spacing:-.01em;line-height:1.35}
.cq-lab-m{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:9px}
.cq-lab-m>span{display:flex;flex-direction:column;gap:1px;min-width:0;
  font-size:10px;color:var(--muted);line-height:1.35}
.cq-lab-m b{font-size:14px;font-weight:800;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums}

/* faza determinantă */
.cq-faza{display:flex;align-items:center;gap:12px;padding:10px 0;
  border-bottom:1px solid var(--line-soft)}
.cq-faza:last-child{border-bottom:0}
.cq-faza-d{flex:0 0 auto;width:84px;display:flex;flex-direction:column;gap:1px;
  text-align:center;padding:7px 4px;border-radius:var(--r-s);background:#FCFCFD;
  border:1px solid var(--line-soft)}
.cq-faza-d b{font-size:12.5px;font-weight:800;letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;line-height:1.2}
.cq-faza-d span{font-size:9.5px;color:var(--muted);line-height:1.3}

/* cronologia recepțiilor */
.cq-tl{display:flex;align-items:stretch;gap:8px;overflow-x:auto;
  -webkit-overflow-scrolling:touch;padding-bottom:4px;max-width:100%}
.cq-tl-p{flex:1 1 168px;min-width:158px;display:flex;flex-direction:column;gap:2px;
  padding:11px 13px;border:1px solid var(--line);border-radius:var(--r-s);
  background:#FCFCFD;position:relative}
.cq-tl-p b{font-size:11.5px;font-weight:700;line-height:1.35}
.cq-tl-p>span{font-size:11.5px;font-weight:650;color:var(--ink-soft);
  font-variant-numeric:tabular-nums}
.cq-tl-p.done{border-color:#BFE3CC;background:var(--ok-soft)}
.cq-tl-p.done b{color:var(--ok)}
.cq-tl-p.now{border-color:var(--accent);border-width:1.5px;background:var(--accent-soft);
  box-shadow:var(--sh)}
.cq-tl-p.now b{color:var(--accent)}
.cq-tl-p.next{background:var(--card)}

/* ==========================================================================
   LOGISTICĂ · SCADENȚE ISCIR, TRANSFERURI, STOCURI (lo-*)
   ========================================================================== */
.lo-tl{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.lo-tl-head,.lo-tl-row{display:flex;align-items:stretch;min-width:620px}
.lo-tl-head{position:sticky;top:0;z-index:2;background:#FCFCFD;
  border-bottom:1px solid var(--line);padding-bottom:5px;margin-bottom:5px}
.lo-tl-row{border-bottom:1px solid var(--line-soft);padding:5px 0}
.lo-tl-row:last-child{border-bottom:0}
.lo-tl-l{flex:0 0 auto;width:184px;min-width:184px;padding-right:12px;
  display:flex;flex-direction:column;gap:1px;justify-content:center;overflow:hidden}
.lo-tl-l b{font-size:11.5px;font-weight:700;line-height:1.3;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.lo-tl-l span{font-size:10px;color:var(--faint);line-height:1.3;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* pista: ancora marcajelor poziționate în procente */
.lo-tl-track{position:relative;flex:1 1 auto;min-width:0;min-height:26px;
  border-radius:6px;background:var(--line-soft)}
.lo-tl-head .lo-tl-track{background:none;display:grid;
  grid-template-columns:repeat(6,1fr);align-items:end}
.lo-tl-head .lo-tl-track>span{font-size:9.5px;font-weight:750;letter-spacing:.05em;
  color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;
  border-left:1px solid var(--line-soft);padding-bottom:2px}
.lo-tl-mark{position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2;
  min-width:9px;height:9px;border-radius:999px;background:var(--muted);
  border:1.5px solid #fff;box-shadow:0 0 0 .5px rgba(16,17,20,.2)}
.lo-tl-mark.warn{background:var(--warn)}
.lo-tl-mark.bad{background:var(--bad);width:11px;height:11px}
.lo-tl-now{position:absolute;top:-3px;bottom:-3px;width:0;z-index:3;
  border-left:1.5px dashed var(--accent);pointer-events:none}

/* transfer de utilaj între șantiere */
.lo-tr{border:1px solid var(--line);border-radius:var(--r-s);padding:12px 14px;
  background:var(--card);margin-bottom:10px}
.lo-tr:last-child{margin-bottom:0}
.lo-tr-flow{display:flex;align-items:center;gap:10px;margin:10px 0}
.lo-tr-l,.lo-tr-r{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:1px;
  padding:9px 11px;border:1px solid var(--line-soft);border-radius:var(--r-s);
  background:#FCFCFD}
.lo-tr-l b,.lo-tr-r b{font-size:11.5px;font-weight:700;line-height:1.35;
  overflow-wrap:anywhere}
.lo-tr-r{border-color:var(--brand-line);background:var(--brand-soft)}
.lo-tr-x{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:1px;
  color:var(--faint);font-size:15px;line-height:1}
.lo-tr-x .sub{font-size:9.5px;font-variant-numeric:tabular-nums}
.lo-tr-m{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:9px;
  padding-top:9px;border-top:1px solid var(--line-soft)}
.lo-tr-m>span{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:10px;
  color:var(--muted);line-height:1.35}
.lo-tr-m b{font-size:13px;font-weight:750;color:var(--ink);
  font-variant-numeric:tabular-nums}

/* matricea de stocuri: locații × categorii */
.lo-st-grid{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.lo-st-cell{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
/* intensitate relativă a valorii — verde de brand, de la stins la plin */
.lo-st-cell.i0{color:var(--faint)}
.lo-st-cell.i1{background:rgba(41,146,63,.06)}
.lo-st-cell.i2{background:rgba(41,146,63,.13)}
.lo-st-cell.i3{background:rgba(41,146,63,.22);font-weight:650}
.lo-st-cell.i4{background:rgba(41,146,63,.32);font-weight:750;color:var(--brand-deep)}
.lo-st-leg{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px;
  font-size:10.5px;color:var(--muted)}
.lo-st-leg i{display:inline-block;width:20px;height:10px;border-radius:3px;
  border:1px solid var(--line)}
.lo-st-leg i.i0{background:var(--card)}
.lo-st-leg i.i1{background:rgba(41,146,63,.06)}
.lo-st-leg i.i2{background:rgba(41,146,63,.13)}
.lo-st-leg i.i3{background:rgba(41,146,63,.22)}
.lo-st-leg i.i4{background:rgba(41,146,63,.32)}

/* indicator liniar cu zonă-țintă */
.lo-gauge{position:relative;height:9px;border-radius:999px;background:var(--line-soft);
  min-width:88px;overflow:visible}
.lo-gauge>i{display:block;height:100%;border-radius:999px;background:var(--brand)}
.lo-gauge>i.ok{background:var(--ok)} .lo-gauge>i.warn{background:var(--warn)}
.lo-gauge>i.bad{background:var(--bad)}
.lo-gauge>u{position:absolute;top:-3px;height:15px;border-radius:2px;
  background:rgba(46,125,209,.18);border-left:1.5px solid var(--accent);
  border-right:1.5px solid var(--accent)}

/* ==========================================================================
   ANALIZĂ · HARTA DE TIPURI (an-tip*)
   ========================================================================== */
.an-tipuri{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:12px}
.an-tip{min-width:0;display:flex;flex-direction:column;gap:4px;text-align:left;
  font-family:inherit;cursor:pointer;padding:14px 15px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--card);box-shadow:var(--sh);
  transition:border-color .15s,box-shadow .15s,background .15s}
.an-tip:hover,.an-tip:focus-visible{border-color:var(--brand);background:var(--brand-soft);
  box-shadow:var(--sh-l);outline:none}
.an-tip-n{font-size:25px;font-weight:800;letter-spacing:-.03em;line-height:1.15;
  color:var(--brand);font-variant-numeric:tabular-nums}
.an-tip-l{font-size:12.5px;font-weight:750;letter-spacing:-.01em;color:var(--ink)}
.an-tip-x{font-size:11px;color:var(--muted);line-height:1.5}
.an-tip-c{font-size:9.5px;color:var(--faint);letter-spacing:.05em;margin-top:2px;
  font-variant-numeric:tabular-nums}

/* ==========================================================================
   ANALIZĂ · MATRICEA DE COMPARAȚIE (an-mtx / an-cel / an-crit)
   Tabelul are multe coloane, deci trăiește într-un `.tbl-scroll`. Două
   corecții importante față de forma implicită:
     1. celula de entitate stivuiește VERTICAL valoarea brută, bara și scorul
        normalizat — altfel se lipesc între ele („11,3%93/100");
     2. coloana de criteriu are lățime minimă reală, altfel explicația se rupe
        la un cuvânt pe rând și devine o coloană înaltă și zdrențuită.
   ========================================================================== */
.an-mtx{min-width:860px}
.an-mtx th,.an-mtx td{vertical-align:top}
/* antetul unei entități comparate */
.an-mtx-h{min-width:150px;max-width:210px;white-space:normal}
.an-mtx-h b{display:block;font-size:11.5px;font-weight:750;letter-spacing:-.01em;
  color:var(--ink);line-height:1.35;margin:3px 0 1px;text-transform:none}
.an-mtx-h .sub-l{display:block;text-transform:none;font-weight:400}
.an-loc{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.05em;
  padding:2px 7px;border-radius:999px;background:var(--line-soft);color:var(--muted);
  font-variant-numeric:tabular-nums}
/* locul 1 se diferențiază */
.an-mtx-h:nth-of-type(3) .an-loc{background:var(--brand-soft);color:var(--brand);
  box-shadow:inset 0 0 0 1px var(--brand-line)}

/* coloana de criterii — lățime reală, ca explicația să nu se rupă în benzi */
.an-crit-h{min-width:190px;width:210px}
.an-crit{min-width:190px;width:210px;white-space:normal}
.an-crit b{display:block;font-size:12px;font-weight:700;line-height:1.35}
.an-crit .sub-l{display:block;margin-top:1px}
.an-dir{display:block;font-size:9.5px;font-weight:700;letter-spacing:.05em;
  color:var(--faint);margin-top:2px;text-transform:uppercase}
.an-w{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;
  color:var(--ink-soft);white-space:nowrap}

/* celula unei entități: trei blocuri suprapuse, nu trei elemente inline */
.an-cel{min-width:112px}
.an-cel-raw{display:block;font-size:12.5px;font-weight:750;letter-spacing:-.01em;
  color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.3}
.an-cel-bar{display:block;height:5px;border-radius:999px;background:var(--line-soft);
  overflow:hidden;margin:4px 0 3px}
.an-cel-bar>i{display:block;height:100%;border-radius:999px;background:var(--brand);
  opacity:.75;transition:width .4s}
.an-cel-norm{display:block;font-size:9.5px;font-weight:650;color:var(--faint);
  font-variant-numeric:tabular-nums;letter-spacing:.03em}
/* cea mai bună valoare de pe rând — contur discret, nu culoare de alarmă */
.an-cel.best{background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand-line)}
.an-cel.best .an-cel-raw{color:var(--brand-dark)}
.an-cel.best .an-cel-bar>i{background:var(--brand);opacity:1}
.an-cel.best .an-cel-norm{color:var(--brand)}
/* rândul de scor total */
.an-tot td,.an-tot th{background:#FCFCFD;border-top:1.5px solid var(--line)}
.an-cel-tot{text-align:center}
.an-scor{display:block;font-size:19px;font-weight:800;letter-spacing:-.025em;
  color:var(--brand);font-variant-numeric:tabular-nums;line-height:1.2}

/* ==========================================================================
   ANALIZĂ · EXPLICAȚIA DIFERENȚEI (an-expl)
   ========================================================================== */
.an-expl{border:1px solid var(--line);border-radius:var(--r-s);background:#FCFCFD;
  overflow:hidden}
.an-expl-h{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--card);
  font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
.an-expl-h b{font-weight:750;color:var(--ink)}
.an-delta{display:inline-block;font-size:12.5px;font-weight:800;color:var(--brand);
  background:var(--brand-soft);border:1px solid var(--brand-line);padding:1px 8px;
  border-radius:999px;font-variant-numeric:tabular-nums;white-space:nowrap}
.an-expl-b{padding:4px 14px 12px}
.an-expl-r{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(80px,1fr) auto;
  gap:3px 12px;align-items:center;padding:9px 0;
  border-bottom:1px solid var(--line-soft)}
.an-expl-r:last-child{border-bottom:0}
.an-expl-l{min-width:0;font-size:11.5px;font-weight:650;color:var(--ink-soft);
  line-height:1.4}
.an-expl-l em{display:block;font-style:normal;font-size:9.5px;font-weight:800;
  letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin-top:1px}
.an-expl-t{height:7px;border-radius:999px;background:var(--line-soft);overflow:hidden;
  min-width:60px}
.an-expl-t>i{display:block;height:100%;border-radius:999px;background:var(--brand)}
.an-expl-t>i.ok{background:var(--ok)} .an-expl-t>i.bad{background:var(--bad)}
.an-expl-v{text-align:right;font-size:12px;font-weight:750;white-space:nowrap;
  font-variant-numeric:tabular-nums;color:var(--ink)}
.an-expl-d{grid-column:1/-1;font-size:10.5px;color:var(--faint);line-height:1.45;
  font-variant-numeric:tabular-nums}
/* criteriul decisiv — cel fără de care clasamentul s-ar inversa */
.an-expl-r.dec{background:var(--accent-soft);border-radius:var(--r-s);
  box-shadow:inset 0 0 0 1px #CFE0F5;padding-left:11px;padding-right:11px;
  margin:3px -11px}
.an-expl-r.dec .an-expl-l{color:var(--accent)}

/* clasamentul compact din celulele de tabel */
.an-ord{display:flex;flex-direction:column;gap:2px}
.an-ord-i{font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.an-ord-i em{font-style:normal;font-weight:750;color:var(--ink)}

/* ==========================================================================
   ANALIZĂ · BENCHMARK ȘI OUTLIERI (an-bm / an-out)
   ========================================================================== */
.an-bm-t{position:relative;display:block;height:7px;border-radius:999px;
  background:var(--line-soft);min-width:74px;overflow:visible}
.an-bm-t>i{display:block;height:100%;border-radius:999px;background:var(--brand);
  opacity:.8}
.an-bm-t>u{position:absolute;top:-3px;width:2px;height:13px;background:var(--ink);
  opacity:.45;border-radius:1px;transform:translateX(-1px)}

.an-out-list{display:flex;flex-direction:column;gap:11px}
.an-out{border:1px solid var(--line);border-left:3px solid var(--warn);
  border-radius:var(--r-s);background:var(--card);overflow:hidden}
.an-out-h{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;
  padding:12px 14px;border-bottom:1px solid var(--line-soft);background:#FCFCFD}
.an-out-t{flex:1 1 220px;min-width:0}
.an-out-t b{display:block;font-size:12.5px;font-weight:750;letter-spacing:-.01em;
  line-height:1.35}
.an-out-m{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;gap:1px}
.an-out-v{font-size:18px;font-weight:800;letter-spacing:-.025em;color:var(--warn);
  font-variant-numeric:tabular-nums;line-height:1.2}
.an-out-l{font-size:10px;color:var(--muted);line-height:1.4}
.an-out-b{padding:12px 14px}
.an-out-q{font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);margin-bottom:8px}
.an-out-r{display:grid;grid-template-columns:minmax(120px,30%) 1fr;gap:4px 12px;
  padding:7px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}
.an-out-r:last-child{border-bottom:0}
.an-out-f{font-size:11.5px;font-weight:700;color:var(--ink-soft);line-height:1.4}
.an-out-f em{display:block;font-style:normal;font-size:9px;font-weight:800;
  letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin-top:1px}
.an-out-x{font-size:11.5px;color:var(--muted);line-height:1.5;min-width:0}
/* motivul care EXPLICĂ abaterea */
.an-out-r.dec{background:var(--accent-soft);border-radius:var(--r-s);
  box-shadow:inset 0 0 0 1px #CFE0F5;padding:9px 11px;margin:3px 0;border-bottom:0}
.an-out-r.dec .an-out-f{color:var(--accent)}
.an-out-r.dec .an-out-x{color:var(--ink-soft)}
.an-out-c{font-size:11.5px;color:var(--ink-soft);line-height:1.55;margin-top:11px;
  padding-top:11px;border-top:1px solid var(--line)}

/* ==========================================================================
   ANALIZĂ · GRAFICUL TORNADO (an-tor)
   Bare care diverg dintr-o axă centrală la 50%. Ramurile sunt poziționate
   absolut cu `left`/`width` inline, deci pista trebuie să fie `relative`.
   ========================================================================== */
.an-tor{display:flex;flex-direction:column;gap:2px}
.an-tor-cap{display:grid;grid-template-columns:minmax(0,1.05fr) auto minmax(0,1.05fr);
  align-items:center;gap:10px;padding:0 0 9px;margin-bottom:5px;
  border-bottom:1px solid var(--line-soft);
  font-size:9.5px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;
  color:var(--faint)}
.an-tor-cap>span:first-child{text-align:right}
.an-tor-cap>b{font-size:11px;font-weight:800;letter-spacing:.02em;color:var(--ink-soft);
  text-transform:none;white-space:nowrap;font-variant-numeric:tabular-nums;
  padding:3px 10px;border-radius:999px;background:var(--line-soft)}
.an-tor-r{display:grid;grid-template-columns:minmax(120px,25%) minmax(0,1fr) minmax(118px,auto);
  gap:10px;align-items:center;padding:5px 0}
.an-tor-l{min-width:0;font-size:11.5px;font-weight:650;color:var(--ink-soft);
  line-height:1.35}
.an-tor-l em{display:block;font-style:normal;font-size:9.5px;font-weight:500;
  color:var(--faint);font-variant-numeric:tabular-nums}
.an-tor-r.ext .an-tor-l{color:var(--muted)}
.an-tor-r.ext .an-tor-l::after{content:"factor extern";display:block;font-size:8.5px;
  font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
/* pista cu axa la 50% */
.an-tor-t{position:relative;height:19px;min-width:0;background:var(--line-soft);
  border-radius:4px}
.an-tor-neg{position:absolute;top:3px;bottom:3px;border-radius:3px 0 0 3px;
  background:var(--bad);opacity:.8}
.an-tor-poz{position:absolute;top:3px;bottom:3px;border-radius:0 3px 3px 0;
  background:var(--ok);opacity:.8}
.an-tor-ax{position:absolute;left:50%;top:-2px;bottom:-2px;width:1.5px;
  background:var(--ink);opacity:.55;transform:translateX(-.75px);
  pointer-events:none;text-decoration:none}
.an-tor-v{text-align:right;font-size:11px;white-space:nowrap;
  font-variant-numeric:tabular-nums;line-height:1.3}
.an-tor-v b{font-weight:750}
.an-tor-v em{display:block;font-style:normal;font-size:9.5px;color:var(--faint);
  font-weight:700}

/* ==========================================================================
   ANALIZĂ · LANȚUL DE CAUZALITATE (an-lant)
   Verigile se citesc de sus în jos; legătura vizuală e o linie verticală
   trasă din marcajul numeric.
   ========================================================================== */
.an-lant{display:flex;flex-direction:column;gap:0}
.an-veriga{position:relative;display:grid;grid-template-columns:auto 1fr;gap:12px;
  padding:0 0 16px}
.an-veriga:last-child{padding-bottom:0}
/* linia care leagă verigile */
.an-veriga:not(:last-child)::before{content:"";position:absolute;left:13px;top:30px;
  bottom:2px;width:1.5px;background:var(--line);border-radius:1px}
.an-v-n{position:relative;z-index:1;flex:0 0 auto;width:27px;height:27px;
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:800;font-variant-numeric:tabular-nums;
  background:var(--card);color:var(--muted);border:1.5px solid var(--line)}
.an-veriga.rad .an-v-n{background:var(--bad);color:#fff;border-color:var(--bad)}
.an-v-b{min-width:0;padding-top:2px}
.an-v-t{font-size:12.5px;font-weight:750;letter-spacing:-.01em;line-height:1.4;
  color:var(--ink)}
.an-v-rad{display:inline-block;margin-left:7px;font-size:9px;font-weight:800;
  letter-spacing:.08em;text-transform:uppercase;color:var(--bad);
  background:var(--bad-soft);border:1px solid #F1C4C4;padding:1px 7px;
  border-radius:999px;vertical-align:1px}
.an-v-c{font-size:18px;font-weight:800;letter-spacing:-.025em;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.25;margin:3px 0 2px}
.an-veriga.rad .an-v-c{color:var(--bad)}
.an-v-d{font-size:11.5px;color:var(--muted);line-height:1.55}
.an-v-lei{display:flex;align-items:center;gap:10px;margin-top:7px}
.an-v-lei b{font-size:11.5px;font-weight:750;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.an-v-bar{flex:1 1 auto;min-width:0;height:7px;border-radius:999px;
  background:var(--line-soft);overflow:hidden}
.an-v-bar>i{display:block;height:100%;border-radius:999px;background:var(--brand)}
.an-veriga.rad .an-v-bar>i{background:var(--bad)}
.an-v-s{font-size:9.5px;color:var(--faint);line-height:1.4;margin-top:6px;
  letter-spacing:.02em}

/* ==========================================================================
   ANALIZĂ · SIMULATORUL DE DECIZIE (an-sim / an-opt)
   ========================================================================== */
.an-sim-d{font-size:13px;color:var(--ink-soft);line-height:1.6;margin-bottom:14px;
  max-width:104ch}
.an-opt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.an-opt{min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);
  border-radius:var(--r);background:var(--card);box-shadow:var(--sh);overflow:hidden;
  transition:border-color .15s,box-shadow .15s}
.an-opt:hover{border-color:var(--brand);box-shadow:var(--sh-l)}
.an-opt.on{border-color:var(--brand);border-width:1.5px;box-shadow:var(--sh-l)}
.an-opt.on .an-opt-t{background:var(--brand-soft);color:var(--brand-dark)}
.an-opt-t{padding:11px 14px;font-size:12.5px;font-weight:750;letter-spacing:-.01em;
  line-height:1.35;background:#FCFCFD;border-bottom:1px solid var(--line-soft)}
.an-opt-m{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:11px 14px;border-bottom:1px solid var(--line-soft)}
.an-opt-lei{font-size:18px;font-weight:800;letter-spacing:-.025em;
  font-variant-numeric:tabular-nums;line-height:1.2}
.an-opt-zile{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.an-opt-b{flex:1 1 auto;padding:4px 14px 12px}
.an-opt-r{display:grid;grid-template-columns:minmax(84px,26%) 1fr;gap:4px 11px;
  padding:8px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}
.an-opt-r:last-child{border-bottom:0}
.an-opt-k{font-size:9.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);line-height:1.5}
.an-opt-v{font-size:11.5px;color:var(--ink-soft);line-height:1.55;min-width:0}
/* „ce nu mai poți schimba" — cel mai accentuat dintre cele patru rânduri */
.an-opt-r.ireversibil{background:var(--bad-soft);border-radius:var(--r-s);
  box-shadow:inset 0 0 0 1px #F1C4C4;padding:9px 11px;margin:4px 0;border-bottom:0}
.an-opt-r.ireversibil .an-opt-k{color:var(--bad)}
.an-opt-r.ireversibil .an-opt-v{color:var(--ink)}
.an-opt-a{padding:11px 14px;border-top:1px solid var(--line-soft);background:#FCFCFD}

/* ==========================================================================
   REAPROVIZIONARE · ÎMPĂRȚIREA STOCULUI (sr-split / sr-mini)
   Atenție la nume: tema definește deja `.sr`, `.sr-k`, `.sr-t`, `.sr-s` și
   `.sr-empty` pentru rezultatele de căutare. Modulul acesta folosește DOAR
   nume compuse (`sr-split`, `sr-p-*`, `sr-f-*`, `sr-l-*`, `sr-pg-*`,
   `sr-sim-*`), deci nu se suprapune cu ele.
   ========================================================================== */
.sr-split-b{display:flex;height:26px;border-radius:var(--r-s);overflow:hidden;
  background:var(--line-soft)}
.sr-split-b>i{display:block;height:100%;transition:width .4s}
.sr-split-b>i.just{background:var(--ok)}
.sr-split-b>i.mort{background:var(--bad)}
.sr-split-l{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:10px;margin-top:11px}
.sr-sl{min-width:0;display:flex;flex-direction:column;gap:1px;padding:9px 12px;
  border-radius:var(--r-s);border:1px solid var(--line);background:#FCFCFD}
.sr-sl b{font-size:15px;font-weight:800;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.25}
.sr-sl em{font-style:normal;font-size:10.5px;color:var(--muted);line-height:1.45}
.sr-sl.just{border-color:#BFE3CC;background:var(--ok-soft)}
.sr-sl.just b{color:var(--ok)}
.sr-sl.mort{border-color:#F1C4C4;background:var(--bad-soft)}
.sr-sl.mort b{color:var(--bad)}
/* varianta mică, pentru celulele de tabel */
.sr-mini{display:flex;height:7px;min-width:64px;border-radius:999px;overflow:hidden;
  background:var(--line-soft)}
.sr-mini>i{display:block;height:100%}
.sr-mini>i.just{background:var(--ok)}
.sr-mini>i.mort{background:var(--bad)}

/* --- Propuneri de comandă (sr-prop / sr-pg) ---------------------------- */
.sr-prop-list{display:flex;flex-direction:column;gap:12px}
.sr-prop-grup{border:1px solid var(--line);border-radius:var(--r-s);
  background:var(--card);overflow:hidden}
.sr-pg-h{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;
  padding:11px 14px;background:#FCFCFD;border-bottom:1px solid var(--line-soft)}
.sr-pg-t{flex:1 1 220px;min-width:0}
.sr-pg-t b{display:block;font-size:12px;font-weight:750;letter-spacing:-.01em;
  line-height:1.35}
.sr-pg-v{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;gap:1px}
.sr-pg-lei{font-size:16px;font-weight:800;letter-spacing:-.025em;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.2}
.sr-pg-n{font-size:10px;color:var(--faint);font-variant-numeric:tabular-nums}
.sr-pg-b{padding:2px 14px 8px}
/* o linie de propunere: patru zone, care se stivuiesc pe mobil */
.sr-prop{display:grid;
  grid-template-columns:minmax(120px,auto) minmax(0,1fr) minmax(88px,auto) minmax(96px,auto);
  gap:6px 12px;align-items:center;padding:10px 0;
  border-bottom:1px solid var(--line-soft);border-left:2.5px solid transparent;
  padding-left:9px;margin-left:-9px}
.sr-prop:last-child{border-bottom:0}
.sr-prop.critic{border-left-color:var(--bad);background:var(--bad-soft)}
.sr-prop.urgent{border-left-color:var(--warn)}
.sr-prop.atentie{border-left-color:var(--gold)}
.sr-prop.ok{border-left-color:var(--ok)}
.sr-p-u{min-width:0}
.sr-p-m{min-width:0}
.sr-p-t{font-size:11.5px;font-weight:700;line-height:1.35;color:var(--ink)}
.sr-p-t .sub-l{display:block;font-weight:400}
.sr-p-d{font-size:10px;color:var(--muted);line-height:1.45;margin-top:2px;
  font-variant-numeric:tabular-nums}
.sr-p-q{text-align:right;display:flex;flex-direction:column;gap:0;min-width:0}
.sr-p-q b{font-size:13px;font-weight:800;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;line-height:1.25}
.sr-p-q span{font-size:9px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;
  color:var(--faint)}
.sr-p-v{text-align:right;font-size:12px;font-weight:750;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.35;white-space:nowrap}
.sr-p-v .sub-l{display:block;font-weight:400;white-space:normal}

/* --- Formula (sr-formula / sr-f-*) ------------------------------------- */
.sr-formula{border:1px solid var(--line);border-radius:var(--r-s);background:#FCFCFD;
  padding:14px 15px}
.sr-f-t{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);margin-bottom:8px}
.sr-f-t~.sr-f-t{margin-top:16px}
.sr-f-eq,.sr-eoq-f{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  font-size:14px;font-weight:600;color:var(--brand-dark);text-align:center;
  line-height:1.7;padding:12px 14px;border-radius:var(--r-s);background:var(--card);
  border:1px solid var(--brand-line);overflow-x:auto;max-width:100%;
  white-space:nowrap;-webkit-overflow-scrolling:touch}
/* indicii nu au voie să devină ilizibili la 14px */
.sr-f-eq sub,.sr-eoq-f sub{font-size:.72em;line-height:0;vertical-align:-.25em}
.sr-f-leg{margin-top:14px;border-top:1px solid var(--line);padding-top:4px}
.sr-f-r{display:grid;grid-template-columns:auto minmax(72px,auto) 1fr;gap:4px 12px;
  align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line-soft)}
.sr-f-r:last-child{border-bottom:0}
.sr-f-k{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:12px;
  font-weight:700;color:var(--brand);background:var(--brand-soft);
  border:1px solid var(--brand-line);border-radius:6px;padding:2px 8px;
  min-width:34px;text-align:center;white-space:nowrap}
.sr-f-v{font-size:12px;font-weight:750;color:var(--ink);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.sr-f-x{font-size:11.5px;color:var(--muted);line-height:1.55;min-width:0}
.sr-f-n{font-size:11px;color:var(--faint);line-height:1.55;margin-top:12px;
  padding-top:11px;border-top:1px solid var(--line)}
/* bara „ce dimensionează stocul de siguranță", în celule de tabel */
.sr-desc{display:flex;height:7px;min-width:64px;border-radius:999px;overflow:hidden;
  background:var(--line-soft)}
.sr-desc>i{display:block;height:100%}
.sr-desc>i.c{background:var(--accent)}
.sr-desc>i.l{background:var(--warn)}

/* --- Lanțul de derivare a consumului (sr-lant) ------------------------- */
.sr-lant{display:flex;flex-direction:column;gap:0}
.sr-l-r{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(96px,auto);
  gap:3px 12px;align-items:baseline;padding:10px 0;
  border-bottom:1px solid var(--line-soft)}
.sr-l-r:last-child{border-bottom:0}
.sr-l-n{grid-row:span 2;align-self:center;width:24px;height:24px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;
  font-variant-numeric:tabular-nums;background:var(--line-soft);color:var(--muted)}
.sr-l-k{font-size:11.5px;font-weight:650;color:var(--ink-soft);line-height:1.4;
  min-width:0}
.sr-l-v{text-align:right;font-size:13px;font-weight:800;letter-spacing:-.02em;
  color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.sr-l-x{grid-column:2/-1;font-size:10.5px;color:var(--faint);line-height:1.5}
.sr-l-r.tot{background:var(--brand-soft);border-radius:var(--r-s);border-bottom:0;
  padding:11px;margin-top:4px}
.sr-l-r.tot .sr-l-n{background:var(--brand);color:#fff}
.sr-l-r.tot .sr-l-k{color:var(--brand-dark);font-weight:750}
.sr-l-r.tot .sr-l-v{color:var(--brand-dark);font-size:15px}
/* curba de consum pe fază, în celule de tabel */
.sr-curba{display:block;height:7px;min-width:56px;border-radius:999px;
  background:var(--line-soft);overflow:hidden}
.sr-curba>i{display:block;height:100%;border-radius:999px;background:var(--brand)}
.sr-curba>i.warn{background:var(--warn)} .sr-curba>i.bad{background:var(--bad)}

/* --- Simulare nivel de serviciu (sr-sim) ------------------------------- */
.sr-sim{display:flex;flex-direction:column;gap:2px}
.sr-sim-r{display:grid;
  grid-template-columns:minmax(80px,auto) minmax(0,1fr) minmax(112px,auto) minmax(150px,auto) auto;
  gap:6px 12px;align-items:center;padding:11px 9px;border-radius:var(--r-s);
  border:1px solid transparent}
.sr-sim-r.on{border-color:var(--brand);background:var(--brand-soft)}
.sr-sim-n{font-size:15px;font-weight:800;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.2}
.sr-sim-n em{display:block;font-style:normal;font-size:9.5px;font-weight:600;
  color:var(--faint);letter-spacing:0}
.sr-sim-r.on .sr-sim-n{color:var(--brand-dark)}
.sr-sim-b{height:9px;min-width:0;border-radius:999px;background:var(--line-soft);
  overflow:hidden}
.sr-sim-b>i{display:block;height:100%;border-radius:999px;background:var(--brand);
  opacity:.8}
.sr-sim-r.on .sr-sim-b>i{opacity:1}
.sr-sim-v{text-align:right;min-width:0}
.sr-sim-v b{display:block;font-size:12.5px;font-weight:800;
  font-variant-numeric:tabular-nums;line-height:1.25}
.sr-sim-v em{font-style:normal;font-size:9.5px;color:var(--faint)}
.sr-sim-d{font-size:11px;color:var(--ink-soft);line-height:1.35;min-width:0;
  font-variant-numeric:tabular-nums}
.sr-sim-d em{display:block;font-style:normal;font-size:9.5px;color:var(--faint)}
.sr-sim-a{text-align:right}

/* ==========================================================================
   PERSONAL · BENZILE DE SALARIZARE (hr-band*)
   Widget de tip grafic: pe o scară comună tuturor familiilor de posturi se
   desenează intervalul min–max al benzii, medianul și câte un punct pentru
   fiecare salariu real. Scara comună e ceea ce face benzile comparabile
   între ele, deci pista trebuie să aibă exact aceeași lățime pe toate
   rândurile — de aici `position:relative` pe .hr-band-t și procente inline
   pe copii.
   ========================================================================== */
.hr-bands{display:flex;flex-direction:column;gap:11px}
.hr-bandrow{border:1px solid var(--line);border-left:3px solid var(--brand);
  border-radius:var(--r-s);background:var(--card);padding:12px 15px}
.hr-bandrow.ilegal{border-left-color:var(--bad);background:#FFFCFC}
.hr-bandrow-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:2px}
.hr-bandrow-h b{font-size:12.5px;font-weight:750;letter-spacing:-.01em}
.hr-bandrow-x{font-size:10.5px;color:var(--muted);line-height:1.45;margin-bottom:12px}
/* rândul de cifre de sub bandă */
.hr-bandrow-v{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));
  gap:9px;margin-top:14px;padding-top:11px;border-top:1px solid var(--line-soft)}
.hr-bandrow-v>span{display:flex;flex-direction:column;gap:0;min-width:0;
  font-size:9.5px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;
  color:var(--faint)}
.hr-bandrow-v b{font-size:13px;font-weight:800;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:-.02em}

/* --- graficul propriu-zis --- */
.hr-band{padding:14px 0 6px}
.hr-band-t{position:relative;height:12px;border-radius:999px;
  background:var(--line-soft);min-width:0}
/* intervalul min–max al benzii */
.hr-band-r{position:absolute;top:0;bottom:0;border-radius:999px;
  background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand-line)}
.hr-bandrow.ilegal .hr-band-r{background:var(--bad-soft);
  box-shadow:inset 0 0 0 1px #F1C4C4}
/* medianul benzii */
.hr-band-m{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--brand);
  border-radius:1px;transform:translateX(-1px);z-index:2}
/* minimul legal din construcții, pe aceeași scară */
.hr-band-legal{position:absolute;top:-7px;bottom:-7px;width:0;z-index:3;
  border-left:1.5px dashed var(--bad)}
.hr-band-legal::after{content:"minim legal";position:absolute;bottom:-13px;left:3px;
  font-size:8px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  color:var(--bad);white-space:nowrap}
/* fiecare punct = un salariu real */
.hr-band-p{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;
  transform:translate(-50%,-50%);z-index:4;
  background:var(--brand);border:1.5px solid #fff;
  box-shadow:0 0 0 .5px rgba(16,17,20,.25)}
.hr-band-p.out{background:var(--warn)}   /* sub minimul benzii */
.hr-band-p.over{background:var(--accent)} /* peste maximul benzii */
.hr-band-p.ilegal{background:var(--bad);width:11px;height:11px}

/* ==========================================================================
   PERSONAL · CICLU, DEFINIȚII DE INDICATORI, ÎNTREBĂRI AI (hr-*)
   ========================================================================== */
.hr-ciclu{border:1px solid var(--line);border-left:3px solid var(--brand);
  border-radius:var(--r-s);background:#FCFCFD;padding:12px 15px;margin-bottom:14px}
.hr-ciclu.ok{border-left-color:var(--ok)}
.hr-ciclu.warn{border-left-color:var(--warn)}
.hr-ciclu.bad{border-left-color:var(--bad)}
.hr-ciclu-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hr-ciclu-t b{font-size:13px;font-weight:750;letter-spacing:-.01em}
.hr-ciclu-x{font-size:11.5px;color:var(--muted);line-height:1.55;margin-top:6px}

.hr-def-list{display:flex;flex-direction:column;gap:11px}
.hr-def{border:1px solid var(--line);border-radius:var(--r-s);background:var(--card);
  padding:12px 15px}
.hr-def-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:12px;color:var(--ink-soft);margin-bottom:9px}
.hr-def-h b{font-size:12.5px;font-weight:800;letter-spacing:.02em;color:var(--brand);
  background:var(--brand-soft);border:1px solid var(--brand-line);padding:1px 8px;
  border-radius:6px}
.hr-def-f,.hr-def-s,.hr-def-p,.hr-def-r{font-size:11.5px;color:var(--muted);
  line-height:1.55;padding:6px 0;border-top:1px solid var(--line-soft);
  font-variant-numeric:tabular-nums}
.hr-def-f b,.hr-def-s b,.hr-def-p b,.hr-def-r b{color:var(--ink-soft);font-weight:700}
.hr-def-f{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:11px;
  border-top:0}
.hr-def-f b{font-family:'Inter',-apple-system,sans-serif}

/* întrebări și răspunsuri ale agentului */
.hr-qa,.ju-qa{display:flex;flex-direction:column;gap:8px}
.hr-qa-i,.ju-qa-i{border:1px solid var(--line);border-radius:var(--r-s);
  background:var(--card);overflow:hidden}
.hr-qa-i.on,.ju-qa-i.on{border-color:#D9E7F8;box-shadow:var(--sh)}
.hr-qa-q,.ju-qa-q{display:block;width:100%;text-align:left;font-family:inherit;
  font-size:12.5px;font-weight:650;color:var(--ink-soft);cursor:pointer;
  padding:11px 14px;border:0;background:#FCFCFD;transition:background .15s,color .15s}
.hr-qa-q:hover,.ju-qa-q:hover{background:var(--accent-soft);color:var(--accent)}
.hr-qa-i.on .hr-qa-q,.ju-qa-i.on .ju-qa-q{background:var(--accent-soft);
  color:var(--accent);font-weight:750}
.hr-qa-a,.ju-qa-a{padding:13px 15px;font-size:12px;line-height:1.62;
  color:var(--ink-soft);border-top:1px solid #E6EFFA;
  background:linear-gradient(180deg,#F7FAFE,#fff)}
.hr-qa-a p+p,.ju-qa-a p+p{margin-top:8px}
.hr-qa-a ul,.ju-qa-a ul{margin:8px 0 0;padding-left:18px}
.hr-qa-a li,.ju-qa-a li{margin-bottom:5px;line-height:1.55}

/* ==========================================================================
   JURIDIC · DOSARE, CEASUL DE TERMEN, CLAUZE (ju-*)
   ========================================================================== */
/* ceasul de termen: cât din termenul contractual s-a consumat deja */
.ju-ceas{display:flex;align-items:center;gap:9px;min-width:0}
.ju-ceas-t{position:relative;flex:1 1 auto;min-width:56px;height:7px;
  border-radius:999px;background:var(--line-soft);overflow:hidden}
.ju-ceas-f{display:block;height:100%;border-radius:999px;background:var(--ok);
  transition:width .4s}
.ju-ceas.warn .ju-ceas-f{background:var(--warn)}
.ju-ceas.bad .ju-ceas-f{background:var(--bad)}
.ju-ceas-v{flex:0 0 auto;font-size:10.5px;font-weight:750;color:var(--ink-soft);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.ju-ceas.warn .ju-ceas-v{color:var(--warn)}
.ju-ceas.bad .ju-ceas-v{color:var(--bad)}

/* revendicări urgente — cardul de termen care curge */
.ju-urgente{display:flex;flex-direction:column;gap:11px}
.ju-urgent{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:12px 15px}
.ju-urgent.critic{border-left-color:var(--bad);background:#FFFCFC}
.ju-urgent.ridicat{border-left-color:var(--warn)}
.ju-urgent.mediu{border-left-color:var(--gold)}
.ju-urgent.mic{border-left-color:var(--ok)}
.ju-urgent-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  font-size:12px;color:var(--ink-soft);line-height:1.4}
.ju-urgent-h b{font-size:12.5px;font-weight:800;letter-spacing:.01em;color:var(--ink);
  font-variant-numeric:tabular-nums}
.ju-urgent-p{font-size:10.5px;color:var(--faint);line-height:1.45;margin-top:2px}
.ju-urgent-x{font-size:11.5px;color:var(--muted);line-height:1.55;margin-top:8px}
.ju-urgent-c{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line-soft)}
.ju-urgent-l{flex:1 1 200px;min-width:0;font-size:11px;color:var(--muted);
  line-height:1.45;font-variant-numeric:tabular-nums}
.ju-urgent-l b{color:var(--ink-soft);font-weight:700}
.ju-urgent-c .ju-ceas{flex:1 1 180px}
.ju-urgent-v{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));
  gap:9px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft)}
.ju-urgent-v>span{display:flex;flex-direction:column;gap:0;min-width:0;
  font-size:9.5px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;
  color:var(--faint)}
.ju-urgent-v b{font-size:14px;font-weight:800;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums;text-transform:none}

/* contracte și clauzele lor */
.ju-ctr-list{display:flex;flex-direction:column;gap:11px}
.ju-ctr{border:1px solid var(--line);border-radius:var(--r-s);background:var(--card);
  overflow:hidden}
.ju-ctr-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 14px;
  background:#FCFCFD;border-bottom:1px solid var(--line-soft);font-size:12px;
  color:var(--ink-soft)}
.ju-ctr-h b{font-size:12.5px;font-weight:800;letter-spacing:.01em;color:var(--ink);
  font-variant-numeric:tabular-nums}
.ju-ctr-b{padding:4px 14px 12px}
.ju-clauza{display:grid;grid-template-columns:minmax(120px,26%) 1fr;gap:3px 12px;
  padding:9px 0;border-bottom:1px solid var(--line-soft);align-items:baseline;
  border-left:2.5px solid transparent;padding-left:9px;margin-left:-9px}
.ju-clauza:last-child{border-bottom:0}
.ju-clauza.ok{border-left-color:var(--ok)}
.ju-clauza.warn{border-left-color:var(--warn)}
.ju-clauza.bad{border-left-color:var(--bad)}
.ju-clauza-t{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:var(--muted);line-height:1.45}
.ju-clauza-x{font-size:11.5px;color:var(--ink-soft);line-height:1.55;min-width:0}
.ju-clauza-e{grid-column:2;font-size:10.5px;color:var(--faint);line-height:1.5;
  font-variant-numeric:tabular-nums}
.ju-clauza.bad .ju-clauza-e{color:var(--bad)}

/* ==========================================================================
   ȘANTIER · JURNALUL DE ȘANTIER (jrn-*) — bg-field.js
   Rânduri cronologice: marcaj de dată la stânga, conținutul evenimentului
   la dreapta.
   ========================================================================== */
.jrn-list{display:flex;flex-direction:column;gap:10px}
.jrn{display:grid;grid-template-columns:minmax(78px,auto) 1fr;gap:12px;
  border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:11px 14px}
.jrn.ok{border-left-color:var(--ok)}
.jrn.warn{border-left-color:var(--warn)}
.jrn.bad{border-left-color:var(--bad)}
.jrn-t{display:flex;flex-direction:column;gap:0;min-width:0;
  font-variant-numeric:tabular-nums}
.jrn-t b{font-size:11.5px;font-weight:800;letter-spacing:-.01em;line-height:1.3;
  white-space:nowrap}
.jrn-t span{font-size:10px;color:var(--faint);line-height:1.35}
.jrn-b{min-width:0}
.jrn-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:5px}
.jrn-h b{font-size:12px;font-weight:750;letter-spacing:-.01em;line-height:1.4}
.jrn-x{font-size:11.5px;color:var(--muted);line-height:1.6}
.jrn-f{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:8px;padding-top:8px;
  border-top:1px solid var(--line-soft);font-size:10.5px;color:var(--faint);
  line-height:1.5}
.jrn-f b{color:var(--ink-soft);font-weight:700}

/* regula de validare a raportului zilnic */
.valid-rule{font-size:11.5px;line-height:1.6;color:var(--ink-soft);
  padding:10px 13px;border-radius:var(--r-s);border:1px solid var(--line);
  border-left:3px solid var(--line);background:#FCFCFD;margin-top:10px}
.valid-rule.ok{border-left-color:var(--ok);background:var(--ok-soft)}
.valid-rule.warn{border-left-color:var(--warn);background:var(--warn-soft)}
.valid-rule.bad{border-left-color:var(--bad);background:var(--bad-soft)}
.valid-rule b{font-weight:750;color:var(--ink)}

/* ==========================================================================
   ȘANTIER · FRONTURI BLOCATE (frt-*) — bg-field.js
   ========================================================================== */
.frt-list{display:flex;flex-direction:column;gap:11px}
.frt{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:12px 15px}
.frt.ok{border-left-color:var(--ok)}
.frt.warn{border-left-color:var(--warn)}
.frt.bad{border-left-color:var(--bad)}
.frt-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.frt-h b{font-size:12.5px;font-weight:750;letter-spacing:-.01em;line-height:1.4}
.frt-m{margin-top:10px}
.frt-c{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:9px;
  padding-top:9px;border-top:1px solid var(--line-soft)}
.frt-c b{color:var(--ink-soft);font-weight:700}
.frt-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

/* ==========================================================================
   SUBCONTRACTORI · RISC ȘI COMPARAȚIE (rsk-* / cmp-*) — bg-subc.js
   ========================================================================== */
.rsk-list{display:flex;flex-direction:column;gap:11px}
.rsk{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:12px 15px}
.rsk.ok{border-left-color:var(--ok)}
.rsk.warn{border-left-color:var(--warn)}
.rsk.bad{border-left-color:var(--bad)}
.rsk-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rsk-h b{font-size:12.5px;font-weight:750;letter-spacing:-.01em;line-height:1.4}
.rsk-m{margin-top:10px}
.rsk-b{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:9px}
.rsk-b b{color:var(--ink-soft);font-weight:700}
.rsk-p{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;padding-top:9px;
  border-top:1px solid var(--line-soft)}

/* explicația clasamentului dintr-o comparație */
.cmp-exp{display:flex;flex-direction:column;gap:0}
.cmp-r{display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:start;
  padding:9px 0;border-bottom:1px solid var(--line-soft)}
.cmp-r:last-child{border-bottom:0}
.cmp-n{flex:0 0 auto;width:23px;height:23px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:11px;font-weight:800;
  font-variant-numeric:tabular-nums;background:var(--line-soft);color:var(--muted)}
.cmp-r.top .cmp-n{background:var(--brand);color:#fff}
.cmp-t{min-width:0;font-size:11.5px;color:var(--muted);line-height:1.6}
.cmp-t b{color:var(--ink);font-weight:750}
.cmp-r.top .cmp-t{color:var(--ink-soft)}

/* ==========================================================================
   ACHIZIȚII · LIVRĂRI PE SĂPTĂMÂNI (lvr-*) — bg-proc.js
   ========================================================================== */
.lvr-week{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:12px}
.lvr-w{min-width:0;border:1px solid var(--line);border-top:2.5px solid var(--line);
  border-radius:var(--r-s);background:var(--card);overflow:hidden}
.lvr-w.ok{border-top-color:var(--ok)}
.lvr-w.warn{border-top-color:var(--warn)}
.lvr-w.bad{border-top-color:var(--bad)}
.lvr-w-h{padding:10px 13px;background:#FCFCFD;border-bottom:1px solid var(--line-soft);
  display:flex;flex-direction:column;gap:1px}
.lvr-w-h b{font-size:12px;font-weight:750;letter-spacing:-.01em}
.lvr-w-h span{font-size:10px;color:var(--muted);line-height:1.4;
  font-variant-numeric:tabular-nums}
.lvr-w-b{padding:4px 13px 10px}
.lvr-i{font-size:11px;line-height:1.55;color:var(--ink-soft);padding:8px 0;
  border-bottom:1px solid var(--line-soft);border-left:2.5px solid transparent;
  padding-left:9px;margin-left:-9px}
.lvr-i:last-child{border-bottom:0}
.lvr-i b{font-weight:750;color:var(--ink);font-variant-numeric:tabular-nums}
.lvr-i.warn{border-left-color:var(--warn)}
.lvr-i.bad{border-left-color:var(--bad)}
.lvr-i .pill{margin-top:4px}

/* scara de maturitate a integrării unui furnizor */
.ladder{display:inline-flex;align-items:center;gap:3px;
  font-variant-numeric:tabular-nums}
.ladder>b{margin-left:5px;font-size:10.5px;font-weight:750;color:var(--muted)}
.ld-step{display:block;width:11px;height:7px;border-radius:2px;
  background:var(--line-soft);box-shadow:inset 0 0 0 1px var(--line)}
.ld-step.on{background:var(--brand);box-shadow:none}

/* ==========================================================================
   OFERTARE · DEVIZUL PE CAPITOLE (of-dv-*) — bg-offer.js
   ========================================================================== */
.of-dv-cap{border:1px solid var(--line);border-radius:var(--r-s);background:var(--card);
  margin-bottom:12px;overflow:hidden}
.of-dv-cap:last-child{margin-bottom:0}
.of-dv-cap-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:11px 14px;background:var(--brand-soft);
  border-bottom:1px solid var(--brand-line)}
.of-dv-cap-h b{flex:1 1 auto;min-width:0;font-size:12.5px;font-weight:750;
  letter-spacing:-.01em;color:var(--brand-dark)}
.of-dv-cap-h span{flex:0 0 auto;font-size:11px;font-weight:700;color:var(--brand);
  font-variant-numeric:tabular-nums}
.of-dv-sub{border-bottom:1px solid var(--line-soft)}
.of-dv-sub:last-child{border-bottom:0}
.of-dv-sub-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:9px 14px;background:#FCFCFD;border-bottom:1px solid var(--line-soft)}
.of-dv-sub-h b{flex:1 1 auto;min-width:0;font-size:11.5px;font-weight:700;
  color:var(--ink-soft)}
.of-dv-sub-h span{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--muted);
  font-variant-numeric:tabular-nums}
.of-dv-tot{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  flex-wrap:wrap;padding:12px 14px;background:var(--brand-deep);color:#fff;
  font-size:13px;font-weight:750;font-variant-numeric:tabular-nums}
.of-dv-tot b{font-size:16px;font-weight:800;letter-spacing:-.02em}

/* ==========================================================================
   DOCUMENTE · CIRCUIT DE SEMNARE ȘI LANȚ DE CONFORMITATE (do-* / ra-*)
   ========================================================================== */
/* lanțul de verigi (document → efect) */
.do-lant{display:flex;flex-direction:column;gap:0}
.do-veriga{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:11px 14px}
.do-veriga.blocat{border-left-color:var(--warn);background:var(--warn-soft)}
.do-veriga.rupt{border-left-color:var(--bad);background:var(--bad-soft)}
.do-veriga-t{font-size:12px;font-weight:750;letter-spacing:-.01em;line-height:1.4}
.do-veriga-x{font-size:11px;color:var(--muted);line-height:1.55;margin-top:3px}
.do-veriga-v{font-size:14px;font-weight:800;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums;margin-top:5px}
.do-veriga.rupt .do-veriga-v{color:var(--bad)}
/* legătura verticală dintre verigi */
.do-leg{display:block;width:1.5px;height:16px;margin-left:16px;
  background:var(--line);border-radius:1px}
.do-leg.blocat{background:var(--bad)}

/* circuitul de semnare */
.do-circ{display:flex;flex-wrap:wrap;gap:8px}
.do-sem{flex:1 1 158px;min-width:0;display:flex;flex-direction:column;gap:1px;
  padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-s);
  background:#FCFCFD;position:relative}
.do-sem.semnat{border-color:#BFE3CC;background:var(--ok-soft)}
.do-sem.asteptare{border-color:#F0D6AC;background:var(--warn-soft)}
.do-sem.blocat,.do-sem.respins{border-color:#F1C4C4;background:var(--bad-soft)}
.do-sem.neinceput{opacity:.72}
.do-sem-n{position:absolute;top:8px;right:10px;font-size:9.5px;font-weight:800;
  color:var(--faint);font-variant-numeric:tabular-nums}
.do-sem-r{font-size:11.5px;font-weight:700;line-height:1.35;padding-right:16px}
.do-sem-s{font-size:10px;color:var(--muted);line-height:1.4;
  font-variant-numeric:tabular-nums}
.do-sem.semnat .do-sem-s{color:var(--ok)}
.do-sem.asteptare .do-sem-s{color:var(--warn)}
.do-sem.blocat .do-sem-s,.do-sem.respins .do-sem-s{color:var(--bad)}
.do-sem-e{margin-top:3px;font-size:8.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent)}

/* lista de circuite în curs */
.do-circ-list{display:flex;flex-direction:column;gap:10px}
.do-circ-i{border:1px solid var(--line);border-left:3px solid var(--line);
  border-radius:var(--r-s);background:var(--card);padding:11px 14px}
.do-circ-i.respins{border-left-color:var(--bad)}
.do-circ-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.do-circ-n{flex:1 1 auto;min-width:0;font-size:11.5px;color:var(--muted);
  line-height:1.4}
.do-circ-n b{font-size:12px;font-weight:800;color:var(--ink);letter-spacing:.01em;
  font-variant-numeric:tabular-nums}
.do-circ-m{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:6px;font-size:10.5px;
  color:var(--faint);font-variant-numeric:tabular-nums}
.do-circ-b{font-size:11px;line-height:1.55;color:var(--ink-soft);margin-top:8px;
  padding:8px 11px;border-radius:var(--r-s);background:var(--warn-soft);
  border:1px solid #F0D6AC}
.do-circ-b.extern{background:var(--accent-soft);border-color:#CFE0F5}

/* selectorul de câmpuri pentru rapoarte */
.ra-campuri{display:flex;flex-wrap:wrap;gap:6px}
.ra-camp{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;
  border:1px solid var(--line);border-radius:999px;background:#fff;
  font-size:11px;color:var(--muted)}
.ra-camp.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand);
  font-weight:650}
.ra-camp-b{width:13px;height:13px;border-radius:4px;display:flex;align-items:center;
  justify-content:center;font-size:9px;font-weight:800;color:#fff;
  background:var(--line);flex:0 0 auto}
.ra-camp.on .ra-camp-b{background:var(--brand)}
.ra-camp-n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ==========================================================================
   MODIFICATOR DE CARD — `wide`
   Emis de mai multe module pentru cardurile care conțin o componentă lată
   (grafic, matrice, cronologie). Nu lățește pagina: doar anulează padding-ul
   lateral al corpului, ca scrollerul din interior să folosească toată
   lățimea disponibilă, și se asigură că nimic nu poate depăși cardul.
   ========================================================================== */
.card.wide{max-width:100%;overflow:hidden}
.card.wide>.c-b{padding-left:0;padding-right:0;min-width:0}
.card.wide>.c-b>*{padding-left:15px;padding-right:15px}
/* elementele care își fac singure scroll primesc padding-ul înăuntru, ca
   marginea să rămână vizibilă la capătul derulării */
.card.wide>.c-b>.tbl-scroll,
.card.wide>.c-b>.pl-gantt,
.card.wide>.c-b>.pl-cap-grid,
.card.wide>.c-b>.lo-tl,
.card.wide>.c-b>.lo-st-grid{padding-left:0;padding-right:0}
.card.wide>.c-b>.pl-gantt>.pl-g-lgd{padding-left:15px;padding-right:15px}

/* ==========================================================================
   RESPONSIVE — VALUL 2
   Regula de bază: nicio componentă nu are voie să lățească pagina. Cele late
   (Gantt, capacitate, matrice, cronologii, benzi) derulează în containerul
   propriu; cele cu mai multe coloane se pliază.
   ========================================================================== */
@media (max-width:960px){
  .pl-cp-imp{grid-template-columns:1fr}
  .pl-sc-bal{grid-template-columns:1fr}
  .an-tor-r{grid-template-columns:minmax(104px,30%) minmax(0,1fr) minmax(96px,auto)}
  .an-expl-r{grid-template-columns:minmax(0,1fr) minmax(64px,90px) auto}
  .sr-sim-r{grid-template-columns:minmax(66px,auto) minmax(0,1fr) minmax(96px,auto);
    row-gap:4px}
  .sr-sim-d{grid-column:1/-1;padding-left:0}
  .sr-sim-a{grid-column:1/-1;text-align:left}
  .lvr-week{grid-template-columns:1fr}
}

@media (max-width:720px){
  /* --- Gantt: etichetă mai îngustă, ancora liniei „azi" se mută odată cu ea --- */
  .pl-g-lbl{width:150px;min-width:150px}
  .pl-g-azi{margin-left:150px}
  .pl-g-inner{min-width:760px}
  .pl-cp-node{width:146px}

  /* --- drum critic / capacitate --- */
  .pl-cap-l{width:132px;min-width:132px}
  .pl-cap-c{width:48px}

  /* --- scenarii și conflicte --- */
  .pl-sc-grid{grid-template-columns:1fr}
  .pl-sc-t{padding-right:0}
  .pl-sc-rec{position:static;align-self:flex-start;margin-bottom:2px}
  .pl-cf-vs{flex-direction:column}
  .pl-cf-vs-x{align-self:flex-start}

  /* --- Cartea Tehnică --- */
  .cq-chain{flex-direction:column}
  .cq-chain-sg{padding:4px 0;justify-content:center;transform:rotate(90deg)}
  .cq-cap-h{flex-wrap:wrap}
  .cq-cap-v{text-align:left;flex-direction:row;align-items:baseline;gap:8px;
    width:100%;order:3}
  .cq-doc{grid-template-columns:auto 1fr}
  .cq-doc-d,.cq-doc-t{grid-column:2;text-align:left}
  .cq-faza{flex-wrap:wrap}

  /* --- logistică --- */
  .lo-tr-flow{flex-direction:column;align-items:stretch}
  .lo-tr-x{flex-direction:row;gap:8px;transform:rotate(90deg);padding:4px 0}

  /* --- analiză --- */
  .an-tipuri{grid-template-columns:1fr}
  .an-tor-r{grid-template-columns:1fr;gap:4px}
  .an-tor-v{text-align:left}
  .an-tor-cap{grid-template-columns:auto 1fr auto;font-size:9px}
  .an-expl-r{grid-template-columns:1fr auto;gap:4px 10px}
  .an-expl-t{grid-column:1/-1;order:3}
  .an-expl-d{order:4}
  .an-out-h{flex-direction:column;gap:8px}
  .an-out-m{text-align:left}
  .an-out-r{grid-template-columns:1fr}
  .an-opt-grid{grid-template-columns:1fr}
  .an-opt-r{grid-template-columns:1fr;gap:2px}
  .an-veriga{gap:9px}

  /* --- reaprovizionare --- */
  .sr-split-l{grid-template-columns:1fr}
  .sr-prop{grid-template-columns:1fr 1fr;gap:5px 10px}
  .sr-p-u{grid-column:1/-1}
  .sr-p-m{grid-column:1/-1}
  .sr-p-q,.sr-p-v{text-align:left}
  .sr-f-r{grid-template-columns:auto 1fr}
  .sr-f-x{grid-column:1/-1}
  .sr-f-eq,.sr-eoq-f{font-size:12px;text-align:left}
  .sr-l-r{grid-template-columns:auto 1fr}
  .sr-l-v{grid-column:2;text-align:left}
  .sr-l-x{grid-column:2}
  .sr-sim-r{grid-template-columns:auto 1fr;row-gap:5px}
  .sr-sim-b{grid-column:1/-1;order:5}
  .sr-sim-v{text-align:right}

  /* --- personal --- */
  .hr-bandrow-v{grid-template-columns:repeat(auto-fit,minmax(78px,1fr))}

  /* --- juridic --- */
  .ju-clauza{grid-template-columns:1fr}
  .ju-clauza-e{grid-column:1}
  .ju-urgent-c{flex-direction:column;align-items:stretch;gap:9px}

  /* --- șantier / subcontractori --- */
  .jrn{grid-template-columns:1fr;gap:7px}
  .jrn-t{flex-direction:row;gap:8px;align-items:baseline}
  .cmp-r{gap:9px}

  /* --- cardul lat: pe mobil marginea internă e mai mică --- */
  .card.wide>.c-b>*{padding-left:12px;padding-right:12px}
  .card.wide>.c-b>.pl-gantt>.pl-g-lgd{padding-left:12px;padding-right:12px}
}

/* --- verificat la 390px: nimic nu depășește lățimea ecranului -------------
   Cifrele lungi (sume în lei, procente) și etichetele de grafic se rup pe
   cuvânt, nu lățesc containerul. */
@media (max-width:420px){
  .pl-cp-imp-v,.cq-chain-v,.an-v-c,.an-out-v,.an-opt-lei,.sr-pg-lei,.sr-sl b{
    font-size:16px}
  .pl-g-lbl{width:132px;min-width:132px}
  .pl-g-azi{margin-left:132px}
  .hr-band-legal::after{display:none}
}

/* ==========================================================================
   MODIFICATORI RĂMAȘI, EMIȘI CONDIȚIONAT DE MODULE
   ========================================================================== */
/* containerul împărțirii de stoc (bg-reorder.js) */
.sr-split{min-width:0}

/* celulă de stoc semnalată ca problemă — conturul, nu fundalul, ca să nu se
   piardă intensitatea (.i0…-.i4) care codifică deja valoarea */
.lo-st-cell.risc{box-shadow:inset 0 0 0 1.5px var(--bad);color:var(--bad)}
.lo-st-cell.risc b{color:var(--bad)}

/* front de lucru deja predat — se stinge, rămâne lizibil */
.frt.predat{border-left-color:var(--ok);opacity:.8}
.frt.predat .frt-h b{color:var(--muted)}

/* `v-` fără sufix: tonul lipsește (valoare neutră). Există ca să nu rămână o
   clasă nedefinită în DOM; nu schimbă nimic vizual, moștenește culoarea. */
.v-{color:inherit}

/* ==========================================================================
   MODIFICATORI FINALI — clase găsite la auditul de acoperire
   ========================================================================== */
/* Front de lucru predat: se retrage vizual, nu mai cere atenție. */
.frt.predat{opacity:.62;border-left-color:var(--ok)}
.frt.predat .frt-h{color:var(--muted)}

/* Marcaj de risc pe celulă/pastilă (juridic, logistică). */
.risc,.lo-st-cell.risc{color:var(--bad);font-weight:700}
.ju-urgent.risc{background:var(--bad-soft);color:var(--bad)}

/* Coloană de despărțire în simulările Smart Reorder. */
.sr-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;min-width:0}

/* ==========================================================================
   CONTAINMENT — corecții găsite la auditul de overflow pe 420px
   Componentele de mai jos aveau un copil care nu se putea rupe și împingea
   pagina în lateral. Regula: valoarea se rupe, containerul nu se lățește.
   ========================================================================== */
.sig{min-width:0}
.sig-v{min-width:0;overflow-wrap:anywhere;text-align:right}
.sig-k{overflow-wrap:anywhere}

/* Liste de acțiuni/semnale din command centers */
.act-list,.dec-list,.cc-list{min-width:0}
.act,.dec,.cc{min-width:0}
.act-t,.act-d,.dec-t,.dec-c{overflow-wrap:anywhere}

/* Corpul cardului nu are voie să fie împins de un copil rigid. */
.c-b{min-width:0}

@media (max-width:720px){
  /* Sub 720px valoarea trece pe rândul ei: la lățimi mici, o coloană „auto"
     alături de text lung produce inevitabil depășire. */
  .sig{grid-template-columns:1fr}
  .sig-v{text-align:left}
}

/* Lista cheie-valoare într-un card îngust (ex. blocul de impact din drumul
   critic): la sub ~340px de lățime, două coloane rup eticheta pe silabe.
   Trecem pe un singur rând, fără să atingem primitiva `.dl` globală. */
@container (max-width: 340px){
  .dl{grid-template-columns:1fr}
  .dl-v{text-align:left;padding-top:0}
  .dl-k{border-bottom:0;padding-bottom:0}
}
.pl-cp-imp-c,.cc,.det,.col{container-type:inline-size}
