/* HidroFlow — breviar de calcul multi-secțiune.
 * Folosit de paginile de tip breviar cu motor propriu (vezi assets/js/tools/).
 * Extinde design-system-ul din style.css; nu redefinește variabilele de brand.
 */

/* ---------- Shell ---------- */
.bv {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 316px;
  gap: 30px;
  align-items: start;
  padding: 38px 0 70px;
}
.bv-main { min-width: 0; display: grid; gap: 22px; }

/* ---------- Secțiune ---------- */
.bv-sec {
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  scroll-margin-top: calc(var(--nav-h) + 16px);
}
.bv-sec > header {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 17px 22px;
  border-bottom: 1px solid var(--slate-100);
  background: var(--slate-50);
}
.bv-sec > header .bv-no {
  flex: none;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: var(--red-600);
  color: #fff;
  display: grid;
  place-items: center;
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: .84rem;
}
.bv-sec > header h3 { margin: 0; font-size: 1.04rem; letter-spacing: -.01em; }
.bv-sec > header p { margin: 2px 0 0; font-size: .82rem; color: var(--slate-500); }
.bv-sec > header .bv-hd { min-width: 0; }
.bv-body { padding: 22px; }
.bv-body > * + * { margin-top: 16px; }

/* Secțiune opțională, dezactivată (ex. pluvial pe sistem separativ) */
.bv-sec.is-off { opacity: .55; }
.bv-sec.is-off .bv-body { display: none; }

/* ---------- Secțiuni premium ---------- */
.bv-sec.is-locked > header { background: linear-gradient(90deg, var(--red-50), var(--slate-50)); }
.bv-sec.is-locked > header .bv-no { background: var(--slate-400); }

.bv-plus.bv-pro { color: #fff; background: var(--red-600); border-color: var(--red-600); }

.bv-lock {
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 26px 20px;
  text-align: center;
}
.bv-lock svg { width: 30px; height: 30px; color: var(--slate-300); }
.bv-lock p { margin: 0; font-size: .88rem; color: var(--slate-600); }
.bv-lock b { color: var(--ink-800); }

.bv-loading { padding: 20px; text-align: center; color: var(--slate-400); font-size: .88rem; }

.btn.btn-locked { color: var(--slate-500); border-color: var(--slate-200); background: var(--slate-50); }
.btn.btn-locked:hover { color: var(--red-700); border-color: var(--red-300); background: var(--red-50); }

/* Marcaj pentru modulele care depășesc breviarul clasic */
.bv-plus {
  flex: none;
  margin-left: auto;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--red-700);
  background: var(--red-50);
  border: 1px solid var(--red-100);
  border-radius: 999px;
  padding: 3px 9px;
}

/* ---------- Tabele ---------- */
.bv-scroll { overflow-x: auto; margin: 0 -22px; padding: 0 22px; }
.bv-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .85rem;
}
.bv-table th {
  padding: 9px 10px;
  text-align: left;
  font-size: .74rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .045em;
  color: var(--slate-500);
  background: var(--slate-50);
  border-bottom: 1.5px solid var(--slate-200);
  white-space: nowrap;
}
.bv-table td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--slate-100);
  color: var(--slate-600);
  vertical-align: middle;
}
.bv-table tbody tr:last-child td { border-bottom: 0; }
.bv-table tbody tr:hover td { background: var(--slate-50); }

/* Coloane numerice: mono, aliniate la dreapta */
.bv-table .num,
.bv-table th.num { text-align: right; font-family: var(--font-mono); }
.bv-table td.num { color: var(--ink-900); font-weight: 650; white-space: nowrap; }
.bv-table td.num.muted { color: var(--slate-400); font-weight: 550; }

/* Rând de total */
.bv-table tr.tot td {
  border-top: 2px solid var(--slate-300);
  border-bottom: 0;
  background: var(--red-50);
  font-weight: 750;
  color: var(--ink-900);
}
.bv-table tr.tot:hover td { background: var(--red-50); }

/* Prima coloană = denumirea articolului */
.bv-table td:first-child { color: var(--ink-800); font-weight: 600; }
.bv-table td .sub { display: block; font-size: .76rem; font-weight: 500; color: var(--slate-400); }

/* Input în celulă */
.bv-table input,
.bv-table select {
  width: 100%;
  min-width: 74px;
  background: var(--slate-50);
  border: 1.5px solid var(--slate-200);
  border-radius: 8px;
  padding: 6px 9px;
  font-family: var(--font-mono);
  font-size: .84rem;
  font-weight: 650;
  color: var(--ink-800);
  text-align: right;
  outline: none;
  transition: border-color .15s, background .15s;
}
.bv-table select { text-align: left; font-family: var(--font); }
.bv-table input:focus,
.bv-table select:focus { border-color: var(--red-400); background: #fff; box-shadow: var(--ring); }
/* Rând cu cantitate introdusă — se evidențiază singur */
.bv-table tr.has-qty td:first-child { color: var(--red-700); }
.bv-table tr.has-qty input { border-color: var(--red-300); background: #fff; }

.bv-rm {
  border: 0;
  background: transparent;
  color: var(--slate-400);
  cursor: pointer;
  padding: 4px;
  line-height: 0;
  border-radius: 6px;
}
.bv-rm:hover { color: var(--red-600); background: var(--red-50); }
.bv-rm svg { width: 15px; height: 15px; }

/* ---------- Verdicte / verificări ---------- */
.bv-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 15px;
  border-radius: 11px;
  font-size: .85rem;
  font-weight: 550;
  border: 1px solid;
}
.bv-check svg { width: 17px; height: 17px; flex: none; margin-top: 1px; }
.bv-check b { font-weight: 750; }
.bv-check.ok   { background: #f0fdf4; border-color: #bbf7d0; color: #15803d; }
.bv-check.warn { background: #fffbeb; border-color: #fde68a; color: #b45309; }
.bv-check.bad  { background: var(--red-50); border-color: var(--red-100); color: var(--red-700); }

/* ---------- Notă normativă ---------- */
.bv-note {
  display: flex;
  gap: 9px;
  padding: 12px 15px;
  background: var(--slate-50);
  border-left: 3px solid var(--slate-300);
  border-radius: 0 9px 9px 0;
  font-size: .82rem;
  color: var(--slate-600);
  line-height: 1.55;
}
.bv-note svg { width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--slate-400); }
.bv-note b { color: var(--ink-800); }
.bv-note code {
  font-family: var(--font-mono);
  font-size: .8rem;
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: 5px;
  padding: 1px 5px;
  color: var(--ink-800);
}

/* Formula inline, mai discretă decât .formula din style.css.
 * Se lasă să curgă pe mai multe rânduri: relațiile lungi (Vav) altfel ar
 * împinge tabelul în afara cardului. */
.bv-eq {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: .78rem;
  line-height: 1.5;
  color: var(--slate-500);
}

/* ---------- Grile de câmpuri ---------- */
.bv-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.bv-grid.c2 { grid-template-columns: repeat(2, 1fr); }
.bv-grid.c4 { grid-template-columns: repeat(4, 1fr); }

/* ---------- Sumar sticky ---------- */
.bv-side {
  position: sticky;
  top: calc(var(--nav-h) + 18px);
  display: grid;
  gap: 14px;
  /* Pe ferestre joase panoul depășea înălțimea viewportului, iar butoanele din
     josul lui (Salvează / Raport PDF / Export CSV) rămâneau inaccesibile. Îl
     limităm la înălțimea ecranului și îi dăm scroll intern; pe ferestre înalte
     conținutul încape și bara nu apare. */
  max-height: calc(100vh - var(--nav-h) - 36px);
  overflow-y: auto;
  overscroll-behavior: contain;
}
.bv-sum {
  background: #fff;
  border: 1px solid var(--slate-200);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.bv-sum-hero {
  background: linear-gradient(135deg, var(--red-600), var(--red-800));
  color: #fff;
  padding: 18px 20px;
}
.bv-sum-hero .rk { font-size: .74rem; opacity: .82; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
.bv-sum-hero .rv { font-size: 1.95rem; font-weight: 850; font-family: var(--font-mono); letter-spacing: -.03em; line-height: 1.15; }
.bv-sum-hero .ru { font-size: .86rem; opacity: .8; font-weight: 600; }
.bv-sum-list { display: grid; }
.bv-sum-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 20px;
  border-bottom: 1px solid var(--slate-100);
  font-size: .82rem;
}
.bv-sum-row:last-child { border-bottom: 0; }
.bv-sum-row .k { color: var(--slate-500); font-weight: 550; }
.bv-sum-row .v { font-family: var(--font-mono); font-weight: 750; color: var(--ink-900); white-space: nowrap; }
.bv-sum-head {
  padding: 9px 20px;
  background: var(--slate-50);
  border-bottom: 1px solid var(--slate-100);
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--slate-500);
}
.bv-actions { display: grid; gap: 8px; padding: 14px 16px; border-top: 1px solid var(--slate-100); }
.bv-msg { font-size: .8rem; text-align: center; }

/* Cuprins */
.bv-toc { display: grid; gap: 1px; }
.bv-toc a {
  display: flex;
  gap: 9px;
  padding: 6px 20px;
  font-size: .8rem;
  color: var(--slate-600);
  text-decoration: none;
  border-left: 2px solid transparent;
}
.bv-toc a:hover { color: var(--red-700); background: var(--red-50); border-left-color: var(--red-400); }
.bv-toc a .n { font-family: var(--font-mono); color: var(--slate-400); font-weight: 700; }

/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
  .bv { grid-template-columns: 1fr; }
  .bv-side { position: static; }
  .bv-toc { display: none; }
}
@media (max-width: 720px) {
  .bv-grid, .bv-grid.c2, .bv-grid.c4 { grid-template-columns: 1fr; }
  .bv-body { padding: 16px; }
  .bv-scroll { margin: 0 -16px; padding: 0 16px; }
}

/* ---------- Print / PDF ---------- */
@media print {
  @page { size: A4; margin: 14mm 12mm; }

  nav, .nav, footer, .footer, .cta, .related, .page-meta, .breadcrumb,
  .bv-side, .bv-rm, .flash, .bv-toc { display: none !important; }

  body { background: #fff; font-size: 10.5pt; }
  .page-hero { padding: 0 0 8mm; background: none; }
  .page-hero h1 { font-size: 16pt; }
  .page-hero .lead { font-size: 10pt; color: #333; }
  .container { max-width: none; padding: 0; }

  .bv { display: block; padding: 0; }
  .bv-main { display: block; }

  .bv-sec {
    break-inside: avoid;
    page-break-inside: avoid;
    box-shadow: none;
    border: 1px solid #cbd5e1;
    border-radius: 0;
    margin-bottom: 5mm;
  }
  .bv-sec.is-off, .bv-sec.is-locked { display: none; }
  .bv-sec > header { background: #f1f5f9; padding: 6px 10px; }
  .bv-sec > header .bv-no { background: #0b1120; }
  .bv-body { padding: 8px 10px; }

  /* Rândurile fără cantitate nu au ce căuta în breviarul tipărit */
  .bv-table tr.is-empty { display: none; }
  .bv-table { font-size: 8.5pt; }
  .bv-table th { background: #f8fafc; }
  .bv-table input, .bv-table select {
    border: 0;
    background: none;
    padding: 0;
    box-shadow: none;
    -webkit-appearance: none;
    appearance: none;
  }
  .bv-scroll { overflow: visible; margin: 0; padding: 0; }

  .bv-check { border-width: 1px; }
  .bv-check.ok { background: #f0fdf4; }
}
