/* =========================================
= COMPOSANT — MANIFESTE (.nl-manifest) — composant PARTAGÉ
= Grille 2 colonnes 1 / 3.5 : libellé à gauche, texte d'accroche à droite.
= Empilées sous 64rem. Sans libellé : une seule colonne (--inner--solo).
= Markup : manifest.php (libellé + texte en arguments) · JS : manifest.js
= · enqueue : inc-manifest.php
=
= ⚠️ Le CADRE (padding, fond) n'est PAS ici : il appartient à la section
=   appelante (.nl-home-intro, .nl-home-atelier…), qui peut ainsi encadrer le
=   manifeste différemment selon la page. Le composant ne porte que sa grille.
========================================= */

.nl-manifest--inner {
  margin: 0;
  /* 1 part pour le libellé, 3.5 pour le texte (total 4.5). */
  display: grid;
  grid-template-columns: 1fr 3.5fr;
  align-items: start;
  gap: 1.25rem;
}

/* Sans libellé : le texte prend toute la largeur. */
.nl-manifest--inner--solo {
  grid-template-columns: 1fr;
}

/* Libellé de section : petite capitale. Le line-height démesuré (4.5 × 12px,
   soit une ligne de 54px) sert à DESCENDRE le libellé dans sa colonne : il
   vient ainsi se poser plus bas que la 1re ligne du texte, en vis-à-vis
   optique. Volontairement une boîte de ligne et non un padding/margin. */
.nl-manifest--label {
  margin: 0;
  font-family: var(--SR);
  font-size: var(--text-xs);
  line-height: 4.5;
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  color: var(--primary-60);
}

.nl-manifest--title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--text-display-sm);
  color: var(--primary-60);
  font-weight: 400;
  font-style: normal;
}

.nl-manifest--accent {
  font-weight: 400;
  font-style: italic;
  color: var(--primary);
}

@media (max-width: 64rem) {
  .nl-manifest--inner {
    grid-template-columns: 1fr;   /* libellé au-dessus du texte */
    gap: 0.875rem;
  }
}

/* .nl-manifest--common : segments NON accentués de la phrase. Volontairement
   SANS mise en forme propre (elle vient déjà de --title) — la classe sert
   uniquement de découpage pour l'animation et de cible anti-FOUC. */

/* Reveal au scroll (manifest.js) : TOUS les segments du texte sont masqués
   AVANT le JS, uniquement si scripting actif ET animations autorisées → aucun flash.
   Le conteneur --inner n'est PAS masqué : il n'a pas de fond, tout le contenu
   visible est dans les segments. Il ne fait que glisser, ce sont les segments
   qui portent le fondu (sinon l'étape 1 animerait un bloc vide).
   Sans JS / GSAP absent / reduced-motion → visible (le JS révèle en fallback). */
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  .nl-manifest--accent,
  .nl-manifest--common { opacity: 0; }
}
