/* AHIS Lot 1: API commune explicite. Tokens: ahis_tokens.css.
   ahis_components.css conserve les adaptations des templates historiques.
   Charger cette feuille en dernier, via _ahis_theme.html. */
.ahis-ui .ahis-content .ahis-page-title { margin: 0; font-size: var(--ahis-title-size); color: var(--ahis-green-dark); }
.ahis-ui .ahis-content .ahis-page-subtitle { margin: var(--ahis-space-sm) 0 0; color: var(--ahis-text-muted); }
.ahis-ui .ahis-content :is(.ahis-page-actions, .ahis-form-actions, .ahis-filter-actions, .ahis-table-actions) {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--ahis-space-sm);
}
.ahis-ui .ahis-content .ahis-filter-actions { justify-content: flex-end; }
.ahis-ui .ahis-content .ahis-form-actions { margin-top: var(--ahis-space-lg); }
.ahis-ui .ahis-content .ahis-card { margin-bottom: var(--ahis-space-lg); overflow-wrap: anywhere; }
.ahis-ui .ahis-content :is(.ahis-card-header, .ahis-card-body, .ahis-card-footer) { padding: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-card-title { font-size: var(--ahis-subsection-size); color: var(--ahis-green-dark); font-weight: 700; margin: 0 0 var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-card-header .ahis-card-title { margin: 0; }
.ahis-ui .ahis-content :is(.ahis-kpi-grid, .ahis-filter-grid, .ahis-chart-grid) {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  gap: var(--ahis-space-md); margin-bottom: var(--ahis-space-lg); min-width: 0;
}
.ahis-ui .ahis-content .ahis-chart-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ahis-ui .ahis-content .ahis-chart-grid > .ahis-card { margin-bottom: 0; }
.ahis-ui .ahis-content .ahis-chart-container { position: relative; height: 280px; min-width: 0; }
.ahis-ui .ahis-content .ahis-kpi-card {
  background: var(--ahis-surface); border: 1px solid var(--ahis-border); border-top: 3px solid var(--ahis-green);
  border-radius: var(--ahis-radius); box-shadow: var(--ahis-shadow); padding: var(--ahis-space-md); min-width: 0;
}
.ahis-ui .ahis-content .ahis-kpi-label { display: block; font-size: var(--ahis-small-size); color: var(--ahis-text-muted); font-weight: 600; }
.ahis-ui .ahis-content .ahis-kpi-value { display: block; margin-block: var(--ahis-space-sm); font-size: 30px; font-weight: 700; line-height: 1.25; color: var(--ahis-green-dark); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ahis-ui .ahis-content .ahis-kpi-meta { font-size: var(--ahis-small-size); color: var(--ahis-text-muted); }
.ahis-ui .ahis-content .ahis-kpi-icon { padding: var(--ahis-space-sm); background: var(--ahis-green-soft); color: var(--ahis-green-dark); border-radius: var(--ahis-radius-sm); }
.ahis-ui .ahis-content .ahis-kpi-success { border-top-color: var(--ahis-success); }
.ahis-ui .ahis-content .ahis-kpi-warning { border-top-color: var(--ahis-warning); }
.ahis-ui .ahis-content .ahis-kpi-danger { border-top-color: var(--ahis-danger); }
.ahis-ui .ahis-content .ahis-kpi-info { border-top-color: var(--ahis-info); }
.ahis-ui .ahis-content .ahis-table-container { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius); background: var(--ahis-surface); }
.ahis-ui .ahis-content .ahis-table { margin-bottom: 0; }
.ahis-ui .ahis-content .ahis-form-section { min-width: 0; padding: var(--ahis-space-md); border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius); margin-bottom: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-form :is(.form-group, .mb-3, .ahis-form-section > p) { margin-bottom: var(--ahis-space-md); }
.ahis-ui .ahis-content :is(.ahis-form-label, .ahis-form label) { display: inline-block; margin-bottom: var(--ahis-space-sm); font-weight: 600; }
.ahis-ui .ahis-content .ahis-form-section-title { font-size: var(--ahis-subsection-size); font-weight: 700; }
.ahis-ui .ahis-content .ahis-form-help { font-size: var(--ahis-small-size); color: var(--ahis-text-muted); }
.ahis-ui .ahis-content .ahis-form-error { font-size: var(--ahis-small-size); color: var(--ahis-danger); }
.ahis-ui .ahis-content .ahis-form :is(input[type=checkbox], input[type=radio]) { margin-right: var(--ahis-space-sm); }
.ahis-ui .ahis-content :is(.btn-secondary, .btn-default, .btn-outline-secondary) { color: var(--ahis-text) !important; background: var(--ahis-bg) !important; border-color: var(--ahis-border) !important; }
.ahis-ui .ahis-content :is(.btn-secondary, .btn-default, .btn-outline-secondary):hover { background: var(--ahis-border) !important; }
.ahis-ui .ahis-content .btn-info { color: var(--ahis-surface) !important; background: var(--ahis-info) !important; border-color: var(--ahis-info) !important; }
.ahis-ui .ahis-content .btn-info:hover { filter: brightness(.88); }
.ahis-ui .ahis-content .btn > :is(i, svg) { margin-inline-end: var(--ahis-space-xs); }
.ahis-ui .ahis-content .alert-error { background: var(--ahis-danger-bg); color: var(--ahis-danger); border-color: var(--ahis-danger); }
.ahis-ui .ahis-pagination { margin-top: var(--ahis-space-md); }
/* Navigation uses existing active states and permissions. */
body.ahis-ui .sidebar .treeview-menu { border-inline-start: 1px solid rgba(255,255,255,.25); margin-inline-start: var(--ahis-space-sm); }
body.ahis-ui .sidebar .sidebar-menu > li { border-bottom-color: rgba(255,255,255,.15); }
body.ahis-ui .sidebar a > .fa:first-child { width: 20px; text-align: center; }
body.ahis-ui :is(.appbar, .bottom-nav) { background: var(--ahis-surface); color: var(--ahis-text); border-color: var(--ahis-border); }
body.ahis-ui .navitem.active { background: var(--ahis-green-soft); color: var(--ahis-green-dark); font-weight: 700; }
/* Public pages have no sidebar. Keep content bounds visible, including long help text. */
body.ahis-public-page > .header { position: relative; display: flex; align-items: center; min-height: 66px; }
body.ahis-public-page .ahis-public-content { width: calc(100% - 32px); max-width: 1140px; margin-inline: auto !important; padding-bottom: var(--ahis-space-lg); }
.ahis-public-page #printable-header > .d-flex { gap: var(--ahis-space-sm); }
.ahis-public-page #printable-header > .d-flex > div { min-width: 0; }
.ahis-public-page .list-group-item { gap: var(--ahis-space-sm); flex-wrap: wrap; }
.ahis-public-page .list-group-item > span { min-width: 0; overflow-wrap: anywhere; }
.ahis-public-page .ahis-filter-grid > [class*=col-] { width: auto; }
@media (max-width: 575px) {
  .ahis-ui .ahis-content :is(.ahis-chart-grid, .ahis-kpi-grid, .ahis-filter-grid) { grid-template-columns: minmax(0, 1fr); }
  .ahis-ui .ahis-content .ahis-page-header { padding: var(--ahis-space-md); }
  .ahis-ui .ahis-content :is(.ahis-page-actions, .ahis-filter-actions) { justify-content: flex-start; }
  .ahis-public-page #printable-header > .d-flex { flex-wrap: wrap; justify-content: center !important; }
  .ahis-public-page #printable-header > .d-flex > div { flex: 1 1 150px; }
}
@media print { .ahis-ui .ahis-content .ahis-table-container { overflow: visible; } }
/* AdminLTE 1 impose ces règles avec !important ; contre-règles ciblées. */
.ahis-ui .ahis-content .form-control { border-radius: var(--ahis-control-radius) !important; }
.ahis-ui .ahis-content :is(input, select, textarea, .form-control):focus { border-color: var(--ahis-green) !important; outline: 3px solid var(--ahis-green); outline-offset: 2px; }
body.ahis-ui .header .ahis-logout-link { color: var(--ahis-green-dark) !important; }
/* Le sélecteur de skins de démonstration AdminLTE masque le contenu public. */
body.ahis-ui > .no-print:has(> .fa-gear),
body.ahis-ui > .no-print:has(> .fa-gear) + .no-print { display: none !important; }
.ahis-ui .ahis-list-page .dt-layout-row { padding: var(--ahis-space-sm) var(--ahis-space-md); gap: var(--ahis-space-md); }
.ahis-ui .ahis-list-page .dt-layout-row.dt-layout-table { padding: 0; }

/* Lot 2 — tableaux et contrôles de consultation, API du Lot 1 réutilisée. */
.ahis-ui .ahis-content .ahis-table { width: 100%; border-collapse: collapse; }
.ahis-ui .ahis-content .ahis-table :is(th, td) { overflow-wrap: normal; }
.ahis-ui .ahis-content .ahis-table thead th {
  background: var(--ahis-green-soft) !important; color: var(--ahis-green-dark) !important;
  padding: var(--ahis-space-sm) var(--ahis-space-md); font-size: var(--ahis-small-size);
  font-weight: 700; letter-spacing: normal; text-transform: none;
  border-color: var(--ahis-border) !important;
}
.ahis-ui .ahis-content .ahis-table tbody td { border-color: var(--ahis-border); }
.ahis-ui .ahis-content .ahis-table tbody tr:hover > td { --bs-table-bg-state: var(--ahis-green-soft); }
.ahis-ui .ahis-content .ahis-table tfoot :is(th, td) { background: var(--ahis-bg) !important; font-weight: 700; border-top: 1px solid var(--ahis-border) !important; }
.ahis-ui .ahis-content .ahis-table :is(td, th).ahis-table-actions { display: table-cell; white-space: normal; min-width: 160px; }
.ahis-ui .ahis-content .ahis-table-actions .btn { margin: var(--ahis-space-xs); }
.ahis-ui .ahis-content .ahis-table tbody > tr:only-child > td[colspan] { padding: var(--ahis-space-lg); color: var(--ahis-text-muted); text-align: center; }
.ahis-ui .ahis-content .ahis-table-container { min-width: 0; padding: 0; box-shadow: var(--ahis-shadow); }
.ahis-ui .ahis-content :is(.dt-container, .dataTables_wrapper) { max-width: 100%; min-width: 0; width: 100%; }
.ahis-ui .ahis-content :is(.dt-layout-row, .dataTables_wrapper > .row) { gap: var(--ahis-space-sm); margin-inline: 0; }
.ahis-ui .ahis-content :is(.dt-search, .dt-length, .dataTables_filter, .dataTables_length) { padding: var(--ahis-space-sm) var(--ahis-space-md); }
.ahis-ui .ahis-content :is(.dt-search, .dt-length, .dataTables_filter, .dataTables_length) label { margin: 0; }
.ahis-ui .ahis-content :is(.dt-search, .dataTables_filter) input { max-width: 100%; width: 220px; margin-inline-start: var(--ahis-space-sm); }
.ahis-ui .ahis-content :is(.dt-length, .dataTables_length) select { width: auto; margin-inline: var(--ahis-space-sm); }
.ahis-ui .ahis-content :is(.dt-info, .dataTables_info, .dt-paging, .dataTables_paginate) { padding: var(--ahis-space-sm) var(--ahis-space-md); font-size: var(--ahis-small-size); }
.ahis-ui .ahis-content :is(.dt-layout-table, .dataTables_scrollBody, .dt-scroll-body) { max-width: 100%; overflow-x: auto; }
.ahis-ui .ahis-content .dt-layout-table { display: block; padding: 0; }
.ahis-ui .ahis-content .dt-layout-table > .dt-layout-cell { display: block; }
.ahis-ui .ahis-content :is(.dt-processing, .dataTables_processing) { padding: var(--ahis-space-md); color: var(--ahis-text); background: var(--ahis-surface); border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius); }
.ahis-ui .ahis-content .ahis-filter-panel { max-width: 100%; min-width: 0; }
.ahis-ui .ahis-content .ahis-filter-panel label { color: var(--ahis-text); font-size: var(--ahis-font-size); font-weight: 600; }
.ahis-ui .ahis-content .ahis-filter-panel :is(input, select) { min-width: 0; }
@media (max-width: 575px) {
  .ahis-ui .ahis-content :is(.dt-layout-row, .dataTables_wrapper > .row) { display: flex; flex-direction: column; align-items: stretch; }
  .ahis-ui .ahis-content .dt-layout-row.dt-layout-table { display: block; }
  .ahis-ui .ahis-content :is(.dt-search, .dataTables_filter) { text-align: start; }
  .ahis-ui .ahis-content :is(.dt-search, .dataTables_filter) input { width: min(220px, 100%); }
  .ahis-ui .ahis-content :is(.dt-paging, .dataTables_paginate) { display: flex; flex-wrap: wrap; justify-content: center; }
  .ahis-ui .ahis-content .ahis-filter-panel { flex-wrap: wrap; }
}
/* Éviter une seconde card quand les filtres sont déjà dans une card AHIS. */
.ahis-ui .ahis-content .ahis-card > .ahis-filter-panel { padding: 0; margin: 0; border: 0; box-shadow: none; }
.ahis-ui .ahis-content .ahis-list-page .section-title { letter-spacing: normal; text-transform: none; font-size: var(--ahis-subsection-size); font-weight: 700; }
/* Les CSS d'exports peuvent imposer table-layout:fixed sur la consultation.
   Le layout automatique respecte les largeurs de colonnes et le scroll local. */
.ahis-ui .ahis-content .ahis-table { table-layout: auto; }

/* Lot 3 — saisie : composants existants, sans modifier les états métier. */
.ahis-ui .ahis-content .ahis-form-page { min-width: 0; max-width: 100%; }
.ahis-ui .ahis-content .ahis-form { min-width: 0; text-align: start; }
.ahis-ui .ahis-content .ahis-form > p { margin-bottom: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-form :is(.form-group, .flash-pro-field) { min-width: 0; }
.ahis-ui .ahis-content .ahis-form :is(label, legend, .helptext, .form-text, .errorlist) { overflow-wrap: anywhere; }
.ahis-ui .ahis-content .ahis-form :is(.errorlist, .ahis-form-error) { color: var(--ahis-danger); font-size: var(--ahis-small-size); }
.ahis-ui .ahis-content .ahis-form .errorlist { margin-block: var(--ahis-space-sm); padding-inline-start: var(--ahis-space-lg); }
.ahis-ui .ahis-content .ahis-form :is(input[type=checkbox], input[type=radio]) { flex: 0 0 auto; accent-color: var(--ahis-green-dark); }
.ahis-ui .ahis-content .ahis-form input[type=file] { width: 100%; min-width: 0; }
.ahis-ui .ahis-content .ahis-form input[type=file]::file-selector-button { padding: var(--ahis-space-sm); margin-inline-end: var(--ahis-space-sm); border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius-sm); background: var(--ahis-bg); color: var(--ahis-text); }
.ahis-ui .ahis-content .ahis-form :is(.select2-container--focus, .select2-container--open) .select2-selection { outline: 3px solid var(--ahis-green); outline-offset: 2px; border-color: var(--ahis-green); }
.ahis-ui .ahis-content .ahis-form .input-group { flex-wrap: wrap; }
.ahis-ui .ahis-content .ahis-form-page .ahis-page-title { text-transform: none; letter-spacing: normal; text-align: start; }
.ahis-ui .ahis-content .ahis-form-page .ahis-form-section-title { text-transform: none; letter-spacing: normal; }
.ahis-ui .ahis-content .flash-pro-section.ahis-card { margin-bottom: var(--ahis-space-md); }
.ahis-ui .ahis-content .flash-pro-section-header.ahis-card-header { width: 100%; margin: 0; color: var(--ahis-green-dark); text-align: start; }
.ahis-ui .ahis-content .flash-pro-summary-card.ahis-card { padding: var(--ahis-space-md); }
.ahis-ui .ahis-content .flash-pro-dropzone:focus-within { outline: 3px solid var(--ahis-green); outline-offset: 2px; }
@media (max-width: 575px) {
  .ahis-ui .ahis-content .ahis-form-actions { align-items: stretch; }
  .ahis-ui .ahis-content .ahis-form-actions > :is(.btn, a, button) { max-width: 100%; white-space: normal; }
  .ahis-ui .ahis-content .ahis-form .select2-selection__rendered { overflow-wrap: anywhere; }
}
/* Les pages publiques autonomes peuvent perdre le reset Bootstrap hors réseau. */
.ahis-ui .ahis-content .ahis-form,
.ahis-ui .ahis-content .ahis-form * { box-sizing: border-box; }
/* Même taille pour les cases natives et celles insérées dans un formset AJAX. */
.ahis-ui .ahis-content .ahis-form input:is([type=checkbox], [type=radio]) { width: 1.1em; height: 1.1em; min-height: 1.1em; }

/* Lot 4 — synthèses et dashboards : composants AHIS, sans échelle métier. */
.ahis-ui .ahis-content .ahis-dashboard { min-width: 0; max-width: 100%; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-page-title { text-transform: none; letter-spacing: normal; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-kpi-card { height: 100%; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-kpi-grid { align-items: stretch; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-kpi-meta { overflow-wrap: anywhere; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-card > img { max-width: 100%; height: auto; }
.ahis-ui .ahis-content .ahis-dashboard .ahis-card :is(canvas,svg) { max-width: 100%; }

/* Dashboard de référence : variantes génériques, sans sélecteur métier. */
.ahis-ui .ahis-content .ahis-dashboard-shell { width: 100%; max-width: 1440px; margin-inline: auto; }
.ahis-ui .ahis-content .ahis-dashboard-layout { display: grid; gap: var(--ahis-space-lg); min-width: 0; }
.ahis-ui .ahis-content .ahis-dashboard-layout > .ahis-card { margin: 0; }
.ahis-ui .ahis-content .ahis-dashboard-layout .ahis-page-header { display: block; text-align: start; margin: 0; }
.ahis-ui .ahis-content .ahis-dashboard-layout .ahis-page-title { line-height: 1.25; font-weight: 700; text-align: start; }
.ahis-ui .ahis-content .ahis-identity-rule { width: 72px; height: 4px; border-radius: var(--ahis-radius-sm); background: linear-gradient(90deg,var(--ahis-green) 0 33%,var(--ahis-yellow) 33% 66%,var(--ahis-red) 66%); }
.ahis-ui .ahis-content .ahis-page-header .ahis-identity-rule { margin-top: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-section-hint { color: var(--ahis-text-muted); font-size: var(--ahis-small-size); margin-bottom: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-grid-four { grid-template-columns: repeat(4,minmax(0,1fr)); }
.ahis-ui .ahis-content .ahis-grid-three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.ahis-ui .ahis-content .ahis-dashboard-layout .ahis-kpi-grid:last-child { margin-bottom: 0; }
.ahis-ui .ahis-content .ahis-kpi-header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: var(--ahis-space-sm); margin-bottom: var(--ahis-space-sm); }
.ahis-ui .ahis-content .ahis-kpi-header .ahis-kpi-label { flex: 1 1 80px; }
.ahis-ui .ahis-content .ahis-kpi-header .ahis-badge { position: static; flex: 0 0 auto; }
.ahis-ui .ahis-content .ahis-kpi-primary > .ahis-kpi-label { text-transform: uppercase; letter-spacing: .03em; }
.ahis-ui .ahis-content .ahis-kpi-primary > .ahis-kpi-value { font-size: clamp(26px,2.2vw,32px); white-space: nowrap; overflow-wrap: normal; }
.ahis-ui .ahis-content .ahis-kpi-secondary .ahis-kpi-value { font-size: 26px; white-space: nowrap; overflow-wrap: normal; }
.ahis-ui .ahis-content .ahis-kpi-detail { margin-top: var(--ahis-space-sm); }
.ahis-ui .ahis-content .ahis-kpi-detail-value { display: block; font-size: 18px; line-height: 1.4; font-weight: 600; color: var(--ahis-text); font-variant-numeric: tabular-nums; }
.ahis-ui .ahis-content .ahis-kpi-note { margin: var(--ahis-space-md) 0 0; font-size: var(--ahis-small-size); color: var(--ahis-text-muted); }
.ahis-ui .ahis-content .ahis-progress { height: 8px; margin-top: var(--ahis-space-md); border-radius: var(--ahis-radius-sm); background: var(--ahis-border); overflow: hidden; }
.ahis-ui .ahis-content .ahis-progress-bar { display: block; height: 100%; max-width: 100%; border-radius: inherit; background: var(--ahis-green-dark); }
.ahis-ui .ahis-content .ahis-kpi-danger .ahis-progress-bar { background: var(--ahis-danger); }
.ahis-ui .ahis-content .ahis-kpi-warning .ahis-progress-bar { background: var(--ahis-yellow); }
.ahis-ui .ahis-content .ahis-kpi-orange { border-top-color: var(--ahis-warning); }
.ahis-ui .ahis-content .ahis-kpi-orange .ahis-progress-bar { background: var(--ahis-warning); }
.ahis-ui .ahis-content .ahis-kpi-success .ahis-progress-bar { background: var(--ahis-success); }
.ahis-ui .ahis-content .ahis-badge-orange { background: var(--ahis-warning-bg); color: var(--ahis-warning-ink); }
.ahis-ui .ahis-content .ahis-summary-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: var(--ahis-space-md); }
.ahis-ui .ahis-content .ahis-summary-grid > .ahis-card { margin: 0; }
.ahis-ui .ahis-content .ahis-section-label { font-weight: 600; }
.ahis-ui .ahis-content .ahis-ranking { padding: 0; margin: 0; list-style: none; }
.ahis-ui .ahis-content .ahis-ranking-item { display: flex; justify-content: space-between; gap: var(--ahis-space-sm); padding-block: var(--ahis-space-sm); border-bottom: 1px solid var(--ahis-border); }
.ahis-ui .ahis-content .ahis-ranking-item:last-child { border-bottom: 0; }
.ahis-ui .ahis-content .ahis-ranking-value { font-weight: 600; white-space: nowrap; }
.ahis-ui .ahis-content .ahis-chart-scroll { height: auto; overflow-x: auto; }
.ahis-ui .ahis-content .ahis-chart-image { display: block; width: 100%; min-width: 480px; height: auto; }
.ahis-ui .ahis-content .ahis-table-scroll :is(th,td) { white-space: nowrap; }
.ahis-ui .ahis-content .ahis-table-alternative { display: none; }
.ahis-ui .ahis-content .ahis-text-muted { color: var(--ahis-text-muted); }
.ahis-ui .ahis-content :is(.ahis-chart-scroll,.ahis-table-scroll):focus-visible { outline: 3px solid var(--ahis-green-dark); outline-offset: 2px; }
@media (min-width: 576px) and (max-width: 1199px) {
  .ahis-ui .ahis-content .ahis-grid-four { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 991px) {
  .ahis-ui .ahis-content .ahis-summary-grid { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 575px) {
  .ahis-ui .ahis-content :is(.ahis-grid-four,.ahis-grid-three) { grid-template-columns: minmax(0,1fr); }
}
