/* =========================================================================
   mails.css — onglet « Mails » de la section Campagne (17/08/2026).

   Cette feuille est servie à tous (comme les autres CSS) : elle ne nomme
   AUCUN module à privilège ni aucune route d'API — uniquement ses propres
   classes ml-*. Le module qui l'utilise, lui, n'est servi qu'aux sessions
   autorisées.

   Conventions liquid-glass du dépôt (.glass, tokens --txt/--muted/--dim/
   --line/--accent/--ok/--danger/--lum/--gold/--notif). Aucune animation
   d'ambiance : un fil de conversation se lit, il ne se contemple pas — la
   seule exception est le halo « non lu », qui est un SIGNAL et qui réutilise
   les classes partagées .lum-glow / .lum-float d'app.css §16b.

   19/08/2026 — la liste montre une ligne par SOCIÉTÉ (et non par message) :
   colonne du kanban, favori, note de contact et compteur de non-lus, plus un
   filtre par colonnes. Et l'échange lui-même vit dans UN cadre défilant.
   ========================================================================= */

.ml-root{display:flex;flex-direction:column;gap:14px}
.ml-bloc{padding:16px 18px}

/* ---------- Bandeau d'état de la relève ------------------------------------ */
.ml-etat{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ml-etat .ic{width:20px;height:20px;flex:none}
.ml-etat-txt{flex:1;min-width:220px}
.ml-etat-titre{margin:0;font-size:14px;font-weight:700}
.ml-etat-detail{margin:3px 0 0;font-size:12.5px;line-height:1.5}
/* Vert = la boîte est branchée et la dernière relève a réussi ; rouge = il
   manque un réglage ou la dernière relève a échoué. Le texte dit la même
   chose : la couleur ne porte jamais seule l'information. */
.ml-etat-ko{border-left:3px solid color-mix(in srgb, var(--danger) 65%, transparent)}
.ml-etat-ko .ic{color:var(--danger)}
/* État NORMAL (22/08/2026) : plus de case — une ligne sobre, bouton +
   dernière relève. La case ne subsiste que pour dire un PROBLÈME (ml-etat-ko
   ci-dessus : lecture non branchée, relève en échec). */
.ml-releve{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ml-releve-date{font-size:12.5px}

/* ---------- Filtre par colonnes du kanban ----------------------------------- */
/* Cases cumulables, même grammaire que les .fchip du reste de l'application
   (définies par liste.css, du bundle commun). Le compteur est une donnée
   réelle renvoyée par le serveur — jamais un ornement. */
.ml-colonnes{margin:0}
.ml-col-n{margin-left:6px;color:var(--dim);font-size:11px;font-weight:800;
  font-variant-numeric:tabular-nums}
.ml-col-chip.on .ml-col-n,.ml-col-tout.on .ml-col-n{color:var(--txt)}

/* ---------- Liste des conversations (une ligne par société) ----------------- */
.ml-liste{display:flex;flex-direction:column;gap:8px}
.ml-conv{display:flex;flex-direction:column;gap:5px;padding:12px 14px;
  cursor:pointer;transition:background .16s,transform .16s}
.ml-conv:hover{background:rgba(255,255,255,.06);transform:translateY(-1px)}
.ml-conv-tete{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}
/* Le nom est un VRAI bouton : la carte entière est cliquable, mais il faut
   une cible atteignable au clavier — et une seule, pas une par ligne de texte. */
.ml-conv-ouvrir{display:flex;align-items:center;gap:7px;min-width:0;padding:0;
  border:none;background:none;font:inherit;color:var(--txt);cursor:pointer}
.ml-conv-ouvrir:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px;
  border-radius:6px}
.ml-conv-nom{font-size:14px;font-weight:720;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.ml-conv-sujet{margin:0;font-size:13px}
.ml-conv-extrait{margin:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.ml-conv-date{font-size:12px;flex:none}

/* ---------- BLOC D'ACTIONS de la ligne (20/08/2026, point 1) ----------------
   « Les boutons favoris ne doivent pas être à l'extrême gauche mais plutôt
    milieu-droite, comme dans le portefeuille, et les autres boutons aussi. »

   L'étoile était en tête de ligne depuis le 19/08 — c'était le point le plus
   lisible, mais aussi celui où l'œil cherche le NOM de la société. Elle rejoint
   donc le groupe d'actions, à droite, exactement comme `.lactions` du
   Portefeuille : même ordre (étoile · e-mail · LinkedIn · fiche), même écart de
   6 px, même comportement au survol.

   Les boutons sont invisibles au repos et apparaissent au survol / au focus —
   règle héritée du Portefeuille, et pour la même raison : quatre boutons ronds
   sur cinquante lignes font une colonne de bruit. DEUX exceptions permanentes,
   parce qu'elles portent une information et pas seulement une action :
   l'étoile allumée (la société est suivie) et le vert d'une coordonnée connue.
   `visibility` et non `display` : la place reste réservée, les lignes ne
   sautent pas au passage de la souris. */
/* Bloc d'actions de la ligne — DEUX boutons depuis le 20/08/2026 (point 6 :
   e-mail et LinkedIn retirés). `width` explicite et non « ce que le contenu
   donne » : c'est la garantie demandée — « fais attention à ce que les boutons
   soient toujours au même endroit ». Deux boutons de 22 px et un intervalle de
   6 px font 50 px, sur toutes les lignes, quel que soit l'état des boutons.
   La règle `.coord-oui` a disparu avec les boutons qu'elle révélait : seul le
   favori ACTIF reste visible hors survol, parce qu'il porte une information
   sur la société et pas une action disponible. */
/* 70px EXACTS = 32 + 6 + 32 (étoile + écart + fiche). À 50px, le second
   bouton était compressé en OVALE de 17px (retour Sylvain, SCRAPER FA 7) —
   la largeur reste FIXE pour l'alignement des lignes, mais elle doit être
   celle de son contenu. `flex:none` sur les boutons : un cercle ne se
   négocie pas avec le flex. */
.ml-conv-actions{display:flex;gap:6px;flex:none;margin-left:2px;width:70px}
.ml-conv-actions .btn{visibility:hidden;flex:none}
.ml-conv:hover .ml-conv-actions .btn,
.ml-conv:focus-within .ml-conv-actions .btn,
.ml-conv-actions .btn.on{visibility:visible}
/* Compat : la classe historique de l'étoile reste posée par le script
   (ancre du harnais de tests). Elle n'habille plus rien. */
.ml-conv-star{flex:none}

/* ---------- Colonne du kanban, modifiable sur place -------------------------
   C'est un `<select>` déguisé en pastille : on lit la colonne d'un coup d'œil
   ET on déplace la société sans quitter l'écran. Il BRILLE — halo d'accent
   permanent, sur le modèle de l'étoile dorée des favoris : c'est l'information
   que Sylvain cherche en premier dans cette liste, elle ne doit pas se
   confondre avec le gris des métadonnées.

   `appearance:none` retire la flèche native (elle doublerait la pastille) ;
   le fond des `option` est forcé, sinon le menu déroulant hérite d'un fond
   transparent illisible sur les navigateurs qui le peignent eux-mêmes. */
.ml-conv-stage{flex:none;max-width:200px;padding:3px 11px;border-radius:999px;
  appearance:none;-webkit-appearance:none;
  border:1px solid color-mix(in srgb, var(--accent) 55%, transparent);
  background:color-mix(in srgb, var(--accent) 20%, transparent);
  color:var(--txt);font:inherit;font-size:11px;font-weight:750;
  white-space:nowrap;cursor:pointer;text-overflow:ellipsis;
  box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent),
    0 0 12px color-mix(in srgb, var(--accent) 30%, transparent);
  transition:box-shadow .16s ease,background .16s ease}
.ml-conv-stage:hover{background:color-mix(in srgb, var(--accent) 34%, transparent);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent),
    0 0 18px color-mix(in srgb, var(--accent) 45%, transparent)}
.ml-conv-stage:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
.ml-conv-stage:disabled{cursor:default;opacity:.55;box-shadow:none}
.ml-conv-stage option{background:var(--panel-solid,#12141a);color:var(--txt)}
/* Hors kanban : pas de halo — il n'y a rien à signaler, juste une place vide
   qu'on peut remplir. */
.ml-conv-stage-aucune{color:var(--dim);border:1px dashed var(--line);
  background:none;box-shadow:none;font-weight:700}

/* Non lu : la ligne S'ALLUME, comme la liste, le kanban et l'agenda — halo
   .lum-glow + point lumineux + flottement, posés par le script (app.css §16b).
   Ici, seuls le fond de la carte et le compteur sont spécifiques. */
.ml-conv-nonlu{background:color-mix(in srgb, var(--lum) 7%, transparent);
  position:relative;z-index:1}
.ml-conv-nonlu:hover{background:color-mix(in srgb, var(--lum) 13%, transparent)}
.ml-conv-nonlu .ml-conv-nom{font-weight:820}
/* Apparence commune à toutes les pastilles de compteur : `.nbadge`
   (app.css §16c, 20/08/2026). Rien de spécifique à cet écran ici. */

/* ---------- SANS RÉPONSE (20/08/2026, point 13) -----------------------------
   « Dans les mails, je veux que ceux pas répondus on voie directement bien. »

   Deux marques, et pas une seule : une PUCE dans la ligne (elle nomme le fait
   et donne le nombre de jours) et un LISERÉ gauche sur la carte (il se voit en
   parcourant la liste des yeux, sans lire). Le liseré est ambre `--task` :
   c'est la teinte de « il y a quelque chose à faire », déjà utilisée par les
   relances — un fil sans réponse depuis dix jours appelle exactement ce
   geste-là.

   Il ne se confond pas avec la lumière du non-lu : celle-ci entoure toute la
   carte (halo blanc chaud), le liseré n'est qu'un bord. Les deux peuvent
   coexister sur la même ligne, et c'est correct : « j'ai écrit, il a répondu,
   je n'ai pas lu » est un état réel. */
.ml-conv-attente{border-left:3px solid
  color-mix(in srgb, var(--task) 62%, transparent)}
/* `align-self:flex-start` : dans l'en-tête du fil, `.ml-fil-head` est une
   colonne flex — sans cette ligne, la puce s'étirerait sur toute la largeur et
   se lirait comme un bandeau d'alerte, ce qu'elle n'est pas. Dans la LIGNE de
   conversation, l'en-tête est une rangée et la règle n'a aucun effet. */
.ml-attente{flex:none;align-self:flex-start;display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;font-size:11px;font-weight:700;
  background:color-mix(in srgb, var(--task) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--task) 40%, transparent);
  color:color-mix(in srgb, var(--task) 45%, var(--txt))}
.ml-attente .ic{width:12px;height:12px;flex:none}
/* Au-delà du seuil (7 jours) la puce s'affirme : même teinte, plus dense —
   passer à une AUTRE couleur ferait croire à un autre état. */
.ml-attente-vieille{background:color-mix(in srgb, var(--task) 26%, transparent);
  border-color:color-mix(in srgb, var(--task) 70%, transparent);
  color:var(--task);
  box-shadow:0 0 10px color-mix(in srgb, var(--task) 28%, transparent)}
/* Séparateur entre le filtre d'état et les filtres de colonnes. */
.ml-col-sep{width:1px;align-self:stretch;margin:2px 4px;
  background:color-mix(in srgb, var(--line) 90%, transparent)}
.ml-col-etat.on{border-color:color-mix(in srgb, var(--task) 65%, transparent);
  background:color-mix(in srgb, var(--task) 20%, transparent)}

/* ---------- Note de contact (liste ET conversation) ------------------------- */
.ml-conv-note{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;
  margin-top:2px;padding-top:7px;border-top:1px solid
  color-mix(in srgb, var(--line) 60%, transparent)}
/* Titre — CONVERSATION SEULEMENT (point 6 : « on ne la voit pas assez »).
   `width:100%` : il occupe sa propre ligne du flex, sinon il partagerait la
   première avec le bouton et le texte, et ne se lirait pas comme un titre. */
.ml-conv-note-titre{width:100%;margin:0 0 2px;display:flex;align-items:center;
  gap:6px;font-size:11.5px;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:var(--accent-ink)}
.ml-conv-note-titre .ic{width:13px;height:13px;flex:none}
.ml-conv-note-txt{flex:1;min-width:160px;margin:0;font-size:12.5px;line-height:1.55}
/* Le bouton ouvre la ligne (20/08/2026) : c'est la place qu'occupait l'icône
   décorative, et c'est là que la main va. `align-self` évite qu'il s'étire sur
   la hauteur d'une note de plusieurs lignes. */
.ml-conv-note-btn{flex:none;align-self:flex-start}
.ml-conv-note-input{width:100%;min-height:64px;resize:vertical;font:inherit;
  font-size:12.5px;line-height:1.55}
.ml-conv-note-bar{display:flex;gap:8px;justify-content:flex-end;width:100%}

.ml-orphelins{display:flex;align-items:center;gap:10px;font-size:12.5px;
  color:var(--muted)}
.ml-orphelins .ic{width:16px;height:16px;flex:none;color:var(--dim)}
.ml-compte{margin:2px 0 0;font-size:12px}

/* ---------- Vide / erreur --------------------------------------------------- */
.ml-vide{display:flex;align-items:center;gap:12px;padding:22px;
  color:var(--muted);font-size:13.5px;flex-wrap:wrap}
.ml-vide .ic{width:18px;height:18px;flex:none;color:var(--dim)}
.ml-err{margin:8px 0 0;font-size:12.5px;color:var(--danger);line-height:1.5}
.ml-err.hidden{display:none}

/* ---------- Fil d'une société ----------------------------------------------- */
.ml-fil-head{display:flex;flex-direction:column;gap:6px}
.ml-fil-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0}
.ml-fil-titre{margin:0;font-size:18px;font-weight:760;letter-spacing:-.01em}
.ml-fil-sous{margin:0;font-size:12.5px}
/* ---------- « Répondra depuis » (20/08/2026, point 6) -----------------------
   L'adresse d'envoi, résolue PAR LE SERVEUR et affichée AVANT d'écrire. Cadre
   léger et non simple ligne de texte : c'est un fait de configuration au milieu
   de faits métier, il doit se distinguer du sous-titre juste au-dessus.
   L'état KO (variables SMTP manquantes) est en rouge : à ce moment-là, écrire
   une réponse ne servirait à rien, et l'apprendre au clic « Envoyer » est trop
   tard. */
.ml-fil-exp{margin:0;display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  align-self:flex-start;padding:4px 11px;border-radius:999px;
  font-size:12px;line-height:1.5;
  border:1px solid color-mix(in srgb, var(--line) 90%, transparent);
  background:color-mix(in srgb, #fff 4%, transparent)}
.ml-fil-exp .ic{width:13px;height:13px;flex:none;color:var(--accent-ink)}
.ml-fil-exp-k{color:var(--muted)}
.ml-fil-exp-v{font-weight:750;color:var(--txt)}
.ml-fil-exp-lib{font-size:11.5px}
.ml-fil-exp-ko{border-color:color-mix(in srgb, var(--danger) 55%, transparent);
  background:color-mix(in srgb, var(--danger) 12%, transparent)}
.ml-fil-exp-ko .ic{color:var(--danger)}
.ml-fil-exp-err{color:var(--danger);font-weight:700}
/* UN SEUL CADRE autour de l'échange (19/08/2026) — « juste les messages
   envoyés et les réponses reçues dans un encadré ensemble scrollable, pas de
   truc flou derrière ». Donc : un filet, un rayon, et un défilement propre.
   AUCUN `backdrop-filter` et aucun fond opaque ici : ce cadre délimite le fil,
   il ne se superpose pas au décor. La hauteur est bornée en dvh (et non vh) —
   sur mobile, `vh` compte la barre d'adresse rétractable et le cadre
   déborderait de l'écran. `overscroll-behavior` empêche le défilement de
   repartir dans la page une fois le fil en butée. */
/* LE CADRE DU FIL — 20/08/2026, point 2 de Sylvain : « le tour de la
   conversation avec les mails reçus et ce qu'on a envoyé, je veux que
   l'encadré soit plus fin et plus lumineux ».

   Il avait été ÉPAISSI la veille (1 px → 3 px sur une teinte dense) parce
   qu'un filet de 1 px sur `--line` se perdait derrière les bulles, qui portent
   elles-mêmes un bord de 3 px. Le diagnostic était bon, le remède non : on a
   répondu à un problème de CONTRASTE par de l'ÉPAISSEUR, et un trait de 3 px
   autour d'une zone défilante enferme la lecture au lieu de la délimiter.

   Ce qui change ici : le trait redevient fin (1,5 px) mais devient LUMINEUX —
   il tire sa couleur de l'accent et non de `--line`, et il est doublé d'un
   halo extérieur très doux plus d'un liseré intérieur clair. Le cadre gagne
   donc en présence ce qu'il perd en matière : à surface d'encre égale il se
   voit mieux, parce que la lumière porte plus loin qu'un trait terne. Le halo
   est en `box-shadow`, jamais en `filter` : aucun flou n'est appliqué au
   contenu, le texte des messages reste net. */
.ml-fil{display:flex;flex-direction:column;gap:10px;
  padding:16px;border-radius:18px;
  border:1.5px solid color-mix(in srgb, var(--accent) 52%, transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, #fff 14%, transparent),
             0 0 0 1px color-mix(in srgb, var(--accent) 16%, transparent),
             0 0 18px color-mix(in srgb, var(--accent) 22%, transparent);
  max-height:min(56dvh,620px);overflow-y:auto;overscroll-behavior:contain}
.ml-fil:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
.ml-bulle{padding:14px 16px;max-width:min(760px,92%)}
/* Reçu à gauche, envoyé à droite : la géographie dit le sens avant la
   couleur, et survit à un daltonisme comme à une capture en noir et blanc. */
.ml-bulle-recu{align-self:flex-start;
  border-left:3px solid color-mix(in srgb, var(--accent) 60%, transparent)}
.ml-bulle-envoye{align-self:flex-end;
  border-right:3px solid color-mix(in srgb, var(--ok) 55%, transparent)}
.ml-bulle-head{display:flex;align-items:baseline;gap:10px;
  justify-content:space-between}
.ml-bulle-qui{font-size:12.5px;font-weight:700}
.ml-bulle-date{font-size:11.5px}
.ml-bulle-sujet{margin:6px 0 4px;font-size:13.5px;font-weight:640}
/* `pre` : le corps arrive en texte, ses retours à la ligne sont porteurs de
   sens (signature, citation). `white-space:pre-wrap` les garde sans imposer
   de défilement horizontal. */
.ml-bulle-corps{margin:0;font:inherit;font-size:13px;line-height:1.6;
  white-space:pre-wrap;word-break:break-word;color:var(--muted)}
/* Citation repliée (22/08/2026) : le message d'origine recopié par la
   messagerie du correspondant se plie derrière un bouton — liseré à gauche
   pour dire « ceci est cité », teinte en retrait pour ne pas concurrencer le
   message lui-même. */
.ml-citation-btn{margin-top:8px;padding:5px 12px;font-size:11.5px;
  font-weight:640;color:var(--muted);gap:6px}
.ml-citation-btn:hover{color:var(--txt)}
.ml-citation-btn .ic{width:12px;height:12px;flex:none;
  transition:transform .18s ease}
.ml-citation-btn.on .ic{transform:rotate(180deg)}
.ml-citation{margin-top:8px;padding-left:10px;
  border-left:2px solid color-mix(in srgb, var(--line) 90%, transparent);
  color:color-mix(in srgb, var(--muted) 72%, transparent)}

/* ---------- Pièces jointes (20/08/2026) --------------------------------------
   Deux familles VOISINES mais distinctes, et elles ne doivent pas se
   confondre : `ml-piece` = une pièce D'UN MESSAGE (reçue ou déjà envoyée,
   téléchargeable) ; `ml-jointe` = un fichier EN ATTENTE d'envoi, encore
   retirable. La seconde porte donc une croix, la première jamais. */
.ml-pieces{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;
  padding-top:9px;border-top:1px solid
  color-mix(in srgb, var(--line) 55%, transparent)}
.ml-piece{display:inline-flex;align-items:center;gap:6px;max-width:100%;
  padding:4px 10px;border-radius:999px;font-size:12px;text-decoration:none;
  color:var(--txt);border:1px solid var(--line);
  background:rgba(255,255,255,.05);transition:border-color .16s,background .16s}
.ml-piece:hover{border-color:var(--accent-ink);
  background:color-mix(in srgb, var(--accent) 14%, transparent)}
.ml-piece:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
.ml-piece .ic{width:13px;height:13px;flex:none;color:var(--dim)}
.ml-piece-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  max-width:230px}
.ml-piece-poids{font-size:11px;flex:none}
/* Pièce vue mais NON conservée : visible, inerte, et qui DIT pourquoi (title).
   La retirer de l'écran ferait croire que le message n'en portait pas. */
.ml-piece-ko{cursor:help;border-style:dashed;color:var(--muted)}
.ml-piece-ko .ic{color:var(--danger)}
.ml-piece-ko .ml-piece-nom{text-decoration:line-through}

/* Fichiers en attente d'envoi */
.ml-joindre-wrap{display:contents}
.ml-joindre-input{display:none}
.ml-jointes{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.ml-jointes:empty{display:none}
.ml-jointe{display:inline-flex;align-items:center;gap:6px;max-width:100%;
  padding:4px 6px 4px 10px;border-radius:999px;font-size:12px;
  border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);
  background:color-mix(in srgb, var(--accent) 12%, transparent)}
.ml-jointe .ic{width:13px;height:13px;flex:none;color:var(--dim)}
.ml-jointe-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  max-width:220px}
.ml-jointe-poids{font-size:11px;flex:none}
.ml-jointe-x{display:grid;place-items:center;width:18px;height:18px;padding:0;
  border:none;border-radius:50%;background:none;color:var(--dim);cursor:pointer}
.ml-jointe-x:hover{color:var(--danger);
  background:color-mix(in srgb, var(--danger) 18%, transparent)}
.ml-jointe-x .ic{width:11px;height:11px;color:inherit}
.ml-jointes-total{font-size:11.5px}

/* ---------- Répondre --------------------------------------------------------- */
.ml-repondre{display:flex;flex-direction:column;gap:9px;padding:16px 18px}
.ml-repondre-titre{margin:0;font-size:14px;font-weight:760}
.ml-corps{min-height:120px;resize:vertical;font:inherit;font-size:13px;
  line-height:1.55}
/* La barre d'envoi porte le choix de signature à GAUCHE et l'envoi à droite :
   un sélecteur discret, une seule ligne — « je ne veux pas que ça prenne trop
   de place ». */
.ml-repondre-bar{display:flex;align-items:center;gap:10px;
  justify-content:space-between;flex-wrap:wrap}
/* Reformulation par le modèle local (22/08/2026) : l'indication prend la
   place disponible, le bouton reste à sa taille. */
.ml-reformuler-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ml-reformuler-bar .ml-reformuler-ind{flex:1;min-width:220px;
  font-size:12.5px}
.ml-reformuler{flex:none}
/* Le chargement du modèle prend sa ligne quand la barre est étroite, et se
   place à droite du bouton sinon. Vide, il n'occupe rien : la barre garde sa
   hauteur au repos. */
.ml-reformuler-etat{flex:none;font-size:12.5px}
.ml-reformuler-etat:empty{display:none}
.ml-signature{width:auto;max-width:240px;padding:7px 11px;font-size:12.5px}
.ml-signature option{background:var(--panel-solid,#12141a);color:var(--txt)}

@media (max-width:760px){
  .ml-conv-date{display:none}
  /* Pas de survol au doigt : l'étoile reste visible, sinon elle serait
     inatteignable sur mobile. */
  .ml-conv-star{visibility:visible}
  .ml-bulle{max-width:100%}
  .ml-fil{max-height:min(62dvh,520px)}
}
