/* Composants d'interface partagés — voir docs/nettoyage-css.md (lot 1).
 *
 * Ces règles étaient recopiées à l'identique dans une douzaine de templates,
 * chacune avec la largeur de la barre latérale (288px) et le point de rupture
 * (1024px) écrits en dur. Elles vivent désormais ici, en un seul exemplaire.
 *
 * Convention suivie : celle de chat_presence.css — variables préfixées,
 * surcharges en `html.dark` (jamais prefers-color-scheme), zéro !important.
 * Chargé par UNFOLD["STYLES"] : ces classes n'entrent en conflit avec rien
 * d'Unfold, elles n'ont donc aucune cascade à gagner.
 */

:root {
    /* Largeur de la barre latérale d'Unfold. Doit rester synchronisée avec la
       classe `w-[var(--adelie-sidebar)]` de templates/admin/nav_sidebar.html.
       Le point de rupture, lui, est le même que celui d'adelie_admin.css. */
    --adelie-sidebar: 288px;
}

/* ── Modales ─────────────────────────────────────────────────────────────── */
/* Voile de fond. La modale est en `fixed inset-0` : sans décalage, elle
   recouvrirait la barre latérale sur grand écran. */

.adelie-modal {
    z-index: 9999;
    background-color: rgb(0 0 0 / 0.5);
}

/* Variante plus contrastée, pour les modales de saisie (frais, documents). */
.adelie-modal--flou {
    background-color: rgb(0 0 0 / 0.6);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
}

@media (min-width: 1024px) {
    .adelie-modal {
        left: var(--adelie-sidebar);
    }
}

/* Boîte : contenu en colonne, pour qu'un corps scrollable puisse s'étirer
   entre un en-tête et un pied fixes.
   La largeur ET la hauteur maximales restent des classes Tailwind du gabarit
   (`max-w-[34rem] max-h-[85vh]`), volontairement : ce fichier est chargé APRÈS
   les utilitaires, une valeur posée ici écraserait celle du gabarit. */
.adelie-modal-box {
    width: 100%;
    display: flex;
    flex-direction: column;
    /* La boîte est elle-même un élément flex du voile. Sans `min-width: 0`,
       son `min-width: auto` implicite l'empêche de descendre sous la largeur
       min-content de son contenu : un <select> aux options longues élargissait
       la modale à 454 px sur un écran de 390, et elle débordait à droite. */
    min-width: 0;
}

/* Corps scrollable. `min-height: 0` est indispensable : sans lui, un enfant
   flex refuse de rétrécir sous sa taille de contenu et le scroll ne prend pas. */
.adelie-modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    /* Sans ça, arrivé au bout du contenu, le doigt continue et fait défiler la
       PAGE derrière le voile. Réglé en CSS plutôt qu'en verrouillant <body> en
       JavaScript : il n'y aurait alors rien à défaire sur chacun des chemins de
       fermeture (échap, clic sur le voile, bouton, envoi du formulaire). */
    overscroll-behavior: contain;
}

/* ── Modales sur téléphone : une feuille qui monte du bas ─────────────────── */
/*
 * Même point de rupture que la barre latérale et que la page d'aperçu : une
 * seule vérité dans le projet.
 *
 * ⚠️ Ce bloc écrase délibérément les `max-w-[34rem]` des gabarits — ce fichier
 * est chargé APRÈS les utilitaires. C'est exactement ce dont l'en-tête de
 * `.adelie-modal-box` met en garde : ici c'est voulu, et cantonné au mobile.
 */
@media (max-width: 1023.98px) {

    .adelie-modal {
        /* La feuille se colle en bas : les boutons d'action restent près du
           pouce, et le peu de page encore visible rappelle qu'on est dans une
           couche temporaire. */
        align-items: flex-end;
        padding: 0;
    }

    .adelie-modal-box {
        max-width: none;
        width: 100%;
        /* ⚠️ `dvh` et non `vh` : sur mobile, `vh` ignore la barre d'URL
           rétractable, si bien qu'une boîte en 85vh déborde quand même. La
           première déclaration sert de repli aux navigateurs sans `dvh`. */
        max-height: 92vh;
        max-height: 92dvh;
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
    }
}

/* ── Onglets ─────────────────────────────────────────────────────────────── */
/* Dupliqué à l'identique dans budget.html et donnees_activite.html. */

.tab-content { display: none; }
.tab-content.active { display: block; }
