# 11 — Finitions `<head>` : color-scheme, doublons, dérives de template

> **Specs** : `color-scheme` · `theme-color` · `meta viewport` · Meta robots
> **Verdict** : 🟠 PARTIAL (3 petits défauts) + 1 FAIL (color-scheme) · **Priorité : P3**
> **Effort estimé** : 1-2 h (helper SEO commun)

## 11.1 — `color-scheme` absent (FAIL, recommended)

**Constat** : aucun `<meta name="color-scheme">` ; `getComputedStyle(document.documentElement).colorScheme` = `"normal"`. Le site est light-only.

**Impact** : sans déclaration, les navigateurs en dark mode peuvent rendre form controls, scrollbars et fond racine avec leurs défauts sombres au chargement (flash, contrôles incohérents avec la charte claire).

**Fix** :
```html
<meta name="color-scheme" content="light">
```
```css
:root { color-scheme: light; }
```
(Si un dark mode est envisagé un jour : `content="light dark"` + variables CSS — hors scope actuel.)

## 11.2 — Balises dupliquées (PARTIAL)

**Constat** (HTML brut de l'accueil) :

- **2 × `<meta name="viewport">`** — Gatsby émet le sien, React Helmet en rajoute un
- **2 × `<meta name="theme-color" content="#e6332a">`** — Helmet + gatsby-plugin-manifest

Valeurs identiques donc sans conséquence fonctionnelle aujourd'hui, mais deux sources de vérité = divergence garantie au premier changement.

**Fix** : retirer les balises viewport/theme-color du composant Helmet/SEO custom et laisser Gatsby/le plugin manifest les émettre (une seule source). Au passage, retirer `shrink-to-fit=no` du viewport (clé iOS 9 obsolète). Le viewport actuel est par ailleurs conforme : pas de `user-scalable=no` ni `maximum-scale` (le zoom reste possible ✓ — ne jamais l'ajouter).

Cohérence existante à préserver : manifest `theme_color: #e6332a` / `background_color: #F6F7FD` alignés avec le meta ✓.

## 11.3 — Meta robots : dérive de template (info)

**Constat** : la plupart des pages émettent `index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1` ✓ (dont `max-image-preview:large`, requis pour les grandes cartes Google Discover). Mais **les 5 pages départements n'émettent aucun meta robots**.

**Impact** : nul en pratique (défaut = index, follow) — c'est un symptôme de **dérive de template** : les pages départements n'utilisent pas le même composant SEO que le reste du site. C'est probablement la même divergence qui explique leurs titles/descriptions hors normes ([issues 04](04-titles.md)/[05](05-meta-descriptions.md)).

**Fix** : faire passer les pages départements par le composant SEO commun. Note spec : `index, follow` est redondant (c'est le défaut) — le retirer est optionnel, l'important est `max-image-preview:large`.

## 11.4 — Hygiène bonus (optionnel)

- `/.well-known/security.txt` → 404 : à créer (catégorie sécurité de la spec — contact, expiration).
- `/humans.txt` → 404 : purement optionnel.

## Vérification

```bash
H=$(curl -s https://www.abc-guepes.com/)
echo "$H" | grep -c 'name="viewport"'      # attendu : 1
echo "$H" | grep -c 'name="theme-color"'   # attendu : 1
echo "$H" | grep -c 'name="color-scheme"'  # attendu : 1
curl -s https://www.abc-guepes.com/nid-guepes-frelons-seine-et-marne-77 | grep 'name="robots"'  # attendu : présent
```
