:root{
  --nav:#162534;
  --nav-2:#203548;
  --accent:#1f8f68;
  --accent-dark:#177653;
  --accent-soft:#eaf6f1;
  --ink:#1d2a34;
  --muted:#6f7d89;
  --bg:#f3f6f8;
  --surface:#ffffff;
  --line:#e3e9ee;
  --line-strong:#d5dde4;
  --warning:#b7791f;
  --warning-soft:#fff7e6;
  --danger:#b84a45;
  --danger-soft:#fff1f0;
  --success:#247a58;
  --success-soft:#eaf6ef;
  --shadow:0 5px 18px rgba(22,37,52,.065);
  --shadow-hover:0 10px 28px rgba(22,37,52,.10);
  --radius:12px;
}

html{background:var(--bg)}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:.95rem;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* Navigation */
.app-navbar{
  background:linear-gradient(90deg,var(--nav),var(--nav-2));
  min-height:64px;
  box-shadow:0 2px 12px rgba(14,26,37,.15);
}
.app-navbar .navbar-brand{
  font-size:1.05rem;
  letter-spacing:.01em;
}
.app-navbar .nav-link{
  color:rgba(255,255,255,.72);
  font-weight:500;
  padding:.65rem .85rem;
  border-radius:8px;
  transition:background-color .18s ease,color .18s ease;
}
.app-navbar .nav-link:hover{color:#fff;background:rgba(255,255,255,.07)}
.app-navbar .nav-link.active{color:#fff;background:rgba(255,255,255,.11)}

main.container-fluid{max-width:1680px;margin:0 auto}

/* Typography */
h1,h2,h3,h4,h5,h6{color:var(--ink);letter-spacing:-.015em}
h1.h3{font-weight:750;font-size:1.65rem}
.text-secondary{color:var(--muted)!important}
.section-title{font-size:1rem;font-weight:750;color:var(--ink);letter-spacing:-.01em}
.label{font-size:.82rem;font-weight:600;color:var(--muted);letter-spacing:.01em}
.small{line-height:1.45}

/* Cards */
.card{
  background:var(--surface);
  border:1px solid rgba(213,221,228,.78);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease;
}
.card:hover{border-color:var(--line-strong)}

/* KPI cards */
.kpi{
  min-height:116px;
  position:relative;
  overflow:hidden;
}
.kpi::before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:3px;
  background:var(--accent);
  opacity:.8;
}
.kpi .label{font-size:.78rem;text-transform:uppercase;letter-spacing:.055em}
.kpi .value{
  font-size:1.72rem;
  line-height:1.08;
  font-weight:760;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
}

/* Metric blocks */
.metric-box{
  height:100%;
  padding:15px 17px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fbfcfd;
}
.metric-label{font-size:.78rem;font-weight:600;color:var(--muted);margin-bottom:6px}
.metric-value{font-size:1.28rem;font-weight:750;line-height:1.15;color:var(--ink);font-variant-numeric:tabular-nums}
.metric-sub{font-size:.75rem;color:var(--muted);margin-top:5px}
.metric-positive{border-left:3px solid var(--success);background:var(--success-soft)}
.metric-alert{border-left:3px solid var(--danger);background:var(--danger-soft)}

/* Buttons */
.btn{
  border-radius:8px;
  font-weight:600;
  font-size:.875rem;
  padding:.53rem .85rem;
  box-shadow:none!important;
}
.btn-sm{font-size:.79rem;padding:.38rem .66rem;border-radius:7px}
.btn-accent{
  background:var(--accent);
  border-color:var(--accent);
  color:#fff;
}
.btn-accent:hover,.btn-accent:focus{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}
.btn-outline-secondary{color:#556471;border-color:#cbd5dd;background:#fff}
.btn-outline-secondary:hover{background:#edf2f5;border-color:#b8c4cd;color:#263746}
.btn-outline-primary{color:#245c78;border-color:#a9c5d4}
.btn-outline-primary:hover{background:#edf6fa;color:#173f54;border-color:#91b6c9}

/* Badges */
.badge{font-weight:650;letter-spacing:.01em;border-radius:999px;padding:.42em .68em}
.badge-review{background:var(--warning-soft);color:#8a5b16;border:1px solid #f0d9aa}
.badge-valid{background:var(--success-soft);color:#1e694c;border:1px solid #cfe8da}
.bg-danger{background:var(--danger)!important}
.bg-warning{background:#d09a37!important;color:#fff!important}
.bg-success{background:var(--success)!important}

/* Tables */
.table{--bs-table-bg:transparent;--bs-table-hover-bg:#f7f9fb;color:var(--ink)}
.table> :not(caption)>*>*{padding:.78rem .8rem;border-bottom-color:#e8edf1;vertical-align:middle}
.table thead th{
  white-space:nowrap;
  font-size:.74rem;
  text-transform:uppercase;
  letter-spacing:.045em;
  font-weight:700;
  color:#71808c;
  background:#f8fafb;
  border-bottom:1px solid #dfe6eb;
}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr{transition:background-color .12s ease}
.table-danger-soft td{background:#fff6f5!important}
.table-danger-soft:hover td{background:#ffefed!important}
.table-responsive{border-radius:9px}
.money{font-variant-numeric:tabular-nums;font-weight:600}

/* Forms */
.form-label{font-size:.79rem;font-weight:650;color:#52616d;margin-bottom:.38rem}
.form-control,.form-select{
  border-color:#d5dee5;
  border-radius:8px;
  min-height:42px;
  background-color:#fff;
  color:var(--ink);
}
.form-control:focus,.form-select:focus{
  border-color:#7bb9a1;
  box-shadow:0 0 0 .2rem rgba(31,143,104,.12);
}
.form-control::placeholder{color:#a0abb4}
textarea.form-control{min-height:100px}

/* Alerts */
.alert{border-radius:9px;border-width:1px}
.alert-light{background:#fafcfd;border-color:#e0e7ec;color:#53616c}
.alert-warning{background:var(--warning-soft);border-color:#f0d9aa;color:#795218}
.alert-danger{background:var(--danger-soft);border-color:#ecc7c4;color:#8d3d39}

/* Empty states */
.empty-state{padding:52px 20px;text-align:center;color:#77848f}
.empty-state.compact{padding:26px 10px}

/* Financial / summary values */
.card .h5,.card .h4{font-variant-numeric:tabular-nums;font-weight:740}

/* Dashboard charts */
.dashboard-charts .card{overflow:hidden}
.chart-wrap{position:relative;height:300px;min-height:300px;padding-top:2px}
.dashboard-charts .section-title{font-size:.96rem}

/* Links */
a{color:#246788;text-decoration:none}
a:hover{color:#184d68}

/* Modals */
.modal-content{border:1px solid var(--line);border-radius:13px;box-shadow:0 18px 55px rgba(22,37,52,.18)}
.modal-header,.modal-footer{border-color:var(--line)}

/* Pagination */
.page-link{color:#536572;border-color:#dbe3e8}
.page-item.active .page-link{background:var(--accent);border-color:var(--accent)}

/* Responsive */
@media (max-width:991.98px){
  .app-navbar .navbar-nav{padding-top:.5rem;padding-bottom:.5rem}
  main.container-fluid{padding-left:1rem!important;padding-right:1rem!important}
}
@media (max-width:767.98px){
  body{font-size:.92rem}
  h1.h3{font-size:1.4rem}
  .chart-wrap{height:250px;min-height:250px}
  .kpi{min-height:102px}
  .kpi .value{font-size:1.45rem}
  .card{border-radius:10px}
}

/* Print */
@media print{
  body{background:#fff}
  .app-navbar,.btn{display:none!important}
  .card{box-shadow:none;border:1px solid #d9dfe4}
  main.container-fluid{max-width:none;padding:0!important}
}

/* V6.4 - Comparatif et points d'attention */
.compare-table-wrap{max-height:72vh;overflow:auto;border:1px solid var(--line)}
.compare-table thead{position:sticky;top:0;z-index:3}
.compare-table td{white-space:nowrap}
.compare-table td:first-child{min-width:220px;white-space:normal}
.sortable-th{cursor:pointer;user-select:none;padding-right:1.25rem!important;position:relative}
.sortable-th:after{content:'↕';position:absolute;right:.4rem;color:#a0abb4;font-size:.8rem}
.sortable-th.sort-asc:after{content:'↑';color:var(--accent)}
.sortable-th.sort-desc:after{content:'↓';color:var(--accent)}
.attention-badge{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-weight:800;font-variant-numeric:tabular-nums;background:#edf2f5;color:#5b6873;border:1px solid #d7e0e6}
.attention-1{background:var(--warning-soft);color:#8a5b16;border-color:#f0d9aa}
.attention-2,.attention-3{background:var(--danger-soft);color:#8d3d39;border-color:#ecc7c4}
.attention-flags{max-width:180px;white-space:normal;font-size:.68rem;color:var(--muted);line-height:1.25;margin-top:5px}
.performance-list{display:flex;flex-direction:column}
.performance-item{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:.82rem 0;border-bottom:1px solid #e8edf1;color:var(--ink)}
.performance-item:first-child{padding-top:.2rem}
.performance-item:last-child{border-bottom:0;padding-bottom:.2rem}
.performance-item:hover{color:var(--ink);background:#fafcfd;margin-left:-.65rem;margin-right:-.65rem;padding-left:.65rem;padding-right:.65rem;border-radius:8px}
@media(max-width:767.98px){.performance-item{align-items:flex-start;flex-direction:column;gap:6px}.performance-item .text-end{text-align:left!important}.compare-table-wrap{max-height:none}}

/* V6.5 - Projection patrimoniale */
.projection-controls .form-control{min-width:92px}
.projection-note{border-left:4px solid var(--accent,#198754)!important}
.projection-chart{height:360px;min-height:360px}
.projection-quality-list{display:grid;gap:.7rem}
.projection-quality-list>div{display:flex;justify-content:space-between;gap:1rem;padding:.7rem .8rem;background:#f8fafc;border-radius:.65rem}
.projection-quality-list strong{font-size:1.05rem}
.projection-table th{white-space:nowrap}
.projection-table td{white-space:nowrap}
@media(max-width:767.98px){.projection-controls{width:100%}.projection-controls>div{flex:1}.projection-controls .input-group,.projection-controls .form-control{width:100%!important}.projection-chart{height:280px;min-height:280px}}

/* V6.6 - Alertes, documents et impressions */
.alert-stack{display:grid;gap:.55rem}
.alert-row{display:flex;align-items:center;gap:.7rem;padding:.65rem .75rem;border:1px solid var(--line);border-radius:8px;background:#fbfcfd}
.alert-row .badge{min-width:92px;text-align:center}
.print-sheet{background:#eef2f5}
.print-sheet main{background:#fff;max-width:1120px;min-height:100vh}
.print-header{display:flex;justify-content:space-between;gap:2rem;align-items:flex-end;padding-bottom:1rem;border-bottom:2px solid #263746}
.print-header h1{font-size:1.7rem;margin:.15rem 0 .25rem}
.print-kicker{font-size:.72rem;font-weight:800;letter-spacing:.12em;color:#5e6d78}
.print-kpis>div>div{height:100%;border:1px solid #dbe3e8;border-radius:8px;padding:.75rem;background:#f8fafb}
.print-kpis span{display:block;font-size:.72rem;color:#697782;text-transform:uppercase;letter-spacing:.04em}
.print-kpis strong{display:block;font-size:1.1rem;margin-top:.2rem}
.print-section{margin-top:1.35rem;break-inside:avoid}
.print-section h2{font-size:1rem;font-weight:800;padding-bottom:.4rem;border-bottom:1px solid #dce4ea;margin-bottom:.65rem}
.print-section .table{font-size:.82rem}
@media print{
  @page{size:A4;margin:12mm}
  .print-sheet{background:#fff;font-size:11px}
  .print-sheet main{max-width:none;min-height:auto;padding:0!important}
  .print-header h1{font-size:20px}
  .print-kpis strong{font-size:13px}
  .print-section{margin-top:10px}
  .print-section h2{font-size:12px}
  .print-section .table{font-size:9px}
  .print-section .table>:not(caption)>*>*{padding:.26rem .32rem}
}

/* V6.7 - Module emprunts */
.loan-progress{height:7px;background:#e8edf1}
.loan-progress .progress-bar,.loan-progress-lg .progress-bar{background:var(--accent)}
.loan-progress-lg{height:12px;background:#e8edf1;border-radius:999px;overflow:hidden}
