/* ============================================================================
   LA LYSARDIÈRE — style.css
   Feuille de style centralisée, issue de l'audit visuel (audit-visuel.html).
   Voir ce fichier pour la correspondance avec les noms utilisés dans l'audit.

   MIGRATION : à ajouter en PLUS du CSS existant de chaque page, jamais en
   remplacement direct — vérifier qu'aucune page ne change visuellement avant
   de retirer le CSS dupliqué de cette page-là. Une page à la fois.
   ============================================================================ */

:root {
  /* Couleurs de base */
  --forest: #18534F; --forest-mid: #226D68; --forest-light: #2A847E;
  --forest-rgb: 24,83,79; /* même couleur que --forest, en triplet R,G,B — pour les rgba(var(--forest-rgb),X) utilisés comme teintes d'ombre/fond semi-transparent un peu partout */
  --mint: #ECF8F6; --mint-deep: #D4EFEB; --mint-mid: #A8D8D0;
  --gold: #FEEAA1; --gold-deep: #F5D96B; --gold-pale: #FFF7EC; --copper: #C77B5A; --copper-deep: #B87A45;
  --gold-rgb: 254,234,161; --copper-rgb: 199,123,90;
  --cream-light: #FFFDF6; /* plus clair que --gold-pale — pour les boutons/éléments posés sur une carte crème, afin qu'ils restent bien distincts du fond */
  --bg: #F7F3EC; --card: #FFFFFF; --card2: #F8F6F2;
  --text: #1A2A28; --text-mid: #4A5E5C; --text-light: #7A8E8C;
  --border: #D8E0DE; --border-light: #E8EEEC;
  --red: #C0392B; --red-bg: #FDECEA; --red-mid: #e8877f;
  --green: #1B7A4A; --green-bg: #E4F5EC;
  --blue: #0077A8; --blue-bg: #E8F4FB;
  --purple: #6B3FA0; --purple-bg: #F3E8FB;
  --orange: #D97706; --orange-bg: #FEF3C7;
  /* Couleurs par gîte (utilisées dans suivi.html) */
  --hu: #2E7D32; --hu-l: #E8F5E9; --hu-m: #A5D6A7;
  --si: #AD1457; --si-l: #FCE4EC; --si-m: #F48FB1;
  --en: #E65100; --en-l: #FFF3E0; --en-m: #FFCC80;
  --fl-c: #6A1B9A; --fl-l: #F3E5F5; --fl-m: #CE93D8;
  --ar: #1565C0; --ar-l: #E3F2FD; --ar-m: #90CAF9;
  /* Rayons & ombres */
  --radius: 16px; --radius-sm: 10px; --radius-xs: 7px;
  --shadow-sm: 0 1px 3px rgba(24,83,79,0.06);
  --shadow-md: 0 4px 16px rgba(24,83,79,0.10);
  --shadow-lg: 0 8px 32px rgba(24,83,79,0.14);
  /* Propres à index.html (page de connexion, fond sombre) */
  --login-ink: #1a3432; --login-cream: #F0EDE6;
  --login-mid: #4a6e6a; --login-light: #8aa8a4;
  --login-shadow: 0 24px 64px rgba(0,0,0,0.4);
  /* Couleurs des 6 cartes d'application sur index.html — même logique que les thèmes
     nuit/automne ci-dessous : chaque carte a SA PROPRE teinte (dégradé clair→foncé
     d'une seule couleur), et les 6 teintes forment ensemble une petite palette
     "forêt" cohérente (pin, miel, mousse, terre cuite, rouille, pierre) plutôt que
     de partager toutes la même base verte/cuivre (ce qui les faisait fondre en un
     même dégradé verdâtre-brun, indistinct d'une carte à l'autre). */
  --app-c1a: #2A847E; --app-c1b: #18534F;  /* pin (Transport) */
  --app-c2a: #C9A227; --app-c2b: #8A6D1A;  /* miel (Documents) */
  --app-c3a: #7D8F3A; --app-c3b: #4A5D23;  /* mousse (Suivi & Gîtes) */
  --app-c4a: #A8624F; --app-c4b: #7A4335;  /* terre cuite (Ressources Humaines) */
  --app-c5a: #C4713F; --app-c5b: #96502A;  /* rouille (Messagerie) */
  --app-c6a: #4A5D5A; --app-c6b: #2E3B39;  /* pierre (Comptabilité) */
}

/* ============================================================================
   THÈME ALTERNATIF "nuit" — palette fournie par l'utilisateur (6 couleurs),
   quelques nuances dérivées ajoutées pour couvrir tous les rôles (fonds clairs,
   texte, bordures). Les couleurs fonctionnelles (rouge erreur, vert succès, et
   les couleurs par gîte) restent inchangées volontairement, car elles portent
   un sens précis indépendant de l'identité visuelle du site.
   Activé en posant data-theme="nuit" sur <html> (voir le sélecteur de thème
   sur index.html et le petit script de lecture ajouté sur chaque page).
   ============================================================================ */
:root[data-theme="nuit"] {
  --forest: #2E365B; --forest-mid: #3F5B8E; --forest-light: #6E5E83;
  --forest-rgb: 46,54,91;
  --mint: #E4E6F0; --mint-deep: #D2D5E6; --mint-mid: #ADB3D0;
  --gold: #D37980; --gold-deep: #C15D65; --gold-pale: #FBEEEF; --copper: #97A5C6; --copper-deep: #B091AA;
  --gold-rgb: 211,121,128; --copper-rgb: 151,165,198;
  --cream-light: #F5F3F8;
  --bg: #EEEDF3; --card: #FFFFFF; --card2: #F3F1F7;
  --text: #22283F; --text-mid: #5A6178; --text-light: #8890A3;
  --border: #D3D2E0; --border-light: #E4E3ED;
  --shadow-sm: 0 1px 3px rgba(46,54,91,0.10);
  --shadow-md: 0 4px 16px rgba(46,54,91,0.16);
  --shadow-lg: 0 8px 32px rgba(46,54,91,0.22);
  /* Propres à index.html (page de connexion, fond sombre) */
  --login-ink: #1a2038; --login-cream: #EEF0F5;
  --login-mid: #6b7492; --login-light: #97A0BD;
  --login-shadow: 0 24px 64px rgba(0,0,0,0.4);
  /* Couleurs des 6 cartes d'application sur index.html, assorties à la palette */
  --app-c1a: #3F5B8E; --app-c1b: #2E365B;
  --app-c2a: #D37980; --app-c2b: #B85D68;
  --app-c3a: #6E5E83; --app-c3b: #574764;
  --app-c4a: #97A5C6; --app-c4b: #3F5B8E;
  --app-c5a: #B091AA; --app-c5b: #D37980;
  --app-c6a: #4A5568; --app-c6b: #5A6178;
}

/* ============================================================================
   THÈME ALTERNATIF "automne" — palette fournie par l'utilisateur (5 couleurs :
   Ember Brick, Teal Canopy, Golden Honey, Mahogany Roast, Slate Storm).
   Contrairement à un premier essai, les tons chauds (brique, acajou) sont ici
   les couleurs dominantes (--forest/--forest-mid, utilisées partout : en-têtes,
   textes, bordures), et le bleu/teal ne sert plus qu'en accent ponctuel
   (--copper) — pour éviter de retomber sur un rendu proche du thème forêt.
   Nuances moins éclaircies que la normale, pour un rendu plus sombre et
   intimiste ("fin de soirée") plutôt que pastel clair.
   Note : deux codes hexadécimaux de l'image source étaient illisibles
   ("#B243C" et "#C78AIE") — interprétés au mieux en #B2433C et #C78A1E.
   ============================================================================ */
:root[data-theme="automne"] {
  --forest: #4C1A17; --forest-mid: #7A2E28; --forest-light: #B2433C;
  --forest-rgb: 76,26,23;
  --mint: #E8D4C8; --mint-deep: #D9BEA8; --mint-mid: #C4A183;
  --gold: #C78A1E; --gold-deep: #A66F14; --gold-pale: #F7E9C9; --copper: #2F6F6A; --copper-deep: #1C2F3A;
  --gold-rgb: 199,138,30; --copper-rgb: 47,111,106;
  --cream-light: #F5E9D9;
  --bg: #EDE0CC; --card: #FBF6EE; --card2: #F0E4D0;
  --text: #2A1512; --text-mid: #6B5A4E; --text-light: #9C8C7E;
  --border: #D4BFA0; --border-light: #E5D5BC;
  --shadow-sm: 0 1px 3px rgba(76,26,23,0.10);
  --shadow-md: 0 4px 16px rgba(76,26,23,0.16);
  --shadow-lg: 0 8px 32px rgba(76,26,23,0.22);
  /* Propres à index.html (page de connexion, fond sombre) */
  --login-ink: #2A0F0D; --login-cream: #F5E9D9;
  --login-mid: #8A6B5E; --login-light: #B89985;
  --login-shadow: 0 24px 64px rgba(0,0,0,0.4);
  /* Couleurs des 6 cartes d'application sur index.html, assorties à la palette */
  --app-c1a: #7A2E28; --app-c1b: #4C1A17;
  --app-c2a: #C78A1E; --app-c2b: #A66F14;
  --app-c3a: #2F6F6A; --app-c3b: #1C2F3A;
  --app-c4a: #B2433C; --app-c4b: #7A2E28;
  --app-c5a: #C78A1E; --app-c5b: #B2433C;
  --app-c6a: #4A4038; --app-c6b: #6B5A4E;
}
:root[data-theme="automne"] body {
  background:
    radial-gradient(circle at 6% 8%, rgba(178,67,60,0.28) 0%, transparent 24%),
    radial-gradient(circle at 95% 4%, rgba(199,138,30,0.42) 0%, transparent 30%),
    radial-gradient(circle at 10% 92%, rgba(76,26,23,0.26) 0%, transparent 28%),
    radial-gradient(circle at 92% 88%, rgba(47,111,106,0.16) 0%, transparent 32%),
    radial-gradient(circle at 55% 40%, rgba(255,255,255,0.26) 0%, transparent 55%),
    linear-gradient(135deg,#F5E4BE 0%,#EACB88 35%,#DEB158 70%,#C99A3A 100%);
}
:root[data-theme="nuit"] body {
  background:
    radial-gradient(circle at 6% 8%, rgba(151,165,198,0.22) 0%, transparent 26%),
    radial-gradient(circle at 95% 4%, rgba(211,121,128,0.30) 0%, transparent 28%),
    radial-gradient(circle at 10% 92%, rgba(110,94,131,0.32) 0%, transparent 30%),
    radial-gradient(circle at 92% 88%, rgba(176,145,170,0.24) 0%, transparent 32%),
    radial-gradient(circle at 55% 40%, rgba(255,255,255,0.06) 0%, transparent 55%),
    linear-gradient(135deg,#1A2038 0%,#242C48 35%,#2E365B 70%,#3A3D5E 100%);
}
/* .section-title utilise un dégradé --forest-light → --gold basé sur des variables :
   s'adapte donc déjà automatiquement à chaque thème. Seule sa couleur de TEXTE a besoin
   d'une surcharge pour le thème automne : le --forest (acajou foncé) par défaut manque
   de lisibilité sur ce dégradé brique/doré chaud. */
:root[data-theme="automne"] .section-title {
  color: #FCEACB;
}

/* ── Fond de page (dégradé commun aux 5 pages) ── */
body {
  font-family: 'DM Sans', sans-serif;
  color: var(--text);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  background:
    radial-gradient(circle at 6% 8%, rgba(184,148,58,0.20) 0%, transparent 22%),
    radial-gradient(circle at 95% 4%, rgba(211,84,0,0.13) 0%, transparent 24%),
    radial-gradient(circle at 10% 92%, rgba(192,57,43,0.11) 0%, transparent 24%),
    radial-gradient(circle at 92% 88%, rgba(184,148,58,0.18) 0%, transparent 28%),
    radial-gradient(circle at 55% 40%, rgba(255,255,255,0.55) 0%, transparent 55%),
    linear-gradient(135deg,#FBF5E6 0%,#F5E9D8 40%,#EFDAC3 75%,#EAD2B8 100%);
}

/* ============================================================================
   TITRES & TEXTES
   Audit : section 2
   ============================================================================ */
.eyebrow { font-family:'Fraunces',serif; font-style:italic; font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--gold-deep); margin:0; }
.h1 { font-family:'Fraunces',serif; font-size:30px; font-weight:700; color:var(--forest); margin:0; }
.h2 { font-family:'Fraunces',serif; font-size:20px; font-weight:700; color:var(--text); margin:0; }
.h3 { font-family:'Fraunces',serif; font-size:15px; font-weight:700; color:var(--forest); margin:0; }
.label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); }
.text-body { font-size:13px; color:var(--text); line-height:1.5; margin:0; }
.text-muted { font-size:12px; color:var(--text-light); margin:0; }

/* ============================================================================
   STRUCTURE DU HEADER — identique sur les 5 pages désormais (structure HTML à 2
   niveaux harmonisée : .header/.hdr = barre extérieure, .header-top = grille intérieure).
   ============================================================================ */
.header, .hdr {
  background: linear-gradient(135deg, var(--forest) 0%, var(--forest-mid) 100%);
  padding-top: env(safe-area-inset-top);
  position: sticky; top: 0; z-index: 200;
  box-shadow: 0 2px 24px rgba(var(--forest-rgb),0.28);
}
.header-top {
  display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: center;
  padding: 0 20px; height: 56px; gap: 0;
}
.header-brand, .hdr-brand {
  justify-self: start; min-width: 0;
  display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0;
}

/* ============================================================================
   LOGO & TITRE DE HEADER — identiques sur les 5 pages (référence : messagerie.html).
   Cible directement les différents noms de classe déjà utilisés par chaque page
   (jamais renommés en HTML, pour éviter toute casse) plutôt que d'en imposer un nouveau.
   ============================================================================ */
.header-brand img, .hdr-brand img {
  width:34px; height:34px; border-radius:50%; object-fit:cover; border:2px solid var(--gold); flex-shrink:0;
}
.header-brand-text h1, .hd-title, .hdr-brand-text .title {
  font-family:'Fraunces',serif; font-size:16px; font-weight:600; color:var(--gold); line-height:1;
}
.header-brand-text span, .hd-sub, .hdr-brand-text .sub {
  display:block; font-size:8px; color:rgba(255,255,255,0.4); letter-spacing:2px;
  text-transform:uppercase; margin-top:2px;
}

/* ============================================================================
   NAVIGATION DU HEADER & MENU HAMBURGER — identiques sur les 6 pages.
   Sous 1000px, seuls le logo et le bouton hamburger restent visibles ; les 6 liens
   passent dans un menu déroulant.
   ============================================================================ */
.hdr-quicknav{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-self:center}
.hdr-nav-btn{padding:6px 14px;border-radius:18px;font-size:11.5px;font-weight:700;text-decoration:none;color:rgba(255,255,255,0.82);background:rgba(255,255,255,0.12);transition:all .2s;white-space:nowrap;border:none;cursor:pointer;font-family:inherit}
.hdr-nav-btn:hover{background:rgba(255,255,255,0.22);color:#fff}
.hdr-nav-btn.active{background:#fff;color:var(--forest);box-shadow:0 2px 8px rgba(0,0,0,0.18)}
.hdr-hamburger { display:none; background:rgba(255,255,255,0.15); border:none; color:white; width:40px; height:40px; border-radius:10px; font-size:19px; cursor:pointer; align-items:center; justify-content:center; flex-shrink:0; }
.hdr-mobile-menu { display:none; flex-direction:column; gap:6px; padding:10px 16px 14px; background:linear-gradient(135deg,var(--forest) 0%,var(--forest-mid) 100%); }
.hdr-mobile-menu.open { display:flex; position:fixed; left:0; right:0; z-index:500; box-shadow:0 8px 20px rgba(0,0,0,0.25); max-height:calc(100vh - 70px); overflow-y:auto; }
.hdr-mobile-menu .hdr-nav-btn { width:100%; text-align:center; padding:10px 14px; }
@media (max-width: 1000px) {
  .header-top { grid-template-columns: auto 1fr auto; height:auto; padding: 12px 16px; }
  .header-brand, .hdr-brand { justify-self: start; grid-column: 1; }
  .hdr-quicknav { display: none; }
  .hdr-hamburger { display: flex; justify-self: end; grid-column: 3; }
}

/* ============================================================================
   BOUTONS
   Audit : sections 3, 9, 12 (btn-a→f, btn-header-*, btn-state)
   Les états hover/pressé/désactivé sont de vraies pseudo-classes ici, pas des
   classes séparées à gérer manuellement — seul .btn-loading reste une classe,
   faute d'équivalent natif.
   ============================================================================ */
.btn-secondary { padding:8px 16px; border-radius:8px; border:1px solid var(--border); cursor:pointer; font-size:12px; font-weight:600; font-family:inherit; background:var(--card); color:var(--text); transition:all .15s; }
.btn-secondary:hover { background:var(--mint); border-color:var(--forest-mid); }

.btn-primary { padding:9px 18px; border-radius:10px; border:none; cursor:pointer; font-size:12.5px; font-weight:700; font-family:inherit; background:linear-gradient(135deg,var(--forest-light),var(--forest)); color:#fff; text-decoration:none; box-shadow:0 2px 8px rgba(var(--forest-rgb),0.3); transition:all .15s; }
.btn-primary:hover { box-shadow:0 0 0 3px rgba(254,234,161,0.5), 0 4px 12px rgba(var(--forest-rgb),0.35); transform:translateY(-1px); }
.btn-primary:active { background:var(--forest); box-shadow:inset 0 2px 6px rgba(0,0,0,0.25); transform:translateY(0); }
.btn-primary:disabled { background:var(--border-light); color:var(--text-light); box-shadow:none; cursor:not-allowed; transform:none; }
.btn-primary.btn-loading { display:inline-flex; align-items:center; gap:8px; opacity:0.85; cursor:wait; }

.btn-accent { padding:8px 16px; border-radius:8px; border:1px solid var(--gold-deep); cursor:pointer; font-size:12px; font-weight:700; font-family:inherit; background:var(--gold); color:var(--forest); text-decoration:none; transition:all .15s; }
.btn-accent:hover { background:var(--gold-deep); }

.btn-danger { padding:8px 16px; border-radius:8px; border:1px solid #f5c6c2; cursor:pointer; font-size:12px; font-weight:600; font-family:inherit; background:var(--red-bg); color:var(--red); transition:all .15s; }
.btn-danger:hover { background:#fbdcd8; }

.btn-ghost { padding:8px 16px; border-radius:8px; border:1px solid transparent; cursor:pointer; font-size:12px; font-weight:600; font-family:inherit; background:transparent; color:var(--text-mid); transition:all .15s; }
.btn-ghost:hover { background:var(--border-light); }

.btn-mint { padding:5px 12px; border-radius:6px; border:1px solid var(--mint-deep); cursor:pointer; font-size:11px; font-weight:600; font-family:inherit; background:var(--mint); color:var(--forest); transition:all .15s; }
.btn-mint:hover { background:var(--mint-deep); }
.btn-mint-lg { padding:8px 16px; border-radius:8px; border:1px solid transparent; cursor:pointer; font-size:12px; font-weight:700; font-family:inherit; background:var(--mint); color:var(--forest); text-decoration:none; transition:all .15s; }
.btn-mint-lg:hover { border-color:var(--forest); background:var(--mint-deep); }

.btn-icon { width:28px; height:28px; border-radius:50%; border:none; background:linear-gradient(135deg,var(--forest-light),var(--forest)); color:#fff; font-size:16px; font-weight:700; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 5px rgba(var(--forest-rgb),0.35); transition:transform .15s; }
.btn-icon:hover { transform:scale(1.08); }

.btn-fab { width:52px; height:52px; border-radius:50%; border:none; background:linear-gradient(135deg,var(--forest-light),var(--forest)); color:#fff; font-size:22px; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 6px 16px rgba(var(--forest-rgb),0.4); transition:transform .18s, box-shadow .18s; }
.btn-fab:hover { transform:translateY(-3px) scale(1.06); box-shadow:0 10px 24px rgba(var(--forest-rgb),0.5); }

.spinner { width:13px; height:13px; border:2px solid rgba(255,255,255,0.4); border-top-color:#fff; border-radius:50%; animation:spin .7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }

/* Variantes pour usage sur fond sombre (header vert) */
.btn-header-ghost { background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.85); border:none; padding:7px 16px; border-radius:8px; font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:all .15s; }
.btn-header-ghost:hover { background:rgba(255,255,255,0.2); color:#fff; }
.btn-header-blue { background:rgba(14,165,233,0.18); color:#7dd3fc; border:1px solid rgba(125,211,252,0.25); padding:7px 16px; border-radius:8px; font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:all .15s; }
.btn-header-blue:hover { background:rgba(14,165,233,0.3); color:#fff; }
.btn-header-add { background:rgba(255,255,255,0.12); color:#fff; border:1px solid rgba(255,255,255,0.22); padding:7px 16px; border-radius:8px; font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:all .15s; }
.btn-header-add:hover { background:rgba(255,255,255,0.24); }
.btn-header-gold { background:var(--gold); color:var(--forest); border:none; padding:7px 16px; border-radius:8px; font-size:12px; font-weight:700; font-family:inherit; cursor:pointer; transition:all .15s; }
.btn-header-gold:hover { background:var(--gold-deep); }

/* ============================================================================
   CHAMPS DE FORMULAIRE
   Audit : section 4
   ============================================================================ */
.input { width:100%; box-sizing:border-box; border:1px solid var(--border); border-radius:8px; padding:9px 12px; font-size:13px; color:var(--text); background:var(--card); outline:none; font-family:inherit; transition:border-color .2s, box-shadow .2s; }
.input:focus { border-color:var(--forest-mid); box-shadow:0 0 0 3px rgba(34,109,104,0.12); }

.textarea { width:100%; box-sizing:border-box; border:1px solid var(--border); border-radius:8px; padding:9px 12px; font-size:13px; font-family:inherit; resize:vertical; min-height:70px; outline:none; }
.textarea:focus { border-color:var(--forest-mid); box-shadow:0 0 0 3px rgba(34,109,104,0.12); }

.select-native { width:100%; box-sizing:border-box; border:1.5px solid var(--forest-mid); border-radius:10px; padding:9px 14px; font-size:12.5px; font-weight:600; color:var(--text); background:var(--card); outline:none; font-family:inherit; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,0.04), 0 0 0 3px rgba(34,109,104,0.12); transition:border-color .15s, box-shadow .15s; }
.select-native:hover { border-color:var(--forest); box-shadow:0 2px 6px rgba(var(--forest-rgb),0.08), 0 0 0 3px rgba(var(--forest-rgb),0.16); }

/* Menu déroulant personnalisé — à préférer au <select> natif chaque fois que la
   liste ouverte doit être stylisée (ex : afficher des sous-informations par ligne) */
.dropdown-trigger { width:100%; box-sizing:border-box; border:1.5px solid var(--forest-mid); border-radius:10px; padding:9px 14px; font-size:12.5px; font-weight:600; color:var(--text); background:var(--card); outline:none; font-family:inherit; cursor:pointer; text-align:left; box-shadow:0 1px 2px rgba(0,0,0,0.04), 0 0 0 3px rgba(34,109,104,0.12); transition:border-color .15s, box-shadow .15s; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.dropdown-trigger:hover { border-color:var(--forest); box-shadow:0 2px 6px rgba(var(--forest-rgb),0.08), 0 0 0 3px rgba(var(--forest-rgb),0.16); }
.dropdown-trigger .chev { font-size:10px; color:var(--text-light); }
.dropdown-panel { position:relative; display:block; background:#fff; border:1.5px solid var(--border); border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,0.18); overflow:hidden; margin-top:6px; }
.dropdown-item { display:flex; flex-direction:column; gap:2px; padding:9px 14px; cursor:pointer; font-size:12.5px; transition:background .1s; }
.dropdown-item:hover { background:var(--bg); }
.dropdown-item.selected { background:rgba(76,175,80,0.1); font-weight:700; }
.dropdown-item .item-sub { font-size:10.5px; color:var(--text-light); font-weight:400; }

.checkbox { width:17px; height:17px; accent-color:var(--forest); }
.radio { width:17px; height:17px; accent-color:var(--forest); }
.check-row, .radio-row { display:flex; align-items:center; gap:7px; font-size:13px; cursor:pointer; }

.toggle-switch { width:42px; height:24px; border-radius:14px; background:var(--border); position:relative; cursor:pointer; transition:background .2s; flex-shrink:0; }
.toggle-switch.on { background:var(--forest); }
.toggle-switch .knob { position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,0.3); transition:left .2s; }
.toggle-switch.on .knob { left:21px; }

.slider-track { width:100%; height:6px; border-radius:4px; background:var(--border-light); position:relative; }
.slider-fill { position:absolute; left:0; top:0; height:100%; border-radius:4px; background:linear-gradient(to right,var(--forest-light),var(--forest)); }
.slider-knob { position:absolute; top:50%; width:18px; height:18px; border-radius:50%; background:#fff; border:3px solid var(--forest); transform:translate(-50%,-50%); box-shadow:0 1px 4px rgba(0,0,0,0.25); }

/* ============================================================================
   BADGES & CHIPS
   Audit : section 5
   ============================================================================ */
.badge-neutral { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--mint); color:var(--forest); }
.badge-gold { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--gold); color:#7a5a00; }
.badge-danger { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--red-bg); color:var(--red); }
.badge-success { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--green-bg); color:var(--green); }
.badge-info { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--blue-bg); color:var(--blue); }
.badge-warning { font-size:10px; font-weight:700; padding:3px 9px; border-radius:20px; background:var(--orange-bg); color:var(--orange); }

.chip-removable { display:inline-flex; align-items:center; gap:6px; background:var(--mint); color:var(--forest); padding:5px 6px 5px 12px; border-radius:20px; font-size:12.5px; font-weight:600; }
.chip-removable button { width:18px; height:18px; border-radius:50%; border:none; background:rgba(0,0,0,0.08); cursor:pointer; font-size:11px; line-height:1; }

/* Bouton de suppression neutre, pour un chip qui gère lui-même sa couleur de fond (ne
   dépend pas de currentColor comme .chip-removable button, pour rester lisible sur
   n'importe quel fond de chip) — ex. les puces de dates dans Ressources Humaines. */
.chip-remove-btn { width:18px; height:18px; border-radius:50%; border:none; background:rgba(0,0,0,0.08); color:inherit; cursor:pointer; font-size:11px; line-height:1; padding:0; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.chip-remove-btn:hover { background:rgba(0,0,0,0.16); }

.chip-filter { padding:5px 11px; border-radius:16px; border:1.5px solid var(--border-light); background:var(--card); font-size:11px; font-weight:600; color:var(--text-mid); cursor:pointer; transition:all .15s; }
.chip-filter.active { background:var(--forest); color:#fff; border-color:var(--forest); }

/* ============================================================================
   CARTES & LISTES
   Audit : sections 6, 10
   3 variantes de survol actuellement en usage selon la page — garder les 3
   noms distincts tant qu'on n'a pas unifié sur un seul comportement.
   ============================================================================ */
.card { background:var(--card); border-radius:16px; padding:22px 24px; box-shadow:var(--shadow-md); border:1px solid var(--border-light); }
.list-row { display:flex; align-items:center; justify-content:space-between; padding:13px 16px; background:var(--card); border:1.5px solid var(--border-light); border-radius:12px; gap:10px; }

.card-hover-lift { background:var(--card); border:1px solid var(--border-light); border-radius:16px; padding:20px; transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s; }
.card-hover-lift:hover { transform:translateY(-6px); box-shadow:0 16px 32px rgba(var(--forest-rgb),0.14); }
.card-hover-soft { background:var(--card); border:1px solid var(--border-light); border-radius:14px; padding:20px; transition:box-shadow .2s; }
.card-hover-soft:hover { box-shadow:0 6px 20px rgba(var(--forest-rgb),0.13); }
.card-hover-nudge { background:var(--card); border:1px solid var(--border-light); border-radius:14px; padding:20px; transition:transform .2s, box-shadow .2s; }
.card-hover-nudge:hover { transform:translateY(-2px); box-shadow:0 4px 14px rgba(0,0,0,0.1); }

/* ============================================================================
   ONGLETS
   Audit : section 8 — 3 styles actuellement différents selon la page
   ============================================================================ */
.tabs-wave { display:flex; gap:2px; background:var(--forest); padding:0 10px 8px; border-radius:10px 10px 0 0; }
.tab-wave { background:rgba(255,255,255,0.07); color:rgba(255,255,255,0.65); border:none; padding:8px 14px; border-radius:10px 10px 4px 4px; cursor:pointer; font-size:12px; font-weight:600; transition:all .2s; font-family:inherit; }
.tab-wave:hover { background:rgba(255,255,255,0.14); color:#fff; }
.tab-wave.active { background:var(--gold); color:var(--forest); font-weight:700; box-shadow:0 -2px 8px rgba(254,234,161,0.3); }

.tabs-pill { display:inline-flex; gap:4px; background:var(--border-light); padding:4px; border-radius:10px; }
.tab-pill { padding:7px 20px; border-radius:8px; border:none; background:transparent; font-size:13px; font-weight:600; font-family:inherit; cursor:pointer; color:var(--text-mid); transition:all .15s; }
.tab-pill:hover:not(.active) { color:var(--text); }
.tab-pill.active { background:var(--card); color:var(--forest); box-shadow:0 1px 4px rgba(0,0,0,0.1); }

.tabs-underline { display:flex; }
.tab-underline { flex:1; padding:11px 8px; border:none; border-bottom:2.5px solid transparent; background:transparent; font-size:12px; font-weight:700; color:var(--text-mid); cursor:pointer; font-family:inherit; transition:all .15s; }
.tab-underline:hover { background:var(--mint); color:var(--forest-mid); }
.tab-underline.active { color:var(--forest); border-bottom-color:var(--forest); background:var(--mint); font-weight:800; }

/* ============================================================================
   CONTAINERS
   Audit : section 11
   ============================================================================ */
.stats-bar { display:flex; gap:8px; padding:12px 20px; flex-wrap:wrap; background:linear-gradient(to right,var(--mint),#f0faf8); border-bottom:1px solid var(--mint-deep); }
/* Système de modale réellement utilisé par documents.html et transport.html (fusionné ici —
   la version .modal/.modal-header d'origine, avec des valeurs différentes, n'était en réalité
   utilisée par aucune page). */
.modal-overlay { position:fixed; inset:0; background:rgba(var(--forest-rgb),0.60); display:none; align-items:center; justify-content:center; z-index:9999; padding:20px; animation:modalFadeIn 0.2s ease; }
.modal-overlay.show { display:flex; }
@keyframes modalFadeIn { from { opacity:0; } to { opacity:1; } }
.modal-box { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-lg); max-width:440px; width:100%; overflow:hidden; animation:modalSlideIn 0.25s ease; }
@keyframes modalSlideIn { from { transform:translateY(20px); opacity:0; } to { transform:translateY(0); opacity:1; } }
.modal-header { padding:16px 20px; background:linear-gradient(135deg,var(--forest) 0%, var(--forest-mid) 100%); display:flex; align-items:center; gap:10px; }
.modal-header-icon { width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:16px; flex-shrink:0; }
.modal-header-text { font-family:'Fraunces',serif; font-size:15px; font-weight:600; color:var(--gold); }
.modal-body { padding:20px; font-size:14px; color:var(--text); line-height:1.6; }
.modal-body label { display:block; font-size:10px; color:var(--text-light); text-transform:uppercase; letter-spacing:0.8px; font-weight:600; margin-bottom:4px; }
.modal-body input, .modal-body select, .modal-body textarea { display:block; width:100%; border:1px solid var(--border); border-radius:var(--radius-xs); padding:9px 12px; font-size:13px; color:var(--text); background:var(--bg); outline:none; font-family:inherit; margin-bottom:14px; transition:border-color 0.2s; }
.modal-body input:focus, .modal-body select:focus, .modal-body textarea:focus { border-color:var(--forest-mid); box-shadow:0 0 0 3px rgba(34,109,104,0.1); }
.modal-actions { padding:0 20px 16px; display:flex; gap:8px; justify-content:flex-end; }
.modal-tabs { display:flex; border-bottom:1px solid var(--border-light); flex-shrink:0; }
.modal-tab { flex:1; padding:11px 6px; border:none; background:transparent; color:var(--text-mid); font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; border-bottom:2px solid transparent; transition:all .15s; }
.modal-tab.active { background:var(--mint); color:var(--forest); border-bottom-color:var(--gold-deep); }
.pill-radio-group { display:flex; gap:8px; }
.pill-radio-group label { flex:1; cursor:pointer; }
.pill-radio-group input[type=radio] { display:none; }
.pill-radio-opt { text-align:center; padding:10px 6px; border:2px solid var(--border); border-radius:10px; background:var(--bg); color:var(--text-mid); font-size:12px; font-weight:600; transition:all .15s; }
.pill-radio-group input:checked + .pill-radio-opt { border-color:var(--forest); background:var(--forest); color:#fff; }
.pill-radio-icon { font-size:18px; margin-bottom:2px; }
.modal-wide { max-width:680px; max-height:90vh; display:flex; flex-direction:column; }
.modal-close { background:rgba(255,255,255,0.15); border:none; color:white; border-radius:8px; width:32px; height:32px; cursor:pointer; font-size:16px; }
.modal-footer { display:flex; gap:10px; padding:16px 22px; border-top:1px solid var(--border-light); flex-shrink:0; background:var(--card2); }
.btn-modal { flex:1; padding:11px; border-radius:10px; font-size:13.5px; font-weight:700; font-family:inherit; cursor:pointer; }
.btn-modal-cancel { background:var(--card); color:var(--text-mid); border:1.5px solid var(--border-light); }
.btn-modal-send { background:var(--forest); color:white; border:none; box-shadow:0 2px 8px rgba(var(--forest-rgb),0.3); }

/* ============================================================================
   PAGE MESSAGERIE (messagerie.html) — mise en page générale, liste des fils,
   fil de discussion, bulles de message, composition, visionneuse de pièce jointe.
   ============================================================================ */
.wrap { max-width:1800px; width:96%; margin:24px auto; padding:0 20px 40px; display:grid; grid-template-columns:380px 1fr; gap:20px; align-items:stretch; height:calc(100vh - 110px); min-height:0; }
/* Aucun fil ouvert : la liste n'a rien à partager avec, élargie pour mieux profiter de l'espace.
   Réservé au desktop — en dessous de 860px la mise en page mobile empile déjà les deux panneaux. */
@media (min-width:861px) { .wrap.no-thread-open { grid-template-columns:700px 1fr; } }
@media (max-width:860px) { .wrap { grid-template-columns:1fr; height:auto; } #thread-link-zone { width:100%; order:10; } .thread-header { row-gap:10px; } }

.panel { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-md); border:1px solid var(--border-light); overflow:hidden; display:flex; flex-direction:column; height:100%; min-height:0; }
#thread-view-container { flex:1; min-height:0; display:flex; flex-direction:column; }

.thread-search { padding:14px; border-bottom:1px solid var(--border-light); }
.thread-search input { width:100%; padding:9px 12px; border:1.5px solid var(--border); border-radius:var(--radius-xs); font-size:13px; font-family:inherit; outline:none; }
.thread-search input:focus { border-color:var(--forest-mid); }
.cat-tabs { display:flex; border-bottom:1px solid var(--border-light); }
.cat-tab { flex:1; padding:11px 8px; border:none; border-bottom:2.5px solid transparent; background:transparent; font-size:12px; font-weight:700; color:var(--text-mid); cursor:pointer; font-family:inherit; transition:all .15s; }
.cat-tab:hover { background:var(--card2); color:var(--forest-mid); }
.cat-tab.active { color:var(--forest); border-bottom-color:var(--forest); background:var(--mint); font-weight:800; }
/* Bandeau "Envoyés — sans réponse", volontairement visible sans avoir à le chercher —
   distinct des onglets cat-tab (mêmes attributs data-action, style propre). */
.sent-pending-banner { flex:none; width:calc(100% - 24px); margin:0 12px 12px; padding:10px 12px; border-radius:10px; border:1.5px solid var(--orange); background:var(--orange-bg); color:var(--orange); font-size:12.5px; }
.sent-pending-banner:hover { filter:brightness(0.96); }
.sent-pending-banner.active { background:var(--orange); color:#fff; }
.link-cat-select { font-size:11.5px; padding:4px 8px; border-radius:6px; border:1px solid var(--border); font-family:inherit; background:var(--card); margin-left:6px; }
.icon-btn { background:var(--card2); color:var(--text-mid); width:32px; height:32px; font-size:14px; border:none; border-radius:8px; cursor:pointer; transition:all .15s; display:inline-flex; align-items:center; justify-content:center; }
.icon-btn:hover { background:var(--mint); color:var(--forest); }
.icon-btn.active-state { background:var(--gold); color:var(--forest); }
.pin-flag { color:var(--gold-deep); margin-right:3px; }
#undo-toast { display:none; position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:#1A2A28; color:white; padding:12px 20px; border-radius:12px; box-shadow:0 8px 24px rgba(0,0,0,0.35); z-index:10005; align-items:center; gap:16px; font-size:13px; }
#undo-toast button { background:var(--gold); color:#1A2A28; border:none; padding:7px 16px; border-radius:8px; font-weight:700; cursor:pointer; font-family:inherit; font-size:12.5px; }
.tmpl-menu { display:none; position:fixed; background:white; border:1.5px solid var(--border-light); border-radius:10px; max-height:260px; overflow-y:auto; box-shadow:0 8px 24px rgba(0,0,0,0.14); z-index:10010; min-width:240px; }
.ctx-menu { display:none; position:fixed; background:white; border:1.5px solid var(--border-light); border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,0.18); z-index:10015; min-width:210px; padding:6px; }
.ctx-item { display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:7px; cursor:pointer; font-size:13px; color:var(--text); white-space:nowrap; }
.ctx-item:hover { background:var(--mint); }
.ctx-item.ctx-danger:hover { background:var(--red-bg); color:var(--red); }
.ctx-sep { height:1px; background:var(--border-light); margin:5px 4px; }
.tmpl-item { padding:10px 14px; cursor:pointer; font-size:12.5px; border-bottom:1px solid #f5f3ee; }
.tmpl-item:hover { background:#f7f5f0; }
.tmpl-item-name { font-weight:700; color:var(--forest); }
.tmpl-item-subj { color:var(--text-light); font-size:11px; margin-top:2px; }

.thread-list { overflow-y:auto; flex:1; }
.thread-item { display:flex; gap:11px; width:100%; text-align:left; padding:13px 16px; border:none; border-left:3px solid transparent; border-bottom:1px solid var(--border-light); background:transparent; cursor:pointer; font-family:inherit; transition:background .15s, border-color .15s; }
.thread-item:hover { background:var(--mint); }
.thread-item.active { background:var(--mint-deep); border-left-color:var(--forest); }
/* Mail déjà lu : légèrement grisé pour se distinguer d'un coup d'œil des non-lus (gras, pastille
   rouge) — via opacity plutôt que des couleurs fixes, pour rester cohérent quel que soit le thème. */
.thread-item-read .thread-item-content { opacity:.7; }
.thread-avatar { width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:700; flex-shrink:0; margin-top:1px; }
.thread-item-content { flex:1; min-width:0; }
.thread-item-top { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:3px; }
.thread-item-name { font-weight:600; font-size:13.5px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.thread-item-time { font-size:10.5px; color:var(--text-light); flex-shrink:0; }
.thread-item-subject { font-size:12.5px; color:var(--text-mid); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-bottom:2px; }
.thread-item-snippet { font-size:12px; color:var(--text-light); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.thread-badges { display:flex; gap:4px; margin-top:5px; }
.badge { font-size:9.5px; font-weight:700; padding:2px 7px; border-radius:20px; }
.badge-anim { background:var(--gold); color:#7a5a00; }
.badge-structure { background:var(--mint-deep); color:var(--forest); }
.badge-tuteur { background:var(--blue-bg); color:var(--blue); }
.badge-famille { background:var(--purple-bg); color:var(--purple); }
.cat-pill { padding:5px 12px; border-radius:14px; border:1px solid var(--border); background:var(--card); color:var(--text-mid); font-size:11.5px; font-weight:600; cursor:pointer; font-family:inherit; white-space:nowrap; transition:all .15s; }
.cat-pill:hover { border-color:var(--forest-mid); }
.cat-pill.active { background:var(--forest); color:#fff; border-color:var(--forest); }
.badge-err { background:var(--red-bg); color:var(--red); }

.thread-view { display:flex; flex-direction:column; height:100%; min-height:0; animation:threadFadeIn .18s ease; }
@keyframes threadFadeIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
.thread-header { padding:16px 22px; border-bottom:1px solid var(--border-light); display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.thread-header-title { font-family:'Fraunces',serif; font-size:17px; font-weight:700; color:var(--forest); }
.thread-header-sub { font-size:12px; color:var(--text-light); margin-top:2px; }
.messages-scroll { flex:1; min-height:0; overflow-y:auto; padding:20px 22px; display:flex; flex-direction:column; gap:14px; }
.msg-bubble { max-width:78%; border-radius:14px; padding:12px 15px; font-size:13.5px; line-height:1.55; box-shadow:0 1px 2px rgba(var(--forest-rgb),0.06); }
.msg-sent { align-self:flex-end; background:var(--forest); color:white; border-bottom-right-radius:4px; }
.msg-received { align-self:flex-start; background:var(--card2); border:1px solid var(--border-light); border-bottom-left-radius:4px; }
.msg-meta { font-size:10.5px; margin-bottom:6px; opacity:.75; display:flex; gap:8px; align-items:center; }
.msg-subject { font-weight:700; font-size:14px; margin-bottom:8px; padding-bottom:8px; border-bottom:1px solid rgba(0,0,0,0.09); color:var(--forest); }
.msg-sent .msg-subject { color:white; border-bottom-color:rgba(255,255,255,0.22); }
.msg-body { white-space:pre-wrap; word-break:break-word; color:var(--text-mid); }
.msg-sent .msg-body { color:rgba(255,255,255,0.92); }
.msg-attachments { margin-top:10px; display:flex; flex-direction:column; gap:5px; }
.msg-attachment { display:flex; align-items:center; gap:7px; padding:6px 10px; border-radius:8px; font-size:12px; cursor:pointer; background:rgba(0,0,0,0.05); }
.msg-sent .msg-attachment { background:rgba(255,255,255,0.15); color:white; }
.msg-attachment:hover { background:rgba(0,0,0,0.1); }
.msg-quoted { margin-top:8px; }
.msg-quoted summary { font-size:11.5px; cursor:pointer; opacity:.75; }
.msg-sent .msg-quoted summary { color:rgba(255,255,255,0.85); }
.msg-quoted-body { margin-top:8px; padding-top:8px; border-top:1px dashed rgba(0,0,0,0.15); font-size:12.5px; opacity:.85; }
.msg-sent .msg-quoted-body { border-top-color:rgba(255,255,255,0.25); }

.reply-bar { border-top:1px solid var(--border-light); padding:14px 22px; background:var(--card2); }
.reply-bar textarea { width:100%; border:1.5px solid var(--border); border-radius:var(--radius-xs); padding:10px 12px; font-size:13.5px; font-family:inherit; resize:vertical; min-height:60px; outline:none; }
.reply-bar textarea:focus { border-color:var(--forest-mid); }
.reply-bar-actions { display:flex; justify-content:space-between; align-items:center; margin-top:8px; gap:10px; }
.reply-files-list { display:flex; gap:6px; flex-wrap:wrap; font-size:11px; color:var(--text-mid); }

.empty-state { flex:1; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:10px; color:var(--text-light); font-size:13.5px; text-align:center; padding:40px; }
.empty-state span { font-size:40px; }

.link-anim-select { font-size:11.5px; padding:4px 8px; border-radius:6px; border:1px solid var(--border); font-family:inherit; background:var(--card); }

.field-input-box { width:100%; padding:10px 12px; border:1.5px solid var(--border-light); border-radius:10px; font-size:13.5px; font-family:inherit; margin-top:5px; outline:none; }
.chips-box { margin-top:5px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-height:44px; padding:6px 10px; border:1.5px solid var(--border-light); border-radius:10px; cursor:text; }
.suggest-box { display:none; position:fixed; background:var(--card); border:1.5px solid var(--border-light); border-radius:10px; margin-top:4px; max-height:220px; overflow-y:auto; box-shadow:var(--shadow-md); z-index:10; }
.suggest-item { padding:9px 14px; cursor:pointer; font-size:13px; display:flex; align-items:center; gap:8px; border-bottom:1px solid #f5f3ee; }
.suggest-item:hover { background:#f7f5f0; }
.file-input-label { display:inline-flex; align-items:center; gap:7px; padding:9px 16px; border:1.5px dashed var(--border); border-radius:10px; cursor:pointer; font-size:12.5px; font-weight:600; color:var(--text-mid); transition:all .15s; }
.file-input-label:hover { border-color:var(--forest); color:var(--forest); }
.dropzone-active { background:var(--mint) !important; }

.lightbox-overlay { position:fixed; inset:0; background:rgba(10,14,13,0.85); z-index:10002; display:none; align-items:center; justify-content:center; padding:30px; }
.lightbox-box { background:white; border-radius:14px; max-width:900px; width:100%; max-height:90vh; display:flex; flex-direction:column; overflow:hidden; }
.lightbox-hdr { padding:14px 20px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--border-light); }
.lightbox-body { flex:1; overflow:auto; display:flex; align-items:center; justify-content:center; background:#f2f0e9; min-height:200px; }
.lightbox-body img { max-width:100%; max-height:78vh; display:block; }
.lightbox-body iframe { width:100%; height:78vh; border:none; }

/* ── Messagerie en mode téléphone : un seul panneau visible à la fois (liste OU conversation),
   chacun prenant toute la page, avec un bouton flottant pour composer et un bouton retour ── */
.msg-fab{display:none}
.thread-back-btn{display:none}
@media (max-width: 800px) {
  .wrap{grid-template-columns:1fr;height:calc(100vh - 70px);margin:0;padding:0;gap:0}
  .wrap .panel:first-child{border-radius:0;border:none;box-shadow:none}
  .wrap .panel:last-child{display:none;border-radius:0;border:none;box-shadow:none}
  .wrap.mobile-thread-open .panel:first-child{display:none}
  .wrap.mobile-thread-open .panel:last-child{display:flex}
  .app-nav-bar{display:none} /* le bouton "Nouveau message" du bandeau est remplacé par le bouton flottant */
  .msg-fab{
    display:flex;align-items:center;justify-content:center;
    position:fixed;bottom:22px;right:20px;z-index:400;
    width:58px;height:58px;border-radius:50%;border:none;
    background:linear-gradient(135deg,var(--forest-light,#2A847E),var(--forest,#18534F));
    color:#fff;font-size:26px;
    box-shadow:0 6px 16px rgba(var(--forest-rgb),0.4),0 2px 6px rgba(0,0,0,0.15);
    cursor:pointer;transition:transform .18s ease,box-shadow .18s ease;
  }
  .msg-fab:hover{transform:translateY(-3px) scale(1.06);box-shadow:0 10px 24px rgba(var(--forest-rgb),0.5),0 4px 10px rgba(0,0,0,0.2)}
  .msg-fab:active{transform:translateY(-1px) scale(0.98)}
  .wrap.mobile-thread-open ~ .msg-fab{display:none} /* masqué quand un fil est ouvert en plein écran */
  .thread-back-btn{
    display:inline-flex;align-items:center;justify-content:center;
    width:34px;height:34px;border-radius:50%;border:none;background:var(--bg,#F0EDE6);
    color:var(--forest,#18534F);font-size:18px;cursor:pointer;flex-shrink:0;margin-right:4px;
  }
  .modal-overlay{padding:0}
  .modal-wide{max-width:none;width:100%;height:100%;max-height:100%;border-radius:0}
}

/* ============================================================================
   ÉTAPES, TOAST, ÉTAT VIDE, TABLEAU
   Audit : sections 14, 15, 16 — composants pas encore utilisés dans l'app,
   prêts pour de futures fonctionnalités.
   ============================================================================ */
.steps-row { display:flex; align-items:center; width:100%; }
.step-dot { width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; background:var(--border-light); color:var(--text-light); }
.step-dot.done { background:var(--forest); color:#fff; }
.step-dot.current { background:#fff; border:2.5px solid var(--forest); color:var(--forest); }
.step-line { flex:1; height:2px; background:var(--border-light); }
.step-line.done { background:var(--forest); }

.toast { display:none; align-items:center; gap:10px; background:var(--forest); color:#fff; padding:11px 16px; border-radius:10px; font-size:13px; font-weight:600; box-shadow:0 8px 20px rgba(0,0,0,0.2); position:fixed; bottom:28px; right:24px; z-index:999; }
.toast.error { background:var(--red); }

.empty-tile { background:var(--card2); border:1.5px dashed var(--border); border-radius:14px; padding:30px 20px; text-align:center; color:var(--text-light); }
.empty-tile .icon { font-size:30px; margin-bottom:8px; opacity:.6; }

.table { width:100%; border-collapse:collapse; font-size:12.5px; }
.table th { text-align:left; padding:9px 12px; color:var(--text-light); font-size:10px; text-transform:uppercase; letter-spacing:.5px; border-bottom:1.5px solid var(--border-light); }
.table td { padding:10px 12px; border-bottom:1px solid var(--border-light); }
.table tr.hover-row { background:var(--mint); }
.table tr.selected-row { background:rgba(var(--forest-rgb),0.08); }
.table tr.selected-row td:first-child { border-left:3px solid var(--forest); }

/* ============================================================================
   SÉPARATEURS
   Audit : section 7
   ============================================================================ */
.divider { height:1px; background:var(--border-light); width:100%; }
.divider-fade { height:1px; background:linear-gradient(to right,var(--border),transparent); width:100%; }

/* ============================================================================
   ÉTATS DE CHARGEMENT / VIDE (partagés entre plusieurs pages)
   ============================================================================ */
.loading { text-align:center; padding:56px; color:var(--text-light); font-size:13px; }
.empty { text-align:center; padding:32px; color:var(--text-light); font-size:13px; }

/* ============================================================================
   BOUTON DE SOUS-HEADER "RETOUR" (ex : "← RH") — dans le bandeau .app-nav-bar
   ============================================================================ */
.hdr-btn { display:inline-flex; align-items:center; gap:5px; padding:6px 14px; border-radius:8px; border:none; cursor:pointer; font-size:12px; font-weight:600; font-family:inherit; text-decoration:none; white-space:nowrap; transition:all 0.15s; }
.hdr-ghost { background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.8); }
.hdr-ghost:hover { background:rgba(255,255,255,0.2); color:white; }

/* ============================================================================
   FOND DE PAGE & REMISE À ZÉRO — identiques sur les 5 pages.
   (body : voir la règle déjà définie plus haut dans ce fichier — fusionnée ici pour
   éviter un doublon qui s'était glissé entre deux passes de centralisation)
   ============================================================================ */
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }

/* ============================================================================
   BANDEAU D'ACTIONS SOUS LE HEADER — base + traitement neutre ("fantôme") commun.
   Les couleurs plus spécifiques (ex : bouton bleu, bouton doré) restent propres à
   chaque page, définies localement.
   ============================================================================ */
.app-nav-bar{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:10px 20px;background:linear-gradient(135deg,var(--forest-mid),var(--forest-light));border-bottom:1px solid rgba(var(--forest-rgb),0.25);flex-wrap:wrap}
.app-nav-bar .hdr-ghost{background:rgba(255,255,255,0.12);color:#fff}
.app-nav-bar .hdr-ghost:hover{background:rgba(255,255,255,0.22)}

/* ============================================================================
   PAGE RESSOURCES HUMAINES (animateur.html) — conteneur, recherche, listes,
   formulaires "ajouter", hub, fiche de profil individuel, documents.
   ============================================================================ */
.main { max-width:860px; margin:0 auto; padding:28px 20px 100px; }

.sort-btn { padding:4px 12px; border-radius:20px; border:1px solid var(--border); cursor:pointer; font-size:11px; font-weight:600; background:var(--card); color:var(--text-light); transition:all 0.15s; font-family:inherit; }
.sort-btn.active { background:var(--forest); color:white; border-color:var(--forest); }

.rh-hub-card {
  width:210px; background:var(--card); border-radius:20px; padding:30px 22px 24px;
  cursor:pointer; text-align:center; text-decoration:none; position:relative; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; gap:4px;
  box-shadow:0 1px 3px rgba(var(--forest-rgb),0.08), 0 1px 2px rgba(var(--forest-rgb),0.05);
  border:1.5px solid var(--border-light);
  transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s, border-color .25s;
}
.rh-hub-card::before {
  content:""; position:absolute; top:0; left:0; right:0; height:4px;
  background:var(--rh-accent); transform:scaleX(0); transform-origin:left;
  transition:transform .3s cubic-bezier(.2,.8,.2,1);
}
.rh-hub-card:hover { transform:translateY(-6px); box-shadow:0 16px 32px rgba(var(--forest-rgb),0.14), 0 4px 10px rgba(var(--forest-rgb),0.08); border-color:var(--rh-accent); }
.rh-hub-card:hover::before { transform:scaleX(1); }
.rh-hub-card:hover .rh-hub-icon { transform:scale(1.12) rotate(-4deg); }
/* Thème nuit : le blanc pur (--card) tranche trop fort sur le fond sombre — --card2 est
   déjà défini pour ce thème comme un blanc légèrement teinté, plus doux, sans devoir
   retoucher les couleurs de texte (pensées pour une carte claire). */
:root[data-theme="nuit"] .rh-hub-card { background:var(--card2); border-color:rgba(255,255,255,0.14); }

.rh-hero-title { color:var(--forest); }
/* Thème nuit : --forest (#2E365B) est presque la même teinte que le fond sombre du body
   (dégradé jusqu'à #3A3D5E) — le titre devenait quasi invisible. Couleur claire dédiée. */
:root[data-theme="nuit"] .rh-hero-title { color:#F0EEF7; }

/* .page-heading/.page-eyebrow sont posés directement sur le fond de la page (jamais dans une
   carte claire) : même problème que .rh-hero-title ci-dessus en thème nuit, même correctif. */
:root[data-theme="nuit"] .page-heading { color:#F0EEF7; }
:root[data-theme="nuit"] .page-eyebrow { color:#ADB3D0; }
.rh-hub-icon {
  width:64px; height:64px; border-radius:18px; background:var(--rh-accent-bg);
  display:flex; align-items:center; justify-content:center; font-size:30px;
  margin-bottom:10px; transition:transform .3s cubic-bezier(.2,.8,.2,1);
}
.rh-hub-title { font-family:'Fraunces',serif; font-size:17px; font-weight:700; color:var(--text); }
.rh-hub-desc { font-size:11.5px; color:var(--text-light); line-height:1.4; margin-top:1px; }
.rh-hub-count {
  margin-top:12px; font-size:10.5px; font-weight:700; color:var(--rh-accent);
  background:var(--rh-accent-bg); padding:4px 12px; border-radius:20px;
  min-width:56px; min-height:12px;
}
.rh-hub-count:empty::after { content:"···"; opacity:.4; letter-spacing:2px; }

.hdr-gold { background:var(--gold); color:var(--forest); }
.hdr-gold:hover { background:var(--gold-deep); }

.liste-search-bar {
  background:var(--card); border-radius:var(--radius); padding:18px 22px;
  margin-bottom:16px; box-shadow:var(--shadow-md); border:1px solid var(--border-light);
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
.search-input {
  flex:1; min-width:200px; padding:10px 16px;
  border:1.5px solid var(--border); border-radius:9px;
  font-size:14px; font-family:inherit; color:var(--text); background:var(--bg);
  outline:none; transition:border-color 0.2s;
}
.search-input:focus { border-color:var(--forest-mid); background:white; }
.btn-create {
  padding:10px 20px; background:var(--forest); color:white;
  border:none; border-radius:9px; font-size:13px; font-weight:700;
  font-family:inherit; cursor:pointer; display:inline-flex; align-items:center; gap:6px;
  transition:all 0.15s; white-space:nowrap;
}
.btn-create:hover { background:var(--forest-mid); }

.form-creation {
  display:none; background:var(--card); border-radius:var(--radius);
  padding:22px 24px; margin-bottom:16px; box-shadow:var(--shadow-md);
  border-top:3px solid var(--forest);
  transition:padding .15s;
}
.form-creation.collapsed {
  padding:0; box-shadow:none; border-top:none; border-radius:var(--radius-sm);
  border:1.5px solid var(--border-light); border-left:4px solid var(--forest); background:var(--card2);
  transition:border-color .15s, background .15s;
}
.form-creation.collapsed:hover {
  border-color:var(--forest-light); background:var(--mint);
}
.form-creation.collapsed .form-title {
  margin-bottom:0; padding:12px 16px; font-size:13.5px; font-weight:600; font-family:'DM Sans',sans-serif; color:var(--forest);
}
.form-title { font-family:'Fraunces',serif; font-size:16px; color:var(--forest); margin-bottom:16px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:14px; }
.field-group label { display:block; font-size:10px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:0.8px; margin-bottom:4px; }
.field-input { width:100%; padding:9px 12px; border:1.5px solid var(--border); border-radius:9px; font-size:13px; font-family:inherit; color:var(--text); background:var(--bg); outline:none; transition:border-color 0.2s; }
.field-input:focus { border-color:var(--forest-mid); background:white; }
.form-actions { display:flex; gap:8px; }
.btn-compact { padding:8px 16px; border-radius:8px; font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:all 0.15s; border:1.5px solid; display:inline-flex; align-items:center; gap:4px; }
.btn-ghost-sm { background:transparent; color:var(--text-mid); border-color:var(--border); }
.btn-ghost-sm:hover { background:var(--mint); border-color:var(--mint-deep); }
.btn-danger-sm { background:var(--red-bg); color:var(--red); border-color:var(--red-mid); }
.btn-danger-sm:hover { background:#f9dbd9; }

.anim-row {
  background:var(--card); border-radius:var(--radius-sm); border:1px solid var(--border-light);
  padding:14px 18px; margin-bottom:8px; display:flex; align-items:center; gap:14px;
  cursor:pointer; transition:all 0.15s; box-shadow:var(--shadow-sm);
}
.anim-row:hover { background:var(--mint); border-color:var(--mint-deep); transform:translateY(-1px); box-shadow:var(--shadow-md); }
.anim-row.editing { background:var(--mint); border-color:var(--forest-mid); flex-direction:column; align-items:stretch; }
.anim-avatar {
  width:42px; height:42px; border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg,var(--forest),var(--forest-mid));
  display:flex; align-items:center; justify-content:center;
  font-size:15px; font-weight:700; color:white;
}
.anim-name { font-weight:700; font-size:14px; color:var(--text); }
.anim-meta { font-size:12px; color:var(--text-mid); margin-top:2px; }
.anim-arrow { color:var(--text-light); font-size:14px; margin-left:auto; }

.profile-banner {
  background:linear-gradient(135deg,var(--forest) 0%,var(--forest-mid) 55%,var(--forest-light) 100%);
  border-radius:var(--radius); padding:28px 28px 24px; margin-bottom:20px;
  box-shadow:var(--shadow-md); position:relative; overflow:hidden;
}
.profile-banner::before {
  content:''; position:absolute; top:-40px; right:-40px;
  width:200px; height:200px; border-radius:50%;
  background:rgba(212,175,106,0.12); pointer-events:none;
}
.profile-banner::after {
  content:''; position:absolute; bottom:-60px; left:40%;
  width:160px; height:160px; border-radius:50%;
  background:rgba(255,255,255,0.05); pointer-events:none;
}
.profile-top { display:flex; align-items:flex-start; gap:18px; margin-bottom:20px; }
.profile-avatar {
  width:68px; height:68px; border-radius:50%; flex-shrink:0;
  background:rgba(255,255,255,0.15); border:2.5px solid rgba(212,175,106,0.6);
  display:flex; align-items:center; justify-content:center;
  font-size:26px; font-weight:700; color:var(--gold); font-family:'Fraunces',serif;
}
.profile-avatar:hover::after {
  content: '📷'; position: absolute; inset: 0; background: rgba(0,0,0,0.45);
  border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 22px;
}
.profile-title { flex:1; }
.profile-name { font-family:'Fraunces',serif; font-size:26px; color:white; font-weight:700; line-height:1.1; }
.profile-subtitle { font-size:12px; color:rgba(255,255,255,0.5); letter-spacing:1.5px; text-transform:uppercase; margin-top:4px; }
.profile-fields { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.profile-field { background:rgba(255,255,255,0.08); border-radius:var(--radius-xs); padding:10px 14px; border:1px solid rgba(255,255,255,0.1); }
.profile-field label { display:block; font-size:9px; font-weight:700; color:rgba(255,255,255,0.4); text-transform:uppercase; letter-spacing:1px; margin-bottom:4px; }
.profile-field input { background:transparent; border:none; outline:none; font-family:inherit; font-size:13px; color:white; width:100%; font-weight:500; }
.profile-field input::placeholder { color:rgba(255,255,255,0.3); }
.profile-field.full { grid-column:1/-1; }

.mail-bar { margin-top:16px; padding-top:16px; border-top:1px solid rgba(255,255,255,0.12); display:flex; flex-wrap:wrap; gap:8px; }
.mail-btn {
  display:inline-flex; align-items:center; gap:6px; padding:7px 14px;
  background:rgba(255,255,255,0.12); color:rgba(255,255,255,0.9);
  border:1px solid rgba(255,255,255,0.2); border-radius:8px;
  font-size:12px; font-weight:600; font-family:inherit; cursor:pointer;
  text-decoration:none; transition:all 0.15s;
}
.mail-btn:hover { background:rgba(255,255,255,0.22); color:white; }

.section { background:var(--card); border-radius:var(--radius); margin-bottom:14px; box-shadow:var(--shadow-sm); border:1px solid var(--border-light); overflow:hidden; }
.section-head { padding:14px 20px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border-light); background:var(--card2); }
.section-head-title { font-family:'Fraunces',serif; font-size:14px; font-weight:700; color:var(--forest); display:flex; align-items:center; gap:8px; }
.count-badge { background:var(--mint); border:1px solid var(--mint-deep); border-radius:20px; padding:1px 9px; font-size:11px; font-family:'DM Sans',sans-serif; font-weight:700; color:var(--forest); }
.section-body { padding:14px 20px; }

.upload-bar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.select-input { padding:8px 12px; border:1.5px solid var(--border); border-radius:8px; font-size:12px; font-family:inherit; color:var(--text); background:var(--bg); outline:none; }
.select-input:focus { border-color:var(--forest-mid); }
.upload-label { cursor:pointer; }
.upload-label input { display:none; }
.upload-status { font-size:12px; color:var(--text-mid); }

.doc-type-group { margin-bottom:12px; }
.doc-type-label-row { font-size:10px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:0.9px; margin-bottom:6px; display:flex; align-items:center; gap:6px; }
.doc-type-label-row::after { content:''; flex:1; height:1px; background:var(--border-light); }
.doc-item { display:flex; align-items:center; gap:10px; padding:9px 12px; background:var(--card2); border-radius:var(--radius-xs); border:1px solid var(--border-light); margin-bottom:5px; }
.doc-name { font-size:13px; font-weight:500; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.doc-item .doc-date { font-size:11px; color:var(--text-light); white-space:nowrap; margin-right:4px; }
.type-pill { display:inline-block; padding:2px 8px; border-radius:5px; font-size:10px; font-weight:700; letter-spacing:0.4px; text-transform:uppercase; }
.type-cv{background:#dbeafe;color:#1d4ed8} .type-cni{background:#d1fae5;color:#065f46}
.type-casier{background:#fef9c3;color:#854d0e} .type-rib{background:#fce7f3;color:#9d174d}
.type-contrat{background:#fef3c7;color:#92400e} .type-divers{background:#f3f4f6;color:#374151}

.vierge-item { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--border-light); border-radius:var(--radius-xs); background:var(--card2); margin-bottom:6px; }
.vierge-icon { font-size:22px; flex-shrink:0; }
.vierge-label { font-size:13px; font-weight:600; flex:1; }

.btn-del { background:var(--red-bg); border:1px solid #f5c6c6; color:var(--red); padding:4px 10px; border-radius:6px; font-size:11px; font-weight:600; font-family:inherit; cursor:pointer; transition:all 0.15s; }
.btn-del:hover { background:#f5c6c6; }

.empty-mini { padding:16px; text-align:center; color:var(--text-light); font-size:12px; }

@media(max-width:600px){ .profile-fields,.form-grid{grid-template-columns:1fr} .profile-banner{padding:20px 18px 18px} }
/* Sous 500px, les cartes du hub RH prennent presque toute la largeur plutôt que de rester à
   leur largeur fixe avec du vide sur les côtés */
@media(max-width:500px){ .rh-hub-card{width:100%} }

/* ============================================================================
   BOUTON "PILULE" — action générale à coins très arrondis (ex : tous les boutons
   "Télécharger" du site). Volontairement sans couleur imposée : chaque usage garde
   une teinte adaptée à son propre fond (comme c'était déjà le cas sur messagerie.html).
   ============================================================================ */
.pill-btn { display:inline-flex; align-items:center; gap:6px; padding:8px 16px; border-radius:20px; border:none; font-size:12.5px; font-weight:700; font-family:inherit; cursor:pointer; transition:all .15s; text-decoration:none; }
.pill-btn:hover { filter:brightness(0.93); transform:translateY(-1px); }
.pill-btn:active { filter:brightness(0.88); transform:translateY(0); }
.pill-btn-primary { background:var(--gold); color:var(--forest); }
.pill-btn-primary:hover { background:var(--gold-deep); filter:none; }
/* Ajustements par thème : sur Forêt/Nuit le --gold de base est trop pâle pour bien ressortir
   comme bouton d'action principal — sur Automne au contraire, on veut rester proche du
   golden honey d'origine plutôt que d'aller vers un ton plus soutenu. */
:root[data-theme="nuit"] .pill-btn-primary { background:var(--gold-deep); }
:root[data-theme="nuit"] .pill-btn-primary:hover { background:#A83E47; }
:root:not([data-theme]) .pill-btn-primary { background:var(--gold-deep); }
:root[data-theme="automne"] .pill-btn-primary { background:#DDA53D; }
:root[data-theme="automne"] .pill-btn-primary:hover { background:var(--gold); }

/* ============================================================================
   MINI-MODALES "CLAIRES" (fond blanc, juste une bordure) — différentes du
   .modal-header/.modal-body existants (fond vert dégradé). Motifs repérés
   répétés 3 à 5 fois à l'identique dans animateur.html (kilométrage, contrat,
   envoi de mail...).
   ============================================================================ */
.modal-light-header { padding:18px 20px 14px; border-bottom:1px solid #eee; }
.modal-input { width:100%; padding:9px 12px; border:1.5px solid var(--border); border-radius:8px; font-size:13px; margin-top:4px; font-family:inherit; }
.modal-error-box { display:none; font-size:12px; color:#b91c1c; background:#fef2f2; border:1px solid #fecaca; border-radius:8px; padding:8px 10px; }
.modal-light-footer { display:flex; gap:10px; padding:14px 20px; border-top:1px solid #eee; }
.modal-cancel-btn { flex:1; padding:10px; background:#f3f4f6; color:#374151; border:none; border-radius:9px; font-size:13px; font-weight:700; font-family:inherit; cursor:pointer; }

/* ── En-tête de section repliable (avec chevron ▶ qui pivote à l'ouverture) ── */
.collapsible-header { cursor:pointer; display:flex; align-items:center; justify-content:space-between; user-select:none; }
.chevron-icon { font-size:13px; color:var(--text-light); transition:transform .2s; }
.chevron-icon.open { transform:rotate(90deg); }

/* ============================================================================
   PAGE ANIMATION (animation.html) — app séparée utilisée par les animateurs
   pendant un séjour. En-tête propre (mobile, une seule page, pas de navigation
   multi-sections), donc non fusionné avec le système .header/.hdr des 5 pages
   admin. Couleurs normalisées sur la palette partagée (l'ancien doré terne
   #B8943A devient le doré clair partagé, etc.) — changement visuel volontaire.
   ============================================================================ */
.hd{background:linear-gradient(135deg,var(--forest),var(--forest-light));padding:16px 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 4px 24px rgba(0,0,0,0.35);border-bottom:1px solid rgba(245,217,107,0.25)}
.hd-brand{display:flex;align-items:center;gap:12px}
.hd-brand img{width:36px;height:36px;border-radius:9px;box-shadow:0 2px 8px rgba(0,0,0,0.3)}
.hd-brand-name{color:white;font-family:'Fraunces',serif;font-size:17px;font-weight:700;letter-spacing:0.2px}
.hd-logout{background:rgba(255,255,255,0.14);border:1.5px solid rgba(255,255,255,0.25);color:white;padding:9px 18px;border-radius:10px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s}
.hd-logout:active{background:rgba(255,255,255,0.28)}
#offline-badge, #sync-badge{backdrop-filter:blur(4px);box-shadow:0 2px 8px rgba(0,0,0,0.25)}

.sejour-hero{text-align:center;padding:42px 20px 34px;position:relative}
.sejour-hero-gite{display:inline-block;font-size:12px;font-weight:800;color:#3d2b0a;background:linear-gradient(135deg,var(--gold-deep),var(--gold));padding:6px 18px;border-radius:20px;text-transform:uppercase;letter-spacing:1.2px;margin-bottom:18px;box-shadow:0 4px 14px rgba(184,148,58,0.4)}
.sejour-hero-name{font-family:'Fraunces',serif;font-size:34px;font-weight:700;color:var(--forest);line-height:1.2;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
.sejour-hero-dates{font-size:15px;color:var(--text-mid);margin-top:9px;font-weight:600;letter-spacing:0.3px}

.wrap-animation{max-width:900px;margin:0 auto;padding:8px 18px 60px}
.card-title{font-family:'Fraunces',serif;font-size:18px;color:var(--forest);margin-bottom:18px;padding-bottom:14px;border-bottom:1.5px solid var(--border-light)}
.empty-msg{color:var(--text-light);font-size:13.5px;padding:6px 2px;font-style:italic}

.veh-row{display:flex;align-items:center;gap:14px;padding:13px 6px;border-bottom:1px solid var(--border-light)}
.veh-row:last-child{border-bottom:none}
.veh-ico-box{font-size:19px;width:42px;height:42px;background:linear-gradient(160deg,var(--card2),var(--card));border:1px solid var(--border-light);border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 1px 2px rgba(255,255,255,0.6)}
.veh-label{font-weight:700;font-size:14.5px;color:var(--text)}

.anim-row-list{display:flex;align-items:center;gap:13px;padding:11px 4px;border-bottom:1px solid var(--border-light)}
.anim-row-list:last-child{border-bottom:none}
.anim-av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--forest),var(--forest-light));color:white;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex-shrink:0;box-shadow:0 2px 6px rgba(var(--forest-rgb),0.3)}
.anim-name-list{font-weight:700;font-size:14.5px;color:var(--text)}

.btn-bilan{flex-shrink:0;padding:8px 14px;border-radius:10px;border:none;background:linear-gradient(135deg,var(--forest),var(--forest-light));color:white;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap;box-shadow:0 2px 8px rgba(var(--forest-rgb),0.35);transition:transform .1s}
.btn-bilan:active{transform:scale(0.96)}

.bilan-overlay{display:none;position:fixed;inset:0;background:rgba(10,7,4,0.7);backdrop-filter:blur(3px);z-index:10010;align-items:center;justify-content:center;padding:20px}
.bilan-modal{background:var(--card);border-radius:20px;max-width:960px;width:100%;max-height:94vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}
.bilan-hd{background:linear-gradient(135deg,#E8A87C,#DD8E5C);padding:22px 26px}
.bilan-hd-title{color:#5a2e0f;font-family:'Fraunces',serif;font-size:19px;font-weight:700}
.bilan-body{padding:0;overflow-y:auto;flex:1;background:var(--card2)}
.bq-section{background:var(--card);margin:0;padding:20px 22px 24px}
.bq-section+.bq-section{border-top:8px solid var(--card2)}
.bq-section-title{font-family:'Fraunces',serif;font-size:16.5px;font-weight:700;margin-bottom:16px;padding-bottom:10px;border-bottom:2px solid var(--bq-accent, var(--forest));color:var(--bq-accent, var(--forest))}
.bq-questions-grid{display:flex;flex-direction:column;gap:12px}
.bq-question{padding:14px 16px;background:var(--card2);border-radius:12px;border:1px solid var(--border-light)}
.bq-label{display:block;font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:9px;line-height:1.4}
.bq-chips{display:flex;flex-wrap:wrap;gap:8px}
.bq-chip{padding:9px 16px;border-radius:20px;border:1.5px solid var(--border);background:white;color:var(--text-mid);font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .12s;white-space:nowrap;flex:0 0 auto}
.bq-chip:active{transform:scale(0.96)}
.bq-chip.selected{background:#B8E0C8;border-color:#8FCBA6;color:#1B4332;box-shadow:0 1px 4px rgba(27,67,50,0.15)}
.bq-observations{margin-top:18px;padding-top:16px;border-top:1px dashed var(--border)}
.bq-obs-label{display:block;font-size:11px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px}
.bq-textarea{width:100%;padding:11px 13px;border:1.5px solid var(--border);border-radius:10px;font-size:13.5px;font-family:inherit;resize:vertical;min-height:70px;background:white;color:var(--text)}
.bq-textarea:focus{outline:none;border-color:var(--bq-accent, var(--forest))}
.bq-identity{display:flex;flex-wrap:wrap;gap:8px 24px;padding:14px 22px;background:var(--card2);border-bottom:1px solid var(--border-light)}
.bq-identity-label{font-size:10px;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-light);font-weight:700}
.bq-identity-value{font-size:14px;font-weight:700;color:var(--text)}
.bq-identity-item{display:flex;flex-direction:column;gap:2px}
@media (max-width:480px){
  .bq-chips{gap:6px}
  .bq-chip{padding:8px 13px;font-size:12.5px}
  .bq-section{padding:16px 16px 20px}
}
.bilan-ft{padding:18px 26px;border-top:1px solid var(--border-light);flex-shrink:0;display:flex;gap:10px;background:var(--card2)}
.btn-annuler{flex:1;padding:13px;background:white;color:var(--text-mid);border:1.5px solid var(--border);border-radius:11px;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit}
.btn-enregistrer{flex:1;padding:13px;background:linear-gradient(135deg,var(--forest),var(--forest-light));color:white;border:none;border-radius:11px;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit;box-shadow:0 3px 10px rgba(var(--forest-rgb),0.3)}

.vac-card{background:var(--card2);border-radius:14px;padding:16px 18px;margin-bottom:12px;border:1px solid var(--border-light);box-shadow:var(--shadow-sm);transition:box-shadow .15s}
.vac-card:last-child{margin-bottom:0}
.vac-card:active{box-shadow:var(--shadow-md)}
.vac-head{display:flex;align-items:center;gap:14px;cursor:pointer}
.vac-av{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--forest),var(--forest-light));color:white;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0;box-shadow:0 2px 6px rgba(var(--forest-rgb),0.35)}
.vac-card .vac-name{font-weight:700;font-size:15.5px;color:var(--text)}
.vac-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.badge-alert{font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:8px;background:#fef3e6;color:#d35400;letter-spacing:0.2px}
.vac-body{display:none;margin-top:16px;padding-top:16px;border-top:1px dashed var(--border)}
.vac-body.open{display:block}
.vac-body iframe{border-radius:10px}

/* ============================================================================
   PAGE SUIVI (suivi.html) — grille des gîtes, planning des animateurs, tableau
   récapitulatif, modale d'impression. Utilise les alias --f/--fm/etc définis
   localement sur cette page (voir son propre <style>).
   ============================================================================ */
.page-eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--light,var(--text-light));margin-bottom:6px}
.page-heading{font-family:'Fraunces',serif;font-size:28px;font-weight:700;color:var(--text);margin-bottom:24px;line-height:1.1}
/* Texte descriptif posé directement sur le fond de page (jamais dans une carte), ex. les
   intros d'onglet dans suivi.html — même traitement nuit que .page-heading ci-dessous. */
.page-desc{font-size:12.5px;color:var(--text-mid)}
:root[data-theme="nuit"] .page-desc{color:#C7CCE3}
#planning-month-label{color:var(--text)}
:root[data-theme="nuit"] #planning-month-label{color:#F0EEF7}

.gites-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:40px}
@media(max-width:720px){.gites-grid{grid-template-columns:1fr}}

.gite-card{background:var(--gold-pale);border-radius:var(--r);box-shadow:var(--sh);border:1px solid var(--border-l);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s}
.gite-card:hover{box-shadow:var(--sh-md);transform:translateY(-2px)}
.gite-card-inner{display:flex;flex:1;overflow:visible}
.gite-accent{width:5px;flex-shrink:0;border-radius:var(--r) 0 0 var(--r)}
.gite-content{flex:1;display:flex;flex-direction:column;min-width:0;overflow:visible}

.gite-hdr{padding:16px 20px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-l);border-radius:0 var(--r) 0 0}
.gite-hdr-left{display:flex;align-items:center;gap:10px}
.gite-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.gite-title{font-family:'Fraunces',serif;font-size:19px;font-weight:700;letter-spacing:.2px}
.gite-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;letter-spacing:.3px}
.sej-anim-btn{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;line-height:1;flex-shrink:0;display:inline-block;transition:transform .2s ease,opacity .15s}
.sej-anim-btn:hover{transform:rotate(35deg);opacity:1}

.hu .gite-accent{background:var(--hu);width:6px} .hu .gite-dot{background:var(--hu)} .hu .gite-hdr{background:var(--hu-l)} .hu .gite-title{color:var(--hu)} .hu .gite-badge{background:var(--hu);color:#fff}
.si .gite-accent{background:var(--si);width:6px} .si .gite-dot{background:var(--si)} .si .gite-hdr{background:var(--si-l)} .si .gite-title{color:var(--si)} .si .gite-badge{background:var(--si);color:#fff}
.en .gite-accent{background:var(--en);width:6px} .en .gite-dot{background:var(--en)} .en .gite-hdr{background:var(--en-l)} .en .gite-title{color:var(--en)} .en .gite-badge{background:var(--en);color:#fff}
.fl .gite-accent{background:var(--fl-c);width:6px} .fl .gite-dot{background:var(--fl-c)} .fl .gite-hdr{background:var(--fl-l)} .fl .gite-title{color:var(--fl-c)} .fl .gite-badge{background:var(--fl-c);color:#fff}
.ar .gite-accent{background:var(--ar);width:6px} .ar .gite-dot{background:var(--ar)} .ar .gite-hdr{background:var(--ar-l)} .ar .gite-title{color:var(--ar)} .ar .gite-badge{background:var(--ar);color:#fff}
.hu .vac-av-sm{background:var(--hu)} .si .vac-av-sm{background:var(--si)} .en .vac-av-sm{background:var(--en)} .fl .vac-av-sm{background:var(--fl-c)} .ar .vac-av-sm{background:var(--ar)}

.gite-body{padding:14px 20px;display:flex;flex-direction:column;gap:10px}
.field-row{display:flex;align-items:center;gap:8px}
.field-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--light);width:70px;flex-shrink:0}
.field-in{flex:1;min-width:0;padding:6px 10px;border:1.5px solid var(--border);border-radius:7px;font-size:12.5px;font-family:inherit;color:var(--text);background:var(--bg);outline:none;transition:border-color .2s;overflow:hidden;text-overflow:ellipsis}
.field-in:focus{border-color:var(--fm);background:#fff}
.field-col{display:flex;flex-direction:column;gap:5px}
.sej-select-btn{flex:1;min-width:0;padding:9px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:12.5px;font-family:inherit;font-weight:600;color:var(--text);background:var(--cream-light);cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;width:100%;box-shadow:0 1px 2px rgba(0,0,0,0.04);transition:border-color .15s,box-shadow .15s}
.sej-select-btn:hover{border-color:var(--green);box-shadow:0 2px 6px rgba(var(--forest-rgb),0.08)}
.sej-dropdown{display:none;position:fixed;background:white;border:1.5px solid var(--border);border-radius:10px;max-height:320px;overflow-y:auto;box-shadow:0 10px 30px rgba(0,0,0,0.18);z-index:10020;min-width:280px}
.sej-dd-group{padding:6px 12px 3px;font-size:10px;font-weight:700;color:var(--light);text-transform:uppercase;letter-spacing:.5px}
.sej-dd-item{display:flex;flex-direction:column;gap:2px;padding:8px 12px;cursor:pointer;font-size:12.5px}
.sej-dd-item:hover{background:var(--bg)}
.sej-dd-item.sej-dd-selected{background:rgba(76,175,80,0.1);font-weight:700}
.sej-dd-top{display:flex;align-items:center;gap:8px}
.sej-dd-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sej-dd-dates{font-size:10.5px;color:var(--light)}
.sej-dd-badge{font-size:9.5px;font-weight:700;padding:2px 7px;border-radius:10px;flex-shrink:0;white-space:nowrap}
.sej-dd-encours{font-size:8.5px;font-weight:700;padding:1px 6px;border-radius:9px;flex-shrink:0;white-space:nowrap;color:#c0392b;background:#fdecea;letter-spacing:.2px}
.sej-dd-empty{padding:14px 12px;font-size:12px;color:var(--light);text-align:center}

.vehs{display:flex;flex-wrap:wrap;gap:5px}
.veh-chip{display:inline-flex;align-items:center;gap:5px;background:linear-gradient(135deg,#f4f9f8,#eaf3f1);border:1px solid #cfe3df;border-radius:20px;padding:4px 12px;font-size:11.5px;font-weight:700;color:var(--f);box-shadow:0 1px 2px rgba(var(--forest-rgb),0.05)}
.veh-chip button{background:none;border:none;cursor:pointer;color:var(--light);font-size:11px;line-height:1;padding:0;display:flex;align-items:center}
.veh-chip button:hover{color:var(--red)}

.anim-bubbles{display:flex;flex-wrap:wrap;gap:5px}
.anim-bubble{display:inline-flex;align-items:center;gap:5px;background:var(--mint);border:1.5px solid var(--mint-mid);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600;color:var(--f);cursor:pointer;transition:all .15s}
.anim-bubble:hover{background:#c8e8e2}
.anim-bubble button{background:none;border:none;cursor:pointer;color:var(--light);font-size:11px;padding:0;display:flex;align-items:center}
.anim-bubble button:hover{color:var(--red)}
.anim-search-wrap{position:relative;margin-top:4px}
.anim-search{width:100%;padding:5px 10px;border:1.5px dashed var(--border);border-radius:8px;font-size:12px;font-family:inherit;outline:none;background:var(--bg);color:var(--text);transition:border-color .2s}
.anim-search:focus{border-color:var(--fm);border-style:solid;background:#fff}
.anim-drop{display:none;position:absolute;left:0;right:0;top:calc(100% + 3px);background:#fff;border:1.5px solid var(--border);border-radius:9px;box-shadow:var(--sh-md);max-height:180px;overflow-y:auto;z-index:200}
.anim-drop-item{padding:8px 14px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--border-l);display:flex;justify-content:space-between;align-items:center}
.anim-drop-item:last-child{border-bottom:none}
.anim-drop-item:hover{background:#f0f5f4}

.gite-divider{height:1px;background:var(--border-l);margin:0 20px}

.vacs-section{padding:12px 20px 16px}
.vacs-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--light);margin-bottom:8px}
.vac-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-l)}
.vac-row:last-child{border-bottom:none}
.vac-av-sm{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}
.vac-row .vac-name{font-size:13px;font-weight:600;flex:1;min-width:0}
.vac-foyer{font-size:10px;color:var(--light)}
.st-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.st-complete{background:var(--green-bg);color:var(--green)}
.st-partial{background:var(--orange-bg);color:var(--orange)}
.st-empty{background:var(--red-bg);color:var(--red)}
.vac-btn{background:#f0f5f4;border:1px solid #c8deda;color:var(--f);padding:3px 8px;border-radius:6px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:2px;transition:background .15s}
.vac-btn:hover{background:#c8deda}
.vac-btn-del{background:var(--red-bg);border-color:#f5c6c6;color:var(--red)}
.vac-btn-del:hover{background:#f5c6c6}

.manual-add-wrap{padding:8px 20px 14px;border-top:1px solid var(--border-l)}

.section-hdr{display:flex;align-items:center;gap:10px;margin-bottom:14px;margin-top:32px}
.section-badge{background:#fff;border:1.5px solid var(--border);border-radius:20px;padding:2px 10px;font-size:12px;font-weight:700;color:var(--mid)}

.palette{background:var(--gold-pale);border-radius:var(--r);padding:14px 18px;margin-bottom:14px;border:1px solid var(--border-l);box-shadow:var(--sh);display:none}
.palette-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--light);margin-bottom:10px}
.palette-btns{display:flex;gap:7px;flex-wrap:wrap}
.p-btn{padding:7px 16px;border-radius:20px;border:2px solid;cursor:pointer;font-size:13px;font-weight:700;font-family:inherit;transition:all .15s;user-select:none}
.p-btn.hu{background:var(--hu-l);border-color:var(--hu);color:var(--hu)}
.p-btn.si{background:var(--si-l);border-color:var(--si);color:var(--si)}
.p-btn.en{background:var(--en-l);border-color:var(--en);color:var(--en)}
.p-btn.fl{background:var(--fl-l);border-color:var(--fl-c);color:var(--fl-c)}
.p-btn.ar{background:var(--ar-l);border-color:var(--ar);color:var(--ar)}
.p-btn.none{background:#f3f4f6;border-color:#bbb;color:#666}

.active-bar{display:none;padding:8px 16px;border-radius:9px;margin-bottom:12px;font-size:13px;font-weight:600;align-items:center;gap:8px;border:1.5px solid}
.active-bar.hu{background:var(--hu-l);color:var(--hu);border-color:var(--hu)}
.active-bar.si{background:var(--si-l);color:var(--si);border-color:var(--si)}
.active-bar.en{background:var(--en-l);color:var(--en);border-color:var(--en)}
.active-bar.fl{background:var(--fl-l);color:var(--fl-c);border-color:var(--fl-c)}
.active-bar.ar{background:var(--ar-l);color:var(--ar);border-color:var(--ar)}
.active-bar.none{background:#f3f4f6;color:#666;border-color:#bbb}

.unassigned-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:7px}
.person-chip{padding:9px 14px;border-radius:9px;border:1.5px solid var(--border);background:var(--cream-light);cursor:pointer;transition:all .15s;user-select:none;display:flex;align-items:center;justify-content:space-between;gap:8px}
.person-chip:hover{border-color:var(--fm);background:var(--mint);transform:translateY(-1px)}
.chip-name{font-size:13px;font-weight:600;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.live-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;display:inline-block;animation:pulseSuivi 1.5s infinite;flex-shrink:0}
@keyframes pulseSuivi{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}
/* Lien depuis le rapport quotidien de l'assistant IA vers le bouton d'ajout (animateur ou
   véhicule) concerné — retiré automatiquement après quelques secondes (handleUrlAction). */
.report-highlight-blink{animation:pulseSuivi .7s ease-in-out 5}
.live-badge{display:inline-flex;align-items:center;gap:5px;background:#fef2f2;border:1.5px solid #fca5a5;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:700;color:#dc2626}

.tab-nav{display:flex;gap:2px;background:rgba(0,0,0,0.06);border-radius:10px;padding:3px;margin-bottom:24px;width:fit-content}
.tab-btn{padding:7px 20px;border-radius:8px;border:none;background:transparent;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;color:var(--mid);transition:all .15s}
.tab-btn.active{background:var(--cream-light);color:var(--f);box-shadow:0 1px 4px rgba(0,0,0,0.1)}
.tab-btn:hover:not(.active){color:var(--text)}
.recap-table{width:100%;border-collapse:collapse;background:var(--gold-pale);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);font-size:13px}
.recap-table th{padding:10px 14px;background:var(--f);color:rgba(255,255,255,0.9);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.7px;text-align:left;white-space:nowrap}
.recap-table th:first-child{border-radius:var(--r) 0 0 0}
.recap-table th:last-child{border-radius:0 var(--r) 0 0}
.recap-table td{padding:10px 14px;border-bottom:1px solid var(--border-l);vertical-align:middle}
.recap-table tr:last-child td{border-bottom:none}
.recap-table tr:hover td{background:var(--mint)}
.recap-cell-gite{font-weight:700;font-size:14px;font-family:'Fraunces',serif}
.recap-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:600}

.pl-nav-btn{padding:7px 14px;border-radius:8px;border:1.5px solid var(--border);background:var(--cream-light);color:var(--text);font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;transition:all .15s}
.pl-nav-btn:hover{background:var(--mint);border-color:var(--f)}
.pl-gites-outer{position:relative}
.pl-gites-row{display:flex;gap:16px;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x proximity;padding-bottom:8px;cursor:grab;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.pl-gites-row.pl-dragging{cursor:grabbing;scroll-behavior:auto;user-select:none}
.pl-gites-row::-webkit-scrollbar{height:8px}
.pl-gites-row::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}
.pl-nav-arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;border:1.5px solid var(--border);background:var(--cream-light);box-shadow:var(--sh-md);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;color:var(--f);z-index:5;transition:all .15s}
.pl-nav-arrow:hover{background:var(--mint);border-color:var(--f)}
.pl-nav-arrow.pl-arrow-left{left:-6px}
.pl-nav-arrow.pl-arrow-right{right:-6px}
.pl-gite-block{background:var(--gold-pale);box-shadow:var(--sh);overflow:hidden;border:1.5px solid var(--border-l);flex:0 0 auto;width:460px;scroll-snap-align:start;border-radius:var(--r);content-visibility:auto;contain-intrinsic-size:460px 780px}
.pl-gite-hdr{padding:8px 14px;font-family:'Fraunces',serif;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.pl-table-wrap{overflow-x:auto}
.pl-table{width:100%;border-collapse:collapse;font-size:10.5px;min-width:420px}
.pl-table th{padding:4px 5px;background:var(--card2);color:var(--mid);font-weight:700;font-size:8.5px;text-transform:uppercase;letter-spacing:.3px;text-align:left;white-space:nowrap;border-bottom:1.5px solid var(--border-l);position:sticky;top:0}
.pl-table td{padding:1px 3px;border-bottom:1px solid var(--border-l);vertical-align:middle}
.pl-table tr.pl-weekend td{background:rgba(0,0,0,0.02)}
.pl-day-cell{white-space:nowrap;font-weight:700;color:var(--text);font-size:10px}
.pl-day-dow{font-weight:400;color:var(--light);font-size:8.5px;text-transform:capitalize;margin-left:2px}
.pl-sejour-cell{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);text-align:center;font-weight:700;font-size:9.5px;padding:4px 2px;border-radius:5px;vertical-align:middle;white-space:nowrap;overflow:hidden}
.pl-select{width:100%;min-width:0;padding:2px 3px;border:1.5px solid transparent;border-radius:5px;background:transparent;font-size:10px;font-family:inherit;color:var(--text);cursor:pointer;transition:all .15s}
input.pl-select{cursor:text}
.pl-select:hover{border-color:var(--border)}
.pl-select.pl-set{font-weight:600}
.pl-select.pl-repos{color:#9d174d}
.pl-select.pl-remplacant{color:#b45309;font-weight:600}
.pl-empty-row td{color:var(--light);font-style:italic;font-size:9.5px}

.mi-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:500;display:none;align-items:center;justify-content:center;padding:20px}
.mi-overlay.open{display:flex}
.mi-box{background:var(--gold-pale);border-radius:var(--r);padding:28px;width:100%;max-width:460px;box-shadow:var(--sh-lg)}
.mi-title{font-family:'Fraunces',serif;font-size:20px;color:var(--text);margin-bottom:4px}
.mi-sub{font-size:12px;color:var(--light);margin-bottom:22px}
.mi-sep{height:1px;background:var(--border-l);margin:14px 0 12px}
.mi-sel{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:9px;font-size:13px;font-family:inherit;outline:none;margin-bottom:10px;color:var(--text);background:var(--bg)}
.mi-sel:focus{border-color:var(--fm)}
.mi-close{width:100%;padding:10px;background:transparent;border:1.5px solid var(--border);border-radius:9px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;color:var(--mid);margin-top:4px}
.mi-close:hover{background:var(--bg)}
.mi-opt{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--border);background:var(--cream-light);cursor:pointer;margin-bottom:8px;transition:all .15s;text-align:left;font-family:inherit}
.mi-opt:hover{border-color:var(--f);background:var(--bg);transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,0.06)}
.mi-opt-ico{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.mi-opt-text{flex:1;min-width:0}
.mi-opt-title{font-size:13px;font-weight:700;color:var(--text)}
.mi-opt-sub{font-size:11px;color:var(--light);margin-top:1px}

/* ============================================================================
   PAGE DOCUMENTS (documents.html) — barre d'outils, bannières, blocs de séjour,
   fiches vacancier, lignes de document, éléments non classés, aperçu PDF.
   ============================================================================ */
.hdr-group { display:flex; align-items:center; gap:4px; padding:0 10px; border-right:1px solid rgba(255,255,255,0.12); }
.hdr-group:last-child { border-right:none; padding-right:0; }

.toolbar { background:linear-gradient(to right,var(--mint),var(--mint-deep)); border-bottom:1px solid var(--border-light); padding:8px 20px; display:flex; gap:6px; align-items:center; box-shadow:var(--shadow-sm); flex-wrap:nowrap; overflow-x:auto; }
.toolbar input, .toolbar select { border:1px solid var(--border); border-radius:8px; padding:6px 10px; font-size:12.5px; color:var(--text); background:var(--bg); outline:none; font-family:inherit; transition:border-color 0.2s; height:32px; flex-shrink:0; }
.toolbar input { min-width:200px; flex:1; }
/* max-width + ellipsis : sans ça, un <select> natif s'élargit pour tenir sa plus longue
   <option> (ex: un nom de foyer ou de séjour long) — toute la barre d'outils en dépendait. */
.toolbar select { flex-shrink:0; max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.toolbar input:focus, .toolbar select:focus { border-color:var(--forest-mid); box-shadow:0 0 0 3px rgba(34,109,104,0.1); }

.alert-banner { background:var(--orange-bg); border-left:4px solid var(--orange); padding:10px 20px; display:none; align-items:center; gap:10px; font-size:13px; color:var(--orange); font-weight:500; }
.alert-banner.show { display:flex; }
/* Bandeau volontairement bien visible (dégradé doré de la marque, pas un bleu générique) —
   il annonce une action qui attend une confirmation, pas juste une info secondaire. */
.confirm-banner { background:linear-gradient(135deg,var(--gold-deep),var(--gold)); padding:12px 20px; display:none; align-items:center; gap:10px; font-size:13.5px; font-weight:700; color:var(--forest); flex-wrap:wrap; box-shadow:0 2px 10px rgba(var(--forest-rgb),0.18); }
.confirm-banner.show { display:flex; }
.stat-chip { background:var(--card); border:1px solid var(--border-light); border-radius:30px; padding:5px 14px; display:flex; align-items:center; gap:7px; box-shadow:var(--shadow-sm); font-size:12px; color:var(--text-mid); white-space:nowrap; }
.stat-chip .num { font-size:1.1rem; font-weight:700; font-family:'Fraunces',serif; }
.stat-chip.ok .num { color:var(--green); }
.stat-chip.warn .num { color:var(--orange); }
.stat-chip.danger .num { color:var(--red); }

.section-title { font-family:'Fraunces',serif; font-size:15px; font-weight:700; color:var(--forest); margin:20px 0 10px; display:flex; align-items:center; gap:8px; padding:10px 14px; background:linear-gradient(to right, var(--forest-light), var(--gold)); border-radius:10px; border-left:3px solid var(--forest); }
.section-title .count { background:white; border:1px solid rgba(var(--forest-rgb),0.15); border-radius:20px; padding:2px 10px; font-size:11px; color:var(--forest-mid); font-family:inherit; font-weight:700; }

.sejour-block { border:1px solid rgba(var(--forest-rgb),0.12); border-radius:14px; margin-bottom:12px; box-shadow:0 2px 8px rgba(var(--forest-rgb),0.07); transition:box-shadow 0.2s; }
.sejour-block:hover { box-shadow:0 6px 20px rgba(var(--forest-rgb),0.13); }
.sejour-header { padding:13px 18px; display:flex; align-items:center; flex-wrap:wrap; gap:10px; background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%); cursor:pointer; user-select:none; border-radius:14px; transition:border-radius 0.15s; }
.sejour-header h3 { flex:1; font-family:'Fraunces',serif; font-size:14px; color:var(--gold); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sejour-name-group { display:flex; align-items:center; gap:10px; flex:1; min-width:160px; overflow:hidden; }
.sejour-name-group h3 { flex:1 1 auto; min-width:30px; }
.sejour-spacer { display:none; }
.sejour-dates { font-size:11px; color:rgba(255,255,255,0.55); white-space:nowrap; flex-shrink:0; }
.sejour-count { background:rgba(255,255,255,0.15); color:rgba(255,255,255,0.9); border-radius:20px; padding:3px 10px; font-size:11px; font-weight:600; flex-shrink:0; white-space:nowrap; border:1px solid rgba(255,255,255,0.18); }
.sejour-chevron { color:rgba(255,255,255,0.45); font-size:10px; transition:transform 0.2s; flex-shrink:0; }
.sejour-chevron.open { transform:rotate(90deg); }
.sejour-body { display:none; padding:14px 18px; background:white; border-radius:0 0 14px 14px; border-top:1px solid rgba(var(--forest-rgb),0.08); }
.sejour-body.open { display:block; }
.empty-sejour { color:var(--text-light); font-size:13px; padding:6px 0; }
.cat-header { font-family:'Fraunces',serif; font-size:13px; font-weight:600; color:var(--forest); margin:12px 0 8px; display:flex; align-items:center; gap:7px; padding:8px 12px; background:var(--forest-light); border-radius:10px; cursor:pointer; user-select:none; border:1px solid rgba(var(--forest-rgb),0.08); transition:background 0.15s; }

.person-card { background:var(--bg); border:1px solid rgba(var(--forest-rgb),0.1); border-radius:10px; margin-bottom:6px; overflow:hidden; transition:box-shadow 0.15s, border-color 0.15s; }
.person-card:hover { box-shadow:0 3px 10px rgba(var(--forest-rgb),0.09); border-color:rgba(var(--forest-rgb),0.2); }
.person-header { padding:10px 14px; display:flex; align-items:center; gap:10px; cursor:pointer; transition:background 0.15s; border-radius:10px; }
.person-header:hover { background:var(--mint); }
.person-avatar { width:32px; height:32px; border-radius:50%; background:linear-gradient(135deg, var(--forest-light), var(--forest-mid)); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; color:white; flex-shrink:0; }
.person-avatar .avatar-content { display:flex; align-items:center; justify-content:center; width:100%; height:100%; pointer-events:none; }
.person-avatar:hover::after { content:'📷'; position:absolute; inset:0; background:rgba(0,0,0,0.45); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:13px; }
.person-info { flex:1; min-width:0; }
.person-name { font-weight:600; font-size:13px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.person-foyer { font-size:11px; color:var(--text-light); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.doc-badges { display:flex; gap:4px; flex-wrap:wrap; }
.badge.ok { background:var(--green-bg); color:var(--green); }
.badge.missing { background:var(--red-bg); color:var(--red); }
.badge-inscription { background:#d1fae5; color:#065f46; }
.badge-complete  { background:#d1fae5; color:#065f46; border:1px solid #6ee7b7; }
.badge-partial   { background:#fef9c3; color:#854d0e; border:1px solid #fde047; }
.badge-docs_only { background:#ede9fe; color:#5b21b6; border:1px solid #c4b5fd; }
.badge-empty     { background:#fee2e2; color:#991b1b; border:1px solid #fca5a5; }
.badge-confidentiel { background:#f3e8fb; color:#6b3fa0; }
.badge-ordonnance { background:#dbeafe; color:#1e40af; }
.badge-divers { background:#fce7f3; color:#9d174d; }
.badge-pending { background:var(--orange-bg); color:var(--orange); }
.chevron { color:var(--text-light); transition:transform 0.2s; font-size:10px; flex-shrink:0; }
.chevron.open { transform:rotate(90deg); }
.person-docs { display:none; padding:8px 14px 12px 56px; border-top:1px solid rgba(var(--forest-rgb),0.08); background:#fafcfc; }
.person-docs.open { display:block; }

.view-toggle { display:inline-flex; gap:3px; background:var(--bg); border-radius:8px; padding:3px; margin-left:auto; flex-shrink:0 }
.view-toggle button { border:none; background:transparent; padding:5px 8px; border-radius:6px; cursor:pointer; font-size:13px; color:var(--text-light); line-height:1 }
.view-toggle button.active { background:white; color:var(--forest); box-shadow:0 1px 3px rgba(0,0,0,0.12) }

body.vac-grid .vac-grid-container { display:grid !important; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px }
body.vac-grid .person-card { margin-bottom:0 }
body.vac-grid .person-header { flex-direction:column; text-align:center; padding:14px 8px 10px; gap:6px }
body.vac-grid .person-avatar { width:38px; height:38px; font-size:13px }
body.vac-grid .person-info { width:100%; min-width:0 }
body.vac-grid .person-name { white-space:normal; font-size:11.5px; line-height:1.25 }
body.vac-grid .person-foyer { display:none }
body.vac-grid .person-header .badge { font-size:9px; padding:2px 7px }
body.vac-grid .person-header .btn-danger { display:none }
body.vac-grid .vac-grid-container .person-card:has(.person-docs.open) .person-header .btn-danger { display:inline-flex }
body.vac-grid .chevron { display:none }
body.vac-grid .vac-grid-container .person-card:has(.person-docs.open) { grid-column:1/-1 }

.cat-closed { display:none !important }
body.sejour-grid .sejours-grid-container { display:grid !important; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; align-items:stretch }
body.sejour-grid .sejours-grid-container.cat-closed { display:none !important }
body.sejour-grid .sejour-block { margin-bottom:0; display:flex; flex-direction:column }
body.sejour-grid .sejour-block:has(.sejour-body.open) { display:block }
body.sejour-grid .sejour-header { flex-direction:column; justify-content:center; text-align:center; padding:14px 10px; gap:5px; border-radius:14px !important; flex:1; box-sizing:border-box }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) .sejour-header { flex-direction:row; justify-content:flex-start; text-align:left; padding:13px 18px; height:auto }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) .sejour-name-group { flex-direction:row; flex:1; width:auto; min-width:160px; }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) .sejour-name-group h3 { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; width:auto; }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) .sejour-spacer { display:none; }
body.sejour-grid .sejour-header h3 { flex:none; white-space:normal; font-size:12.5px; line-height:1.25; margin:0; width:100% }
body.sejour-grid .sejour-name-group { flex-direction:column; flex:none; width:100%; min-width:0; gap:4px; }
body.sejour-grid .sejour-header .btn { display:none }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) .sejour-header .btn { display:inline-flex }
body.sejour-grid .sejour-chevron { display:none }
body.sejour-grid .sejours-grid-container .sejour-block:has(.sejour-body.open) { grid-column:1/-1 }

.doc-row { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px solid var(--border-light); font-size:12px; flex-wrap:wrap; }
.doc-row:last-child { border-bottom:none; }
.doc-type-pill { display:inline-flex; align-items:center; gap:4px; padding:3px 9px; border-radius:20px; font-size:10px; font-weight:700; white-space:nowrap; flex-shrink:0; }
.doc-type-pill.inscription { background:#d1fae5; color:#065f46; }
.doc-type-pill.confidentiel { background:#f3e8fb; color:#6b3fa0; }
.doc-type-pill.ordonnance { background:#dbeafe; color:#1e40af; }
.doc-type-pill.divers { background:#fce7f3; color:#9d174d; }
.doc-type-pill.missing { background:var(--bg); color:var(--text-light); border:1px dashed var(--border); }
.doc-type-pill.nonclasse { background:var(--orange-bg); color:var(--orange); }
.doc-filename { flex:1; color:var(--text); font-size:12px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.doc-row .doc-date { color:var(--text-light); font-size:11px; white-space:nowrap; flex-shrink:0; }
.doc-missing { color:var(--text-light); font-style:italic; font-size:12px; }
.doc-actions { display:flex; gap:5px; flex-shrink:0; }
.valider-block { padding:10px 0 2px; border-top:1px solid var(--border-light); margin-top:6px; }

.unlinked-card { background:var(--card); border:1px solid #fde68a; border-left:4px solid var(--orange); border-radius:var(--radius-sm); padding:12px 14px; margin-bottom:8px; display:grid; grid-template-columns:auto 1fr; gap:10px 14px; box-shadow:var(--shadow-sm); align-items:start; }
.unlinked-icon { font-size:1.4rem; padding-top:2px; }
.unlinked-info { min-width:0; }
.unlinked-info strong { display:block; font-size:13px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.unlinked-meta { color:var(--text-light); font-size:11px; margin-top:2px; }
.unlinked-actions { grid-column:2; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }

.search-select { position:relative; flex:1; min-width:180px; max-width:280px; }
.search-select-input { width:100%; padding:6px 10px; border:1px solid var(--border); border-radius:var(--radius-xs); font-size:12px; font-family:inherit; background:var(--bg); color:var(--text); outline:none; height:32px; transition:border-color 0.2s; }
.search-select-input:focus { border-color:var(--forest-mid); box-shadow:0 0 0 2px rgba(34,109,104,0.1); }
.search-select-list { display:none; position:absolute; top:calc(100% + 2px); left:0; right:0; background:var(--card); border:1px solid var(--border); border-radius:var(--radius-xs); max-height:200px; overflow-y:auto; z-index:100; box-shadow:var(--shadow-md); }
.search-select-item { padding:7px 12px; font-size:12px; cursor:pointer; color:var(--text); border-bottom:1px solid var(--border-light); }
.search-select-item:last-child { border-bottom:none; }
.search-select-item:hover { background:var(--mint); }

.btn { display:inline-flex; align-items:center; gap:5px; padding:6px 13px; border-radius:var(--radius-xs); border:1px solid var(--border); cursor:pointer; font-size:12px; font-weight:600; font-family:inherit; transition:all 0.15s; background:var(--card); color:var(--text); white-space:nowrap; text-decoration:none; }
.btn:hover { background:var(--mint); border-color:var(--forest-mid); }
/* Réaffirmée ici (couleur seule) pour l'emporter correctement quand combinée avec .btn
   ci-dessus (ex : documents.html/transport.html) — la déclaration complète et autonome plus
   haut dans ce fichier reste utilisée telle quelle quand .btn-danger est utilisée seule. */
.btn-danger { background:var(--red-bg); color:var(--red); border-color:#f5c6c2; }
.btn-success { background:var(--green-bg); color:var(--green); border-color:#b8ddb8; }
.btn-success:hover { background:#c8ecd8; }
.btn-info { background:var(--blue-bg); color:var(--blue); border-color:#b8ddf0; }
.btn-info:hover { background:#d0e9f8; }
.btn-archive { background:var(--purple-bg); color:var(--purple); border-color:#d8b8f0; }
.btn-archive:hover { background:#e8d0f8; }
.link-select { padding:5px 9px; border:1px solid var(--border); border-radius:var(--radius-xs); font-size:12px; font-family:inherit; background:var(--bg); color:var(--text); height:30px; }

.pdf-preview-overlay { position:fixed; inset:0; background:rgba(10,30,28,0.80); backdrop-filter:blur(8px); display:none; align-items:center; justify-content:center; z-index:9998; padding:16px; }
.pdf-preview-overlay.show { display:flex; }
.pdf-preview-box { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-lg); width:min(92vw, 960px); height:min(90vh, 860px); display:flex; flex-direction:column; overflow:hidden; animation:modalSlideIn 0.2s ease; }
.pdf-preview-header { padding:12px 18px; background:linear-gradient(135deg, var(--forest) 0%, var(--forest-mid) 100%); display:flex; align-items:center; gap:10px; flex-shrink:0; }
.pdf-preview-title { font-family:'Fraunces',serif; color:var(--gold); font-size:13px; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pdf-preview-iframe { flex:1; border:none; width:100%; display:block; }
.pdf-preview-actions { padding:10px 18px; display:flex; gap:8px; justify-content:flex-end; border-top:1px solid var(--border-light); background:var(--bg); flex-shrink:0; }

/* ============================================================================
   PAGE TRANSPORT (transport.html) — onglets, cartes de convoi/semaine, timeline
   des arrêts, sélecteur de véhicule, sélecteur de plage de dates, archives.
   ============================================================================ */
.nav-bar { display:flex; gap:2px; padding:0 16px 8px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.nav-bar::-webkit-scrollbar { display:none; }
.nb { background:rgba(255,255,255,0.07); color:rgba(255,255,255,0.65); border:none; padding:8px 14px; border-radius:10px 10px 4px 4px; cursor:pointer; font-size:12px; font-weight:600; transition:all 0.2s; white-space:nowrap; font-family:inherit; }
.nb:hover { background:rgba(255,255,255,0.14); color:white; }
.nb.active { background:var(--gold); color:var(--forest); font-weight:700; box-shadow:0 -2px 8px rgba(254,234,161,0.3); }

.tab-pane { display:none; padding:20px; max-width:1000px; margin:0 auto; }
.tab-pane.active { display:block; }

.stitle { font-family:'Fraunces',serif; font-size:16px; font-weight:600; margin-bottom:16px; padding-bottom:10px; border-bottom:2px solid var(--gold); color:var(--forest); }

.btn-edit { background:var(--mint); color:var(--forest-mid); border-color:var(--mint-deep); }

.cols2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.cols3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
.cols4 { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:12px; }
@media (max-width:700px) {
  .cols3, .cols4 { grid-template-columns:1fr 1fr; }
  .tab-pane { padding:12px; }
  .nav-bar { padding:0 10px 6px; }
  .nb { padding:6px 10px; font-size:11px; }
  .semaine-header { padding:12px 14px; gap:8px; }
  .semaine-body { padding:0 12px 12px; }
  .convoi-mini { padding:10px 12px; }
  .time-bar { gap:6px; padding:8px 10px; }
  .card { padding:14px; }
  .stitle { font-size:14px; margin-bottom:12px; }
  .timeline-wrap { padding:12px; }
  .timeline-stop { gap:10px; }
  .tl-marker { width:24px; height:24px; font-size:9px; }
  .tl-line { left:11px; }
  .stat-n { font-size:20px; }
}
@media (max-width:480px) {
  .cols2, .cols3, .cols4 { grid-template-columns:1fr; }
  .nb { padding:5px 8px; font-size:10px; }
  .tab-pane { padding:8px; }
  .card { padding:12px; margin-bottom:10px; }
  .item-row { padding:10px; gap:6px; }
  .btn-sm { padding:4px 8px; font-size:10px; }
  .semaine-header { padding:10px 12px; }
  .tl-name { font-size:12px; }
  .tl-detail { font-size:10px; }
  .timeline-stop { gap:8px; font-size:11px; }
  .stat { padding:8px 10px; }
  .stat-n { font-size:18px; }
  .stat-l { font-size:9px; }
  .psel-grid { grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); padding:6px; }
  .vgrid { grid-template-columns:repeat(auto-fill, minmax(90px, 1fr)); gap:6px; }
  .scroll-up-btn { width:38px; height:38px; font-size:16px; bottom:16px; right:16px; }
}

.stat { background:var(--mint); border-radius:var(--radius-sm); padding:12px 14px; text-align:center; }
.stat-n { font-family:'Fraunces',serif; font-size:26px; font-weight:700; color:var(--forest); line-height:1.1; }
.stat-l { font-size:10px; color:var(--text-light); text-transform:uppercase; letter-spacing:0.5px; margin-top:2px; }

.foyer-badge { font-size:10px; background:var(--mint); color:var(--forest); padding:2px 8px; border-radius:20px; font-weight:600; }
.seats-pill { font-size:10px; font-weight:600; padding:2px 7px; border-radius:10px; background:var(--mint); color:var(--text-mid); margin-left:6px; }
.retour-pill { font-size:10px; font-weight:700; padding:2px 7px; border-radius:10px; background:#FFF3E0; color:var(--copper-deep); margin-left:4px; }

.psel-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(170px, 1fr)); gap:6px; max-height:240px; overflow-y:auto; border:1px solid var(--border-light); border-radius:var(--radius-sm); padding:10px; background:var(--bg); }
.pcheck { display:flex; align-items:center; gap:8px; padding:7px 10px; border-radius:var(--radius-xs); cursor:pointer; border:1px solid transparent; font-size:12px; transition:all 0.15s; background:var(--card); }
.pcheck:hover { border-color:var(--forest-mid); box-shadow:var(--shadow-sm); }
.pcheck.sel { background:var(--mint); border-color:var(--forest-mid); box-shadow:0 0 0 2px rgba(34,109,104,0.12); }

.av { width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; flex-shrink:0; }

.vgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(110px, 1fr)); gap:8px; }
.vcard { border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 8px; text-align:center; cursor:pointer; transition:all 0.15s; background:var(--card); position:relative; }
.vcard:hover { border-color:var(--forest-mid); box-shadow:var(--shadow-sm); }
.vcard.sel { border-color:var(--forest); background:var(--mint); box-shadow:0 0 0 2px rgba(var(--forest-rgb),0.15); }

.item-row { display:flex; align-items:center; justify-content:space-between; padding:12px 14px; border:1px solid var(--border-light); border-radius:var(--radius-sm); margin-bottom:6px; gap:10px; flex-wrap:wrap; transition:border-color 0.15s; }
.item-row:hover { border-color:var(--border); }
.item-row.editing { background:var(--mint); border-color:var(--forest-mid); flex-direction:column; align-items:stretch; }

.timeline-wrap { background:var(--bg); border-radius:var(--radius-sm); padding:16px; margin:10px 0; position:relative; }
.timeline-stop { display:flex; align-items:flex-start; gap:14px; padding:0 0 18px 0; position:relative; font-size:12px; }
.timeline-stop:last-child { padding-bottom:0; }
.timeline-stop:last-child .tl-line { display:none; }
.tl-marker { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; color:white; flex-shrink:0; position:relative; z-index:2; box-shadow:0 2px 6px rgba(0,0,0,0.12); }
.tl-line { position:absolute; left:13px; top:28px; bottom:0; width:2px; background:var(--border); z-index:1; }
.tl-content { flex:1; min-width:0; padding-top:3px; }
.tl-name { font-weight:600; font-size:13px; color:var(--text); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.tl-time { font-size:10px; font-weight:700; color:var(--forest); background:var(--mint-deep); padding:1px 7px; border-radius:8px; }
.tl-detail { color:var(--text-light); font-size:11px; margin-top:2px; }
.tl-address { color:var(--text-light); font-size:10px; }
.phase-pill { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:0.8px; padding:2px 8px; border-radius:4px; display:inline-block; margin-bottom:4px; }

.convoi-card { border:1px solid var(--border-light); border-radius:var(--radius); padding:20px; margin-bottom:14px; background:var(--card); box-shadow:var(--shadow-sm); transition:box-shadow 0.2s; }
.convoi-card:hover { box-shadow:var(--shadow-md); }

.semaine-card { border:1px solid var(--border-light); border-radius:var(--radius); overflow:hidden; margin-bottom:14px; background:var(--card); box-shadow:var(--shadow-sm); }
.semaine-header { padding:14px 16px; display:flex; flex-direction:column; cursor:pointer; gap:0; transition:background 0.15s; }
.semaine-header:hover { background:var(--mint); }
.semaine-body { display:none; padding:0 20px 20px; border-top:1px solid var(--border-light); }
.semaine-body.open { display:block; }
.convoi-mini { border:1px solid var(--border-light); border-radius:var(--radius-sm); padding:14px 16px; margin-bottom:8px; }
.stop-mini { font-size:11px; padding:5px 0; border-bottom:1px solid var(--border-light); display:flex; align-items:flex-start; gap:8px; }
.stop-mini:last-child { border-bottom:none; }

.archive-section { border:1px solid #d8b8f0; border-radius:var(--radius); overflow:hidden; margin-top:16px; background:var(--purple-bg); }
.archive-header { padding:14px 20px; display:flex; align-items:center; justify-content:space-between; cursor:pointer; gap:12px; }
.archive-header:hover { background:#eddcf8; }
.archive-body { display:none; padding:0 14px 14px; }
.archive-body.open { display:block; }

.mer-section-wrap { border:1px solid #7dd3fc; border-radius:var(--radius); overflow:hidden; margin-top:16px; background:#f0f9ff; }
.mer-section-wrap .archive-header { background:#f0f9ff; }
.mer-section-wrap .archive-header:hover { background:#e0f2fe; }
.mer-section-wrap .archive-body { background:#f0f9ff; }

.progress-bar { height:5px; background:var(--border-light); border-radius:3px; overflow:hidden; margin:4px 0; }
.progress-fill { height:100%; border-radius:3px; transition:width 0.3s; }

.info-box { padding:10px 14px; background:var(--blue-bg); border-radius:var(--radius-xs); font-size:12px; color:var(--blue); margin-bottom:12px; border:1px solid #b8ddf0; }
.warn-box { padding:10px 14px; background:#FFF8E8; border-radius:var(--radius-xs); font-size:12px; color:var(--copper-deep); margin-bottom:12px; border:1px solid var(--gold); }
.err-box { padding:10px 14px; background:var(--red-bg); border-radius:var(--radius-xs); font-size:13px; color:var(--red); margin-bottom:12px; font-weight:500; border:1px solid #f5c6c2; }

.time-bar { display:flex; align-items:center; gap:8px; background:var(--bg); border-radius:var(--radius-xs); padding:10px 14px; margin-top:12px; border:1px solid var(--border-light); flex-wrap:wrap; }

.params-box { background:var(--mint); border-radius:var(--radius-sm); padding:16px 18px; margin-top:12px; border:1px solid var(--mint-deep); }
.params-box .params-title { font-size:12px; font-weight:600; color:var(--forest); margin-bottom:12px; }

.section-dep { border-left:4px solid var(--red); }
.section-arr { border-left:4px solid var(--green); }

.scroll-up-btn { position:fixed; bottom:24px; right:24px; width:44px; height:44px; border-radius:50%; background:var(--forest); color:var(--gold); border:2px solid var(--gold); font-size:20px; cursor:pointer; display:none; align-items:center; justify-content:center; z-index:99; box-shadow:var(--shadow-lg); transition:opacity 0.2s; font-family:inherit; }
.scroll-up-btn:hover { opacity:0.85; }

@media print {
  .no-print { display:none !important; }
  body { background:white; }
  .header { position:relative; }
  .card, .convoi-card, .semaine-card { box-shadow:none; break-inside:avoid; }
  .semaine-card { display:none !important; }
  .semaine-card.print-target { display:block !important; }
  .semaine-card.print-target .semaine-body { display:block !important; }
  .print-all .semaine-card { display:block !important; }
  .print-all .semaine-card .semaine-body { display:block !important; }
  .scroll-up-btn { display:none !important; }
  body, div, span, td, th, p, li, label, strong, b, em, i { color:#000 !important; }
  span[style*="color:var(--red)"] { color:#c0392b !important; }
  span[style*="color:var(--green)"] { color:#1b7a4a !important; }
  strong[style*="color:var(--red)"] { color:#c0392b !important; }
  strong[style*="color:var(--green)"] { color:#1b7a4a !important; }
  div[style*="color:var(--red)"] { color:#c0392b !important; }
  div[style*="color:var(--green)"] { color:#1b7a4a !important; }
  .badge { border:1px solid #333 !important; color:#000 !important; }
  .tl-time { background:#ddd !important; color:#000 !important; }
  .tl-detail { color:#222 !important; }
  .tl-address { color:#333 !important; }
  .tl-name { color:#000 !important; }
  .phase-pill { color:#000 !important; background:#ddd !important; }
  .foyer-badge { color:#000 !important; background:#eee !important; }
  .convoi-mini { border-color:#333 !important; }
  .timeline-wrap { background:#fff !important; }
  .seats-pill { color:#000 !important; background:#eee !important; }
  .retour-pill { color:#000 !important; background:#eee !important; }
  .stat { background:#f0f0f0 !important; }
  .stat-n, .stat-l { color:#000 !important; }
  div[style*="background:var(--red)"] { background:#c0392b !important; color:#fff !important; }
}

.drp-trigger{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:8px;background:var(--card);font-size:13px;font-family:inherit;cursor:pointer;text-align:left;color:var(--text);display:flex;align-items:center;gap:8px}
.drp-trigger:hover{border-color:var(--forest-light)}
.drp-trigger.empty{color:var(--text-light)}
.drp-popup{display:none;position:fixed;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 16px 48px rgba(0,0,0,0.22);z-index:10030;padding:16px;width:300px}
.drp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.drp-nav-btn{background:var(--bg);border:none;width:28px;height:28px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--forest);display:flex;align-items:center;justify-content:center}
.drp-nav-btn:hover{background:var(--forest);color:#fff}
.drp-month-label{font-weight:700;font-size:13.5px;color:var(--text);text-transform:capitalize}
.drp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.drp-dow{font-size:10px;font-weight:700;color:var(--text-light);text-align:center;padding:4px 0;text-transform:uppercase}
.drp-day{position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12.5px;cursor:pointer;border-radius:7px;color:var(--text)}
.drp-day:hover:not(.drp-disabled){background:var(--mint)}
.drp-day.drp-disabled{color:var(--border);cursor:default}
.drp-day.drp-empty{cursor:default}
.drp-day.drp-in-range{background:var(--mint-deep);border-radius:0}
.drp-day.drp-range-start{background:var(--forest);color:#fff;border-radius:7px 0 0 7px}
.drp-day.drp-range-end{background:var(--forest);color:#fff;border-radius:0 7px 7px 0}
.drp-day.drp-range-single{background:var(--forest);color:#fff;border-radius:7px}
.drp-footer{display:flex;gap:8px;margin-top:12px}
.drp-footer button{flex:1;padding:8px;border-radius:8px;border:none;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer}
.drp-btn-clear{background:var(--bg);color:var(--text-mid)}
.drp-btn-ok{background:var(--forest);color:#fff}

/* ============================================================================
   PAGE INDEX (index.html) — connexion + sélecteur d'application. Fond sombre
   propre à cette page (scopé via body.login-body pour ne jamais entrer en
   conflit avec le fond clair partagé par les 6 autres pages) — mais les
   couleurs d'accent (--forest/--forest-mid/--gold-deep) sont les mêmes
   variables partagées, donc réagissent elles aussi au changement de thème.
   ============================================================================ */
body.login-body {
  min-height:100vh;
  background-color: var(--login-ink, #1a3432) !important;
  color: var(--login-cream, #F0EDE6);
  font-family:'DM Sans',system-ui,sans-serif;
  display:flex; align-items:center; justify-content:center;
  padding:16px;
  background-image:
    radial-gradient(ellipse 80% 60% at 20% 0%, rgba(var(--forest-rgb, 24,83,79),0.6) 0%, transparent 70%),
    radial-gradient(ellipse 60% 50% at 80% 100%, rgba(var(--forest-rgb, 24,83,79),0.25) 0%, transparent 60%) !important;
  background-position: 0 0 !important;
  background-size: auto !important;
  background-repeat: no-repeat !important;
  background-attachment: fixed !important;
}
.login-card{
  width:100%;max-width:380px;
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.09);
  border-radius:20px;padding:40px 36px;
  backdrop-filter:blur(12px);
  box-shadow:var(--login-shadow);
}
.logo-mark{
  width:52px;height:52px;border-radius:14px;
  background:linear-gradient(135deg,var(--forest),var(--forest-mid));
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 20px;
  box-shadow:0 8px 24px rgba(var(--forest-rgb),0.5);
  border:1px solid rgba(var(--forest-rgb),0.3);
}
.logo-mark span{
  font-family:'Fraunces',serif;font-style:italic;font-size:26px;
  font-weight:900;color:var(--gold-deep);line-height:1;
}
.login-title{
  font-family:'Fraunces',serif;font-style:italic;
  font-size:26px;font-weight:900;color:var(--login-cream);
  text-align:center;letter-spacing:-0.5px;margin-bottom:4px;
}
.login-sub{
  font-size:13px;color:var(--login-light);text-align:center;margin-bottom:28px;
}
.field{
  width:100%;padding:12px 16px;
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.12);
  border-radius:10px;font-size:14px;font-family:inherit;
  color:var(--login-cream);outline:none;margin-bottom:10px;
  transition:border-color .2s,background .2s;
}
.field::placeholder{color:rgba(255,255,255,0.25)}
.field:focus{border-color:rgba(var(--forest-rgb),0.5);background:rgba(255,255,255,0.09)}
.remember-row{
  display:flex;align-items:center;gap:8px;
  font-size:12px;color:var(--login-light);margin-bottom:16px;cursor:pointer;
}
.remember-row input{accent-color:var(--gold-deep);width:14px;height:14px;cursor:pointer}
.login-btn{
  width:100%;padding:13px;border:none;border-radius:10px;
  background:linear-gradient(135deg,var(--forest),var(--forest-mid));
  color:white;font-size:14px;font-weight:700;font-family:inherit;
  cursor:pointer;transition:all .2s;
  box-shadow:0 4px 16px rgba(var(--forest-rgb),0.4);
}
.login-btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(var(--forest-rgb),0.5)}
.login-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.login-error{font-size:12px;color:#f87171;margin-bottom:10px;text-align:center;display:none}

.selector{width:100%;max-width:820px;display:none}
.selector-top{text-align:center;margin-bottom:12px}
.sel-logo{
  width:88px;height:88px;border-radius:20px;
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 14px;
  box-shadow:0 8px 32px rgba(var(--forest-rgb),0.5);
  overflow:hidden;
}
.sel-logo img{width:100%;height:100%;object-fit:cover}
.sel-title{
  font-family:'Fraunces',serif;font-style:italic;font-weight:900;
  font-size:34px;color:var(--login-cream);letter-spacing:-1px;margin-bottom:6px;
}
.sel-user{font-size:12px;color:var(--login-light);letter-spacing:.5px}
.apps-grid{
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:14px;
}
.app-card{
  text-decoration:none;border-radius:16px;padding:26px 22px;
  display:flex;flex-direction:column;align-items:center;gap:0;text-align:center;
  position:relative;overflow:hidden;transition:all .2s;
  border:1px solid rgba(255,255,255,0.12);
  height:188px;justify-content:center;
}
.app-card::before{
  content:'';position:absolute;inset:0;
  background:rgba(255,255,255,0);transition:background .2s;
}
.app-card:hover{transform:translateY(-3px);box-shadow:0 16px 48px rgba(0,0,0,0.4)}
.app-card:hover::before{background:rgba(255,255,255,0.06)}
/* Quand le nombre de cartes est impair, la dernière prend toute la largeur au lieu de rester seule à moitié */
.apps-grid .app-card:last-child:nth-child(odd){
  grid-column:1/-1;flex-direction:row;justify-content:flex-start;text-align:left;gap:18px;padding:20px 28px;
}
.apps-grid .app-card:last-child:nth-child(odd) .app-initial{position:static;margin-left:auto;opacity:.2;flex-shrink:0}
/* Couleurs par carte */
.card-transport{background:linear-gradient(145deg,var(--app-c1a),var(--app-c1b))}
.card-docs{background:linear-gradient(145deg,var(--app-c2a),var(--app-c2b))}
.card-suivi{background:linear-gradient(145deg,var(--app-c3a),var(--app-c3b))}
.card-anim{background:linear-gradient(145deg,var(--app-c4a),var(--app-c4b))}
.card-mail{background:linear-gradient(145deg,var(--app-c5a),var(--app-c5b))}
.card-compta{background:linear-gradient(145deg,var(--app-c6a),var(--app-c6b))}
.app-initial{
  font-family:'Fraunces',serif;font-style:italic;font-weight:900;
  font-size:46px;line-height:1;margin-bottom:12px;opacity:.15;
  position:absolute;bottom:-8px;right:12px;
  transition:opacity .2s,transform .2s;
  pointer-events:none;
}
.app-card:hover .app-initial{opacity:.4;transform:scale(1.05)}
.app-icon-wrap{
  width:46px;height:46px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  font-size:23px;margin-bottom:12px;
  background:rgba(255,255,255,0.12);
}
.app-name{font-family:'Fraunces',serif;font-size:19px;font-weight:700;color:#fff;margin-bottom:4px;position:relative;z-index:1}
.app-desc{font-size:12.5px;color:rgba(255,255,255,0.65);position:relative;z-index:1;line-height:1.35}
.app-arrow{
  position:absolute;top:16px;right:16px;
  font-size:14px;color:rgba(255,255,255,0.2);
  transition:color .2s,transform .2s;
}
.app-card:hover .app-arrow{color:rgba(255,255,255,0.5);transform:translate(2px,-2px)}
.logout-btn{
  width:100%;padding:10px;background:transparent;
  border:1px solid rgba(255,255,255,0.08);border-radius:10px;
  color:rgba(255,255,255,0.3);font-size:12px;font-family:inherit;
  cursor:pointer;transition:all .2s;
}
.logout-btn:hover{border-color:rgba(200,75,75,0.4);color:#f87171;background:rgba(200,75,75,0.05)}

@media(max-width:700px){
  .apps-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
  .apps-grid{grid-template-columns:1fr}
  .apps-grid .app-card:last-child:nth-child(odd){flex-direction:column;text-align:center;gap:0;padding:36px 24px}
  .apps-grid .app-card:last-child:nth-child(odd) .app-initial{position:absolute;bottom:-8px;right:12px;margin-left:0;opacity:.15}
}

/* ── Sélecteur de thème (couleurs de l'application, pas de cette page de connexion) ── */
.settings-btn{
  position:fixed;top:18px;right:18px;z-index:500;
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.12);
  color:var(--login-light);font-size:18px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.settings-btn:hover{background:rgba(255,255,255,0.14);color:var(--login-cream);transform:rotate(30deg)}
.settings-overlay{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);backdrop-filter:blur(4px);
  z-index:600;align-items:center;justify-content:center;padding:20px;
}
.settings-overlay.open{display:flex}
.settings-box{
  width:100%;max-width:420px;background:var(--login-ink);border:1px solid rgba(255,255,255,0.1);
  border-radius:18px;padding:26px 24px;box-shadow:var(--login-shadow);
}
.settings-title{
  font-family:'Fraunces',serif;font-style:italic;font-weight:900;font-size:20px;
  color:var(--login-cream);margin-bottom:4px;
}
.settings-sub{font-size:12px;color:var(--login-light);margin-bottom:20px}
.theme-option{
  display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:12px;
  border:1.5px solid rgba(255,255,255,0.1);cursor:pointer;margin-bottom:10px;
  transition:all .15s;background:rgba(255,255,255,0.03);
}
.theme-option:hover{border-color:rgba(255,255,255,0.25);background:rgba(255,255,255,0.06)}
.theme-option.active{border-color:var(--gold-deep);background:rgba(var(--forest-rgb),0.1)}
.theme-swatches{display:flex;flex-shrink:0}
.theme-swatches span{width:20px;height:20px;border-radius:50%;border:2px solid var(--login-ink);margin-left:-8px}
.theme-swatches span:first-child{margin-left:0}
.theme-option-text{flex:1}
.theme-option-name{font-size:13.5px;font-weight:700;color:var(--login-cream)}
.theme-option-desc{font-size:11px;color:var(--login-light);margin-top:1px}
.theme-check{font-size:16px;color:var(--gold-deep);opacity:0;transition:opacity .15s}
.theme-option.active .theme-check{opacity:1}
.settings-close{
  width:100%;padding:10px;margin-top:6px;background:transparent;
  border:1px solid rgba(255,255,255,0.1);border-radius:10px;
  color:var(--login-light);font-size:12.5px;font-family:inherit;cursor:pointer;transition:all .2s;
}
.settings-close:hover{border-color:rgba(255,255,255,0.25);color:var(--login-cream)}

/* ============================================================================
   Assistant IA (panneau flottant)
   ============================================================================ */
.ai-root{position:fixed;right:20px;bottom:20px;z-index:900}
.ai-fab{position:relative;z-index:2}
.ai-fab[hidden]{display:none}
.ai-panel{
  position:fixed;right:20px;bottom:88px;width:min(380px,calc(100vw - 40px));
  max-height:min(560px,calc(100vh - 140px));display:flex;flex-direction:column;
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);overflow:hidden;z-index:1
}
.ai-panel[hidden]{display:none}
.ai-panel-header{
  display:flex;align-items:center;justify-content:space-between;padding:12px 14px;
  background:linear-gradient(135deg,var(--forest-light),var(--forest));color:#fff
}
.ai-panel-title{font-family:'Fraunces',serif;font-weight:700;font-size:14px}
.ai-panel-header-actions{display:flex;gap:4px;align-items:center}
.ai-close,.ai-report-btn{color:#fff}
/* Thème nuit : le bouton rapport en blanc se distinguait mal du dégradé d'en-tête —
   rose de la palette nuit (--gold-deep y est déjà un rose, pas un doré). */
:root[data-theme="nuit"] .ai-report-btn{color:var(--gold-deep)}
.ai-messages{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px}
.ai-empty{font-size:12.5px;color:var(--text-light);line-height:1.5}
.ai-bubble{max-width:88%;padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;line-height:1.45;white-space:pre-wrap}
.ai-bubble-user{align-self:flex-end;background:var(--mint);color:var(--text)}
.ai-bubble-assistant{align-self:flex-start;background:var(--card2);color:var(--text);border:1px solid var(--border-light)}
.ai-md-list{margin:4px 0;padding-left:18px}
.ai-md-list li{margin-bottom:2px}
.ai-typing{display:flex;gap:4px;align-items:center;padding:10px 12px}
.ai-typing span{width:6px;height:6px;border-radius:50%;background:var(--text-light);animation:ai-bounce 1s infinite ease-in-out}
.ai-typing span:nth-child(2){animation-delay:.15s}
.ai-typing span:nth-child(3){animation-delay:.3s}
@keyframes ai-bounce{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ai-input-row{display:flex;gap:8px;padding:10px;border-top:1px solid var(--border-light)}
.ai-input-row .ai-input{flex:1}
.ai-proposal{align-self:stretch;background:var(--gold-pale);border:1px solid var(--gold-deep);border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px}
.ai-proposal-summary{color:var(--text);line-height:1.45}
.ai-proposal-details{margin-top:6px;padding-top:6px;border-top:1px dashed rgba(var(--forest-rgb),.2);font-size:11.5px;color:var(--text-mid)}
.ai-proposal-details div{margin-bottom:2px}
.ai-proposal-actions{display:flex;gap:8px;margin-top:10px}
.ai-proposal-actions button{flex:1;padding:7px 10px;font-size:12.5px}
.ai-proposal-superseded,.ai-proposal-done{margin-top:8px;font-size:11.5px;color:var(--text-light);font-style:italic}
.ai-report-card{align-self:stretch;background:var(--card2);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:12px;font-size:12.5px}
.ai-report-title{font-family:'Fraunces',serif;font-weight:700;font-size:14px;margin-bottom:10px}
.ai-report-section{margin-bottom:12px}
.ai-report-section:last-child{margin-bottom:0}
.ai-report-section-title{font-weight:600;font-size:12.5px;color:var(--forest);margin-bottom:6px}
.ai-report-list{list-style:none;display:flex;flex-direction:column;gap:8px}
.ai-report-msg,.ai-report-anomaly{background:var(--card);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:8px 10px}
.ai-report-msg-top,.ai-report-anomaly-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:600}
.ai-report-msg-subject{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-report-badge{flex-shrink:0;font-size:10.5px;font-weight:600;background:var(--gold-pale);color:var(--gold-deep);padding:2px 7px;border-radius:999px}
.ai-report-msg-from{font-size:11px;color:var(--text-light);margin-top:2px}
.ai-report-msg-summary{margin-top:4px;color:var(--text-mid)}
.ai-report-suggestions{margin-top:6px;font-size:11.5px;color:var(--text-mid)}
.ai-report-suggestions-note{font-style:italic;color:var(--text-light)}
.ai-report-goto-btn{margin-top:8px}
.ai-nav-card{align-self:flex-start}
.ai-nav-link{display:inline-block;text-decoration:none}
.ai-mic-btn.listening{animation:pulseSuivi .8s infinite;color:var(--red)}
@media (max-width:480px){
  .ai-panel{right:12px;left:12px;width:auto;bottom:80px}
  .ai-root{right:12px;bottom:12px}
}
.settings-note{font-size:11px;color:var(--login-light);margin-top:12px;text-align:center;line-height:1.5}