card-16-paper-grid-poster

Affiche papier quadrillé à deux blocs

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.

cardsocial1080×1350px15 benchmarks

Télécharger le .zip

Le fragment RÉEL, dans son propre document, sur le sol de sa charte — pas une image. Ce que vous voyez est exactement ce que vous collerez.

Employer quand

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.

Éviter quand

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.

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.

Mots-clés

carteafficheposterpapierquadrillagegrillemillimetresocialportrait4-5accrochechutedeux-blocstypographiemonumentallinkedindecryptagebande-logopied

Benchmarks — la géométrie, en assertions vérifiables

Rejouables par node bin/check.mjs card-16-paper-grid-poster : le pattern se prouve, il ne se croit pas.

assertionmesureattendu
cadre portrait 4:5 — le format du post, pas un choix de compositionW / H0.8 ± 0.005
pas du quadrillage ≈ 2,5 % de la largeurparseFloat(cs('.vl-paper-grid','--pg-step')) / W0.025 ± 0.006
LE PAPIER EST UN FOND PLEIN : la grille est une background-image posée dessus, sinon le contraste se mesure contre du transparentcs('.vl-paper-grid','backgroundColor').indexOf('rgba(0, 0, 0, 0)') === 0 ? 0 : 11
le quadrillage est bien là : deux répétitions linéaires dans la background-image(cs('.vl-paper-grid','backgroundImage').match(/repeating-linear-gradient/g) || []).length2 ± 0
fer gauche serré ≈ 3,7 % de la largeur — plus étroit que la marge droitenum('.vl-paper-grid','paddingLeft') / W0.037 ± 0.008
l'accroche MONTE : elle colle la réserve hautebox('.vl-paper-grid__hook').top - num('.vl-paper-grid','paddingTop')0 ± 3
BANDE DE MARQUE RÉSERVÉE ≈ 14,5 % de la hauteur, et c'est un paddingnum('.vl-paper-grid','paddingBottom') / H0.145 ± 0.02
le repère de marque tient DANS la bande : il ne remonte jamais sur le textebox('.vl-paper-grid__mark').top - (H - num('.vl-paper-grid','paddingBottom'))≥ 0
saut typographique accroche / chute entre 1,45 et 1,75 — deux rangs, pas deux tailles voisinesnum('.vl-paper-grid__hook','fontSize') / num('.vl-paper-grid__drop','fontSize')1.45 → 1.75
respiration entre les deux blocs ≈ 4,2 % de la hauteurnum('.vl-paper-grid__drop','marginTop') / H0.0415 ± 0.012
PLANCHER SOCIAL : le plus petit corps ≥ 2,2 % de la largeur du cadrenum('.vl-paper-grid__drop','fontSize') / W≥ 0.022
le bloc typographique remplit la zone utile : au plus une ligne de chute de libre au-dessus de la bande(H - num('.vl-paper-grid','paddingBottom')) - box('.vl-paper-grid__drop').bottom-2 → 130
contraste de l'accroche ≥ 4,5contrast('.vl-paper-grid__hook')≥ 4.5
contraste de la chute ≥ 4,5contrast('.vl-paper-grid__drop')≥ 4.5
aucun débordement hors du cadreoverflow('.vl-paper-grid')≤ 0

Le code

fragment — patterns/card-16-paper-grid-poster.html Télécharger
<!-- card-16-paper-grid-poster — fragment autonome. Couleurs via --vl-* uniquement, aucune valeur en dur. -->
<div class="vl-paper-grid" lang="fr">
  <div class="vl-paper-grid__type">
    <div class="vl-paper-grid__hook">L'IA sait déjà tenir la comptabilité.</div>
    <div class="vl-paper-grid__drop">Les modèles sont prêts. Reste à bâtir l'architecture qui les met au travail.</div>
  </div>
  <div class="vl-paper-grid__mark">Marque</div>
</div>

<style>
.vl-paper-grid {
  --pg-step: var(--vl-grid-step, 27px);
  --pg-foot: var(--vl-footer, 196px);
  position: relative;
  width: 1080px; height: 1350px;
  box-sizing: border-box;
  padding: var(--vl-margin-top, 52px) 56px var(--pg-foot) var(--vl-margin-x, 40px);
  display: flex; flex-direction: column; justify-content: flex-start;
  overflow: hidden;
  font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--vl-ink);
  /* Le papier EST le fond de la racine : la grille se pose en background-image PAR-DESSUS un
     background-color plein. Inversé, le contraste se mesurerait contre du transparent. */
  background-color: var(--vl-bg);
  background-image:
    repeating-linear-gradient(0deg,  var(--vl-grid) 0 1px, transparent 1px var(--pg-step)),
    repeating-linear-gradient(90deg, var(--vl-grid) 0 1px, transparent 1px var(--pg-step)),
    radial-gradient(120% 90% at 50% 45%, var(--vl-glow) 0%, transparent 65%);
}
.vl-paper-grid__type { position: relative; }
.vl-paper-grid__hook {
  font-weight: 900; font-size: 154px; line-height: 1.07; letter-spacing: -4px;
}
.vl-paper-grid__drop {
  font-weight: 800; font-size: 97px; line-height: 1.24; letter-spacing: -1.8px;
  margin-top: 56px;
}
/* La bande basse est RÉSERVÉE par le padding : le repère de marque s'y ancre au coin, il ne
   pousse jamais le texte. Sans la réserve, le bloc typographique descend le toucher. */
.vl-paper-grid__mark {
  position: absolute; right: 56px; bottom: 56px;
  font-weight: 900; font-size: 54px; letter-spacing: -1.5px; line-height: 1;
}
</style>
tokens de la charte — systems/ref-24-finengy-paper-selection.json Télécharger
:root {
  --vl-bg: #F6F5F1;
  --vl-ink: #142A4E;
  --vl-grid: rgba(20,42,78,0.16);
  --vl-grid-step: 27px;
  --vl-glow: rgba(255,255,255,0.5);
  --vl-accent: #FDC300;
  --vl-select: rgba(253,195,0,0.55);
  --vl-handle: #142A4E;
  --vl-select-alt: rgba(124,138,255,0.42);
  --vl-handle-alt: #2C4BE8;
  --vl-handle-bar: 6px;
  --vl-handle-dot: 30px;
  --vl-margin-x: 40px;
  --vl-margin-top: 52px;
  --vl-footer: 196px;
}
les métadonnées — patterns/card-16-paper-grid-poster.json (télécharger)
{
  "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"
}

À côté