# KP Child

Theme enfant Karreprod (KP). Base GeneratePress.

## Stack
- WP latest / PHP 8.3 / MySQL 8.4
- Theme parent : GeneratePress + GP Premium
- Blocs : Gutenberg + GenerateBlocks Pro
- Patterns partagés : GenerateCloud
- Forms : Fluent Forms

## Structure
```
kp-child/
├── style.css                — header GP child + resets globaux
├── functions.php            — bootstrap (require inc/*)
├── theme.json               — settings éditeur Gutenberg (palette, fontSizes, layout)
├── README.md
├── inc/
│   ├── enqueue.php          — pipeline d'enqueue + auto-discovery patterns
│   ├── register-patterns.php — register_block_pattern() depuis kp-data/patterns/non-synced/
│   ├── performance.php      — lazy-loading auto + resource hints
│   └── security-headers.php — OWASP baseline (X-Frame, HSTS, etc.)
├── templates/
│   └── page-fullwidth.php   — template "Full Width" (no title, no sidebar)
├── assets/
│   ├── css/
│   │   ├── tokens.css       — CSS custom properties (couleurs, typo, spacing)
│   │   ├── template-fullwidth.css — neutralise wrappers GP sur le template fullwidth
│   │   └── patterns/        — 1 fichier .css par pattern (auto-enqueued)
│   ├── js/
│   │   └── patterns/        — 1 fichier .js par pattern (auto-enqueued en footer)
│   └── img/
└── fonts/                   — woff2 self-hostées (RGPD)
```

## Conventions
- Préfixe `kp-` partout : classes, handles enqueue, slugs theme.json, variables CSS (`--kp-*`)
- Jamais toucher au theme parent `generatepress/`
- Toujours `get_stylesheet_directory_uri()` (jamais `get_template_*`)
- Échapper toute sortie : `esc_html`, `esc_attr`, `esc_url`, `wp_kses_post`

## Workflow ajout d'un pattern
1. Créer `assets/css/patterns/kp-<slug>.css` → auto-enqueué au prochain hit (cf. `inc/enqueue.php`).
2. (Optionnel) `assets/js/patterns/kp-<slug>.js` → auto-enqueué en footer.
3. Si pattern non-synced réutilisable : créer un JSON dans `kp-data/patterns/non-synced/` (à la racine du site WP, géré par `inc/register-patterns.php`).
4. Si pattern synced : insérer un wp_block via admin WP (ou script d'import).
5. MAJ `.claude/memory/kp/figma-map.md` avec le node ID Figma source.

## TODO Phase A (post-Figma)
- Remplir `assets/css/tokens.css` avec vraies couleurs / typo / spacing extraits du Figma.
- Self-host font WOFF2 dans `fonts/` + `@font-face` dans `style.css`.
- Preload critique des variantes utilisées au-dessus du fold (LCP).
- Compléter `theme.json` (`settings.color.palette`, `settings.typography.fontSizes`).
