/* admin/dashboards/_styles */
.dashboards-admin .wdg-ops { display:flex; gap:4px; justify-content:flex-end; }
.dashboards-admin .wdg-op { display:inline; margin:0; }
.dashboards-admin .wdg-available__zone { display:block; font-size:10px; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color:var(--sophia-text-muted);
  padding-top:12px; border-bottom:0; }
.dashboards-admin .ln .name { display:block; }
.dashboards-admin .ln .name, .dashboards-admin .side-list .t { color:var(--sophia-text); text-decoration:none; }
.dashboards-admin .ln .name:hover, .dashboards-admin .side-list .t:hover { color:var(--sophia-accent); text-decoration:underline; }
.dashboards-admin .dash-vis__mode { display:flex; align-items:center; gap:8px; margin:0 0 10px;
  font-size:12px; color:var(--sophia-text-muted); }
.dashboards-admin .dash-vis__chips { display:flex; flex-wrap:wrap; gap:6px;
  max-height:132px; overflow:auto; }
.dashboards-admin .dash-vis__hint { margin:8px 0 10px; font-size:11px;
  color:var(--sophia-text-muted); }
.dashboards-admin .dash-vis__pick { max-height:300px; overflow:auto;
  border:1px solid var(--sophia-line); border-radius:6px; padding:8px 10px; }
.dashboards-admin .dash-vis__group { font-size:10px; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color:var(--sophia-text-muted);
  padding:10px 0 4px; }
.dashboards-admin .dash-vis__pick ul { list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:2px 14px; }
.dashboards-admin .dash-vis__pick li { display:flex; align-items:center; gap:7px; min-width:0; }
.dashboards-admin .dash-vis__pick label { margin:0; font-size:12px; font-weight:400;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer; }
/* admin/exchange_rates/_styles */
.exchange-rates .xr-sec { font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--sophia-text-muted); margin:0 0 8px; }
.exchange-rates .ln + .xr-sec { margin-top:22px; padding-top:16px; border-top:1px solid var(--sophia-border); }
.exchange-rates .xr-hint { font-size:12px; color:var(--sophia-text-muted); margin:0 0 14px; }
.exchange-rates .xr-month { font-weight:600; color:var(--sophia-text); text-transform:capitalize; }
.exchange-rates .xr-mut { color:var(--sophia-text-muted); font-size:11px; }
.exchange-rates .ln input[type=number] { width:98px; }
.exchange-rates .xr-acts { white-space:nowrap; text-align:right; }
.exchange-rates .xr-forms { display:none; }
/* admin/price_matrix/_styles */
.price-matrix .pm { width:100%; }
.price-matrix .pm thead th { white-space:nowrap; padding:8px 6px; }
.price-matrix .pm tbody td { padding:4px 6px; }
.price-matrix .pm .pm-price { width:112px; }
.price-matrix .pm .pm-price--quiet { width:82px; font-size:11px; padding:8px 4px; }
.price-matrix .pm .pm-base-head { background:var(--sophia-surface-2); color:var(--sophia-accent); }
.price-matrix .pm thead tr.ln-groups th.pm-base-head { color:var(--sophia-accent); }
.price-matrix .pm .pm-cur { display:block; color:var(--sophia-text-faint); font-weight:400; }
.price-matrix .pm .pm-gap,
.price-matrix .pm tbody tr:hover td.pm-gap { width:16px; padding:0; border-top:0;
  background:linear-gradient(var(--sophia-line-3),var(--sophia-line-3)) center/2px 100% no-repeat; }
.price-matrix .pm thead tr.ln-groups th.pm-gap,
.price-matrix .pm thead tr.ln-groups th.pm-gap + th { border-left:0; }
.price-matrix .pm .pm-acts { width:96px; text-align:right; }
.price-matrix .pm .pm-attr { color:var(--sophia-text-2); white-space:nowrap; max-width:190px;
  overflow:hidden; text-overflow:ellipsis; }

.price-matrix .pm th:first-child, .price-matrix .pm td:first-child { position:sticky; left:0; z-index:1;
  background:var(--sophia-surface); }
.price-matrix .pm .pm-name { font-weight:600; color:var(--sophia-text); }
.price-matrix .pm .pm-name:hover { color:var(--sophia-accent); text-decoration:underline; }
.price-matrix .pm .pm-code { display:block; font-size:11px; color:var(--sophia-text-muted); font-variant-numeric:tabular-nums; }

.price-matrix .pm-note { margin:10px 0 0; font-size:11px; color:var(--sophia-text-muted); }

/* Dungi pe grup de produs (produsul plus optiunile lui), nu pe rand: tabelul e
   lat si se citeste orizontal, iar optiunile trebuie sa ramana lipite vizual de
   produsul lor. Prima coloana e sticky, deci isi ia dunga separat. */
.price-matrix .pm tbody tr.pm-band--alt > td,
.price-matrix .pm tbody tr.pm-band--alt > td:first-child { background:var(--sophia-surface-2); }
.price-matrix .pm tbody tr.pm-band > td,
.price-matrix .pm tbody tr.pm-band > td:first-child { background:var(--sophia-surface); }
.price-matrix .pm tbody tr:hover > td,
.price-matrix .pm tbody tr:hover > td:first-child { background:var(--sophia-neutral-bg); }
.price-matrix .pm tbody tr > td.pm-gap,
.price-matrix .pm tbody tr:hover > td.pm-gap { background:linear-gradient(var(--sophia-line-3),var(--sophia-line-3)) center/2px 100% no-repeat; }

/* Optiunile cu pret, ca o lista sub produsul lor. */
.price-matrix .pm .pm-opt__name { padding-left:26px; position:relative; color:var(--sophia-text-2); font-size:12px; }
.price-matrix .pm .pm-opt__name::before { content:""; position:absolute; left:12px; top:0; bottom:50%;
  width:7px; border-left:1px solid var(--sophia-line-3); border-bottom:1px solid var(--sophia-line-3); }
.price-matrix .pm .pm-opt__label { display:block; font-size:10px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--sophia-text-faint); }

.price-matrix .pm-cell { position:relative; }
.price-matrix .pm-cell form { margin:0; }
/* Listele generate se citesc, nu se completeaza: inputul arata a text pana
   la hover (casuta punctata) si devine camp de editare la click/focus. */
.price-matrix .pm-cell--quiet { padding:2px 4px; }
.price-matrix .pm-cell--quiet .pm-cell__input { border-color:transparent; background-color:transparent;
  font-size:12px; padding:4px 5px; color:var(--sophia-text-2); }
.price-matrix .pm-cell--quiet .pm-cell__input::placeholder { color:var(--sophia-line-3); }
.price-matrix .pm-cell--quiet:hover .pm-cell__input { border:1px dashed var(--sophia-line-3); background-color:var(--sophia-surface); }
.price-matrix .pm-cell--quiet .pm-cell__input:focus { border:1px solid var(--sophia-accent); background-color:var(--sophia-surface);
  color:var(--sophia-text); box-shadow:0 0 0 2px rgba(85,107,141,.12); }

/* Diagonala sta pe camp, nu pe toata celula. */
.price-matrix .pm-cell--derived .pm-cell__input { background-image:linear-gradient(to top right,
  transparent calc(50% - 1px), #c3cddb calc(50% - 1px), #c3cddb calc(50% + 1px), transparent calc(50% + 1px)); }
.price-matrix .pm-cell__input { width:100%; appearance:textfield; }
.price-matrix .pm-cell__input::-webkit-outer-spin-button,
.price-matrix .pm-cell__input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
/* Eticheta de pret in coltul celulei scrise de mana; la hover, cat ar fi dat
   formula, destul de mare cat sa se citeasca. Valoarea acopera celula, nu iese
   din ea: tabelul sta intr-un container cu overflow, care ar taia-o. */
.price-matrix .pm-cell__tag { position:absolute; top:0; left:0; z-index:2; padding:2px 5px 4px;
  line-height:1; font-size:12px; color:var(--sophia-line-3); cursor:help; }
.price-matrix .pm-cell__tag:hover { color:var(--sophia-accent); }
.price-matrix .pm-cell--tagged .pm-cell__input { padding-top:11px; }
.price-matrix .pm-cell__formula { position:absolute; inset:0; z-index:3; display:none; pointer-events:none;
  align-items:center; justify-content:center; background:var(--sophia-surface); border:1px solid var(--sophia-accent); border-radius:2px;
  font-size:15px; font-weight:600; color:var(--sophia-text-2); text-decoration:line-through;
  font-variant-numeric:tabular-nums; }
.price-matrix .pm-cell__tag:hover ~ .pm-cell__formula { display:flex; }
.price-matrix .pm-cell__saved { position:absolute; top:50%; right:9px; transform:translateY(-50%);
  color:var(--sophia-good); font-size:11px; animation:pm-fade 2.4s ease-out forwards; }
.price-matrix .pm-cell__error { display:block; margin-top:2px; font-size:10px; color:var(--sophia-bad); }
@keyframes pm-fade { 0%, 45% { opacity:1; } 100% { opacity:0; } }
@media (prefers-reduced-motion: reduce) { .price-matrix .pm-cell__saved { animation:none; } }

.price-matrix fieldset { border:0; margin:0; padding:0; min-width:0; }
.price-matrix fieldset[disabled] .pm-cell__input { border-color:transparent; background-color:transparent;
  color:var(--sophia-text); cursor:default; opacity:1; }
.price-matrix fieldset[disabled] .pm-cell--quiet .pm-cell__input { color:var(--sophia-text-2); }
.price-matrix .pm-locked { color:var(--sophia-warn); }
.price-matrix .pm-locked .fa { margin-right:5px; }

.price-matrix .pm-versions { color:var(--sophia-text-muted); font-size:12px; white-space:nowrap; }
.price-matrix .pm-versions:hover { color:var(--sophia-accent); }
.price-matrix .pm-versions .fa { margin-right:4px; }
/* admin/pricing_assignments/_styles */
.pricing-assignments { --pa-groups-h:22px; }

/* tabelul isi scroleaza si pe verticala, ca sa poata avea capul lipit (§3.4) */
.pricing-assignments .pa-scroll { overflow:auto; max-height:calc(100vh - 265px); min-height:280px; }
.pricing-assignments .pa { min-width:1100px; }

.pricing-assignments .pa thead th { position:sticky; z-index:3; background:var(--sophia-surface); }
.pricing-assignments .pa thead tr.ln-groups th { top:0; padding:7px 10px 4px; line-height:11px; }
.pricing-assignments .pa thead tr:last-child th { top:var(--pa-groups-h); border-bottom:0;
  box-shadow:inset 0 -1px 0 var(--sophia-line-2); }

/* prima coloana ramane vizibila cand matricea se scroleaza lateral */
.pricing-assignments .pa thead th:first-child { left:0; z-index:4; }
.pricing-assignments .pa tbody td:first-child { position:sticky; left:0; z-index:2;
  background:var(--sophia-surface); min-width:250px; }
.pricing-assignments .pa-co td:first-child { background:var(--sophia-surface-2); }
.pricing-assignments .pa tbody tr:hover td:first-child { background:var(--sophia-surface-2); }

/* linii verticale doar la granita blocurilor vanzare | achizitie */
.pricing-assignments .pa thead tr:last-child th:nth-child(2),
.pricing-assignments .pa thead tr:last-child th:nth-child(6),
.pricing-assignments .pa tbody td:nth-child(2),
.pricing-assignments .pa tbody td:nth-child(6) { border-left:1px solid var(--sophia-line-2); }

.pricing-assignments .pa-co td { background:var(--sophia-surface-2); }
.pricing-assignments .pa-co .chip { margin-left:6px; }
.pricing-assignments .pa-user { padding-left:26px !important; }
.pricing-assignments .pa-user .jb-sub { margin-left:6px; }
.pricing-assignments .pa-icon { width:13px; margin-right:7px; color:var(--sophia-text-faint);
  font-size:11px; text-align:center; }
.pricing-assignments .pa-co .pa-icon { color:var(--sophia-accent); }

/* candidatii din lant sunt text linistit; cel care castiga e ingrosat */
.pricing-assignments .pa-cand { color:var(--sophia-text-2); }
.pricing-assignments .pa-cand:hover { color:var(--sophia-accent); text-decoration:underline; }
.pricing-assignments .pa-win .pa-cand { font-weight:600; color:var(--sophia-text); }
.pricing-assignments .pa-active .chip { font-weight:600; }
.pricing-assignments .pa td .chip { white-space:normal; }

.pricing-assignments .pa-check { display:flex; align-items:center; gap:6px; margin:0;
  font-size:13px; font-weight:400; color:var(--sophia-text); height:34px; }
.pricing-assignments .pa-check input { margin:0; }
/* admin/pricing_rules/_form_styles */
.prf__hint { font-size:12px; color:var(--sophia-text-muted); margin:0 0 8px; }
.prf__row { display:flex; gap:12px; }
.prf__row .mb-3 { flex:1; }
.prf__actions { margin-top:14px; }

.pr-step { display:flex; align-items:center; gap:6px; margin-bottom:6px; }
.pr-step > select, .pr-step > span { flex:1; min-width:0; }
.pr-step span > select, .pr-step span > input { width:100%; }
.pr-step__del { flex:0 0 auto; line-height:1; padding:5px 10px; font-size:16px; }
.pr-step [hidden] { display:none; }
/* admin/pricing_rules/_styles */
.pricing-rules .pr-sec { font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--sophia-text-muted); margin:0 0 8px; }
.pricing-rules .devize-panel__body > .pr-sec + .pr-sec,
.pricing-rules .ln + .pr-sec { margin-top:22px; padding-top:16px; border-top:1px solid var(--sophia-border); }
.pricing-rules .pr-hint { font-size:12px; color:var(--sophia-text-muted); margin:0 0 14px; }
.pricing-rules .pr-mut { color:var(--sophia-text-muted); font-size:11px; }
.pricing-rules .pr-hint { display:block; max-width:280px; }

.pricing-rules .pr-band td { background:var(--sophia-surface-2); font-size:11px; font-weight:700; letter-spacing:.04em;
  text-transform:uppercase; color:var(--sophia-accent); padding:7px 10px; }
.pricing-rules .pr-inline { margin:0; }
.pricing-rules .ln input[type=number] { width:82px; }
.pricing-rules .pr-acts { white-space:nowrap; }
.pricing-rules .pr-acts form { display:inline-block; margin:0 0 0 4px; }
.pricing-rules .pr-formula { font-variant-numeric:tabular-nums; white-space:nowrap; }

.pricing-rules .pr-map__stats { font-size:11px; color:var(--sophia-text-muted); margin:0 0 6px; }
.pricing-rules .pr-map__dense { font-size:12px; color:var(--sophia-warn); background:var(--sophia-warn-bg);
  border:1px solid var(--sophia-warn); border-radius:3px; padding:6px 10px; margin:0 0 8px; }
.pricing-rules .pr-map__canvas { overflow:hidden; cursor:grab; padding:4px 0; }
.pricing-rules .pr-map.is-panning .pr-map__canvas { cursor:grabbing; }
.pricing-rules .pr-node { cursor:pointer; }
.pricing-rules .pr-map .is-dim { opacity:.15; }
.pricing-rules .pr-edge.is-active path[stroke="#c3cddb"] { stroke:var(--sophia-accent); stroke-width:2.5; }
.pricing-rules .pr-node.is-active rect { stroke:var(--sophia-accent); stroke-width:2; }
.pricing-rules .pr-map__bar { display:flex; align-items:center; gap:4px; margin-top:2px; }
.pricing-rules .pr-map__status { font-size:11.5px; color:var(--sophia-text-2); margin-left:8px; min-height:16px; }
.pricing-rules .pr-log > summary { font-size:11px; color:var(--sophia-text-muted); cursor:pointer; }
.pricing-rules .pr-log pre { margin:8px 0 0; padding:10px 12px; background:var(--sophia-surface-2); border:1px solid var(--sophia-border);
  border-radius:3px; font-size:11.5px; color:var(--sophia-text-2); max-height:260px; overflow:auto; white-space:pre-wrap; }
.pricing-rules .pr-runs td { vertical-align:top; }

.pricing-rules .pr-mermaid { margin-top:6px; }
.pricing-rules .pr-mermaid > summary { font-size:11px; color:var(--sophia-text-muted); cursor:pointer; }
.pricing-rules .pr-mermaid pre { margin:8px 0 0; padding:10px 12px; background:var(--sophia-surface-2); border:1px solid var(--sophia-border);
  border-radius:3px; font-size:11.5px; color:var(--sophia-text-2); }
/* admin/_tag_input_styles */
.ti{position:relative;min-width:260px}
.ti-box{display:flex;flex-wrap:wrap;align-items:center;gap:4px;border:1px solid var(--sophia-line-3);border-radius:3px;padding:4px 26px 4px 5px;background:var(--sophia-surface);min-height:34px}
.ti-box:focus-within{border-color:var(--sophia-accent);box-shadow:0 0 0 2px rgba(85,107,141,.12)}
.ti-entry{border:none;outline:none;flex:1;min-width:90px;font-size:12px;padding:3px}
.ti-caret{position:absolute;right:6px;top:8px;border:none;background:none;color:var(--sophia-text-muted);cursor:pointer;font-size:12px}
.ti-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 4px 2px 9px;border-radius:3px;line-height:1.6}
.ti-chip--token{background:var(--sophia-info-bg);color:var(--sophia-info)}
.ti-chip--mail{background:var(--sophia-neutral-bg);color:var(--sophia-text-2)}
.ti-chip__x{border:none;background:none;cursor:pointer;font-size:14px;line-height:1;color:inherit;opacity:.6;padding:0 2px}
.ti-chip__x:hover{opacity:1}
.ti-menu{position:absolute;z-index:20;left:0;right:0;margin-top:2px;background:var(--sophia-surface);border:1px solid var(--sophia-line-3);border-radius:3px;box-shadow:0 4px 12px rgba(70,72,86,.12);padding:4px}
.ti-opt{display:block;width:100%;text-align:left;border:none;background:none;cursor:pointer;font-size:12px;font-family:monospace;padding:6px 8px;border-radius:3px;color:var(--sophia-info)}
.ti-opt:hover{background:var(--sophia-neutral-bg)}
/* ai_docs/_styles */
.ai-docs .aid-card { border: 1px solid var(--sophia-border); border-radius: 3px; padding: 14px 16px; margin-bottom: 10px; background: var(--sophia-surface); }
.ai-docs .aid-card__head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.ai-docs .aid-card__name { font-family: "Montserrat", sans-serif; font-weight: 600; font-size: 14px; color: var(--sophia-text); }
.ai-docs a.aid-card__name:hover { color: var(--sophia-accent); }
.ai-docs .aid-card__desc { font-size: 13px; color: var(--sophia-text-2); margin: 0 0 6px; }
.ai-docs .aid-card__who { display: flex; align-items: flex-start; gap: 7px; font-size: 12px; color: var(--sophia-text-muted); margin: 0 0 10px; }
.ai-docs .aid-tools, .ai-docs .aid-examples { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; }
.ai-docs .aid-tools__label { font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--sophia-text-muted); }
.ai-docs .aid-list { margin: 0; padding-left: 18px; font-size: 12.5px; color: var(--sophia-text-2); }
.ai-docs .aid-list li { margin-bottom: 5px; }
.ai-docs code { font-family: Menlo, Monaco, monospace; font-size: .92em; }
/* ai_messages/_styles */
.aim-thread { display: flex; flex-direction: column; gap: 14px; padding: 4px 0; }
.aim-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 5px; font-size: 11px; color: var(--sophia-text-faint); }
.aim-meta .pill { font-size: 10px; }
.aim-calls { margin-top: 8px; }
.aim-call { margin-bottom: 6px; }
.aim-call > summary { font-size: 12px; padding: 7px 10px; }
.aim-call__body { padding: 4px 10px 10px; }
.aim-call__body .odr__sec { margin: 10px 0 5px; padding-top: 0; border-top: none; }
.aim-json {
  margin: 0;
  max-height: 260px;
  overflow: auto;
  font-family: Menlo, Monaco, monospace;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--sophia-text-2);
  background: var(--sophia-surface-2);
  border: 1px solid var(--sophia-border);
  border-radius: 6px;
  padding: 8px 10px;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
/* complaints/_styles */
/* ===== Sesizări — limbaj vizual unificat (scoped :is(.ach, .sophia)) ===== */
/* .prio si .c-avatar au urcat in achizitii.css: le foloseste si panoul IT. */

/* .cx-rejected a urcat in achizitii.css: o foloseste si pagina tichetului IT. */

/* cardurile de continut (.cx-card) si grila de formular (.cx-form-grid) au
   urcat in achizitii.css: sunt piese comune. */
:is(.ach, .sophia) #complaint-requester-card[hidden]{display:none}
/* lista cheie-valoare (.cx-kv) a urcat in achizitii.css: e piesa comuna */
/* order picker preview (new-complaint form) */
:is(.ach, .sophia) .cx-oi{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:12.5px}
:is(.ach, .sophia) .cx-oi[hidden]{display:none}
:is(.ach, .sophia) .cx-oi__row{color:var(--sophia-text)}
:is(.ach, .sophia) .cx-oi__row b{color:var(--sophia-text-muted);font-weight:500}
:is(.ach, .sophia) .cx-noorder{display:flex;align-items:center;gap:6px;margin-top:8px;font-weight:400;color:var(--sophia-text-muted);font-size:12.5px;cursor:pointer}
:is(.ach, .sophia) .cx-noorder input{margin:0}
/* cronologie / feed */
:is(.ach, .sophia) .cx-comment textarea{border:1px solid var(--sophia-line-3);border-radius:4px;box-shadow:none;width:100%;padding:8px}
:is(.ach, .sophia) .cx-comment textarea:focus{outline:none;border-color:var(--sophia-accent);box-shadow:0 0 0 2px rgba(85,107,141,.12)}
:is(.ach, .sophia) .cx-feed{list-style:none;margin:16px 0 0;padding:0}
:is(.ach, .sophia) .cx-feed li{position:relative;padding:0 0 14px 20px;border-left:2px solid var(--sophia-line)}
:is(.ach, .sophia) .cx-feed li:last-child{border-left-color:transparent}
:is(.ach, .sophia) .cx-feed__dot{position:absolute;left:-6px;top:2px;width:10px;height:10px;border-radius:50%;background:var(--sophia-line-3);border:2px solid var(--sophia-surface)}
:is(.ach, .sophia) .cx-feed__head{font-size:12px;color:var(--sophia-text-muted)}
:is(.ach, .sophia) .cx-feed__head b{color:var(--sophia-text)}
:is(.ach, .sophia) .cx-feed__kind{background:var(--sophia-neutral-bg);color:var(--sophia-text-2);font-size:10px;padding:1px 7px;border-radius:8px;margin-left:6px}
:is(.ach, .sophia) .cx-feed__text{font-size:13.5px;color:var(--sophia-text);margin-top:2px}

/* form controls + misc */
:is(.ach, .sophia) label{color:var(--sophia-text-2);font-size:12px;font-weight:600}
:is(.ach, .sophia) .form-control,
:is(.ach, .sophia) .form-select {border:1px solid var(--sophia-line-3);border-radius:3px;box-shadow:none;color:var(--sophia-text)}
:is(.ach, .sophia) .form-control:focus,
:is(.ach, .sophia) .form-select:focus {border-color:var(--sophia-accent);box-shadow:0 0 0 2px rgba(85,107,141,.12)}
:is(.ach, .sophia) .form-text{color:var(--sophia-text-muted);font-size:12px}
:is(.ach, .sophia) .att-thumb{margin:4px 4px 0 0;border:1px solid var(--sophia-border);border-radius:3px}
:is(.ach, .sophia) lexxy-editor{border:1px solid var(--sophia-line-3);border-radius:3px;min-height:120px}
:is(.ach, .sophia) .cx-form-grid__main lexxy-editor{min-height:260px}

/* ===== listă ===== */
/* lista umple înălțimea paginii (fără gri sub tabel); acoperă toate sub-view-urile,
   toate randează index.html.erb. ponytail: offset chrome (header 60 + pageheader ~65
   + padding 15) — ajustează 160px dacă footerul se decalează. */
:is(.ach, .sophia).complaints-index .devize-panel{display:flex;flex-direction:column;min-height:calc(100vh - 160px)}
:is(.ach, .sophia).complaints-index .devize-panel__body{flex:1 1 auto}

/* board (kanban): a urcat in achizitii.css — il folosesc Sesizarile si Suportul IT. */

/* ===== raport / cockpit (specific Sesizarilor) ===== */
/* titlul de bloc (h5.bt) si heatmapul de vechime au urcat in achizitii.css. */
:is(.ach, .sophia) .bt-table{width:100%;border-collapse:collapse;font-size:13px}
:is(.ach, .sophia) .bt-table td{padding:7px 10px;border-top:1px solid var(--sophia-line);color:var(--sophia-text)}
:is(.ach, .sophia) .bt-table td.n{text-align:right;font-variant-numeric:tabular-nums;color:var(--sophia-text-2)}
:is(.ach, .sophia) .bt-table tr:first-child td{border-top:none}
:is(.ach, .sophia) .par{width:100%;border-collapse:collapse;font-size:13px}
:is(.ach, .sophia) .par td{padding:5px 8px;border-top:1px solid var(--sophia-line)}
:is(.ach, .sophia) .par .bar{height:14px;background:var(--sophia-accent);border-radius:2px;display:inline-block;vertical-align:middle}
:is(.ach, .sophia) .par .cum{color:var(--sophia-text-muted);font-size:11px}
:is(.ach, .sophia) .bl{width:100%;border-collapse:collapse;font-size:13px}
:is(.ach, .sophia) .bl td{padding:6px 9px;border-top:1px solid var(--sophia-line)}

  
/* configurable_categories/_styles */
.workmanships-index .wk-aside { position: sticky; top: 62px; }
.workmanships-index .wk-tree { font-size: 13px; max-height: calc(100vh - 150px); overflow-y: auto; }
.workmanships-index .wk-tree ul { list-style: none; padding-left: 13px; margin: 0; }
.workmanships-index .wk-tree > ul { padding-left: 0; }

.workmanships-index .wk-tree details > summary,
.workmanships-index .wk-tree__leaf { display: flex; align-items: center; gap: 4px;
  padding: 5px 7px; border-radius: 2px; list-style: none; }
.workmanships-index .wk-tree details > summary { cursor: pointer; }
.workmanships-index .wk-tree details > summary::-webkit-details-marker { display: none; }
.workmanships-index .wk-tree details > summary::before { content: "\f0da"; font-family: "Font Awesome 7 Free"; font-weight: 900;
  color: var(--sophia-text-faint); width: 11px; margin-right: 7px; }
.workmanships-index .wk-tree details[open] > summary::before { content: "\f0d7"; }
.workmanships-index .wk-tree__leaf { padding-left: 25px; }
.workmanships-index .wk-tree details > summary:hover,
.workmanships-index .wk-tree__leaf:hover { background: var(--sophia-surface-2); }

.workmanships-index .wk-tree__name { flex: 1; min-width: 0; color: var(--sophia-text-2);
  text-decoration: none; word-break: break-word; }
.workmanships-index .wk-tree__name:hover { color: var(--sophia-accent); text-decoration: none; }
.workmanships-index .wk-tree__del { flex: 0 0 auto; color: var(--sophia-text-faint);
  font-size: 11px; padding: 0 2px; text-decoration: none; opacity: 0; }
.workmanships-index .wk-tree details > summary:hover .wk-tree__del,
.workmanships-index .wk-tree__leaf:hover .wk-tree__del,
.workmanships-index .wk-tree__del:focus { opacity: 1; }
.workmanships-index .wk-tree__del:hover { color: var(--sophia-bad); text-decoration: none; }

@media (max-width: 880px) {
  .workmanships-index .wk-aside { position: static; }
  .workmanships-index .wk-tree { max-height: 320px; }
}

.workmanships-show .wk-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.workmanships-show .wk-chips .chip { text-decoration: none; }
.workmanships-show .wk-chips .chip:hover { background: var(--sophia-neutral-bg); text-decoration: none; }
.workmanships-show .wk-prose { margin: 0; font-size: 13px; line-height: 1.55; color: var(--sophia-text-2); }
/* configurator/_styles */
.cfg .devize-panel__title .fa { color: var(--sophia-text-muted); margin-right: 7px; }
.cfg turbo-frame#summary { display: block; width: 100%; margin-bottom: 18px; }
.cfg label.is-required:after { content: " *"; color: var(--sophia-bad); font-weight: 700; }
.cfg .cu-field { margin-bottom: 14px; }
.cfg .cu-field > label { display: block; margin-bottom: 4px; font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em; color: var(--sophia-text-muted); }
.cfg .form-control,
.cfg .form-select { border: 1px solid var(--sophia-line-3); border-radius: 3px; box-shadow: none; color: var(--sophia-text); }
.cfg .form-control:focus,
.cfg .form-select:focus { border-color: var(--sophia-accent); box-shadow: 0 0 0 2px rgba(85,107,141,.12); }
.cfg .cu-hint { display: block; margin-top: 4px; font-size: 11px; color: var(--sophia-text-muted); }
.cfg .cu-measure { display: flex; align-items: center; gap: 8px; }
.cfg .cu-measure .form-control,
.cfg .cu-measure .form-select { flex: 1 1 auto; min-width: 64px; font-variant-numeric: tabular-nums; }
.cfg .cu-measure > span { flex: 0 0 auto; font-size: 12px; color: var(--sophia-text-muted); }
.cfg .cu-search { position: relative; }
.cfg .cu-search .form-control,
.cfg .cu-search .form-select { padding-left: 32px; }
.cfg .cu-search__icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%);
  color: var(--sophia-text-faint); pointer-events: none; z-index: 2; }
.cfg .cu-fabric-row { display: grid; grid-template-columns: 1fr 130px; gap: 8px; align-items: end; }
.cfg .cu-margins { display: grid; grid-template-columns: repeat(4, minmax(64px, 1fr)); gap: 10px; }
@media (max-width: 767px) {
  .cfg .cu-margins { grid-template-columns: repeat(2, minmax(64px, 1fr)); }
}
.cfg .cu-models { display: flex; flex-wrap: wrap; gap: 8px; }
.cfg .cu-model { display: flex; flex-direction: column; align-items: center; gap: 4px;
  width: 92px; padding: 6px; background: var(--sophia-surface); border: 1px solid var(--sophia-border); border-radius: 3px;
  cursor: pointer; text-align: center; margin: 0; font-weight: 400; }
.cfg .cu-model img { width: 100%; height: 88px; object-fit: contain; }
.cfg .cu-model span { font-size: 11px; color: var(--sophia-text-2); line-height: 1.2; }
.cfg .cu-model:hover { border-color: var(--sophia-text-faint); }
.cfg .cu-model.is-selected { border-color: var(--sophia-accent); box-shadow: 0 0 0 2px rgba(85,107,141,.12); }
.cfg .cu-model.is-selected span { color: var(--sophia-accent); font-weight: 600; }
.cfg .cu-model__radio { position: absolute; opacity: 0; pointer-events: none; }
.cfg .cu-empty { color: var(--sophia-text-muted); font-size: 13px; padding: 24px 8px; text-align: center; }
.cfg .cu-diagram { display: flex; align-items: center; justify-content: center; text-align: center;
  min-height: 180px; padding: 12px; margin-bottom: 14px; background: var(--sophia-surface-2);
  border: 1px solid var(--sophia-border); border-radius: 3px; }
.cfg .cu-diagram img { max-width: 100%; max-height: 260px; }
.cfg .model-form .mb-3 { display: flex; flex-direction: column; align-items: stretch; margin-bottom: 14px; }
.cfg .model-form .mb-3:before, .cfg .model-form .mb-3:after { display: none; }
.cfg .model-form .form-label { position: static; width: auto; float: none; text-align: left;
  padding: 0; margin-bottom: 4px; font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--sophia-text-muted); }
.cfg .model-form .col-sm-8, .cfg .model-form .col-sm-2, .cfg .model-form .col-sm-9, .cfg .model-form .col-sm-1 {
  width: 100%; float: none; padding: 0; }
.cfg .model-form .col-sm-2:last-child, .cfg .model-form .col-sm-1 { margin-top: 4px; font-size: 12px; color: var(--sophia-text-muted); }
.cfg .ln .cu-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 2px; }
/* crm_reports/_styles */
.crm-reports .crm-chart { display:flex; flex-direction:column; align-items:center; gap:10px; height:210px; }
.crm-reports .crm-donut { width:104px; height:104px; flex:none; }
.crm-reports .crm-donut circle { fill:none; stroke-width:6; }
.crm-reports .crm-donut__legend { list-style:none; margin:0; padding:0; width:100%; overflow:auto; font-size:11px; }
.crm-reports .crm-donut__legend li { display:flex; align-items:center; gap:6px; line-height:1.6; }
.crm-reports .crm-donut__legend span { width:12px; height:12px; border-radius:2px; flex:none; }
.crm-reports .crm-chart-panel .devize-panel__head { min-height:52px; }
.crm-reports .crm-chart-panel .devize-panel__title { font-size:13px; line-height:1.35; }
.crm-reports .crm-empty { padding:26px 0; text-align:center; font-size:13px; color:var(--sophia-text-muted); }
.crm-reports .crm-bad { color:var(--sophia-bad); font-weight:700; }
/* dashboard/_styles */
/* Piese specifice widgeturilor de dashboard (design system §3.29).
   Restul — panel, KPI, .ln, pastile — vin din achizitii.css. */
.dashboard .wdg-col { display:grid; gap:14px; align-content:start; }
.dashboard .wdg-frame { display:block; min-width:0; }
.dashboard .wdg .devize-panel__body { padding:0 16px 12px; }

/* filtrele widgetului stau in antetul panelului, impinse la dreapta: eticheta
   mica inaintea controlului, selectul in limbajul chip-urilor (§3.29). */
.dashboard .wdg-filters { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-left:auto; }
.dashboard .wdg-filters .tt-filters__field { flex-direction:row; align-items:center; gap:6px; }
.dashboard .wdg-filters label { font-size:10px; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; color:var(--sophia-text-muted); margin:0; }
.dashboard .wdg-filters select { height:26px; padding:0 24px 0 9px; border:1px solid transparent;
  border-radius:3px; background-color:var(--sophia-neutral-bg); background-position:right 7px center; background-size:11px 8px;
  font-size:12px; font-weight:600; color:var(--sophia-text-2); cursor:pointer;
  transition:background-color .15s ease, color .15s ease; }
.dashboard .wdg-filters select:hover { background-color:var(--sophia-neutral-bg); color:var(--sophia-text); }
.dashboard .wdg-filters select:focus { outline:none; border-color:var(--sophia-accent);
  box-shadow:0 0 0 2px rgba(85,107,141,.12); color:var(--sophia-text); }

/* panel cu taburi: eticheta widgetului tine locul titlului, la stanga barei */
.dashboard .panel-id { font-family:"Montserrat",sans-serif; font-size:14px; font-weight:600;
  display:flex; align-items:center; gap:6px; padding:10px 12px 10px 8px;
  border-right:1px solid var(--sophia-line-2); margin-right:4px; white-space:nowrap; }
.dashboard .wdg .tab-content { padding-top:0; }

/* .side-list e in achizitii.css; in panel randul tine marginile panelului */
.dashboard .side-list li { padding:10px 16px; }

.dashboard .date-chip { flex:none; width:42px; text-align:center;
  background:var(--sophia-chip, var(--sophia-neutral-bg)); border-radius:6px; padding:4px 0; }
.dashboard .date-chip b { display:block; font-family:"Montserrat",sans-serif;
  font-size:15px; font-weight:700; line-height:1.1; }
.dashboard .date-chip span { display:block; font-size:9px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--sophia-text-muted); }

/* eticheta de tip eveniment: nu e stare, deci nu e pastila */
.dashboard .ev-tag { display:inline-block; padding:1px 7px; border-radius:3px; font-size:10px;
  font-weight:700; letter-spacing:.04em; text-transform:uppercase; white-space:nowrap; }
.dashboard .ev-tag--livrare { background:var(--sophia-info-bg); color:var(--sophia-info); }
.dashboard .ev-tag--montaj  { background:var(--sophia-product-bg); color:var(--sophia-product); }
.dashboard .ev-tag--oferta  { background:var(--sophia-warn-bg); color:var(--sophia-warn); }

/* bare orizontale pentru clasamente */
.dashboard .hbar-row { display:grid; grid-template-columns:150px 1fr 110px; gap:10px; align-items:center;
  padding:8px 16px; border-bottom:1px solid var(--sophia-line); }
.dashboard .hbar-row:last-child { border-bottom:0; }
.dashboard .hbar-row .lab { font-size:13px; font-weight:600; }
.dashboard .hbar-row .val { text-align:right; font-variant-numeric:tabular-nums; font-size:12.5px; }
.dashboard .hbar-track { background:var(--sophia-line); border-radius:0 4px 4px 0; overflow:hidden; }
.dashboard .hbar { height:14px; border-radius:0 4px 4px 0; background:var(--sophia-accent); min-width:2px; }

/* ApexCharts: culorile vin din tokenii Sophia, nu din optiunile trimise din
   Ruby — o regula CSS bate atributul de prezentare pe care il pune libraria,
   deci graficul urmeaza tema intunecata fara sa stie nimic despre ea. */
.dashboard .apexcharts-bar-area { fill:var(--sophia-accent); }
.dashboard .apexcharts-text,
.dashboard .apexcharts-xaxis-label,
.dashboard .apexcharts-yaxis-label { fill:var(--sophia-text-muted); font-size:11px; font-weight:600; }
.dashboard .apexcharts-gridline { stroke:var(--sophia-line-2); }
.dashboard .apexcharts-tooltip.apexcharts-theme-light {
  background:var(--sophia-surface); border:1px solid var(--sophia-line-3);
  box-shadow:0 1px 3px rgba(70,72,86,.12); color:var(--sophia-text); }
.dashboard .apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {
  background:var(--sophia-surface-2); border-bottom:1px solid var(--sophia-line-2);
  font-family:"Montserrat",sans-serif; font-size:12px; font-weight:600; margin:0; }
.dashboard .apexcharts-tooltip-series-group { color:var(--sophia-text-2); }
.dashboard .apexcharts-tooltip-marker { background:var(--sophia-accent); }

/* Grafic cu doua serii: regula unica de mai sus le-ar colora identic, deci a
   doua serie isi ia tokenul ei. Legenda si markerul din tooltip primesc
   culoarea inline de la librarie, de aceea `!important`. */
.dashboard .wdg-chart--duo .apexcharts-series[rel="2"] .apexcharts-bar-area { fill:var(--sophia-warn); }
.dashboard .wdg-chart--duo .apexcharts-legend-marker { background:var(--sophia-accent) !important; }
.dashboard .wdg-chart--duo .apexcharts-legend-series[rel="2"] .apexcharts-legend-marker { background:var(--sophia-warn) !important; }
.dashboard .wdg-chart--duo .apexcharts-legend-text { color:var(--sophia-text-2) !important;
  font-size:11.5px !important; font-weight:600; }
.dashboard .wdg-chart--duo .apexcharts-tooltip-series-group:nth-child(2) .apexcharts-tooltip-marker {
  background:var(--sophia-warn) !important; }

.dashboard .wdg-chart--line .apexcharts-line { stroke:var(--sophia-accent); }
.dashboard .wdg-chart--line .apexcharts-marker { fill:var(--sophia-accent); }
.dashboard .wdg-chart--line .apexcharts-series[rel="2"] .apexcharts-line { stroke:var(--sophia-warn); }
.dashboard .wdg-chart--line .apexcharts-series[rel="2"] .apexcharts-marker { fill:var(--sophia-warn); }
.dashboard .wdg-chart--line .apexcharts-datalabel { fill:var(--sophia-text-2); font-size:10px;
  font-weight:600; }

.dashboard .wdg-target { display:flex; align-items:baseline; gap:8px; margin-bottom:8px; }
.dashboard .wdg-target__value { font-family:"Montserrat",sans-serif; font-size:22px; font-weight:600;
  font-variant-numeric:tabular-nums; }
.dashboard .wdg-target__of { font-size:12px; color:var(--sophia-text-muted); }
.dashboard .wdg-target ~ .ln-bar { width:100%; height:6px; }

.dashboard .wdg-late { color:var(--sophia-bad); font-weight:600; }
/* ora montajului: coloana pe care o scaneaza montatorul, deci poarta accentul randului */
.dashboard .ln-hour { font-family:"Montserrat",sans-serif; font-weight:700; font-size:14px;
  font-variant-numeric:tabular-nums; color:var(--sophia-accent); white-space:nowrap; }
.dashboard .wdg-icon { color:var(--sophia-text-faint); }
.dashboard .kpi__value a { color:inherit; }
.dashboard .kpi__value a:hover { color:var(--sophia-accent); }

/* calendarele de luna: o luna intreaga, cate un eveniment pe zi ca eticheta */
.dashboard .cal-scroll { overflow-x:auto; }
.dashboard table.cal { width:100%; border-collapse:collapse; table-layout:fixed; min-width:760px; }
.dashboard .cal th { padding:7px 8px; text-align:left; font-size:10px; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase; color:var(--sophia-text-muted);
  border-bottom:1px solid var(--sophia-line-2); }
.dashboard .cal td { vertical-align:top; height:92px; padding:5px 6px;
  border-bottom:1px solid var(--sophia-line); border-right:1px solid var(--sophia-line); }
.dashboard .cal td:last-child { border-right:0; }
.dashboard .cal tr:last-child td { border-bottom:0; }
.dashboard .cal .d { display:block; font-size:12px; font-weight:600;
  font-variant-numeric:tabular-nums; margin-bottom:3px; }
.dashboard .cal .out { background:var(--sophia-surface-2); }
.dashboard .cal .out .d { color:var(--sophia-text-faint); font-weight:400; }
.dashboard .cal .today { background:var(--sophia-surface-2); box-shadow:inset 0 2px 0 var(--sophia-accent); }
.dashboard .cal .today .d { color:var(--sophia-accent); }
.dashboard .cal-ev { display:block; margin:2px 0; padding:2px 6px; border-radius:3px;
  font-size:11px; font-weight:600; line-height:1.4; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; }
.dashboard .cal-ev--livrare { background:var(--sophia-info-bg); color:var(--sophia-info); }
.dashboard .cal-ev--late { background:var(--sophia-bad-bg); color:var(--sophia-bad); }
.dashboard .cal-ev--done { background:var(--sophia-good-bg); color:var(--sophia-good); }
.dashboard .cal-ev--montaj { background:var(--sophia-product-bg); color:var(--sophia-product); }
.dashboard .cal-ev--oferta { background:var(--sophia-warn-bg); color:var(--sophia-warn); }
.dashboard .cal-ev--alerta { background:var(--sophia-surface-2); color:var(--sophia-text-2); }
.dashboard .cal-more { font-size:10px; font-weight:600; color:var(--sophia-text-faint); }
.dashboard .cal-nav { display:inline-flex; gap:2px; }
.dashboard .cal-nav__btn { display:inline-flex; align-items:center; justify-content:center;
  width:26px; height:26px; border:1px solid var(--sophia-line-3); border-radius:3px;
  background:var(--sophia-surface); color:var(--sophia-text-muted); font-size:13px; line-height:1; }
.dashboard .cal-nav__btn:hover { background:var(--sophia-surface-2); color:var(--sophia-text); }

/* nota de subsol a unui panel: contextul cifrei de deasupra, nu o cifra noua */
.dashboard .wdg-note { margin:0; padding:10px 16px; font-size:11.5px; color:var(--sophia-text-muted); }

/* variatia unui curs: numar cu semn, verde in sus si rosu in jos */
.dashboard .rate-delta { font-variant-numeric:tabular-nums; font-size:12px; font-weight:700; white-space:nowrap; }
.dashboard .rate-delta.up { color:var(--sophia-good); }
.dashboard .rate-delta.down { color:var(--sophia-bad); }

/* grafic pe canale: regula unica de mai sus le-ar colora identic, deci fiecare
   serie de dupa prima isi ia tokenul ei. Legenda primeste culoarea inline de
   la librarie, de aceea `!important`. */
.dashboard .wdg-chart--multi .apexcharts-series[rel="2"] .apexcharts-bar-area { fill:var(--sophia-warn); }
.dashboard .wdg-chart--multi .apexcharts-series[rel="3"] .apexcharts-bar-area { fill:var(--sophia-product); }
.dashboard .wdg-chart--multi .apexcharts-series[rel="4"] .apexcharts-bar-area { fill:var(--sophia-info); }
.dashboard .wdg-chart--multi .apexcharts-legend-marker { background:var(--sophia-accent) !important; }
.dashboard .wdg-chart--multi .apexcharts-legend-series[rel="2"] .apexcharts-legend-marker { background:var(--sophia-warn) !important; }
.dashboard .wdg-chart--multi .apexcharts-legend-series[rel="3"] .apexcharts-legend-marker { background:var(--sophia-product) !important; }
.dashboard .wdg-chart--multi .apexcharts-legend-series[rel="4"] .apexcharts-legend-marker { background:var(--sophia-info) !important; }
.dashboard .wdg-chart--multi .apexcharts-legend-text { color:var(--sophia-text-2) !important;
  font-size:11.5px !important; font-weight:600; }
/* fabric_reservations/_styles */
.cuttings-index .ct-fabric { display:block; }
.cuttings-index .ct-fabric .pill { margin-left:6px; }
.defects-index .dfx-obs { display:block; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fabric-scan .fs-form { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap;
  margin:0; padding:0; border-bottom:none; }
.fabric-scan .fs-form input[type=text] { height:42px; font-size:16px; min-width:min(100%,340px);
  font-variant-numeric:tabular-nums; letter-spacing:.04em; }
.fabric-scan .fs-form .btn { height:42px; padding:0 18px; }
/* fabric_rolls/_styles */
.fabric-rolls-index .fr-obs { display:block; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* fabrics/_form_styles */
.fabrics-form .fx-material { margin-bottom:8px; }
.fabrics-form .fx-materials { margin:10px 0; }
.fabrics-form .progress { height:16px; font-size:11px; }
.fabrics-form .fx-preview { margin-bottom:8px; }
.fabrics-form .fx-preview img { max-width:100%; border:1px solid var(--sophia-border); border-radius:3px; }
.fabrics-form .fx-gallery { display:flex; flex-wrap:wrap; gap:8px; }
.fabrics-form .fx-thumb { margin:0; width:120px; }
.fabrics-form .fx-thumb img { width:120px; border:1px solid var(--sophia-border); border-radius:3px; }
.fabrics-form .fx-thumb .btn { width:120px; margin-top:4px; }
.fabrics-form .fx-price { width:190px; }
.fabrics-form .input-group-text img { display:block; }
/* fabrics/_styles */
:is(.ach, .sophia) .fb-thumb img { display:block; width:44px; height:44px; object-fit:cover; border-radius:3px; }
:is(.ach, .sophia) .fb-texture { margin-bottom:12px; text-align:center; }
:is(.ach, .sophia) .fb-texture img { max-width:100%; height:auto; border-radius:3px; }
:is(.ach, .sophia) .fb-barcode { margin-top:12px; text-align:center; }
:is(.ach, .sophia) .fb-barcode svg { width:150px; height:100px; }
:is(.ach, .sophia) .fb-labels { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
:is(.ach, .sophia) .fb-labels img { width:30px; height:30px; }
:is(.ach, .sophia) .fb-desc { font-size:13px; color:var(--sophia-text-2); }
:is(.ach, .sophia) .fb-desc p:last-child { margin-bottom:0; }
:is(.ach, .sophia) .fb-gallery { display:flex; flex-wrap:wrap; gap:12px; }
:is(.ach, .sophia) .fb-gallery__item { display:flex; flex-direction:column; align-items:center; gap:6px; }
:is(.ach, .sophia) .fb-gallery__item img { display:block; max-width:133px; height:auto; border-radius:3px; }
/* fittings/_styles */
.fittings-calendar .cal { width:100%; min-width:760px; table-layout:fixed; border-collapse:collapse; }
.fittings-calendar .cal th { font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--sophia-text-muted); text-align:left; padding:6px 8px; border-bottom:1px solid var(--sophia-line-3); }
.fittings-calendar .cal td { height:104px; padding:4px; vertical-align:top; border:1px solid var(--sophia-line-2); }
.fittings-calendar .cal--week td { height:420px; }
.fittings-calendar .cal__day.is-out { background:var(--sophia-surface-2); }
.fittings-calendar .cal__day.is-out .cal__num { color:var(--sophia-text-faint); }
.fittings-calendar .cal__num { display:inline-block; margin-bottom:3px; padding:1px 5px; font-size:11px; font-weight:600;
  color:var(--sophia-text-2); font-variant-numeric:tabular-nums; }
.fittings-calendar .cal__day.is-today .cal__num { background:var(--sophia-accent); color:var(--sophia-surface); border-radius:10px; }
.fittings-calendar .cal .cal__ev { display:block; margin-bottom:2px; padding:2px 5px; border-radius:2px; font-size:11px;
  line-height:1.35; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-decoration:none; }
.fittings-calendar .cal .cal__ev:hover { text-decoration:none; filter:brightness(.96); }
.fittings-calendar .cal .cal__ev-time { font-weight:700; font-variant-numeric:tabular-nums; margin-right:4px; }
.fittings-calendar .cal-nav { align-items:center; gap:6px; padding-right:12px; }
.fittings-calendar .cal-nav__title { font-family:"Montserrat", sans-serif; font-weight:600; font-size:13px;
  color:var(--sophia-text); white-space:nowrap; }
/* global_search/_styles */
.gsearch-page .gs-group + .gs-group { margin-top: 14px; }
.gsearch-page .devize-panel__title i { margin-right: 8px; color: var(--sophia-text-faint); }
.gsearch-page .devize-panel__body { padding: 4px 0 0; }

.gsearch-page .gs-hits { list-style: none; margin: 0; padding: 0; }
.gsearch-page .gs-hits li + li { border-top: 1px solid var(--sophia-line); }

.gsearch-page .gs-hit {
  display: flex; align-items: baseline; gap: 10px;
  padding: 8px 18px; font-size: 13px;
  color: var(--sophia-text); text-decoration: none;
}
.gsearch-page .gs-hit:hover { background: var(--sophia-surface-2); color: var(--sophia-accent); }
.gsearch-page .gs-hit__title { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.gsearch-page .gs-hit__sub { color: var(--sophia-text-muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* caretul apare pe opacity, ca randul sa nu sara — aceeasi conventie ca .tt-link */
.gsearch-page .gs-hit__caret {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.5em; height: 1.5em; margin-left: auto; border-radius: 50%;
  background: var(--sophia-neutral-bg); color: var(--sophia-accent);
  opacity: 0; transition: opacity 120ms ease-in-out; flex: none;
}
.gsearch-page .gs-hit:hover .gs-hit__caret { opacity: 1; }

.gsearch-page .gs-more { margin: 0; padding: 8px 18px 12px; font-size: 12px; color: var(--sophia-text-muted); }
.gsearch-page .gs-empty { margin: 0; font-size: 13px; color: var(--sophia-text-muted); }
/* hangers/_styles */
:is(.ach, .sophia) .hg-thumb img { display:block; width:56px; height:56px; object-fit:cover; border-radius:3px; }
:is(.ach, .sophia) .hg-photo { margin-bottom:14px; text-align:center; }
:is(.ach, .sophia) .hg-photo img { max-width:100%; height:auto; border-radius:3px; }
:is(.ach, .sophia) .hg-barcode { margin-top:14px; text-align:center; }
:is(.ach, .sophia) .hg-barcode svg { max-width:100%; height:52px; }
:is(.ach, .sophia) .hg-desc { font-size:13px; color:var(--sophia-text-2); }
:is(.ach, .sophia) .hg-desc p:last-child { margin-bottom:0; }

/* randurile de tesaturi din formular */
:is(.ach, .sophia) .hg-fabric-row { display:flex; gap:10px; align-items:flex-end; margin-bottom:10px; }
:is(.ach, .sophia) .hg-fabric-row .hg-fabric-row__pick { flex:1 1 auto; min-width:0; }
:is(.ach, .sophia) .hg-fabric-row .hg-fabric-row__size { flex:0 0 120px; }
:is(.ach, .sophia) .hg-fabric-row .hg-fabric-row__flag { flex:0 0 auto; padding-bottom:8px; }
:is(.ach, .sophia) .hg-fabric-row .hg-fabric-row__del { flex:0 0 auto; }
:is(.ach, .sophia) .hg-fabric-row__size > label { display:block; margin-bottom:4px; font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.06em; color:var(--sophia-text-muted); }
:is(.ach, .sophia) .hg-fabric-add { margin-top:4px; }
/* heading_tapes/_styles */
:is(.ach, .sophia) .ht-photo { margin-bottom:14px; text-align:center; }
:is(.ach, .sophia) .ht-photo img { max-width:100%; height:auto; border-radius:3px; }
:is(.ach, .sophia) .ht-barcode { margin-bottom:14px; text-align:center; }
:is(.ach, .sophia) .ht-barcode svg { max-width:100%; height:52px; }
:is(.ach, .sophia) .ht-gallery { display:flex; flex-wrap:wrap; gap:8px; }
:is(.ach, .sophia) .ht-gallery img { display:block; width:96px; height:96px; object-fit:cover; border-radius:3px; }
:is(.ach, .sophia) .ht-gallery .btn { margin-top:4px; width:96px; }
:is(.ach, .sophia) .ht-care { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
:is(.ach, .sophia) .ht-desc { font-size:13px; color:var(--sophia-text-2); }
:is(.ach, .sophia) .ht-desc p:last-child { margin-bottom:0; }
:is(.ach, .sophia) .ht-care-pick { display:flex; gap:10px; align-items:center; }
:is(.ach, .sophia) .ht-care-pick .form-select { flex:1 1 auto; min-width:0; }
:is(.ach, .sophia) .ht-care-pick img { flex:0 0 auto; }
:is(.ach, .sophia) .ht-price-cell { width:190px; }
:is(.ach, .sophia) .ht-workmanship-row { display:flex; gap:10px; align-items:flex-end; margin-bottom:10px; }
:is(.ach, .sophia) .ht-workmanship-row__pick { flex:1 1 auto; min-width:0; }
:is(.ach, .sophia) .ht-workmanship-row__del { flex:0 0 auto; }
:is(.ach, .sophia) .ht-workmanship-add { margin-top:4px; }
/* jobs/_styles */
/* Bucati specifice paginii de joburi: mono pentru nume de clase/cozi, bara de
   progres a cozii, punctul de heartbeat si vizualizatorul de log. Restul
   (card, taburi, pastile, kpi, .ln) vine din achizitii.css. */
.jobs .mono { font-family:Menlo,Consolas,monospace; font-size:12px; }
.jobs .jb-sub { color:var(--sophia-text-muted); font-size:11px; }
.jobs .jb-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; }
.jobs .jb-dot--ok { background:var(--sophia-good); }
.jobs .jb-dot--warn { background:var(--sophia-warn); }
.jobs .jb-dot--dead { background:var(--sophia-bad); }
.jobs .jb-err { color:var(--sophia-bad); font-size:12px; }
.jobs .jb-pre { margin:8px 0 0; padding:10px; background:var(--sophia-surface-2); border:1px solid var(--sophia-border); border-radius:3px;
                font-size:11px; line-height:1.6; max-height:280px; overflow:auto; white-space:pre-wrap; }
.jobs .jb-log { background:var(--sophia-text); border-radius:3px; padding:10px; max-height:400px; overflow:auto; }
.jobs .jb-log div { font-family:Menlo,Consolas,monospace; font-size:11px; line-height:1.6; color:var(--sophia-text-faint); white-space:pre-wrap; word-break:break-all; }
.jobs .jb-log .l-err { color:var(--sophia-bad); }
.jobs .jb-log .l-warn { color:var(--sophia-warn); }
.jobs .jb-log .l-ok { color:var(--sophia-good); }
.jobs .jb-sec { font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--sophia-text-muted);
                margin:22px 0 6px; padding-bottom:6px; border-bottom:1px solid var(--sophia-border); }
.jobs .jb-sec:first-child { margin-top:0; }
.jobs .jb-sec small { font-weight:400; letter-spacing:0; text-transform:none; color:var(--sophia-text-faint); margin-left:6px; }
.jobs .jb-note { margin:0 0 6px; }
.jobs .jb-task { display:flex; gap:16px; align-items:flex-start; margin-bottom:8px; padding:12px 14px;
                 background:var(--sophia-surface); border:1px solid var(--sophia-border); border-radius:3px; box-shadow:0 1px 1px rgba(70,72,86,.04); }
.jobs .jb-task:hover { background:var(--sophia-surface-2); }
.jobs .jb-task__main { flex:1 1 auto; min-width:0; }
.jobs .jb-task__title { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.jobs .jb-task__title .mono { font-weight:600; color:var(--sophia-text); font-size:13px; }
.jobs .jb-task__title .pill { margin-left:0; }
.jobs .jb-task__desc { margin:6px 0 4px; font-size:13px; color:var(--sophia-text-2); }
.jobs .jb-task__side { flex:0 0 auto; }
/* TODO(human): aspectul coloanei din dreapta (aliniere, separator, buton) + stivuirea sub 768px */
/* orders/_styles */
.orders-show .oc-row { margin-top: 18px; }
.orders-show > .devize-panel { margin-top: 18px; }
.orders-show .oc-col { display: flex; flex-direction: column; }
.orders-show .oc-col .devize-panel { flex: 1 1 auto; }
@media (max-width: 991.98px) {
  .orders-show .oc-col + .oc-col { margin-top: 18px; }
}
.orders-show .oc-audit { max-height: 420px; overflow-y: auto; background: transparent;
  border: 0; box-shadow: none; margin: 0; padding: 0 2px 0 0; }
.orders-show .oc-audit .so-step__label { font-weight: 500; line-height: 1.35; }
.orders-show .oc-audit .so-step__date { white-space: normal; }
/* product_categories/_styles */
.product-categories-index .pc-aside { position: sticky; top: 62px; }
.product-categories-index .pc-aside .devize-panel__body { max-height: calc(100vh - 150px); overflow-y: auto; }

:is(.ach, .sophia) .pc-coll { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid var(--sophia-line); }
:is(.ach, .sophia) .pc-coll:first-child { border-top: 0; }
:is(.ach, .sophia) .pc-coll__name { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--sophia-text);
  overflow-wrap: anywhere; text-decoration: none; }
a.pc-coll__name:hover { color: var(--sophia-accent); text-decoration: none; }
:is(.ach, .sophia) .pc-coll__actions { flex: 0 0 auto; display: flex; gap: 6px; opacity: 0; transition: opacity .12s; }
:is(.ach, .sophia) .pc-coll:hover .pc-coll__actions,
:is(.ach, .sophia) .pc-coll:focus-within .pc-coll__actions { opacity: 1; }
:is(.ach, .sophia) .pc-coll__actions a { color: var(--sophia-text-faint); font-size: 13px; }
:is(.ach, .sophia) .pc-coll__actions a:hover { color: var(--sophia-accent); }
:is(.ach, .sophia) .pc-coll__actions a.pc-coll__del:hover { color: var(--sophia-bad); }

:is(.ach, .sophia) .pc-path { color: var(--sophia-text-faint); }
:is(.ach, .sophia) .ln tbody tr.pc-row--parent td { background: var(--sophia-surface-2); }
:is(.ach, .sophia) .ln tbody tr.pc-row--parent:hover td { background: var(--sophia-surface-2); }
:is(.ach, .sophia) .pc-actions { width: 1%; white-space: nowrap; }
:is(.ach, .sophia) .pc-act { display: flex; gap: 5px; justify-content: flex-end; }
:is(.ach, .sophia) .pc-act form { margin: 0; }
:is(.ach, .sophia) .pc-empty { color: var(--sophia-text-muted); font-size: 13px; margin: 0; }

@media (max-width: 991px) {
  .product-categories-index .pc-aside { position: static; }
  .product-categories-index .pc-aside .devize-panel__body { max-height: 320px; }
}
/* product_lists/_styles */
/* Devize — regulile proprii paginii ofertei, scoped la .pl-show. Piesele
   comune (panel, taburi, pastile, .cx-kv, .ln, .pnl-sec, modul de prezentare)
   vin din achizitii.css si nu se redefinesc aici. */

/* ---- randul de reper: antet scanabil + detaliu pliabil ---- */
.pl-show .pl-item-list { padding-left:0; margin-bottom:0; }
.pl-show .pl-item { list-style:none; border:1px solid var(--sophia-border); border-radius:3px; margin-bottom:6px; background:var(--sophia-surface); }
.pl-show .pl-item__header { display:flex; align-items:center; gap:10px; padding:10px 12px; cursor:pointer; user-select:none; }
.pl-show .pl-item__header:hover { background:var(--sophia-surface-2); }
.pl-show .pl-item__grip { color:var(--sophia-text-faint); cursor:grab; }
.pl-show .pl-item__qty { display:inline-flex; align-items:center; gap:1px; font-weight:700; color:var(--sophia-accent);
  background:var(--sophia-neutral-bg); border-radius:3px; padding:2px 8px; font-size:12px; white-space:nowrap;
  font-variant-numeric:tabular-nums; }
.pl-show .pl-item__name { font-weight:600; color:var(--sophia-text); flex:1; min-width:0; }
/* cod produs/material inaintea numelui, in randul colapsat */
.pl-show .pl-item__code { font-weight:600; color:var(--sophia-text-muted); font-variant-numeric:tabular-nums; letter-spacing:.2px; }
.pl-show .pl-item__code::after { content:" · "; color:var(--sophia-text-faint); font-weight:400; }
/* dimensiuni + total pe randul colapsat */
.pl-show .pl-item__meta { color:var(--sophia-text-muted); font-weight:400; font-size:12px; margin-left:8px; white-space:nowrap; }
.pl-show .pl-item__price { margin-left:12px; font-weight:700; color:var(--sophia-accent); font-size:13px;
  font-variant-numeric:tabular-nums; white-space:nowrap; }
@media (max-width: 600px) { .pl-show .pl-item__meta { display:none; } }
.pl-show .pl-item__chevron { color:var(--sophia-text-muted); transition:transform .15s ease; }
.pl-show .pl-item__header:not(.collapsed) .pl-item__chevron { transform:rotate(180deg); }

/* ---- tabelele de detaliu: compacte, ca cele 10 coloane de material sa incapa ---- */
.pl-show .pl-item__body { border-top:1px solid var(--sophia-border); padding:8px 10px; }
.pl-show .pl-item__body table.table { font-size:12px; margin-bottom:8px; }
.pl-show .pl-item__body table.table > thead > tr > td { padding:6px 8px; color:var(--sophia-text-muted); font-weight:600;
  font-size:10px; letter-spacing:.3px; text-transform:uppercase; line-height:1.25;
  border-bottom:1px solid var(--sophia-line-2); vertical-align:bottom; }
.pl-show .pl-item__body table.table > tbody > tr > td { padding:6px 8px; vertical-align:middle; }
.pl-show .pl-detail-table { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.pl-show .pl-detail-table .ln thead th { padding:5px 6px; }
.pl-show .pl-detail-table .ln tbody td { padding:4px 6px; white-space:nowrap; }
.pl-show .pl-detail-table .ln tbody td.name { white-space:normal; min-width:240px; line-height:1.35; }
.pl-show .pl-detail-table .ln tbody td:first-child { width:1%; padding-right:0; }
.pl-show .pl-detail-table .ln tfoot td { padding:7px 6px; }
.pl-show .ln .cu-thumb { width:28px; height:28px; object-fit:cover; border-radius:2px; }
.pl-show .pl-item__body .cx-kv > div { padding:3px 0; }

/* Actiunile din interiorul unui detaliu extins stau in .nav/.compose-nav, deci
   <a> ar mosteni padding-ul de nav-link (block, 15px) si ar strivi <button>;
   le fixam pe aceeasi cutie btn-sm. */
.pl-show .pl-item__actions { display:flex; justify-content:flex-end; align-items:center; gap:6px;
  margin-top:14px; padding-top:12px; border-top:1px solid var(--sophia-border); }
.pl-show .pl-item__actions form { display:inline-block; margin:0; }
.pl-show .pl-item__actions .btn { display:inline-block; width:auto; padding:5px 12px; font-size:12px;
  line-height:1.5; border-radius:3px; }

/* ============================================================
   Detaliere ofertă — plata, compacta, sincrona cu pagina.
   Coloanele de discount nu exista pana cand devizul are un discount
   (server) sau utilizatorul il cere explicit (data-disc="on"). Editarea
   (procent + motiv) nu mai sta pe randul colapsat — apare doar cand
   randul e expandat (.dsc-tree-row.show); randul colapsat pastreaza doar
   valoarea redusa (Reducere).
   ============================================================ */
.pl-show #discount-panel { border:1px solid var(--sophia-border); box-shadow:0 1px 1px rgba(70,72,86,.04); background:var(--sophia-surface);
  border-radius:2px; margin-bottom:16px; }
.pl-show .dsc { width:100%; border-collapse:collapse; font-size:12.5px; }
.pl-show .dsc thead th { background:var(--sophia-surface-2); color:var(--sophia-text-muted); font-weight:700; font-size:10px;
  letter-spacing:.05em; text-transform:uppercase; text-align:left; padding:6px 14px;
  border-bottom:1px solid var(--sophia-line-2); white-space:nowrap; }
.pl-show .dsc thead th.num, .pl-show .dsc td.num { text-align:right; font-variant-numeric:tabular-nums; }
.pl-show .dsc tbody td { padding:6px 14px; border-top:1px solid var(--sophia-line); vertical-align:middle; }
.pl-show .dsc tbody tr:hover td { background:var(--sophia-surface-2); }
.pl-show .dsc tfoot td { padding:9px 14px; border-top:1px solid var(--sophia-line-2); font-weight:600;
  font-variant-numeric:tabular-nums; }
.pl-show .dsc tfoot tr.dsc-final td { border-top:2px solid var(--sophia-text); font-size:15px; font-weight:700; color:var(--sophia-text); }
.pl-show .dsc .neg { color:var(--sophia-bad); }
.pl-show .dsc .mut { color:var(--sophia-text-faint); }
.pl-show .dsc .svc { color:var(--sophia-text-muted); }

/* coloanele de discount: ascunse pana sunt cerute */
.pl-show .dcol { display:none; }
.pl-show .drow-g { display:none; }
.pl-show [data-disc="on"] .dcol { display:table-cell; }
.pl-show [data-disc="on"] .drow-g { display:table-row; }
.pl-show [data-disc="on"] .dsc-when-off { display:none; }
.pl-show [data-disc="off"] .dsc-when-on { display:none; }
.pl-show .ln-disc { display:none; }
.pl-show [data-disc="on"] .ln-disc { display:table-cell; }
.pl-show .ln-disc .dsc-set { min-width: 140px; }
.pl-show .pl-item__price s { color:var(--sophia-text-faint); font-weight:400; margin-right:6px; }

/* tree-ul de discounturi pe linie: un rand per categorie, pliabil, cu
   fiecare produs si componentele lui prețuite dedesubt. Ascuns pana e
   cerut discountul (data-disc) SI deschis explicit (.in). */
.pl-show .dsc-tree-toggle { display:none; background:none; border:0; padding:0 6px 0 0;
  color:var(--sophia-text-muted); cursor:pointer; vertical-align:middle; }
.pl-show [data-disc="on"] .dsc-tree-toggle { display:inline-block; }
.pl-show .dsc-tree-toggle .fa { transition:transform .15s ease; }
.pl-show .dsc-tree-toggle:not(.collapsed) .fa { transform:rotate(90deg); }
.pl-show .dsc-tree-row { display:none; }
.pl-show [data-disc="on"] .dsc-tree-row.show { display:table-row; }
.pl-show .dsc-tree-row > td { padding:4px 14px 10px; border-top:none; background:var(--sophia-surface-2); }
.pl-show .dsc-tree__category { margin-bottom:8px; }
.pl-show .dsc-tree { width:100%; border-collapse:collapse; font-size:12px; }
.pl-show .dsc-tree thead th { padding:0 8px 5px; background:none; border:0;
  border-bottom:1px solid var(--sophia-border); font-size:9.5px; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; color:var(--sophia-text-faint);
  white-space:nowrap; text-align:left; }
.pl-show .dsc-tree thead th.num { text-align:right; }
.pl-show .dsc-tree td { padding:4px 8px; }
.pl-show .dsc-tree tr.dsc-tree__item td { font-weight:600; color:var(--sophia-accent); padding-top:8px; }
.pl-show .dsc-tree tr.dsc-tree__item:first-child td { padding-top:2px; }
.pl-show .dsc-tree tr.dsc-tree__comp td:first-child { padding-left:18px; color:var(--sophia-text-muted); }
.pl-show .dsc-full-pct { display:block; font-size:10.5px; opacity:.8; }
/* .form-control e display:block, deci ar invinge regula UA pentru [hidden] */
.pl-show .dreason[hidden], .pl-show .dreason-set[hidden] { display:none; }

.pl-show .dsc-set { display:flex; flex-direction:column; margin:0; }
.pl-show .dsc-set__line { display:flex; flex-wrap:wrap; align-items:center; gap:4px; }
.pl-show .dsc-set .dinput { width:56px; height:26px; padding:2px 6px; font-size:12px; text-align:right;
  border:1px solid var(--sophia-line-3); border-radius:3px; box-shadow:none; }
.pl-show .dsc-set .dinput:focus { outline:none; border-color:var(--sophia-accent); box-shadow:0 0 0 2px rgba(85,107,141,.12); }
.pl-show .dsc-set__line > .btn { order:1; }
/* dizolva span-ul: select-ul devine item flex pe linie, langa procent si buton */
.pl-show .dreason-set { display:contents; }
.pl-show .dreason { max-width:180px; height:26px; padding:1px 5px; font-size:11.5px; border:1px solid var(--sophia-line-3);
  border-radius:3px; background:var(--sophia-solid-fg); color:var(--sophia-text); box-shadow:none; }
.pl-show .dreason:focus { outline:none; border-color:var(--sophia-accent); box-shadow:0 0 0 2px rgba(85,107,141,.12); }
/* "alt motiv": campul liber trece pe randul urmator, pe toata latimea */
.pl-show .dreason--free { order:2; flex:1 1 100%; margin-top:4px; }
/* motiv obligatoriu: cat timp e gol, campul se vede ca sarcina neterminata */
.pl-show .dreason--empty { border-color:var(--sophia-warn); background:var(--sophia-warn-bg); color:var(--sophia-warn); }
.pl-show .dview { font-size:12px; color:var(--sophia-text-2); }
.pl-show .dview .why { display:block; color:var(--sophia-text-muted); font-size:11px; }
.pl-show .dsc-limit { color:var(--sophia-text-muted); font-size:11px; font-weight:400; }
.pl-show .dsc-limit b { color:var(--sophia-text-2); }

/* banda de promotii: informativa, cu aplicare explicita */
.pl-show .promo { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:6px 14px;
  background:var(--sophia-surface-2); border-bottom:1px solid var(--sophia-line-2); color:var(--sophia-text-muted); font-size:11.5px; }
.pl-show .promo .fa-bolt { color:var(--sophia-text-muted); }
.pl-show .promo__tag { background:var(--sophia-neutral-bg); color:var(--sophia-text-2); border-radius:3px; padding:1px 8px; font-weight:600; }
.pl-show .promo form { display:inline; margin:0; }
.pl-show .promo__apply { padding:0 2px; font-size:11px; font-weight:600; background:none; border:0; color:var(--sophia-accent); }
.pl-show .promo__apply:hover { color:var(--sophia-accent-dark); text-decoration:underline; }

/* istoricul discounturilor: ultimul bloc al panelului, fara filtre */
.pl-show .dsc-history { padding:6px 14px 9px; background:var(--sophia-surface-2); border-top:1px solid var(--sophia-line); }
.pl-show .dsc-history__toggle { color:var(--sophia-text-muted); font-size:12px; }
/* products/_import_styles */
/* Import CSV (/products/import, /products/import_preview).
   Antetul, cardurile de formular, tabelele de linii, pastilele si chip-urile
   vin din design system (:is(.ach, .sophia)); aici raman doar randurile pliabile ale
   previzualizarii si miniaturile din CSV. */
.products-import .ip-list { padding: 0; }
.products-import .ip-item { border-top: 1px solid var(--sophia-line-2); }
.products-import .ip-item:first-child { border-top: 0; }

.products-import .ip-item__head { display: flex; align-items: center; flex-wrap: wrap; gap: 9px;
  padding: 9px 18px; cursor: pointer; list-style: none; }
.products-import .ip-item__head::-webkit-details-marker { display: none; }
.products-import .ip-item__head::after { content: "\f107"; font-family: "Font Awesome 7 Free"; font-weight: 900;
  margin-left: auto; color: var(--sophia-text-muted); }
.products-import .ip-item__head:hover { background: var(--sophia-surface-2); }
.products-import .ip-item[open] > .ip-item__head { background: var(--sophia-surface-2); }
.products-import .ip-item[open] > .ip-item__head::after { content: "\f106"; }
.products-import .ip-item__head .pill { margin-left: 0; }

.products-import .ip-code { font-weight: 700; color: var(--sophia-text); font-variant-numeric: tabular-nums; }
.products-import .ip-name { color: var(--sophia-text-2); }
.products-import .ip-body { padding: 2px 18px 16px; }

.products-import .ip-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 300px);
  gap: 0 18px; align-items: start; }
@media (max-width: 991px) { .products-import .ip-cols { grid-template-columns: 1fr; } }

.products-import .ip-imgs { display: flex; flex-wrap: wrap; gap: 6px; }
.products-import .ip-imgs img { max-width: 100%; max-height: 76px; border: 1px solid var(--sophia-border);
  border-radius: 2px; background: var(--sophia-surface); }
.products-import .ip-imgs__main { flex: 0 0 100%; }
.products-import .ip-imgs__main img { max-height: 150px; }

.products-import .ip-alert { margin: 0 0 10px; padding: 7px 11px; font-size: 12px; border-radius: 3px; }
.products-import .ip-alert ul { margin: 3px 0 0; padding-left: 17px; }
.products-import .ip-alert--bad { color: var(--sophia-bad); background: var(--sophia-bad-bg); }
.products-import .ip-alert--warn { color: var(--sophia-warn); background: var(--sophia-warn-bg); }
.products-import .ip-note { color: var(--sophia-text-muted); font-size: 12px; margin: 0; }
/* products/_styles */
/* Arborele de categorii — singura piesa proprie a acestei liste: navigatia pe
   categorii nu incape in taburi (§3.3) si nici in .tt-filters (§3.21).
   Restul paginii vine din :is(.ach, .sophia) + turbo_table.css. */
.products-v2-index .pv2-aside { position: sticky; top: 62px; }
.products-v2-index .pv2-tree { font-size: 13px; max-height: calc(100vh - 150px); overflow-y: auto; }
.products-v2-index .pv2-tree ul { list-style: none; padding-left: 13px; margin: 0; }
.products-v2-index .pv2-tree > ul { padding-left: 0; }

.products-v2-index .pv2-tree details > summary { display: flex; align-items: center; cursor: pointer;
  padding: 5px 7px; border-radius: 2px; color: var(--sophia-text); list-style: none; }
.products-v2-index .pv2-tree details > summary::-webkit-details-marker { display: none; }
.products-v2-index .pv2-tree details > summary::before { content: "\f0da"; font-family: "Font Awesome 7 Free"; font-weight: 900;
  color: var(--sophia-text-faint); width: 11px; margin-right: 7px; }
.products-v2-index .pv2-tree details[open] > summary::before { content: "\f0d7"; }
.products-v2-index .pv2-tree details > summary:hover { background: var(--sophia-surface-2); }

.products-v2-index .pv2-tree__category-name { flex: 1; }
.products-v2-index .pv2-tree__subtree-link { color: var(--sophia-text-faint); padding: 0 2px 0 8px; }
.products-v2-index .pv2-tree__subtree-link:hover,
.products-v2-index .pv2-tree summary.is-active .pv2-tree__subtree-link { color: var(--sophia-accent); text-decoration: none; }

.products-v2-index .pv2-tree__link { display: block; padding: 5px 7px 5px 25px; border-radius: 2px;
  color: var(--sophia-text-2); text-decoration: none; }
.products-v2-index .pv2-tree__link:hover { background: var(--sophia-surface-2); color: var(--sophia-text); text-decoration: none; }
.products-v2-index .pv2-tree__link .fa { margin-right: 6px; color: var(--sophia-text-faint); }
.products-v2-index .pv2-tree summary.is-active,
.products-v2-index .pv2-tree__link.is-active { background: var(--sophia-neutral-bg); color: var(--sophia-accent); font-weight: 600; }
.products-v2-index .pv2-tree__link.is-active .fa { color: var(--sophia-accent); }

@media (max-width: 880px) {
  .products-v2-index .pv2-aside { position: static; }
  .products-v2-index .pv2-tree { max-height: 320px; }
}

/* ===== Editorul de produs (/products/new, /products/:id/edit) =====
   Antetul, actiunile, butoanele si panourile vin din design system; formularul
   de pagina si vocabularul CRUD-ului inline (carduri de optiuni/caracteristici)
   raman ale modulului, in paleta Sophia. */
.products-edit .devize-panel__title .fa { color: var(--sophia-text-muted); margin-right: 7px; }
.products-edit .pv2-placeholder { color: var(--sophia-text-muted); }

.products-edit .form-control { border: 1px solid var(--sophia-line-3); border-radius: 3px; box-shadow: none; color: var(--sophia-text); }
.products-edit .form-control:focus { border-color: var(--sophia-accent); box-shadow: 0 0 0 2px rgba(85,107,141,.12); }
.products-edit .form-text { color: var(--sophia-text-muted); font-size: 12px; }
.products-edit lexxy-editor { border: 1px solid var(--sophia-line-3); border-radius: 3px; min-height: 180px; }

/* formularul de pagina: doua coloane, eticheta mica uppercase deasupra campului (§2) */
.products-edit .pv2-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; }
.products-edit .pv2-form__field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.products-edit .pv2-form__field--full { grid-column: 1 / -1; }
.products-edit .pv2-form label { font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--sophia-text-muted); margin: 0; }
.products-edit .pv2-form .form-text { margin: 0; font-size: 11px; }
.products-edit .pv2-form select[multiple] { height: auto; }
.products-edit .pv2-form__pair { display: flex; gap: 8px; }
.products-edit .pv2-form__checks { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.products-edit .pv2-form label.pv2-form__check { display: inline-flex; align-items: center; gap: 7px; margin: 0;
  font-size: 13px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--sophia-text); }
.products-edit .pv2-form__check input { margin: 0; }
@media (max-width: 768px) { .products-edit .pv2-form { grid-template-columns: 1fr; } }

/* Detalii + Furnizor una langa alta; pe jumatate de latime campurile stau pe o
   coloana, iar pe ecrane foarte late revin la doua. */
.products-edit .pv2-split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 18px; align-items: start; }
.products-edit .pv2-split .pv2-form { grid-template-columns: 1fr; }
@media (min-width: 1500px) {
  .products-edit .pv2-split .pv2-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 991px) { .products-edit .pv2-split { grid-template-columns: 1fr; } }

/* stocul e context read-only, deasupra panourilor (§3.16) */
.products-edit .pv2-context { margin-bottom: 16px; }
.products-edit .pv2-inline-note { color: var(--sophia-text-muted); font-size: 12px; margin: 0 0 10px; }
.products-edit .pv2-inline-note .fa { margin-right: 5px; }

/* preturi: tabel de linii (§3.13). Campul, moneda si butonul sunt un singur
   control segmentat flex (.pv2-price-group); nu folosim .input-group-ul BS3 —
   regulile lui table-cell/width:1% si override-ul `:is(.ach, .sophia) .ln input[type=number]`
   rupeau celula (moneda trunchiata, buton in afara cardului). */
:is(.ach, .sophia).products-edit .pv2-price-group { display: flex; align-items: stretch; width: 100%; }
:is(.ach, .sophia).products-edit .pv2-price-group input.form-control { flex: 1 1 auto; min-width: 0; width: auto;
  height: auto; padding: 5px 10px; font-size: 12px; border-radius: 3px 0 0 3px;
  text-align: right; font-variant-numeric: tabular-nums; }
:is(.ach, .sophia).products-edit .pv2-price-group__cur { flex: 0 0 auto; display: flex; align-items: center; padding: 0 9px;
  background: var(--sophia-surface-2); border: 1px solid var(--sophia-line-3); border-left: 0;
  color: var(--sophia-text-muted); font-size: 11px; font-weight: 700; letter-spacing: .05em; white-space: nowrap; }
:is(.ach, .sophia).products-edit .pv2-price-group__save { flex: 0 0 auto; margin: 0; padding: 0 11px; border-radius: 0 3px 3px 0; }
.products-edit .pv2-price-saved { color: var(--sophia-good); font-size: 11px; }

/* ===== Grila de Optiuni / Caracteristici =====
   Chrome-ul de tabel vine din :is(.ach, .sophia) .ln (§3.13); aici raman doar celulele
   editabile, banda de grup si pastilele de valoare. */
.products-edit .devize-panel__note { font-size: 12px; color: var(--sophia-text-muted); margin-left: auto; text-align: right; }
.products-edit .devize-panel__body--flush { padding: 0; }
/* Capul de tabel e sticky fata de PAGINA. Ca sa se agate de pagina si nu de o
   cutie, grila nu are voie sa fie scroll-container: orice `overflow` diferit de
   `visible` (inclusiv un `overflow-x: auto` pentru derulare laterala) ar face
   antetul sa se agate de wrapper. Deci coloanele se stramteaza ca sa incapa,
   iar derularea laterala revine doar sub 1200px, unde nu mai au cum sa incapa.
   `#main-wrapper` foloseste `overflow-x: clip`, care NU e scroll-container, deci
   nu strica sticky-ul (vezi main.css). */
.products-edit .og-scroll { overflow: visible; }
.products-edit .og__table { width: 100%; table-layout: auto; }
/* 50px = inaltimea .pageheader (10 padding + 30 butoane btn-sm + 10 padding);
   daca antetul paginii isi schimba inaltimea, aici se ajusteaza. */
.products-edit .og__table thead th { position: sticky; top: 50px; z-index: 2; background: var(--sophia-surface-2);
  /* border-collapse lasa bordura in urma cand antetul se desprinde; umbra interioara tine linia */
  border-bottom: 0; box-shadow: inset 0 -1px 0 var(--sophia-line-2); }
@media (max-width: 1200px) {
  .products-edit .og-scroll { overflow-x: auto; }
  .products-edit .og__table { min-width: 900px; }
  .products-edit .og__table thead th { position: static; }
}
/* Coloane stramte, ca cele 6 fixe + cate una per lista de preturi sa incapa in
   latimea paginii fara derulare laterala. Valoarea ia ce ramane. */
.products-edit .og__table tbody td { padding: 4px 6px; }
.products-edit .og__table thead th { padding: 8px 6px; }
.products-edit .og__cur { display: block; color: var(--sophia-text-faint); font-weight: 400; }
.products-edit .og__ord { width: 64px; white-space: nowrap; }
.products-edit .og__cm { width: 56px; }
.products-edit .og__code { width: 100px; }
.products-edit .og__qty { width: 44px; text-align: center; }
.products-edit .og__img { width: 40px; text-align: center; }
.products-edit .og__price { width: 78px; }
.products-edit .og__del { width: 34px; text-align: right; }
.products-edit .og__na { color: var(--sophia-text-faint); display: block; text-align: center; }
.products-edit .og__empty { color: var(--sophia-text-muted); padding: 14px 18px; margin: 0; }
.products-edit .og__err { color: var(--sophia-bad); font-size: 12px; }

/* celula editabila: arata a celula de foaie de calcul, nu a input */
.products-edit .cell { display: block; width: 100%; border: 1px solid transparent; border-radius: 2px;
  background: transparent; padding: 4px 6px; font: inherit; font-size: 13px; color: var(--sophia-text);
  font-variant-numeric: tabular-nums; box-shadow: none; }
.products-edit .cell:hover { border-color: var(--sophia-line-2); background: var(--sophia-surface); }
.products-edit .cell:focus { outline: none; border-color: var(--sophia-accent); background: var(--sophia-surface);
  box-shadow: 0 0 0 2px rgba(85,107,141,.14); }
.products-edit .cell--num { text-align: right; appearance: textfield; }
.products-edit .cell--num::-webkit-outer-spin-button,
.products-edit .cell--num::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.products-edit .cell--grp { font-weight: 600; width: auto; min-width: 320px; }
.products-edit .cell--add { border: 1px dashed var(--sophia-line-3); background: var(--sophia-surface); width: auto; min-width: 200px; }

/* banda de grup = celula unita din Excel */
.products-edit .og__band td { background: var(--sophia-neutral-bg); border-top: 1px solid var(--sophia-line-2); padding: 6px 10px; }
.products-edit .og__grp:first-of-type .og__band td { border-top: 0; }
.products-edit .og__bandin { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.products-edit .og__bandform { display: flex; align-items: center; gap: 9px; margin: 0; }
.products-edit .og__flag { display: inline-flex; align-items: center; gap: 5px; margin: 0;
  font-size: 12px; font-weight: 400; color: var(--sophia-text-2); white-space: nowrap; }
.products-edit .og__flag input { margin: 0; }
.products-edit .og__count { font-size: 11px; color: var(--sophia-text-muted); white-space: nowrap; }
.products-edit .og__sp { flex: 1 1 auto; }
.products-edit .og__rowform, .products-edit .og__delf { display: inline; margin: 0; }
.products-edit .og__row:hover td { background: var(--sophia-surface-2); }

/* imaginea valorii: cu imagine miniatura deschide modalul, fara imagine
   placeholder-ul deschide direct selectorul de fisier */
.products-edit .og__imgf { margin: 0; }
.products-edit .og__imgcell { display: inline-block; }
.products-edit .og__imgpick { display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border: 1px solid var(--sophia-border); border-radius: 2px; margin: 0; cursor: pointer;
  overflow: hidden; background: var(--sophia-surface); }
.products-edit .og__imgpick:hover { border-color: var(--sophia-accent); text-decoration: none; }
.products-edit .og__imgpick--empty { border-style: dashed; border-color: var(--sophia-line-3); }
.products-edit .og__imgpick--empty:hover .og__imgna { color: var(--sophia-accent); }
.products-edit .og__thumb { width: 100%; height: 100%; object-fit: cover; }
.products-edit .og__imgna { color: var(--sophia-text-faint); font-size: 13px; }
.products-edit .og__imgin { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

/* bifa discreta de "salvat" */
.products-edit .og__st { display: inline-block; width: 11px; color: var(--sophia-good); font-size: 11px; }
.products-edit .og__st .fa { animation: og-fade 2.4s ease-out forwards; }
@keyframes og-fade { 0%, 45% { opacity: 1; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .products-edit .og__st .fa { animation: none; } }

/* randul si bara de adaugare */
.products-edit .og__addrow td { background: var(--sophia-surface-2); }
.products-edit .og__addform { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; }
.products-edit .og__addicon { color: var(--sophia-text-faint); }
.products-edit .og__addcm { min-width: 0; width: 80px; }
.products-edit .og__addbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  background: var(--sophia-surface-2); border-top: 1px solid var(--sophia-border); padding: 11px 18px; }

/* Caracteristici: valorile ca pastile editabile */
.products-edit .fg__namecol { width: 240px; }
.products-edit .fg__nameform { margin: 0; }
.products-edit .fg__chips { display: inline-flex; flex-wrap: wrap; gap: 6px; vertical-align: middle; }
.products-edit .fg__add { display: inline-block; margin-left: 6px; vertical-align: middle; }
.products-edit .fg__addform { margin: 0; }
.products-edit .fg__addin { min-width: 120px; font-size: 12px; padding: 3px 8px; }
.products-edit .fv { display: inline-flex; align-items: center; gap: 2px; background: var(--sophia-neutral-bg);
  border-radius: 12px; padding: 1px 4px 1px 2px; }
.products-edit .fv__f { margin: 0; }
.products-edit .fv__in { border: 1px solid transparent; border-radius: 10px; background: transparent;
  font-size: 12px; font-weight: 600; color: var(--sophia-text-2); padding: 2px 6px; box-shadow: none; }
.products-edit .fv__in:focus { outline: none; background: var(--sophia-surface); border-color: var(--sophia-accent); }
.products-edit .fv__x { border: 0; background: transparent; color: var(--sophia-text-faint); font-size: 10px;
  padding: 0 4px; line-height: 1; }
.products-edit .fv__x:hover { color: var(--sophia-bad); }
.products-edit .fv .pv2-reorder, .products-edit .fv .fv__x { opacity: 0; transition: opacity .12s; }
.products-edit .fv:hover .pv2-reorder, .products-edit .fv:focus-within .pv2-reorder,
.products-edit .fv:hover .fv__x, .products-edit .fv:focus-within .fv__x { opacity: 1; }
.products-edit .fv .pv2-iconbtn--xs { width: 16px; height: 16px; font-size: 9px; border: 0; background: transparent; }

/* butoane-icon: reordonare (▲▼), stergere */
.products-edit .pv2-iconbtn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px;
  border: 1px solid var(--sophia-border); border-radius: 2px; background: var(--sophia-surface); color: var(--sophia-text-2); cursor: pointer; }
.products-edit .pv2-iconbtn:hover { background: var(--sophia-surface-2); color: var(--sophia-text); text-decoration: none; }
.products-edit .pv2-iconbtn--danger:hover { background: var(--sophia-bad-bg); color: var(--sophia-bad); border-color: var(--sophia-bad); }
.products-edit .pv2-iconbtn--xs { width: 22px; height: 22px; font-size: 11px; color: var(--sophia-text-muted); }
.products-edit .pv2-reorder { display: inline-flex; align-items: center; gap: 2px; flex: 0 0 auto; }
.products-edit .pv2-reorder__f { display: inline-flex; margin: 0; }

.products-edit .pv2-hint { flex-basis: 100%; width: 100%; margin-top: 6px; color: var(--sophia-text-muted); font-size: 11px; line-height: 1.5; }
.products-edit .pv2-hint strong { color: var(--sophia-text-2); font-weight: 600; }
.products-edit .pv2-fieldnote { color: var(--sophia-text-muted); font-size: 11px; line-height: 1.4; font-weight: 400; }

.products-edit .pv2-sublabel { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--sophia-text-muted); margin: 0 0 10px; }
.products-edit .pv2-gallery { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.products-edit .pv2-thumb { background: var(--sophia-surface); border: 1px solid var(--sophia-border); border-radius: 2px; padding: 6px; text-align: center; }
.products-edit .pv2-thumb .btn { margin-top: 6px; }

/* ===== Pagina produsului (/products/:id) =====
   Antetul, cardul de context, KPI-urile, panourile, tabelele de linii si
   pastilele vin din design system (:is(.ach, .sophia)). Aici raman doar piesele de continut
   ale paginii: galeria, valorile ca pastile, descrierea si formularul propriu. */
/* Trei stive: rail-ul produsului (fix), preturile (mijloc, mai ingust) si
   configuratia. Grid in loc de .col-md-*, ca rail-ul sa nu se ingusteze sub
   latimea codului de bare pe ecrane medii. */
.products-show .ps-cols { display: grid; grid-template-columns: 320px minmax(0, 1fr) minmax(0, 1.3fr);
  gap: 0 16px; align-items: start; }
.products-show .ps-col { min-width: 0; }
@media (max-width: 1400px) { .products-show .ps-cols { grid-template-columns: 300px minmax(0, 1fr); } }
@media (max-width: 991px) { .products-show .ps-cols { grid-template-columns: 1fr; } }

/* trei KPI-uri pe un rand, oricat de ingust ar fi rail-ul */
.products-show .kpi-row { flex-wrap: nowrap; gap: 8px; }
.products-show .kpi { flex: 1 1 0; min-width: 0; padding: 12px 6px; }
.products-show .kpi__value { font-size: 22px; }
.products-show .kpi__label { font-size: 10px; letter-spacing: 0; }

.products-show .ps-mine .kpi__value { font-size: 18px; }
.products-show .ps-mine .kpi .ln-muted { margin-top: 3px; font-size: 11px; }
.products-show .kpi__hint { display: block; margin-top: 2px; text-transform: none;
  letter-spacing: 0; color: var(--sophia-text-faint); }
.products-show .ps-subhead { margin: 0 0 8px; font-size: 10px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--sophia-text-muted); }
.products-show .ps-fx { color: var(--sophia-text-muted); font-variant-numeric: tabular-nums; }
.products-show .ps-fx--ref { color: var(--sophia-accent); font-weight: 700; }
.products-show .ps-fx-rates { margin-top: 8px; font-size: 11px; color: var(--sophia-text-faint); }

.products-show .ps-media .devize-panel__body { padding: 0; }
.products-show .ps-hero { position: relative; display: flex; align-items: center; justify-content: center;
  min-height: 170px; padding: 14px; background: var(--sophia-surface-2); }
.products-show .ps-hero img { max-width: 100%; max-height: 230px; border-radius: 2px; }
.products-show .ps-hero__empty { font-size: 52px; color: var(--sophia-line-3); }
.products-show .ps-hero__zoom { position: absolute; right: 8px; bottom: 8px; width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center; border: 1px solid var(--sophia-border); border-radius: 2px;
  background: rgba(255,255,255,.94); color: var(--sophia-text-2); opacity: 0; transition: opacity .15s ease-in-out; }
.products-show .ps-hero:hover .ps-hero__zoom,
.products-show .ps-hero__zoom:focus { opacity: 1; color: var(--sophia-accent); }
.products-show .ps-thumbs { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px; border-top: 1px solid var(--sophia-border); }
.products-show .ps-thumb { width: 46px; height: 46px; object-fit: cover; border: 1px solid var(--sophia-border);
  border-radius: 2px; background: var(--sophia-surface); cursor: pointer; }
.products-show .ps-thumb:hover, .products-show .ps-thumb--active { border-color: var(--sophia-accent); }

.products-show .ps-barcode { margin-top: 12px; text-align: center; }
.products-show .ps-barcode svg { width: 100%; max-width: 190px; height: auto; }

/* valorile unei optiuni / caracteristici: eticheta la stanga, chip-uri la dreapta */
.products-show .ps-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px;
  padding: 8px 0; border-top: 1px solid var(--sophia-line); }
.products-show .ps-line:first-child { border-top: 0; }
.products-show .ps-line__name { flex: 0 0 150px; font-weight: 600; color: var(--sophia-text); }
.products-show .ps-line__values { display: flex; flex-wrap: wrap; gap: 5px; }
.products-show .ps-line .chip { display: inline-flex; align-items: center; gap: 5px; }
.products-show .ps-line .chip img { width: 18px; height: 18px; object-fit: cover; border-radius: 50%; }

/* tabelul de modificatori: o banda de grup per optiune, ca in editor */
.products-show .ps-band td { background: var(--sophia-neutral-bg); font-weight: 600; color: var(--sophia-text); padding: 6px 10px; }
.products-show .ps-val { display: inline-flex; align-items: center; gap: 8px; }
.products-show .ps-val img { width: 22px; height: 22px; object-fit: cover; border-radius: 2px; border: 1px solid var(--sophia-border); }

.products-show .ps-prose { color: var(--sophia-text-2); line-height: 1.55; }
.products-show .ps-prose img { max-width: 100%; height: auto; }
/* Descrierea nu are voie sa impinga pagina; ce nu incape se citeste in modal. */
.products-show .ps-prose--clamped { max-height: 320px; overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 78%, transparent);
  mask-image: linear-gradient(#000 78%, transparent); }
.products-show .ps-empty { color: var(--sophia-text-muted); margin: 0; }
.products-show .ps-error { margin: 0 0 12px; padding: 7px 11px; font-size: 12px;
  color: var(--sophia-bad); background: var(--sophia-bad-bg); border-radius: 3px; }
.products-show .ps-scroll { overflow-x: auto; }

/* formular de pagina (adauga in lista): eticheta mica uppercase deasupra campului */
.products-show .ps-form { display: flex; flex-direction: column; gap: 9px; }
.products-show .ps-form label { display: block; margin: 0 0 3px; font-size: 10px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--sophia-text-muted); }
.products-show .ps-form .form-control { width: 100%; height: 32px; padding: 4px 8px; font-size: 13px;
  border: 1px solid var(--sophia-line-3); border-radius: 3px; box-shadow: none; }
.products-show .ps-form .form-control:focus { outline: none; border-color: var(--sophia-accent);
  box-shadow: 0 0 0 2px rgba(85,107,141,.12); }
.products-show summary.devize-panel__head { cursor: pointer; list-style: none; }
.products-show summary.devize-panel__head::-webkit-details-marker { display: none; }
.products-show summary.devize-panel__head:after { content: "\f107"; font-family: "Font Awesome 7 Free"; font-weight: 900; margin-left: auto; color: var(--sophia-text-muted); }
.products-show details[open] > summary.devize-panel__head:after { content: "\f106"; }

/* bara de adaugare a stocului: la baza panelului cu taburi (§3.15) */
.products-show .add-row { margin: 14px -18px -16px; padding: 12px 18px; }
.products-show .add-row__field--qty { width: 90px; }
.products-show .add-row__field--loc { width: 100px; }
/* reports/hangers_distribution/_styles */
.hangers-distribution .hd-scroll { overflow: auto; max-height: calc(100vh - 300px); }

.hangers-distribution table.ln tr.hd-cols th { position: sticky; top: 0; z-index: 2; background: var(--sophia-surface); }
.hangers-distribution table.ln tr.ln-groups th { background: var(--sophia-surface); }
.hangers-distribution table.ln th.hd-name,
.hangers-distribution table.ln td.hd-name { position: sticky; left: 0; background: var(--sophia-surface); }
.hangers-distribution table.ln th.hd-name { z-index: 4; }
.hangers-distribution table.ln td.hd-name { z-index: 3; }
.hangers-distribution table.ln tfoot td { position: sticky; bottom: 0; z-index: 2; background: var(--sophia-surface); }
.hangers-distribution table.ln tfoot td.hd-name { z-index: 3; text-align: left; }

.hangers-distribution table.ln tbody tr { cursor: pointer; }
.hangers-distribution table.ln tbody td { position: relative; padding: 7px 10px; }
.hangers-distribution table.ln tbody tr:hover td,
.hangers-distribution table.ln tbody tr:hover td.hd-name { background: var(--sophia-row-hover); }
.hangers-distribution table.ln tbody td:hover::after {
  content: ""; position: absolute; left: 0; right: 0; top: -100vh; bottom: -100vh;
  background: rgba(85, 107, 141, .09); pointer-events: none;
}

.hangers-distribution table.ln .hd-sep { border-left: 1px dashed var(--sophia-line-2); }
.hangers-distribution table.ln th.hd-loc { min-width: 52px; max-width: 116px; }
.hangers-distribution .hd-loc__co {
  display: block; margin-top: 2px; font-size: 9px; font-weight: 500; letter-spacing: 0;
  text-transform: none; color: var(--sophia-text-faint); overflow: hidden; text-overflow: ellipsis;
}
.hangers-distribution table.ln td.hd-zero { color: var(--sophia-line-3); }
.hangers-distribution table.ln td.hd-total { font-weight: 600; }
.hangers-distribution .hd-name .chip { margin-left: 6px; }
/* roller_fabrics/_styles */
.roller-fabrics-index .rf-aside { position: sticky; top: 62px; }
.roller-fabrics-index .rf-tree { font-size: 13px; max-height: calc(100vh - 150px); overflow-y: auto; }
.roller-fabrics-index .rf-tree ul { list-style: none; padding-left: 0; margin: 0; }
.roller-fabrics-index .rf-tree__link { display: flex; align-items: center; gap: 7px; padding: 5px 7px;
  border-radius: 2px; color: var(--sophia-text-2); text-decoration: none; }
.roller-fabrics-index .rf-tree__link:hover { background: var(--sophia-surface-2); color: var(--sophia-text); text-decoration: none; }
.roller-fabrics-index .rf-tree__link .fa { width: 13px; color: var(--sophia-text-faint); }
.roller-fabrics-index .rf-tree__name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.roller-fabrics-index .rf-tree__link.is-active { background: var(--sophia-neutral-bg); color: var(--sophia-accent); font-weight: 600; }
.roller-fabrics-index .rf-tree__link.is-active .fa { color: var(--sophia-accent); }

@media (max-width: 880px) {
  .roller-fabrics-index .rf-aside { position: static; }
  .roller-fabrics-index .rf-tree { max-height: 320px; }
}

.roller-fabrics-show .rf-media { text-align: center; margin-bottom: 14px; }
.roller-fabrics-show .rf-media img { max-width: 100%; height: auto; border-radius: 3px; }
.roller-fabrics-show .rf-barcode { margin-top: 14px; text-align: center; }
.roller-fabrics-show .rf-barcode svg { max-width: 100%; height: 52px; }
.roller-fabrics-show .rf-desc { font-size: 13px; color: var(--sophia-text-2); }
.roller-fabrics-show .rf-desc p:last-child { margin-bottom: 0; }
.roller-fabrics-show .rf-gallery,
.roller-fabrics-form .rf-gallery { display: flex; flex-wrap: wrap; gap: 10px; }
.roller-fabrics-show .rf-gallery figure,
.roller-fabrics-form .rf-gallery figure { margin: 0; text-align: center; }
.roller-fabrics-show .rf-gallery img,
.roller-fabrics-form .rf-gallery img { display: block; border: 1px solid var(--sophia-border); border-radius: 3px; }
.roller-fabrics-show .rf-gallery figcaption,
.roller-fabrics-form .rf-gallery figcaption { margin-top: 5px; }
/* settings/_styles */
.settings .set-sec { display:flex; align-items:center; gap:12px; margin:28px 0 14px;
  font-size:15px; font-weight:600; color:var(--sophia-text); }
.settings .set-sec::after { content:""; flex:1; height:1px; background:var(--sophia-border); }
.settings .tab-pane > .set-sec:first-child { margin-top:4px; }

.settings .set-grid { display:grid; grid-template-columns:1fr; gap:12px 0; }
.settings .set-field { min-width:0; display:grid; grid-template-columns:260px minmax(0, 1fr);
  align-items:center; gap:0 15px; }
.settings .set-field > label { margin:0; font-size:13px; font-weight:400; line-height:1.4;
  letter-spacing:0; text-transform:none; color:var(--sophia-text); }
.settings .set-field .form-control,
.settings .set-field .form-select { height:var(--sophia-control-h); padding:4px 9px; font-size:13px; line-height:1.5;
  border-radius:3px; }
.settings .set-field select.form-select { height:var(--sophia-control-h); line-height:1.5; }
.settings .set-field--narrow .form-control,
.settings .set-field--narrow .input-group { max-width:160px; }
.settings .set-field:has(input[type="checkbox"]) { display:block; }

.settings .set-note { margin:0 0 12px; font-size:12px; color:var(--sophia-text-muted); }
.settings .set-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:14px 0 4px; }
.settings .set-state { margin:14px 0 0; font-size:12px; color:var(--sophia-text-2); }
.settings .set-state .pill { margin-right:6px; }
.settings .set-state code { font-size:12px; color:var(--sophia-text-2); background:var(--sophia-bg-header); }

.settings .cx-form-grid { margin-left:-8px; margin-right:-8px; }
.settings .cx-form-grid > [class*="col-"] { padding-left:8px; padding-right:8px; }

.settings lexxy-editor { background:var(--sophia-surface); border:1px solid var(--sophia-line-3); border-radius:3px; min-height:150px; }
.settings .ann-list { margin:0; padding:0; list-style:none; }
.settings .ann { border:1px solid var(--sophia-border); border-radius:3px; padding:10px 12px; margin-bottom:8px; }
.settings .ann--live { border-color:var(--sophia-line-3); background:var(--sophia-surface-2); }
.settings .ann__head { display:flex; align-items:center; gap:8px; }
.settings .ann__date { font-size:11px; color:var(--sophia-text-muted); font-variant-numeric:tabular-nums; }
.settings .ann__actions { display:flex; align-items:center; gap:6px; margin-left:auto; }
.settings .ann__actions form { margin:0; }
.settings .ann__body { margin-top:8px; font-size:13px; color:var(--sophia-text); }
.settings .ann__body > :first-child { margin-top:0; }
.settings .ann__body > :last-child { margin-bottom:0; }
/* tools/errtrack/items/_styles */
/* Piese specifice error trackerului, scope .errtrack. Cardul, taburile,
   pastilele, .kpi, .ln, .cx-kv, .oh-strip vin din achizitii.css. */
.errtrack .mono { font-family:Menlo,Consolas,monospace; font-size:12px; }
.errtrack .et-sub { color:var(--sophia-text-muted); font-size:11px; }
/* si in meniul de actiuni, care e randat in header, in afara lui .errtrack */
.et-dot { display:inline-block; width:8px; height:8px; border-radius:50%; }
.errtrack .et-delta { font-size:11px; font-weight:700; margin-left:4px; }
.errtrack .et-delta--bad { color:var(--sophia-bad); }
.errtrack .et-delta--good { color:var(--sophia-good); }
.errtrack .devize-panel { margin-bottom:14px; }
.errtrack .devize-panel__head { display:flex; align-items:center; gap:8px; }
.errtrack .devize-panel__actions { margin-left:auto; display:flex; align-items:center; gap:6px; }
.errtrack .devize-panel__actions form { display:inline-block; margin:0; }

/* sparkline din tabel: latimea celulei, inaltimea unui rand */
.errtrack .et-spark { display:block; width:108px; height:26px; }

/* ---- grafic de evenimente ---- */
/* Panoul selectat se alege din radioul bifat: :has() coboara selectia din
   antetul panelului in corp, deci nu e nevoie de JS. */
.errtrack .et-chart-panel { display:none; }
.errtrack .et-charts:has(#et-range-24h:checked) .et-chart-panel[data-range="24h"],
.errtrack .et-charts:has(#et-range-7d:checked)  .et-chart-panel[data-range="7d"],
.errtrack .et-charts:has(#et-range-14d:checked) .et-chart-panel[data-range="14d"],
.errtrack .et-charts:has(#et-range-2mo:checked) .et-chart-panel[data-range="2mo"] { display:block; }
.errtrack .et-chart { position:relative; height:124px; }
.errtrack .et-chart__ys { position:absolute; left:0; top:14px; height:84px; width:30px; }
.errtrack .et-chart__y { position:absolute; right:0; transform:translateY(-50%); font-size:10px;
  font-variant-numeric:tabular-nums; color:var(--sophia-text-faint); }
.errtrack .et-chart__area { position:absolute; left:38px; right:12px; top:14px; height:84px; }
.errtrack .et-chart__plot { position:absolute; inset:0; width:100%; height:100%; }
.errtrack .et-chart__dot { position:absolute; width:7px; height:7px; border-radius:50%;
  background:var(--sophia-accent); box-shadow:0 0 0 2px var(--sophia-surface); transform:translate(-50%,-50%); }
.errtrack .et-chart__xs { position:absolute; bottom:5px; left:38px; right:12px; height:11px; }
.errtrack .et-chart__x { position:absolute; top:0; white-space:nowrap; font-size:11px; color:var(--sophia-text-muted); }
.errtrack .et-chart__x--mid { transform:translateX(-50%); }
.errtrack .et-chart__x--last { transform:translateX(-100%); }
.errtrack .et-chart__total { margin:6px 0 0; font-size:11px; color:var(--sophia-text-muted); }

/* ---- stack trace ---- */
.errtrack .et-message { margin-bottom:12px; padding:10px 12px; background:var(--sophia-bad-bg);
  border-radius:3px; font-family:Menlo,Consolas,monospace; font-size:12px; line-height:1.6;
  color:var(--sophia-text); white-space:pre-wrap; overflow-wrap:anywhere; }
.errtrack .et-message b { color:var(--sophia-bad); margin-right:4px; }
.errtrack .et-frames { border:1px solid var(--sophia-border); border-radius:3px; overflow:hidden; }
.errtrack .et-frame { border-top:1px solid var(--sophia-line); }
.errtrack .et-frames > :first-child { border-top:0; }
.errtrack .et-frame > summary,
.errtrack .et-frame--plain { padding:7px 12px; font-family:Menlo,Consolas,monospace; font-size:12px;
  line-height:1.7; cursor:pointer; overflow-wrap:anywhere; }
.errtrack .et-frame--plain { cursor:default; color:var(--sophia-text-muted); }
.errtrack .et-frame > summary:hover { background:var(--sophia-surface-2); }
.errtrack .et-frame__file { color:var(--sophia-text-2); }
.errtrack .et-frame__file b { color:var(--sophia-text); }
.errtrack .et-frame__line { color:var(--sophia-good); font-weight:600; }
.errtrack .et-frame__in { color:var(--sophia-text-faint); font-size:11px; margin:0 3px; }
.errtrack .et-frame__method { color:var(--sophia-product); font-weight:500; }
.errtrack .et-frames__group { border-top:1px solid var(--sophia-line-3); background:var(--sophia-surface-2); }
.errtrack .et-frames__group > summary { padding:7px 12px; font-size:12px; color:var(--sophia-text-muted); cursor:pointer; }
.errtrack .et-code { background:var(--sophia-surface-2); border-top:1px solid var(--sophia-line);
  font-family:Menlo,Consolas,monospace; font-size:11.5px; line-height:1.8; overflow-x:auto; }
.errtrack .et-code__row { display:grid; grid-template-columns:52px minmax(0,1fr); }
.errtrack .et-code__row.is-error { background:var(--sophia-bad-bg); }
.errtrack .et-code__num { padding-right:12px; text-align:right; color:var(--sophia-text-faint);
  border-right:1px solid var(--sophia-line-2); user-select:none; }
.errtrack .et-code__row.is-error .et-code__num,
.errtrack .et-code__row.is-error .et-code__src { color:var(--sophia-bad); }
.errtrack .et-code__src { padding:0 12px 0 14px; white-space:pre; color:var(--sophia-text-2); }
.errtrack .et-code__note { margin:0; padding:6px 12px; font-size:11px; color:var(--sophia-text-muted);
  background:var(--sophia-surface-2); }
.errtrack .et-code__note--warn { color:var(--sophia-warn); background:var(--sophia-warn-bg); }

/* ---- ocurente: lista lunga, cu scroll propriu ---- */
.errtrack .et-occurrences { max-height:340px; overflow-y:auto; }
.errtrack .et-occurrences .ln tbody tr.is-selected td { background:var(--sophia-row-hover); }

/* ---- payload: arbore JSON ---- */
.errtrack .et-json { font-family:Menlo,Consolas,monospace; font-size:11.5px; line-height:1.8;
  max-height:420px; overflow:auto; }
.errtrack .et-json__node > summary,
.errtrack .et-json__leaf { padding-left:calc(var(--depth) * 14px); }
.errtrack .et-json__node > summary { cursor:pointer; }
.errtrack .et-json__node > summary:hover { background:var(--sophia-surface-2); }
.errtrack .et-json__key { color:var(--sophia-info); font-weight:600; margin-right:6px; }
.errtrack .et-json__size { color:var(--sophia-text-muted); }
.errtrack .et-json__null { color:var(--sophia-text-muted); font-style:italic; }
.errtrack .et-json__bool { color:var(--sophia-product); }
.errtrack .et-json__num { color:var(--sophia-warn); }
.errtrack .et-json__str { color:var(--sophia-good); overflow-wrap:anywhere; }

/* ---- panoul de analiza AI ---- */
.errtrack .et-headline { font-family:"Montserrat",sans-serif; font-size:16px; font-weight:600;
  color:var(--sophia-text); margin:0 0 8px; }
.errtrack .et-lead { font-size:13px; color:var(--sophia-text-2); margin-bottom:0; }
.errtrack .et-chain { list-style:none; margin:0; padding:0; counter-reset:et-step; }
.errtrack .et-chain li { counter-increment:et-step; position:relative; padding:0 0 12px 30px; }
.errtrack .et-chain li::before { content:counter(et-step); position:absolute; left:0; top:0;
  width:20px; height:20px; border-radius:50%; background:var(--sophia-product-bg);
  color:var(--sophia-product); font-size:11px; font-weight:700; display:flex;
  align-items:center; justify-content:center; }
.errtrack .et-chain__step { display:block; font-size:13px; color:var(--sophia-text-2); }
.errtrack .et-chain__evidence { display:block; margin-top:2px; color:var(--sophia-text-faint);
  overflow-wrap:anywhere; }
.errtrack .et-terminal { margin:8px 0; padding:10px 12px; background:var(--sophia-text); color:var(--sophia-text-faint);
  border-radius:3px; font-family:Menlo,Consolas,monospace; font-size:12px; white-space:pre-wrap;
  overflow-wrap:anywhere; border:0; }
.errtrack .et-checks { list-style:none; margin:0 0 8px; padding:0; }
.errtrack .et-checks li { display:flex; gap:7px; font-size:13px; color:var(--sophia-text-2); padding:3px 0; }
.errtrack .et-checks li .fa { margin-top:3px; color:var(--sophia-text-faint); }
.errtrack .et-expand > summary { cursor:pointer; font-size:12px; color:var(--sophia-text-2); }
.errtrack .et-error .jb-pre { margin:6px 0 0; padding:10px; background:var(--sophia-surface-2);
  border:1px solid var(--sophia-border); border-radius:3px; font-size:11px; line-height:1.6;
  max-height:280px; overflow:auto; white-space:pre-wrap; }

/* Randat in drawer, care e mutat in <body>: selectorul nu poate fi scoped
   pe .errtrack, altfel n-ar prinde nimic. */
.et-mail { margin:14px 0; padding:12px; background:var(--sophia-surface-2);
  border:1px solid var(--sophia-border); border-radius:3px; font-family:Menlo,Consolas,monospace;
  font-size:11.5px; line-height:1.7; max-height:340px; overflow:auto; white-space:pre-wrap; color:var(--sophia-text-2); }
/* warehouses/_styles */
.warehouses-index .wh-obs { display:block; max-width:340px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/*
 * Stilurile de modul, extrase din partialele `_styles` care erau injectate ca
 * <style> inline. Se incarca dupa achizitii.css, deci pastreaza ordinea in
 * cascada pe care o aveau cand veneau din corpul paginii.
 *

 */
