EPFL design system catalog
The ENAC IT4R team's working reference for building
EPFL-branded web UI — 20 component and token cards, plus the brand rules and
reference screens. Every card renders the canonical skills/epfl-design/css/epfl.css in
isolation. Generated from preview/*.html; do not edit by hand.
Unofficial. Maintained by the ENAC IT4R team at EPFL ENAC (School of Architecture, Civil and Environmental Engineering). It is distilled from EPFL's official brand guidelines and the epfl-si/elements styleguide, and is not produced or endorsed by EPFL's central brand or communications team. For canonical EPFL brand assets, use the official Elements styleguide.
Brand rules
Enforced by the linter
- No raw hex colors. Use a token:
var(--primary),var(--fg), … Raw values live only intokens/colors_and_type.css(and framework brand-mapping recipes, which are exempt). - No raw
px. Useremor a spacing token (var(--space-*),var(--gutter),var(--radius),var(--border-w)). The wholecss/layer isrem-only on purpose. - Only
Suisse Int'las a font family (Arial is the sanctioned fallback, already in--font-sans). - Never commit or bundle font files. Suisse Int'l is licensed to EPFL; pages load it from
https://enac-it-fonts.epfl.ch(tokens/fonts.css), which serves*.epfl.chorigins, andlocalhostdev servers on the EPFL network or VPN. A mock opened as a file, or off VPN, renders in Arial: that is expected, not a bug to fix. - Import kits from
index.js, never from internals.
Brand rules the linter can't see
- Sentence case for headings and buttons — never Title Case. ("Discover our research", not "Discover Our Research".) UPPERCASE only for h6 / category labels.
- No emoji. Ever. Not in UI, not in content.
- No gradients, no textures, no drop-shadows on cards. Borders > shadows. Surfaces are flat.
- Tight radii — 2px (
--radius) / 4px (--radius-lg). - Hover changes color/border, never scales or lifts. No "card lift on hover".
- Focus = 2px solid outline, 2px offset, hue-matched (red-dark / gray-600 / canard-dark). Disabled stays at opacity 1.
- French is primary; voice is institutional, precise, calm. Web red is
#FF0000/#B51F1F; print red is#E30713— never mix them. - Signatures: white text-panel hero over a full-bleed photo; 7×6px red dot under the active nav item; red triangle flag on distinction cards; "three" is the recurring count.
Parsed from skills/epfl-design/rules.md — the canonical rules file.
Brand
Colors
Type
Spacing
Components
Examples — full screens
The canonical reference — header, signature overlapping hero, card deck (with a distinction card), key numbers, dark footer.
Page header, filter tags, a paged 6-card grid, "load more". A different page type.