/* ═══ CE QUE LE SOCLE AJOUTE — ET RIEN QUE CELA ═════════════════════════════
 *
 * Antonio, 12/09/2026 : « ajuste maintenant tout le design de chaque page pour
 * que ça suive la norme ».
 *
 * ⚠️ CETTE FEUILLE EST CHARGÉE APRÈS LE DESSIN HISTORIQUE. Elle ne remplace
 *    ni `unitools.css` ni `v1.css` : elle porte seulement les états que les
 *    écrans natifs TypeScript ajoutent au vocabulaire de la V1.
 *
 * ⚠️⚠️ SON ANCÊTRE `src/ui/jetons.css` N'ÉTAIT PAS CHARGÉ. Mesuré le
 *      15/09/2026 : les écrans écrivaient bien `btn ecrire`, `etat-muet` et
 *      `rel-*`, mais aucun `<link>` ni import ne servait leurs règles. Les
 *      boutons retombaient donc silencieusement sur le ton neutre ou vert de
 *      la maison. Le fichier vit désormais avec les autres feuilles publiques
 *      et le gabarit tient explicitement sa place après `v1.css`.
 *
 * ⚠️ L'ANCIEN FICHIER PORTAIT UNE SECONDE PALETTE : onze variables, zéro en commun avec
 *    les jetons de la maison, et des valeurs DIFFÉRENTES — jaune `#ffc832` là
 *    où la marque dit `--yellow`, corail `#e2574c` pour `--alr-bg`, trait
 *    `#e3e6e3` pour `--line`, rayon 10 px pour `--r-lg`. Deux palettes, ce sont
 *    deux verts : l'écran d'à côté n'a pas la même couleur que le même écran
 *    dans l'outil. Les noms RESTENT (les classes vivantes les emploient), les
 *    VALEURS viennent maintenant de la maison — une seule palette, un seul
 *    endroit où la changer.
 *
 * ⚠️ `--vif` NE SE MET PAS SUR DU TEXTE, et c'est la maison qui l'écrit :
 *    « l'indicateur, jamais du texte » — `#3bae79` sur blanc ne monte qu'à
 *    2,8:1 là où il en faut 4,5:1 (`unitools.css`). Cette feuille l'employait
 *    en couleur de texte (`.pastille.bon`). La règle est reprise ici pour que
 *    le prochain ne refasse pas le même pas.
 */

:root {
  /* ⚠️ DES ALIAS, PAS DES VALEURS. Écrire une couleur ici, c'est la maintenir
     à deux endroits — et le jour où la marque bouge, un seul des deux suit. */
  --vert:        var(--vif);        /* l'indicateur « vous êtes ici », jamais du texte */
  --forest:      var(--rail);       /* le vert foncé SKHUB */
  --jaune:       var(--yellow);     /* le jaune de la marque */
  --encre:       var(--yellow-ink); /* l'encre qui se lit SUR le jaune */
  --papier:      var(--surface-2);
  --corail:      var(--alr);        /* une rupture, un refus — la version lisible */
  --bleu:        var(--inf);
  --gris:        var(--text-3);
  --trait:       var(--line);
  --rayon:       var(--r-lg);

  /* La seule mesure qui n'a pas d'équivalent dans la maison : elle vit ici,
     avec sa raison (règle 12 — c'est une mesure de LECTURE, pas une marge). */
  --lecture-max: 1360px;
}

/* ═══ LE BOUTON D'ÉCRITURE N'A PAS DE TEINTE À LUI ═════════════════════════
 *
 * ⚠️ IL EN AVAIT UNE, ET ELLE N'EXISTAIT PAS DANS L'OUTIL — retirée le
 *    15/09/2026. Cette feuille posait un aplat JAUNE sur `.btn.ecrire` :
 *    22 emplois dans le socle, ZÉRO dans l'outil. Mesuré : l'outil marque
 *    l'action principale par `.btn-main`, un VERT PLEIN — `#1E6644` dans une
 *    plaque (`v1.css`), `--brand-fonce` ailleurs (`unitools.css`). Deux
 *    teintes pour un même geste, ce sont deux outils.
 *
 * ⚠️ ET LE JAUNE DISAIT DÉJÀ AUTRE CHOSE. Sur l'accueil et sur la télévision
 *    il désigne LA MESURE DU MOIS, et il n'y en a qu'une — le poser aussi sur
 *    les boutons d'écriture lui retirait ce qu'il disait.
 *
 * Les boutons d'écriture écrivent donc `btn btn-main` : la teinte vient de
 * l'outil, et il n'y a plus rien à tenir ici.
 */

/* Dans une plaque, `v1.css` retire la bordure de tous les `.btn`. Le bouton
 * destructif perdait donc le seul signal qui le distinguait d'une lecture.
 * On reprend le ton `btn-danger` de la maison, en contour et jamais en plein. */
.v1 .card .btn.btn-danger,
.v1 .rk .btn.btn-danger {
  background:var(--alr-bg); color:var(--alr); border-color:transparent;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--alr) 28%,transparent);
}
.v1 .card .btn.btn-danger:hover:not(:disabled),
.v1 .rk .btn.btn-danger:hover:not(:disabled) {
  background:var(--alr-bg); color:var(--alr);
  box-shadow:inset 0 0 0 1px var(--alr);
}

/* Un compte d'onglet est une information secondaire, pas la fin du libellé.
 * Avant cette classe, « Ce que je demande 1 » se rendait « demande1 ». */
/* ⚠️ LES VALEURS SONT CELLES DE L'OUTIL, PAS LES MIENNES. Il a déjà une
 *    pastille de compte sur un onglet — `.v1-dos-ob`, celle du dossier — et
 *    elle est RELEVÉE ici : 10,5 px, 18 px de haut, fond `#e3efe8`, encre
 *    `#1f5c3f`, et sur l'onglet actif un voile blanc à 22 %. Le premier jet
 *    posait 11 px, 20 px, `--surface-3` et un `color-mix` : deux pastilles
 *    pour un même objet, c'est le jour où l'une cesse de ressembler à l'autre.
 */
.v1 .tabx .tabx-compte {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; height:18px; margin-left:6px; padding:0 5px; border-radius:999px;
  background:#e3efe8; color:#1f5c3f;
  font-family:var(--nombre); font-size:10.5px; font-variant-numeric:tabular-nums;
}
.v1 .tabx.on .tabx-compte { background:rgba(255,255,255,.22); color:#fff; }
/* Une pastille SANS compte se verrait comme un point vide : `display:inline-flex`
 * bat l'attribut `hidden`. C'est la correction que l'outil a dû faire le 03/09. */
.v1 .tabx .tabx-compte[hidden] { display:none; }

/* Le menu de la cloche a besoin d'un ancrage, pas d'un style en ligne. */
.v1 .tb-notifs { position:relative; }

/* ═══ CE QUI MANQUE, ET CE QU'ON N'A PAS PU LIRE ════════════════════════════
 * Trois états, et le troisième compte : « je n'ai pas pu lire » n'est pas
 * « il n'y a rien ». Ces trois classes n'existent pas dans l'outil — elles
 * disent quelque chose que ses écrans ne disaient pas.
 */
.masques      { color: var(--corail); }   /* ce qui n'est pas montré se COMPTE */
.etat         { color: var(--gris); }
.etat-muet    { color: var(--corail); background: var(--surface); border-radius: var(--rayon);
                padding: .7rem .9rem; box-shadow: inset 0 0 0 1px var(--corail); }

/* ═══ LA COULEUR DIT LA RELATION ════════════════════════════════════════════
 * Sur la carte et dans les listes : « inconnue » n'est PAS « rien décidé ».
 * ⚠️ Le liséré, jamais le texte : voir l'avertissement sur `--vif` en tête.
 */
.rel-accueil   { box-shadow: inset 0 0 0 1px var(--vert), inset 4px 0 0 var(--vert); }
.rel-contacter { box-shadow: inset 0 0 0 1px var(--jaune), inset 4px 0 0 var(--jaune); }
.rel-inconnue  { box-shadow: inset 0 0 0 1px var(--trait); opacity: .72; }

/* ═══ LES ENVELOPPES DES ONGLETS DU DOSSIER ════════════════════════════════
 * Ce sont les noms de l'outil, relevés dans `v1-pilotage.js` : il y posait
 * `v1-dos-princ`, `v1-dos-centre`, `v1-dos-suivi`, `v1-dos-examen`,
 * `v1-dos-qualite` pour y INJECTER le panneau en JavaScript. Sa feuille n'en
 * déclarait que cinq (`v1.css`, celles qui portaient une marge) : les autres
 * n'étaient que des points d'accroche.
 *
 * ⚠️ En React il n'y a plus d'injection, donc plus d'accroche — mais le
 *    contrat DOM reste celui du V1, et une enveloppe sans marge se collait au
 *    titre du panneau. Les six manquantes rejoignent donc les cinq autres,
 *    avec la MÊME valeur : deux espacements pour un même rang, c'est un écran
 *    qui ne se lit pas pareil selon l'onglet ouvert.
 */
.v1 .v1-dos-princ, .v1 .v1-dos-contrats, .v1 .v1-dos-entreprise, .v1 .v1-dos-centre,
.v1 .v1-dos-suivi, .v1 .v1-dos-examen, .v1 .v1-dos-qualite { margin-top:16px; }

/* ═══ LES ENVELOPPES QUE LE SOCLE AJOUTE, ET ELLES SE NOMMENT ══════════════
 * 29/09/2026 — la carte de sourcing du jeune et la carte entreprise de la
 * maquette de recrutement entrent dans l'outil.
 *
 * ⚠️ CELLES-CI NE SONT PAS RELEVÉES DE `v1-pilotage.js`, et c'est dit ici
 *    plutôt que deviné plus tard : `v1-dos-sourcing` est une SECONDE zone dans
 *    l'onglet Recrutement du dossier (d'où il vient, avant ce qu'on lui a
 *    proposé) ; les trois `v1-ent-*` sont les volets de la fiche d'entreprise,
 *    qui n'existait pas.
 *
 * ⚠️ MÊME VALEUR QUE LES AUTRES, ET C'EST TOUT L'INTÉRÊT. Deux espacements
 *    pour un même rang, c'est un panneau qui ne se lit pas pareil selon
 *    l'onglet ouvert — exactement la faute que la règle au-dessus a corrigée.
 */
.v1 .v1-dos-sourcing,
.v1 .v1-ent-identite, .v1 .v1-ent-alternants, .v1 .v1-ent-presentes { margin-top:16px; }

/* ═══ « NON MESURÉ » NE SE LIT PAS COMME UN NOMBRE ═════════════════════════
 * `v1p-nm` marque une tuile branchée dont la source n'a rien rendu — `null`,
 * jamais 0 (règle 18). Les écrans l'écrivaient depuis le début ; AUCUNE
 * feuille ne la définissait, donc « non mesuré » s'affichait avec le poids
 * d'une valeur lue. On reprend la grammaire de l'outil, qui dit déjà la même
 * chose ailleurs : ce qu'on n'a pas est gris et italique
 * (`.v1 .v1p-fiche .v`), ce qu'on a lu est encre pleine et graisse 600.
 */
.v1 .v1p-v.v1p-nm { color:var(--text-3); font-style:italic; font-weight:400; }

/* ═══ UN LIEN QUI EST UN BOUTON NE SE SOULIGNE PAS ═════════════════════════
 *
 * Antonio, 15/09/2026 : « les boutons, pas besoin de souligné ». C'était exact,
 * et la cause tient en une mesure : l'outil ne rend JAMAIS ces classes en
 * `<a>` — `.stat` 94 fois, `.v1p-btn` 31, `.vider` 7, toutes en `<button>` ou
 * en `<div>`. Un `<button>` ne se souligne pas : la règle n'a donc jamais eu
 * lieu d'exister chez lui, et AUCUNE feuille ne pose `a{text-decoration:none}`
 * — seulement `a{color:…}` (`unitools.css:96`).
 *
 * Le socle, lui, en a fait des LIENS, et c'est voulu : un vrai `href` mène
 * encore à l'écran sans JavaScript, et s'ouvre dans un nouvel onglet. Il hérite
 * donc du souligné du navigateur, sur des libellés de boutons.
 *
 * ⚠️ LA LISTE EST CELLE DE L'OUTIL, relevée à deux endroits : ce qui porte la
 *    hauteur de contrôle (`v1.css`, « .v1p-btn, .v1p-btn-mini, a.v1p-lien,
 *    .btn, .btn-sm, .btn-main, .v1-nouv, .v1-dos-appel, .role-btn, .scope,
 *    .cmd-open ») et ce qui porte `cursor:pointer` (`unitools.css`, « .uni,
 *    .modx, .chip, .tabx, .cmd-row, .fil, .obj, .dem »). On n'en invente aucune.
 *
 * ⚠️ ET ON NE TOUCHE PAS AUX NOMS. `td.v1-nom` est souligné PAR DESSEIN dans
 *    l'outil (`v1.css:1100`, trait `#bcd6c7`, décalé de 3 px) : c'est ce qui
 *    dit qu'un nom s'ouvre. `.cri`, `.lien`, `.renvoi` et `.skip` sont des
 *    liens de texte — ils gardent le leur.
 */
.v1 a.btn, .v1 a.btn-sm, .v1 a.btn-main,
.v1 a.v1p-btn, .v1 a.v1p-btn-mini,
.v1 a.v1-nouv, .v1 a.v1-dos-appel, .v1 a.role-btn, .v1 a.scope, .v1 a.cmd-open,
.v1 a.uni, .v1 a.modx, .v1 a.chip, .v1 a.tabx, .v1 a.cmd-row,
.v1 a.fil, .v1 a.obj, .v1 a.dem, .v1 a.stat,
.v1 .filtre a.vider { text-decoration: none; }

/* ═══ UNE VALEUR DE FICHE NE SORT PAS DE SA CASE ═══════════════════════════
 *
 * ⚠️ MESURÉ EN LIGNE LE 15/09/2026, onglet « Sources » d'un dossier réel :
 *    trois valeurs débordaient, dont un identifiant de 345 px et un objet JSON
 *    de **1 035 px de texte dans une case de 204** — il passait PAR-DESSUS la
 *    plaque voisine et traversait son texte. `v1.css` pose `.v1p-fiche .row`
 *    en flex sans borner la valeur : tant que l'outil n'y met que des mots
 *    courts, cela ne se voit pas. Le socle y met ce que la base porte.
 *
 * `min-width:0` est ce qui autorise un enfant de flex à rétrécir sous sa
 * largeur de contenu — sans lui, `overflow-wrap` ne sert à rien.
 */
.v1 .v1p-fiche .row { min-width: 0; }
.v1 .v1p-fiche .k { min-width: 0; overflow-wrap: anywhere; }
.v1 .v1p-fiche .v { min-width: 0; overflow-wrap: anywhere; text-align: right; }

/* ═══ LA BARRE D'ONGLETS DU DOSSIER LAISSAIT PASSER LE CONTENU ═════════════
 *
 * ⚠️ CE DÉFAUT EST CELUI DE L'OUTIL, PAS DU PORTAGE — et il se voit mieux ici
 *    parce que nos panneaux sont plus longs. `v1.css` colle `.v1-dos-onglets`
 *    à `top:0` du corps, mais `.v1-dos-corps` porte `padding:8px 24px 32px` :
 *    il reste donc une bande de **8 px** au-dessus de la barre, par laquelle le
 *    contenu défile À DÉCOUVERT. Mesuré en ligne : la ligne « SIRET » coupée en
 *    deux, moitié au-dessus des onglets.
 *
 * On ne touche pas à `v1.css` (gelée, octet pour octet) : la barre remonte
 * couvrir la bande, et rend les 8 px en rembourrage pour ne rien déplacer.
 */
.v1 .v1-dos-corps > .v1-dos-onglets { margin-top: -8px; padding-top: 18px; }

/* ═══ LA MOLETTE RESTE DANS LA CARTE (29/10/2026) ═════════════════════════
 *
 * Arrivée au bas du dossier, la molette passait à la page derrière — et, dans
 * le cadre de l'outil, à la page de l'outil elle-même : on refermait la carte
 * deux mille pixels plus bas. `contain` arrête la chaîne au bord du corps.
 * Le figement de la page de l'outil, lui, est posé par `Volant.tsx`.
 */
.v1 .v1-dos-corps { overscroll-behavior: contain; }

/* ═══ LES ONGLETS DE L'ÉCRAN REMONTENT DANS LA BARRE DU HAUT ══════════════
 *
 * Antonio, 15/09/2026 : « on avait déjà mis ces 7 modules en haut avant, et le
 * secteur ou sections des modules dans chacun — par exemple dossier CAFA ».
 *
 * ⚠️ C'EST UN ÉCART ASSUMÉ AVEC LE V1, ET IL EST MESURÉ. `unitools.js` compose
 *    UNE seule barre : la famille, les applications, un filet, puis les
 *    onglets de l'écran (`.modx.ongx`). La surcouche V1 a fait l'inverse —
 *    `v1.css:282` les cache là-haut en `display:none !important` et rallume
 *    leur barre propre, avec la pilule verte (`v1.css:262`). Sa note le dit :
 *    « masqué depuis que le MVP a remonté les onglets ».
 *
 *    Antonio a tranché pour la barre du haut : deux rangées d'onglets sur un
 *    écran de 19 000 px, on ne sait plus laquelle range quoi. On défait donc
 *    ce masquage-là, ET RIEN D'AUTRE — le reste du dessin V1 ne bouge pas.
 *
 * ⚠️ TOUT LE DESSIN EXISTE DÉJÀ dans `unitools.css` : `.modx.ongx` (graisse
 *    600, encre secondaire), `.modbar .ongrp` (un groupe d'un seul tenant),
 *    `.modbar .ongfam` (son étiquette), `.modbar .sep` (le filet). On ne
 *    redessine rien, on rallume.
 */
.v1 .modbar .ongrp,
.v1 .modbar .ongfam,
.v1 .modbar .ongx { display: revert !important; }
.v1 .modbar .ongrp { display: flex !important; }

/* La barre d'onglets locale n'est plus rendue quand les onglets sont montés :
 * ce qui reste ci-dessous, ce sont les PANNEAUX. */

/* ═══ UN ONGLET N'EST PAS UNE APPLICATION — DEUX NIVEAUX, DEUX DESSINS ════
 *
 * ⚠️ VU EN LIGNE, ET MESURÉ : après la remontée des onglets, le module actif
 *    « Qualité et conformité » et l'onglet actif « Intégration » rendaient
 *    EXACTEMENT le même fond `rgb(33,122,82)` et la même encre blanche. Deux
 *    niveaux de navigation avec un seul dessin : on ne savait plus ce qui
 *    changeait d'application et ce qui changeait d'onglet.
 *
 *    La cause est `v1.css:1737` — `.v1 .modbar .modx:not(.aidx)` peint TOUT en
 *    pilule, `.ongx` compris, parce que la surcouche n'attendait aucun onglet
 *    à cet endroit (elle les cachait).
 *
 * ⚠️ ON REPREND LE DESSIN DE L'OUTIL, ON N'EN INVENTE PAS UN TROISIÈME :
 *    `unitools.css:1419` — un onglet du haut est du TEXTE, graisse 600, encre
 *    secondaire ; `:1431` — l'actif passe en encre pleine ; et `:290` lui rend
 *    le trait de 3 px que la pilule avait remplacé. Les applications gardent
 *    leur pilule verte.
 */
.v1 .modbar .modx.ongx:not(.aidx) {
  background: none; border-color: transparent; padding: 8px 10px;
  color: var(--text-2); font-weight: 600;
}
.v1 .modbar .modx.ongx:not(.aidx):hover { background: var(--vif-t); color: var(--vif-ink); }
.v1 .modbar .modx.ongx:not(.aidx).on,
.v1 .modbar .modx.ongx:not(.aidx).on:hover {
  background: none; color: var(--text); font-weight: 700;
}
/* Le trait de l'outil sous l'onglet ouvert — `v1.css` l'éteint pour la pilule,
 * on le rallume ici : sans lui, l'onglet actif ne se repère plus du tout. */
.v1 .modbar .modx.ongx:not(.aidx).on::after {
  display: block; content: ''; position: absolute; left: 8px; right: 8px;
  bottom: 0; height: 3px; border-radius: 3px; background: var(--vif-ink);
}

/* ⚠️ LE FILET ÉTAIT ÉCRASÉ À ZÉRO. `unitools.css` lui donne 1 px de large ;
 *    dans une barre en flex, un enfant de 1 px se fait rétrécir sans `flex:none`.
 *    Mesuré en ligne : présent dans le DOM, rectangle de largeur 0 — donc rien
 *    ne séparait les applications des onglets. */
/* ⚠️ ET `v1.css` LE CACHAIT CARRÉMENT : `.v1 .modbar .sep{display:none
 *    !important}` — logique tant qu'aucun onglet ne montait là-haut, il n'y
 *    avait rien à séparer. Mesuré en ligne après la remontée : `display:none`,
 *    rectangle vide. Le `flex:none` seul ne suffisait donc pas. */
.v1 .modbar .sep { display: block !important; flex: 0 0 auto; align-self: center; }

/* ⚠️ ET LA PASTILLE DE COMPTE N'ÉTAIT PLUS STYLÉE : ma règle visait `.tabx`,
 *    or un onglet remonté est un `.modx.ongx`. « Diplômé97 », « À traiter41 »
 *    se lisaient d'un seul tenant. Même pastille, aux deux endroits. */
.v1 .modbar .modx.ongx .tabx-compte {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; height:18px; margin-left:6px; padding:0 5px; border-radius:999px;
  background:#e3efe8; color:#1f5c3f;
  font-family:var(--nombre); font-size:10.5px; font-variant-numeric:tabular-nums;
}
.v1 .modbar .modx.ongx.on .tabx-compte { background:var(--vif-t); color:var(--vif-ink); }

/* ─── LE COMPTEUR ROUGE DES « ALERTES OUTIL » (23/09/2026) ───────────────────
   Repris de `app/assets/v1-suite.css`, que le gabarit du socle ne charge pas :
   sans lui, l'univers « Alertes » du rail avait son icône et pas son nombre.
   Même dessin, pour que le rail ne change pas de visage d'un écran à l'autre. */
.uni .nb{ position: absolute; top: 4px; right: 5px; min-width: 17px; height: 17px; padding: 0 4px;
  border-radius: 9px; background: #C22E13; color: #fff; font-size: 10.5px; font-weight: 800;
  line-height: 17px; text-align: center; box-shadow: 0 0 0 2px rgba(0,0,0,.14) }

/* ─── LA PORTE DU STUDIO DANS LA BARRE (24/09/2026) ──────────────────────────
   Reprise de `app/assets/v1-suite.css`, que le gabarit du socle ne charge pas :
   sans elle, le bouton « Studio » de `BarreActions` s'affichait nu. Même
   dessin que dans l'outil. */
.st-tb{display:inline-flex; align-items:center; gap:7px; height:36px; padding:0 13px; border-radius:9px;
  border:1px solid var(--line-2); background:var(--surface); color:var(--text); font:600 13px/1 var(--font);
  cursor:pointer; text-decoration:none; transition:background .2s, border-color .2s, box-shadow .2s}
.st-tb svg{color:var(--vif-ink)}
.st-tb:hover{background:var(--vif-t); border-color:var(--vif)}
.st-tb:focus-visible{outline:none; box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--vif-ink)}

/* ═══ LE RECRUTEMENT DANS LE CADRE DE L'OUTIL (25/09/2026) ═════════════════
   Le module s'affiche dans l'écran `#v-recrutement` de l'outil
   (`src/pont/cadre.ts`) : le gabarit n'est pas rendu (`app/layout.tsx`), et
   ce qui reste ne doit rien redire de ce que l'outil montre déjà autour.
   · pas de marge : l'écran de l'outil a déjà la sienne ;
   · pas de défilement propre : l'outil donne au cadre la hauteur de la page,
     c'est la page de l'outil qui défile — un défilement dans le défilement
     se perd sous la souris ;
   · pas de second titre : l'outil annonce « Recrutement » ;
   · pas de barre d'onglets : ils montent dans la rangée du haut DE L'OUTIL,
     par sa mécanique (`app/assets/ecrans/recrutement.js`). La barre d'ici
     reste dans la page — c'est elle qui tient l'onglet ouvert. */
html:has(> body[data-cadre]), body[data-cadre] { background: transparent; overflow: hidden }
/* `vh` vaut ici la hauteur du cadre, donc du contenu (`assets/ecrans/cadre-hauteur.js`) :
   la carte restait à ses 620 px, plus que l'écran entier à 1366 × 625. */
@media (min-width:901px) { body[data-cadre] .crt-carte { height: min(calc(70 * var(--vh-fenetre, 1vh)), 620px) } }
body[data-cadre] { margin: 0 }
/* ⚠️ PAS DE SECOND BANDEAU JAUNE (27/09/2026) : l'outil porte déjà le sien,
   en haut de la fenêtre. Celui du cadre se posait en tête du module, sous la
   rangée d'onglets — un deuxième « V1 · base à part », et l'écran se lisait
   comme une seconde application. */
body[data-cadre]::before { display: none }
body[data-cadre] { padding-top: 0 }
.v1[data-cadre] > #contenu.content { padding: 0 0 24px; margin: 0; max-width: none }
.v1[data-cadre] .view.on > .tabx-bar { display: none !important }
.v1[data-cadre] .view.on > .page-title {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap }

/* La recherche ⌘K a quitté la barre du haut (28/09/2026) : deux colonnes, la
   marque et les commandes. Même règle que `v1-suite.css` côté outil. */
.v1 .tb-ligne { grid-template-columns: minmax(0, 1fr) auto }
