/* ===========================================================================
   MÉDIATHÈQUE — mode sélection, onglets, doublons, densité
   Passe UX du 8 septembre 2026.

   Principe tenu : densité et lisibilité. Une médiathèque de tri montre des
   images, pas des panneaux. Chaque compteur nomme SA population — le mélange
   silencieux de « médias enregistrés » et « originaux visuels » était la cause
   du « 38 » face à « 151 sélectionnés ».
   =========================================================================== */

/* --- bandeau du haut : une ligne, pas trois panneaux -------------------- */
.media-bandeau{
  margin:.4rem 0 .1rem; font-size:.8rem; opacity:.62; letter-spacing:.01em;
}

/* --- onglets : vraie navigation secondaire ------------------------------ */
.media-onglets{
  display:flex; gap:.15rem; flex-wrap:wrap; margin:.5rem 0 .4rem;
  border-bottom:1px solid rgba(255,255,255,.1); padding-bottom:.1rem;
}
.media-onglet{
  display:inline-flex; align-items:baseline; gap:.4rem;
  padding:.4rem .7rem; border:0; border-bottom:2px solid transparent;
  background:none; color:inherit; font:inherit; cursor:pointer;
  opacity:.62; transition:opacity .14s, border-color .14s;
}
.media-onglet:hover{ opacity:.9; }
.media-onglet.is-active{ opacity:1; border-bottom-color:currentColor; font-weight:600; }
.media-onglet__label{ font-size:.78rem; letter-spacing:.02em; }
.media-onglet__n{ font-size:.9rem; font-variant-numeric:tabular-nums; opacity:.75; }
.media-onglet.is-inactif{ opacity:.3; cursor:not-allowed; }
.media-compteur-note{ font-size:.74rem; opacity:.55; margin:.1rem 0 .4rem; }

/* --- barre d'actions : collante, près des médias ------------------------ */
.media-bulk-zone{ position:sticky; top:0; z-index:20; }
.media-bulk-bar{
  display:flex; flex-wrap:wrap; align-items:center; gap:.7rem;
  padding:.5rem .75rem; margin:.3rem 0 .6rem; border-radius:.4rem;
  background:rgba(20,20,22,.94); backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 6px 20px rgba(0,0,0,.28);
}
.media-bulk-bar__badge{
  font-size:.62rem; letter-spacing:.09em; padding:.2rem .45rem; border-radius:.2rem;
  background:currentColor; color:#111; font-weight:700;
}
.media-bulk-bar__left{ display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; }
.media-bulk-bar__count{ font-variant-numeric:tabular-nums; font-size:.88rem; }
.media-bulk-bar__actions{ display:flex; gap:.35rem; flex-wrap:wrap; margin-left:auto; }
.media-bulk-bar__note{ flex-basis:100%; margin:0; font-size:.7rem; opacity:.5; }

/* La barre est sombre : TOUT ce qu'elle contient doit être clair, sinon le
   thème clair de la page y peint du texte sombre sur fond sombre — invisible.
   Un bouton indisponible reste LISIBLE : on doit pouvoir lire ce qu'on ne peut
   pas faire, sinon on ne sait pas ce qui manque. */
.media-bulk-bar,
.media-bulk-bar button,
.media-bulk-bar strong,
.media-bulk-bar p{ color:#f4f4f5 !important; }

.media-bulk-bar__left .text-button{
  color:#f4f4f5 !important; background:transparent; border:0;
  text-decoration:underline; text-underline-offset:3px; cursor:pointer; font-size:.82rem;
}
.media-bulk-bar__left .text-button:hover{ color:#fff !important; }
.media-bulk-bar__left .text-button[disabled]{
  color:rgba(244,244,245,.4) !important; text-decoration:none; cursor:not-allowed;
}

.media-bulk-bar__actions .button{
  color:#f4f4f5 !important; border:1px solid rgba(255,255,255,.22);
  background:rgba(255,255,255,.06); font-size:.76rem; letter-spacing:.04em;
  padding:.34rem .62rem; border-radius:.28rem;
}
.media-bulk-bar__actions .button[disabled]{
  opacity:1; color:rgba(244,244,245,.5) !important;
  border-color:rgba(255,255,255,.12); background:transparent; cursor:not-allowed;
}
/* La corbeille est la seule action destructive : elle ne doit jamais ressembler
   aux quatre autres, même désactivée. */
.media-bulk-bar__actions .button[data-media-bulk="corbeille"]{
  border-color:rgba(230,120,120,.42); color:rgba(240,170,170,.72) !important;
}
.media-bulk-bar__badge{ background:#f4f4f5; color:#111 !important; }

/* --- grille : dense, ratio stable, respirante --------------------------- */
.media-library-grid{
  display:grid; gap:.75rem; margin-top:.2rem;
  grid-template-columns:repeat(auto-fill, minmax(178px, 1fr));
}
@media (min-width:1440px){ .media-library-grid{ grid-template-columns:repeat(auto-fill, minmax(196px, 1fr)); } }
@media (min-width:1900px){ .media-library-grid{ grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); } }

.media-library-card{
  position:relative; display:flex; flex-direction:column; text-align:left;
  padding:0; overflow:hidden; border-radius:.42rem; color:inherit; cursor:pointer;
  background:rgba(255,255,255,.028); border:1px solid rgba(255,255,255,.09);
  transition:border-color .14s, transform .14s;
}
.media-library-card:hover{ border-color:rgba(255,255,255,.26); }
.media-library-image{ aspect-ratio:1/1; overflow:hidden; background:rgba(255,255,255,.04); }
.media-library-image img{ width:100%; height:100%; object-fit:cover; display:block; }

/* Le nom de fichier : deux lignes maximum, jamais une bouillie sur toute la
   largeur. Un nom illisible ne sert à personne pendant un tri. */
.media-library-card strong,
.media-library-card .media-library-title{
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
  overflow:hidden; font-size:.76rem; line-height:1.28; padding:.42rem .5rem .1rem;
  word-break:break-word;
}
.media-library-card small{ display:block; padding:0 .5rem; font-size:.66rem; opacity:.55; }
.media-library-card > span:last-child,
.media-library-card .media-library-meta{ padding:.2rem .5rem .45rem; font-size:.66rem; opacity:.6; }

/* --- sélection : visible sans ambiguïté --------------------------------- */
.media-card-check{ display:none; position:absolute; top:.4rem; left:.4rem; z-index:3; }
.media-card-check input{ width:18px; height:18px; cursor:pointer; }
.media-library.is-selecting .media-card-check{ display:block; }
.media-library.is-selecting .media-library-card{ cursor:copy; }
.media-library.is-selecting .media-library-card::before{
  content:''; position:absolute; inset:0; z-index:2; background:rgba(0,0,0,.18);
  opacity:0; transition:opacity .12s; pointer-events:none;
}
.media-library-card.is-selected{
  border-color:currentColor; transform:scale(.975);
  box-shadow:0 0 0 2px currentColor inset, 0 0 0 1px rgba(0,0,0,.5);
}
.media-library-card.is-selected::before{ opacity:1; }
tr.is-selected{ outline:2px solid currentColor; outline-offset:-2px; background:rgba(255,255,255,.06); }

/* --- doublons ----------------------------------------------------------- */
.media-dup-explain{
  padding:.55rem .75rem; margin:.4rem 0 .8rem; border-radius:.35rem; font-size:.8rem;
  background:rgba(255,255,255,.03); border-left:3px solid currentColor; line-height:1.45;
}
.media-dup-group{ margin:0 0 1rem; padding:.65rem .75rem; border-radius:.4rem; border:1px solid rgba(255,255,255,.1); }
.media-dup-group header{ display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap; margin-bottom:.45rem; }
.media-dup-signal{ font-size:.64rem; letter-spacing:.07em; padding:.14rem .4rem; border-radius:.2rem; background:rgba(255,255,255,.1); }
.media-dup-group header em{ opacity:.58; font-size:.76rem; font-style:normal; }
.media-dup-items{ display:flex; gap:.45rem; flex-wrap:wrap; margin-bottom:.5rem; }
.media-dup-item{ width:112px; padding:0; border-radius:.3rem; overflow:hidden; cursor:pointer;
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.1); color:inherit; }
.media-dup-item img{ width:100%; height:84px; object-fit:cover; display:block; }
.media-dup-item small{ display:block; padding:.22rem .28rem; font-size:.63rem; opacity:.62; }
.media-dup-noimg{ height:84px; display:grid; place-items:center; font-size:.66rem; opacity:.48; }
.media-dup-item.is-selected{ outline:2px solid currentColor; outline-offset:-2px; }
.media-dup-group footer{ display:flex; gap:.35rem; flex-wrap:wrap; }
.media-dup-group footer .button[disabled]{ opacity:1; color:rgba(255,255,255,.42); cursor:not-allowed; }

/* --- vérité technique dans l'inspecteur --------------------------------- */
.media-tech{ display:grid; grid-template-columns:auto 1fr; gap:.2rem .8rem; margin:.9rem 0 0; font-size:.79rem; }
.media-tech dt{ opacity:.58; letter-spacing:.02em; }
.media-tech dd{ margin:0; }
.media-tech em{ opacity:.72; font-style:normal; font-size:.73rem; }

/* --- densité : supprimer le vide au-dessus de la grille ----------------- */
.media-library .stat-strip{ display:none; }
.media-library-top{ margin-bottom:.35rem; }
.media-library .facet-section,
.media-library .registry-facets{ margin-bottom:.3rem; }
.media-library-empty{ padding:1.2rem 0; font-size:.85rem; opacity:.75; }
.media-library-empty:empty{ display:none; padding:0; }

/* Pendant le tri, la barre NOEMA ne doit pas manger la grille. */
.media-library.is-selecting ~ .noema-panel--bottom,
body:has(.media-library.is-selecting) .noema-panel--bottom{
  max-height:3.2rem; overflow:hidden; opacity:.85; transition:max-height .18s;
}
body:has(.media-library.is-selecting) .noema-panel--bottom:hover{ max-height:60vh; opacity:1; }

/* --- accessibilité : le gris clair reste lisible ------------------------ */
.media-library small, .media-compteur-note, .media-bulk-bar__note{ color:rgba(255,255,255,.68); }
.media-onglet:focus-visible, .media-library-card:focus-visible,
.media-bulk-bar button:focus-visible{ outline:2px solid currentColor; outline-offset:2px; }

/* --- état d'adresse inconnue -------------------------------------------- */
.etat-erreur{ max-width:46rem; padding:2.5rem 0; }
.etat-erreur h1{ margin:.3rem 0 .8rem; }
.etat-erreur code{ padding:.1rem .35rem; border-radius:.2rem; background:rgba(255,255,255,.08); }

/* --- vérité produit du registre Soul Core ------------------------------- */
.product-truth{ margin:0 0 1rem; }
.product-truth__head{ display:flex; gap:2rem; flex-wrap:wrap; align-items:flex-end; }
.product-truth__big{ display:flex; flex-direction:column; }
.product-truth__big strong{ font-size:1.5rem; font-variant-numeric:tabular-nums; line-height:1.1; }
.product-truth__big span{ font-size:.74rem; opacity:.62; max-width:19rem; }
.product-truth__big--muted strong{ opacity:.55; }
.product-truth__big--fort{ position:relative; padding-bottom:.25rem; }
.product-truth__big--fort::after{ content:''; position:absolute; left:0; right:1.5rem; bottom:0; height:2px; background:currentColor; opacity:.45; }
.product-truth__note{ font-size:.78rem; opacity:.72; line-height:1.5; margin:.6rem 0 .5rem; max-width:62rem; }
.product-truth__scopes{ display:flex; gap:.3rem; flex-wrap:wrap; }
.pt-chip{ display:inline-flex; align-items:baseline; gap:.3rem; padding:.28rem .55rem; border-radius:.28rem;
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); color:inherit; font:inherit; cursor:pointer; }
.pt-chip.is-active{ border-color:currentColor; background:rgba(255,255,255,.09); }
.pt-chip strong{ font-variant-numeric:tabular-nums; }
.pt-chip span{ font-size:.72rem; opacity:.7; }
.pt-badge{ display:inline-block; font-size:.64rem; padding:.12rem .38rem; border-radius:.2rem;
  background:rgba(255,255,255,.08); opacity:.85; white-space:nowrap; }
.pt-badge--product_candidate{ background:rgba(120,200,140,.18); }
.pt-badge--invalid_object{ background:rgba(220,120,120,.16); }
.pt-badge--duplicate_suspect{ background:rgba(220,180,110,.14); }

/* --- filtres repliés : 10 facettes d'un coup, c'était un mur ------------- */
.media-library .registry-facets,
.media-library .facet-section{
  max-height:2.2rem; overflow:hidden; position:relative;
  transition:max-height .2s ease;
}
.media-library.filtres-ouverts .registry-facets,
.media-library.filtres-ouverts .facet-section{ max-height:60vh; overflow:auto; }
.media-filtres-toggle{
  display:inline-flex; align-items:center; gap:.35rem; margin:.15rem 0 .35rem;
  padding:.3rem .6rem; border-radius:.28rem; cursor:pointer; font-size:.76rem;
  letter-spacing:.04em; background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.12); color:inherit;
}
.media-filtres-toggle:hover{ border-color:rgba(255,255,255,.28); }

/* ===========================================================================
   SOUL CORE MASTER — le dossier de vie de la pièce
   =========================================================================== */
.sc-master{ max-width:76rem; }
.sc-fold{ display:grid; grid-template-columns:200px 1fr; gap:1.5rem; align-items:start; margin-bottom:1.2rem; }
.sc-visuel__absent{
  aspect-ratio:1/1; display:grid; place-content:center; gap:.3rem; text-align:center;
  border:1px dashed rgba(128,128,128,.4); border-radius:.4rem; padding:.6rem;
}
.sc-visuel__absent span{ font-size:.68rem; letter-spacing:.08em; opacity:.55; }
.sc-visuel__absent small{ font-size:.6rem; opacity:.4; word-break:break-all; line-height:1.3; }
.sc-identite h1{ margin:.15rem 0 .4rem; font-size:1.35rem; line-height:1.25; }
.sc-ids{ display:flex; gap:.4rem; flex-wrap:wrap; margin:.2rem 0 .5rem; }
.sc-ids code{ font-size:.72rem; padding:.16rem .42rem; border-radius:.22rem; background:rgba(128,128,128,.14); }

.sc-pastilles{ display:flex; gap:.28rem; flex-wrap:wrap; margin:.7rem 0; }
.sc-pastille{ display:flex; flex-direction:column; gap:.05rem; padding:.28rem .5rem; border-radius:.26rem;
  border:1px solid rgba(128,128,128,.26); cursor:help; }
.sc-pastille__k{ font-size:.58rem; letter-spacing:.06em; opacity:.6; }
.sc-pastille__v{ font-size:.68rem; font-weight:600; }
.sc-pastille--ready{ border-color:rgba(110,190,130,.6); }
.sc-pastille--partial{ border-color:rgba(220,180,110,.6); }
.sc-pastille--blocked{ border-color:rgba(220,110,110,.65); }
.sc-pastille--missing{ opacity:.62; }
.sc-pastille--unknown, .sc-pastille--not_applicable{ opacity:.42; }

.sc-actions{ display:flex; gap:.4rem; margin-top:.5rem; }
.sc-modes{ display:flex; gap:.2rem; border-bottom:1px solid rgba(128,128,128,.24); margin-bottom:.9rem; }
.sc-mode{ padding:.42rem .8rem; border:0; border-bottom:2px solid transparent; background:none;
  color:inherit; font:inherit; font-size:.76rem; letter-spacing:.04em; cursor:pointer; opacity:.6; }
.sc-mode.is-active{ opacity:1; border-bottom-color:currentColor; font-weight:600; }

.sc-sections{ display:grid; gap:1.1rem; }
.sc-section h3{ display:flex; align-items:baseline; gap:.5rem; font-size:.82rem; letter-spacing:.05em;
  margin:0 0 .4rem; padding-bottom:.28rem; border-bottom:1px solid rgba(128,128,128,.18); }
.sc-num{ font-size:.66rem; opacity:.45; font-variant-numeric:tabular-nums; }
.sc-dl{ display:grid; grid-template-columns:repeat(auto-fit, minmax(240px,1fr)); gap:.5rem 1.4rem; margin:0; }
.sc-champ dt{ font-size:.66rem; letter-spacing:.04em; opacity:.55; margin-bottom:.1rem; }
.sc-champ dd{ margin:0; font-size:.82rem; line-height:1.4; word-break:break-word; }
.sc-absent{ font-style:normal; font-size:.72rem; opacity:.5; letter-spacing:.03em; }
.sc-vide{ font-size:.8rem; line-height:1.5; opacity:.82; margin:.2rem 0;
  padding:.5rem .7rem; border-left:2px solid rgba(128,128,128,.3); background:rgba(128,128,128,.05); }
.sc-vide strong{ letter-spacing:.05em; font-size:.72rem; }
.sc-owner{ font-size:.7rem; opacity:.6; }
.sc-note{ font-size:.74rem; opacity:.6; margin:.5rem 0 0; line-height:1.45; }
.sc-blockers__titre{ font-weight:600; margin:0 0 .3rem; font-size:.84rem; }
.sc-blockers ul{ margin:.2rem 0; padding-left:1.1rem; font-size:.79rem; line-height:1.5; }
.sc-blockers__truth{ font-size:.76rem; opacity:.7; margin:.4rem 0 0; }
.sc-medias{ display:flex; gap:.4rem; flex-wrap:wrap; font-size:.78rem; }
.sc-pied{ margin-top:1.6rem; padding-top:.7rem; border-top:1px solid rgba(128,128,128,.18);
  font-size:.74rem; opacity:.55; }
@media (max-width:860px){ .sc-fold{ grid-template-columns:1fr; } }

/* ===========================================================================
   BARRE DE CONTRÔLE UNIFIÉE — GLOBAL CONTROL MODEL
   FILTER = ce qui est visible · SELECTION = ce qui est ciblé · ACTION = ce qui arrive
   Une seule zone collante, deux états. Jamais trois barres empilées.
   =========================================================================== */
.ctl{
  position:sticky; top:0; z-index:30; margin:.6rem 0 .9rem;
  background:var(--nlo-fond, rgba(250,250,250,.97)); backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(128,128,128,.22); padding:.5rem 0 .55rem;
}
.ctl-cats{ display:flex; gap:.15rem; margin-bottom:.4rem; }
.ctl-cat{
  padding:.34rem .75rem; border:0; border-bottom:2px solid transparent; background:none;
  color:inherit; font:inherit; font-size:.76rem; letter-spacing:.05em; cursor:pointer; opacity:.55;
}
.ctl-cat.is-active{ opacity:1; border-bottom-color:currentColor; font-weight:600; }
.ctl-cat em{ font-style:normal; opacity:.6; font-variant-numeric:tabular-nums; }

.ctl-ligne{ display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.ctl-recherche{
  flex:1 1 12rem; max-width:22rem; padding:.36rem .6rem; font:inherit; font-size:.82rem;
  border-radius:.28rem; border:1px solid rgba(128,128,128,.3); background:transparent; color:inherit;
}
.ctl-bouton{
  padding:.36rem .7rem; border-radius:.28rem; font:inherit; font-size:.78rem; cursor:pointer;
  border:1px solid rgba(128,128,128,.3); background:transparent; color:inherit;
}
.ctl-bouton:hover{ border-color:currentColor; }
.ctl-bouton--primaire{ margin-left:auto; border-color:currentColor; font-weight:600; }
.ctl-vues{ display:flex; gap:.15rem; }
.ctl-vue{
  padding:.3rem .55rem; border-radius:.24rem; font:inherit; font-size:.72rem; cursor:pointer;
  border:1px solid transparent; background:none; color:inherit; opacity:.55;
}
.ctl-vue.is-active{ opacity:1; border-color:rgba(128,128,128,.32); }

.ctl-jetons{ display:flex; gap:.3rem; flex-wrap:wrap; margin-bottom:.35rem; }
.ctl-jeton{
  padding:.2rem .5rem; border-radius:.24rem; font:inherit; font-size:.72rem; cursor:pointer;
  border:1px solid rgba(128,128,128,.3); background:rgba(128,128,128,.08); color:inherit;
}
.ctl-jeton span{ opacity:.55; margin-left:.2rem; }

/* Mode sélection : la zone devient sombre, tout son contenu devient clair. */
.ctl-ligne--selection{
  background:#141416; color:#f4f4f5; border-radius:.34rem; padding:.5rem .7rem; margin:0 -.2rem;
}
.ctl-ligne--selection *{ color:#f4f4f5 !important; }
.ctl-badge{ font-size:.6rem; letter-spacing:.09em; padding:.18rem .42rem; border-radius:.2rem;
  background:#f4f4f5; color:#141416 !important; font-weight:700; }
.ctl-lien{ background:none; border:0; font:inherit; font-size:.8rem; cursor:pointer;
  text-decoration:underline; text-underline-offset:3px; }
.ctl-compte{ font-variant-numeric:tabular-nums; font-size:.85rem; }
.ctl-actions{ display:flex; gap:.32rem; flex-wrap:wrap; margin-left:auto; }
.ctl-action{
  padding:.32rem .6rem; border-radius:.26rem; font:inherit; font-size:.74rem; letter-spacing:.04em;
  border:1px solid rgba(255,255,255,.22); background:rgba(255,255,255,.06); cursor:pointer;
}
.ctl-action[disabled]{ opacity:1; color:rgba(244,244,245,.5) !important;
  border-color:rgba(255,255,255,.12); background:transparent; cursor:not-allowed; }
.ctl-action--destructive{ border-color:rgba(230,120,120,.45); color:rgba(240,170,170,.75) !important; }
.ctl-note{ flex-basis:100%; margin:.25rem 0 0; font-size:.68rem; opacity:.55; }

/* ===========================================================================
   STOCK
   =========================================================================== */
.stock-page{ max-width:74rem; }
.stock-head h1{ margin:.1rem 0 .2rem; font-size:1.4rem; }
.stock-sous{ font-size:.82rem; opacity:.62; margin:0; }
.stock-chiffres{ display:flex; gap:1.6rem; flex-wrap:wrap; margin:.4rem 0 1rem; }
.stock-chiffres div{ display:flex; flex-direction:column; }
.stock-chiffres strong{ font-size:1.4rem; font-variant-numeric:tabular-nums; line-height:1.15; }
.stock-chiffres span{ font-size:.72rem; opacity:.6; max-width:13rem; }
.stock-chiffres .is-muted strong{ opacity:.5; }

.stock-vide{ padding:.9rem 1rem; border-radius:.4rem; border:1px dashed rgba(128,128,128,.35);
  background:rgba(128,128,128,.04); margin-bottom:1.2rem; }
.stock-vide__titre{ font-weight:600; margin:0 0 .5rem; font-size:.92rem; }
.stock-vide__dl{ display:grid; grid-template-columns:auto 1fr; gap:.35rem 1rem; margin:0; font-size:.8rem; line-height:1.5; }
.stock-vide__dl dt{ opacity:.55; font-size:.68rem; letter-spacing:.04em; white-space:nowrap; padding-top:.1rem; }
.stock-vide__dl dd{ margin:0; }
.stock-vide code{ padding:.08rem .3rem; border-radius:.18rem; background:rgba(128,128,128,.16); font-size:.92em; }

.stock-section h3{ font-size:.86rem; letter-spacing:.03em; margin:0 0 .35rem;
  padding-bottom:.25rem; border-bottom:1px solid rgba(128,128,128,.2); }
.stock-avert{ font-size:.79rem; line-height:1.5; opacity:.82; margin:.4rem 0 .7rem;
  padding:.5rem .7rem; border-left:2px solid rgba(220,180,110,.6); background:rgba(220,180,110,.07); }
.stock-lots{ display:grid; gap:.5rem; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); }
.stock-lot{ display:flex; flex-direction:column; gap:.14rem; text-align:left; padding:.5rem .6rem;
  border-radius:.32rem; border:1px solid rgba(128,128,128,.22); background:transparent;
  color:inherit; font:inherit; cursor:pointer; }
.stock-lot:hover{ border-color:currentColor; }
.stock-lot strong{ font-size:.76rem; }
.stock-lot small{ font-size:.68rem; opacity:.62; line-height:1.35;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.stock-lot em{ font-size:.64rem; opacity:.45; font-style:normal; }
.stock-note, .stock-pied{ font-size:.74rem; opacity:.55; }
.stock-pied{ margin-top:1.4rem; padding-top:.7rem; border-top:1px solid rgba(128,128,128,.18); }

/* --- Stock Truth Engine : les candidats de référence --------------------- */
.stock-repartition{ display:flex; gap:1.1rem; flex-wrap:wrap; margin:.3rem 0 .6rem; font-size:.78rem; }
.stock-nat strong{ font-variant-numeric:tabular-nums; }
.cands{ display:grid; gap:.7rem; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); }
.cand{ border:1px solid rgba(128,128,128,.24); border-radius:.36rem; padding:.6rem .7rem; }
.cand header{ display:flex; justify-content:space-between; align-items:baseline; gap:.5rem; margin-bottom:.35rem; }
.cand-nature{ font-size:.64rem; letter-spacing:.07em; opacity:.6; }
.cand-conf{ font-size:.62rem; letter-spacing:.06em; padding:.1rem .35rem; border-radius:.18rem; }
.cand-conf--high{ background:rgba(120,200,140,.2); }
.cand-conf--medium{ background:rgba(220,180,110,.18); }
.cand-conf--low{ background:rgba(128,128,128,.16); }
.cand-source-txt{ font-size:.76rem; line-height:1.4; margin:0 0 .5rem; opacity:.85; }
.cand-attrs{ display:grid; grid-template-columns:1fr 1fr; gap:.25rem .7rem; margin:0 0 .5rem; }
.cand-attr dt{ font-size:.62rem; letter-spacing:.04em; opacity:.5; }
.cand-attr dd{ margin:0; font-size:.76rem; display:flex; align-items:baseline; gap:.3rem; }
.cand-attr dd em{ font-size:.55rem; letter-spacing:.05em; font-style:normal; opacity:.45; }
.cand-attr dd.is-inconnu{ opacity:.45; }
.cand-attr dd.is-prouve{ font-weight:600; }
.cand footer{ border-top:1px solid rgba(128,128,128,.16); padding-top:.4rem; font-size:.7rem; line-height:1.45; }
.cand footer p{ margin:.15rem 0; opacity:.78; }
.cand footer strong{ opacity:.55; font-size:.62rem; letter-spacing:.05em; margin-right:.25rem; }
.cand-conflit{ color:rgba(200,140,90,.95); }
.cand-conflit code{ padding:.04rem .2rem; border-radius:.16rem; background:rgba(128,128,128,.18); }
.cand-conflit em, .cand-match em{ font-style:normal; opacity:.6; }
.cand-id strong{ opacity:.5; }

/* --- MEDIA DETAIL — vraie page ------------------------------------------- */
.md-page{ max-width:72rem; }
.md-fil{ margin-bottom:.6rem; }
.md-fil .ctl-lien{ color:inherit !important; opacity:.7; }
.md-fold{ display:grid; grid-template-columns:minmax(240px,380px) 1fr; gap:2rem; align-items:start; }
.md-visuel img{ width:100%; border-radius:.4rem; display:block; background:rgba(128,128,128,.08); }
.md-infos h1{ margin:.1rem 0 .3rem; font-size:1.3rem; line-height:1.25; }
.md-ref code{ font-size:.72rem; padding:.14rem .4rem; border-radius:.2rem; background:rgba(128,128,128,.14); }
.md-infos h3{ font-size:.72rem; letter-spacing:.07em; opacity:.55; margin:1.1rem 0 .35rem;
  padding-bottom:.22rem; border-bottom:1px solid rgba(128,128,128,.18); }
.md-dl{ display:grid; gap:.35rem; margin:0; }
.md-champ{ display:grid; grid-template-columns:11rem 1fr; gap:.8rem; align-items:baseline; }
.md-champ dt{ font-size:.68rem; opacity:.55; letter-spacing:.03em; }
.md-champ dd{ margin:0; font-size:.82rem; line-height:1.45; }
.md-champ dd em{ font-style:normal; font-size:.7rem; opacity:.62; display:block; }
.md-champ .is-inconnu{ opacity:.45; }
.md-suspect{ color:rgba(200,140,90,.95) !important; }
.md-alerte dd{ color:rgba(200,140,90,.95); }
.md-unlinked dd strong{ letter-spacing:.05em; font-size:.76rem; }
.md-etat--browser_playable{ color:rgba(110,190,130,1); }
.md-etat--needs_transcode{ color:rgba(220,180,110,1); }
.md-etat--not_a_media, .md-etat--broken{ color:rgba(220,120,120,1); }
@media (max-width:900px){ .md-fold{ grid-template-columns:1fr; } }

/* ═══ PILOT_001 · LES UNKNOWN · LA MATRICE ML/MO ═══════════════════════════
   Trois blocs qui rendent les limites du système consultables à l'écran.
   Un défaut affiché vaut mieux qu'un défaut connu du seul développeur. */

.pilote{border:1px solid var(--trait,#d8d2c6);border-left:3px solid #7a6a52;
  background:#fdfcfa;border-radius:6px;padding:20px 22px}
.pilote-reco{font-size:1.05rem;line-height:1.5;margin:.2rem 0 1rem;color:#3a3227}
.pilote-corps{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
@media (max-width:860px){.pilote-corps{grid-template-columns:1fr}}
.pilote h4{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;
  color:#8a7f6d;margin:0 0 .5rem}
.pilote-spec dl{margin:0}
.pilote-champ{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid #efeae0}
.pilote-champ dt{flex:0 0 78px;font-size:.78rem;color:#8a7f6d}
.pilote-champ dd{margin:0;font-size:.85rem}
.pilote-champ dd code{background:#2f2a22;color:#f6f2ea;padding:1px 6px;border-radius:3px;
  font-size:.76rem;letter-spacing:.04em}
.pilote-champ dd em{display:block;color:#9a9081;font-style:normal;font-size:.73rem;margin-top:2px}
.pilote-emp{margin:.9rem 0 .4rem;font-size:.8rem}
.pilote-emp code{background:#f0ece3;padding:2px 7px;border-radius:3px;font-size:.78rem}
.pilote-emp em{color:#9a9081;font-style:normal}
.pilote-fournisseur{font-size:.78rem;color:#7a7365;background:#f5f2eb;padding:8px 10px;
  border-radius:4px;margin:.5rem 0 0}
.pilote-pour,.pilote-contre{margin:0 0 .8rem;padding-left:1.05rem;font-size:.82rem;line-height:1.5}
.pilote-pour li{color:#3f4a35}
.pilote-contre li{color:#7a5a3a}
.pilote-ecart{font-size:.8rem;color:#6b6355;margin:0}
.pilote-arret{margin:1rem 0 .6rem;padding:10px 12px;background:#f7f2e8;border-left:2px solid #b09a6a;
  font-size:.82rem;line-height:1.5;color:#5a5142}
.pilote-classement{font-size:.8rem;margin:.4rem 0}
.pilote-classement summary{cursor:pointer;color:#7a6a52}
.pilote-classement ol{margin:.6rem 0 0;padding-left:1.4rem;line-height:1.7}
.pilote-classement em{color:#9a9081;font-style:normal;display:block;font-size:.75rem}
.pilote-apres{font-size:.75rem;color:#8a8172;line-height:1.6;margin:.8rem 0 .4rem}

.unknowns{margin-top:26px}
.unk-intro{font-size:.85rem;line-height:1.6;color:#5a5449;max-width:74ch}
.unks{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:12px;margin:14px 0}
.unk{border:1px solid #e3ddd1;border-radius:5px;padding:11px 13px;background:#fff;font-size:.79rem}
.unk--reste{border-left:3px solid #9a8f7d}
.unk--propose{border-left:3px solid #b09a6a}
.unk--resolu{border-left:3px solid #7d9070}
.unk header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.unk-tag{font-size:.63rem;letter-spacing:.08em;text-transform:uppercase;color:#8a7f6d}
.unk header code{font-size:.72rem;color:#5a5449}
.unk-extrait{margin:0 0 .5rem;color:#3f3a32;line-height:1.45}
.unk-just{margin:0 0 .4rem;color:#8a8172;font-size:.74rem;line-height:1.45}
.unk-res{margin:0 0 .3rem;font-size:.76rem}
.unk-res em{color:#8a8172;font-style:normal;margin-left:6px;font-size:.7rem}
.unk-doc{margin:0;font-size:.7rem;color:#a49b8c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.unk-regle{font-size:.75rem;color:#8a8172;line-height:1.55;max-width:78ch}

.mlmo{margin-top:26px}
.mlmo-intro{font-size:.85rem;line-height:1.6;color:#5a5449;max-width:78ch}
.mlmo-intro code{background:#f0ece3;padding:1px 5px;border-radius:3px;font-size:.78rem}
.mlmo-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 10px}
.mlmo-tab{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:7px 12px;
  border:1px solid #ded8cc;background:#fff;border-radius:4px;cursor:pointer;font:inherit}
.mlmo-tab strong{font-size:.98rem;color:#3a3227}
.mlmo-tab span{font-size:.68rem;color:#8a7f6d;letter-spacing:.03em}
.mlmo-tab.is-active{background:#2f2a22;border-color:#2f2a22}
.mlmo-tab.is-active strong,.mlmo-tab.is-active span{color:#f6f2ea}
.mlmo-tab[disabled]{opacity:.4;cursor:default}
.mlmo-wrap{overflow-x:auto;border:1px solid #e3ddd1;border-radius:5px;background:#fff}
.mlmo-table{width:100%;border-collapse:collapse;font-size:.78rem;
  font-variant-numeric:tabular-nums}
.mlmo-table th{text-align:left;padding:9px 10px;background:#f7f4ee;color:#7a7265;
  font-weight:600;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;
  border-bottom:1px solid #e3ddd1;white-space:nowrap}
.mlmo-table td{padding:8px 10px;border-bottom:1px solid #f0ece4;vertical-align:top}
.mlmo-table td.num{text-align:right;color:#5a5449}
.mlmo-table tr:last-child td{border-bottom:0}
.mlmo-ref code{font-weight:600;color:#2f2a22}
.mlmo-ref em{display:block;font-style:normal;font-size:.66rem;color:#a49b8c}
.mlmo-badge{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;
  border-radius:3px;font-size:.72rem;font-weight:600;background:#efeae0;color:#5a5449}
.mlmo-badge{width:auto;padding:2px 8px;font-size:.66rem;letter-spacing:.03em}
.mlmo-r--r1 .mlmo-badge{background:#3f4a35;color:#f2f5ef}
.mlmo-r--r2 .mlmo-badge{background:#7a6a52;color:#f6f2ea}
.mlmo-r--r3 .mlmo-badge{background:#e8e3d8;color:#6b6355}
.mlmo-r--r4 .mlmo-badge{background:#f0eeea;color:#9a938a}
.mlmo-legende{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:8px 20px;margin:12px 0 0}
.mlmo-legende dt{font-size:.76rem;font-weight:600;color:#3a3227}
.mlmo-legende dd{margin:0;font-size:.72rem;color:#8a8172;line-height:1.45}
.mlmo-legende code{font-size:.68rem;background:#f0ece3;padding:1px 4px;border-radius:2px}
.mlmo-conf{font-size:.66rem;letter-spacing:.05em;padding:2px 6px;border-radius:3px}
.mlmo-conf--high{background:#e6ede0;color:#3f4a35}
.mlmo-conf--medium{background:#f2ece0;color:#7a6a52}
.mlmo-conf--low{background:#f0eeea;color:#8a8172}
.mlmo-manque{color:#8a8172;font-size:.71rem;line-height:1.45;max-width:29ch}
.mlmo-table .is-absent{color:#b8b0a2;font-style:italic}
.mlmo-methode{font-size:.74rem;color:#8a8172;line-height:1.55;margin-top:10px;max-width:80ch}
