/* Composants communs. Les exports et le contenu interne des cartes géographiques sont exclus. */
.ahis-ui {
  font-family: var(--ahis-font);
  color: var(--ahis-ink);
  background: var(--ahis-bg);
}
.ahis-ui .ahis-content {
  font-family: var(--ahis-font);
  font-size: 14px;
  line-height: 1.55;
  color: var(--ahis-ink);
  width: 100%;
  min-width: 0;
  max-width: var(--ahis-page-width);
  margin-inline: auto;
}
.ahis-ui .ahis-content :is(.inst-dashboard, .mission-dashboard, .surv-shell, .dnsv-dashboard, .flash-pro-form) {
  font-family: inherit;
  color: var(--ahis-ink);
  background: var(--ahis-bg);
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
}
/* Les anciennes pages réservent encore en inline la place de la sidebar.
   Le layout s'en charge désormais : neutralisation des seuls conteneurs racine. */
.ahis-ui .ahis-content > :is(.container, .container-fluid, .row) {
  width: 100% !important;
  max-width: 100% !important;
  margin-inline: 0 !important;
}
.ahis-ui .ahis-content > .container {
  background: var(--ahis-card);
  border: 1px solid var(--ahis-border);
  border-radius: var(--ahis-radius);
  padding: 24px;
}
.ahis-ui .ahis-content > .container > .d-flex { flex-wrap: wrap; gap: 12px; }
.ahis-ui .ahis-content .row > * { min-width: 0; }
.ahis-ui .ahis-content :is(h1, h2, h3, h4) {
  font-family: inherit;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0;
  overflow-wrap: break-word;
}
.ahis-ui .ahis-content h1 { font-size: var(--ahis-title-size); }
.ahis-ui .ahis-content h2 { font-size: var(--ahis-section-size); }
.ahis-ui .ahis-content :is(h3, h4) { font-size: var(--ahis-subsection-size); }
.ahis-ui .ahis-content :is(.text-primary, .text-success) { color: var(--ahis-green) !important; }
.ahis-ui .ahis-content .text-muted { color: var(--ahis-muted) !important; }
.ahis-ui .ahis-content .text-danger { color: var(--ahis-red) !important; }
.ahis-ui .ahis-content :where(a) { color: var(--ahis-green); }
.ahis-ui .ahis-content :where(a:hover) { color: var(--ahis-green-dark); }

/* En-têtes de pages et sections existants. */
.ahis-ui .ahis-content :is(.ahis-page-header, .inst-header, .dnsv-hero, .surv-header, .flash-pro-header, .page-head) {
  background: var(--ahis-card);
  color: var(--ahis-ink);
  border: 1px solid var(--ahis-border);
  border-left: 4px solid var(--ahis-green);
  border-radius: var(--ahis-radius);
  padding: 24px;
  margin-bottom: 24px;
  box-shadow: none;
  gap: 16px;
}
.ahis-ui .ahis-content :is(.ahis-page-header, .inst-header, .dnsv-hero, .surv-header, .flash-pro-title) :is(h1, h2) {
  color: var(--ahis-green-dark);
  font-size: var(--ahis-title-size);
  margin: 0;
}
.ahis-ui .ahis-content :is(.inst-kicker, .inst-subtitle, .surv-kicker, .surv-subtitle, .flash-pro-title p, .dnsv-hero p) {
  color: var(--ahis-muted);
  line-height: 1.5;
}
.ahis-ui .ahis-content .flash-pro-meta { color: var(--ahis-ink); }
.ahis-ui .ahis-content :is(.ahis-card, .card, .box, .panel, .card-soft, .cardx, .chart-card, .inst-panel, .surv-panel, .dnsv-panel, .mission-panel,
  .performance-table, .mission-filter-panel, .inst-filter, .dnsv-filter, .surv-filterbar) {
  border: 1px solid var(--ahis-border);
  border-radius: var(--ahis-radius);
  background: var(--ahis-card);
  color: var(--ahis-ink);
  box-shadow: var(--ahis-shadow);
  min-width: 0;
}
.ahis-ui .ahis-content :is(.ahis-card-header, .card-header, .box-header, .panel-heading, .flash-pro-section-header) {
  color: var(--ahis-green-dark);
  background: var(--ahis-bg);
  border-bottom: 1px solid var(--ahis-border);
  padding: 14px 18px;
  font-weight: 700;
}
.ahis-ui .ahis-content :is(.ahis-card-body, .card-body, .box-body, .panel-body) { padding: 20px; }
.ahis-ui .ahis-content :is(.ahis-kpi, .inst-kpi, .kpi-card, .kpi-mini, .small-box, .info-box, .performance-card, .dnsv-kpi, .surv-kpi-grid article) {
  padding: 20px;
  background: var(--ahis-card);
  color: var(--ahis-ink);
  border: 1px solid var(--ahis-border);
  border-top: 3px solid var(--ahis-green);
  border-radius: var(--ahis-radius);
  box-shadow: var(--ahis-shadow);
  min-width: 0;
  height: 100%;
}
.ahis-ui .ahis-content :is(.ahis-kpi h2, .inst-kpi strong, .performance-card strong, .dnsv-kpi strong, .surv-kpi-grid strong) {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.25;
  color: var(--ahis-green-dark);
  font-variant-numeric: tabular-nums;
  margin: 8px 0;
}
.ahis-ui .ahis-content :is(.ahis-kpi p, .inst-kpi span, .dnsv-kpi span, .surv-kpi-grid span) {
  color: var(--ahis-muted);
  font-size: 13px;
  font-weight: 600;
}

/* Formulaires : les widgets spéciaux (checkbox, radio, range, cachés) gardent leur géométrie. */
.ahis-ui .ahis-content :is(label, .form-label, .inst-field-label) {
  font-size: 14px;
  font-weight: 600;
  color: var(--ahis-ink);
  margin-bottom: 6px;
}
.ahis-ui .ahis-content :is(input:not([type]), input[type=text], input[type=email], input[type=password],
  input[type=search], input[type=number], input[type=date], input[type=datetime-local], input[type=time],
  input[type=url], input[type=tel], input[type=file], select, textarea) {
  font-family: inherit;
  font-size: 14px;
  line-height: 1.5;
  min-height: 44px;
  max-width: 100%;
  padding: 10px 12px;
  color: var(--ahis-ink);
  background-color: var(--ahis-card);
  border: 1px solid var(--ahis-border);
  border-radius: var(--ahis-control-radius);
  box-shadow: none;
}
.ahis-ui .ahis-content form :is(input:not([type]), input[type=text], input[type=email], input[type=password],
  input[type=number], input[type=date], input[type=datetime-local], input[type=time], input[type=url], input[type=tel], textarea, select) { width: 100%; }
.ahis-ui .ahis-content form .input-group > :is(input, select) { width: 1%; }
/* Select2 pose width:100% en inline ; laisser la place au bouton adjacent. */
.ahis-ui .ahis-content .input-group > .select2-container { flex: 1 1 0; width: 0 !important; min-width: 0; }
.ahis-ui .ahis-content select:not([multiple]) { padding-right: 32px; }
.ahis-ui .ahis-content textarea { min-height: 112px; resize: vertical; }
.ahis-ui .ahis-content :is(input[type=checkbox], input[type=radio], input[type=range]) { accent-color: var(--ahis-green); }
.ahis-ui .ahis-content :is(input, select, textarea):focus {
  border-color: var(--ahis-green);
  outline: 2px solid var(--ahis-green);
  outline-offset: 2px;
}
.ahis-ui .ahis-content :is(input, select, textarea):disabled,
.ahis-ui .ahis-content :is(input, textarea)[readonly] { background-color: var(--ahis-bg); color: var(--ahis-muted); }
.ahis-ui .ahis-content :is(.is-invalid, [aria-invalid=true]) { border-color: var(--ahis-red); }
.ahis-ui .ahis-content :is(.errorlist, .invalid-feedback) { color: var(--ahis-red); font-size: 13px; }
.ahis-ui .ahis-content :is(.helptext, .form-text, .help-block) { color: var(--ahis-muted); font-size: 13px; line-height: 1.5; }
.ahis-ui .ahis-content fieldset { min-width: 0; }
.ahis-ui .ahis-content legend { font-size: var(--ahis-subsection-size); font-weight: 700; color: var(--ahis-green-dark); }
.ahis-ui .ahis-content .select2-container--default :is(.select2-selection--single, .select2-selection--multiple) {
  min-height: 44px;
  border: 1px solid var(--ahis-border);
  border-radius: var(--ahis-control-radius);
  background: var(--ahis-card);
}
.ahis-ui .ahis-content .select2-selection--single .select2-selection__rendered { line-height: 42px; color: var(--ahis-ink); }
.ahis-ui .ahis-content .select2-selection--single .select2-selection__arrow { height: 42px; }
.ahis-ui .select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--ahis-green); color: var(--ahis-card); }

/* Actions : !important limité aux utilitaires Bootstrap et aux anciens styles de boutons. */
.ahis-ui .ahis-content .btn {
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.5;
  min-height: 44px;
  padding: 10px 16px;
  border-radius: var(--ahis-control-radius);
  white-space: normal;
  text-decoration: none;
}
.ahis-ui .ahis-content :is(.btn-primary, .btn-success) {
  color: var(--ahis-card) !important;
  background: var(--ahis-green) !important;
  border-color: var(--ahis-green) !important;
}
.ahis-ui .ahis-content :is(.btn-primary, .btn-success):hover {
  background: var(--ahis-green-dark) !important;
  border-color: var(--ahis-green-dark) !important;
}
.ahis-ui .ahis-content :is(.btn-secondary, .btn-default, .btn-info, .btn-outline-primary, .btn-outline-success) {
  color: var(--ahis-green-dark) !important;
  background: var(--ahis-card) !important;
  border-color: var(--ahis-border) !important;
}
.ahis-ui .ahis-content :is(.btn-secondary, .btn-default, .btn-info, .btn-outline-primary, .btn-outline-success):hover { background: var(--ahis-tint) !important; }
.ahis-ui .ahis-content .btn-danger { color: var(--ahis-card); background: var(--ahis-red); border-color: var(--ahis-red); }
.ahis-ui .ahis-content .btn-warning { color: var(--ahis-warning-ink); background: var(--ahis-warning-bg); border-color: var(--ahis-yellow); }
.ahis-ui .ahis-content .btn:disabled,
.ahis-ui .ahis-content .btn.disabled { opacity: .6; cursor: not-allowed; }
.ahis-ui .ahis-content :is(a, button, summary, [tabindex]):focus-visible { outline: 3px solid var(--ahis-green); outline-offset: 3px; }

/* Tableaux : une même densité et un scroll local, sans modifier tri et pagination. */
.ahis-ui .ahis-content :is(.ahis-table, .table, .admin-table, .inst-table, .ahis-data-table) {
  --bs-table-bg: var(--ahis-card);
  --bs-table-color: var(--ahis-ink);
  --bs-table-striped-bg: var(--ahis-bg);
  --bs-table-striped-color: var(--ahis-ink);
  --bs-table-hover-bg: var(--ahis-tint);
  --bs-table-hover-color: var(--ahis-ink);
  width: 100%;
  font-size: 14px;
  line-height: 1.5;
  border-collapse: collapse;
  border-color: var(--ahis-border);
  background: var(--ahis-card);
  color: var(--ahis-ink);
}
.ahis-ui .ahis-content :is(.ahis-table, .table, .admin-table, .inst-table, .ahis-data-table) :is(th, td) {
  padding: 12px 14px;
  border-bottom: 1px solid var(--ahis-border);
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
}
.ahis-ui .ahis-content :is(.ahis-table, .table, .admin-table, .inst-table, .ahis-data-table) thead th {
  --bs-table-bg: var(--ahis-tint);
  background: var(--ahis-tint);
  color: var(--ahis-green-dark);
  font-size: 13px;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}
.ahis-ui .ahis-content :is(.ahis-table, .table, .admin-table, .inst-table, .ahis-data-table) tbody tr:nth-child(even) { background: var(--ahis-bg); }
.ahis-ui .ahis-content :is(.ahis-table, .table, .admin-table, .inst-table, .ahis-data-table) tbody tr:hover { background: var(--ahis-tint); }
.ahis-ui .ahis-content :is(.ahis-table-scroll, .table-responsive, .mission-table-scroll) {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  border-radius: var(--ahis-radius);
}
.ahis-ui .ahis-content :is(.page-link, .pagination > li > a) { color: var(--ahis-green-dark); min-height: 44px; padding: 10px 14px; }
.ahis-ui .ahis-content :is(.page-item.active .page-link, .pagination > .active > a) { background: var(--ahis-green); color: var(--ahis-card); border-color: var(--ahis-green); }
.ahis-ui .ahis-content .dt-paging .dt-paging-button { min-height: 44px; border-radius: var(--ahis-control-radius); }
.ahis-ui .ahis-content .dt-paging .dt-paging-button.current,
.ahis-ui .ahis-content .dt-paging .dt-paging-button:not(.disabled):hover { color: var(--ahis-card) !important; background: var(--ahis-green); border-color: var(--ahis-green); }
.ahis-ui .ahis-content .alert { padding: 16px; border-radius: var(--ahis-radius); border-width: 1px 1px 1px 4px; }
.ahis-ui .ahis-content .alert-success { background: var(--ahis-tint); color: var(--ahis-green-dark); border-color: var(--ahis-green); }
.ahis-ui .ahis-content .alert-danger { background: var(--ahis-danger-bg); color: var(--ahis-red); border-color: var(--ahis-red); }
.ahis-ui .ahis-content .alert-warning { background: var(--ahis-warning-bg); color: var(--ahis-warning-ink); border-color: var(--ahis-yellow); }

@media (max-width: 991px) {
  .ahis-ui .ahis-content :is(.inst-filter, .inst-filter.compact, .mission-filters) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ahis-ui .ahis-content :is(.flash-pro-header, .inst-header, .surv-header) { flex-wrap: wrap; }
}
@media (max-width: 575px) {
  .ahis-ui .ahis-content { padding-inline: 4px; }
  .ahis-ui .ahis-content :is(.ahis-page-header, .inst-header, .dnsv-hero, .surv-header, .flash-pro-header, .page-head) { padding: 18px; }
  .ahis-ui .ahis-content :is(.inst-filter, .inst-filter.compact, .mission-filters, .dnsv-hero) { grid-template-columns: minmax(0, 1fr); }
  .ahis-ui .ahis-content :is(.ahis-card-body, .card-body, .box-body, .panel-body) { padding: 14px; }
  .ahis-ui .ahis-content > .container { padding: 14px; }
  .ahis-ui .ahis-content .flash-pro-meta { min-width: 0; width: 100%; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); }
}
@media print {
  .ahis-ui .ahis-content { max-width: none; font-size: 10pt; }
  .ahis-ui .ahis-content :is(.ahis-table-scroll, .table-responsive, .mission-table-scroll) { overflow: visible; }
  .ahis-ui .ahis-content :is(.ahis-page-header, .inst-header, .dnsv-hero, .surv-header, .flash-pro-header, .page-head) { background: white; color: black; border-color: black; box-shadow: none; }
  .ahis-ui .ahis-content :is(.ahis-page-header, .inst-header, .dnsv-hero, .surv-header, .flash-pro-header, .page-head) :is(h1, h2, p) { color: black; }
}

/* Composants complémentaires : aliases compatibles Bootstrap 3/4/5 et AdminLTE. */
.ahis-ui {
  --bs-primary: var(--ahis-green);
  --bs-success: var(--ahis-success);
  --bs-danger: var(--ahis-danger);
  --bs-body-font-family: var(--ahis-font);
  --bs-border-color: var(--ahis-border);
  --bs-border-radius: var(--ahis-control-radius);
}
.ahis-ui .ahis-content :is(.ahis-card-footer, .card-footer, .box-footer, .panel-footer) {
  padding: var(--ahis-space-md) 20px;
  background: var(--ahis-bg);
  border-top: 1px solid var(--ahis-border);
}
.ahis-ui .ahis-content :is(.section-title, .chart-title, .panel-title) {
  color: var(--ahis-green-dark);
  font-size: var(--ahis-subsection-size);
  font-weight: 700;
  line-height: 1.4;
  margin-bottom: var(--ahis-space-md);
}
.ahis-ui .ahis-content :is(.ahis-page-header, .page-head) {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
}
.ahis-ui .ahis-content .ahis-page-header p { margin: 8px 0 0; color: var(--ahis-muted); }
.ahis-ui .ahis-content :is(.breadcrumb, .breadcrumbs) {
  background: transparent; color: var(--ahis-muted); font-size: var(--ahis-small-size);
  padding: 8px 0; margin-bottom: 16px; flex-wrap: wrap;
}
.ahis-ui .ahis-content :is(.ahis-actions, .form-actions, .filter-actions) {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
}
.ahis-ui .ahis-content :is(.ahis-filter-panel, .inst-filter, .mission-filter-panel, .mission-filters,
 .surv-filterbar, .dnsv-filter, form.filters, form.filter-form, .filter-panel) {
  padding: var(--ahis-space-md); margin-bottom: var(--ahis-space-lg);
  background: var(--ahis-card); border: 1px solid var(--ahis-border);
  border-radius: var(--ahis-radius); box-shadow: var(--ahis-shadow);
  min-width: 0; gap: var(--ahis-space-md); align-items: end;
}
/* Labels and values are unchanged; the classes express only presentation. */
.ahis-ui .ahis-content :is(.kpi-label, .kpi-title, .kpi-mini-label, .small-box p, .info-box-text) {
  color: var(--ahis-muted); font-size: var(--ahis-small-size); font-weight: 600;
  text-transform: none; letter-spacing: 0;
}
.ahis-ui .ahis-content :is(.kpi-value, .kpi-mini-value, .small-box h3, .info-box-number) {
  display: block; color: var(--ahis-green-dark); font-size: 30px; line-height: 1.25;
  font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
}
.ahis-ui .ahis-content :is(.kpi-sub, .kpi-mini-foot) { color: var(--ahis-muted); font-size: var(--ahis-small-size); }
.ahis-ui .ahis-content :is(.kpi-icon, .kpi-mini-badge) {
  background: var(--ahis-tint); color: var(--ahis-green-dark); box-shadow: none;
  border-radius: var(--ahis-control-radius);
}
.ahis-ui .ahis-content .small-box > .small-box-footer { background: var(--ahis-tint); color: var(--ahis-green-dark); }
.ahis-ui .ahis-content .small-box > .icon { color: var(--ahis-tint); font-size: 56px; }
.ahis-ui .ahis-content :is(.ahis-kpi-success, .kpi-success) { border-top-color: var(--ahis-success); }
.ahis-ui .ahis-content :is(.ahis-kpi-warning, .kpi-warning) { border-top-color: var(--ahis-warning); }
.ahis-ui .ahis-content :is(.ahis-kpi-danger, .kpi-danger) { border-top-color: var(--ahis-danger); }
.ahis-ui .ahis-content :is(.ahis-kpi-info, .kpi-info) { border-top-color: var(--ahis-info); }
.ahis-ui .ahis-content :is(.kpi-grid, .inst-kpi-grid, .surv-kpi-grid, .dnsv-kpi-grid) { gap: 16px; }
.ahis-ui .ahis-content :is(.chart-card, .map-panel) { min-width: 0; }
.ahis-ui .ahis-content :is(img.chart, .chart-img) { display: block; width: 100%; height: auto; background: var(--ahis-card); border-radius: var(--ahis-radius); }
.ahis-ui .ahis-content :is(.map-frame, .map-panel > iframe) { max-width: 100%; border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius); }
/* Preserve semantic colours and map data inside Leaflet/Folium. */
.ahis-ui .ahis-content .map-panel > :is(h2, h3) { color: var(--ahis-green-dark); }

/* Status colours apply only to existing explicitly named status variants. */
.ahis-ui .ahis-content :is(.badge, .label, .ahis-badge) {
  display: inline-block; padding: 5px 9px; border-radius: 6px;
  font-size: 12px; font-weight: 600; line-height: 1.4; white-space: normal;
}
.ahis-ui .ahis-content :is(.badge.bg-success, .badge-success, .label-success, .ahis-badge-success) { background: var(--ahis-tint) !important; color: var(--ahis-green-dark) !important; }
.ahis-ui .ahis-content :is(.badge.bg-warning, .badge-warning, .label-warning, .ahis-badge-warning) { background: var(--ahis-warning-bg) !important; color: var(--ahis-warning-ink) !important; }
.ahis-ui .ahis-content :is(.badge.bg-danger, .badge-danger, .label-danger, .ahis-badge-danger) { background: var(--ahis-danger-bg) !important; color: var(--ahis-danger) !important; }
.ahis-ui .ahis-content :is(.badge.bg-info, .badge-info, .label-info, .ahis-badge-info) { background: var(--ahis-info-bg) !important; color: var(--ahis-info) !important; }
.ahis-ui .ahis-content :is(.badge.bg-secondary, .badge-secondary, .label-default) { background: var(--ahis-bg) !important; color: var(--ahis-muted) !important; }
.ahis-ui .ahis-content .alert-info { background: var(--ahis-info-bg); color: var(--ahis-info); border-color: var(--ahis-info); }
.ahis-ui .ahis-content .alert-error { background: var(--ahis-danger-bg); color: var(--ahis-danger); border-color: var(--ahis-danger); }
.ahis-ui .ahis-content .errorlist { display: block; margin-top: 6px; }
.ahis-ui .ahis-content .has-error :is(input, select, textarea),
.ahis-ui .ahis-content :is(input, select, textarea):user-invalid { border-color: var(--ahis-danger); }
.ahis-ui .ahis-content :is(.asteriskField, .required-star) { color: var(--ahis-danger); }
.ahis-ui .ahis-content ::placeholder { color: var(--ahis-muted); opacity: 1; }
.ahis-ui .ahis-content input[type=file]::file-selector-button {
  border: 0; border-right: 1px solid var(--ahis-border); background: var(--ahis-tint);
  color: var(--ahis-green-dark); padding: 8px 12px; margin-right: 12px; font: inherit;
}
.ahis-ui .ahis-content .form-check-input { width: 1.1em; height: 1.1em; }
.ahis-ui .ahis-content .form-check-input:checked { background-color: var(--ahis-green); border-color: var(--ahis-green); }
.ahis-ui .ahis-content .select2-container { max-width: 100%; }
.ahis-ui .ahis-content .select2-search__field { min-height: 0; }
.ahis-ui .ahis-content .select2-selection--multiple .select2-selection__choice { background: var(--ahis-tint); border-color: var(--ahis-border); color: var(--ahis-green-dark); }
.ahis-ui .ahis-content :is(.table, .ahis-table, .ahis-data-table) .btn,
.ahis-ui .ahis-content :is(.btn-sm, .btn-xs) { min-height: 34px; padding: 6px 10px; font-size: 13px; }
.ahis-ui .ahis-content :is(.btn-outline-danger) { color: var(--ahis-danger); border-color: var(--ahis-danger); background: var(--ahis-card); }
.ahis-ui .ahis-content .btn-outline-danger:hover { color: var(--ahis-card); background: var(--ahis-danger); }
.ahis-ui .ahis-content :is(.table, .ahis-table, .ahis-data-table) thead :is(th, td) {
  background-color: var(--ahis-tint) !important; color: var(--ahis-green-dark) !important;
  border-color: var(--ahis-border); text-align: start;
}
.ahis-ui .ahis-content :is(.table, .ahis-table, .ahis-data-table) th.text-end { text-align: right; }
.ahis-ui .ahis-content :is(.table, .ahis-table, .ahis-data-table) caption { color: var(--ahis-muted); padding: 12px; }
.ahis-ui .ahis-content .dataTables_wrapper .dataTables_paginate .paginate_button {
  border-radius: var(--ahis-control-radius); min-height: 36px; color: var(--ahis-green-dark) !important;
}
.ahis-ui .ahis-content .dataTables_wrapper .dataTables_paginate .paginate_button.current,
.ahis-ui .ahis-content .dataTables_wrapper .dataTables_paginate .paginate_button:not(.disabled):hover {
  background: var(--ahis-green); color: var(--ahis-card) !important; border-color: var(--ahis-green);
}
.ahis-ui .ahis-content :is(.pagination, .dt-paging, .dataTables_paginate) { flex-wrap: wrap; }
.ahis-ui .ahis-content :is(.page-item.disabled .page-link, .pagination > .disabled > span) { color: var(--ahis-muted); background: var(--ahis-bg); }
.ahis-ui .ahis-content :is(.nav-tabs, .nav-pills) { gap: 4px; flex-wrap: wrap; border-color: var(--ahis-border); }
.ahis-ui .ahis-content :is(.nav-tabs, .nav-pills) .nav-link { color: var(--ahis-green-dark); padding: 10px 14px; }
.ahis-ui .ahis-content :is(.nav-tabs, .nav-pills) .nav-link.active { background: var(--ahis-tint); color: var(--ahis-green-dark); border-color: var(--ahis-border); font-weight: 700; }
/* Modal geometry/visibility and plugin events stay with Bootstrap. */
.ahis-ui .modal-content { font-family: var(--ahis-font); color: var(--ahis-ink); border: 1px solid var(--ahis-border); border-radius: var(--ahis-radius); box-shadow: var(--ahis-shadow); }
.ahis-ui .modal-header { background: var(--ahis-bg); color: var(--ahis-green-dark); padding: 16px 20px; border-color: var(--ahis-border); }
.ahis-ui .modal-title { font-size: var(--ahis-subsection-size); font-weight: 700; }
.ahis-ui .modal-body { padding: 20px; }
.ahis-ui .modal-footer { padding: 16px 20px; gap: 8px; flex-wrap: wrap; border-color: var(--ahis-border); }
.ahis-ui .modal-backdrop { --bs-backdrop-opacity: .4; }
.ahis-ui :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--ahis-green); outline-offset: 3px; }

/* Navigation: visual rules only, no new links, states or permission decisions. */
body.ahis-ui :is(.left-side.sidebar-offcanvas, #admin-sidebar) { background: var(--ahis-green-dark); color: var(--ahis-card); box-shadow: none; }
body.ahis-ui .sidebar :is(.sidebar-menu, .treeview-menu) { background: transparent; }
body.ahis-ui .sidebar :is(.sidebar-menu, .treeview-menu) a { color: var(--ahis-card); line-height: 1.5; border-radius: 6px; }
body.ahis-ui .sidebar :is(.sidebar-menu, .treeview-menu) a:hover { background: rgba(255,255,255,.12); color: var(--ahis-card); }
body.ahis-ui .sidebar :is(.sidebar-menu, .treeview-menu) li.active > a,
body.ahis-ui .sidebar a[aria-current=page] { background: var(--ahis-tint); color: var(--ahis-green-dark); box-shadow: inset 3px 0 var(--ahis-yellow); font-weight: 700; }
body.ahis-ui .admin-nav-link { border-radius: 6px; }
body.ahis-ui .admin-nav-link.active { background: var(--ahis-tint); color: var(--ahis-green-dark); box-shadow: inset 3px 0 var(--ahis-yellow); }
body.ahis-ui .ahis-global-header { background: var(--ahis-card); box-shadow: var(--ahis-shadow); }
body.ahis-ui :is(.ahis-user-card, .ahis-sidebar-toggle) { box-shadow: none; border-color: var(--ahis-border); border-radius: var(--ahis-radius); }
.ahis-ui .ahis-logout-link { background: var(--ahis-card); color: var(--ahis-danger); border-color: var(--ahis-border); box-shadow: none; }
.ahis-ui .ahis-logout-link:hover { background: var(--ahis-danger-bg); color: var(--ahis-danger); border-color: var(--ahis-danger); box-shadow: none; }
.ahis-ui.ahis-legacy-layout > .header :is(.logo, .navbar) { background: var(--ahis-green-dark); }
.ahis-ui .ahis-legacy-logo { height: 44px; width: auto; background: var(--ahis-card); border-radius: 6px; }
.ahis-ui .ahis-public-content { width: calc(100% - 32px); margin-inline: auto !important; }
@media (max-width: 991px) {
  .ahis-ui .ahis-content :is(.kpi-grid, .inst-kpi-grid, .surv-kpi-grid, .dnsv-kpi-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
  .ahis-ui .ahis-content :is(.kpi-grid, .inst-kpi-grid, .surv-kpi-grid, .dnsv-kpi-grid) { grid-template-columns: minmax(0, 1fr); }
  .ahis-ui .ahis-content :is(.inst-grid.two, .inst-grid.three, .filters, .filter-grid) { grid-template-columns: minmax(0, 1fr); }
  .ahis-ui .ahis-content :is(.ahis-table, .table, .ahis-data-table) :is(th, td) { min-width: 100px; padding: 10px 12px; }
  .ahis-ui .ahis-content :is(.ahis-table, .table, .ahis-data-table) td[colspan] { min-width: 0; }
  .ahis-ui .ahis-content .btn { max-width: 100%; }
  .ahis-ui .modal-dialog { margin: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .ahis-ui :is(.btn, .nav-link, .card, .small-box) { transition: none; }
}
@media print {
  .ahis-ui .ahis-content :is(.ahis-card, .card, .box, .panel, .ahis-kpi, .kpi-card, .inst-panel) { box-shadow: none; }
}
