Measured results
Last measured: 14 October 2026 · 47feef3
| Page | Performance | Accessibility | Best practices | SEO |
|---|---|---|---|---|
| /fr/ | 99 | 100 | 100 | 100 |
| /en/services/websites/ | 99 | 100 | 100 | 100 |
| /fr/contact/ | 99 | 100 | 100 | 100 |
0axe violations across 34 pages
| Page | Page weight | JS | CSS |
|---|---|---|---|
| /fr/ | 139.4 KB | 3.7 KB | 8.3 KB |
| /en/services/websites/ | 143.1 KB | 3.7 KB | 6.4 KB |
| /fr/contact/ | 151.2 KB | 12.2 KB | 8 KB |
Stack
- Framework
- Astro 7.3.8, static output
- Language
- TypeScript, strict
- Styling
- Plain CSS with design tokens and logical properties
- Content
- MDX files in the repository, typed with Zod
- JavaScript
- No UI framework — a few kilobytes of vanilla TypeScript for the menu, language switch, contact form, photo backgrounds and the pointer spotlight
- Contact form
- Works without JavaScript; Cloudflare Turnstile and a honeypot against spam
Typefaces
Schibsted Grotesk
Headings and display
IBM Plex Sans
Body text and interface
IBM Plex Mono
Overlines, figures and specifications
Self-hosted, Latin and Latin Extended subsets. No request to a font service.
Colour
Neutrals carry most of every screen. Wheat is used in tiny amounts on dark sections only.
- Wheat#e8cb7a
- Olive Night#1c2210
- Limestone#f6f2e8
- Clay#a84b2a
- Olive Leaf#5e6b32
- Brass#7a5a12
Logo
The lockup is used from the brand files, never redrawn: Wheat on dark sections, Olive Night on light ones.
Languages
French and English, with identical structure. Arabic (right-to-left) is prepared: the layout uses logical CSS properties only.
Hosting
Static pages on Cloudflare Pages, served from its global network. Two small functions handle the contact form and the language redirect.