feat(landing): add favicon set — SVG primary + PNG/ICO fallback

Brand pulse-dot translated to favicon: dark rounded square (#0d1b12) +
inner green dot (#6ab98a) + faint outer ring (#2d7a4f @60%). Identical
visual language to .brand::before in the nav.

Assets:
- favicon.svg          — vector primary (modern browsers, scales)
- favicon-32.png       — PNG hint
- favicon.ico          — legacy multi-size (16/24/32/48)
- apple-touch-icon.png — iOS home-screen 180x180

PIL-generated PNG/ICO at 8x supersample + Lanczos downscale for clean
antialiasing. No external dependency added (PIL already on system).

index.html: 4 <link> tags wired in <head> (SVG, PNG 32, ICO alternate,
apple-touch). CV HTML left untouched; browser auto-fetches /favicon.ico
from root as fallback — TODO logged to mirror the link block when the
user finalizes CV edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bastien Chanot 2026-05-17 03:51:14 +02:00
parent 1369d27b5b
commit ef31fb3059
6 changed files with 11 additions and 1 deletions

View File

@ -34,7 +34,8 @@ Align landing with CV + add depth (Projets, Méthode, bullet-format Parcours).
- Verify WCAG AA contrast on all green-on-parchment text.
- Hosting decision: GitHub Pages vs Netlify vs Vercel vs nginx VPS — pending.
- DNS / domain config for `bchanot.fr` — pending.
- Consider OG image + favicon — not yet present.
- Consider OG image — not yet present.
- Mirror favicon link block into `CV_Bastien_Chanot.html` when user finalizes CV edits (currently /favicon.ico auto-served as legacy fallback).
## Open ideas (not committed)

BIN
apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
favicon-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

5
favicon.svg Normal file
View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="bchanot.fr">
<rect width="64" height="64" rx="14" fill="#0d1b12"/>
<circle cx="32" cy="32" r="20" fill="none" stroke="#2d7a4f" stroke-width="2" stroke-opacity="0.6"/>
<circle cx="32" cy="32" r="12" fill="#6ab98a"/>
</svg>

After

Width:  |  Height:  |  Size: 311 B

View File

@ -7,6 +7,10 @@
<meta name="author" content="Bastien Chanot">
<meta name="theme-color" content="#0d1b12">
<title>Bastien Chanot — Développeur Systèmes · Embarqué · Backend</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
<link rel="alternate icon" href="/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Fraunces:ital,wght@0,300;0,500;0,600;0,700;1,400&family=DM+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">