/* Sous-détail déboursé & analyse marge — éditeur devis */
.qcb-modal { max-width: 1050px !important; }
.qcb-modal-bg { z-index: 1002; }
/* Biblio matériaux ouverte depuis + Matériaux (doit passer au-dessus du sous-détail) */
#materials-picker-modal.trade-picker-bg,
#materials-picker-modal.commercial-modal-bg {
  z-index: 1100 !important;
}

/* Chemin catégorie › sous-catégorie sous la désignation matériau */
.qcb-desig-cell { min-width: 200px; }
.qcb-mat-path {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 6px;
  margin-bottom: 4px;
  font-size: 0.78em;
  line-height: 1.2;
}
.qcb-mat-cat {
  background: rgba(6, 182, 212, 0.18);
  color: #67e8f9;
  border: 1px solid rgba(6, 182, 212, 0.45);
  border-radius: 6px;
  padding: 1px 7px;
  font-weight: 600;
}
.qcb-mat-sub {
  background: rgba(34, 197, 94, 0.16);
  color: #86efac;
  border: 1px solid rgba(34, 197, 94, 0.4);
  border-radius: 6px;
  padding: 1px 7px;
  font-weight: 600;
}
.qcb-mat-sep { color: var(--text-muted); opacity: 0.7; }

/* ——— Rapport prévisionnel vs réel (ludique) ——— */
.pcr-modal-bg { z-index: 1005; }
.pcr-modal { max-width: 1100px !important; max-height: 92vh; overflow-y: auto; }
.pcr-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 12px; }
.pcr-hero {
  display: flex; gap: 20px; align-items: center; flex-wrap: wrap;
  padding: 16px; border-radius: 14px;
  background: linear-gradient(135deg, rgba(214,40,40,0.12), rgba(59,130,246,0.1));
  border: 1px solid var(--border); margin-bottom: 14px;
}
.pcr-score {
  width: 88px; height: 88px; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  font-weight: 800; border: 3px solid #64748b; background: rgba(0,0,0,0.25);
}
.pcr-score-num { font-size: 1.8em; line-height: 1; }
.pcr-score-label { font-size: 0.75em; opacity: 0.8; }
.pcr-score-good, .pcr-score-ok { border-color: #22c55e; color: #86efac; }
.pcr-score-warn { border-color: #f59e0b; color: #fcd34d; }
.pcr-score-danger { border-color: #ef4444; color: #fca5a5; }
.pcr-verdict { margin: 8px 0 0; padding: 8px 10px; border-radius: 8px; }
.pcr-verdict-good, .pcr-verdict-ok { background: rgba(34,197,94,0.12); border: 1px solid rgba(34,197,94,0.35); }
.pcr-verdict-warn { background: rgba(245,158,11,0.12); border: 1px solid rgba(245,158,11,0.35); }
.pcr-verdict-danger { background: rgba(239,68,68,0.12); border: 1px solid rgba(239,68,68,0.4); }
.pcr-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.pcr-kpis {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px; margin-bottom: 16px;
}
.pcr-kpi {
  background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; padding: 12px;
}
.pcr-kpi-label { display: block; font-size: 0.75em; color: var(--text-muted); text-transform: uppercase; }
.pcr-kpi-val { font-size: 1.15em; font-weight: 700; }
.pcr-kpi-bad .pcr-kpi-val { color: #f87171; }
.pcr-kpi-good .pcr-kpi-val { color: #4ade80; }
.pcr-section-title { margin: 18px 0 8px; font-size: 1em; }
.pcr-table { width: 100%; border-collapse: collapse; font-size: 0.9em; margin-bottom: 12px; }
.pcr-table th, .pcr-table td { border: 1px solid var(--border); padding: 7px 8px; text-align: left; }
.pcr-table th { background: var(--bg-elevated); font-size: 0.75em; text-transform: uppercase; }
.pcr-table .num { text-align: right; white-space: nowrap; }
.pcr-table tr.pcr-danger { background: rgba(239,68,68,0.1); }
.pcr-table tr.pcr-warn { background: rgba(245,158,11,0.08); }
.pcr-table tr.pcr-good { background: rgba(34,197,94,0.08); }
.pcr-emoji { white-space: nowrap; }
.pcr-delta { font-weight: 600; }
.pcr-detail-fold { margin: 10px 0; padding: 8px 12px; border: 1px solid var(--border); border-radius: 10px; }
.pcr-detail-fold summary { cursor: pointer; font-weight: 600; }
.pcr-badge-bad { background: rgba(239,68,68,0.2); color: #fca5a5; padding: 1px 8px; border-radius: 10px; font-size: 0.8em; }
.pcr-badge-ok { background: rgba(34,197,94,0.15); color: #86efac; padding: 1px 8px; border-radius: 10px; font-size: 0.8em; }
.pcr-legend { margin-top: 16px; padding-top: 10px; border-top: 1px solid var(--border); }
.pcr-empty { padding: 24px; text-align: center; border: 1px dashed var(--border); border-radius: 12px; }
.pcr-table-sm { font-size: 0.85em; }
.pcr-edit h5 { margin: 16px 0 6px; color: var(--red); }
.qcb-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 16px; }
.qcb-head h3 { margin: 0 0 6px; }
.qcb-summary {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.qcb-kpi {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
}
.qcb-kpi-primary { border-color: rgba(34, 197, 94, 0.45); background: rgba(34, 197, 94, 0.08); }
.qcb-kpi-danger { border-color: rgba(239, 68, 68, 0.5); background: rgba(239, 68, 68, 0.1); }
.qcb-kpi-label { display: block; font-size: 0.78em; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.qcb-kpi-value { display: block; font-size: 1.35em; font-weight: 700; color: var(--red); margin-top: 4px; }
.qcb-kpi-sub { display: block; font-size: 0.82em; color: var(--text-muted); margin-top: 4px; }
.qcb-sliders {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 14px;
  padding: 12px 14px;
  background: var(--bg-elevated);
  border-radius: 10px;
  border: 1px solid var(--border);
}
.qcb-sliders label { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.9em; }
.qcb-sliders input[type="number"] {
  width: 72px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  text-align: right;
}
.qcb-range-hint { font-size: 0.82em; color: var(--text-muted); }
.qcb-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 8px; margin-bottom: 10px; }
.qcb-table { width: 100%; border-collapse: collapse; font-size: 0.88em; }
.qcb-table th, .qcb-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.qcb-table th { background: var(--bg-elevated); text-align: left; font-weight: 600; }
.qcb-table th.num, .qcb-table td.num { text-align: right; white-space: nowrap; }
.qcb-table input, .qcb-table select {
  width: 100%;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--bg);
  color: var(--text);
  font-size: inherit;
  box-sizing: border-box;
}
.qcb-table td:first-child select { min-width: 130px; }
.qcb-table .qcb-pht { font-weight: 600; color: var(--red); }
.qcb-total-row td { background: var(--bg-elevated); }
.qcb-empty td { text-align: center; color: var(--text-muted); padding: 24px !important; }
.qcb-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.qcb-alerts { margin-bottom: 16px; }
.qcb-alerts-table { width: 100%; border-collapse: collapse; font-size: 0.85em; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.qcb-alerts-table th, .qcb-alerts-table td { padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
.qcb-alerts-table th { background: var(--bg-elevated); }
.qcb-alerts-table .meta { font-size: 0.9em; margin-top: 4px; color: var(--text-muted); }
.qcb-alerts-table .num { text-align: right; white-space: nowrap; }
.qcb-alert-ok { background: rgba(34, 197, 94, 0.06); }
.qcb-alert-ok .qcb-status-cell { color: #22c55e; font-weight: 700; }
.qcb-alert-warn { background: rgba(234, 179, 8, 0.08); }
.qcb-alert-warn .qcb-status-cell { color: #eab308; font-weight: 700; }
.qcb-alert-danger { background: rgba(239, 68, 68, 0.08); }
.qcb-alert-danger .qcb-status-cell { color: #ef4444; font-weight: 700; }
.qcb-mo-note { margin: 8px 0 0; }
.qcb-footer { border-top: 1px solid var(--border); padding-top: 14px; }
.qcb-loss-warn { color: #ef4444; font-weight: 600; margin: 0 0 12px; }
.qcb-footer-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; }
.qcb-apply-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.quote-line-actions .qcb-line-btn {
  font-size: 0.78em;
  padding: 4px 6px;
  white-space: nowrap;
}
.quote-line-actions .qcb-line-btn.has-breakdown {
  border-color: #22c55e;
  color: #22c55e;
}
.quote-line-actions .qcb-line-btn.qcb-loss {
  border-color: #ef4444;
  color: #ef4444;
}
.quote-lines-table .quote-th-deb,
.quote-lines-table .quote-cell-deb { width: 1%; min-width: 88px; max-width: 110px; white-space: nowrap; }
.quote-lines-table .quote-debourse-input {
  width: 100%;
  text-align: right;
  padding: 6px 8px;
  border: 1px solid rgba(34, 197, 94, 0.35);
  border-radius: 4px;
  background: rgba(34, 197, 94, 0.06);
  color: #22c55e;
  font-weight: 600;
  font-size: 0.88em;
}
.quote-lines-table .line-pv-hint { margin-top: 4px; font-size: 0.78em; color: var(--text-muted); }

/* Résumé déboursé sur le devis (admin) */
.qcb-card-summary { color: #7eb8ff !important; font-size: 0.82em !important; margin-top: 6px !important; }
.qcb-summary-panel {
  margin: 16px 0;
  padding: 16px;
  border: 1px solid rgba(234, 179, 8, 0.35);
  border-radius: 12px;
  background: rgba(234, 179, 8, 0.06);
}
.qcb-summary-head h4 { margin: 0 0 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.qcb-internal-badge {
  font-size: 0.72em;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(59, 130, 246, 0.15);
  color: #3b82f6;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.qcb-summary-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: center;
  margin: 12px 0;
  padding: 10px 12px;
  background: var(--bg-elevated);
  border-radius: 8px;
  border: 1px solid var(--border);
}
.qcb-summary-controls label { display: flex; align-items: center; gap: 8px; font-size: 0.9em; }
.qcb-summary-controls input[type="number"] {
  width: 72px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  text-align: right;
}
.qcb-summary-table { width: 100%; border-collapse: collapse; font-size: 0.88em; margin-top: 8px; }
.qcb-summary-table th, .qcb-summary-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.qcb-summary-table th { background: var(--bg-elevated); text-align: left; }
.qcb-summary-table .num { text-align: right; white-space: nowrap; }
.qcb-sum-ok { background: rgba(34, 197, 94, 0.05); }
.qcb-sum-warn { background: rgba(234, 179, 8, 0.08); }
.qcb-sum-danger { background: rgba(239, 68, 68, 0.08); }
.qcb-sum-verdict { margin-top: 12px; padding: 10px 12px; border-radius: 8px; font-weight: 600; font-size: 0.9em; }
.qcb-sum-verdict-ok { background: rgba(34, 197, 94, 0.12); color: #22c55e; }
.qcb-sum-verdict-warn { background: rgba(234, 179, 8, 0.12); color: #eab308; }
.qcb-sum-verdict-danger { background: rgba(239, 68, 68, 0.12); color: #ef4444; }
.qcb-summary-foot { margin-top: 12px; display: flex; justify-content: flex-end; }

.qcb-summary-fold {
  margin: 14px 0 0;
  border: 1px solid rgba(234, 179, 8, 0.35);
  border-radius: 10px;
  background: rgba(234, 179, 8, 0.04);
}
.qcb-summary-fold-summary {
  cursor: pointer;
  padding: 10px 14px;
  font-weight: 600;
  font-size: 0.92em;
  list-style: none;
}
.qcb-summary-fold-summary::-webkit-details-marker { display: none; }
.qcb-summary-fold-summary .meta { font-weight: 400; font-size: 0.88em; }
.qcb-summary-fold[open] .qcb-summary-fold-summary { border-bottom: 1px solid rgba(234, 179, 8, 0.25); }
.qcb-summary-fold .qcb-summary-panel { margin: 0; border: none; border-radius: 0; background: transparent; }
/* Récap structure tranche/lot */
.qcb-structure-recap { border-top: 1px solid #2a3142; padding-top: 12px; }
.qcb-struct-tranche td { background: rgba(214,40,40,.08); }
.qcb-struct-lot td { background: rgba(59,130,246,.05); }
.qcb-struct-sous td { color: #9aa3b2; font-size: .92em; }
.qcb-tranche-bar {
  margin-top: 6px; height: 8px; background: #1a1f2e; border-radius: 4px; overflow: hidden; max-width: 220px;
}
.qcb-tranche-bar-fill {
  height: 100%; background: linear-gradient(90deg, #d62828, #f87171); width: 0; transition: width .25s;
}
.qcb-structure-table td, .qcb-structure-table th { vertical-align: top; }
