:root{
  --erp-navy:#0f2437;--erp-navy-2:#16324a;--erp-green:#0f5132;--erp-primary:#2563eb;--erp-primary-700:#1d4ed8;--erp-success:#198754;--erp-warning:#f97316;--erp-danger:#dc3545;--erp-muted:#475569;--erp-unavailable:#e2e8f0;--erp-bg:#f3f6fa;--erp-card:#fff;--erp-border:#dbe3ef;--erp-text:#172033;--erp-radius:.85rem;--erp-radius-sm:.55rem;--erp-shadow:0 12px 30px rgba(15,36,55,.08);--erp-shadow-sm:0 4px 14px rgba(15,36,55,.06);--erp-space:1rem;--erp-font:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif}
html{scroll-behavior:smooth}body{font-family:var(--erp-font);background:var(--erp-bg);color:var(--erp-text);font-size:.95rem}.erp-navbar{background:linear-gradient(135deg,var(--erp-navy),var(--erp-green));box-shadow:0 10px 28px rgba(15,36,55,.18)}.erp-navbar .navbar-brand{font-weight:800;letter-spacing:.02em;color:#fff}.erp-navbar .nav-link,.erp-navbar .dropdown-toggle{color:rgba(255,255,255,.82);border-radius:999px;padding:.55rem .8rem}.erp-navbar .nav-link:hover,.erp-navbar .nav-link:focus,.erp-navbar .nav-link.active,.erp-navbar .dropdown-toggle.active{color:#fff;background:rgba(255,255,255,.14)}.erp-navbar .dropdown-menu{border:0;border-radius:var(--erp-radius);box-shadow:var(--erp-shadow);padding:.55rem;min-width:16rem}.dropdown-item{border-radius:.55rem;padding:.55rem .75rem}.dropdown-item.active,.dropdown-item:active{background:var(--erp-primary);color:#fff}.erp-page{max-width:1440px}.erp-content{display:grid;gap:1.25rem}.breadcrumb{--bs-breadcrumb-divider-color:#94a3b8;margin-bottom:.75rem}.breadcrumb a{color:var(--erp-primary);text-decoration:none}.erp-page-header{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid var(--erp-border);border-radius:calc(var(--erp-radius) + .2rem);box-shadow:var(--erp-shadow-sm);padding:1.25rem;margin-bottom:1.25rem}.erp-page-eyebrow{color:var(--erp-muted);font-weight:700;text-transform:uppercase;font-size:.72rem;letter-spacing:.08em}.erp-page-title,h1{font-weight:800;color:var(--erp-navy);letter-spacing:-.03em}.erp-page-subtitle{color:var(--erp-muted);max-width:70ch}.card,.erp-card{background:var(--erp-card);border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-sm)}.card-header{background:#f8fafc;border-bottom:1px solid var(--erp-border);border-radius:var(--erp-radius) var(--erp-radius) 0 0!important;font-weight:700;color:var(--erp-navy)}.btn{border-radius:.65rem;font-weight:700}.btn-primary{--bs-btn-bg:var(--erp-primary);--bs-btn-border-color:var(--erp-primary);--bs-btn-hover-bg:var(--erp-primary-700);--bs-btn-hover-border-color:var(--erp-primary-700);box-shadow:0 6px 16px rgba(37,99,235,.22)}.btn-outline-primary{--bs-btn-color:var(--erp-primary);--bs-btn-border-color:#9bb7ff;--bs-btn-hover-bg:var(--erp-primary);--bs-btn-hover-border-color:var(--erp-primary)}.btn-sm{border-radius:.5rem}.table-responsive{background:#fff;border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-sm);overflow:auto}.table{margin-bottom:0}.table thead th{position:sticky;top:0;z-index:1;background:#eef4fb;color:var(--erp-navy);border-bottom:1px solid var(--erp-border);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.table tbody tr:hover{background:#f8fbff}.table td,.table th{vertical-align:middle;padding:.85rem}.table td:nth-child(n+4):not(:last-child){font-variant-numeric:tabular-nums}.form-control,.form-select{border-color:#cbd5e1;border-radius:.65rem;min-height:2.55rem}.form-control:focus,.form-select:focus,.btn:focus-visible,.nav-link:focus-visible,.dropdown-item:focus-visible{border-color:var(--erp-primary);box-shadow:0 0 0 .22rem rgba(37,99,235,.2);outline:0}.form-label{font-weight:700;color:#26364d}.form-label.required::after,label.required::after{content:" *";color:var(--erp-danger)}.invalid-feedback,.errorlist{font-weight:600}.helptext,.form-text{color:var(--erp-muted)}.alert{border:0;border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-sm)}.badge,.erp-badge{border-radius:999px;font-weight:800;padding:.42rem .68rem;letter-spacing:.01em}.badge-status-pending,.badge-en-attente-paiement{background:#fff7ed;color:#9a3412}.badge-status-ready,.badge-pret-au-chargement{background:#eff6ff;color:#1d4ed8}.badge-status-loading,.badge-chargement{background:#f5f3ff;color:#6d28d9}.badge-status-transit,.badge-en-transit{background:#ecfeff;color:#0e7490}.badge-status-arrived,.badge-arrive{background:#e0f2fe;color:#0369a1}.badge-status-stock,.badge-en-stock,.badge-stock-suffisant{background:#ecfdf5;color:#047857}.badge-status-received,.badge-receptionne{background:#dcfce7;color:#166534}.badge-status-paid,.badge-paye{background:#dcfce7;color:#166534}.badge-status-partial,.badge-partiellement-paye,.badge-stock-faible{background:#fef3c7;color:#92400e}.badge-status-overdue,.badge-en-retard,.badge-rupture{background:#fee2e2;color:#991b1b}.badge-status-cancelled,.badge-annule{background:#f1f5f9;color:#475569}.kpi-card{height:100%;padding:1rem}.kpi-label{color:var(--erp-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800}.kpi-value{font-size:clamp(1.35rem,2vw,2rem);font-weight:850;color:var(--erp-navy)}.action-toolbar{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.empty-state{padding:2rem;text-align:center;color:var(--erp-muted);background:#fff;border:1px dashed #cbd5e1;border-radius:var(--erp-radius)}.sticky-actions{position:sticky;bottom:0;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-top:1px solid var(--erp-border);padding:1rem;margin-inline:-1rem;margin-bottom:-1rem}.list-group-item{border-color:var(--erp-border)}a{color:var(--erp-primary)}@media (max-width:991.98px){.erp-navbar .nav-link,.erp-navbar .dropdown-toggle{border-radius:.65rem}.erp-page{padding-inline:1rem}.erp-page-header{padding:1rem}.action-toolbar,.erp-page-header .btn{width:100%}.action-toolbar .btn{flex:1 1 auto}.table{min-width:760px}}@media print{.erp-navbar,.btn{display:none!important}body{background:#fff}.card,.table-responsive,.erp-page-header{box-shadow:none}}
.erp-content>.d-flex:first-child{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid var(--erp-border);border-radius:calc(var(--erp-radius) + .2rem);box-shadow:var(--erp-shadow-sm);padding:1.25rem;gap:1rem;flex-wrap:wrap}.erp-content>.d-flex:first-child h1{margin:0}.erp-content>form{background:#fff;border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-sm);padding:1.25rem}.erp-content>form h2,.erp-content>form .h4{color:var(--erp-navy);font-weight:800}.erp-content>form>.row{padding:1rem;border:1px solid var(--erp-border);border-radius:var(--erp-radius);background:#fbfdff}.erp-content>form>.d-flex:last-child{position:sticky;bottom:0;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-top:1px solid var(--erp-border);padding:1rem;margin:1rem -1.25rem -1.25rem}.erp-content>.row .card{height:100%}.erp-content .card .table-responsive{box-shadow:none;border-radius:.65rem}.erp-content .alert+.card,.erp-content .alert+.table-responsive{margin-top:.25rem}

.stock-badge-green { background-color: #166534; color: #ffffff; }
.stock-badge-blue { background-color: #1e3a8a; color: #ffffff; }
.stock-badge-red { background-color: #991b1b; color: #ffffff; }
.stock-badge-amber { background-color: #fef3c7; color: #78350f; }
.stock-badge-orange { background-color: #9a3412; color: #ffffff; }

.data-env-banner {
  position: sticky;
  top: 0;
  z-index: 1100;
  width: 100%;
  padding: .5rem 1rem;
  font-weight: 800;
  text-align: center;
  letter-spacing: .04em;
}
.data-env-banner-test {
  color: #3d2600;
  background: #ffc107;
  border-bottom: 3px solid #8a5a00;
}
.data-env-banner-production {
  color: #fff;
  background: #b00020;
  border-bottom: 3px solid #4a0010;
}
@media (max-width: 576px) {
  .data-env-banner { font-size: .85rem; padding: .45rem .5rem; }
}

:root {
  --erp-test-banner-height: 36px;
  --erp-navbar-height: 48px;
  --erp-header-height: calc(var(--erp-test-banner-height) + var(--erp-navbar-height));
  --erp-left-sidebar-width: 260px;
  --erp-right-sidebar-width: 280px;
}
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
}
body.erp-app {
  height: 100vh;
  overflow: hidden;
  background: #f3f6fa;
}
.erp-fixed-header {
  height: var(--erp-header-height);
  width: 100%;
  position: relative;
  z-index: 1000;
  flex-shrink: 0;
}
.erp-fixed-header .data-env-banner {
  position: relative;
  height: var(--erp-test-banner-height);
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}
.erp-fixed-header .erp-navbar {
  position: relative;
  top: auto;
  min-height: var(--erp-navbar-height);
}
.erp-fixed-header .erp-page { max-width: none; }
.erp-shell {
  display: grid;
  grid-template-columns: var(--erp-left-sidebar-width) minmax(0, 1fr) var(--erp-right-sidebar-width);
  width: 100vw;
  height: calc(100vh - var(--erp-header-height));
  overflow: hidden;
}
.erp-sidebar {
  min-width: 0;
  height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
  background: #fff;
  padding: 16px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.erp-sidebar-left { border-right: 1px solid #dfe5ec; }
.erp-sidebar-right { border-left: 1px solid #dfe5ec; }
.erp-main-scroll {
  min-width: 0;
  width: 100%;
  height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
}
.erp-page-content {
  width: 100%;
  max-width: none;
  min-width: 0;
  padding: 20px;
  box-sizing: border-box;
}
.erp-page-content > .container,
.erp-page-content > .dashboard-container,
.erp-page-content > .page-container,
.erp-page-content > .erp-content > .container,
.erp-page-content > .erp-content > .dashboard-container,
.erp-page-content > .erp-content > .page-container {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
.erp-sidebar-section {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.erp-sidebar-title {
  margin: 0 0 5px;
  font-size: 1rem;
  text-transform: uppercase;
  font-weight: 800;
  letter-spacing: .04em;
  color: var(--erp-navy);
}
.erp-sidebar-card {
  background: #fff;
  border: 1px solid #dfe5ec;
  border-left: 4px solid #1f9d55;
  border-radius: 10px;
  padding: 9px;
  overflow-wrap: anywhere;
  box-shadow: var(--erp-shadow-sm);
}
.erp-sidebar-card-label,
.erp-sidebar-label {
  font-size: .74rem;
  color: #667085;
  font-weight: 700;
}
.erp-sidebar-card-value,
.erp-sidebar-value {
  margin-top: 2px;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--erp-navy);
  overflow-wrap: anywhere;
}
.erp-sidebar-card-state,
.erp-sidebar-state { font-size: .72rem; color: var(--erp-muted); }
.erp-sidebar-kpi-list,
.erp-sidebar-list,
.erp-sidebar-actions { display: grid; gap: .45rem; }
.erp-sidebar-kpi,
.erp-sidebar-item {
  border: 1px solid rgba(15,23,42,.08);
  border-radius: .75rem;
  padding: .5rem;
  background: #fff;
  text-decoration: none;
  color: inherit;
}
.erp-drawer-backdrop { display: none; }
@media (max-width: 1199px) {
  .erp-shell { grid-template-columns: minmax(0, 1fr); }
  .erp-sidebar { display: none; }
}
@media print {
  body.erp-app { height: auto; overflow: visible; }
  .erp-fixed-header, .erp-sidebar, .erp-drawer-backdrop { display: none!important; }
  .erp-shell, .erp-main-scroll { display: block; height: auto; overflow: visible; }
  .erp-page-content { padding: 0; }
}

.erp-card-link {
  display: block;
  color: inherit;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease;
}
.erp-card-link:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.10);
}
.erp-card-link:focus-visible {
  outline: 3px solid rgba(37, 99, 235, 0.35);
  outline-offset: 2px;
}

.erp-breadcrumbs {
    margin: 0 0 14px;
    font-size: 0.88rem;
}

.erp-breadcrumbs ol {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.erp-breadcrumbs li:not(:last-child)::after {
    content: "›";
    margin-left: 6px;
    color: #98a2b3;
}

.erp-breadcrumbs a {
    color: #2563eb;
    text-decoration: none;
}

.erp-related-records {
    margin-top: 24px;
}

.erp-related-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px;
}

.erp-related-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 14px;
    background: #fff;
    border: 1px solid #dfe5ec;
    border-radius: 10px;
    color: inherit;
    text-decoration: none;
}

.erp-related-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.08);
}

.erp-related-card-title {
    color: #667085;
    font-size: 0.85rem;
}


/* Executive UX components */
.erp-section-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;color:var(--erp-navy);font-weight:850;text-transform:uppercase;letter-spacing:.05em;font-size:.82rem}.erp-executive-summary{border-left:5px solid var(--erp-primary);background:linear-gradient(135deg,#fff,#f8fbff)}.erp-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.erp-summary-item{display:flex;align-items:center;gap:.5rem;padding:.7rem .8rem;border:1px solid var(--erp-border);border-radius:var(--erp-radius-sm);background:#fff;font-weight:700}.erp-summary-item .ok{color:var(--erp-success)}.erp-summary-item .warn{color:var(--erp-warning)}.erp-summary-item .danger{color:var(--erp-danger)}.erp-progress{margin:.5rem 0}.erp-progress-track{height:.8rem;border-radius:999px;background:#e5e7eb;overflow:hidden}.erp-progress-fill{height:100%;border-radius:999px;background:var(--erp-primary)}.erp-progress-success{background:var(--erp-success)}.erp-progress-warning{background:var(--erp-warning)}.erp-progress-danger{background:var(--erp-danger)}.erp-progress-info{background:var(--erp-primary)}.erp-timeline-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.erp-timeline-item{position:relative;padding-left:1.8rem}.erp-timeline-item::before{content:"";position:absolute;left:.35rem;top:.35rem;width:.65rem;height:.65rem;border-radius:50%;background:var(--erp-primary);box-shadow:0 0 0 4px #dbeafe}.erp-timeline-item:not(:last-child)::after{content:"";position:absolute;left:.65rem;top:1.1rem;bottom:-.85rem;border-left:2px solid var(--erp-border)}.erp-table-icon{width:2.2rem;text-align:center}.erp-actions{text-align:right;white-space:nowrap}.erp-empty-icon{font-size:2rem;display:block;margin-bottom:.5rem}.text-erp-success{color:var(--erp-success)!important}.text-erp-danger{color:var(--erp-danger)!important}.text-erp-warning{color:var(--erp-warning)!important}.text-erp-info{color:var(--erp-primary)!important}.text-erp-history{color:var(--erp-muted)!important}.bg-erp-success{background:var(--erp-success)!important}.bg-erp-danger{background:var(--erp-danger)!important}.bg-erp-warning{background:var(--erp-warning)!important}.bg-erp-info{background:var(--erp-primary)!important}.bg-erp-history{background:var(--erp-muted)!important}@media (max-width:991.98px){.erp-summary-grid{grid-template-columns:1fr}}
.erp-sidebar-kpi-groups{display:flex;flex-direction:column;gap:.75rem}.erp-sidebar-kpi-group{border-radius:1rem;padding:.55rem;border:1px solid rgba(15,23,42,.08);background:rgba(255,255,255,.7)}.erp-sidebar-group-title{font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.45rem}.erp-kpi-group-finance{border-left:4px solid #16a34a}.erp-kpi-group-stock{border-left:4px solid #2563eb}.erp-kpi-group-appro{border-left:4px solid #f97316}.erp-kpi-group-commercial{border-left:4px solid #7c3aed}.erp-sidebar-kpi-group .erp-sidebar-card{padding:.55rem .65rem}.erp-sidebar-kpi-group .erp-sidebar-card-value{font-size:1rem}

.erp-sidebar-item{display:flex;flex-direction:column;gap:.15rem;line-height:1.25}.profitability-summary{border-left:5px solid #6c757d;background:#f8f9fa}.profitability-loss{border-left-color:#dc3545;background:#fff5f5}.profitability-low{border-left-color:#fd7e14;background:#fff8f0}.profitability-ok{border-left-color:#0d6efd;background:#f3f8ff}.profitability-good{border-left-color:#198754;background:#f3fbf6}.profitability-loss .profitability-profit{color:#dc3545;font-weight:800}

/* Global business-criticality convention. Color always supplements a readable status. */
.criticality-badge-critical{background:#fee2e2;color:#991b1b}.criticality-badge-attention{background:#ffedd5;color:#9a3412}.criticality-badge-favorable{background:#dcfce7;color:#166534}.criticality-badge-info{background:#dbeafe;color:#1d4ed8}.criticality-badge-neutral{background:#e2e8f0;color:#334155}.criticality-badge-unavailable{background:#f8fafc;color:#64748b;border:1px solid #cbd5e1}
.criticality-card-critical{border-color:var(--erp-danger)!important}.criticality-card-attention{border-color:var(--erp-warning)!important}.criticality-card-favorable{border-color:var(--erp-success)!important}.criticality-card-info{border-color:var(--erp-primary)!important}.criticality-card-neutral{border-color:var(--erp-muted)!important}.criticality-card-unavailable{border-color:var(--erp-unavailable)!important;background:#f8fafc!important}
.criticality-border-critical{border-color:var(--erp-danger)!important}.criticality-border-attention{border-color:var(--erp-warning)!important}.criticality-border-favorable{border-color:var(--erp-success)!important}.criticality-border-info{border-color:var(--erp-primary)!important}.criticality-border-neutral{border-color:var(--erp-muted)!important}.criticality-border-unavailable{border-color:var(--erp-unavailable)!important}
.criticality-progress-critical{background:var(--erp-danger)!important}.criticality-progress-attention{background:var(--erp-warning)!important}.criticality-progress-favorable{background:var(--erp-success)!important}.criticality-progress-info{background:var(--erp-primary)!important}.criticality-progress-neutral{background:var(--erp-muted)!important}.criticality-progress-unavailable{background:var(--erp-unavailable)!important}
.criticality-legend{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;padding:.65rem .8rem;margin-bottom:1rem;border:1px solid var(--erp-border);border-radius:var(--erp-radius-sm);background:#fff}.criticality-legend-title{font-weight:800;color:var(--erp-navy);margin-right:.2rem}
/* Legacy executive widgets now consume the same centralized semantic palette. */
.bi-neutral{border-top-color:var(--erp-unavailable)!important;background:#f8fafc!important}.bi-green,.cockpit-kpi.bi-green{border-top-color:var(--erp-success)!important}.bi-orange,.cockpit-kpi.bi-orange{border-top-color:var(--erp-warning)!important}.bi-red,.cockpit-kpi.bi-red{border-top-color:var(--erp-danger)!important}.decision-card{border-left-color:var(--erp-success)!important}.decision-card.tone-orange{border-left-color:var(--erp-warning)!important}.decision-card.tone-red{border-left-color:var(--erp-danger)!important}.gauge-fill.green{background:var(--erp-success)!important}.gauge-fill.orange{background:var(--erp-warning)!important}.gauge-fill.red{background:var(--erp-danger)!important}.priority-card{border-left-color:var(--erp-muted)!important}.priority-favorable{border-left-color:var(--erp-success)!important}.priority-critique{border-left-color:var(--erp-danger)!important}.priority-haute{border-left-color:var(--erp-warning)!important}.priority-normale{border-left-color:var(--erp-primary)!important}.priority-information{border-left-color:var(--erp-muted)!important}

/* Operating expenses workspace */
.expense-page { max-width: 1050px; margin-inline: auto; }
.expense-section { background: #fff; border: 1px solid #e4e7ec; border-radius: 14px; padding: 1.25rem; margin-bottom: 1rem; box-shadow: 0 2px 8px rgba(16,24,40,.04); }
.expense-section h2 { font-size: 1.05rem; margin-bottom: .2rem; color: #182230; }
.section-help { color: #667085; font-size: .875rem; margin-bottom: 1rem; }
.expense-section textarea { min-height: 58px; resize: vertical; }
.recurring-item { border: 1px solid #e4e7ec; border-radius: 10px; padding: 1rem; background: #f9fafb; }
#id_weekdays { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .4rem .8rem; }
#id_weekdays > div label { display: flex; align-items: center; gap: .45rem; }
.budget-stat { height: 100%; background: #f9fafb; border-radius: 10px; padding: .75rem; display: flex; flex-direction: column; gap: .25rem; }
.budget-stat span { color: #667085; font-size: .78rem; }
.budget-stat strong { font-size: .95rem; }
@media (max-width: 767.98px) { .expense-section { padding: 1rem; } }
