{
  "name": "Vignette statistique sur accent",
  "family": "card",
  "ref": "ref-06-orange-notched",
  "intent": "Faire porter UN chiffre par un aplat d'accent chanfreiné, avec son cadrage (micro-libellé au-dessus) et son commentaire (corps collé en bas), de façon à ce que le chiffre se lise avant le texte.",
  "when_to_use": "Preuve chiffrée d'une slide : croissance, volume livré, part de marché. Une seule par slide, posée en tête de rangée ou en recouvrement du bas d'une photo pour ancrer l'accent.",
  "avoid_when": "Le chiffre a besoin d'être comparé à d'autres (il faut un graphique), il n'y a pas de commentaire à mettre (la vignette se vide et le chanfrein devient un ornement seul), ou le texte descend sous 16 px — sur cet orange le contraste ne tient plus (3,4:1, valable seulement en grand corps).",
  "tags": [
    "stat",
    "chiffre",
    "kpi",
    "vignette",
    "carte",
    "accent",
    "chanfrein",
    "notch",
    "flèche",
    "deck",
    "preuve"
  ],
  "vars": [
    {
      "name": "--vl-orange",
      "role": "aplat d'accent porteur",
      "default": "#F2551E"
    },
    {
      "name": "--vl-white",
      "role": "chiffre et glyphe",
      "default": "#FFFFFF"
    },
    {
      "name": "--vl-ink-muted-invert",
      "role": "corps sur l'aplat (jamais du blanc pur, mais pas plus sombre que 3:1 non plus)",
      "default": "#FFF1E9"
    },
    {
      "name": "--vl-notch",
      "role": "longueur du chanfrein",
      "default": "32px"
    }
  ],
  "slots": [
    "kicker",
    "figure",
    "arrow",
    "body"
  ],
  "geometry": {
    "root": ".vl-stat",
    "frame": [
      430,
      340
    ],
    "ratios": {
      "pad_x_over_width": 0.079,
      "notch_over_width": 0.074,
      "figure_over_kicker": 5.33,
      "body_top_over_height": 0.66
    },
    "type_px": {
      "kicker": 12,
      "figure": 64,
      "body": 17,
      "arrow": 34
    },
    "pad_ratio": {
      "top": 0.074,
      "x": 0.079,
      "bottom": 0.084
    }
  },
  "benchmarks": [
    {
      "name": "chanfrein ≈ 7,5 % de la largeur",
      "measure": "notch('.vl-stat') / W",
      "expect": 0.075,
      "tol": 0.015
    },
    {
      "name": "chanfrein sur le coin BAS-droit (l'orientation marque le premier rang)",
      "measure": "notchCorner('.vl-stat') === 'br' ? 1 : 0",
      "expect": 1
    },
    {
      "name": "marge intérieure gauche ≈ 8 % de la largeur",
      "measure": "num('.vl-stat','paddingLeft') / W",
      "expect": 0.08,
      "tol": 0.02
    },
    {
      "name": "saut typographique chiffre / micro-libellé ≥ 4,5",
      "measure": "num('.vl-stat__figure','fontSize') / num('.vl-stat__kicker','fontSize')",
      "min": 4.5
    },
    {
      "name": "le corps est bien en bas (haut du bloc entre 50 % et 85 % de la hauteur)",
      "measure": "box('.vl-stat__body').top / H",
      "min": 0.5,
      "max": 0.85
    },
    {
      "name": "aucun débordement du corps sous la marge basse",
      "measure": "H - num('.vl-stat','paddingBottom') - box('.vl-stat__body').bottom",
      "min": -1
    },
    {
      "name": "le corps s'arrête AVANT le chanfrein (il ne rentre pas dans la coupe)",
      "measure": "W - num('.vl-stat','paddingRight') - box('.vl-stat__body').right",
      "min": -1
    },
    {
      "name": "glyphe calé dans le coin haut-droit (≤ 12 % du bord)",
      "measure": "(W - box('.vl-stat__arrow').right) / W",
      "max": 0.12
    },
    {
      "name": "contraste du chiffre ≥ 3 (grand corps, seuil WCAG large text)",
      "measure": "contrast('.vl-stat__figure')",
      "min": 3
    },
    {
      "name": "corps ≥ 16 px — en dessous, 3,4:1 sur cet orange n'est plus lisible",
      "measure": "num('.vl-stat__body','fontSize')",
      "min": 16
    },
    {
      "name": "mesure de garde : le corps ne dépasse pas 34 caractères de large",
      "measure": "box('.vl-stat__body').w / num('.vl-stat__body','fontSize')",
      "max": 19
    },
    {
      "name": "contraste du corps ≥ 3 (l'aplat d'accent ne pardonne rien en dessous)",
      "measure": "contrast('.vl-stat__body')",
      "min": 3
    }
  ],
  "pptx": {
    "primitive": "notched_rect",
    "emitter": "kit/vl_pptx.py:stat_block",
    "pattern": "card-03-stat-accent"
  },
  "notes": "Le vide entre le chiffre et le corps est une DÉCISION, pas un manque : il sépare la donnée de son commentaire. C'est la seule vignette du système où la règle « remplis l'espace » ne s'applique pas telle quelle — mais elle est bornée par benchmark (le corps démarre entre 50 % et 85 % de la hauteur), sinon on retombe sur un bloc qui flotte au milieu. Le corps n'est jamais en blanc pur : un blanc pur à 17 px rivalise avec le chiffre à 64 px et la hiérarchie tombe. Sur l'orange #F2551E, le blanc plafonne à 3,4:1 — donc grand corps seulement, jamais de 11 px. Le benchmark de contraste du CORPS a été ajouté après coup : le harnais HTML ne testait que le chiffre, et c'est l'audit .pptx du kit qui a attrapé le corps à 2,77:1. Quand un contrôle attrape ce que l'autre laisse passer, l'assertion manquante se pose des DEUX côtés.",
  "media": [
    "slide",
    "social",
    "web"
  ],
  "id": "card-03-stat-accent"
}