card-13-email-figure-band
layout-02-swiss-frame
Cadre suisse header / footer
Poser le cadre d'une slide de deck : une marge unique, deux barres de micro-typo à trois zones et un filet d'un pixel — de quoi rendre une suite de slides reconnaissable sans y ajouter le moindre ornement.
layoutslideweb621×703pxaucun 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
Deck de plus de trois slides qui doit tenir comme un document : le header rappelle la section, le footer numérote. C'est aussi ce qui autorise les fonds pleins à alterner sans que le deck se disloque.
Éviter quand
Slide unique, visuel de réseau social, ou support projeté de loin : à 8 px les barres ne se lisent pas, elles ne sont là que pour tenir la page.
Notes
Trois réglages font tout le travail. 1) MARGE UNIQUE : la même valeur sur les quatre côtés (48 px pour une slide 1600×900), sinon les barres cessent d'être alignées sur le contenu et le cadre se voit. 2) ZONES ÉGALES : les trois cellules d'une barre sont en `flex: 1`, jamais dimensionnées au contenu — c'est ce qui garde la mention centrale au centre optique quand les textes latéraux changent de longueur. 3) FILET INVERSÉ : sur fond plein, le filet passe de noir 9 % à blanc 20 % ; un filet noir sur fond bleu disparaît et le header se met à flotter. La marque (le logo) est la seule exception à la micro-typo : elle garde son poids et sa casse, c'est ce qui l'empêche de se confondre avec la mention de section.
Mots-clés
Le code
patterns/layout-02-swiss-frame.html
Télécharger<!-- layout-02-swiss-frame — fragment autonome. Couleurs via --vl-* uniquement.
Deux variantes empilées : fond clair (filet noir à 9 %) et fond plein (filet blanc à 20 %). -->
<div class="vl-swiss vl-swiss--light">
<div class="vl-swiss__bar vl-swiss__bar--head">
<span class="vl-swiss__mark">northbeam</span>
<span>Business model</span>
<span>Series A — 2026</span>
</div>
<div class="vl-swiss__body">
<h2 class="vl-swiss__demo">Zone de contenu</h2>
<p class="vl-swiss__note">La marge est unique (48 px) et vaut pour les quatre côtés :
header, footer et contenu sont alignés sur la même verticale.</p>
</div>
<div class="vl-swiss__bar vl-swiss__bar--foot">
<span>northbeam.example</span>
<span>Investor relations</span>
<span>06 / 10</span>
</div>
</div>
<div class="vl-swiss vl-swiss--fill">
<div class="vl-swiss__bar vl-swiss__bar--head">
<span class="vl-swiss__mark">northbeam</span>
<span>Traction</span>
<span>Series A — 2026</span>
</div>
<div class="vl-swiss__body">
<h2 class="vl-swiss__demo">Même cadre, fond plein</h2>
<p class="vl-swiss__note">Seule la couleur du filet change. Rien d'autre ne bouge : c'est
ce qui fait tenir l'alternance des fonds d'une slide à l'autre.</p>
</div>
<div class="vl-swiss__bar vl-swiss__bar--foot">
<span>northbeam.example</span>
<span>Investor relations</span>
<span>08 / 10</span>
</div>
</div>
<style>
/* Le cadre entier tient en trois règles : une marge unique, deux barres en micro-typo, un
filet d'un pixel. Les trois zones de chaque barre sont des colonnes de largeur ÉGALE
(`flex: 1`) — c'est ce qui garde la mention centrale optiquement au centre même quand les
textes de gauche et de droite n'ont pas la même longueur. */
.vl-swiss {
--vl-margin: 48px;
padding: var(--vl-margin);
display: flex; flex-direction: column;
min-height: 300px; margin-bottom: 24px;
font-family: "Helvetica Neue", Inter, Arial, sans-serif;
}
.vl-swiss--light { background: var(--vl-white); color: var(--vl-black); }
.vl-swiss--fill { background: var(--vl-blue); color: var(--vl-white); }
.vl-swiss__bar {
display: flex; justify-content: space-between; align-items: baseline;
font-size: 8px; line-height: 1.4; font-weight: 500;
letter-spacing: 0.12em; text-transform: uppercase;
border-color: var(--vl-hairline); border-style: solid; border-width: 0;
}
.vl-swiss--fill .vl-swiss__bar { border-color: var(--vl-hairline-invert); }
.vl-swiss__bar--head { padding-bottom: 14px; border-bottom-width: 1px; }
.vl-swiss__bar--foot { margin-top: auto; padding-top: 14px; border-top-width: 1px; }
.vl-swiss__bar > * { flex: 1; }
.vl-swiss__bar > :nth-child(2) { text-align: center; }
.vl-swiss__bar > :last-child { text-align: right; }
/* La marque échappe à la micro-typo : c'est le seul élément des barres qui a un poids. */
.vl-swiss__mark { font-size: 13px; font-weight: 900; letter-spacing: -0.02em; text-transform: none; }
.vl-swiss__body { padding: 40px 0; }
.vl-swiss__demo { margin: 0; font-size: 40px; font-weight: 900; letter-spacing: -0.02em; text-transform: uppercase; }
.vl-swiss__note { margin: 16px 0 0; max-width: 52ch; font-size: 13px; line-height: 1.5; color: var(--vl-ink-muted); }
.vl-swiss--fill .vl-swiss__note { color: var(--vl-ink-muted-invert); }
</style>
systems/ref-04-swiss-investor-blue.json
Télécharger:root {
--vl-bg: #D9D2C7;
--vl-board: #D9D2C7;
--vl-blue: #1B44D8;
--vl-black: #0D0D0D;
--vl-white: #FFFFFF;
--vl-ink-muted: #6E6E6E;
--vl-ink-muted-invert: #D3D3D3;
--vl-hairline: #00000018;
--vl-hairline-invert: #FFFFFF33;
--vl-ph-a: #C9C9C9;
--vl-ph-b: #5A5A5A;
--vl-margin: 48px;
}
les métadonnées — patterns/layout-02-swiss-frame.json (télécharger)
{
"name": "Cadre suisse header / footer",
"family": "layout",
"ref": "ref-04-swiss-investor-blue",
"intent": "Poser le cadre d'une slide de deck : une marge unique, deux barres de micro-typo à trois zones et un filet d'un pixel — de quoi rendre une suite de slides reconnaissable sans y ajouter le moindre ornement.",
"when_to_use": "Deck de plus de trois slides qui doit tenir comme un document : le header rappelle la section, le footer numérote. C'est aussi ce qui autorise les fonds pleins à alterner sans que le deck se disloque.",
"avoid_when": "Slide unique, visuel de réseau social, ou support projeté de loin : à 8 px les barres ne se lisent pas, elles ne sont là que pour tenir la page.",
"tags": [
"layout",
"cadre",
"header",
"footer",
"deck",
"slide",
"suisse",
"filet",
"micro-typo",
"grille",
"marge"
],
"vars": [
{
"name": "--vl-hairline",
"role": "filet sous le header sur fond clair",
"default": "#00000018"
},
{
"name": "--vl-hairline-invert",
"role": "filet sur fond plein (bleu ou noir)",
"default": "#FFFFFF33"
},
{
"name": "--vl-white",
"role": "fond des slides claires",
"default": "#FFFFFF"
},
{
"name": "--vl-blue",
"role": "fond des slides pleines",
"default": "#1B44D8"
},
{
"name": "--vl-ink-muted",
"role": "corps de texte sur fond clair",
"default": "#6E6E6E"
}
],
"slots": [
"mark",
"section",
"meta",
"body",
"footer-left",
"footer-center",
"footer-right"
],
"notes": "Trois réglages font tout le travail. 1) MARGE UNIQUE : la même valeur sur les quatre côtés (48 px pour une slide 1600×900), sinon les barres cessent d'être alignées sur le contenu et le cadre se voit. 2) ZONES ÉGALES : les trois cellules d'une barre sont en `flex: 1`, jamais dimensionnées au contenu — c'est ce qui garde la mention centrale au centre optique quand les textes latéraux changent de longueur. 3) FILET INVERSÉ : sur fond plein, le filet passe de noir 9 % à blanc 20 % ; un filet noir sur fond bleu disparaît et le header se met à flotter. La marque (le logo) est la seule exception à la micro-typo : elle garde son poids et sa casse, c'est ce qui l'empêche de se confondre avec la mention de section.",
"id": "layout-02-swiss-frame"
}
À côté
layout-01-nested-bento
Bento à cartes imbriquées
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
Barre de menu en pilule flottante
layout-06-bento-l-span