{
  "name": "Affiche papier quadrillé à deux blocs",
  "family": "card",
  "ref": "ref-24-finengy-paper-selection",
  "intent": "Tenir un post social 4:5 entier avec DEUX blocs de texte et rien d'autre — une accroche monumentale qui remplit la largeur, une chute deux fois plus petite en dessous — posés sur un papier quadrillé qui sert de repère d'alignement, et une bande basse réservée d'avance au repère de marque.",
  "when_to_use": "Une thèse sans chiffre-héros, à publier en post image 1080×1350 : le sujet tient en une affirmation de 5 à 7 mots et son commentaire de 10 à 13. Le quadrillage donne au bloc typographique une assise que le blanc pur ne donne pas, et il se photographie bien dans un fil.",
  "avoid_when": "L'actu EST un chiffre (le chiffre-héros doit alors dominer, ce n'est pas cette composition), la copie dépasse ~19 mots au total (le corps tombe sous le plancher social de 2,2 % de la largeur), ou le canal n'est pas un cadre portrait — en 16:9 les deux blocs s'étalent et l'accroche cesse d'être monumentale.",
  "media": [
    "social"
  ],
  "tags": [
    "carte",
    "affiche",
    "poster",
    "papier",
    "quadrillage",
    "grille",
    "millimetre",
    "social",
    "portrait",
    "4-5",
    "accroche",
    "chute",
    "deux-blocs",
    "typographie",
    "monumental",
    "linkedin",
    "decryptage",
    "bande-logo",
    "pied"
  ],
  "vars": [
    {
      "name": "--vl-bg",
      "role": "le papier — un blanc cassé, jamais du blanc pur : c'est lui qui laisse la grille exister",
      "default": "#F6F5F1"
    },
    {
      "name": "--vl-ink",
      "role": "encre pleine des deux blocs, sans gris intermédiaire",
      "default": "#142A4E"
    },
    {
      "name": "--vl-grid",
      "role": "trait du quadrillage — 16 % d'encre : sous 12 % il disparaît dans un fil, au-dessus de 20 % il concurrence le texte",
      "default": "rgba(20,42,78,0.16)"
    },
    {
      "name": "--vl-grid-step",
      "role": "pas du quadrillage, en px — 2,5 % de la largeur de carte",
      "default": "27px"
    },
    {
      "name": "--vl-glow",
      "role": "halo central qui éclaircit le papier sous le texte",
      "default": "rgba(255,255,255,0.5)"
    },
    {
      "name": "--vl-margin-x",
      "role": "fer gauche — serré, l'accroche part au bord",
      "default": "40px"
    },
    {
      "name": "--vl-margin-top",
      "role": "réserve haute : l'accroche monte HAUT",
      "default": "52px"
    },
    {
      "name": "--vl-footer",
      "role": "bande basse réservée au repère de marque ; c'est un padding, jamais une marge du bloc",
      "default": "196px"
    }
  ],
  "slots": [
    "accroche",
    "chute",
    "marque"
  ],
  "geometry": {
    "root": ".vl-paper-grid",
    "frame": [
      1080,
      1350
    ],
    "ratios": {
      "width_over_height": 0.8,
      "grid_step_over_width": 0.025,
      "margin_x_over_width": 0.037,
      "footer_over_height": 0.145,
      "hook_over_drop": 1.588,
      "gap_over_height": 0.0415
    },
    "type_px": {
      "accroche": 154,
      "chute": 97
    },
    "pad_ratio": {
      "top": 0.0385,
      "x": 0.037,
      "bottom": 0.145
    }
  },
  "benchmarks": [
    {
      "name": "cadre portrait 4:5 — le format du post, pas un choix de composition",
      "measure": "W / H",
      "expect": 0.8,
      "tol": 0.005
    },
    {
      "name": "pas du quadrillage ≈ 2,5 % de la largeur",
      "measure": "parseFloat(cs('.vl-paper-grid','--pg-step')) / W",
      "expect": 0.025,
      "tol": 0.006
    },
    {
      "name": "LE PAPIER EST UN FOND PLEIN : la grille est une background-image posée dessus, sinon le contraste se mesure contre du transparent",
      "measure": "cs('.vl-paper-grid','backgroundColor').indexOf('rgba(0, 0, 0, 0)') === 0 ? 0 : 1",
      "expect": 1
    },
    {
      "name": "le quadrillage est bien là : deux répétitions linéaires dans la background-image",
      "measure": "(cs('.vl-paper-grid','backgroundImage').match(/repeating-linear-gradient/g) || []).length",
      "expect": 2,
      "tol": 0
    },
    {
      "name": "fer gauche serré ≈ 3,7 % de la largeur — plus étroit que la marge droite",
      "measure": "num('.vl-paper-grid','paddingLeft') / W",
      "expect": 0.037,
      "tol": 0.008
    },
    {
      "name": "l'accroche MONTE : elle colle la réserve haute",
      "measure": "box('.vl-paper-grid__hook').top - num('.vl-paper-grid','paddingTop')",
      "expect": 0,
      "tol": 3
    },
    {
      "name": "BANDE DE MARQUE RÉSERVÉE ≈ 14,5 % de la hauteur, et c'est un padding",
      "measure": "num('.vl-paper-grid','paddingBottom') / H",
      "expect": 0.145,
      "tol": 0.02
    },
    {
      "name": "le repère de marque tient DANS la bande : il ne remonte jamais sur le texte",
      "measure": "box('.vl-paper-grid__mark').top - (H - num('.vl-paper-grid','paddingBottom'))",
      "min": 0
    },
    {
      "name": "saut typographique accroche / chute entre 1,45 et 1,75 — deux rangs, pas deux tailles voisines",
      "measure": "num('.vl-paper-grid__hook','fontSize') / num('.vl-paper-grid__drop','fontSize')",
      "min": 1.45,
      "max": 1.75
    },
    {
      "name": "respiration entre les deux blocs ≈ 4,2 % de la hauteur",
      "measure": "num('.vl-paper-grid__drop','marginTop') / H",
      "expect": 0.0415,
      "tol": 0.012
    },
    {
      "name": "PLANCHER SOCIAL : le plus petit corps ≥ 2,2 % de la largeur du cadre",
      "measure": "num('.vl-paper-grid__drop','fontSize') / W",
      "min": 0.022
    },
    {
      "name": "le bloc typographique remplit la zone utile : au plus une ligne de chute de libre au-dessus de la bande",
      "measure": "(H - num('.vl-paper-grid','paddingBottom')) - box('.vl-paper-grid__drop').bottom",
      "min": -2,
      "max": 130
    },
    {
      "name": "contraste de l'accroche ≥ 4,5",
      "measure": "contrast('.vl-paper-grid__hook')",
      "min": 4.5
    },
    {
      "name": "contraste de la chute ≥ 4,5",
      "measure": "contrast('.vl-paper-grid__drop')",
      "min": 4.5
    },
    {
      "name": "aucun débordement hors du cadre",
      "measure": "overflow('.vl-paper-grid')",
      "max": 0
    }
  ],
  "notes": "Deux lois portent ce pattern. (1) LA BANDE BASSE EST UN PADDING, pas une marge du dernier bloc : le repère de marque est en position absolue, donc il ne pousse rien — sans la réserve, le texte descend le TOUCHER et aucun contrôle ne s'en plaint, puisque rien ne déborde. C'est la faute jumelle du piège logo des gabarits Finengy : retirer le logo de la mesure supprime aussi le contrôle de sa collision. (2) LE FOND EST UN COUPLE background-color + background-image, dans cet ordre : `bin/check.mjs` lit `background-color` et ne voit jamais une image, donc un papier peint uniquement en gradient rendrait tous les contrastes contre du transparent. Le halo radial est le troisième calque de la même image — il éclaircit le centre sous le texte sans ajouter de couche au sens de check-deck. La composition n'a AUCUN filet, aucune vignette, aucun aplat : ce qui structure est le quadrillage, et il est sous tout. Pour accentuer un mot de la chute, poser shape-05-text-selection dessus — c'est le seul accent que cette charte autorise.",
  "id": "card-16-paper-grid-poster"
}