* {
  box-sizing: border-box;
}

:root {
  --font-family-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --color-bg: #f8fbf8;
  --color-surface: #ffffff;
  --color-border: #e5e7eb;
  --color-text: #0b172a;
  --color-muted: #4b5563;
  --color-primary: #16a34a;
  --color-primary-dark: #0f7b39;
}

body {
  font-family: var(--font-family-sans);
  margin: 0;
  padding: 0;
  background: var(--color-bg);
  color: var(--color-text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

button,
input,
select,
textarea {
  font-family: inherit;
}

.patient-duplicate-hint {
  padding: 10px 12px;
  border-radius: 8px;
  font-size: 0.9rem;
  line-height: 1.4;
}
.patient-duplicate-hint--block {
  background: #fef2f2;
  border: 1px solid #fecaca;
  color: #991b1b;
}
.patient-duplicate-hint--warn {
  background: #fffbeb;
  border: 1px solid #fde68a;
  color: #92400e;
}

.page {
  min-height: 100vh;
  background: var(--color-bg);
}

/* Layout avec barre latérale verticale */
.layout {
  display: flex;
  min-height: calc(100vh - 120px);
  max-width: 1400px;
  margin: 12px auto 24px;
  padding: 0 16px;
}

.sidebar {
  width: 240px;
  background: #0f2d1f;
  color: #e9f7ee;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: sticky;
  top: 0;
  align-self: flex-start;
  min-height: calc(100vh - 120px);
}

.sidebar-title {
  font-weight: 600;
  text-transform: uppercase;
  font-size: 13px;
  letter-spacing: 0.04em;
  opacity: 0.8;
}

.sidebar-link {
  text-align: left;
  padding: 10px 12px;
  border-radius: 6px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.06);
  color: #e9f7ee;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease;
}

.sidebar-link:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.18);
}

.sidebar-link.active {
  background: #16a34a;
  border-color: #16a34a;
  color: #ffffff;
}

.sidebar-link.disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Modal : toujours au-dessus de la sidebar, overlay opaque pour masquer le reste */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  z-index: 10000;
  animation: fadeIn 0.2s ease;
  overflow-y: auto;
}

/* Bloquer le scroll pendant qu'un modal est ouvert */
body:has(.modal:not(.hidden)) {
  overflow: hidden;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.hidden {
  display: none !important;
}

.stock-fournisseur-item:hover {
  background: #f0f9f0;
}

.modal.hidden {
  display: none;
}

.modal-content {
  background: #fff;
  border-radius: 12px;
  min-width: 340px;
  max-width: 720px;
  width: 100%;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  overflow: hidden;
  animation: slideUp 0.3s ease;
  border: 1px solid #e5e7eb;
}

/* Modal plan comptable : taille adaptée pour afficher tous les champs */
#modal-plan-comptable .modal-content {
  max-width: 540px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#modal-plan-comptable .modal-header {
  padding: 12px 16px;
  flex-shrink: 0;
}

#modal-plan-comptable .modal-body {
  padding: 12px 16px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

#modal-plan-comptable .modal-footer {
  padding: 12px 16px;
  flex-shrink: 0;
}

@keyframes slideUp {
  from {
    transform: translateY(20px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.modal-header, .modal-footer {
  padding: 18px 24px;
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid #e5e7eb;
}

.modal-footer {
  border-top: 1px solid #e5e7eb;
  border-bottom: none;
  padding: 16px 24px;
}

.modal-body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* RH - Tous les modales : limiter la hauteur et garder le footer visible */
#modal-rh-departement .modal-content,
#modal-rh-poste .modal-content,
#modal-rh-contrat .modal-content,
#modal-rh-absence .modal-content,
#modal-rh-formation .modal-content,
#modal-rh-cotisation .modal-content,
#modal-rh-irpp .modal-content {
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#modal-rh-departement .modal-body,
#modal-rh-poste .modal-body,
#modal-rh-contrat .modal-body,
#modal-rh-absence .modal-body,
#modal-rh-formation .modal-body,
#modal-rh-cotisation .modal-body,
#modal-rh-irpp .modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

#modal-rh-departement .modal-footer,
#modal-rh-poste .modal-footer,
#modal-rh-contrat .modal-footer,
#modal-rh-absence .modal-footer,
#modal-rh-formation .modal-footer,
#modal-rh-cotisation .modal-footer,
#modal-rh-irpp .modal-footer {
  flex-shrink: 0;
}

/* Modal prime-taxe : structure différente, overflow sur le contenu */
#modal-rh-prime-taxe .modal-content {
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#modal-rh-prime-taxe .modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

#modal-rh-prime-taxe .modal-footer {
  flex-shrink: 0;
}

#rh-prime-taxe-form.form-grid.three-col {
  grid-template-columns: repeat(3, minmax(200px, 1fr));
  gap: 12px 16px;
}

#rh-prime-taxe-form .rh-prime-compte-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(220px, 1fr));
  gap: 12px 16px;
}

/* Modal écriture : grille dense 3 colonnes, tout visible sans scroll sur écran standard */
#modal-compta-ecriture .modal-compta-ecriture-content {
  max-width: min(1100px, 98vw);
  width: min(1100px, 98vw);
  max-height: min(92vh, 900px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#modal-compta-ecriture .modal-header {
  padding: 10px 16px;
  flex-shrink: 0;
}

#modal-compta-ecriture .modal-header h3 {
  margin: 0;
  font-size: 1.1rem;
}

#modal-compta-ecriture select,
#modal-compta-ecriture input[type="text"],
#modal-compta-ecriture input[type="number"],
#modal-compta-ecriture input[type="date"] {
  min-height: 34px;
  padding: 5px 10px;
  font-size: 13px;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#modal-compta-ecriture .modal-body.ecriture-modal-body {
  overflow-x: hidden;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  padding: 10px 14px 12px;
  gap: 0;
}

#modal-compta-ecriture .modal-footer {
  flex-shrink: 0;
  padding: 10px 16px;
}

/* Grille principale : 3 colonnes égales, pas de débordement horizontal */
#modal-compta-ecriture .ecriture-form-compact {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px 12px;
  align-items: end;
}

#modal-compta-ecriture .ecriture-form-compact .ef-span-full {
  grid-column: 1 / -1;
}

#modal-compta-ecriture .ecriture-form-section-title {
  margin: 6px 0 2px 0;
  font-size: 11px;
  font-weight: 600;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}

#modal-compta-ecriture .ecriture-form-compact .ecriture-form-section-title:first-child {
  margin-top: 0;
}

#modal-compta-ecriture .ecriture-form-compact .ef-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  min-width: 0;
}

#modal-compta-ecriture .ecriture-budget-help {
  margin: 0;
  padding: 4px 8px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  font-size: 12px;
}

#modal-compta-ecriture .ecriture-budget-help summary {
  cursor: pointer;
  font-weight: 600;
  color: #475569;
  user-select: none;
}

#modal-compta-ecriture .ecriture-budget-help p {
  margin: 6px 0 0 0;
  line-height: 1.35;
}

#modal-compta-ecriture .ecriture-budget-hint {
  margin: 0;
  padding: 6px 10px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  max-height: 88px;
  overflow-y: auto;
  font-size: 12px;
}

#modal-compta-ecriture .ef-textareas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 12px;
  align-items: stretch;
}

#modal-compta-ecriture .ef-textareas label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  min-width: 0;
}

#modal-compta-ecriture .ef-textareas textarea {
  min-height: 44px;
  max-height: 72px;
  padding: 6px 10px;
  font-size: 13px;
  resize: vertical;
  width: 100%;
  box-sizing: border-box;
}

#modal-compta-ecriture .required {
  color: #dc2626;
}

@media (max-width: 900px) {
  #modal-compta-ecriture .ecriture-form-compact {
    grid-template-columns: 1fr 1fr;
  }
  #modal-compta-ecriture .ef-textareas {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  #modal-compta-ecriture .ecriture-form-compact {
    grid-template-columns: 1fr;
  }
}

.modal-close {
  background: transparent;
  color: #64748b;
  border: none;
  font-size: 24px;
  cursor: pointer;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  transition: all 0.2s ease;
  padding: 0;
  line-height: 1;
}

.modal-close:hover {
  background: #f1f5f9;
  color: #1e293b;
}

/* Modal soin infirmier — exécution / consultation résultat */
#modal-soin .soin-modal-content {
  max-width: 640px;
  max-height: 95vh;
  display: flex;
  flex-direction: column;
}

#modal-soin .soin-modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  padding: 20px 22px;
}

#modal-soin .soin-form-root {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

#modal-soin .soin-form-create {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 16px;
}

#modal-soin .soin-field-full {
  grid-column: 1 / -1;
}

#modal-soin .soin-infirmier-readonly {
  padding: 10px 12px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  font-size: 0.95rem;
}

#modal-soin .soin-execute-panel {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

#modal-soin .soin-execute-summary {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

#modal-soin .soin-execute-card {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

#modal-soin .soin-execute-card-wide {
  grid-column: 1 / -1;
}

#modal-soin .soin-execute-card-label {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}

#modal-soin .soin-execute-card-value {
  font-size: 0.98rem;
  font-weight: 600;
  color: #0f172a;
  word-break: break-word;
}

#modal-soin .soin-execute-multiline {
  font-weight: 500;
  line-height: 1.45;
  white-space: pre-wrap;
}

#modal-soin .soin-execute-medicament {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 16px;
  border-radius: 10px;
  border: 1px solid #86efac;
  background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 100%);
}

#modal-soin .soin-execute-medicament.hidden {
  display: none;
}

#modal-soin .soin-execute-medicament-icon {
  font-size: 1.75rem;
  line-height: 1;
  flex-shrink: 0;
}

#modal-soin .soin-execute-medicament-title {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #15803d;
  margin-bottom: 4px;
}

#modal-soin .soin-execute-medicament-name {
  font-size: 1.05rem;
  font-weight: 700;
  color: #14532d;
}

#modal-soin .soin-execute-medicament-qty {
  margin-top: 4px;
  font-size: 0.9rem;
  color: #166534;
}

#modal-soin .soin-execute-meta {
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
}

#modal-soin .soin-execute-meta-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 11px 14px;
  border-bottom: 1px solid #f1f5f9;
}

#modal-soin .soin-execute-meta-row:last-child {
  border-bottom: none;
}

#modal-soin .soin-execute-meta-label {
  font-size: 0.88rem;
  color: #475569;
  font-weight: 500;
}

#modal-soin .soin-execute-meta-value {
  font-size: 0.92rem;
  font-weight: 600;
  color: #0f172a;
  text-align: right;
}

#modal-soin .soin-execute-observations textarea {
  margin-top: 6px;
  width: 100%;
  min-height: 110px;
  border-radius: 8px;
  border: 1px solid #cbd5e1;
  padding: 10px 12px;
  font-family: inherit;
  resize: vertical;
}

#modal-soin .soin-view-observations-text {
  margin-top: 8px;
  padding: 12px 14px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  white-space: pre-wrap;
  line-height: 1.5;
  color: #334155;
  min-height: 48px;
}

#modal-soin .soin-modal-footer {
  flex-shrink: 0;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

@media (max-width: 560px) {
  #modal-soin .soin-execute-summary {
    grid-template-columns: 1fr;
  }
  #modal-soin .soin-form-create {
    grid-template-columns: 1fr;
  }
}

.btn-secondary {
  background: #e5e7eb;
  color: #111827;
  border: 1px solid #d1d5db;
}

.btn-secondary:hover {
  background: #d1d5db;
}

.modal-patient-info {
  font-size: 14px;
  color: #1f2937;
  padding: 10px;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  background: #f9fafb;
}

.patient-view-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
}

.patient-view-field {
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 10px 12px;
}

.patient-view-field .label,
.patient-barcode-wrap .label {
  font-size: 12px;
  color: #6b7280;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}

.patient-view-field .value {
  font-size: 14px;
  color: #111827;
  word-break: break-word;
}

.patient-barcode-wrap {
  margin-top: 6px;
  padding: 12px;
  border: 1px dashed #e5e7eb;
  border-radius: 8px;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.patient-barcode-wrap svg {
  width: 100%;
  max-width: 320px;
  height: auto;
}
.content {
  flex: 1;
  min-width: 0;
  padding: 16px 20px 32px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.content-area {
  background: var(--color-surface);
  border-radius: 12px;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
}

.user-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 16px;
  background: #e0f2e8;
  color: var(--color-text);
  border-bottom: 1px solid #bfdbce;
}

.login-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 51, 21, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  z-index: 3000;
}

.login-card {
  background: #ffffff;
  border-radius: 12px;
  padding: 22px;
  width: min(420px, 100%);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.login-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
}

.login-brand .brand-logo {
  width: 48px;
  height: 48px;
}

/* Champ mot de passe avec œil de prévisualisation */
.password-input-wrap {
  display: flex;
  align-items: center;
  position: relative;
  width: 100%;
}
.password-input-wrap input {
  flex: 1;
  padding-right: 44px;
}
.password-toggle-btn {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--color-muted, #64748b);
  cursor: pointer;
  border-radius: 6px;
  transition: color 0.2s, background 0.2s;
  z-index: 1;
}
.password-toggle-btn:hover {
  color: var(--color-primary, #16a34a);
  background: rgba(22, 163, 74, 0.08);
}
.password-toggle-btn .icon-eye,
.password-toggle-btn .icon-eye-off {
  pointer-events: none;
}
.password-toggle-btn .hidden {
  display: none;
}

.module-panel {
  display: none;
}

.module-panel.active {
  display: block;
}

.module-panel > h2 {
  display: none;
}

.module-context-subtitle {
  margin: 0 0 16px 0;
  font-size: 24px;
  font-weight: 700;
  padding-bottom: 12px;
  border-bottom: 2px solid #dbeafe;
}

.module-context-subtitle-module {
  color: #1e3a8a;
}

.module-context-subtitle-sep {
  color: #1e3a8a;
}

.module-context-subtitle-section {
  color: var(--color-primary, #16a34a);
}

.module-panel > main.subpanels > section.subpanel.active > h3:first-child,
.module-panel .param-users-inner-panels > .subpanel.active > h3.param-users-inner-title,
.module-panel .param-profils-inner-panels > .subpanel.active > h3.param-profils-inner-title,
.module-panel .param-services-inner-panels > .subpanel.active > h3.param-services-inner-title,
.module-panel .param-actes-inner-panels > .subpanel.active > h3.param-actes-inner-title,
.module-panel .param-assurances-inner-panels > .subpanel.active > h3.param-assurances-inner-title,
.module-panel .param-entreprises-inner-panels > .subpanel.active > h3.param-entreprises-inner-title,
.module-panel .param-examens-sous-cat-inner-panels > .subpanel.active > h3.param-examens-inner-title,
.module-panel .param-examens-affect-inner-panels > .subpanel.active > h3.param-examens-inner-title,
.module-panel .param-examens-params-inner-panels > .subpanel.active > h3.param-examens-inner-title,
.module-panel .stat-av-panel.active > h3:first-child,
.module-panel .gmao-ref-panel.active > h3:first-child {
  display: none;
}

.subpanel {
  display: none;
}

.subpanel.active {
  display: block;
}

/* Statistiques avancées : panneaux internes (évite conflit avec .subpanel) */
.stat-avancees-tabs-wrapper .stat-av-panel {
  display: none;
}
.stat-avancees-tabs-wrapper .stat-av-panel.active {
  display: block;
}

.gmao-referentiels-tabs-wrapper .gmao-ref-panel {
  display: none;
}
.gmao-referentiels-tabs-wrapper .gmao-ref-panel.active {
  display: block;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  color: #f8fafc;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
  position: sticky;
  top: 0;
  z-index: 100;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.brand-logo {
  width: 56px;
  height: 56px;
  border-radius: 14px;
  object-fit: contain;
  background: rgba(255, 255, 255, 0.12);
  padding: 8px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}

.brand-title {
  font-weight: 700;
  font-size: 18px;
  line-height: 1.2;
}

.brand-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}

.brand-link {
  color: #e7f7ec;
  font-size: 13px;
  text-decoration: none;
  padding: 6px 10px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.1);
  transition: all 0.2s ease;
}

.brand-link:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.35);
}

.user-profile {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 6px;
  color: #e7f7ec;
  font-size: 13px;
}

.user-profile .user-icon {
  font-size: 16px;
  opacity: 0.9;
}

.user-profile .user-name {
  font-weight: 500;
  white-space: nowrap;
}

.tabs {
  display: flex;
  gap: 4px;
  padding: 12px 20px 0 20px;
  flex-wrap: wrap;
  border-bottom: 2px solid #e5e7eb;
  background: #f9fafb;
}

/* Module Caisse : 8 onglets sur 2 lignes (4 × 2), compacts */
.module-panel[data-module="caisse"] > .tabs.caisse-module-tabs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  padding: 6px 12px 8px;
  flex-wrap: unset;
  flex-shrink: 0;
}

.module-panel[data-module="caisse"] > .tabs.caisse-module-tabs .tab {
  white-space: normal;
  text-align: center;
  line-height: 1.2;
  font-size: 12px;
  padding: 5px 4px;
  min-width: 0;
}

/* Historique paiements actif : pas de scroll vertical (pagination), scroll horizontal dans le tableau */
.content.content-area:has(.subpanel[data-panel="caisse-histo"].active) {
  overflow-x: hidden;
  min-width: 0;
}

.module-panel[data-module="caisse"]:has(> main.subpanels > .subpanel[data-panel="caisse-histo"].active) {
  min-width: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

/* Paramétrage: navigation via cartes/sous-cartes */
.module-panel[data-module="parametrage"] > .tabs {
  display: none;
}

/* Paramétrage > Utilisateurs : onglets formulaire / liste */
.subpanel[data-panel="users"] > .param-users-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="users"] > .param-users-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="users"] .param-users-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="users"] .param-users-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Profils : onglets formulaire / liste (même principe que Utilisateurs) */
.subpanel[data-panel="profils"] > .param-profils-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="profils"] > .param-profils-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="profils"] .param-profils-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="profils"] .param-profils-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Entreprises : onglets créer / lister */
.subpanel[data-panel="entreprises"] > .param-entreprises-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="entreprises"] > .param-entreprises-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="entreprises"] .param-entreprises-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="entreprises"] .param-entreprises-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Services : onglets formulaire / liste */
.subpanel[data-panel="service"] > .param-services-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="service"] > .param-services-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="service"] .param-services-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="service"] .param-services-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Actes : onglets créer / lister */
.subpanel[data-panel="actes"] > .param-actes-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="actes"] > .param-actes-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="actes"] .param-actes-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="actes"] .param-actes-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Actes par assurances : onglets créer / lister */
.subpanel[data-panel="assurances"] > .param-assurances-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="assurances"] > .param-assurances-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="assurances"] .param-assurances-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="assurances"] .param-assurances-inner-panels {
  margin-top: 0;
}

/* Paramétrage > Examens labo : 3 onglets principaux + sous-onglets */
.subpanel[data-panel="examens"] > .param-examens-main-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="examens"] > .param-examens-main-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="examens"] > .param-examens-main-panels {
  margin-top: 0;
}
.subpanel[data-panel="examens"] .param-examens-sous-cat-inner-tabs,
.subpanel[data-panel="examens"] .param-examens-affect-inner-tabs,
.subpanel[data-panel="examens"] .param-examens-params-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="examens"] .param-examens-sous-cat-inner-tabs .tab,
.subpanel[data-panel="examens"] .param-examens-affect-inner-tabs .tab,
.subpanel[data-panel="examens"] .param-examens-params-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
}
.subpanel[data-panel="examens"] .param-examens-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="examens"] .param-examens-sous-cat-inner-panels,
.subpanel[data-panel="examens"] .param-examens-affect-inner-panels,
.subpanel[data-panel="examens"] .param-examens-params-inner-panels {
  margin-top: 0;
}

/* Caisse > Encaissements : sous-onglets flux (ambulatoire / hospitalisation) */
.subpanel[data-panel="caisse-encaissements"] > .caisse-enc-flux-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin: 0 0 10px;
  padding: 10px 14px;
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #94a3b8;
  white-space: nowrap;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 4px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.04);
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab {
  border: none;
  border-radius: 999px;
  padding: 8px 18px;
  margin: 0;
  cursor: pointer;
  color: #64748b;
  font-weight: 500;
  font-size: 13px;
  line-height: 1.25;
  background: transparent;
  transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab::before {
  display: none;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab:hover {
  background: #f1f5f9;
  color: #475569;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab.active {
  font-weight: 600;
  border-bottom: none;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab.active[data-flux="ambulatoire"] {
  background: linear-gradient(180deg, #38bdf8 0%, #0ea5e9 100%);
  color: #fff;
  box-shadow: 0 2px 6px rgba(14, 165, 233, 0.35);
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-tabs .flux-tab.active[data-flux="hospitalisation"] {
  background: linear-gradient(180deg, #34d399 0%, #059669 100%);
  color: #fff;
  box-shadow: 0 2px 6px rgba(5, 150, 105, 0.35);
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-hint {
  margin: 0 0 14px;
  padding: 8px 12px;
  font-size: 0.88rem;
  border-radius: 6px;
  border-left: 4px solid #0ea5e9;
  background: #f0f9ff;
  color: #475569;
}
.subpanel[data-panel="caisse-encaissements"] .caisse-enc-flux-hint[data-flux="hospitalisation"] {
  border-left-color: #059669;
  background: #ecfdf5;
}

/* Paramétrage > Permissions : onglets par étape */
/* Caisse > Clôtures : sous-onglets */
.subpanel[data-panel="caisse-clotures"] > .caisse-clotures-inner-tabs {
  display: flex;
  gap: 6px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="caisse-clotures"] > .caisse-clotures-inner-tabs .tab {
  font-size: 13px;
  padding: 10px 14px;
  white-space: normal;
  text-align: left;
  line-height: 1.25;
  max-width: 100%;
}
.subpanel[data-panel="caisse-clotures"] .caisse-clotures-inner-title {
  margin: 12px 0 16px;
  font-size: 1.05rem;
  font-weight: 600;
  color: #334155;
}
.subpanel[data-panel="caisse-clotures"] .caisse-clotures-inner-panels {
  margin-top: 0;
}

/* Comptabilité > Facturation des assureurs : sous-onglets (pills, distincts des onglets module) */
.subpanel[data-panel="compta-assurances"] > h3 {
  display: none;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs.tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 12px;
  padding: 0 0 10px;
  background: transparent;
  border: none;
  border-bottom: 1px solid #e2e8f0;
  border-radius: 0;
  box-shadow: none;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs .tab {
  font-size: 12px;
  font-weight: 500;
  padding: 7px 12px;
  margin-bottom: 0;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  color: #64748b;
  white-space: normal;
  text-align: center;
  line-height: 1.25;
  max-width: 100%;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs .tab::before {
  display: none;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs .tab.active::before {
  display: none;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs .tab:hover {
  background: #f1f5f9;
  color: #334155;
  border-color: #cbd5e1;
}

.subpanel[data-panel="compta-assurances"] > .compta-assurances-inner-tabs .tab.active {
  color: #1d4ed8;
  background: #eff6ff;
  border: 1px solid #93c5fd;
  border-bottom: 1px solid #93c5fd;
  font-weight: 600;
  box-shadow: none;
}

.subpanel[data-panel="compta-assurances"] .compta-assurances-inner-panels {
  margin-top: 0;
}

.subpanel[data-panel="affectations"] > .param-affect-inner-tabs {
  display: flex;
  gap: 4px;
  padding: 8px 0 0;
  margin: 0 0 4px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.subpanel[data-panel="affectations"] > .param-affect-inner-tabs .tab {
  font-size: 12px;
  padding: 8px 10px;
  white-space: normal;
  text-align: center;
  line-height: 1.2;
  max-width: 100%;
}
.subpanel[data-panel="affectations"] .param-affect-inner-panels {
  margin-top: 0;
}

.tab {
  border: none;
  background: transparent;
  border-radius: 8px 8px 0 0;
  padding: 12px 20px;
  cursor: pointer;
  color: #64748b;
  font-weight: 500;
  font-size: 14px;
  transition: all 0.2s ease;
  position: relative;
  margin-bottom: -2px;
}

.tab:hover {
  background: #f1f5f9;
  color: #475569;
}

#modal-laboratoire .tab.labo-tab-locked {
  opacity: 0.45;
  cursor: not-allowed;
}

.tab.active {
  background: #fff;
  color: #2563eb;
  border-bottom: 3px solid #2563eb;
  font-weight: 600;
}

.tab.active::before {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  right: 0;
  height: 2px;
  background: #2563eb;
}

main.panels {
  padding: 0 20px 20px 20px;
}

.panel {
  display: none;
}

.panel.active {
  display: block;
}

section h2 {
  margin: 0 0 16px 0;
  font-size: 24px;
  font-weight: 700;
  color: #1e293b;
  padding-bottom: 12px;
  border-bottom: 2px solid #e2e8f0;
}

section h3 {
  margin: 0 0 16px 0;
  font-size: 18px;
  font-weight: 600;
  color: #334155;
}

section h4 {
  margin: 0 0 12px 0;
  font-size: 16px;
  font-weight: 600;
  color: #475569;
}

.card {
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04);
  padding: 20px;
  transition: box-shadow 0.2s ease;
  border: 1px solid #e5e7eb;
}

.card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
}

.param-nav-board {
  margin-top: 18px;
}

.param-nav-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  margin-top: 12px;
}

.param-nav-card {
  border: 1px solid #dbe4f0;
  border-radius: 12px;
  padding: 12px;
  background: linear-gradient(160deg, #f8fbff 0%, #ffffff 100%);
}

.param-nav-card > header {
  margin-bottom: 10px;
}

.param-nav-card > header h4 {
  margin: 0 0 4px;
  color: #1e3a8a;
}

.param-nav-card > header span {
  font-size: 12px;
  color: #64748b;
}

.param-nav-subcards {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.param-nav-subcard {
  border: 1px solid #c7d2fe;
  border-radius: 10px;
  background: #eef2ff;
  color: #1e40af;
  padding: 8px 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.param-nav-subcard:hover {
  background: #e0e7ff;
  border-color: #a5b4fc;
}

.param-back-wrap {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 12px;
}

.param-back-btn {
  border-radius: 10px;
  font-weight: 600;
}

/* Permissions / affectations - design simplifié */
.perm-card {
  margin-top: 16px;
  padding: 16px 20px;
}
.perm-card:first-of-type { margin-top: 0; }
.perm-section-title {
  margin: 0 0 4px 0;
  font-size: 1.05em;
  color: #1e293b;
}
.perm-hint {
  font-size: 0.85em;
  margin: 0 0 12px 0;
  color: #64748b;
}
.perm-inline-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}
.perm-select {
  min-width: 160px;
  padding: 8px 12px;
}
.perm-inline-form .perm-user-combo {
  flex: 1 1 240px;
  min-width: 220px;
  max-width: 360px;
}
.perm-inline-form .perm-user-combo input[type="search"] {
  width: 100%;
  box-sizing: border-box;
}
.perm-arrow {
  color: #94a3b8;
  font-weight: 600;
}
.perm-checkboxes {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  margin-top: 8px;
  padding: 12px 0;
}
.perm-checkboxes label {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  margin: 0;
  font-weight: 400;
}

.perm-actions-cell {
  max-width: 400px;
}
.perm-inline-cb {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-right: 12px;
  margin-bottom: 4px;
  white-space: nowrap;
  font-weight: 400;
}
.perm-mapped-table td {
  vertical-align: top;
  padding: 8px 10px;
}

.form-grid {
  display: grid;
  gap: 10px;
}

.form-grid.two-col {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.form-grid.two-col .full-row {
  grid-column: 1 / -1;
}

#compta-init-depense-form.form-grid.two-col {
  grid-template-columns: repeat(2, minmax(280px, 1fr));
  gap: 14px 20px;
  align-items: start;
}

.compta-compte-field .compte-combo-input,
#compta-init-depense-form .compta-compte-field input[type="text"] {
  margin-bottom: 6px;
}

.compte-combo {
  position: relative;
}

.compte-combo-input {
  width: 100%;
}

.compte-combo-list {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: 280px;
  overflow: auto;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.15);
  z-index: 60;
}

.compte-combo-item {
  width: 100%;
  border: 0;
  border-bottom: 1px solid #eef2f7;
  background: #fff;
  color: #0f172a;
  text-align: left;
  padding: 10px 12px;
  cursor: pointer;
  font: inherit;
}

.compte-combo-item:hover:not(:disabled),
.compte-combo-item:focus-visible:not(:disabled) {
  background: #eff6ff;
  outline: none;
}

.compte-combo-item.empty {
  color: #64748b;
  cursor: default;
}

.form-grid.three-col {
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.form-grid.three-col .full-row {
  grid-column: 1 / -1;
}

.form-grid.four-col {
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

.form-grid.four-col .full-row {
  grid-column: 1 / -1;
}

/* Alignement des cases à cocher dans les formulaires en grille */
.form-grid label.form-grid-checkbox {
  flex-direction: row;
  align-items: center;
  align-self: end;
  gap: 8px;
}

.form-grid label.form-grid-checkbox input[type="checkbox"] {
  margin: 0;
  width: auto;
}

/* Formulaire patient : grille 3 colonnes alignée */
#patient-form.form-grid.three-col {
  gap: 16px;
}

/* Formulaire GMAO équipement : grille 2 colonnes alignée */
#gmao-equipement-form.form-grid.two-col {
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr);
  gap: 16px 24px;
  align-items: start;
}

#gmao-equipement-form.form-grid label {
  min-width: 0; /* évite le débordement */
}

#gmao-equipement-form.form-grid label input,
#gmao-equipement-form.form-grid label select,
#gmao-equipement-form.form-grid label textarea {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#gmao-equipement-form.form-grid .full-row {
  grid-column: 1 / -1;
  width: 100%;
}

#gmao-equipement-form.form-grid .full-row label {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Formulaire pièce détachée GMAO */
#gmao-piece-form.form-grid.two-col {
  grid-template-columns: minmax(200px, 1fr) minmax(200px, 1fr);
  gap: 16px 24px;
  align-items: start;
}

#gmao-piece-form.form-grid label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

#gmao-piece-form.form-grid label input,
#gmao-piece-form.form-grid label select {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#gmao-piece-form.form-grid .full-row {
  grid-column: 1 / -1;
}

#gmao-piece-form .gmao-piece-lien-block .gmao-section-title {
  font-weight: 600;
  display: block;
  margin-bottom: 4px;
}

/* Titres de section : alignement et séparation */
#gmao-equipement-form .gmao-section-title {
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid #e5e7eb;
}

#gmao-equipement-form .gmao-section-title:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}

/* Sous-sections garantie, MP : grille interne alignée (lignes et colonnes) */
#gmao-equipement-form .gmao-sub-grid,
#gmao-equipement-form #gmao-eq-garantie-details,
#gmao-equipement-form #gmao-eq-mp-details {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr);
  gap: 16px 24px;
  align-items: start;
}

#gmao-equipement-form #gmao-eq-garantie-details label,
#gmao-equipement-form #gmao-eq-mp-details label {
  min-width: 0;
}

#gmao-equipement-form #gmao-eq-garantie-details label.full-row,
#gmao-equipement-form #gmao-eq-mp-details label.full-row,
#gmao-equipement-form #gmao-eq-mp-details ul.full-row {
  grid-column: 1 / -1;
}

@media (max-width: 768px) {
  #gmao-equipement-form.form-grid.two-col {
    grid-template-columns: 1fr;
  }
  #gmao-equipement-form #gmao-eq-garantie-details,
  #gmao-equipement-form #gmao-eq-mp-details {
    grid-template-columns: 1fr;
  }
}

/* Examens specialises: forcer 4 colonnes sur le formulaire */
#examen-specialise-form.form-grid.four-col {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(220px, 1fr)) !important;
  gap: 16px !important;
}

/* Le conteneur n'interfere pas avec la grille du formulaire */
#examen-specialise-fields {
  display: contents;
}

#examen-specialise-form .full-row {
  grid-column: 1 / -1;
}

@media (max-width: 1400px) {
  .form-grid.four-col {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 1200px) {
  .form-grid.three-col {
    grid-template-columns: repeat(2, 1fr);
  }
  .form-grid.four-col {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .form-grid.three-col {
    grid-template-columns: 1fr;
  }
  .form-grid.four-col {
    grid-template-columns: 1fr;
  }
}

label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 14px;
  font-weight: 500;
  color: #374151;
}

.label-req {
  color: #c62828;
  margin-right: 2px;
}

label:not(.table-controls label) {
  margin-bottom: 4px;
}

input, select, textarea {
  padding: 10px 14px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font: inherit;
  font-size: 14px;
  transition: all 0.2s ease;
  background: #fff;
}

input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

input:disabled, select:disabled, textarea:disabled {
  background: #f3f4f6;
  cursor: not-allowed;
  opacity: 0.6;
}

button {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  color: #fff;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  font-weight: 500;
  box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
  padding: 10px 18px;
  border-radius: 8px;
}

button:hover:not(:disabled) {
  background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(37, 99, 235, 0.3);
}

button:active:not(:disabled) {
  transform: translateY(0);
  box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
}

button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* Liens onglets stock pharmacie : apparence bouton */
a.pharma-stock-tab-btn {
  display: inline-block;
  text-decoration: none;
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  color: #fff;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  font-weight: 500;
  box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
  padding: 10px 18px;
  border-radius: 8px;
}
a.pharma-stock-tab-btn:hover {
  background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(37, 99, 235, 0.3);
  color: #fff;
}
a.pharma-stock-tab-btn.active {
  background: linear-gradient(135deg, #1e40af 0%, #1e3a8a 100%);
  box-shadow: 0 2px 6px rgba(30, 64, 175, 0.4);
  color: #fff;
}

.pharma-stock-tab-content {
  display: none;
}

.pharma-stock-tab-content.active {
  display: block;
}

.table-wrap {
  overflow: auto;
  margin-top: 12px;
}

/* Historique paiements : lecture horizontale, pas de colonnes ultra-étroites. */
.caisse-histo-totals {
  margin: 6px 0 4px;
  padding: 8px 10px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  flex-shrink: 0;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
.caisse-histo-totals-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  align-items: flex-end;
}
.caisse-histo-totals-item .caisse-histo-totals-label {
  display: block;
  font-size: 0.72rem;
  color: #64748b;
  margin-bottom: 1px;
}
.caisse-histo-totals-item strong {
  font-size: 0.9rem;
  color: #0f172a;
  font-variant-numeric: tabular-nums;
}
.caisse-histo-totals-note {
  margin: 4px 0 0;
  font-size: 0.72rem;
  color: #64748b;
  overflow-wrap: anywhere;
}

.caisse-histo-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}

.caisse-histo-badge--encours {
  background: #dbeafe;
  color: #1d4ed8;
}

.caisse-histo-badge--termine {
  background: #dcfce7;
  color: #15803d;
}

.caisse-histo-table-wrap {
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
  min-width: 0;
  margin-top: 0;
}

.caisse-histo-table-wrap .caisse-histo-table {
  width: max-content;
  min-width: 100%;
  max-width: none;
  table-layout: auto;
}

.caisse-histo-table-wrap thead th {
  position: static;
  z-index: 1;
  background: linear-gradient(180deg, #eff6ff 0%, #eaf2ff 100%);
  box-shadow: none;
}

.caisse-histo-table {
  font-size: 12px;
  border-collapse: collapse;
}

.caisse-histo-table th,
.caisse-histo-table td {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: auto;
  line-height: 1.35;
  padding: 7px 9px;
  text-align: left;
}

.caisse-histo-table td[style*="text-align:right"],
.caisse-histo-table th.caisse-histo-num {
  text-align: right;
}

/* Libellés / actes : limite raisonnable, retour à la ligne horizontal */
.caisse-histo-table th.caisse-histo-col-libelle,
.caisse-histo-table td.caisse-histo-col-libelle {
  min-width: 10rem;
  max-width: 22rem;
}

.caisse-histo-table th.caisse-histo-col-texte,
.caisse-histo-table td.caisse-histo-col-texte {
  min-width: 7rem;
  max-width: 14rem;
}

.caisse-histo-table th.caisse-histo-col-large,
.caisse-histo-table td.caisse-histo-col-large {
  min-width: 9rem;
  max-width: 18rem;
}

.caisse-histo-table th.caisse-histo-sel-col {
  width: 2.25rem;
  min-width: 2.25rem;
  max-width: 2.5rem;
  text-align: center;
}

.caisse-histo-table tfoot tr#caisse-histo-foot-row td {
  border-top: 2px solid #cbd5e1;
  font-size: 12px;
}

/* Historique paiements — compact, 4 lignes de filtres, pagination verticale, scroll horizontal tableau */
.subpanel[data-panel="caisse-histo"].active {
  display: block;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  overflow: visible;
}

.subpanel[data-panel="caisse-histo"] > .card {
  max-width: 100%;
  width: 100%;
  min-width: 0;
  overflow: visible;
  box-sizing: border-box;
  display: block;
  padding: 10px 12px;
}

.subpanel[data-panel="caisse-histo"] .caisse-histo-table-wrap {
  max-height: none;
  min-height: 0;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

.caisse-histo-controls.table-controls {
  display: block !important;
  align-items: stretch !important;
  padding: 6px 8px !important;
  margin: 0 0 6px !important;
  max-width: 100% !important;
  overflow: visible !important;
  box-sizing: border-box !important;
  position: relative;
  z-index: 20;
}

.caisse-histo-controls.table-controls > .filter-controls,
.caisse-histo-controls.table-controls > .caisse-histo-filters {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  flex-wrap: nowrap !important;
  gap: 6px !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

.caisse-histo-filters {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  overflow: visible;
}

.caisse-histo-filters-row {
  display: flex;
  align-items: flex-end;
  gap: 4px 6px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: visible;
}

.caisse-histo-filters-row--line1 {
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 6px;
}

.caisse-histo-filters-row--line2 {
  display: grid;
  grid-template-columns: minmax(0, 100px) minmax(0, 1fr) minmax(0, 1fr);
  gap: 4px 6px;
  align-items: end;
  overflow: visible;
  position: relative;
  z-index: 30;
}

.caisse-histo-filters-row--line3 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px 6px;
  align-items: end;
}

.caisse-histo-filters-row--line4 {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px 6px;
  align-items: end;
}

.caisse-histo-filters-row--fields > .caisse-histo-field,
.caisse-histo-filters-row--fields > .caisse-histo-field--columns-btn {
  min-width: 0;
  max-width: 100%;
  width: 100%;
}

.caisse-histo-filter-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
  margin-left: auto;
}

.caisse-histo-controls.table-controls .caisse-histo-filters-row--line1 input[type="text"] {
  flex: 1 1 180px !important;
  min-width: 0 !important;
  max-width: 100% !important;
  width: auto !important;
  box-sizing: border-box;
  font-size: 13px;
  padding: 5px 8px;
  min-height: 30px;
}

.caisse-histo-filters-row-period {
  flex-wrap: wrap;
  gap: 6px 10px;
}

.caisse-histo-pager {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
}

.caisse-histo-pager button {
  padding: 5px 8px;
  font-size: 12px;
  min-width: 0 !important;
}

.caisse-histo-pager span {
  font-size: 12px;
  min-width: 2rem;
  text-align: center;
}

.caisse-histo-controls.table-controls label.caisse-histo-field {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 2px !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  overflow: visible;
}

.caisse-histo-filter-col .caisse-histo-field {
  gap: 1px !important;
}

/* flex-basis en colonne = hauteur : ne pas utiliser 304px ici */
.caisse-histo-field--date {
  flex: 0 0 auto !important;
  min-width: 0 !important;
}

.caisse-histo-filters-row--fields .caisse-histo-field--date {
  flex: 1 1 0 !important;
  max-width: none !important;
  width: auto !important;
}

/* Largeur fixe des champs (évite l’élargissement des <select> selon le libellé le plus long) */
.caisse-histo-filter-grid--tier1,
.caisse-histo-filter-grid--tier2 {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 8px 10px;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.caisse-histo-filter-grid--tier1 {
  align-items: flex-end;
  gap: 6px 10px;
}

.caisse-histo-filter-col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 0 0 304px;
  width: 304px;
  max-width: 304px;
  min-width: 0;
  justify-content: flex-start;
}

.caisse-histo-field--columns-btn {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 2px;
  flex: 0 0 auto;
  width: 100%;
  margin: 0;
  padding: 0;
  overflow: visible;
  position: relative;
  z-index: 40;
}

.caisse-histo-field--columns-btn .histo-columns-control {
  position: relative;
  width: 100%;
  display: flex;
  align-items: stretch;
  overflow: visible;
  z-index: 41;
}

.caisse-histo-field--columns-btn #caisse-histo-columns-btn {
  width: 100%;
  min-height: 30px;
  box-sizing: border-box;
  font-size: 12px;
  padding: 5px 6px;
}

.caisse-histo-field--columns-btn .caisse-histo-field-label {
  visibility: hidden;
  overflow: hidden;
}

.caisse-histo-filter-col .caisse-histo-field--date {
  margin-bottom: 0 !important;
  flex: 0 0 auto !important;
  width: 100% !important;
  max-width: 100% !important;
}

.caisse-histo-filter-col .caisse-histo-field + .caisse-histo-field {
  margin-top: 0;
}

.caisse-histo-filter-col-spacer {
  display: block;
  flex: 0 0 auto;
  width: 100%;
  height: calc(13px * 1.2 + 2px + 36px);
  pointer-events: none;
}

.caisse-histo-filter-tier2-actions {
  display: flex;
  flex: 0 0 304px;
  width: 304px;
  max-width: 304px;
  min-width: 0;
  align-items: flex-end;
  gap: 6px;
  flex-wrap: wrap;
  box-sizing: border-box;
}

.caisse-histo-filter-tier2-actions .caisse-histo-btn-compact {
  flex: 1 1 0;
  min-width: 0;
}

.caisse-histo-filter-grid--tier2 .caisse-histo-field {
  flex: 0 0 304px;
  width: 304px;
  max-width: 304px;
  min-width: 0;
}

.caisse-histo-native-select {
  width: 100%;
  min-height: 30px;
  padding: 5px 6px;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  font-size: 12px;
  background: #fff;
  box-sizing: border-box;
}

.caisse-histo-native-select:disabled {
  background: #f1f5f9;
  color: #94a3b8;
  cursor: not-allowed;
}

.caisse-histo-filter-col .caisse-histo-field {
  flex: 0 0 auto !important;
  width: 100%;
  max-width: 100%;
}

.caisse-histo-field-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: #374151;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.caisse-histo-controls.table-controls .caisse-histo-field input[type="date"],
.caisse-histo-controls.table-controls .caisse-histo-field input[type="text"],
.caisse-histo-controls.table-controls .caisse-histo-field input[type="search"],
.caisse-histo-controls.table-controls .caisse-histo-field select {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  flex: none !important;
  box-sizing: border-box;
  font-size: 12px;
  padding: 5px 6px;
  height: auto;
  min-height: 30px;
}

.caisse-histo-field .caisse-histo-combo-wrap,
.caisse-histo-field .pharma-med-combo-wrap {
  position: relative;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}

.caisse-histo-field .pharma-med-combo-wrap input[type="search"] {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 30px;
  padding: 5px 6px;
  font-size: 12px;
  box-sizing: border-box;
}

.caisse-histo-field .pharma-med-combo-dd.is-open {
  z-index: 500;
}

.caisse-histo-filters-row-actions {
  flex-wrap: wrap;
  align-items: center;
  gap: 5px 6px;
  padding-top: 2px;
  border-top: 1px solid rgba(15, 23, 42, 0.08);
}

.caisse-histo-controls.table-controls .caisse-histo-btn-compact {
  padding: 5px 8px !important;
  font-size: 11px !important;
  line-height: 1.2 !important;
  min-width: 0 !important;
  min-height: 30px;
  white-space: nowrap;
  transform: none !important;
}

.caisse-histo-controls.table-controls .caisse-histo-btn-compact:hover {
  transform: none !important;
}

.caisse-histo-actions-sep {
  width: 1px;
  height: 22px;
  background: rgba(15, 23, 42, 0.15);
  margin: 0 2px;
  flex-shrink: 0;
}

.caisse-histo-btn-assurance {
  background: #2196f3;
  color: #fff;
  border: none;
}

.caisse-histo-btn-recap {
  background: #2e7d32;
  color: #fff;
  border: none;
}

.caisse-histo-btn-excel {
  background: #217346;
  color: #fff;
  border: none;
}

@media (max-width: 900px) {
  .caisse-histo-actions-sep {
    display: none;
  }

  .caisse-histo-filters-row--line3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .caisse-histo-filters-row--line4 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .module-panel[data-module="caisse"] > .tabs.caisse-module-tabs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.histo-columns-control {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.histo-columns-panel {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 500;
  min-width: 240px;
  max-height: 320px;
  overflow: auto;
  background: #fff;
  border: 1px solid #dbe4f0;
  border-radius: 10px;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.18);
  padding: 10px;
}

.histo-columns-options {
  display: grid;
  gap: 6px;
}

.histo-col-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: #1e293b;
}

.histo-columns-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}

/* Pilotage — tableaux où en-têtes et données doivent rester alignés à gauche (ex. occupation lits) */
.pilotage-table-wrap-align table.pilotage-table-data-left {
  border-collapse: collapse;
}
.pilotage-table-wrap-align table.pilotage-table-data-left th,
.pilotage-table-wrap-align table.pilotage-table-data-left td {
  text-align: left;
  vertical-align: middle;
  padding: 10px 12px;
  border-bottom: 1px solid #e2e8f0;
}
.pilotage-table-wrap-align table.pilotage-table-data-left thead th {
  background: #f1f5f9;
  font-weight: 600;
  color: #1e293b;
}

/* Tableaux longs (ex. paramètres examens labo) : défilement interne pour tout afficher */
.table-wrap-scroll {
  max-height: min(70vh, 600px);
  overflow: auto;
  display: block;
}

.table-wrap-scroll table {
  width: 100%;
  min-width: 800px;
}

.table-wrap-scroll thead {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f1f5f9;
  box-shadow: 0 1px 0 0 #e2e8f0;
}

.table-controls {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 12px 0 16px 0;
  flex-wrap: wrap;
  padding: 16px;
  background: #f9fafb;
  border-radius: 8px;
  border: 1px solid #e5e7eb;
}

.table-controls > div {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  width: 100%;
}

.table-controls input[type="text"],
.table-controls input[type="search"] {
  flex: 1 1 280px;
  min-width: 200px;
  padding: 10px 14px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-size: 14px;
  transition: all 0.2s ease;
  background: #fff;
}

.table-controls .pharma-med-combo-wrap.assurances-list-combo {
  flex: 1 1 280px;
  min-width: 200px;
}

.table-controls .pharma-med-combo-wrap.assurances-list-combo input[type="search"] {
  width: 100%;
  box-sizing: border-box;
  flex: none;
  min-width: 0;
}

.table-controls input[type="text"]:focus,
.table-controls input[type="search"]:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.table-controls input[type="date"],
.actes-list-controls .actes-list-filter {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  color: #475569;
  flex: 0 1 200px;
  min-width: 160px;
}

.actes-list-controls .actes-list-filter select {
  width: 100%;
  min-width: 0;
}

.table-controls select {
  padding: 10px 14px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-size: 14px;
  transition: all 0.2s ease;
  background: #fff;
  min-width: 140px;
}

.table-controls input[type="date"]:focus,
.table-controls select:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.table-controls label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 500;
  color: #374151;
  margin: 0;
  flex-direction: row;
}

.table-controls button {
  padding: 10px 20px;
  font-weight: 500;
  border-radius: 8px;
  transition: all 0.2s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.table-controls button:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

/* Tableau de pilotage : espacement filtres → onglets → tableaux / cartes */
.module-panel[data-module="pilotage"] .card > .table-controls {
  margin: 12px 0 28px 0;
}

.module-panel[data-module="pilotage"] .card > .tabs {
  margin-bottom: 0;
  /* La barre d’onglets a padding-bottom: 0 par défaut : on crée l’espace sous les onglets */
  padding-bottom: 20px;
}

.module-panel[data-module="pilotage"] .card > main.subpanels {
  margin-top: 0;
  padding: 28px 20px 20px 20px;
}

/* Espace net entre la zone des onglets et les cartes / tableaux (évite l’effet « collé ») */
.module-panel[data-module="pilotage"] main.subpanels > .subpanel {
  padding-top: 8px;
}

/* Sous-onglets pilotage (à l'intérieur de chaque onglet principal) */
.pilotage-subtabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 16px 0;
  padding-bottom: 10px;
  border-bottom: 1px solid #e2e8f0;
}

.pilotage-subtab {
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
  color: #64748b;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.pilotage-subtab:hover {
  background: #f1f5f9;
  color: #334155;
}

.pilotage-subtab.active {
  color: #1d4ed8;
  background: #eff6ff;
  border-color: #93c5fd;
}

.pilotage-subpanels {
  display: block;
}

.pilotage-subpanel {
  display: none;
}

.pilotage-subpanel.active {
  display: block;
}

/* Graphiques synthèse pilotage (Performance, Recette, Dépenses) */
.pilotage-charts-overview {
  padding: 16px;
  margin-bottom: 20px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fff;
}

.pilotage-charts-overview-title {
  margin: 0 0 4px;
  font-size: 15px;
  color: #1e293b;
  font-weight: 600;
}

.pilotage-charts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
}

.pilotage-chart-wrap {
  padding: 12px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #f8fafc;
}

.pilotage-chart-title {
  margin: 0 0 8px;
  font-size: 13px;
  color: #475569;
  font-weight: 600;
}

.pilotage-chart-canvas-host {
  position: relative;
}

.pilotage-chart-canvas-host canvas {
  width: 100% !important;
  height: 100% !important;
}

.pager {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: #f9fafb;
  border-radius: 8px;
  border: 1px solid #e5e7eb;
}

.pager button {
  padding: 6px 12px;
  font-size: 13px;
  min-width: 36px;
}

.pager button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 14px;
  background: #fff;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

th, td {
  border-bottom: 1px solid #e5e7eb;
  padding: 12px 16px;
  text-align: left;
}

th {
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  font-weight: 600;
  color: #1e293b;
  text-transform: uppercase;
  font-size: 12px;
  letter-spacing: 0.05em;
  border-bottom: 2px solid #e2e8f0;
  position: sticky;
  top: 0;
  z-index: 10;
}

tbody tr {
  transition: background-color 0.15s ease;
}

tbody tr:hover {
  background-color: #f8fafc;
}

tbody tr:nth-child(even) {
  background-color: #fafbfc;
}

/* Groupement par patient — palette caisse (bleu / indigo) */
.caisse-group-row td,
.labo-group-row td {
  background: #eef2ff;
  font-weight: 600;
  border-bottom: 1px solid #e2e8f0;
  padding: 8px 12px;
}

.caisse-group-row:hover td,
.labo-group-row:hover td {
  background: #e0e7ff;
}

.caisse-group-header,
.labo-group-header {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
}

.caisse-group-toggle,
.labo-group-toggle {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  padding: 0;
  border: none;
  background: transparent;
  color: #3730a3;
  font-size: 10px;
  line-height: 1;
  cursor: pointer;
  pointer-events: none;
}

.caisse-group-left,
.labo-group-left {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
}

.caisse-group-name,
.labo-group-name {
  font-size: 13px;
  color: #1e3a8a;
  line-height: 1.3;
  word-break: break-word;
}

.caisse-group-totals {
  flex-shrink: 0;
  display: grid;
  grid-template-columns: repeat(5, minmax(4.5rem, 1fr));
  column-gap: 28px;
  padding: 2px 4px;
  align-items: center;
}

.caisse-group-total-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 3px;
  min-width: 0;
}

.caisse-group-total-cell .lbl {
  color: #64748b;
  font-weight: 500;
  font-size: 11px;
  line-height: 1.2;
  white-space: nowrap;
}

.caisse-group-total-cell .val {
  color: #0f172a;
  font-weight: 600;
  font-size: 13px;
  line-height: 1.25;
  white-space: nowrap;
}

.caisse-group-expanded td,
.labo-group-expanded td {
  border-bottom: none;
}

.caisse-group-expanded .caisse-group-totals {
  display: none;
}

.caisse-enc-detail-row td,
.labo-prescription-detail-row td,
.labo-resultat-detail-row td {
  background: #fff;
}

.caisse-enc-detail-row td:first-child {
  padding-left: 2.25rem;
}

.labo-group-meta {
  flex-shrink: 0;
  font-size: 12px;
  color: #64748b;
  font-weight: 500;
}

.labo-prescription-detail-row td:nth-child(2) {
  padding-left: 2.25rem;
}

.labo-resultat-detail-row td:nth-child(2) {
  padding-left: 2.25rem;
}

.labo-list-toolbar {
  --labo-control-h: 38px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

.labo-list-toolbar .btn-secondary,
.labo-list-toolbar .btn-primary {
  height: var(--labo-control-h);
  min-height: var(--labo-control-h);
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  line-height: 1.2;
  box-sizing: border-box;
  white-space: nowrap;
}

.labo-list-toolbar select,
.labo-list-toolbar .labo-toolbar-select {
  height: var(--labo-control-h);
  min-height: var(--labo-control-h);
  padding: 0 28px 0 10px;
  border: 1px solid #bfd4fb;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.2;
  background: #fff;
  color: #1e293b;
  box-sizing: border-box;
  min-width: 10.5rem;
  cursor: pointer;
}

.labo-list-toolbar.labo-list-toolbar-stacked {
  flex-direction: column;
  align-items: stretch;
  flex-wrap: nowrap;
  gap: 10px;
}

.labo-toolbar-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  min-height: var(--labo-control-h, 38px);
}

.labo-toolbar-row-pager,
.labo-toolbar-row-search {
  justify-content: space-between;
  gap: 16px;
}

.labo-toolbar-row-search .labo-toolbar-search {
  flex: 1;
  min-width: 200px;
}

.labo-table-pager {
  margin-top: 12px;
}

.labo-toolbar-action-slot {
  flex-shrink: 0;
  margin-left: auto;
  min-width: 10rem;
  display: flex;
  justify-content: flex-end;
}

.labo-toolbar-hint {
  font-size: 12px;
  color: #64748b;
  white-space: nowrap;
}

.labo-list-toolbar .labo-date-filter {
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  height: var(--labo-control-h, 38px);
  margin: 0;
  margin-bottom: 0;
  line-height: 1;
}

.labo-list-toolbar .labo-date-filter input {
  height: var(--labo-control-h, 38px);
  min-height: var(--labo-control-h, 38px);
  padding: 0 8px;
  border: 1px solid #bfd4fb;
  border-radius: 8px;
  font-size: 13px;
  box-sizing: border-box;
  background: #fff;
  color: #1e293b;
}

.labo-toolbar-search {
  flex: 1;
  min-width: 250px;
  height: var(--labo-control-h, 38px);
  min-height: var(--labo-control-h, 38px);
  padding: 0 10px;
  border: 1px solid #bfd4fb;
  border-radius: 8px;
  font-size: 13px;
  box-sizing: border-box;
  background: #fff;
}

.labo-toolbar-pager {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.labo-table-pager .btn-secondary {
  height: var(--labo-control-h, 38px);
  min-height: var(--labo-control-h, 38px);
  padding: 0 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  line-height: 1.2;
  box-sizing: border-box;
}

.labo-page-info {
  min-width: 60px;
  text-align: center;
  font-size: 13px;
  color: #475569;
}

tbody tr:nth-child(even):hover {
  background-color: #f1f5f9;
}

tbody tr:last-child td {
  border-bottom: none;
}

td:last-child, th:last-child {
  text-align: center;
  width: auto;
}

.db-backup-restore-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px 16px;
  margin-bottom: 16px;
}
.db-backup-actions .table-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.db-backup-intro {
  margin-bottom: 16px;
}
.param-audit-intro {
  margin-bottom: 16px;
}
.param-audit-filters {
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px 14px;
  margin-bottom: 12px;
}
.param-audit-pager {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}
.param-audit-detail-pre {
  max-height: 420px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 12px;
  background: #f8f9fa;
  padding: 12px;
  border-radius: 6px;
}
.param-audit-table .audit-status-ok {
  color: #2e7d32;
}
.param-audit-table .audit-status-err {
  color: #c62828;
}

.btn-danger {
  background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
  box-shadow: 0 2px 4px rgba(239, 68, 68, 0.2);
}

.btn-danger:hover:not(:disabled) {
  background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
  box-shadow: 0 4px 8px rgba(239, 68, 68, 0.3);
}

.btn-prendre-charge {
  white-space: nowrap;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 500;
}

a {
  color: #2563eb;
  text-decoration: none;
  transition: color 0.2s ease;
}

a:hover {
  color: #1d4ed8;
  text-decoration: underline;
}

table a {
  font-weight: 500;
}

table a:hover {
  text-decoration: underline;
}

/* KPI Cards */
.pilotage-kpi-actions {
  margin-top: 10px;
}
.kpi-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 24px;
}

.kpi {
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  text-align: center;
  flex: 1;
  min-width: 150px;
  padding: 16px;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
}

.kpi.success {
  border-left: 4px solid #22c55e;
  background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
}

.kpi.warning {
  border-left: 4px solid #f59e0b;
  background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
}

.kpi-label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #64748b;
  font-weight: 600;
  margin-bottom: 8px;
}

.kpi-value {
  font-size: 24px;
  font-weight: 700;
  color: #1e293b;
}

.kpi-meta {
  margin-top: 6px;
  font-size: 12px;
  color: #64748b;
}

.freshness-success {
  color: #15803d !important;
  font-weight: 600;
}

.freshness-warning {
  color: #b45309 !important;
  font-weight: 600;
}

.freshness-danger {
  color: #b91c1c !important;
  font-weight: 600;
}

.freshness-muted {
  color: #64748b !important;
}

.freshness-pill {
  display: inline-block;
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 700;
  margin-right: 6px;
  vertical-align: middle;
}

.freshness-pill.freshness-success {
  background: #dcfce7;
  color: #166534 !important;
}

.freshness-pill.freshness-warning {
  background: #fef3c7;
  color: #92400e !important;
}

.freshness-pill.freshness-danger {
  background: #fee2e2;
  color: #991b1b !important;
}

.freshness-pill.freshness-muted {
  background: #e2e8f0;
  color: #334155 !important;
}

.dashboard-freshness-card.dashboard-freshness-success {
  border-left: 4px solid #22c55e;
}

.dashboard-freshness-card.dashboard-freshness-warning {
  border-left: 4px solid #f59e0b;
}

.dashboard-freshness-card.dashboard-freshness-danger {
  border-left: 4px solid #ef4444;
}

.dashboard-freshness-card.dashboard-freshness-muted {
  border-left: 4px solid #94a3b8;
}

.compta-op-list {
  margin-top: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.compta-op-item {
  font-size: 12px;
  color: #475569;
  line-height: 1.35;
}

.compta-op-item .compta-op-link {
  color: #1d4ed8;
  text-decoration: none;
  font-weight: 600;
}

.compta-op-item .compta-op-link:hover {
  text-decoration: underline;
}

.compta-op-meta {
  color: #64748b;
  margin-left: 4px;
}

.dashboard-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}

.stat-card {
  padding: 14px;
}

.stat-card .label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
  font-weight: 600;
  margin-bottom: 6px;
}

.stat-card .value {
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
}

.stat-card .sub {
  margin-top: 6px;
  font-size: 12px;
  color: #64748b;
}

.stat-card.negative {
  border-left: 4px solid #ef4444;
  background: #fef2f2;
}

.stat-card.warning {
  border-left: 4px solid #f59e0b;
  background: #fffbeb;
}

.stat-card.success {
  border-left: 4px solid #22c55e;
  background: #f0fdf4;
}

.flex-row {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.cards-inline {
  display: flex;
  gap: 24px;
  align-items: flex-start;
}

.cards-inline > div {
  flex: 1;
  min-width: 260px;
}

.card-grid {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.card.mini {
  padding: 12px;
}

.card.mini .card-meta {
  font-size: 0.85rem;
  color: var(--text-muted, #64748b);
  margin-top: 4px;
}

.card.mini.warning {
  border-left: 4px solid #f59e0b;
  background: #fffbeb;
}

.card.mini.danger {
  border-left: 4px solid #ef4444;
  background: #fef2f2;
}

.card.mini.success {
  border-left: 4px solid #22c55e;
  background: #f0fdf4;
}

/* Comptabilite - Resume journal (evite l'etirement horizontal) */
.compta-journal-resume {
  display: grid;
  grid-template-columns: repeat(3, minmax(220px, 1fr));
  gap: 12px;
  align-items: stretch;
}

.compta-journal-resume .compta-journal-card {
  width: 100%;
  border-radius: 10px;
  border: 1px solid #dbe4f0;
  background: linear-gradient(160deg, #f8fbff 0%, #ffffff 100%);
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.08);
}

.compta-journal-resume .compta-journal-card .card-meta {
  margin-bottom: 8px;
  font-weight: 600;
  color: #1e3a8a;
}

.compta-journal-placeholder {
  color: #64748b;
}

@media (max-width: 768px) {
  .compta-journal-resume {
    grid-template-columns: repeat(2, minmax(220px, 1fr));
  }
}

@media (max-width: 560px) {
  .compta-journal-resume {
    grid-template-columns: 1fr;
  }
}

/* GMAO – Indicateurs de pilotage (KPI cards) */
.gmao-indicateurs-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
.gmao-filtre-periode {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.gmao-filtre-periode label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.9rem;
}
.gmao-filtre-periode input[type="date"] {
  padding: 6px 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 16px;
}
.gmao-indicateurs-header h3 {
  margin: 0;
}
.gmao-indicateurs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}
.gmao-indicateurs-grid .full-row {
  grid-column: 1 / -1;
}
.gmao-indicateurs-section {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}
.gmao-indicateurs-section h4 {
  margin: 0 0 12px 0;
  font-size: 1rem;
  color: var(--color-muted);
}
.gmao-section-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0 0 12px 0;
}
.gmao-section-title-row h4 {
  margin: 0;
}
.gmao-kpi-actions {
  margin-top: 10px;
}
.gmao-charts-row {
  margin-top: 20px;
}
.gmao-charts-container {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  align-items: flex-start;
}
.gmao-chart-wrap {
  flex: 1;
  min-width: 280px;
  max-width: 480px;
  height: 280px;
  position: relative;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.gmao-chart-wrap canvas {
  max-height: 100%;
}
.gmao-chart-wrap.gmao-chart-single {
  max-width: 560px;
}
.gmao-kpi-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.gmao-kpi-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.gmao-kpi-card.success {
  border-left: 4px solid #22c55e;
  background: linear-gradient(135deg, #f0fdf4 0%, #ffffff 100%);
}
.gmao-kpi-card.warning {
  border-left: 4px solid #f59e0b;
  background: linear-gradient(135deg, #fffbeb 0%, #ffffff 100%);
}
.gmao-kpi-card.danger {
  border-left: 4px solid #ef4444;
  background: linear-gradient(135deg, #fef2f2 0%, #ffffff 100%);
}
.gmao-kpi-card.neutral {
  border-left: 4px solid #64748b;
  background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
}
.gmao-kpi-label {
  font-size: 0.875rem;
  color: var(--color-muted);
  font-weight: 500;
  margin-bottom: 6px;
  line-height: 1.3;
}
.gmao-kpi-value {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--color-text);
  line-height: 1.2;
}
.gmao-kpi-card.success .gmao-kpi-value { color: #16a34a; }
.gmao-kpi-card.warning .gmao-kpi-value { color: #d97706; }
.gmao-kpi-card.danger .gmao-kpi-value { color: #dc2626; }
.gmao-kpi-progress {
  margin-top: 10px;
  height: 6px;
  background: #e5e7eb;
  border-radius: 3px;
  overflow: hidden;
}
.gmao-kpi-progress-bar {
  height: 100%;
  border-radius: 3px;
  transition: width 0.4s ease;
}
.gmao-kpi-progress-bar.success { background: linear-gradient(90deg, #22c55e, #16a34a); }
.gmao-kpi-progress-bar.warning { background: linear-gradient(90deg, #f59e0b, #d97706); }
.gmao-kpi-progress-bar.danger { background: linear-gradient(90deg, #ef4444, #dc2626); }

/* GMAO – Fiche équipement (modal) */
.gmao-fiche-equipement-modal {
  max-width: 780px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.gmao-fiche-equipement-content {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.gmao-fiche-loading {
  color: #666;
  margin: 0;
}
.detail-list {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 20px;
  align-items: baseline;
}
.detail-list dt {
  font-weight: 600;
  color: var(--color-muted);
  font-size: 0.85rem;
}
.detail-list dd {
  margin: 0;
  font-size: 0.95rem;
}
.gmao-modal-rapport {
  max-width: 540px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.gmao-modal-rapport .modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  padding: 12px 16px;
}
.gmao-rapport-ot-info {
  font-size: 0.85rem;
  margin: 0 0 8px 0;
}
.gmao-modal-rapport .form-grid label {
  margin-bottom: 6px;
}
.gmao-modal-rapport textarea {
  min-height: 2.2em;
  padding: 6px 10px;
}
.gmao-rapport-pieces-section h4 {
  font-size: 0.9rem;
  margin: 0 0 6px 0;
}
.gmao-rapport-pieces-add {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid #e2e8f0;
}
.gmao-modal-mouvements {
  max-width: 780px;
}
.gmao-mouvement-form-inline {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 20px;
  margin: 12px 0;
  padding: 12px 0;
  border-top: 1px solid #e2e8f0;
}
.gmao-mouvement-form-inline label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
}
.gmao-mouvement-form-inline label:not(:last-of-type) {
  min-width: 120px;
}
.gmao-mouvement-form-inline input,
.gmao-mouvement-form-inline select {
  min-width: 100px;
}
.gmao-mouvement-form-inline .gmao-mouvement-motif-label {
  flex: 1;
  min-width: 180px;
}
.gmao-mouvements-list {
  max-height: 200px;
  overflow: auto;
  font-size: 0.85rem;
}
.gmao-mouvements-list table {
  min-width: 100%;
  table-layout: auto;
}
.gmao-mouvements-list table {
  width: 100%;
  border-collapse: collapse;
}
.gmao-mouvements-list th,
.gmao-mouvements-list td {
  padding: 4px 8px;
  text-align: left;
  border-bottom: 1px solid #e2e8f0;
}
.gmao-rapport-pieces-list {
  max-height: 80px;
  overflow-y: auto;
  font-size: 0.85rem;
}
.gmao-rapport-pieces-list table {
  width: 100%;
  border-collapse: collapse;
}
.gmao-rapport-pieces-list th,
.gmao-rapport-pieces-list td {
  padding: 4px 8px;
  text-align: left;
  border-bottom: 1px solid #e2e8f0;
}
.gmao-modal-rapport .gmao-rapport-readonly {
  padding: 6px 10px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  font-size: 0.85rem;
  min-height: 1.8em;
  white-space: pre-wrap;
}
.gmao-dm-actions-select,
.gmao-ot-actions-select {
  padding: 6px 10px;
  font-size: 0.875rem;
  min-width: 140px;
  border-radius: 6px;
  cursor: pointer;
}
.gmao-fiche-hero {
  display: flex;
  gap: 24px;
  align-items: flex-start;
  padding: 16px;
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  border-radius: 10px;
  border: 1px solid var(--color-border);
}
.gmao-fiche-photo-wrap {
  flex-shrink: 0;
  width: 180px;
  height: 140px;
  border-radius: 8px;
  overflow: hidden;
  background: #e2e8f0;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #cbd5e1;
}
.gmao-fiche-photo-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gmao-fiche-photo-placeholder {
  color: #94a3b8;
  font-size: 0.85rem;
  text-align: center;
  padding: 12px;
}
.gmao-fiche-photo-placeholder svg {
  width: 48px;
  height: 48px;
  margin-bottom: 8px;
  opacity: 0.5;
}
.gmao-fiche-photos-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.gmao-fiche-photo-item {
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid #cbd5e1;
  background: #e2e8f0;
  min-width: 200px;
  min-height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.gmao-fiche-photo-img {
  max-width: 100%;
  max-height: 220px;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
.gmao-fiche-photo-fail {
  color: #94a3b8;
  font-size: 0.9rem;
}
.gmao-fiche-doc-download {
  display: inline-block;
  margin-right: 12px;
  margin-bottom: 6px;
}
.gmao-fiche-hero-info {
  flex: 1;
  min-width: 0;
}
.gmao-fiche-hero-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-text);
  margin: 0 0 4px 0;
}
.gmao-fiche-hero-subtitle {
  font-size: 0.9rem;
  color: var(--color-muted);
  margin: 0 0 12px 0;
}
.gmao-fiche-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 6px;
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.gmao-fiche-badge.actif {
  background: #dcfce7;
  color: #166534;
}
.gmao-fiche-badge.hors-service {
  background: #fee2e2;
  color: #991b1b;
}
.gmao-fiche-section {
  padding: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
}
.gmao-fiche-section h4 {
  margin: 0 0 12px 0;
  font-size: 0.95rem;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}
.gmao-fiche-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 24px;
}
.gmao-fiche-grid.full-width {
  grid-template-columns: 1fr;
}
.gmao-fiche-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.gmao-fiche-field-label {
  font-size: 0.8rem;
  color: var(--color-muted);
  font-weight: 500;
}
.gmao-fiche-field-value {
  font-size: 0.95rem;
  color: var(--color-text);
}
.gmao-fiche-doc-link {
  color: var(--color-primary);
  text-decoration: none;
  font-size: 0.9rem;
}
.gmao-fiche-doc-link:hover {
  text-decoration: underline;
}
.gmao-fiche-field.full-width {
  grid-column: 1 / -1;
}
.gmao-fiche-table {
  width: 100%;
  font-size: 0.9rem;
  border-collapse: collapse;
}
.gmao-fiche-table th,
.gmao-fiche-table td {
  padding: 8px 12px;
  text-align: left;
  border-bottom: 1px solid var(--color-border);
}
.gmao-fiche-table th {
  font-weight: 600;
  color: var(--color-muted);
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
@media (max-width: 600px) {
  .gmao-fiche-hero { flex-direction: column; }
  .gmao-fiche-photo-wrap { width: 100%; height: 160px; }
  .gmao-fiche-grid { grid-template-columns: 1fr; }
}

/* Historique paiements – Voir plus / Voir moins */
.caisse-histo-voir-plus,
.caisse-histo-voir-moins {
  padding: 6px 14px;
  font-size: 0.875rem;
  color: #2563eb;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 6px;
  cursor: pointer;
  font-weight: 500;
}
.caisse-histo-voir-plus:hover,
.caisse-histo-voir-moins:hover {
  background: #dbeafe;
  color: #1d4ed8;
}

/* Scrollbar styling */
.table-wrap::-webkit-scrollbar {
  height: 8px;
  width: 8px;
}

.table-wrap::-webkit-scrollbar-track {
  background: #f1f5f9;
  border-radius: 4px;
}

.table-wrap::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 4px;
}

.table-wrap::-webkit-scrollbar-thumb:hover {
  background: #94a3b8;
}

.hint-text {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  color: #64748b;
  line-height: 1.45;
}

/* Badge styles for stock module */
.badge {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 0.875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.badge-error {
  background-color: #fef2f2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

.badge-warning {
  background-color: #fffbeb;
  color: #92400e;
  border: 1px solid #fde68a;
}

.badge-success {
  background-color: #f0fdf4;
  color: #166534;
  border: 1px solid #bbf7d0;
}

.badge-info {
  background-color: #eff6ff;
  color: #1e40af;
  border: 1px solid #bfdbfe;
}

/* Vente pharmacie - ID patient sous le nom */
.pharma-vente-patient-id {
  font-size: 0.8em;
  color: #64748b;
  margin-top: 2px;
}

/* Modal résultats acte - feuille de suivi */
.btn-resultats-acte {
  padding: 6px 12px;
  font-size: 0.85em;
  cursor: pointer;
  border-radius: 6px;
  white-space: nowrap;
}

.resultats-labo-modal .resultat-ref {
  color: #64748b;
  font-size: 0.9em;
}

.resultats-labo-modal .resultat-anormal {
  color: #dc2626;
  font-weight: 600;
}

.resultats-labo-modal .resultat-labo-item.anormal {
  color: #991b1b;
  font-weight: 500;
}

.resultats-conclusion-modal li {
  margin-bottom: 8px;
}

/* Au-dessus des autres modals (.modal = 10000) pour afficher les résultats au premier plan */
#modal-resultats-acte.modal {
  z-index: 12000;
}

.resultats-acte-modal {
  --res-acte-accent: #0f766e;
  --res-acte-accent-soft: rgba(15, 118, 110, 0.1);
  --res-acte-border: #d1e7e4;
  --res-acte-header: linear-gradient(135deg, #f0fdfa 0%, #ecfdf5 55%, #f8fafc 100%);
}

.modal-resultats-examen-content,
.resultats-acte-modal-content {
  max-width: min(960px, 96vw) !important;
  width: 100%;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 16px;
  border: 1px solid var(--res-acte-border, #e2e8f0);
  background: #fff;
}

.resultats-acte-modal-header {
  flex-shrink: 0;
  background: var(--res-acte-header) !important;
  border-bottom: 1px solid var(--res-acte-border, #e2e8f0) !important;
  padding: 16px 20px !important;
}

.resultats-acte-modal-title {
  margin: 0;
  font-size: 1.12rem;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: 0.01em;
}

#modal-resultats-acte .modal-header .modal-close {
  color: #64748b;
  border-radius: 8px;
}

#modal-resultats-acte .modal-header .modal-close:hover {
  background: rgba(15, 118, 110, 0.08);
  color: #0f766e;
}

.resultats-acte-modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  padding: 16px 20px !important;
  background: #f8fafc !important;
  gap: 14px;
}

.resultats-acte-modal-footer {
  flex-shrink: 0;
  justify-content: flex-end !important;
  padding: 14px 20px !important;
  background: linear-gradient(135deg, #f8fafc 0%, #f0fdfa 100%) !important;
  border-top: 1px solid var(--res-acte-border, #e2e8f0) !important;
}

#modal-resultats-acte .modal-resultats-acte-dismiss {
  min-width: 110px;
  padding: 10px 22px;
  font-size: 0.92rem;
  font-weight: 600;
  border-radius: 10px;
  background: #fff;
  border: 1px solid #cbd5e1;
  color: #334155;
  box-shadow: none;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

#modal-resultats-acte .modal-resultats-acte-dismiss:hover {
  background: #f1f5f9;
  border-color: #94a3b8;
  color: #0f172a;
}

#modal-resultats-acte .modal-resultats-acte-print {
  min-width: 110px;
  padding: 10px 22px;
  font-size: 0.92rem;
  font-weight: 600;
  border-radius: 10px;
  background: #0f766e;
  border: 1px solid #0d9488;
  color: #fff;
  box-shadow: none;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}

#modal-resultats-acte .modal-resultats-acte-print:hover {
  background: #0d9488;
  border-color: #0f766e;
}

.consult-pres-result-cell .btn-consult-voir-resultats {
  padding: 6px 12px;
  font-size: 0.82rem;
  font-weight: 600;
  border-radius: 8px;
  border: 1px solid #99f6e4;
  background: #f0fdfa;
  color: #0f766e;
  cursor: pointer;
  white-space: nowrap;
}

.consult-pres-result-cell .btn-consult-voir-resultats:hover {
  background: #ccfbf1;
  border-color: #5eead4;
}

.modal-resultats-acte-meta-wrap {
  margin-bottom: 16px;
}

.modal-resultats-meta-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  padding: 14px 16px;
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  font-size: 0.92rem;
  color: #334155;
}

.modal-resultats-meta-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: min(140px, 100%);
}

.modal-resultats-meta-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}

.modal-resultats-meta-value {
  font-weight: 500;
  color: #0f172a;
  line-height: 1.35;
}

.modal-resultats-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.modal-resultats-badge--ok {
  background: #dcfce7;
  color: #166534;
}

.modal-resultats-badge--warn {
  background: #ffedd5;
  color: #9a3412;
}

.modal-resultats-badge--err {
  background: #fee2e2;
  color: #991b1b;
}

.modal-resultats-badge--muted {
  background: #f1f5f9;
  color: #475569;
}

.modal-resultats-acte-body {
  padding-top: 4px;
}

.modal-resultats-cr-section {
  margin-bottom: 20px;
}

.modal-resultats-cr-section:last-child {
  margin-bottom: 0;
}

.modal-resultats-cr-h {
  margin: 0 0 10px;
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #475569;
  border-bottom: 1px solid #e2e8f0;
  padding-bottom: 6px;
}

.modal-resultats-rich-html {
  font-size: 0.95rem;
  line-height: 1.6;
  color: #1e293b;
}

.modal-resultats-rich-html p {
  margin: 0 0 0.65em;
}

.modal-resultats-rich-html p:last-child {
  margin-bottom: 0;
}

.modal-resultats-rich-html strong {
  font-weight: 600;
  color: #0f172a;
}

.modal-resultats-rich-html ul,
.modal-resultats-rich-html ol {
  margin: 0.5em 0 0.65em;
  padding-left: 1.35em;
}

.modal-resultats-acte-meta-wrap:not(:has(.modal-resultats-meta-bar)) {
  padding: 12px 14px;
  background: #f8fafc;
  border-radius: 8px;
  font-size: 0.9em;
  color: #64748b;
  border: 1px solid #e2e8f0;
}

.modal-resultats-plain {
  font-size: 0.95rem;
  line-height: 1.6;
  color: #1e293b;
  white-space: pre-wrap;
}

.modal-resultats-empty {
  margin: 0;
  padding: 16px;
  text-align: center;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
  background: #f8fafc;
}

.modal-resultats-observations {
  margin-top: 18px;
  padding: 14px 16px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fff;
}

.modal-resultats-observations-title {
  display: block;
  margin: 0 0 8px;
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #64748b;
}

.modal-resultats-observations-body {
  margin: 0;
  white-space: pre-wrap;
  font-size: 0.94rem;
  line-height: 1.55;
  color: #1e293b;
}

/* Colonne « Résultats » des prescriptions (consultation) */
.consult-pres-result-cell {
  max-width: min(440px, 42vw);
  vertical-align: top;
}

.consult-synthese-h {
  margin: 20px 0 12px;
  padding-bottom: 8px;
  border-bottom: 2px solid #e2e8f0;
  color: #0f172a;
  font-size: 1.05rem;
}

.consult-synthese-h:first-child {
  margin-top: 0;
}

.consult-resultat-block {
  margin-bottom: 16px;
  padding: 14px 16px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fafbfc;
}

.consult-resultat-block h6 {
  margin: 0 0 8px;
  font-size: 1rem;
  color: #1e293b;
}

.consult-resultat-meta {
  margin: 0 0 12px;
  font-size: 0.88rem;
  color: #64748b;
}

.consult-synthese-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.consult-synthese-table th,
.consult-synthese-table td {
  border: 1px solid #e2e8f0;
  padding: 8px 10px;
  text-align: left;
}

.consult-synthese-table thead {
  background: #f1f5f9;
}

.consult-synthese-table tr.ligne-anormale {
  background: #fff7ed;
}

.consult-modal-modern #consultation-patient-info,
.consult-modal-modern #consultation-banner-hospitalisation {
  border-radius: 14px;
}

.consult-modal-modern #consultation-patient-info {
  border: 1px solid rgba(37, 99, 235, 0.28);
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(14, 165, 233, 0.07) 45%, rgba(255, 255, 255, 0.96));
  box-shadow: 0 14px 30px rgba(30, 64, 175, 0.12);
}

.consult-modal-modern #consultation-patient-info > h4 {
  margin-top: 0;
  color: #1e40af;
}

.consult-modal-modern #consultation-patient-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}

.consult-modal-modern #consultation-patient-details.consult-patient-details-grid-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.consult-modal-modern .consult-patient-detail-row {
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(59, 130, 246, 0.25);
  border-radius: 10px;
  padding: 10px 12px;
  min-height: 58px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.consult-modal-modern .consult-patient-detail-label {
  font-size: 0.78rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #1d4ed8;
  font-weight: 700;
}

.consult-modal-modern .consult-patient-detail-value {
  margin-top: 4px;
  font-size: 1rem;
  color: #0f172a;
  font-weight: 600;
}

.consult-patient-detail-row.consult-patient-dossier-card {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 58px;
}

.consult-patient-details-hosp-trigger {
  grid-column: 1 / -1;
  margin-top: 2px;
}

.btn-consult-download-dossier,
#modal-consultation.consult-mode-hospitalise .btn-consult-download-dossier {
  width: 100%;
  padding: 8px 10px;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  border-radius: 8px;
  border: none;
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%) !important;
  color: #fff !important;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(37, 99, 235, 0.38);
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
  white-space: nowrap;
}

.btn-consult-download-dossier:hover,
#modal-consultation.consult-mode-hospitalise .btn-consult-download-dossier:hover {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%) !important;
  box-shadow: 0 6px 18px rgba(37, 99, 235, 0.48);
  transform: translateY(-1px);
}

.btn-consult-download-dossier:active,
#modal-consultation.consult-mode-hospitalise .btn-consult-download-dossier:active {
  transform: translateY(0);
  box-shadow: 0 3px 10px rgba(37, 99, 235, 0.32);
}

.btn-consult-download-dossier:disabled {
  opacity: 0.72;
  cursor: wait;
  transform: none;
}

/* Fiche hospitalisation — timeline visites + layout 2 colonnes */
#modal-consultation.consult-mode-hospitalise .consult-modal-body-layout {
  display: grid;
  grid-template-columns: 252px minmax(0, 1fr);
  gap: 14px 16px;
  align-items: start;
}

#modal-consultation.consult-mode-hospitalise .consult-hosp-visites-panel {
  grid-column: 1;
  grid-row: 1 / -1;
  margin: 0;
  padding: 12px 10px;
  position: sticky;
  top: 0;
  max-height: calc(90vh - 140px);
  overflow-y: auto;
  border: 1px solid rgba(22, 163, 74, 0.28);
  background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 100%);
}

#modal-consultation.consult-mode-hospitalise .consult-hosp-fiche-column {
  grid-column: 2;
  min-width: 0;
}

.consult-hosp-visites-head {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 10px;
}

.consult-hosp-visites-head h4 {
  margin: 0;
  font-size: 0.92rem;
  color: #166534;
  font-weight: 700;
}

#consult-hosp-nouvelle-visite-btn {
  width: 100%;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 7px 10px;
  border-radius: 8px;
  border: 1px solid rgba(22, 163, 74, 0.35);
  background: #fff;
  color: #15803d;
}

#consult-hosp-nouvelle-visite-btn:hover {
  background: #dcfce7;
}

.consult-hosp-visites-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.consult-hosp-visite-item {
  width: 100%;
  text-align: left;
  border: 1px solid rgba(22, 163, 74, 0.22);
  border-radius: 10px;
  background: #fff;
  padding: 8px 10px;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.consult-hosp-visite-item:hover {
  border-color: rgba(22, 163, 74, 0.45);
  background: #f7fef9;
}

.consult-hosp-visite-item.is-active {
  border-color: #16a34a;
  box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.18);
  background: #ecfdf5;
}

.consult-hosp-visite-item.is-readonly-hint {
  border-style: dashed;
}

.consult-hosp-visite-date {
  font-size: 0.78rem;
  font-weight: 700;
  color: #166534;
}

.consult-hosp-visite-medecin {
  font-size: 0.82rem;
  color: #0f172a;
  margin-top: 2px;
}

.consult-hosp-visite-diag {
  font-size: 0.76rem;
  color: #475569;
  margin-top: 4px;
  line-height: 1.35;
}

.consult-hosp-visite-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 6px;
}

.consult-hosp-visite-badge {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  padding: 2px 6px;
  border-radius: 6px;
}

.consult-hosp-visite-badge.type-admission {
  background: #dbeafe;
  color: #1d4ed8;
}

.consult-hosp-visite-badge.type-suivi {
  background: #e0f2fe;
  color: #0369a1;
}

.consult-hosp-visite-badge.statut-en-cours {
  background: #fef3c7;
  color: #b45309;
}

.consult-hosp-visite-badge.statut-terminee {
  background: #e2e8f0;
  color: #475569;
}

.consult-hosp-readonly-banner {
  margin-bottom: 12px;
  padding: 10px 14px;
  border: 1px solid rgba(100, 116, 139, 0.35);
  background: #f8fafc;
  color: #334155;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
}

.consult-hosp-readonly-label {
  font-size: 0.88rem;
  color: #64748b;
}

#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main input:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main textarea:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main select:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main button:not(.consult-hosp-readonly-allow):not(.btn-consult-voir-resultats),
#modal-consultation.consult-hosp-readonly #consultation-patient-info button:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main .btn-ajouter-inline {
  pointer-events: none;
  opacity: 0.55;
}

#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main .btn-consult-voir-resultats,
#modal-consultation.consult-hosp-readonly .consult-hosp-fiche-main #btn-consult-constantes-tendances,
#modal-consultation.consult-hosp-readonly #consultation-patient-info .btn-consult-download-dossier {
  pointer-events: auto;
  opacity: 1;
}

#modal-consultation.consult-mode-hospitalise.consult-hosp-readonly #consult-hosp-nouvelle-visite-btn {
  pointer-events: auto;
  opacity: 1;
}

/* Consultation ambulatoire — historique 3–5 dernières consultations */
#modal-consultation.consult-mode-ambu-historique .consult-modal-body-layout {
  display: grid;
  grid-template-columns: 252px minmax(0, 1fr);
  gap: 14px 16px;
  align-items: start;
}

#modal-consultation.consult-mode-ambu-historique .consult-ambu-historique-panel {
  grid-column: 1;
  grid-row: 1 / -1;
  margin: 0;
  padding: 12px 10px;
  position: sticky;
  top: 0;
  max-height: calc(90vh - 140px);
  overflow-y: auto;
  border: 1px solid rgba(37, 99, 235, 0.28);
  background: linear-gradient(180deg, #eff6ff 0%, #ffffff 100%);
}

#modal-consultation.consult-mode-ambu-historique .consult-hosp-fiche-column {
  grid-column: 2;
  min-width: 0;
}

#modal-consultation.consult-mode-ambu-historique .consult-ambu-historique-panel .consult-hosp-visites-head h4 {
  color: #1d4ed8;
}

.consult-ambu-historique-item .consult-hosp-visite-date {
  color: #1d4ed8;
}

.consult-ambu-historique-item .consult-hosp-visite-badge.type-ambu {
  background: #dbeafe;
  color: #1d4ed8;
}

.consult-ambu-historique-item.is-active {
  border-color: #2563eb;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.18);
  background: #eff6ff;
}

.consult-ambu-readonly-banner {
  margin-bottom: 12px;
  padding: 10px 14px;
  border: 1px solid rgba(37, 99, 235, 0.28);
  background: #eff6ff;
  color: #1e3a8a;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
}

#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main input:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main textarea:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main select:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main button:not(.consult-hosp-readonly-allow):not(.btn-consult-voir-resultats),
#modal-consultation.consult-ambu-readonly #consultation-patient-info button:not(.consult-hosp-readonly-allow),
#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main .btn-ajouter-inline {
  pointer-events: none;
  opacity: 0.55;
}

#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main .btn-consult-voir-resultats,
#modal-consultation.consult-ambu-readonly .consult-hosp-fiche-main #btn-consult-constantes-tendances,
#modal-consultation.consult-ambu-readonly #consultation-patient-info .btn-consult-download-dossier,
#modal-consultation.consult-ambu-readonly .consult-ambu-historique-panel .consult-ambu-historique-item {
  pointer-events: auto;
  opacity: 1;
}

.consult-modal-modern #consultation-banner-hospitalisation {
  border: 1px solid rgba(2, 132, 199, 0.34) !important;
  background: linear-gradient(135deg, rgba(186, 230, 253, 0.95), rgba(219, 234, 254, 0.9), rgba(240, 249, 255, 0.95)) !important;
  color: #0c4a6e;
  box-shadow: 0 10px 24px rgba(2, 132, 199, 0.16);
}

.consult-modal-modern .modal-content {
  border-radius: 20px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22);
}

/* Consultation ambulatoire — thème bleu */
#modal-consultation:not(.consult-mode-hospitalise) {
  --consult-theme-bg: #ebf5ff;
  --consult-theme-bg-card: #f4f9ff;
  --consult-theme-border: rgba(37, 99, 235, 0.24);
  --consult-theme-accent: #2563eb;
  --consult-theme-accent-soft: rgba(37, 99, 235, 0.09);
  --consult-theme-header: linear-gradient(135deg, #eff6ff 0%, #dbeafe 55%, #f8fafc 100%);
  --consult-theme-header-border: rgba(59, 130, 246, 0.28);
}

/* Consultation hospitalisation — thème vert */
#modal-consultation.consult-mode-hospitalise {
  --consult-theme-bg: #ecfdf5;
  --consult-theme-bg-card: #f0fdf4;
  --consult-theme-border: rgba(22, 163, 74, 0.24);
  --consult-theme-accent: #16a34a;
  --consult-theme-accent-soft: rgba(22, 163, 74, 0.09);
  --consult-theme-header: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 55%, #f8fafc 100%);
  --consult-theme-header-border: rgba(22, 163, 74, 0.28);
}

#modal-consultation .modal-body {
  background: var(--consult-theme-bg, #ebf5ff);
}

#modal-consultation:not(.consult-mode-hospitalise) .modal-content,
#modal-consult-demande-hospitalisation .modal-content {
  background: #f8fbff;
}

#modal-consultation.consult-mode-hospitalise .modal-content {
  background: #f7fef9;
}

.consult-modal-modern .modal-header {
  position: sticky;
  top: 0;
  z-index: 5;
  backdrop-filter: blur(6px);
  background: var(--consult-theme-header, linear-gradient(135deg, rgba(239, 246, 255, 0.98), rgba(224, 242, 254, 0.95) 55%, rgba(243, 244, 246, 0.96)));
  border-bottom: 1px solid var(--consult-theme-header-border, rgba(59, 130, 246, 0.25));
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
}

#modal-consultation.consult-mode-hospitalise .consult-modal-modern #consultation-patient-info,
#modal-consultation.consult-mode-hospitalise.consult-modal-modern #consultation-patient-info {
  border-color: rgba(22, 163, 74, 0.28);
  background: linear-gradient(135deg, rgba(187, 247, 208, 0.55), rgba(236, 253, 245, 0.95));
  box-shadow: 0 14px 30px rgba(22, 163, 74, 0.1);
}

#modal-consultation.consult-mode-hospitalise .consult-modal-modern #consultation-patient-info > h4 {
  color: #166534;
}

#modal-consultation.consult-mode-hospitalise .consult-patient-detail-row {
  border-color: rgba(22, 163, 74, 0.22);
}

#modal-consultation.consult-mode-hospitalise .consult-patient-detail-label {
  color: #15803d;
}

#modal-consultation.consult-mode-hospitalise #consultation-banner-hospitalisation {
  border-color: rgba(22, 163, 74, 0.34) !important;
  background: linear-gradient(135deg, rgba(187, 247, 208, 0.95), rgba(209, 250, 229, 0.9), rgba(236, 253, 245, 0.95)) !important;
  color: #166534;
  box-shadow: 0 10px 24px rgba(22, 163, 74, 0.12);
}

#modal-consultation.consult-mode-hospitalise input:focus,
#modal-consultation.consult-mode-hospitalise select:focus,
#modal-consultation.consult-mode-hospitalise textarea:focus {
  border-color: #16a34a;
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.12);
}

#modal-consultation .consult-motif-hint {
  margin: 8px 0 0;
  font-size: 0.9em;
  color: #64748b;
}

#modal-consultation.consult-mode-hospitalise .consult-motif-card label,
#modal-consultation.consult-mode-hospitalise .consult-motif-label {
  color: #166534;
  font-weight: 600;
}

#modal-consultation.consult-mode-hospitalise .consult-motif-hint {
  color: #15803d;
}

#modal-consultation.consult-mode-hospitalise #consult-motif-text::placeholder {
  color: #6b7280;
}

#modal-consultation.consult-mode-hospitalise button[type="submit"],
#modal-consultation.consult-mode-hospitalise .btn-primary {
  background: linear-gradient(135deg, #16a34a, #0f7b39);
  color: #fff;
  border: 1px solid #0f7b39;
  box-shadow: 0 8px 18px rgba(22, 163, 74, 0.22);
}

#modal-consultation.consult-mode-hospitalise button[type="submit"]:hover,
#modal-consultation.consult-mode-hospitalise .btn-primary:hover {
  filter: brightness(1.03);
}

#modal-consultation.consult-mode-hospitalise .consult-result-table thead th,
#modal-consultation.consult-mode-hospitalise .table-wrap thead th {
  background: linear-gradient(180deg, #ecfdf5 0%, #d1fae5 100%) !important;
  color: #166534 !important;
  border-bottom: 1px solid rgba(22, 163, 74, 0.22) !important;
}

#modal-consultation.consult-mode-hospitalise #consult-constantes-form label,
#modal-consultation.consult-mode-hospitalise .form-grid label {
  color: #166534;
  font-weight: 600;
}

#modal-consultation.consult-mode-hospitalise .modal-header,
#modal-consultation.consult-mode-hospitalise .consult-split-heading-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  margin-bottom: 8px;
}

#modal-consultation.consult-mode-hospitalise .consult-split-heading-row .consult-split-heading {
  margin: 0;
}

#modal-consultation.consult-mode-hospitalise .consult-constantes-tendances-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
}

#modal-consultation.consult-mode-hospitalise .btn-consult-graphes {
  white-space: nowrap;
  font-size: 0.88rem;
  padding: 7px 14px;
  border-radius: 8px;
}

.chart-card-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
  margin-bottom: 10px;
}

.chart-card-head h4 {
  margin: 0;
}

.chart-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
}

.chart-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: #475569;
  font-weight: 500;
}

.chart-legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  flex-shrink: 0;
}

.chart-legend-dot--temp {
  background: #dc2626;
}

.chart-legend-dot--sys {
  background: #2563eb;
}

.chart-legend-dot--dia {
  background: #7c3aed;
}

#modal-constantes-tendances.modal {
  z-index: 11050;
}

.constantes-tendances-modal-content {
  max-width: min(1000px, 96vw);
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.constantes-tendances-modal-header {
  flex-shrink: 0;
  background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 55%, #f8fafc 100%) !important;
  border-bottom: 1px solid rgba(22, 163, 74, 0.22) !important;
}

.constantes-tendances-modal-header h3 {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 700;
  color: #0f172a;
}

.constantes-tendances-modal-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 18px 20px !important;
  background: #f8fafc !important;
}

.constantes-tendances-charts {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
  margin-top: 18px;
}

.constantes-tendances-canvas {
  display: block;
  width: 100%;
  max-height: 340px;
  border-radius: 8px;
}

.constantes-tendances-modal-footer {
  flex-shrink: 0;
  justify-content: flex-end !important;
}

#modal-constantes-tendances .modal-constantes-tendances-close {
  min-width: 100px;
  padding: 10px 20px;
  border-radius: 10px;
}

#modal-consultation.consult-mode-hospitalise .consult-pres-sejour-hint {
  margin: 0 0 10px;
  font-size: 0.86rem;
  line-height: 1.45;
}

#modal-consultation.consult-mode-hospitalise .consult-pres-date-sub {
  margin-top: 3px;
  font-size: 0.8rem;
  color: #64748b;
  font-weight: 500;
}

#modal-consultation.consult-mode-hospitalise .consult-pres-readonly-action {
  font-size: 0.9rem;
}

#modal-consultation.consult-mode-hospitalise .modal-footer {
  background: var(--consult-theme-header, linear-gradient(135deg, #ecfdf5 0%, #d1fae5 55%, #f8fafc 100%)) !important;
  border-color: rgba(22, 163, 74, 0.22) !important;
}

#modal-consultation.consult-mode-hospitalise .btn-secondary {
  background: linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
  border: 1px solid rgba(22, 163, 74, 0.28);
  color: #166534;
}

#modal-consultation.consult-mode-hospitalise .btn-secondary:hover {
  background: #ecfdf5;
  border-color: rgba(22, 163, 74, 0.4);
}

.consult-modal-modern .consult-modal-title {
  margin: 0;
  color: #0f172a;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.consult-modal-modern .consult-modal-patient-name {
  display: inline-block;
  margin-left: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(37, 99, 235, 0.14), rgba(14, 165, 233, 0.14));
  border: 1px solid rgba(37, 99, 235, 0.25);
  color: #1e40af;
  font-weight: 700;
}

#modal-consultation.consult-mode-hospitalise .consult-modal-patient-name {
  background: linear-gradient(135deg, rgba(22, 163, 74, 0.14), rgba(16, 185, 129, 0.14));
  border-color: rgba(22, 163, 74, 0.28);
  color: #166534;
}

#modal-consultation main.consult-accordion-flow {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

#modal-consultation .consult-acc-item {
  border-radius: 14px;
  border: 1px solid var(--consult-theme-border, rgba(37, 99, 235, 0.24));
  background: linear-gradient(135deg, var(--consult-theme-accent-soft, rgba(37, 99, 235, 0.09)), var(--consult-theme-bg-card, #f4f9ff));
  overflow: hidden;
}

#modal-consultation .consult-acc-summary {
  list-style: none;
  cursor: pointer;
  padding: 14px 16px;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--consult-theme-accent, #2563eb);
  user-select: none;
  display: flex;
  align-items: center;
  gap: 10px;
}

#modal-consultation .consult-acc-summary::-webkit-details-marker {
  display: none;
}

#modal-consultation .consult-acc-summary::before {
  content: "+";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--consult-theme-accent-soft, rgba(37, 99, 235, 0.12));
  color: var(--consult-theme-accent, #2563eb);
  font-size: 1.1rem;
  line-height: 1;
  flex-shrink: 0;
}

#modal-consultation .consult-acc-item[open] > .consult-acc-summary::before {
  content: "−";
}

#modal-consultation .consult-acc-body {
  padding: 0 14px 14px;
}

#modal-consultation .consult-inline-group {
  margin-bottom: 10px;
}

#modal-consultation .consult-inline-label {
  display: block;
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--consult-theme-accent, #2563eb);
  margin-bottom: 6px;
}

#modal-consultation .consult-inline-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  background: rgba(255, 255, 255, 0.9);
}

#modal-consultation .consult-inline-form-row {
  flex-wrap: nowrap;
}

#modal-consultation .consult-inline-form input[type="text"],
#modal-consultation .consult-inline-form input[type="date"] {
  height: 32px;
  min-height: 32px;
  max-height: 32px;
  padding: 4px 8px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 0.88rem;
  box-sizing: border-box;
}

#modal-consultation .consult-inline-form-row .consult-field-libelle {
  flex: 1.15 1 0;
  min-width: 72px;
}

#modal-consultation .consult-inline-form-row .consult-field-traitement,
#modal-consultation .consult-inline-form-row .consult-field-lien {
  flex: 1 1 0;
  min-width: 72px;
}

#modal-consultation .consult-inline-form-row input[type="date"] {
  flex: 0 0 128px;
  width: 128px;
  min-width: 128px;
}

#modal-consultation .consult-inline-sep {
  color: #94a3b8;
  font-weight: 600;
}

#modal-consultation .consult-inline-date-wrap {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.8rem;
  color: #475569;
  white-space: nowrap;
  flex: 0 0 auto;
}

#modal-consultation .btn-ajouter-inline {
  flex: 0 0 auto;
  height: 32px;
  padding: 0 12px;
  border: none;
  border-radius: 6px;
  color: #fff;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}

/* Consultation ambulatoire : boutons Ajouter bleus */
#modal-consultation:not(.consult-mode-hospitalise) .btn-ajouter-inline {
  background: #2563eb;
}

#modal-consultation:not(.consult-mode-hospitalise) .btn-ajouter-inline:hover {
  background: #1d4ed8;
}

/* Consultation hospitalisation : boutons Ajouter verts */
#modal-consultation.consult-mode-hospitalise .btn-ajouter-inline {
  background: var(--color-primary, #16a34a);
}

#modal-consultation.consult-mode-hospitalise .btn-ajouter-inline:hover {
  background: var(--color-primary-dark, #0f7b39);
}

#modal-consultation .consult-hosp-demande-form {
  gap: 12px;
}

#modal-consultation .consult-hosp-demande-hint {
  margin: 0;
  font-size: 0.82rem;
  color: #64748b;
  line-height: 1.45;
}

#modal-consultation .consult-inline-table {
  margin-bottom: 14px;
}

#modal-consultation .consult-split-layout {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(280px, 1fr);
  gap: 16px;
  align-items: start;
}

@media (max-width: 960px) {
  #modal-consultation .consult-split-layout {
    grid-template-columns: 1fr;
  }
}

#modal-consultation .consult-split-heading {
  margin: 0 0 10px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--consult-theme-accent, #2563eb);
}

#modal-consultation .consult-split-saisie,
#modal-consultation .consult-split-resultats {
  min-width: 0;
}

#modal-consultation #consult-constantes-form.form-grid.four-col {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px 10px;
}

#modal-consultation #consult-constantes-form label {
  font-size: 0.8rem;
  gap: 4px;
}

#modal-consultation #consult-constantes-form input {
  height: 32px;
  min-height: 32px;
  padding: 4px 8px;
  font-size: 0.88rem;
  box-sizing: border-box;
}

@media (max-width: 720px) {
  #modal-consultation #consult-constantes-form.form-grid.four-col {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

#modal-consultation .consult-split-resultats {
  border-left: 2px solid var(--consult-theme-border, rgba(37, 99, 235, 0.18));
  padding-left: 14px;
}

#modal-consultation .consult-diagnostic-type-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 12px;
}

#modal-consultation .consult-check-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.88rem;
  font-weight: 600;
  color: #0f172a;
  cursor: pointer;
}

#modal-consultation .consult-diagnostic-block {
  margin-bottom: 14px;
}

#modal-consultation .consult-diagnostic-block:last-child {
  margin-bottom: 0;
}

#modal-consultation .consult-diagnostic-cim10-search {
  display: flex;
  gap: 8px;
  margin-bottom: 6px;
}

#modal-consultation .consult-diagnostic-cim10-search input {
  flex: 1 1 0;
  min-width: 0;
  height: 32px;
  padding: 4px 8px;
  font-size: 0.88rem;
  box-sizing: border-box;
}

#modal-consultation #cim10-select {
  width: 100%;
  margin-bottom: 8px;
  font-size: 0.88rem;
}

#modal-consultation .consult-pres-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}

#modal-consultation .consult-pres-tab {
  padding: 6px 14px;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  background: #f8fafc;
  color: #0f172a;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
}

#modal-consultation:not(.consult-mode-hospitalise) .consult-pres-tab.active {
  background: #2563eb;
  border-color: #2563eb;
  color: #fff;
}

#modal-consultation.consult-mode-hospitalise .consult-pres-tab.active {
  background: var(--color-primary, #16a34a);
  border-color: var(--color-primary, #16a34a);
  color: #fff;
}

#modal-consultation .consult-pres-panel {
  display: none;
}

#modal-consultation .consult-pres-panel.active {
  display: block;
}

#modal-consultation .consult-ordo-saisie-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

#modal-consultation .consult-ordo-type-card {
  padding: 12px;
}

#modal-consultation .consult-ordo-type-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 0;
}

#modal-consultation .consult-diagnostic-type-row {
  gap: 12px;
}

#modal-consultation .consult-toggle-choice {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 18px;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  font-size: 0.88rem;
  font-weight: 600;
  color: #0f172a;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  text-align: center;
  min-width: 9rem;
}

#modal-consultation:not(.consult-mode-hospitalise) .consult-toggle-choice:has(input:checked) {
  background: #dbeafe;
  border-color: #3b82f6;
  color: #1e40af;
}

#modal-consultation.consult-mode-hospitalise .consult-toggle-choice:has(input:checked) {
  background: #d1fae5;
  border-color: #16a34a;
  color: #166534;
}

#modal-consultation .consult-toggle-choice input[type="checkbox"] {
  width: 1.1rem;
  height: 1.1rem;
  margin: 0;
  cursor: pointer;
  accent-color: #2563eb;
}

#modal-consultation .consult-ordo-form-panel {
  margin-top: 10px;
}

#modal-consultation .consult-ordo-form {
  gap: 10px;
}

#modal-consultation .consult-ordo-form.form-grid.two-col,
#modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 14px;
  align-items: start;
}

#modal-consultation .consult-ordo-form.form-grid.two-col label,
#modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.85rem;
  min-width: 0;
}

#modal-consultation .consult-ordo-form.form-grid.two-col label input,
#modal-consultation .consult-ordo-form.form-grid.two-col label select,
#modal-consultation .consult-ordo-form.form-grid.two-col label textarea,
#modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col label input,
#modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col label select,
#modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col label textarea {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

@media (max-width: 520px) {
  #modal-consultation .consult-ordo-form.form-grid.two-col,
  #modal-consult-edit-prescription .consult-edit-ordo-form.form-grid.two-col {
    grid-template-columns: 1fr;
  }
}

#modal-consultation .consult-soins-form {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  grid-template-columns: 1fr;
  gap: 10px;
  align-items: start;
}

#modal-consultation .consult-soins-form .full-row,
#modal-consultation .consult-soins-main-row {
  grid-column: 1 / -1;
}

#modal-consultation .consult-soins-main-row {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
  grid-template-rows: auto 1fr auto;
  gap: 8px 14px;
  align-items: stretch;
  min-width: 0;
}

#modal-consultation .consult-soins-type-header {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
}

#modal-consultation .consult-soins-type-list-wrap {
  grid-column: 1;
  grid-row: 2;
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
}

#modal-consultation .consult-soins-type-hint {
  grid-column: 1;
  grid-row: 3;
  margin: 0;
}

#modal-consultation .consult-soins-side-col {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
  min-width: 0;
  align-self: start;
  padding-top: calc(0.82rem * 1.35 + 8px + 32px);
}

#modal-consultation .consult-soins-side-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 10px;
  width: 100%;
  min-width: 0;
}

#modal-consultation .consult-soins-side-field-wide {
  grid-column: 1 / -1;
}

#modal-consultation .consult-soins-field-label,
#modal-consultation .consult-soins-side-col label,
#modal-consultation .consult-soins-side-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  width: 100%;
  font-size: 0.82rem;
  font-weight: 600;
  color: #0f172a;
}

#modal-consultation .consult-soins-field-label {
  margin: 0;
}

#modal-consultation .consult-soins-form input,
#modal-consultation .consult-soins-form select,
#modal-consultation .consult-soins-form textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#modal-consultation .consult-soins-form #soins-type-search {
  height: 32px;
  margin-top: 4px;
  padding: 4px 8px;
  font-size: 0.88rem;
}

#modal-consultation .consult-soins-form #soins-type {
  width: 100%;
  min-height: 9.75rem;
  height: 100%;
  margin: 0;
  padding: 4px 6px;
  font-size: 0.88rem;
  line-height: 1.45;
  flex: 1 1 auto;
}

#modal-consultation .consult-soins-form #soins-type option {
  padding: 5px 6px;
  line-height: 1.45;
  white-space: normal;
}

#modal-consultation .consult-soins-side-col input,
#modal-consultation .consult-soins-side-col select {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  height: 36px;
  min-height: 36px;
  padding: 6px 8px;
  font-size: 0.88rem;
  box-sizing: border-box;
  display: block;
}

#modal-consultation .consult-soins-side-col input[type="datetime-local"] {
  line-height: 1.2;
}

#modal-consultation .consult-soins-side-col label {
  margin: 0;
}

#modal-consultation .consult-soins-side-fields .consult-soins-desc-label {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

#modal-consultation .consult-soins-side-fields #soins-description {
  min-height: 3.25rem;
  max-height: 5.5rem;
  margin-top: 4px;
  padding: 6px 8px;
  font-size: 0.88rem;
  line-height: 1.4;
  resize: vertical;
}

#modal-consultation .consult-action-select,
#modal-consultation .consult-soins-action-select {
  min-width: 10rem;
  max-width: 100%;
  padding: 6px 8px;
  border-radius: 6px;
  border: 1px solid #cbd5e1;
  font-size: 0.85rem;
  background: #fff;
  cursor: pointer;
}

#modal-consultation .consult-pres-result-cell .consult-action-select {
  min-width: 9rem;
}

#modal-consultation .consult-split-saisie .card {
  max-width: 100%;
  overflow: hidden;
}

@media (max-width: 720px) {
  #modal-consultation .consult-soins-main-row {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
  }

  #modal-consultation .consult-soins-type-header,
  #modal-consultation .consult-soins-type-list-wrap,
  #modal-consultation .consult-soins-type-hint {
    grid-column: 1;
  }

  #modal-consultation .consult-soins-type-header {
    grid-row: 1;
  }

  #modal-consultation .consult-soins-type-list-wrap {
    grid-row: 2;
  }

  #modal-consultation .consult-soins-type-hint {
    grid-row: 3;
  }

  #modal-consultation .consult-soins-side-col {
    grid-column: 1;
    grid-row: 4;
    padding-top: 0;
  }

  #modal-consultation .consult-soins-side-fields {
    grid-template-columns: 1fr;
  }

  #modal-consultation .consult-soins-side-field-wide {
    grid-column: 1;
  }

  #modal-consultation .consult-soins-side-fields .consult-soins-desc-label {
    margin-top: 0;
  }
}

#modal-consultation .consult-list-hint,
#modal-consultation .consult-hosp-pres-hint {
  display: block;
  margin-top: 4px;
  font-size: 0.78rem;
  color: #64748b;
}

#modal-consultation .consult-hosp-trigger-wrap {
  margin: 10px 0 4px;
  padding-top: 8px;
  border-top: 1px solid rgba(148, 163, 184, 0.25);
}

#modal-consultation .consult-hosp-trigger-wrap .btn-secondary {
  font-size: 0.88rem;
}

#modal-consult-demande-hospitalisation {
  z-index: 10050;
}

#modal-consultation .consult-edit-ordo-form {
  gap: 10px 12px;
}

#modal-consultation .consult-edit-ordo-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  font-size: 0.82rem;
  font-weight: 600;
}

#modal-consultation .consult-edit-ordo-form input,
#modal-consultation .consult-edit-ordo-form select,
#modal-consultation .consult-edit-ordo-form textarea {
  width: 100%;
  box-sizing: border-box;
}

#modal-consult-edit-prescription .consult-edit-pres-libelle {
  margin: 0 0 4px;
  font-size: 0.88rem;
  color: #334155;
}

@media (max-width: 960px) {
  #modal-consultation .consult-split-resultats {
    border-left: none;
    padding-left: 0;
    border-top: 2px solid var(--consult-theme-border, rgba(37, 99, 235, 0.18));
    padding-top: 14px;
  }
}

@media (max-width: 720px) {
  #modal-consultation .consult-inline-form-row {
    flex-wrap: wrap;
  }
  #modal-consultation .consult-inline-form-row input[type="date"] {
    flex: 1 1 128px;
    width: auto;
  }
}

#consult-antecedents-detail-modal {
  z-index: 10050;
  font-family: inherit;
}

#consult-antecedents-detail-modal .consult-antec-detail-table {
  margin-top: 0;
}

#consult-antecedents-detail-modal .consult-antec-detail-table table {
  width: 100%;
  font-family: inherit;
  font-size: 0.88rem;
  border-collapse: collapse;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
}

#consult-antecedents-detail-modal .consult-antec-detail-table th,
#consult-antecedents-detail-modal .consult-antec-detail-table td {
  padding: 8px 10px;
  border-bottom: 1px solid #e5e7eb;
  text-align: left;
  font-weight: normal;
  text-transform: none;
  letter-spacing: normal;
  color: #0f172a;
}

#consult-antecedents-detail-modal .consult-antec-detail-table th {
  background: #f8fafc;
  font-weight: 600;
  font-size: 0.8rem;
  color: #475569;
  border-bottom: 2px solid #e2e8f0;
  position: static;
}

#consult-antecedents-detail-modal .consult-antec-detail-table tbody tr:hover {
  background-color: #f8fafc;
}

#consult-antecedents-detail-modal .consult-antec-detail-actions {
  text-align: right;
  white-space: nowrap;
  width: 1%;
}

#consult-antecedents-detail-modal .consult-antec-comment-row td {
  padding-top: 0;
  padding-bottom: 10px;
  border-bottom: 1px solid #e5e7eb;
  font-size: 0.8rem;
}

#consult-antecedents-detail-modal .consult-detail-comment {
  color: #64748b;
  font-style: italic;
}

#consult-antecedents-detail-modal .consult-result-empty {
  padding: 8px 10px;
  text-align: center;
  color: #94a3b8;
  font-size: 0.85rem;
}

#modal-consultation .consult-result-flow {
  padding: 4px 0;
  min-height: 32px;
}

#modal-consultation .consult-result-flow-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  padding: 4px 8px;
  font-size: 0.88rem;
}

#modal-consultation .consult-result-labels-flow {
  flex: 1 1 0;
  min-width: 0;
  font-weight: 600;
  color: #0f172a;
  line-height: 32px;
}

#modal-consultation .consult-detail-lines {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

#modal-consultation .consult-detail-line {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  padding: 4px 0;
  font-size: 0.88rem;
  border-bottom: 1px solid rgba(148, 163, 184, 0.2);
}

#modal-consultation .consult-detail-line:last-child {
  border-bottom: none;
}

#modal-consultation .consult-detail-line-text {
  flex: 1 1 0;
  min-width: 0;
  color: #0f172a;
}

#modal-consultation .consult-detail-comment {
  font-size: 0.8rem;
  color: #64748b;
  font-style: italic;
}

#modal-consultation .consult-result-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
  max-width: 100%;
}

#modal-consultation .consult-result-chip-label {
  font-weight: 600;
  color: #0f172a;
  white-space: nowrap;
}

#modal-consultation .consult-result-flow .consult-detail-expand {
  margin: 0 8px 8px;
  padding: 8px 10px;
  border-radius: 8px;
  background: var(--consult-theme-accent-soft, rgba(37, 99, 235, 0.09));
  border: 1px solid var(--consult-theme-border, rgba(37, 99, 235, 0.18));
}

#modal-consultation .consult-result-block {
  margin-bottom: 12px;
}

#modal-consultation .consult-result-block-title {
  display: block;
  margin-bottom: 6px;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--color-primary, #16a34a);
}

#modal-consultation .consult-result-table table {
  width: 100%;
  font-size: 0.88rem;
  border-collapse: collapse;
}

#modal-consultation .consult-result-line-cell {
  padding: 0;
  border-bottom: 1px solid #e8eef4;
}

#modal-consultation .consult-result-empty {
  padding: 8px 10px !important;
  text-align: center;
  color: #94a3b8;
  font-size: 0.85rem;
}

#modal-consultation .consult-result-row-flex {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  height: 32px;
  padding: 0 8px;
  box-sizing: border-box;
}

#modal-consultation .consult-result-inline {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  font-size: 0.88rem;
  color: #0f172a;
}

#modal-consultation .consult-result-part {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

#modal-consultation .consult-result-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
  white-space: nowrap;
}

#modal-consultation .consult-result-actions .btn-secondary {
  height: 26px;
  padding: 0 8px;
  font-size: 0.78rem;
  line-height: 1;
}

#modal-consultation .consult-result-main {
  max-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#modal-consultation tr.consult-detail-expand td {
  background: var(--consult-theme-accent-soft, rgba(37, 99, 235, 0.09));
  border-top: none;
  padding-top: 0;
  padding-bottom: 10px;
}

#modal-consultation .consult-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 8px 12px;
}

#modal-consultation .consult-detail-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 0.85rem;
}

#modal-consultation .consult-detail-item span {
  color: #64748b;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

#modal-consultation .consult-detail-item strong {
  color: #0f172a;
  font-weight: 600;
}

#modal-consultation main.consult-accordion-flow > .subpanel[data-panel^="consult-"],
#modal-consultation main.consult-accordion-flow .consult-acc-item {
  display: block;
}

#modal-consultation .consult-split-saisie .card,
#modal-consultation .consult-diagnostic-saisie,
#modal-consultation .consult-result-flow,
#modal-consultation .consult-acc-body .card {
  background: var(--consult-theme-bg-card, #f4f9ff);
}

#modal-consultation .consult-acc-body .card {
  border: 1px solid var(--consult-theme-border, rgba(37, 99, 235, 0.18));
  backdrop-filter: blur(2px);
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.08);
}

#modal-consultation .consult-acc-item[open] .consult-acc-body {
  animation: consultPanelFadeIn 240ms ease-out;
}

@keyframes consultPanelFadeIn {
  from {
    opacity: 0;
    transform: translateY(6px) scale(0.995);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.tag-anormal {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  background: #fee2e2;
  color: #991b1b;
  font-size: 0.8rem;
  font-weight: 600;
}

.resultats-examen-modal-table-wrap {
  overflow-x: auto;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.resultats-examen-modal-table {
  width: 100%;
  border-collapse: collapse;
  margin: 0;
  font-size: 0.92rem;
}

.resultats-examen-modal-table th,
.resultats-examen-modal-table td {
  border-bottom: 1px solid #eef2f7;
  padding: 10px 14px;
  text-align: left;
  vertical-align: middle;
}

.resultats-examen-modal-table tbody tr:last-child td {
  border-bottom: none;
}

.resultats-examen-modal-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f0fdfa;
  color: #0f766e;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 1px solid #d1e7e4;
}

.resultats-examen-modal-table tbody tr:hover {
  background: #f8fafc;
}

.resultats-examen-modal-table tbody tr.ligne-anormale {
  background: #fff7ed;
}

.resultats-examen-modal-table tbody tr.ligne-anormale:hover {
  background: #ffedd5;
}

.resultats-examen-modal-table td strong {
  font-weight: 700;
  color: #0f172a;
}

/* Filter controls wrapper */
.filter-controls {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  width: 100%;
}

.filter-group {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.btn-primary {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
}

.btn-primary:hover:not(:disabled) {
  background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%);
  box-shadow: 0 4px 8px rgba(37, 99, 235, 0.3);
}

.btn-secondary {
  background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%);
  color: #374151;
  border: 1px solid #d1d5db;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.btn-secondary:hover:not(:disabled) {
  background: linear-gradient(135deg, #e5e7eb 0%, #d1d5db 100%);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.table-controls {
  gap: 12px;
  padding: 10px 16px;
  background: #e0f2fe;
  color: #0f172a;
  border-bottom: 1px solid #bfdbfe;
  position: sticky;
  top: 0;
  z-index: 50;
}

/* Dropdown d'actions pour les tableaux */
.soin-action-dropdown {
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid #d1d5db;
  background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%);
  color: #374151;
  font-size: 13px;
  cursor: pointer;
  min-width: 110px;
  transition: all 0.2s ease;
}

.soin-action-dropdown:hover {
  background: linear-gradient(135deg, #e5e7eb 0%, #d1d5db 100%);
  border-color: #9ca3af;
}

.soin-action-dropdown:focus {
  outline: none;
}

#modal-consultation:not(.consult-mode-hospitalise) .soin-action-dropdown:focus {
  border-color: #2563eb;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2);
}

#modal-consultation.consult-mode-hospitalise .soin-action-dropdown:focus {
  border-color: #16a34a;
  box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.2);
}

/* Forcer 4 colonnes pour le formulaire examens specialises */
#examen-specialise-form.form-grid.four-col {
  grid-template-columns: repeat(4, minmax(220px, 1fr)) !important;
  align-items: start;
}

#examen-specialise-form.form-grid.four-col .full-row {
  grid-column: 1 / -1;
}

/* Styles pour le modal d'orientation - agrandi en largeur et scrollable */
#modal-orientation .modal-content {
  max-width: 1200px;
  width: 95%;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#modal-orientation .modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

#modal-orientation .orientation-acte-combo-wrap {
  position: relative;
  width: 100%;
  max-width: 100%;
}

#modal-orientation .orientation-acte-combo-wrap input[type="search"] {
  width: 100%;
  max-width: 100%;
  min-height: 38px;
  padding: 8px 10px;
  font-size: 14px;
  box-sizing: border-box;
  border-radius: 8px;
}

#modal-orientation .orientation-acte-combo-wrap .pharma-med-combo-dd.is-open {
  z-index: 1200;
  max-height: 280px;
  overflow-y: auto;
}

/* Styles pour la sélection multiple d'actes dans le modal d'orientation */
.selected-actes-list {
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 8px;
  margin-top: 8px;
}

.selected-acte-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px;
  margin: 4px 0;
  background: #f8f9fa;
  border-radius: 4px;
  border: 1px solid #e9ecef;
}

.selected-acte-info {
  flex: 1;
}

.selected-acte-name {
  font-weight: 500;
  color: #333;
}

.selected-acte-price {
  font-size: 0.9em;
  color: #666;
}

.selected-acte-billing {
  font-size: 0.85em;
  color: #555;
  margin-top: 4px;
  flex-wrap: wrap;
}

.selected-acte-billing .sep {
  margin: 0 0.25em;
  color: #aaa;
}

.orientation-acte-tarif-detail {
  margin-top: 6px;
  padding: 10px 12px;
  background: #f0f4f8;
  border-radius: 6px;
  border: 1px solid #dde4ec;
  font-size: 0.92em;
}

.orientation-tarif-source,
.selected-acte-source {
  font-size: 0.82rem;
  color: var(--text-muted, #5c6578);
  margin-bottom: 0.35rem;
}

.orientation-tarif-source strong,
.selected-acte-source strong {
  color: var(--primary, #1a5fb4);
}

.orientation-tarif-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px 16px;
}

.orientation-tarif-label {
  display: block;
  font-size: 0.8em;
  color: #666;
  margin-bottom: 2px;
}

.orientation-tarif-muted {
  color: #777;
  font-size: 0.9em;
}

.orientation-totaux-wrap {
  margin-top: 12px;
  font-size: 0.98em;
}

.orientation-totaux-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 4px 0;
  border-bottom: 1px solid #eee;
}

.orientation-totaux-row span:first-child {
  color: #555;
}

.orientation-totaux-payer {
  margin-top: 6px;
  padding-top: 8px;
  border-bottom: none;
  font-size: 1.05em;
}

.btn-remove-acte {
  background: #dc3545;
  color: white;
  border: none;
  border-radius: 4px;
  padding: 4px 8px;
  cursor: pointer;
  font-size: 0.9em;
}

.btn-remove-acte:hover {
  background: #c82333;
}

.btn-small {
  padding: 6px 12px;
  font-size: 0.9em;
  border-radius: 4px;
  background: #28a745;
  color: white;
  border: none;
  cursor: pointer;
}

.btn-small:hover {
  background: #218838;
}

/* Modal détails hospitalisation */
.hosp-detail-modal {
  --hosp-detail-bg: #ecfdf5;
  --hosp-detail-bg-card: #f0fdf4;
  --hosp-detail-border: rgba(22, 163, 74, 0.22);
  --hosp-detail-accent: #16a34a;
  --hosp-detail-accent-soft: rgba(22, 163, 74, 0.1);
  --hosp-detail-header: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 55%, #f8fafc 100%);
  font-family: inherit;
}

.hosp-detail-modal-content {
  max-width: 920px;
  max-height: 95vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 18px;
  border: 1px solid var(--hosp-detail-border);
  background: #f7fef9;
}

.hosp-detail-modal-header {
  flex-shrink: 0;
  background: var(--hosp-detail-header);
  border-bottom: 1px solid var(--hosp-detail-border);
  padding: 16px 20px;
}

.hosp-detail-modal-title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: 0.01em;
  line-height: 1.35;
}

.hosp-detail-modal-patient-name {
  display: inline-block;
  margin-left: 4px;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--hosp-detail-accent-soft);
  border: 1px solid var(--hosp-detail-border);
  color: #166534;
  font-size: 0.92rem;
  font-weight: 700;
  vertical-align: middle;
}

.hosp-detail-modal-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 16px 18px;
  background: var(--hosp-detail-bg);
  gap: 0;
}

.hosp-detail-modal-footer {
  flex-shrink: 0;
  background: linear-gradient(135deg, #f8fafc 0%, #ecfdf5 100%);
  border-top: 1px solid var(--hosp-detail-border);
  padding: 14px 20px;
}

.hosp-detail-layout,
.hosp-detail-main-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.hosp-detail-main-grid {
  font-family: inherit;
  font-size: 0.92rem;
  color: #0f172a;
}

.hosp-detail-side-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.hosp-detail-section {
  background: var(--hosp-detail-bg-card);
  border: 1px solid var(--hosp-detail-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
}

.hosp-detail-section-full {
  grid-column: 1 / -1;
}

.hosp-detail-section-patient {
  background: linear-gradient(135deg, rgba(187, 247, 208, 0.35), rgba(236, 253, 245, 0.95));
}

.hosp-detail-section-title {
  margin: 0;
  padding: 11px 14px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #166534;
  background: var(--hosp-detail-accent-soft);
  border-bottom: 1px solid var(--hosp-detail-border);
}

.hosp-detail-section-body {
  padding: 12px 14px 14px;
}

.hosp-detail-grid {
  display: grid;
  gap: 10px;
}

.hosp-detail-grid.cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.hosp-detail-grid.cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.hosp-detail-grid.cols-1 {
  grid-template-columns: 1fr;
}

.hosp-detail-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  padding: 9px 11px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.82);
  border: 1px solid rgba(22, 163, 74, 0.14);
}

.hosp-detail-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #15803d;
}

.hosp-detail-value {
  font-size: 0.95rem;
  font-weight: 600;
  color: #0f172a;
  line-height: 1.35;
  word-break: break-word;
}

.hosp-detail-jours-block {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.78);
  border: 1px solid rgba(22, 163, 74, 0.14);
}

.hosp-detail-jours-block > .hosp-detail-label {
  display: block;
  margin-bottom: 6px;
}

.hosp-detail-jours {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.hosp-jours-line {
  font-size: 0.88rem;
  line-height: 1.4;
}

.hosp-jours-sejour strong {
  color: #0f172a;
}

.hosp-jours-sejour span {
  color: #64748b;
  font-size: 0.9em;
}

.hosp-jours-factures {
  color: #334155;
}

.hosp-jours-caisse {
  color: #0369a1;
  font-weight: 600;
}

.hosp-detail-actes-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px;
}

.hosp-detail-actes-row .hosp-detail-field {
  flex: 1 1 180px;
}

.hosp-detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 4px 2px 0;
}

.hosp-detail-comment {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.5;
  color: #334155;
  white-space: pre-wrap;
}

.hosp-detail-empty {
  margin: 0;
  color: #64748b;
  font-size: 0.9rem;
}

.hosp-detail-error {
  color: #b45309;
}

.hosp-detail-table-wrap {
  margin-top: 0;
}

.hosp-detail-table {
  width: 100%;
  font-family: inherit;
  font-size: 0.88rem;
}

.hosp-detail-table th {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: #166534;
  background: rgba(22, 163, 74, 0.08);
}

.hosp-detail-table td {
  vertical-align: middle;
}

@media (max-width: 800px) {
  .hosp-detail-side-grid {
    grid-template-columns: 1fr;
  }

  .hosp-detail-grid.cols-3,
  .hosp-detail-grid.cols-2 {
    grid-template-columns: 1fr;
  }

  .hosp-detail-modal-patient-name {
    display: block;
    margin: 6px 0 0;
    width: fit-content;
  }
}

/* Modal Consultation patient hospitalisé */
.consultation-hosp-buttons {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.consultation-hosp-buttons-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.btn-consult-hosp-tab {
  padding: 10px 16px;
  border-radius: 6px;
  border: 1px solid #b3d7e8;
  background: #e3f2fd;
  color: #1565c0;
  font-size: 0.95em;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
}
.btn-consult-hosp-tab:hover {
  background: #bbdefb;
  border-color: #90caf9;
}

/* Menu déroulant médicaments prescription pharmacie */
.ordo-pharma-meds-dropdown {
  display: none;
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  margin-top: 2px;
  max-height: 220px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #94a3b8;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.12);
  z-index: 100;
  list-style: none;
  padding: 4px 0;
}
.ordo-pharma-meds-dropdown.is-open {
  display: block;
}
.ordo-pharma-meds-dropdown .ordo-pharma-med-item {
  padding: 10px 12px;
  cursor: pointer;
  border: none;
  width: 100%;
  text-align: left;
  background: transparent;
  font-size: 14px;
  color: #1e293b;
  transition: background 0.15s;
}
.ordo-pharma-meds-dropdown .ordo-pharma-med-item:hover,
.ordo-pharma-meds-dropdown .ordo-pharma-med-item:focus {
  background: #e0f2fe;
  outline: none;
}
.ordo-pharma-meds-dropdown .ordo-pharma-med-item small {
  display: block;
  font-size: 11px;
  color: #64748b;
  margin-top: 2px;
}
.ordo-pharma-meds-dropdown .ordo-pharma-med-empty {
  padding: 12px;
  color: #64748b;
  font-size: 13px;
  text-align: center;
}

/* Tableau liste médicaments — lisible, retour à la ligne */
.pharma-med-table-wrap {
  overflow-x: auto;
  overflow-y: visible;
}

.pharma-med-table {
  width: 100%;
  table-layout: auto;
  font-size: 0.875rem;
  line-height: 1.45;
}

.pharma-med-table th,
.pharma-med-table td {
  padding: 8px 10px;
  vertical-align: top;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: break-word;
  hyphens: auto;
  max-width: 11rem;
}

.pharma-med-table th {
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.35;
}

.pharma-med-columns-control {
  margin-left: auto;
}

.pharma-med-table th[data-col="code"],
.pharma-med-table td[data-col="code"] {
  max-width: 4.5rem;
  min-width: 3.5rem;
}

.pharma-med-table th[data-col="nom"],
.pharma-med-table td[data-col="nom"],
.pharma-med-table th[data-col="dci"],
.pharma-med-table td[data-col="dci"],
.pharma-med-table th[data-col="forme"],
.pharma-med-table td[data-col="forme"],
.pharma-med-table th[data-col="classe"],
.pharma-med-table td[data-col="classe"],
.pharma-med-table th[data-col="voies"],
.pharma-med-table td[data-col="voies"] {
  max-width: 15rem;
  min-width: 5.5rem;
}

.pharma-med-table th[data-col="prix_unitaire"],
.pharma-med-table td[data-col="prix_unitaire"],
.pharma-med-table th[data-col="stock_actuel"],
.pharma-med-table td[data-col="stock_actuel"],
.pharma-med-table th[data-col="stock_disponible"],
.pharma-med-table td[data-col="stock_disponible"],
.pharma-med-table th[data-col="statut"],
.pharma-med-table td[data-col="statut"],
.pharma-med-table th[data-col="actions"],
.pharma-med-table td[data-col="actions"] {
  white-space: nowrap;
  max-width: none;
}

.pharma-med-table .badge {
  font-size: 0.75rem;
  padding: 3px 7px;
  white-space: normal;
  display: inline-block;
  line-height: 1.3;
  text-align: center;
}

.pharma-med-table .pharma-med-action-dropdown {
  width: 100%;
  min-width: 6.5rem;
  font-size: 0.8rem;
  padding: 5px 6px;
}

/* Recherche médicament (stock pharmacie) — code et/ou nom */
.pharma-med-combo-wrap {
  position: relative;
  width: 100%;
}
.pharma-med-combo-wrap input[type="search"],
.pharma-med-combo-wrap input[type="text"] {
  width: 100%;
  box-sizing: border-box;
}
.pharma-med-combo-sel {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.pharma-med-combo-dd {
  display: none;
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  margin-top: 2px;
  max-height: 220px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #94a3b8;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  z-index: 100;
  padding: 4px 0;
}
.pharma-med-combo-dd.is-open {
  display: block;
}
.pharma-med-combo-dd .pharma-med-combo-item {
  padding: 10px 12px;
  cursor: pointer;
  border: none;
  width: 100%;
  text-align: left;
  background: transparent;
  font-size: 14px;
  color: #1e293b;
  transition: background 0.15s;
}
.pharma-med-combo-dd .pharma-med-combo-item:hover,
.pharma-med-combo-dd .pharma-med-combo-item:focus {
  background: #e0f2fe;
  outline: none;
}
.pharma-med-combo-dd .pharma-med-combo-empty {
  padding: 12px;
  color: #64748b;
  font-size: 13px;
  text-align: center;
}

/* Feuille de suivi hospitalisation - design amélioré */
#modal-feuille-suivi .modal-content {
  max-width: 1000px;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.2);
}

#modal-feuille-suivi .modal-header {
  background: linear-gradient(135deg, #0f2d1f 0%, #1a4d32 100%);
  color: #fff;
  padding: 20px 24px;
}

#modal-feuille-suivi .modal-header h3 {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

#modal-feuille-suivi .modal-close {
  color: rgba(255, 255, 255, 0.9);
}

#modal-feuille-suivi .modal-close:hover {
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
}

#modal-feuille-suivi .modal-body {
  padding: 24px;
  background: #f8fafc;
}

.feuille-suivi-patient-card {
  background: linear-gradient(135deg, #fff 0%, #f8fafc 100%);
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 20px 24px;
  margin-bottom: 24px;
  display: flex;
  flex-wrap: wrap;
  gap: 16px 32px;
  align-items: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.feuille-suivi-patient-card .patient-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: #0f172a;
}

.feuille-suivi-patient-card .patient-info {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
  color: #475569;
  font-size: 0.9375rem;
}

.feuille-suivi-patient-card .patient-info span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.feuille-suivi-patient-card .patient-info strong {
  color: #334155;
  font-weight: 500;
}

.feuille-suivi-section {
  background: #fff;
  border-radius: 12px;
  padding: 20px 24px;
  margin-bottom: 24px;
  border: 1px solid #e2e8f0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.feuille-suivi-section h3 {
  font-size: 1rem;
  font-weight: 600;
  color: #0f172a;
  margin: 0 0 16px 0;
  padding-bottom: 12px;
  border-bottom: 2px solid #0f2d1f;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.feuille-suivi-chart-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 20px;
  margin-bottom: 20px;
}

.feuille-suivi-chart-card h4 {
  font-size: 0.9375rem;
  font-weight: 600;
  color: #334155;
  margin: 0 0 16px 0;
}

.feuille-suivi-section .table-wrap {
  margin-top: 12px;
}

.feuille-suivi-section .table-wrap table {
  font-size: 13px;
}

.feuille-suivi-section .table-wrap th {
  background: linear-gradient(135deg, #0f2d1f 0%, #1a4d32 100%);
  color: #fff;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0.02em;
}

.feuille-suivi-section .table-wrap tbody tr:nth-child(even) {
  background-color: #f8fafc;
}

.feuille-suivi-section .table-wrap tbody tr:hover {
  background-color: #f1f5f9;
}

.feuille-suivi-constantes-table th,
.feuille-suivi-constantes-table td {
  padding: 10px 14px;
}

.feuille-suivi-empty {
  color: #64748b;
  font-size: 0.9375rem;
  padding: 20px;
  text-align: center;
  background: #f8fafc;
  border-radius: 8px;
  border: 1px dashed #cbd5e1;
}

.feuille-suivi-section .btn-resultats-acte {
  padding: 6px 14px;
  font-size: 12px;
  border-radius: 6px;
  white-space: nowrap;
}

/* Info-bulle IRPP */
.info-bulle {
  cursor: help;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #0ea5e9;
  color: white;
  font-size: 12px;
  font-weight: bold;
  margin-left: 4px;
  vertical-align: middle;
}
.info-bulle:hover {
  background: #0284c7;
}

/* Sections fiche de paie */
.rh-salaire-section {
  margin-bottom: 20px;
  padding: 14px 16px;
  background: #fafafa;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
}
.rh-salaire-section-highlight {
  background: #ecfdf5;
  border-color: #10b981;
}
.rh-salaire-section-title {
  margin: 0 0 12px;
  font-size: 14px;
  font-weight: 600;
  color: #374151;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.rh-salaire-section-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 20px;
}
.rh-salaire-section-full { grid-column: 1 / -1; }
.rh-salaire-section-content label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 13px;
}
.rh-salaire-section-content label small { font-size: 11px; }
.rh-salaire-section-content input,
.rh-salaire-section-content select,
.rh-salaire-section-content textarea {
  padding: 8px 10px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 13px;
}
.rh-salaire-section-content input[readonly] {
  background: #f3f4f6;
  color: #4b5563;
}
.rh-salaire-result input { font-weight: 600; }
.rh-salaire-checklist {
  padding: 10px 12px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.rh-salaire-checklist label {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
}
.rh-salaire-irpp-detail {
  font-size: 12px;
  color: #6b7280;
  padding: 8px 10px;
  background: #fff;
  border-radius: 6px;
  border: 1px solid #e5e7eb;
}
.required { color: #dc2626; }

/* Résumé paie */
.rh-salaires-summary {
  padding: 14px 16px;
  background: #f3f4f6;
  border-radius: 8px;
  margin-bottom: 12px;
}
.rh-salaires-summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
}
.rh-salaires-summary-row > div {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.rh-salaires-summary-row strong { font-size: 12px; color: #6b7280; }
.rh-salaires-summary-row span { font-size: 16px; font-weight: 600; color: #059669; }

/* Éditeurs riches Quill - imagerie */
.quill-editor-wrap {
  min-height: 120px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
}
.quill-editor-wrap .ql-toolbar {
  border: none;
  border-bottom: 1px solid #d1d5db;
  background: #f9fafb;
}
.quill-editor-wrap .ql-container {
  border: none;
  min-height: 100px;
}
.quill-editor-wrap .ql-editor {
  min-height: 100px;
  font-family: inherit;
}

/* GMAO - Calendrier hebdomadaire ordres de travail */
.gmao-calendrier-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  overflow: hidden;
}
.gmao-calendrier-cell {
  background: var(--color-surface);
  padding: 8px;
  min-height: 80px;
}
.gmao-calendrier-cell.header {
  background: #f3f4f6;
  font-weight: 600;
  font-size: 0.85rem;
  text-align: center;
  padding: 10px 8px;
}
.gmao-calendrier-cell.header.day {
  font-size: 0.75rem;
  color: var(--color-muted);
}
.gmao-calendrier-cell .gmao-cal-event {
  font-size: 0.8rem;
  padding: 6px 8px;
  margin-bottom: 6px;
  border-radius: 6px;
  border-left: 3px solid var(--color-primary);
  background: #ecfdf5;
  cursor: pointer;
  transition: background 0.15s;
}
.gmao-calendrier-cell .gmao-cal-event:hover {
  background: #d1fae5;
}
.gmao-calendrier-cell .gmao-cal-event.urgent {
  border-left-color: #dc2626;
  background: #fef2f2;
}
.gmao-calendrier-cell .gmao-cal-event.urgent:hover {
  background: #fee2e2;
}
.gmao-calendrier-cell .gmao-cal-event.cloture {
  opacity: 0.75;
  border-left-color: #6b7280;
  background: #f9fafb;
}
.gmao-calendrier-cell .gmao-cal-event .gmao-cal-technicien {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-top: 2px;
}

/* Vue mois */
.gmao-calendrier-mois {
  grid-template-columns: repeat(7, 1fr);
}
.gmao-calendrier-mois .gmao-calendrier-cell {
  min-height: 100px;
}
.gmao-calendrier-mois .gmao-calendrier-cell.other-month {
  background: #f9fafb;
}
.gmao-calendrier-mois .gmao-calendrier-cell.other-month .gmao-cal-day-num {
  color: #9ca3af;
}
.gmao-calendrier-cell .gmao-cal-day-num {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
  margin-bottom: 4px;
  color: var(--color-text);
}
.gmao-cal-vue-btn.active {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
}

/* =========================================================
   Harmonisation globale UI (pages + modales)
   ========================================================= */

:root {
  --ui-primary: #2563eb;
  --ui-primary-soft: rgba(37, 99, 235, 0.12);
  --ui-border: #dbe3ef;
  --ui-surface: #ffffff;
  --ui-surface-soft: #f8fbff;
  --ui-text: #0f172a;
  --ui-muted: #475569;
  --ui-shadow: 0 12px 28px rgba(15, 23, 42, 0.09);
}

main.panels,
.module-panel {
  background: linear-gradient(180deg, #f7fbff 0%, #f8fafc 100%);
}

section h2 {
  color: #0f172a;
  border-bottom-color: #dbeafe;
}

section h3,
section h4 {
  color: #1e3a8a;
}

.card {
  border: 1px solid var(--ui-border);
  background: linear-gradient(180deg, var(--ui-surface) 0%, var(--ui-surface-soft) 100%);
  box-shadow: var(--ui-shadow);
}

.table-wrap {
  border: 1px solid #d9e4f5;
  border-radius: 12px;
  background: #ffffff;
}

.table-wrap table thead th {
  background: linear-gradient(180deg, #eff6ff 0%, #eaf2ff 100%);
  color: #1e3a8a;
  border-bottom: 1px solid #d9e4f5;
}

.tabs {
  background: linear-gradient(180deg, #f8fbff 0%, #eef4ff 100%);
  border: 1px solid #d7e3f8;
  border-radius: 12px;
}

.tab {
  color: #334155;
}

.tab.active {
  color: #1d4ed8;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border-color: #bfdbfe;
}

.btn-secondary {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border: 1px solid #bfd4fb;
  color: #1e40af;
}

.btn-secondary:hover {
  background: #eef4ff;
  border-color: #93c5fd;
}

button[type="submit"],
.btn-primary {
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
  border: 1px solid #1d4ed8;
  box-shadow: 0 8px 18px rgba(37, 99, 235, 0.25);
}

button[type="submit"]:hover,
.btn-primary:hover {
  filter: brightness(1.03);
}

.modal {
  background: rgba(2, 6, 23, 0.62);
}

.modal-content {
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.24);
}

.modal-header,
.modal-footer {
  background: linear-gradient(135deg, #f0f7ff 0%, #eef2ff 55%, #f8fafc 100%);
  border-color: #dbe3ef;
}

.modal-body {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
}

input,
select,
textarea {
  border: 1px solid #cfdcf2;
  border-radius: 10px;
  background: #ffffff;
}

input:focus,
select:focus,
textarea:focus {
  border-color: #60a5fa;
  box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.2);
  outline: none;
}

/* =========================================================
   Workflow modals (Labo / Imagerie / Exploration)
   ========================================================= */

#modal-laboratoire .modal-content,
#modal-imagerie .modal-content,
#modal-exploration .modal-content {
  border-radius: 18px;
  border: 1px solid #d9e5f7;
  box-shadow: 0 26px 64px rgba(15, 23, 42, 0.24);
  background: linear-gradient(180deg, #f8fbff 0%, #f5f8ff 100%);
}

#modal-laboratoire .modal-header,
#modal-imagerie .modal-header,
#modal-exploration .modal-header {
  background: linear-gradient(135deg, #eef5ff 0%, #e6f0ff 55%, #f4f7ff 100%);
  border-bottom: 1px solid #d9e5f7;
}

#modal-laboratoire .modal-header h3,
#modal-imagerie .modal-header h3,
#modal-exploration .modal-header h3 {
  margin: 0;
  color: #0f172a;
  font-weight: 700;
}

#modal-laboratoire .modal-header h3 span,
#modal-imagerie .modal-header h3 span,
#modal-exploration .modal-header h3 span {
  display: inline-block;
  margin-left: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.12);
  border: 1px solid rgba(37, 99, 235, 0.24);
  color: #1d4ed8;
  font-weight: 700;
}

#labo-modal-prescription-info,
#img-modal-prescription-info,
#explo-modal-prescription-info {
  border: 1px solid #d3e3fd !important;
  background: linear-gradient(135deg, #f0f7ff 0%, #eef6ff 55%, #ffffff 100%) !important;
  box-shadow: 0 10px 24px rgba(37, 99, 235, 0.12);
}

#labo-modal-prescription-info h4,
#img-modal-prescription-info h4,
#explo-modal-prescription-info h4 {
  color: #1e3a8a;
  margin-top: 0;
}

#modal-laboratoire .tabs,
#modal-imagerie .tabs,
#modal-exploration .tabs {
  border: 1px solid #d6e3fb;
  border-radius: 12px;
  background: linear-gradient(180deg, #f8fbff 0%, #edf4ff 100%);
  padding: 6px 6px 0;
}

#modal-laboratoire .tabs .tab,
#modal-imagerie .tabs .tab,
#modal-exploration .tabs .tab {
  border-radius: 10px 10px 0 0;
}

#modal-laboratoire .tabs .tab.active,
#modal-imagerie .tabs .tab.active,
#modal-exploration .tabs .tab.active {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border-color: #bcd5fb;
  color: #1d4ed8;
  box-shadow: 0 8px 20px rgba(37, 99, 235, 0.18);
}

#modal-laboratoire main.subpanels > .subpanel,
#modal-imagerie main.subpanels > .subpanel,
#modal-exploration main.subpanels > .subpanel {
  margin-top: 8px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid rgba(59, 130, 246, 0.18);
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.08), rgba(255, 255, 255, 0.88));
}

#modal-laboratoire main.subpanels > .subpanel .card,
#modal-imagerie main.subpanels > .subpanel .card,
#modal-exploration main.subpanels > .subpanel .card {
  border: 1px solid rgba(37, 99, 235, 0.18);
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.08);
}

#modal-laboratoire .modal-footer,
#modal-imagerie .modal-footer,
#modal-exploration .modal-footer {
  border-top: 1px solid #dbe7fb;
  background: linear-gradient(180deg, #f5f9ff 0%, #f0f5ff 100%);
}

/* Variante explicitement inspirée du module consultation */
.workflow-modal-modern .modal-header {
  position: sticky;
  top: 0;
  z-index: 5;
  backdrop-filter: blur(6px);
  background: rgba(255, 255, 255, 0.9);
}

#modal-laboratoire main.subpanels > .subpanel[data-panel^="labo-"],
#modal-imagerie main.subpanels > .subpanel[data-panel^="img-"],
#modal-exploration main.subpanels > .subpanel[data-panel^="explo-"] {
  --workflow-accent: 59, 130, 246;
  margin-top: 12px;
  padding: 14px;
  border-radius: 16px;
  border: 1px solid rgba(var(--workflow-accent), 0.22);
  background: linear-gradient(135deg, rgba(var(--workflow-accent), 0.13), rgba(var(--workflow-accent), 0.04));
}

#modal-laboratoire .subpanel[data-panel="labo-prelevement"],
#modal-laboratoire .subpanel[data-panel="labo-analyse"],
#modal-laboratoire .subpanel[data-panel="labo-resultats"] { --workflow-accent: 37, 99, 235; }

#modal-imagerie .subpanel[data-panel="img-examen"],
#modal-imagerie .subpanel[data-panel="img-analyse"],
#modal-imagerie .subpanel[data-panel="img-conclusion"] { --workflow-accent: 3, 105, 161; }

#modal-exploration .subpanel[data-panel="explo-examen"],
#modal-exploration .subpanel[data-panel="explo-analyse"],
#modal-exploration .subpanel[data-panel="explo-conclusion"] { --workflow-accent: 6, 95, 70; }

#modal-laboratoire main.subpanels > .subpanel .card,
#modal-imagerie main.subpanels > .subpanel .card,
#modal-exploration main.subpanels > .subpanel .card {
  border: 1px solid rgba(var(--workflow-accent), 0.18);
  background: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(2px);
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.08);
}

/* Boutons harmonisés (même rythme visuel que consultation) */
#modal-laboratoire .modal-footer,
#modal-imagerie .modal-footer,
#modal-exploration .modal-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

#modal-laboratoire .btn-primary,
#modal-imagerie .btn-primary,
#modal-exploration .btn-primary,
#modal-laboratoire .btn-secondary,
#modal-imagerie .btn-secondary,
#modal-exploration .btn-secondary {
  min-height: 40px;
  min-width: 150px;
  padding: 0 16px;
  border-radius: 10px;
  font-weight: 600;
}

#modal-laboratoire .subpanel .btn-primary,
#modal-imagerie .subpanel .btn-primary,
#modal-exploration .subpanel .btn-primary {
  min-width: 220px;
}

#modal-laboratoire .subpanel .full-row[style*="margin-top"],
#modal-imagerie .subpanel .full-row[style*="margin-top"],
#modal-exploration .subpanel .full-row[style*="margin-top"] {
  display: flex;
  justify-content: flex-end;
}

/* =========================================================
   Pattern global modal : "Présentation + Liste"
   Inspiré du modal Consultation
   ========================================================= */

.modal .modal-body > .modal-patient-info,
.modal .modal-body > [id$="-prescription-info"],
.modal .modal-body > #consultation-patient-info {
  border: 1px solid rgba(37, 99, 235, 0.22) !important;
  border-radius: 14px;
  background: linear-gradient(
    135deg,
    rgba(59, 130, 246, 0.12) 0%,
    rgba(14, 165, 233, 0.06) 48%,
    rgba(255, 255, 255, 0.95) 100%
  ) !important;
  box-shadow: 0 12px 28px rgba(30, 64, 175, 0.1);
}

.modal .modal-body > .modal-patient-info > h4,
.modal .modal-body > [id$="-prescription-info"] > h4,
.modal .modal-body > #consultation-patient-info > h4 {
  margin-top: 0;
  color: #1e40af;
}

.modal .modal-body > .modal-patient-info > div,
.modal .modal-body > [id$="-prescription-info"] > div {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}

.modal .modal-body > .modal-patient-info > div p,
.modal .modal-body > [id$="-prescription-info"] > div p {
  margin: 0;
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(59, 130, 246, 0.22);
  border-radius: 10px;
  padding: 10px 12px;
  min-height: 54px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}

.modal .modal-body > .modal-patient-info > div p strong,
.modal .modal-body > [id$="-prescription-info"] > div p strong {
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #1d4ed8;
  font-weight: 700;
}

/* Compatibilité blocs info rendus en .patient-info dans plusieurs modales */
.modal .modal-body .patient-info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}

.modal .modal-body .patient-info p {
  margin: 0;
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(59, 130, 246, 0.22);
  border-radius: 10px;
  padding: 10px 12px;
  min-height: 54px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}

.modal .modal-body .patient-info p strong {
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #1d4ed8;
  font-weight: 700;
}

.modal .modal-body .table-wrap {
  border: 1px solid #d6e3f8;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.08);
}

.modal .modal-body .table-wrap thead th {
  background: linear-gradient(180deg, #eef5ff 0%, #e7f0ff 100%);
  color: #1e3a8a;
  border-bottom: 1px solid #d6e3f8;
}

/* Caisse — encaissements : liste en haut, panneau paiement en bas à droite */
.caisse-enc-layout {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-items: stretch;
}

.caisse-enc-pay-col {
  align-self: flex-end;
  width: 100%;
  max-width: min(100%, 640px);
  min-width: 280px;
}

.caisse-enc-pay-card {
  position: static;
  padding: 12px 14px;
}

.caisse-enc-pay-card h4 {
  margin: 0 0 8px;
  font-size: 0.95rem;
  color: #334155;
}

.caisse-enc-pay-card label {
  font-size: 12px;
  gap: 3px;
  margin-bottom: 0;
}

.caisse-enc-pay-card input,
.caisse-enc-pay-card select {
  padding: 6px 10px;
  font-size: 13px;
  border-radius: 6px;
}

.caisse-enc-table-col table {
  width: 100%;
}

.caisse-enc-table-col table th:nth-child(n + 5),
.caisse-enc-table-col table td:nth-child(n + 5) {
  text-align: right;
  white-space: nowrap;
}

.caisse-enc-totals td {
  background: #f0f9ff;
  border-top: 2px solid #93c5fd;
  font-weight: 600;
  color: #1e3a8a;
  padding: 10px 12px;
  vertical-align: middle;
}

.caisse-enc-totals-label {
  text-align: left;
  font-size: 0.9rem;
}

.caisse-enc-totals td:not(.caisse-enc-totals-label):not(.caisse-enc-totals-empty) {
  text-align: right;
  white-space: nowrap;
}

.caisse-enc-totals-empty {
  text-align: center;
  color: #94a3b8;
  font-weight: 400;
}

.caisse-enc-table-col {
  min-width: 0;
}

.caisse-enc-table-col > .card {
  margin: 0;
}

.pay-panel {
  width: 100%;
}

.pay-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
  align-items: start;
}

.pay-fields--compact {
  gap: 6px 10px;
}

.pay-label-with-info {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

.pay-reduc-row,
.pay-field-span-all {
  grid-column: 1 / -1;
}

.pay-reduc-row {
  display: grid;
  grid-template-columns: 72px 88px 1fr;
  gap: 6px 8px;
}

.pay-depot-compact {
  margin: 2px 0 0;
  padding: 6px 8px;
  background: #f0f9ff;
  border: 1px solid #bae6fd;
  border-radius: 6px;
  font-size: 12px;
}

.pay-depot-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-bottom: 4px;
}

.pay-depot-stat {
  color: #64748b;
}

.pay-depot-stat strong {
  color: #0f172a;
  margin-left: 4px;
}

#caisse-acompte-solde {
  color: #0369a1;
}

.pay-depot-hint {
  font-size: 11px;
  color: #0369a1;
  margin-bottom: 4px;
}

.pay-depot-check {
  flex-direction: row !important;
  align-items: center;
  gap: 6px !important;
  font-size: 12px;
  cursor: pointer;
}

.pay-depot-check span {
  font-weight: 600;
}

.pay-amounts-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 8px;
}

.pay-amounts-row.pay-amounts-row--cash {
  grid-template-columns: 1fr 1fr 1fr;
}

.pay-f-monnaie input[readonly] {
  background: #f8fafc;
  color: #0f766e;
  font-weight: 600;
  text-align: right;
}

.pay-f-monnaie.has-change input[readonly] {
  background: #ecfdf5;
  border-color: #6ee7b7;
  color: #047857;
}

.pay-fields .caisse-carte-section .reduc-inline {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
}

.caisse-carte-section {
  background: #e3f2fd;
  padding: 8px;
  border-radius: 6px;
  margin: 4px 0;
}

.caisse-enc-pay-card .caisse-carte-section {
  padding: 6px 8px;
  margin: 2px 0;
}

.caisse-carte-toggle {
  flex-direction: row !important;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.caisse-carte-info {
  font-size: 0.9em;
  margin-bottom: 8px;
}

.caisse-carte-warning {
  color: #c62828;
  font-size: 0.85em;
  margin-top: 4px;
}

.caisse-patient-warning {
  background: #ffebee;
  color: #c62828;
  padding: 10px;
  border-radius: 8px;
  margin-bottom: 10px;
  font-weight: 600;
}

.pay-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.caisse-enc-pay-card .pay-actions button {
  flex: 1 1 auto;
  min-width: 7rem;
  padding: 7px 10px;
  font-size: 13px;
}

@media (max-width: 720px) {
  .pay-fields,
  .pay-fields .caisse-carte-section .reduc-inline,
  .pay-actions {
    grid-template-columns: 1fr;
  }

  .pay-reduc-row {
    grid-template-columns: 1fr 1fr;
  }

  .pay-reduc-row label:last-child {
    grid-column: 1 / -1;
  }

  .pay-reduc-row,
  .pay-field-span-all {
    grid-column: 1;
  }

  .caisse-enc-pay-card .pay-actions button {
    width: 100%;
    flex: 1 1 100%;
  }
}

.pay-actions .btn-preview-facture {
  background: #2196f3;
  color: #fff;
}

#caisse-carte-montant[readonly] {
  background: #f5f5f5;
}

@media (max-width: 960px) {
  .caisse-enc-pay-col {
    align-self: stretch;
    max-width: none;
    min-width: 0;
  }
}

.entreprise-couverture-cell {
  max-width: 280px;
}

.entreprise-couverture-tag {
  display: inline-block;
  margin: 0.15rem 0.35rem 0.15rem 0;
  padding: 0.15rem 0.45rem;
  border-radius: 4px;
  background: #eef2ff;
  color: #1e3a8a;
  font-size: 0.85rem;
  white-space: nowrap;
}

.entreprise-couverture-tag.entreprise-couverture-repli {
  background: #f1f5f9;
  color: #475569;
}

.entreprise-wizard {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.entreprise-wizard-intro {
  margin: -0.25rem 0 0.75rem;
  font-size: 0.92rem;
}

.entreprise-step {
  padding: 1rem 1.1rem;
  border: 1px solid #e2e8f0;
  background: #fff;
}

.entreprise-step-head {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 0.85rem;
}

.entreprise-step-head h4 {
  margin: 0 0 0.2rem;
  font-size: 1.02rem;
  color: #0f172a;
}

.entreprise-step-head .muted {
  margin: 0;
  font-size: 0.86rem;
  line-height: 1.35;
}

.entreprise-step-num {
  flex: 0 0 2rem;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  background: #2563eb;
  color: #fff;
  font-weight: 700;
  font-size: 0.95rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.entreprise-step-body .field-hint {
  display: block;
  margin-top: 0.25rem;
  color: #64748b;
  font-size: 0.8rem;
}

.entreprise-step-add {
  margin-top: 0.6rem;
}

.entreprise-wizard-footer {
  display: flex;
  justify-content: flex-end;
  padding-top: 0.25rem;
}

.entreprise-wizard-footer .btn-primary {
  min-width: 220px;
}

.entreprise-empty-row td {
  color: #64748b;
  font-style: italic;
  padding: 0.65rem 0.5rem;
  font-size: 0.88rem;
}

.entreprise-regles-hint {
  margin: 0 0 0.5rem;
  padding: 0.45rem 0.65rem;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 6px;
  font-size: 0.85rem;
}

#entreprise-couverture-regle-add:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.entreprise-couverture-types-table input,
.entreprise-step-body select {
  width: 100%;
  max-width: 100%;
}

#assurance-form.assurance-form-compact {
  grid-template-columns: repeat(2, minmax(240px, 1fr));
  gap: 12px 20px;
  align-items: start;
}

#assurance-form.assurance-form-compact label {
  margin: 0;
}

#assurance-form.assurance-form-compact .assurance-actes-field select#assurance-actes-select {
  width: 100%;
  min-height: 5.5rem;
  max-height: 7rem;
  margin-top: 6px;
}

#assurance-form.assurance-form-compact .assurance-actes-hint {
  display: block;
  margin-top: 4px;
  color: #64748b;
  font-size: 0.8rem;
}

@media (max-width: 720px) {
  #assurance-form.assurance-form-compact {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   Module Hospitalisation — thème vert (liste + filtres)
   Cohérent avec fiche hospitalisation et modales hosp.
   ========================================================= */
.module-panel[data-module="hospitalisation"] {
  --hosp-ui-accent: #16a34a;
  --hosp-ui-accent-dark: #15803d;
  --hosp-ui-accent-soft: rgba(22, 163, 74, 0.12);
  --hosp-ui-bg: #ecfdf5;
  --hosp-ui-bg-soft: #f0fdf4;
  --hosp-ui-border: rgba(22, 163, 74, 0.24);
  background: linear-gradient(180deg, #f0fdf4 0%, #f8fafc 100%);
}

.module-panel[data-module="hospitalisation"] .module-context-subtitle {
  border-bottom: 2px solid var(--hosp-ui-border);
}

.module-panel[data-module="hospitalisation"] .module-context-subtitle-module,
.module-panel[data-module="hospitalisation"] .module-context-subtitle-sep {
  color: #166534;
}

.module-panel[data-module="hospitalisation"] .module-context-subtitle-section {
  color: #15803d;
  font-weight: 700;
}

.module-panel[data-module="hospitalisation"] .hospitalisation-filtre-periode {
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--hosp-ui-border);
  background: linear-gradient(180deg, #ffffff 0%, var(--hosp-ui-bg-soft) 100%);
}

.module-panel[data-module="hospitalisation"] .hospitalisation-filtre-periode > span {
  color: #166534 !important;
  font-weight: 600;
}

.module-panel[data-module="hospitalisation"] .tabs {
  background: linear-gradient(180deg, #f0fdf4 0%, #ecfdf5 100%);
  border: 1px solid var(--hosp-ui-border);
  border-radius: 12px;
}

.module-panel[data-module="hospitalisation"] .tab {
  color: #334155;
}

.module-panel[data-module="hospitalisation"] .tab:hover {
  background: #dcfce7;
  color: #166534;
}

.module-panel[data-module="hospitalisation"] .tab.active {
  color: #15803d;
  background: linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
  border-color: #86efac;
  border-bottom: 3px solid var(--hosp-ui-accent);
  font-weight: 600;
}

.module-panel[data-module="hospitalisation"] .tab.active::before {
  background: var(--hosp-ui-accent);
}

.module-panel[data-module="hospitalisation"] .card {
  border: 1px solid var(--hosp-ui-border);
  background: linear-gradient(180deg, #ffffff 0%, var(--hosp-ui-bg-soft) 100%);
  box-shadow: 0 10px 24px rgba(22, 163, 74, 0.08);
}

.module-panel[data-module="hospitalisation"] .table-wrap {
  border: 1px solid var(--hosp-ui-border);
  border-radius: 12px;
  background: #ffffff;
}

.module-panel[data-module="hospitalisation"] .table-wrap table thead th {
  background: linear-gradient(180deg, #ecfdf5 0%, #d1fae5 100%);
  color: #166534;
  border-bottom: 1px solid var(--hosp-ui-border);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-size: 0.78rem;
}

.module-panel[data-module="hospitalisation"] .table-wrap table tbody tr:nth-child(even) {
  background: rgba(236, 253, 245, 0.45);
}

.module-panel[data-module="hospitalisation"] .table-wrap table tbody tr:hover {
  background: rgba(187, 247, 208, 0.35);
}

.module-panel[data-module="hospitalisation"] .table-controls label {
  color: #166534;
  font-weight: 600;
}

.module-panel[data-module="hospitalisation"] #hospitalisation-filtre-appliquer {
  background: linear-gradient(135deg, #16a34a, #15803d);
  color: #fff;
  border: 1px solid #15803d;
  border-radius: 10px;
  padding: 8px 16px;
  font-weight: 600;
  box-shadow: 0 6px 16px rgba(22, 163, 74, 0.28);
  cursor: pointer;
}

.module-panel[data-module="hospitalisation"] #hospitalisation-filtre-appliquer:hover {
  filter: brightness(1.05);
}

.module-panel[data-module="hospitalisation"] #hospitalisation-refresh.btn-secondary,
.module-panel[data-module="hospitalisation"] .btn-secondary {
  background: linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
  border: 1px solid #86efac;
  color: #166534;
}

.module-panel[data-module="hospitalisation"] #hospitalisation-refresh.btn-secondary:hover,
.module-panel[data-module="hospitalisation"] .btn-secondary:hover {
  background: #dcfce7;
  border-color: #4ade80;
  color: #14532d;
}

.module-panel[data-module="hospitalisation"] input,
.module-panel[data-module="hospitalisation"] select {
  border-color: rgba(22, 163, 74, 0.28);
}

.module-panel[data-module="hospitalisation"] input:focus,
.module-panel[data-module="hospitalisation"] select:focus {
  border-color: var(--hosp-ui-accent);
  box-shadow: 0 0 0 3px var(--hosp-ui-accent-soft);
  outline: none;
}

.module-panel[data-module="hospitalisation"] .badge-success {
  background-color: #dcfce7;
  color: #166534;
  border-color: #86efac;
}

.module-panel[data-module="hospitalisation"] .badge-warning {
  background-color: #fef9c3;
  color: #854d0e;
  border-color: #fde047;
}

/* Modal sortie hospitalisation */
#modal-sortie-hospitalisation .sortie-modal-content {
  max-width: 720px;
  max-height: 95vh;
  display: flex;
  flex-direction: column;
}

#modal-sortie-hospitalisation .sortie-modal-body {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

#modal-sortie-hospitalisation .sortie-hosp-info-card {
  margin-bottom: 12px;
  padding: 12px 14px;
  border: 1px solid rgba(22, 163, 74, 0.22);
  background: linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
}

#modal-sortie-hospitalisation .sortie-hosp-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 16px;
}

#modal-sortie-hospitalisation .sortie-hosp-info-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

#modal-sortie-hospitalisation .sortie-hosp-info-item .lbl {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #166534;
}

#modal-sortie-hospitalisation .sortie-hosp-info-item .val {
  font-size: 0.92rem;
  font-weight: 600;
  color: #0f172a;
  word-break: break-word;
}

#modal-sortie-hospitalisation .sortie-hosp-info-span {
  grid-column: 1 / -1;
}

#modal-sortie-hospitalisation .sortie-hosp-alert {
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #fff7ed;
  border: 1px solid #fdba74;
  color: #9a3412;
  font-size: 0.88rem;
}

#modal-sortie-hospitalisation .sortie-modal-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 16px;
  align-items: start;
}

#modal-sortie-hospitalisation .sortie-modal-form .full-row {
  grid-column: 1 / -1;
}

#modal-sortie-hospitalisation .sortie-req {
  color: #dc2626;
}

#modal-sortie-hospitalisation .sortie-diag-section {
  margin-top: 4px;
  padding-top: 12px;
  border-top: 1px solid #e2e8f0;
}

#modal-sortie-hospitalisation .sortie-diag-section h4 {
  margin: 0 0 4px;
  font-size: 0.95rem;
  color: #166534;
}

#modal-sortie-hospitalisation .sortie-diag-hint {
  margin: 0;
  color: #64748b;
  font-size: 0.82rem;
}

#modal-sortie-hospitalisation .sortie-cim10-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

#modal-sortie-hospitalisation .sortie-cim10-label {
  font-weight: 600;
  color: #334155;
  font-size: 0.9rem;
}

#modal-sortie-hospitalisation .sortie-cim10-block .pharma-med-combo-wrap {
  width: 100%;
}

#modal-sortie-hospitalisation .sortie-cim10-block .pharma-med-combo-wrap input[type="search"] {
  width: 100%;
  font-size: 0.88rem;
}

#modal-sortie-hospitalisation .sortie-cim10-block .pharma-med-combo-dd.is-open {
  max-height: 220px;
}

#modal-sortie-hospitalisation .consult-list-hint {
  color: #64748b;
  font-size: 0.78rem;
}

#modal-sortie-hospitalisation .sortie-modal-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid #e2e8f0;
}

#modal-sortie-hospitalisation .sortie-modal-actions .btn-primary,
#modal-sortie-hospitalisation .sortie-modal-actions .btn-secondary {
  width: 100%;
  margin: 0;
}

/* =========================================================
   Caisse > Encaissements — thème vert (flux hospitalisation)
   ========================================================= */
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation {
  --caisse-hosp-accent: #16a34a;
  --caisse-hosp-accent-dark: #15803d;
  --caisse-hosp-accent-soft: rgba(22, 163, 74, 0.12);
  --caisse-hosp-bg: #ecfdf5;
  --caisse-hosp-bg-soft: #f0fdf4;
  --caisse-hosp-border: rgba(22, 163, 74, 0.24);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation > .caisse-enc-flux-bar {
  background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 100%);
  border-color: var(--caisse-hosp-border);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-flux-label {
  color: #166534;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .card {
  border: 1px solid var(--caisse-hosp-border);
  background: linear-gradient(180deg, #ffffff 0%, var(--caisse-hosp-bg-soft) 100%);
  box-shadow: 0 10px 24px rgba(22, 163, 74, 0.08);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-table-col table thead th {
  background: linear-gradient(180deg, #ecfdf5 0%, #d1fae5 100%);
  color: #166534;
  border-bottom: 1px solid var(--caisse-hosp-border);
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  font-size: 0.78rem;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-group-row td {
  background: #ecfdf5;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-group-row:hover td {
  background: #d1fae5;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-group-toggle {
  color: #15803d;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-group-name {
  color: #166534;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-detail-row td {
  background: #fff;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-detail-row:hover td {
  background: rgba(236, 253, 245, 0.65);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-totals td {
  background: #ecfdf5;
  border-top: 2px solid #86efac;
  color: #166534;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-refresh,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-prev,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-next {
  background: linear-gradient(135deg, #16a34a, #15803d);
  color: #fff;
  border: 1px solid #15803d;
  box-shadow: 0 4px 12px rgba(22, 163, 74, 0.28);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-refresh:hover,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-prev:hover,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation #caisse-enc-next:hover {
  filter: brightness(1.05);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .btn-secondary {
  background: linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
  border: 1px solid #86efac;
  color: #166534;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .btn-secondary:hover {
  background: #dcfce7;
  border-color: #4ade80;
  color: #14532d;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation input,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation select {
  border-color: rgba(22, 163, 74, 0.28);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation input:focus,
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation select:focus {
  border-color: var(--caisse-hosp-accent);
  box-shadow: 0 0 0 3px var(--caisse-hosp-accent-soft);
  outline: none;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-pay-card {
  border: 1px solid var(--caisse-hosp-border);
  background: linear-gradient(180deg, #ffffff 0%, var(--caisse-hosp-bg-soft) 100%);
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-pay-card h4 {
  color: #166534;
}

.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-pay-card .pay-actions button[type="submit"],
.subpanel[data-panel="caisse-encaissements"].caisse-enc-flux-hospitalisation .caisse-enc-pay-card #caisse-pay-submit {
  background: linear-gradient(135deg, #16a34a, #15803d);
  border: 1px solid #15803d;
  box-shadow: 0 6px 16px rgba(22, 163, 74, 0.28);
}

/* Télémedecine — salle LiveKit + annotations */
.telemed-room-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.telemed-room-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.telemed-room-grid {
  display: grid;
  grid-template-columns: 1fr minmax(220px, 28%);
  gap: 16px;
}
@media (max-width: 900px) {
  .telemed-room-grid {
    grid-template-columns: 1fr;
  }
}
.telemed-video-stage {
  position: relative;
  background: #111;
  border-radius: 8px;
  overflow: hidden;
  aspect-ratio: 16 / 10;
  min-height: 280px;
}
.telemed-video-stage--local {
  aspect-ratio: 4 / 3;
  min-height: 160px;
}
.telemed-video-inner {
  position: absolute;
  inset: 0;
}
.telemed-video,
.telemed-video-inner video {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  background: #111;
}
.telemed-annotation-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  cursor: crosshair;
  touch-action: none;
}
.telemed-join-page {
  max-width: 960px;
  margin: 24px auto;
  padding: 16px;
}

.telemed-join-link {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  max-width: 100%;
}

.telemed-join-link a {
  color: #1d4ed8;
  font-weight: 600;
  word-break: break-all;
  text-decoration: underline;
}

.telemed-join-url-anchor {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  line-height: 1.35;
}

.telemed-join-url-anchor:hover {
  color: #1e40af;
}

.telemed-network-config select,
.telemed-network-config input {
  width: 100%;
}

.telemed-link-cell {
  min-width: 140px;
}

.telemed-created-link .telemed-join-link {
  display: flex;
  margin-top: 10px;
}

.telemed-created-link .telemed-join-link a {
  font-size: 14px;
}

.telemed-join-url-field-wrap {
  display: block;
  margin-top: 12px;
  font-size: 13px;
}

.telemed-join-url-field {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 8px 10px;
  font-size: 13px;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  background: #f8fafc;
  color: #1e293b;
  box-sizing: border-box;
  cursor: text;
}
