chart-01-stadium-bars
layout-01-nested-bento
Bento à cartes imbriquées
Structurer une slide dense en trois niveaux (carte → sous-carte → tuile) sans une seule bordure ni ombre, en ne faisant décroître que le rayon et le padding.
layoutslideweb652×300pxaucun benchmark
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
Slide de chiffres ou de preuves où il faut caser 4 à 8 informations sans que ça ressemble à un tableau. C'est le squelette par défaut d'un deck investisseur moderne.
Éviter quand
Il n'y a qu'une seule idée sur la slide — l'imbrication crée alors une hiérarchie qui ne correspond à rien. Et sur un support imprimé en petit format, les tuiles descendent sous le seuil de lisibilité.
Notes
L'échelle de rayons (24 → 20 → 16) est la seule chose qui fait lire la profondeur : garder un rayon constant aplatit la composition, l'augmenter vers l'intérieur la fait paraître bombée. Le padding décroît en parallèle (36 → 24 → 18). Corollaire : ne jamais ajouter de bordure ou d'ombre pour « mieux séparer » — ce serait avouer que l'échelle de rayons est mal réglée. Les libellés de tuile sont collés en bas (margin-top:auto), sinon la rangée se désaligne dès qu'un contenu change de longueur.
Mots-clés
Le code
patterns/layout-01-nested-bento.html
Télécharger<!-- layout-01-nested-bento — fragment autonome. Couleurs via --vl-* uniquement. -->
<section class="vl-bento">
<div class="vl-bento__card vl-bento__card--light">
<h2 class="vl-bento__title">Our<br>Highlights</h2>
<p class="vl-bento__body">Niveau 1 : la carte. Rayon 24, padding 36. Elle porte le titre
et rien d'autre de structurant.</p>
</div>
<div class="vl-bento__card vl-bento__card--dark vl-bento__grid">
<div class="vl-bento__tile" style="background:var(--vl-accent);color:var(--vl-ink)">
<span class="vl-bento__figure">$2M</span>
<span class="vl-bento__micro">ARR achieved<br>in 12 months</span>
</div>
<div class="vl-bento__tile" style="background:var(--vl-surface-tile);color:var(--vl-ink-invert)">
<span class="vl-bento__figure">30,000+</span>
<span class="vl-bento__micro">active users<br>worldwide</span>
</div>
<div class="vl-bento__tile" style="background:var(--vl-surface-tile);color:var(--vl-ink-invert)">
<span class="vl-bento__micro">Niveau 3 : la tuile.<br>Rayon 16, padding 18.</span>
</div>
<div class="vl-bento__tile" style="background:var(--vl-accent);color:var(--vl-ink)">
<span class="vl-bento__figure">87%</span>
<span class="vl-bento__micro">Customer<br>retention rate</span>
</div>
</div>
</section>
<style>
/* Trois niveaux d'imbrication, et UNE seule règle qui les fait lire :
le rayon DÉCROÎT à chaque niveau (24 → 20 → 16) et le padding aussi (36 → 24 → 18).
C'est cette décroissance qui donne la profondeur — d'où l'absence totale de bordures,
d'ombres et de séparateurs. Garder un rayon constant à tous les niveaux fait s'aplatir
la composition ; l'augmenter vers l'intérieur la fait paraître bombée. */
.vl-bento { display: flex; gap: var(--vl-gap); align-items: stretch; min-height: 300px; }
.vl-bento__card { flex: 1; border-radius: var(--vl-radius-card); padding: 36px; }
.vl-bento__card--light { background: var(--vl-surface-light); color: var(--vl-ink); }
.vl-bento__card--dark { background: var(--vl-surface-dark); color: var(--vl-ink-invert); padding: 16px; }
.vl-bento__grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 12px; }
.vl-bento__tile {
border-radius: var(--vl-radius-tile); padding: 18px;
display: flex; flex-direction: column; min-height: 120px;
}
.vl-bento__title { margin: 0; font-size: 44px; font-weight: 500; line-height: 1.06; letter-spacing: -0.02em; }
.vl-bento__body { margin: auto 0 0; font-size: 14px; line-height: 1.5; color: var(--vl-ink-muted); max-width: 36ch; }
.vl-bento__figure { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
/* Les libellés sont collés en BAS de chaque tuile : c'est ce qui les aligne entre elles
quel que soit le nombre de lignes du chiffre au-dessus. */
.vl-bento__micro { margin-top: auto; font-size: 11px; line-height: 1.35; opacity: .78; }
</style>
systems/ref-03-bento-dark-pitch.json
Télécharger:root {
--vl-bg: #2E2E2E;
--vl-board: #2E2E2E;
--vl-surface-light: #FFFFFF;
--vl-surface-dark: #111111;
--vl-surface-tile: #3A3A3A;
--vl-accent: #CFE3F5;
--vl-accent-2: #8FBBE4;
--vl-accent-3: #5E9BD6;
--vl-ink: #111111;
--vl-ink-muted: #6B6B6B;
--vl-ink-invert: #FFFFFF;
--vl-ink-invert-muted: #A0A0A0;
--vl-hairline: #D5D5D5;
--vl-hairline-invert: #4A4A4A;
--vl-radius-card: 24px;
--vl-radius-sub: 20px;
--vl-radius-tile: 16px;
--vl-gap: 12px;
}
les métadonnées — patterns/layout-01-nested-bento.json (télécharger)
{
"name": "Bento à cartes imbriquées",
"family": "layout",
"ref": "ref-03-bento-dark-pitch",
"intent": "Structurer une slide dense en trois niveaux (carte → sous-carte → tuile) sans une seule bordure ni ombre, en ne faisant décroître que le rayon et le padding.",
"when_to_use": "Slide de chiffres ou de preuves où il faut caser 4 à 8 informations sans que ça ressemble à un tableau. C'est le squelette par défaut d'un deck investisseur moderne.",
"avoid_when": "Il n'y a qu'une seule idée sur la slide — l'imbrication crée alors une hiérarchie qui ne correspond à rien. Et sur un support imprimé en petit format, les tuiles descendent sous le seuil de lisibilité.",
"tags": [
"bento",
"layout",
"slide",
"cartes",
"imbrication",
"rayon",
"hierarchie",
"deck",
"investisseur",
"grille"
],
"vars": [
{
"name": "--vl-radius-card",
"role": "rayon du niveau 1",
"default": "24px"
},
{
"name": "--vl-radius-sub",
"role": "rayon du niveau 2",
"default": "20px"
},
{
"name": "--vl-radius-tile",
"role": "rayon du niveau 3",
"default": "16px"
},
{
"name": "--vl-gap",
"role": "gouttière entre cartes de même niveau",
"default": "12px"
}
],
"slots": [
"title",
"body",
"tiles"
],
"notes": "L'échelle de rayons (24 → 20 → 16) est la seule chose qui fait lire la profondeur : garder un rayon constant aplatit la composition, l'augmenter vers l'intérieur la fait paraître bombée. Le padding décroît en parallèle (36 → 24 → 18). Corollaire : ne jamais ajouter de bordure ou d'ombre pour « mieux séparer » — ce serait avouer que l'échelle de rayons est mal réglée. Les libellés de tuile sont collés en bas (margin-top:auto), sinon la rangée se désaligne dès qu'un contenu change de longueur.",
"id": "layout-01-nested-bento"
}
À côté
chart-02-isotype
Isotype à taux de remplissage
layout-02-swiss-frame
Cadre suisse header / footer
layout-03-glass-board
Écran en verre dépoli — fond dégradé + modules
layout-04-graph-paper-cells
Papier millimétré et ses cases
layout-05-nav-pill-bar