/* =============================================================================
   LE MODULE JOURNAL — la mise en page du Z, à l'écran et sur le papier.
   Mission `Z`, 24/08/2026.

   ⚠️  LA SORTIE EST L'IMPRESSION DU NAVIGATEUR. « Imprimer / Enregistrer en
       PDF » produit le fichier que David envoie lui-même. Aucune bibliothèque,
       aucun serveur de rendu, aucun envoi : le format est libre (David, 24/08)
       et le navigateur sait déjà faire un PDF propre.
   ============================================================================= */

.onglets { display: flex; gap: 10px; margin-bottom: 20px; }
.onglet { opacity: 0.55; }
.onglet.actif { opacity: 1; }

.z-entete {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 20px; flex-wrap: wrap; margin-bottom: 18px;
}
.z-salon { font-size: 1.05rem; font-weight: 600; }
.z-salon span { display: block; font-weight: 400; font-size: 0.85rem; opacity: 0.75; }
/* `TRI-1` — propriétés logiques : en hébreu, `end` est à gauche. */
.z-titre { text-align: end; }
.z-titre strong { font-size: 1.3rem; display: block; }

.z-bloc { margin-bottom: 22px; }
.z-bloc h3 { margin: 0 0 8px; font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.8; }

.z-lignes { width: 100%; border-collapse: collapse; }
.z-lignes td, .z-lignes th { padding: 6px 8px; border-bottom: 1px solid rgba(128,128,128,0.25); }
/* ⚠️  `.nombre` N'EST PAS ISOLÉ EN `ltr`, VOLONTAIREMENT — `hub.css` § CE QUI NE
       SE RETOURNE JAMAIS : un nombre nu ne se réordonne pas, et `direction: ltr`
       dans la cellule redéfinirait `end` du mauvais côté du tableau hébreu.
       Les dates, heures et téléphones portent, eux, `heure` et `tel` : c'est
       `hub.css` qui les tient à l'endroit. */
.z-lignes td.nombre, .z-lignes th.nombre { text-align: end; font-variant-numeric: tabular-nums; }
.z-lignes tr.total td { font-weight: 700; border-top: 2px solid currentColor; }

/* `REFUS-5` — les deux tableaux côte à côte, la barre part du début de ligne
   (propriétés logiques : elle part de la droite en hébreu). */
.refus-bilan { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; margin-block-end: 16px; }
.refus-bilan-cadre { flex: 1 1 320px; }
.refus-bilan caption { text-align: start; font-weight: 700; padding-block-end: 6px; }
.refus-barre-cellule { inline-size: 45%; }
.refus-barre { display: block; block-size: 12px; border-radius: 3px; background: var(--rouge, #c4453a); opacity: 0.75; }
.refus-bilan tr.pic td { font-weight: 700; }

/* Les deux comptes, et l'écart. C'est le cœur du Z : il se voit d'abord. */
.z-controles { border: 2px solid currentColor; padding: 14px 16px; border-radius: 8px; }
.z-controles.juste { border-color: rgba(46,158,91,0.7); }
.z-controles.ecart { border-color: rgba(196,69,58,0.85); }

.z-anomalie {
  margin: 8px 0 0; padding: 10px 12px; border-radius: 6px;
  background: rgba(196,69,58,0.15); font-size: 0.9rem;
}

.z-ouvert { font-size: 0.85rem; opacity: 0.75; }

@media print {
  /* Sur le papier, seul le Z reste : ni bandeau, ni boutons, ni navigation. */
  #bandeau-etat, .bouton-hub, .onglets, .sous-titre, .liens,
  .sans-impression, #message { display: none !important; }
  .page { max-width: none; padding: 0; }
  body { background: #fff; color: #000; }
  .carte, .z-controles { border-color: #000; }
  .z-anomalie { background: none; border: 1.5px solid #000; }
}

/* -----------------------------------------------------------------------------
   LE BRIEFING DU MATIN — `BRIEF-1`, 06/09/2026.

   La fenêtre elle-même vient de `vente.css` (`.fenetre`, `.fenetre-boite`) :
   une seule fenêtre pour tout le Hub, pas une par écran. Ici ne vit que ce qui
   lui est propre — le panneau qui défile et les jetons de stock.

   ⚠️  `V3-y` — LE CORPS DÉFILE, EXCEPTION PRÉVUE (`B000-D225` : le panneau d'un
       écran de gestion). Trente-neuf produits et les créances ne tiennent pas
       dans 768 px, et cacher des lignes réelles serait pire que défiler.
   -------------------------------------------------------------------------- */
#briefing-corps {
  max-height: 58vh;
  overflow-y: auto;
  padding-inline-end: 6px;
}

.brief-marque { margin-bottom: 12px; }
.brief-marque h4 {
  margin: 0 0 6px;
  font-size: 0.9rem;
  color: var(--or);
}
.brief-marque p { margin: 0; line-height: 2.1; }

/* ⭐ `ABS1_01`, 09/09 — LES DEUX MOYENNES DU MATIN.
   Le chiffre porte, la précision suit. C'est le même parti que le stock : on
   lit le nombre de loin, et la phrase dit ce qu'il couvre.
   ⚠️  `.vide` sert ici à dire « jamais relevé » — c'est un texte qui compte
       autant qu'un chiffre, il ne doit donc pas s'effacer davantage que le
       reste. Il garde le gris du briefing, pas un gris plus pâle. */
/* ⭐ `ABS1_03` — L'ENCADRÉ DU TEMPS PERDU. Il porte le seul chiffre que David a
   demandé à voir, et il doit se lire **avant** d'avoir lu la phrase : filet
   orange à gauche, comme le bandeau du stock sous seuil.
   ⚠️  Ce n'est pas une alerte, c'est un compte. Pas de rouge : le rouge est
       réservé au refus de carte (`CARTE-ROUGE`), et deux rouges de sens
       différent sur le même Hub ne veulent plus rien dire. */
.brief-temps {
  border-inline-start: 4px solid var(--orange);
  padding-inline-start: 12px;
}
.brief-gros {
  margin: 0 0 2px;
  font-size: 1.05rem;
  line-height: 1.5;
}
.brief-gros strong {
  color: var(--orange);
  font-size: 1.9rem;
  line-height: 1.2;
}

/* ⭐ `ABS1_06` — LA COULEUR DE LA TENDANCE. David : *« le chiffre doit être soit
   rouge si c'est pire, soit vert si c'est mieux. »*
   ⚠️  SANS RÉFÉRENCE, AUCUNE DES DEUX : le chiffre garde l'orange neutre. Un
       vert par défaut dirait « ça va » alors qu'on ne sait pas. */
.brief-gros strong.pire  { color: var(--rouge); }
.brief-gros strong.mieux { color: var(--vert); }

.brief-chiffre {
  margin: 0 0 2px;
  font-size: 1.05rem;
  line-height: 1.6;
}
.brief-chiffre strong { color: var(--or); font-size: 1.35rem; }
.brief-detail {
  margin: 0 0 10px;
  font-size: 0.86rem;
  color: var(--gris);
  line-height: 1.6;
}

/* Un jeton = un produit et son compte réel. Le nombre est en gras : c'est LUI
   qu'on lit, le nom n'est là que pour savoir de quoi il s'agit. */
.brief-jeton {
  display: inline-block;
  padding: 3px 9px;
  margin: 0 0 4px;
  margin-inline-end: 4px;
  border-radius: 999px;
  border: 1px solid var(--bleu-clair);
  font-size: 0.86rem;
  white-space: nowrap;
}
.brief-jeton i { opacity: 0.6; font-size: 0.8rem; }
.brief-jeton strong { font-variant-numeric: tabular-nums; }

/* ⛔ LA COULEUR NE SORT QUE SUR UN FAIT, JAMAIS SUR UN SEUIL DEVINÉ
      (`B000-D220`) : le rouge dit « il n'en reste plus », mesuré ; l'orange ne
      s'allume que si David a posé un seuil sur ce produit. Sans seuil, aucun
      jeton ne s'allume — le classement du plus bas au plus haut suffit à
      montrer ce qui descend. */
.brief-jeton.vide-total {
  border-color: var(--rouge);
  background: rgba(196,69,58,0.18);
}
.brief-jeton.sous-seuil {
  border-color: var(--orange);
  background: rgba(243,112,33,0.15);
}

.brief-manque h3 { color: var(--rouge); opacity: 1; }
.brief-alerte h3 { color: var(--orange); opacity: 1; }
