/* Ajustements propres à l'application (le thème visuel est dans theme.css). */

.qr-code svg {
  width: 200px;
  height: 200px;
}

/* Sections de fiche : titre à gauche, actions à droite */
.section-fiche .card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.section-fiche dl {
  margin-bottom: 0;
}

.tabulator .tabulator-row {
  cursor: pointer;
}

/* Modale htmx : les formulaires enveloppent en-tête, corps et pied dans un <form>.
   Bootstrap ne rend le corps défilant que s'il est enfant direct de .modal-content :
   le formulaire reprend donc la mise en page en colonne pour que seul le corps défile. */
.modal-dialog-scrollable .modal-content > form {
  display: flex;
  flex-direction: column;
  max-height: 100%;
  min-height: 0;
  overflow: hidden;
}

.modal-dialog-scrollable .modal-content > form > .modal-body {
  overflow-y: auto;
}

/* Bouton réduit à une icône : le libellé est porté par title (survol) et aria-label (lecteurs d'écran). */
.btn-icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
}

/* Aperçu d'une pièce jointe : modale à la hauteur de l'écran, le document occupe tout le corps. */
.modale-apercu .modal-content {
  height: calc(100vh - 2 * var(--bs-modal-margin));
}

/* Le corps prend toute la place libre ; son contenu y est positionné en absolu : une hauteur en %
   sur un enfant direct d'élément flexible ne se résout pas (l'iframe retomberait à 150 px). */
.modale-apercu .modal-body {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
}

.apercu-piece-jointe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.apercu-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 1rem;
}

/* Cloche des notifications (barre latérale) et pastille « non lue » de la page des notifications. */
.cloche {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 999px;
  color: var(--ata-texte-doux);
}

.cloche:hover,
.cloche.active {
  background: var(--ata-marine-pale);
  color: var(--ata-marine);
}

.cloche .nombre {
  position: absolute;
  top: 0;
  right: -2px;
  min-width: 1.15rem;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--ata-orange);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.15rem;
  text-align: center;
}

.notification-pastille {
  flex-shrink: 0;
  width: 0.55rem;
  height: 0.55rem;
  margin-top: 0.45rem;
  border-radius: 999px;
}

.notification-pastille.non-lue {
  background: var(--ata-orange);
}

/* Graphiques du tableau de bord : hauteur fixe, le canevas suit la largeur de la carte. */
.graphique {
  position: relative;
  height: 220px;
}

/* Liste de sélection ouverte depuis une modale : rattachée au body, au-dessus de la modale. */
body > .ts-dropdown {
  z-index: 1060;
}

/* Arborescence des services : retrait par niveau. */
.arborescence-services .service-niveau {
  display: inline-block;
  padding-left: calc(var(--niveau, 0) * 1.5rem);
}
