/* console/web/css/console.css — LE PEU QUI N'EXISTE NULLE PART AILLEURS.
   Posé le 13/10/2026.

   RÈGLE DE CE FICHIER : aucun token de couleur, de police ou d'espacement
   n'est redéfini ici — uniquement var(...) sur ceux du socle (§5.8).
   Tout ce qui existe déjà dans socle.css ou admin.css est utilisé tel
   quel : une console avec sa propre charte serait un second produit.

   Ce fichier ne contient donc QUE deux choses que le parc introduit et
   que le produit n'avait pas : la pastille d'état d'un tenant, et la
   mise en évidence de la ligne sélectionnée. */

/* La pastille d'état. Jamais la couleur SEULE pour porter l'information :
   le libellé est toujours écrit à côté (console-core.js, phraseEtat).
   Une console qui dit « vert » et « rouge » sans les nommer est illisible
   pour qui distingue mal ces deux couleurs, et c'est un cas réel. */
.pastille{display:inline-block;width:8px;height:8px;border-radius:50%;
  margin-right:8px;vertical-align:baseline;background:currentColor}

/* La ligne du tenant dont les outils sont affichés en dessous. Sans ça,
   la section « Outils » dirait « arnaud » dans son titre mais la liste
   au-dessus ne montrerait pas laquelle de ses lignes a été cliquée. */
/* CORRECTIF (constat au rendu, 13/10) : `color` sur TOUS les td éteignait
   la couleur d'état de la ligne choisie — la pastille, qui prend
   currentColor, devenait blanche, et « en service » cessait d'être vert
   au moment précis où on le regarde. La mise en évidence ne touche donc
   que les cellules qui ne portent AUCUN état. */
.tbl tr.est-choisi td:not([class*="ev-"]){color:var(--text-primary)}
.tbl tr.est-choisi td:first-child{box-shadow:inset 2px 0 0 var(--gold)}
.tbl tr[data-tenant]{cursor:pointer}
.tbl tr[data-tenant]:hover td{color:var(--text-primary)}

/* Les outils, en deux colonnes de boutons sobres. .act existe déjà
   (socle.css) mais s'aligne en ligne ; ici chaque outil occupe sa
   propre ligne pour rester cliquable sans viser. */
.outil-btn{display:block;width:100%;text-align:left;padding:12px 0;
  background:none;border:none;border-bottom:1px solid var(--hair);
  font:inherit;color:var(--text-secondary);cursor:pointer}
.outil-btn:hover{color:var(--gold)}
.outil-btn[disabled]{color:var(--text-faint);cursor:default}
.outil-btn-titre{display:block;font-size:13px;font-weight:300}
.outil-btn-sous{display:block;font-size:11px;color:var(--text-muted);margin-top:3px}

/* Une valeur de résultat peut être longue (une empreinte, un chemin) :
   elle se coupe plutôt que d'élargir le tableau au-delà de l'écran. */
.tbl td.valeur-longue{word-break:break-all;color:var(--text-muted);font-size:11px}

/* Le chemin du registre, sous le tableau des tenants : .sect-note a une
   marge nulle (socle.css) parce qu'elle vit d'habitude dans un en-tête de
   section. Collée au dernier filet du tableau, elle se lisait comme une
   ligne de plus. */
#noteRegistre{margin-top:14px}

/* ═══════════════════════════════════════════════════════════════════
   LES CARTES DE PILOTAGE (17/10/2026).

   Posées après comparaison avec le superadmin de SecuLog, qui est le
   même besoin déjà résolu chez Arnaud. Sa spec d'interface dit en
   première ligne : « this is NOT a technical console, this is a premium
   administrative pilot screen ». Cette console était l'inverse : une
   liste et vingt et un boutons de même poids.

   Ce que ces cartes apportent et qu'une liste ne peut pas : un NOMBRE
   lisible de loin, et un MOT qui le qualifie à côté. Un chiffre sans
   jugement oblige à savoir de tête ce qui est normal.

   RÈGLE DU FICHIER RESPECTÉE : aucun token redéfini, uniquement var()
   sur ceux du socle. ═══════════════════════════════════════════════ */
/* LES CARTES À VERDICT ONT DÉMÉNAGÉ dans web/assets/css/admin.css le
   17/10/2026, sans rien changer à leur apparence : l'écran superadmin du
   produit en avait besoin à son tour, et §5.8 interdit la seconde copie.
   Cette console charge admin.css (voir son index.html), elle les reçoit
   donc exactement comme avant. */

/* Le bloc de décision sous le tableau. */
.sect-sub{margin-top:22px;padding-top:18px;border-top:1px solid var(--hair)}
.sect-subtitle{margin:0 0 10px;font-size:11px;letter-spacing:.38em;
  text-transform:uppercase;color:var(--gold);font-weight:300}
.lbl{display:block;margin:12px 0 6px;font-size:11px;color:var(--text-muted)}
.inp{width:100%;max-width:520px;padding:9px 12px;border-radius:var(--radius-sm);
  border:1px solid var(--hair);background:var(--bg-field);
  color:var(--text-primary);font:inherit;font-size:14px}
.actions-ligne{display:flex;flex-wrap:wrap;gap:18px;margin:14px 0 0}

/* LES MISES À JOUR (29/10/2026, console-maj.js). */
.maj-liste{margin:6px 0 10px 18px;padding:0;font-size:13px;color:var(--text-secondary);line-height:1.6}
.maj-actions{display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center;margin-top:14px}
.maj-mobile .maj-actions{flex-direction:column;align-items:stretch;gap:10px}
.maj-journal{max-height:320px;overflow:auto;margin-top:10px;padding:12px 14px;border-radius:var(--radius-md);background:var(--bg-field);border:1px solid var(--hair);
  font:12px/1.5 ui-monospace,Menlo,Consolas,monospace;color:var(--text-secondary);white-space:pre-wrap;word-break:break-word}
.maj-danger{color:var(--red)}
.maj-actions button:disabled{opacity:.4;cursor:default}

/* La console montée dans l'administration du tenant exploitant
   (29/10/2026, superadmin.html, famille « Le parc ») : sans en-tête ni
   marges propres, l'administration porte les siens. */
.console-dans #mainView > .edge,
.console-dans #mainView > .app-header{display:none}
.console-dans #mainView > .page{padding:0 !important;max-width:none}
.console-dans{background:transparent}

/* Un geste sans objet (Pro déjà activé, limite déjà désactivée) se voit
   éteint, jamais pareil qu'un geste possible (29/10/2026). */
button.act:disabled{opacity:.35;cursor:default;border-bottom-color:transparent}

/* Lectures rendues (29/10/2026, lectures-tenant.js) : plusieurs tableaux
   à la suite, chacun séparé du précédent. */
.lecture-riche .tbl{margin-top:18px}
.lecture-riche .hint{margin-top:14px}

/* LE SUIVI D'UNE MISE À JOUR (29/10/2026, console-maj.js) : une barre, les
   étapes cochées, la dernière chose faite. Jetons du socle seulement. */
.maj-suivi{margin:18px 0 6px;padding:16px 18px;border:1px solid var(--hair);border-radius:var(--radius-md);background:var(--bg-lift)}
.maj-suivi.is-ok{border-color:color-mix(in srgb, var(--green) 45%, transparent)}
.maj-suivi.is-ko{border-color:color-mix(in srgb, var(--red) 45%, transparent)}
.maj-suivi-titre{margin:0 0 6px;font-weight:600;color:var(--text-primary)}
.maj-barre{height:8px;border-radius:var(--radius-pill);background:var(--hair);overflow:hidden;margin:12px 0}
.maj-barre > span{display:block;height:100%;background:var(--gold);transition:width .6s ease}
.maj-suivi.is-ok .maj-barre > span{background:var(--green)}
.maj-suivi.is-ko .maj-barre > span{background:var(--red)}
.maj-etapes{list-style:none;margin:8px 0 0;padding:0}
.maj-etape{padding:4px 0;color:var(--text-muted)}
.maj-etape.is-fait{color:var(--text-secondary)}
.maj-etape.is-encours{color:var(--text-primary);font-weight:600}
.maj-etape.is-ko{color:var(--red)}
.maj-etape-signe{display:inline-block;width:1.2em}
.maj-etape.is-fait .maj-etape-signe{color:var(--green)}
.maj-etape.is-encours .maj-etape-signe{color:var(--gold)}
.maj-direct{margin:10px 0 0;font-size:12px;white-space:pre-wrap;color:var(--text-muted)}

/* LA CHARTE DE L'INTERFACE PC (29/10/2026). Décision d'Arnaud : « la
   charte doit-être celle de l'ui pc ». index.html charge interface-pc.css
   et pose body.pc-coque ; ce qui suit n'habille que ce qui n'existe que
   dans la console. Le volet téléphone (mobile.html, sans pc-coque) ne
   change pas. Jetons du socle seulement (--pro-*, --pf-*). */
body.pc-coque .tbl tr.est-choisi td:not([class*="ev-"]){color:var(--pro-texte)}
body.pc-coque .tbl tr.est-choisi td:first-child{box-shadow:inset 2px 0 0 var(--pro-or)}
body.pc-coque .tbl tr[data-tenant]:hover td:not([class*="ev-"]){color:var(--pro-texte)}
body.pc-coque .outil-btn{padding:14px 16px;margin-bottom:8px;border:1px solid var(--pf-bord);border-radius:var(--radius-md);background:var(--pf-verre-clair);color:var(--pro-texte)}
body.pc-coque .outil-btn:hover{border-color:var(--pro-or-faible);color:var(--pro-or-pale)}
body.pc-coque .outil-btn[disabled]{color:var(--pro-texte-3);border-color:var(--pf-bord)}
body.pc-coque .outil-btn-titre{font-size:15px;font-weight:500}
body.pc-coque .outil-btn-sous{font-size:13px;color:var(--pro-texte-2);margin-top:4px}
body.pc-coque .tbl td.valeur-longue{font-size:13px;color:var(--pro-texte-3)}
body.pc-coque .sect-sub{border-top-color:var(--pf-bord)}
body.pc-coque .sect-subtitle{font-size:13px;letter-spacing:.14em;color:var(--pro-texte-2);font-weight:500}
body.pc-coque .lbl{font-size:13px;color:var(--pro-texte-2)}
body.pc-coque .inp{min-height:44px;box-sizing:border-box;padding:0 14px;border-radius:var(--radius-md);border-color:var(--pf-bord);background:var(--pf-verre-clair);color:var(--pro-texte);font-size:15px}
body.pc-coque .inp:focus{outline:none;border-color:var(--pro-or)}
body.pc-coque .maj-liste{font-size:14px;color:var(--pro-texte-2)}
body.pc-coque .maj-journal{border-color:var(--pf-bord);background:var(--pf-verre-clair);color:var(--pro-texte-2)}
body.pc-coque .maj-suivi{padding:18px 20px;border-color:var(--pf-bord);border-radius:var(--radius-lg);background:var(--pf-verre)}
body.pc-coque .maj-suivi-titre{color:var(--pro-texte)}
body.pc-coque .maj-barre{background:var(--pf-bord)}
body.pc-coque .maj-barre > span{background:var(--pro-or)}
body.pc-coque .maj-etape{color:var(--pro-texte-3)}
body.pc-coque .maj-etape.is-fait{color:var(--pro-texte-2)}
body.pc-coque .maj-etape.is-encours{color:var(--pro-texte)}
body.pc-coque .maj-etape.is-encours .maj-etape-signe{color:var(--pro-or)}
/* Dans le cadre de l'administration : le fond et le voile sont ceux de
   la page qui la porte, jamais un second fond opaque par-dessus. */
html:has(body.pc-coque.console-dans){background:transparent}
body.pc-coque.console-dans::before{display:none}
