/* =========================================================================
   css/chat.css — CHAT D'ÉQUIPE (MISSION4 point 5, agent B1).
   Intérieur du panneau docké à droite : le POSITIONNEMENT du conteneur
   (#chat-root 360 px, classe chat-open sur <html>, bouton bord droit, badge
   global) appartient à app.css/core.js (B4) — ici uniquement le contenu :
   header, fil fusionné messages+activité, réactions, citations, « vu par »,
   avatars, saisie. Tokens d'app.css exclusivement (thème nuit unique —
   jamais de blanc/noir posé en dur hors token), accent via
   --accent/--accent-ink, sémantique --notif. Transitions d'interaction
   ≤ 200 ms, flash de citation = seule animation longue (information, pas
   décor) — tout est neutralisé en prefers-reduced-motion.
   ========================================================================= */

/* ---------- 1. Panneau ---------------------------------------------------- */
.chat-host{display:block}
.chat-panel{display:flex;flex-direction:column;height:100%;min-height:0;
  background:color-mix(in srgb, var(--panel-solid) 86%, transparent);
  backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);
  border-left:1px solid var(--line);
  box-shadow:-18px 0 48px rgba(0,0,0,.32),inset 1px 0 0 rgba(255,255,255,.06)}

/* ---------- 2. Header ------------------------------------------------------ */
.chat-head{display:flex;align-items:center;gap:10px;flex:none;
  padding:14px 14px 12px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--accent) 9%, transparent),transparent)}
.chat-head-ic{display:grid;place-items:center;flex:none;width:34px;height:34px;
  border-radius:50%;color:var(--accent-ink);
  background:color-mix(in srgb, var(--accent) 16%, transparent);
  border:1px solid color-mix(in srgb, var(--accent) 32%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.chat-head-t{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}
.chat-head-t b{font-size:14.5px;font-weight:800;letter-spacing:-.01em;color:var(--txt)}
.chat-sub{font-size:11.5px;color:var(--muted);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
/* Compteur non-lus du header (même sémantique --notif que le badge global). */
.chat-unread{flex:none;min-width:18px;height:18px;border-radius:999px;
  background:var(--notif);color:#fff;font-size:10.5px;font-weight:800;
  line-height:18px;padding:0 5px;text-align:center;
  box-shadow:0 0 10px color-mix(in srgb, var(--notif) 55%, transparent)}
.chat-hbtn{display:grid;place-items:center;flex:none;width:30px;height:30px;
  border-radius:50%;border:1px solid transparent;background:transparent;
  color:var(--muted);cursor:pointer;transition:background .16s,color .16s,border-color .16s}
.chat-hbtn:hover{color:var(--accent-ink);border-color:var(--line);
  background:color-mix(in srgb, var(--accent) 12%, transparent)}

/* ---------- 3. Section « Mon avatar » (5.5) -------------------------------- */
.chat-settings{flex:none;padding:12px 14px;border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--glass) 60%, transparent)}
.chat-set-title{display:flex;align-items:center;gap:8px;font-size:12px;
  font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);
  margin-bottom:10px}
.chat-set-row{display:flex;align-items:center;gap:12px}
.chat-set-col{display:flex;flex-direction:column;gap:3px;min-width:0}
.chat-set-col b{font-size:13.5px;color:var(--txt)}
.chat-set-hint{font-size:11.5px;line-height:1.45;color:var(--dim)}
.chat-set-actions{margin-top:10px}

/* ---------- 4. Fil --------------------------------------------------------- */
.chat-feed{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
  padding:12px 12px 18px;display:flex;flex-direction:column;gap:2px;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;
  overscroll-behavior:contain}
.chat-feed::-webkit-scrollbar{width:8px}
.chat-feed::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px}
.chat-feed .skel{margin:8px 2px}

/* Séparateur de jour : trait + pilule centrée. */
.chat-day{display:flex;align-items:center;gap:10px;margin:14px 2px 8px;flex:none}
.chat-day::before,.chat-day::after{content:"";flex:1;height:1px;background:var(--line)}
.chat-day span{font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.08em;color:var(--dim);padding:3px 10px;border-radius:999px;
  background:var(--glass);border:1px solid var(--line)}

/* États vide / erreur. */
.chat-empty{margin:auto 8px;padding:26px 14px}
.chat-empty p{font-size:12.5px;line-height:1.55;color:var(--muted)}
.chat-error{margin:14px 4px;padding:16px 14px;display:flex;flex-direction:column;
  align-items:center;gap:10px;text-align:center;color:var(--warn)}
.chat-error p{font-size:12.5px;line-height:1.5;color:var(--muted)}

/* ---------- 5. Items (socle commun) ---------------------------------------- */
.chat-item{position:relative;display:flex;gap:8px;align-items:flex-end;
  padding:3px 2px;border-radius:14px;flex:none;outline-offset:-2px}
.chat-col{display:flex;flex-direction:column;gap:3px;min-width:0;max-width:86%}
.chat-name{font-size:11.5px;font-weight:800;color:var(--accent-ink)}
.chat-name.anon{color:var(--dim)}
.chat-time{font-size:10.5px;color:var(--dim);flex:none}

/* Flash « voici l'original » après clic sur une citation (5.4). */
@keyframes chat-flash-k{
  0%{background:color-mix(in srgb, var(--accent) 26%, transparent)}
  100%{background:transparent}}
.chat-flash{animation:chat-flash-k 1.3s ease-out}

/* ---------- 6. Messages : bulles ------------------------------------------- */
.chat-msg{margin-top:5px}
.chat-bubble{position:relative;padding:8px 11px 7px;border-radius:15px 15px 15px 5px;
  background:var(--glass);border:1px solid var(--line);
  box-shadow:0 4px 14px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.09);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.chat-meta{display:flex;align-items:baseline;gap:8px;margin-bottom:2px}
.chat-text{font-size:13.5px;line-height:1.5;color:var(--txt);
  white-space:pre-wrap;overflow-wrap:anywhere}

/* Mes messages : à droite, teinte accent (texte = --txt, pas l'accent brut).
   MISSION5 §6 : mes bulles portent AUSSI mon avatar — la rangée est inversée
   (DOM inchangé : avatar puis colonne) → photo à DROITE de ma bulle. */
.chat-msg.mine{flex-direction:row-reverse;justify-content:flex-start}
.chat-msg.mine .chat-col{align-items:flex-end}
.chat-msg.mine .chat-bubble{border-radius:15px 15px 5px 15px;
  background:linear-gradient(135deg,
    color-mix(in srgb, var(--accent) 26%, var(--glass)),
    color-mix(in srgb, var(--accent2) 18%, var(--glass)));
  border-color:color-mix(in srgb, var(--accent) 38%, var(--line))}
.chat-msg.mine .chat-meta{flex-direction:row-reverse}

/* Avatar à côté de la bulle (TOUS les messages, les miens compris). */
.chat-msg > .chat-ava-slot{margin-bottom:4px}

/* ---------- 7. Notifications d'activité : lignes système compactes ---------- */
.chat-act{margin-top:3px;align-items:flex-start;padding-right:6px}
/* Audit M5 : la ligne d'activité NOMME un profil → elle porte son avatar
   (photo comprise, même slot que les bulles) surmonté d'une petite pastille
   d'action. La colonne d'avatars du fil reste ainsi régulière. */
.chat-act-ava{position:relative;flex:none;margin-top:1px;line-height:0}
.chat-act-ic{position:absolute;right:-3px;bottom:-3px;display:grid;
  place-items:center;width:16px;height:16px;border-radius:50%;
  color:var(--muted);background:var(--panel-solid);border:1px solid var(--line)}
.chat-act-ic .ic{width:10px;height:10px}
.chat-act-body{display:flex;align-items:baseline;gap:8px;min-width:0;
  padding:4px 2px;border-radius:10px;text-decoration:none}
.chat-act-phrase{font-size:12px;line-height:1.5;color:var(--muted);
  overflow-wrap:anywhere}
.chat-act-phrase .chat-name{font-size:12px}
.chat-soc{font-weight:700;color:var(--txt)}
.chat-act-quote{color:var(--dim);font-style:italic}
/* Notification liée à une société : toute la ligne ouvre la fiche. */
a.chat-act-link{cursor:pointer;transition:background .16s}
a.chat-act-link:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}
a.chat-act-link:hover .chat-soc{color:var(--accent-ink)}

/* ---------- 8. Réactions (5.1) --------------------------------------------- */
.chat-reacts{display:flex;flex-wrap:wrap;gap:4px;padding:0 2px}
.chat-reacts.empty{display:none}
.chat-msg.mine .chat-reacts{justify-content:flex-end}
.chat-react{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;
  border-radius:999px;border:1px solid var(--line);background:var(--glass);
  cursor:pointer;transition:transform .15s,border-color .15s,background .15s}
.chat-react:hover{transform:translateY(-1px)}
.chat-react.on{border-color:color-mix(in srgb, var(--accent) 55%, transparent);
  background:color-mix(in srgb, var(--accent) 18%, transparent)}
.chat-react-emo{font-size:12.5px;line-height:1}
.chat-react-n{font-size:11px;font-weight:700;color:var(--muted)}
.chat-react.on .chat-react-n{color:var(--accent-ink)}

/* Picker : verre flottant au-dessus de l'item. */
@keyframes chat-pop-k{from{opacity:0;transform:translateY(4px) scale(.92)}
  to{opacity:1;transform:none}}
.chat-picker{position:absolute;bottom:100%;margin-bottom:8px;right:0;z-index:6;
  display:flex;gap:2px;padding:4px 6px;border-radius:999px;
  background:var(--panel-solid);border:1px solid var(--line);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  box-shadow:0 12px 30px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.12);
  animation:chat-pop-k .16s ease-out}
.chat-picker-btn{display:grid;place-items:center;width:30px;height:30px;
  border:0;background:transparent;border-radius:50%;font-size:16px;
  line-height:1;cursor:pointer;transition:transform .13s,background .13s}
.chat-picker-btn:hover{transform:scale(1.22);
  background:color-mix(in srgb, var(--accent) 14%, transparent)}

/* ---------- 9. Outils au survol (réagir · répondre) ------------------------- */
/* COLLÉS À LA BULLE (01/08/2026) : ancrés sur .chat-bubble (position:relative),
   côté opposé à l'avatar — juste à droite de la bulle pour un message reçu,
   juste à gauche pour le mien. Avant, ancrés sur la LIGNE pleine largeur, ils
   flottaient à ~150 px de la bulle. */
.chat-tools{position:absolute;top:2px;left:100%;margin-left:6px;z-index:5;
  display:flex;gap:2px;
  padding:2px;border-radius:999px;background:var(--panel-solid);
  border:1px solid var(--line);box-shadow:0 6px 16px rgba(0,0,0,.28);
  opacity:0;pointer-events:none;transform:translateY(3px);
  transition:opacity .15s,transform .15s}
.chat-item:hover .chat-tools,.chat-item:focus-within .chat-tools,
.chat-item:focus .chat-tools{opacity:1;pointer-events:auto;transform:none}
.chat-tool{display:grid;place-items:center;width:26px;height:26px;border:0;
  border-radius:50%;background:transparent;color:var(--muted);cursor:pointer;
  transition:background .14s,color .14s}
.chat-tool:hover{color:var(--accent-ink);
  background:color-mix(in srgb, var(--accent) 14%, transparent)}
/* Lignes d'ACTIVITÉ (.chat-act) : pas de bulle → les outils sont ancrés à la
   LIGNE pleine largeur. `left:100%` les envoyait hors cadre (clippés par
   .chat-feed overflow-x:hidden) → invisibles au survol (régression 01/08).
   On les ré-ancre au bord droit VISIBLE de la ligne. .chat-act ne porte jamais
   .mine → aucune interaction avec le miroir des messages. */
.chat-act .chat-tools{left:auto;right:6px;margin-left:0}
.chat-act .chat-picker{left:auto;right:6px}

/* ---------- 10. Citations (5.4) --------------------------------------------- */
.chat-quote{display:flex;flex-direction:column;align-items:flex-start;gap:1px;
  width:100%;margin:0 0 5px;padding:5px 9px;text-align:left;
  border:0;border-left:3px solid color-mix(in srgb, var(--accent) 65%, transparent);
  border-radius:6px 10px 10px 6px;cursor:pointer;
  background:color-mix(in srgb, var(--accent) 9%, transparent);
  transition:background .15s}
.chat-quote:hover{background:color-mix(in srgb, var(--accent) 17%, transparent)}
.chat-quote-who{font-size:11px;font-weight:800;color:var(--accent-ink)}
.chat-quote-txt{font-size:11.5px;line-height:1.45;color:var(--muted);
  overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.chat-quote.miss{cursor:default;border-left-color:var(--line);
  background:var(--glass)}
.chat-quote.miss i{font-size:11.5px;color:var(--dim)}

/* Tâche 6 — accessoires alignés sur le côté de la bulle. Une bulle « mine »
   est à DROITE (rangée inversée) : la citation doit se lire de ce côté, et la
   barre d'outils ne doit plus se poser sur l'avatar (qui, lui, est passé à
   droite). Les lignes système .chat-act ne portent JAMAIS .mine (chat.js) :
   elles restent à gauche, colonne d'avatars régulière. */
.chat-msg.mine .chat-quote{align-items:flex-end;text-align:right;
  border-left:0;border-right:3px solid color-mix(in srgb, var(--accent) 65%, transparent);
  border-radius:10px 6px 6px 10px}
.chat-msg.mine .chat-quote.miss{border-right-color:var(--line)}
.chat-msg.mine .chat-tools{left:auto;right:100%;margin-left:0;margin-right:6px}
/* MISSION9 (31/07/2026) — MON message est à droite : le picker de réactions
   doit s'ouvrir à GAUCHE lui aussi (le bouton « réagir » y est déjà). Sans ça,
   le popup d'emojis s'ouvrait à droite, détaché du bouton et par-dessus la
   bulle. Miroir cohérent avec .chat-tools ci-dessus. */
.chat-msg.mine .chat-picker{right:auto;left:0}

/* ---------- 11. « Vu par » (5.3) --------------------------------------------- */
.chat-seen{display:flex;justify-content:flex-end;gap:3px;flex:none;
  padding:2px 8px 0;margin-top:-1px}

/* ---------- 12. Avatars (5.5) ------------------------------------------------ */
/* Même recette que .avatar-badge (app.css) — couleur stable par profil posée
   en --pc par chat.js (App.PROFILE_COLORS). */
.chat-ava-slot{position:relative;display:inline-grid;place-items:center;flex:none;
  width:28px;height:28px;border-radius:50%;overflow:hidden}
.chat-ava-slot.sm{width:26px;height:26px}
.chat-ava-slot.xs{width:16px;height:16px}
.chat-ava-slot.xl{width:56px;height:56px}
.chat-ava-dot,.chat-ava-img{width:100%;height:100%;border-radius:50%}
.chat-ava-dot{display:grid;place-items:center;color:#fff;font-size:12px;
  font-weight:800;
  background:linear-gradient(135deg,var(--pc,#8b93a5),
    color-mix(in srgb, var(--pc,#8b93a5) 62%, #0b1018));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3)}
.chat-ava-slot.xs .chat-ava-dot{font-size:8.5px}
.chat-ava-slot.xl .chat-ava-dot{font-size:22px}
.chat-ava-img{object-fit:cover;display:block}
.chat-ava-slot.xs .chat-ava-img,.chat-ava-slot.xs .chat-ava-dot{
  box-shadow:0 0 0 1.5px var(--panel-solid)}
/* Mon avatar à côté de la saisie (MISSION5 §6) : même rondeur/taille que les
   bulles, posé sur la ligne de base du champ, liseré discret pour le détacher
   du verre du pied de panneau. */
.chat-ava-me{align-self:flex-end;margin-bottom:5px;
  box-shadow:0 0 0 1px var(--line),0 2px 8px rgba(0,0,0,.18)}

/* ---------- 13. « Nouveaux messages » ---------------------------------------- */
.chat-new{position:absolute;left:50%;transform:translateX(-50%);bottom:96px;z-index:7;
  display:inline-flex;align-items:center;gap:6px;padding:6px 13px;
  border-radius:999px;border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);
  background:color-mix(in srgb, var(--accent) 20%, var(--panel-solid));
  color:var(--accent-ink);font-size:12px;font-weight:700;cursor:pointer;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 10px 26px rgba(0,0,0,.3);
  animation:chat-pop-k .18s ease-out;transition:transform .15s}
.chat-new:hover{transform:translateX(-50%) translateY(-2px)}
/* .chat-panel est le parent positionné du bouton. */
.chat-panel{position:relative}

/* ---------- 14. Saisie -------------------------------------------------------- */
.chat-foot{flex:none;padding:10px 12px calc(12px + env(safe-area-inset-bottom, 0px));
  border-top:1px solid var(--line);
  background:color-mix(in srgb, var(--panel-solid) 55%, transparent)}
.chat-foot-row{display:flex;align-items:flex-end;gap:8px}
.chat-input{flex:1;min-width:0;resize:none;max-height:132px;
  padding:9px 12px;border-radius:16px;border:1px solid var(--line);
  background:var(--glass);color:var(--txt);font:inherit;font-size:13.5px;
  line-height:1.45;outline:none;transition:border-color .16s,background .16s}
.chat-input::placeholder{color:var(--dim)}
.chat-input:focus{border-color:color-mix(in srgb, var(--accent) 55%, transparent);
  background:color-mix(in srgb, var(--accent) 6%, var(--glass))}
.chat-send{display:grid;place-items:center;flex:none;width:38px;height:38px;
  border:0;border-radius:50%;cursor:pointer;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 6px 16px color-mix(in srgb, var(--accent) 40%, transparent);
  transition:transform .15s,filter .15s}
.chat-send:hover{transform:translateY(-1px);filter:brightness(1.08)}
.chat-send:disabled{opacity:.55;cursor:default;transform:none;filter:none}
.chat-send .ic{width:17px;height:17px}
.chat-counter{display:block;margin-top:5px;text-align:right;font-size:10.5px;
  color:var(--dim)}
.chat-counter.over{color:var(--notif);font-weight:700}

/* Bandeau « Réponse à … » au-dessus de la saisie (5.4). */
.chat-reply{display:flex;align-items:center;gap:8px;margin-bottom:8px;
  padding:6px 8px;border-radius:10px;
  border-left:3px solid color-mix(in srgb, var(--accent) 65%, transparent);
  background:color-mix(in srgb, var(--accent) 9%, transparent);
  color:var(--accent-ink);animation:chat-pop-k .16s ease-out}
.chat-reply-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.chat-reply-body b{font-size:11px;font-weight:800;color:var(--accent-ink)}
.chat-reply-txt{font-size:11.5px;color:var(--muted);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.chat-reply-x{display:grid;place-items:center;flex:none;width:24px;height:24px;
  border:0;border-radius:50%;background:transparent;color:var(--muted);
  cursor:pointer;transition:background .14s,color .14s}
.chat-reply-x:hover{color:var(--txt);
  background:color-mix(in srgb, var(--notif) 18%, transparent)}

/* ---------- 15. Mouvement réduit ---------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .chat-panel *,.chat-panel{transition:none!important;animation:none!important}
  .chat-flash{background:color-mix(in srgb, var(--accent) 18%, transparent)}
}
