feat(child-theme): scaffold asterion-bricks v0.1.0

Initial child theme structure inheriting from Bricks parent. Token-driven,
RGPD-native, mobile-first foundation ready for component and template work.

What's in this commit
- style.css: WP theme metadata (Template: bricks, v0.1.0)
- functions.php: enqueue cascade tokens -> utilities -> components,
  defer-loaded main.js, font preload, theme support, image sizes
  (av-hero 2400x1350, av-card 800x600, av-thumb 400x300), Gutenberg
  default styles dequeued
- theme.json: Gutenberg color/typo palette mirroring tokens
- assets/css/tokens.css: full design system per Design Handoff section 2
  (brand colors, neutrals, semantics, type scale + line-heights, 8pt
  spacing, radii, shadows, z-index, motion, prefers-reduced-motion)
- assets/css/utilities.css: modern reset + .av-container, .av-skip-link,
  .av-sr-only, .av-stack, .av-section helpers, opinionated heading scale
- assets/css/components.css: index of planned components + buttons
  (5 variants x 4 sizes per Design Handoff section 3.1) and links
- assets/js/main.js: vanilla skeleton with header scroll, IntersectionObserver
  reveal, count-up, mobile drawer; respects prefers-reduced-motion
- inc/cpt.php: register_post_type case_study (slug /customers/) + scenario
  (slug /scenarios/) + shared 'industry' taxonomy
- inc/seo.php: Organization JSON-LD on home; placeholders for Product,
  Article, FAQPage, BreadcrumbList
- assets/fonts/: Inter Variable + Italic WOFF2 self-hosted (RGPD; no
  Google Fonts CDN). Inter Display @font-face commented — Inter 4+ uses
  opsz axis from the same file.

Out of scope (intentionally deferred)
- Component fills: cards, forms, navigation, alerts, modals, tabs (placeholders)
- Page templates: home and beyond
- Bricks JSON template exports
- Schema.org Product / Article / FAQPage / BreadcrumbList implementations

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-09 11:49:10 +02:00
parent f9192631ff
commit 6f62082dc4
15 changed files with 1359 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
# Self-hosted Inter fonts
Self-hosted to comply with **GDPR**. Loading fonts from Google Fonts CDN sends each visitor's IP address to Google — explicitly ruled illegal by a German court in 2022 (LG München I, 20 January 2022, file no. 3 O 17493/20). For an institutional B2G site addressing French ministries and EU security forces, Google Fonts is a non-starter.
## Files expected here
| File | Purpose | Required |
|-----------------------------------|--------------------------------------------------|----------|
| `Inter-Variable.woff2` | Body + UI font (variable axis: weight 100-900) | ✅ Yes |
| `Inter-Variable-Italic.woff2` | Italic variant | ✅ Yes |
| `InterDisplay-Variable.woff2` | Optimized for display sizes (titles, hero) | 🟡 Recommended |
## Where to download
**Official source** : https://rsms.me/inter
1. Visit https://github.com/rsms/inter/releases/latest
2. Download the latest `Inter-X.Y.zip`.
3. Inside the ZIP, locate the `web/` folder.
4. Copy `Inter-Variable.woff2` and `Inter-Variable-Italic.woff2` into this directory.
5. For `InterDisplay-Variable.woff2`, look in `extras/web/` if present in the release, or use the same Inter Variable file (Inter 4+ merged Display into the optical-size axis).
**Alternative via npm** (if you already have a node toolchain) :
```bash
npm install @fontsource-variable/inter
cp node_modules/@fontsource-variable/inter/files/inter-latin-wght-normal.woff2 ./Inter-Variable.woff2
cp node_modules/@fontsource-variable/inter/files/inter-latin-wght-italic.woff2 ./Inter-Variable-Italic.woff2
```
## License
[SIL Open Font License 1.1](https://github.com/rsms/inter/blob/master/LICENSE.txt). Free to use, modify, and redistribute, including in commercial websites. Attribution not required but appreciated.
## After dropping the WOFF2 here
Nothing else to do. The `@font-face` declarations in `../css/tokens.css` reference these filenames directly. The `<link rel="preload">` in `functions.php` (`wp_head` action) starts fetching them on page load.
If a file is missing, the page silently falls back to the system stack (`-apple-system`, `Segoe UI`, `Roboto`, etc.) without any user-visible error.