Author SHA1 Message Date
jmartin 89b2bd7090 feat(vitrine): proposition « Cahier pop » (néo-galet / fanzine)
- Syne + IBM Plex Mono, bordures épaisses, ombres décalées
- Accueil type polaroid + stickers + bandeau sombre
- Nav sticky, menu mobile, pied de page assorti
- Pages intérieures dans cadre blanc contrasté

Made-with: Cursor
2026-04-22 18:58:58 +02:00
14 changed files with 415 additions and 631 deletions
+6 -6
View File
@@ -5,7 +5,7 @@ keywords: ["P'titsPas", "ptitspas", "p'tits pas", "ptits pas", "petitspas", "pet
date: 2025-05-17T12:00:00+02:00 date: 2025-05-17T12:00:00+02:00
hero_image: "/images/page_login_4.1.png" hero_image: "/images/page_login_4.1.png"
hero_image_alt: "Logo P'titsPas" hero_image_alt: "Logo P'titsPas"
hero_tagline: "Plateforme publique pour les collectivités — transparence, neutralité, service public numérique." hero_tagline: "Zéro algo opaque · Zéro notation · 100 % collectivité"
intro_md: | intro_md: |
**Modernisez la mise en relation Parents - Assistantes Maternelles avec une plateforme 100% éthique, conçue pour les collectivités.** **Modernisez la mise en relation Parents - Assistantes Maternelles avec une plateforme 100% éthique, conçue pour les collectivités.**
@@ -15,11 +15,11 @@ intro_md: |
Plus qu'un outil de gestion, c'est la garantie d'un **Service Public Numérique** exemplaire. Plus qu'un outil de gestion, c'est la garantie d'un **Service Public Numérique** exemplaire.
ethics: ethics:
- title: "Sans notation" - title: "Sans notation"
detail: "des professionnels" detail: " des pros"
- title: "Sans algorithme opaque" - title: "Sans algorithme opaque"
detail: "de sélection" detail: " de sélection"
- title: "100% conforme" - title: "100 % conforme"
detail: "aux valeurs de la République" detail: " aux valeurs de la République"
why_md: | why_md: |
## Pourquoi choisir P'titsPas pour votre commune ? ## Pourquoi choisir P'titsPas pour votre commune ?
@@ -29,5 +29,5 @@ why_md: |
* **⚖️ Équité Territoriale :** Offrez la même qualité de service à tous les administrés, quel que soit leur quartier. * **⚖️ Équité Territoriale :** Offrez la même qualité de service à tous les administrés, quel que soit leur quartier.
* **🤝 Valorisation des RPE :** Libérez vos agents des tâches chronophages pour qu'ils se concentrent sur l'accompagnement humain. * **🤝 Valorisation des RPE :** Libérez vos agents des tâches chronophages pour qu'ils se concentrent sur l'accompagnement humain.
* **📱 Simplicité d'Usage :** Une interface pensée pour tous (parents, assistantes mat', agents), accessible sur mobile et PC. * **📱 Simplicité d'Usage :** Une interface pensée pour tous (parents, assistantes mat', agents), accessible sur mobile et PC.
cta_title: "Reprenez le contrôle de votre politique Petite Enfance" cta_title: "Reprenez la main sur votre politique petite enfance"
--- ---
+17 -17
View File
@@ -12,28 +12,28 @@ Que vous souhaitiez une démonstration personnalisée, obtenir un devis, ou simp
Utilisez le formulaire ci-dessous pour nous faire part de votre projet. Nous nous engageons à vous répondre dans les plus brefs délais. Utilisez le formulaire ci-dessous pour nous faire part de votre projet. Nous nous engageons à vous répondre dans les plus brefs délais.
<form class="site-form" action="/contact.php" method="POST"> <form action="/contact.php" method="POST" style="max-width: 600px; margin: 20px auto; padding: 20px; border: 1px solid #ddd; border-radius: 5px;">
<div> <div style="margin-bottom: 15px;">
<label for="name">Nom Prénom :</label> <label for="name" style="display: block; margin-bottom: 5px;">Nom Prénom :</label>
<input type="text" id="name" name="name" required> <input type="text" id="name" name="name" required style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px;">
</div> </div>
<div> <div style="margin-bottom: 15px;">
<label for="collectivite">Collectivité / Organisation :</label> <label for="collectivite" style="display: block; margin-bottom: 5px;">Collectivité / Organisation :</label>
<input type="text" id="collectivite" name="collectivite" required> <input type="text" id="collectivite" name="collectivite" required style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px;">
</div> </div>
<div> <div style="margin-bottom: 15px;">
<label for="email">Adresse E-mail :</label> <label for="email" style="display: block; margin-bottom: 5px;">Adresse E-mail :</label>
<input type="email" id="email" name="email" required> <input type="email" id="email" name="email" required style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px;">
</div> </div>
<div> <div style="margin-bottom: 15px;">
<label for="phone">Téléphone (facultatif) :</label> <label for="phone" style="display: block; margin-bottom: 5px;">Téléphone (facultatif) :</label>
<input type="tel" id="phone" name="phone"> <input type="tel" id="phone" name="phone" style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px;">
</div> </div>
<div> <div style="margin-bottom: 15px;">
<label for="message">Votre Message :</label> <label for="message" style="display: block; margin-bottom: 5px;">Votre Message :</label>
<textarea id="message" name="message" rows="6" required></textarea> <textarea id="message" name="message" rows="6" required style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 3px;"></textarea>
</div> </div>
<button type="submit">Envoyer votre demande</button> <button type="submit" style="background-color: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 3px; cursor: pointer;">Envoyer Votre Demande</button>
</form> </form>
Nous avons hâte de collaborer avec vous pour améliorer la gestion de la petite enfance sur votre territoire ! Nous avons hâte de collaborer avec vous pour améliorer la gestion de la petite enfance sur votre territoire !
+4 -12
View File
@@ -10,25 +10,21 @@ P'titsPas offre une suite complète de fonctionnalités conçues pour simplifier
Nous comprenons que chaque acteur a des besoins spécifiques. C'est pourquoi P'titsPas propose des tableaux de bord et des outils dédiés : Nous comprenons que chaque acteur a des besoins spécifiques. C'est pourquoi P'titsPas propose des tableaux de bord et des outils dédiés :
{{% featureblock title="Pour les Parents et Assistantes Maternelles : Une expérience fluide et rassurante" %}} ### Pour les Parents et Assistantes Maternelles : Une expérience fluide et rassurante
Bien que P'titsPas soit un outil au service de la collectivité, nous savons que l'adhésion des familles est la clé du succès. Une adoption facilitée signifie moins de sollicitations pour vos services et une plus grande satisfaction citoyenne. Bien que P'titsPas soit un outil au service de la collectivité, nous savons que l'adhésion des familles est la clé du succès. Une adoption facilitée signifie moins de sollicitations pour vos services et une plus grande satisfaction citoyenne.
***Recherche facilitée** : Mise en relation transparente basée sur les besoins réels. ***Recherche facilitée** : Mise en relation transparente basée sur les besoins réels.
***Gestion administrative simplifiée** : Contrats, avenants et suivi des heures en quelques clics. ***Gestion administrative simplifiée** : Contrats, avenants et suivi des heures en quelques clics.
***Communication directe et tracée** : Pour apaiser les relations et garder un historique. ***Communication directe et tracée** : Pour apaiser les relations et garder un historique.
***Agenda partagé** : Une meilleure organisation au quotidien. ***Agenda partagé** : Une meilleure organisation au quotidien.
{{% /featureblock %}}
{{% featureblock title="Pour vos Gestionnaires RPE : Gagnez du temps et de la visibilité" %}} ### Pour vos Gestionnaires RPE : Gagnez du temps et de la visibilité
Libérez vos agents des tâches chronophages pour qu'ils se concentrent sur leur cœur de métier : l'accompagnement humain. Libérez vos agents des tâches chronophages pour qu'ils se concentrent sur leur cœur de métier : l'accompagnement humain.
* 📊 **Tableau de bord de supervision** : Une vue d'ensemble immédiate des contrats et disponibilités sur le territoire. * 📊 **Tableau de bord de supervision** : Une vue d'ensemble immédiate des contrats et disponibilités sur le territoire.
***Validation rapide** : Gestion fluide des comptes et suivi des dossiers en temps réel. ***Validation rapide** : Gestion fluide des comptes et suivi des dossiers en temps réel.
* 🤝 **Outils de médiation** : Intervenez facilement en cas de désaccord grâce à l'historique des échanges. * 🤝 **Outils de médiation** : Intervenez facilement en cas de désaccord grâce à l'historique des échanges.
* 📢 **Communication ciblée** : Organisez vos événements RPE et diffusez l'information efficacement. * 📢 **Communication ciblée** : Organisez vos événements RPE et diffusez l'information efficacement.
{{% /featureblock %}}
{{% featureblock title="Pour votre DSI et Direction : Une solution souveraine et maîtrisée" %}} ### Pour votre DSI et Direction : Une solution souveraine et maîtrisée
P'titsPas s'intègre à votre écosystème avec un niveau d'exigence élevé en matière de sécurité et de personnalisation. P'titsPas s'intègre à votre écosystème avec un niveau d'exigence élevé en matière de sécurité et de personnalisation.
* 🔒 **Sécurité et Conformité RGPD** : Une conception "Privacy by Design", hébergement souverain et chiffrement des données sensibles (NIR). * 🔒 **Sécurité et Conformité RGPD** : Une conception "Privacy by Design", hébergement souverain et chiffrement des données sensibles (NIR).
@@ -36,18 +32,14 @@ P'titsPas s'intègre à votre écosystème avec un niveau d'exigence élevé en
* ⚙️ **Gestion fine des droits** : Administration centralisée des comptes et des paramètres de la plateforme. * ⚙️ **Gestion fine des droits** : Administration centralisée des comptes et des paramètres de la plateforme.
* 📈 **Pilotage par la donnée** : Statistiques d'usage, nombre de contrats, taux d'occupation... exportables pour vos rapports. * 📈 **Pilotage par la donnée** : Statistiques d'usage, nombre de contrats, taux d'occupation... exportables pour vos rapports.
* 🧩 **Évolutivité** : Activez uniquement les modules dont vous avez besoin (Blog, IA, etc.). * 🧩 **Évolutivité** : Activez uniquement les modules dont vous avez besoin (Blog, IA, etc.).
{{% /featureblock %}}
## Des Workflows Clairs et Sécurisés ## Des Workflows Clairs et Sécurisés
De la recherche d'une assistante maternelle à la fin de contrat, P'titsPas structure chaque étape : De la recherche d'une assistante maternelle à la fin de contrat, P'titsPas structure chaque étape :
{{% featureblock %}}
* **Recherche et mise en relation** guidées. * **Recherche et mise en relation** guidées.
* **Création et validation de contrats** dématérialisée et collaborative. * **Création et validation de contrats** dématérialisée et collaborative.
* **Gestion des avenants** simplifiée. * **Gestion des avenants** simplifiée.
* **Procédure de fin de contrat** accompagnée, avec calcul du solde de tout compte. * **Procédure de fin de contrat** accompagnée, avec calcul du solde de tout compte.
{{% /featureblock %}}
--- ---
@@ -55,4 +47,4 @@ P'titsPas est plus qu'un logiciel, c'est un partenaire pour votre politique peti
[Découvrez pourquoi P'titsPas est la solution de confiance pour les collectivités](/pourquoi-ptitspas) [Découvrez pourquoi P'titsPas est la solution de confiance pour les collectivités](/pourquoi-ptitspas)
[Contactez-nous pour échanger sur vos besoins spécifiques](/contact) [Contactez-nous pour échanger sur vos besoins spécifiques](/contact)
+12 -20
View File
@@ -3,32 +3,26 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title> <title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title>
<meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}"> <meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<meta name="keywords" content="{{ if .Keywords }}{{ delimit .Keywords ", " }}{{ else }}{{ .Site.Params.keywords }}{{ end }}"> <meta name="keywords" content="{{ if .Keywords }}{{ delimit .Keywords ", " }}{{ else }}{{ .Site.Params.keywords }}{{ end }}">
<meta name="author" content="{{ .Site.Params.author | default .Site.Title }}"> <meta name="author" content="{{ .Site.Params.author | default .Site.Title }}">
{{ if eq .Site.BaseURL "https://staging.ptits-pas.fr/" }} {{ if eq .Site.BaseURL "https://staging.ptits-pas.fr/" }}
<meta name="robots" content="noindex, nofollow"> <meta name="robots" content="noindex, nofollow">
{{ end }} {{ end }}
<meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}"> <meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}">
<meta property="og:url" content="{{ .Permalink }}"> <meta property="og:url" content="{{ .Permalink }}">
<meta property="og:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }}{{ end }}"> <meta property="og:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }}{{ end }}">
<meta property="og:description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}"> <meta property="og:description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<meta property="og:image" content="{{ .Site.BaseURL }}images/page_login_4.1.png"> <meta property="og:image" content="{{ .Site.BaseURL }}images/page_login_4.1.png">
<meta property="og:locale" content="fr_FR"> <meta property="og:locale" content="fr_FR">
<meta property="twitter:card" content="summary_large_image"> <meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="{{ .Permalink }}"> <meta property="twitter:url" content="{{ .Permalink }}">
<meta property="twitter:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }}{{ end }}"> <meta property="twitter:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }}{{ end }}">
<meta property="twitter:description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}"> <meta property="twitter:description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<meta property="twitter:image" content="{{ .Site.BaseURL }}images/page_login_4.1.png"> <meta property="twitter:image" content="{{ .Site.BaseURL }}images/page_login_4.1.png">
<link rel="canonical" href="{{ .Permalink }}"> <link rel="canonical" href="{{ .Permalink }}">
<link rel="icon" type="image/x-icon" href="{{ "favicon.ico" | relURL }}"> <link rel="icon" type="image/x-icon" href="{{ "favicon.ico" | relURL }}">
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
@@ -49,9 +43,7 @@
{{ end }} {{ end }}
} }
</script> </script>
<link rel="stylesheet" href="{{ `/css/style.css` | relURL }}"> <link rel="stylesheet" href="{{ `/css/style.css` | relURL }}">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-65J8GVLCRH"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-65J8GVLCRH"></script>
<script> <script>
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
@@ -65,19 +57,19 @@
}); });
</script> </script>
</head> </head>
<body> <body class="theme-cahier-pop">
<a class="skip-link" href="#contenu-principal">Aller au contenu</a> <a class="skip-link" href="#contenu-principal">Aller au contenu</a>
<header class="site-header"> <header class="cp-header">
<div class="site-header__inner"> <div class="cp-header__inner">
<a class="site-logo" href="{{ "/" | relURL }}">P'titsPas</a> <a class="cp-logo" href="{{ "/" | relURL }}">P'titsPas</a>
<nav class="site-nav" id="site-nav" aria-label="Navigation principale"> <nav class="cp-nav" id="cp-nav" aria-label="Navigation principale">
<button type="button" class="nav-toggle" aria-expanded="false" aria-controls="site-nav-panel" id="site-nav-toggle" aria-label="Ouvrir le menu"> <button type="button" class="cp-nav-toggle" id="cp-nav-toggle" aria-expanded="false" aria-controls="cp-nav-panel" aria-label="Ouvrir le menu">
<span class="nav-toggle__bar" aria-hidden="true"></span> <span aria-hidden="true"></span>
<span class="nav-toggle__bar" aria-hidden="true"></span> <span aria-hidden="true"></span>
<span class="nav-toggle__bar" aria-hidden="true"></span> <span aria-hidden="true"></span>
</button> </button>
<div class="site-nav__panel" id="site-nav-panel"> <div class="cp-nav-panel" id="cp-nav-panel">
<ul class="site-nav__list"> <ul class="cp-nav-list">
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
<li><a href="{{ .URL | relURL }}">{{ .Name }}</a></li> <li><a href="{{ .URL | relURL }}">{{ .Name }}</a></li>
{{ end }} {{ end }}
@@ -86,7 +78,7 @@
</nav> </nav>
</div> </div>
</header> </header>
<main id="contenu-principal" class="site-main"> <main id="contenu-principal" class="cp-main">
{{ block "main" . }}{{ .Content }}{{ end }} {{ block "main" . }}{{ .Content }}{{ end }}
</main> </main>
{{ partial "footer.html" . }} {{ partial "footer.html" . }}
+1 -1
View File
@@ -1,5 +1,5 @@
{{ define "main" }} {{ define "main" }}
<div class="page-shell"> <div class="cp-page">
{{ .Content }} {{ .Content }}
</div> </div>
{{ end }} {{ end }}
+1 -1
View File
@@ -1,5 +1,5 @@
{{ define "main" }} {{ define "main" }}
<div class="page-shell"> <div class="cp-page">
<article class="content"> <article class="content">
{{ .Content }} {{ .Content }}
</article> </article>
+22 -33
View File
@@ -1,45 +1,34 @@
{{ define "main" }} {{ define "main" }}
<div class="home"> <div class="cp-home">
<section class="home-hero"> <section class="cp-hero">
{{ partial "home-path-motif.html" . }} <figure class="cp-polaroid">
<div class="home-hero__inner"> <img src="{{ (.Params.hero_image | default "/images/page_login_4.1.png") | relURL }}" alt="{{ .Params.hero_image_alt | default "Illustration P'titsPas" }}" width="900" height="560" fetchpriority="high">
<div class="home-hero__media"> </figure>
<img src="{{ (.Params.hero_image | default "/images/page_login_4.1.png") | relURL }}" alt="{{ .Params.hero_image_alt | default "Illustration P'titsPas" }}" width="1200" height="630" fetchpriority="high"> <div class="cp-hero-copy">
</div> <p class="cp-tagline">{{ .Params.hero_tagline | default "Service public numérique — petite enfance" }}</p>
<div class="home-hero__copy"> <h1>{{ .Title }}</h1>
<h1 class="home-hero__title">{{ .Title }}</h1>
{{ with .Params.hero_tagline }}<p class="accroche">{{ . }}</p>{{ end }}
</div>
</div> </div>
</section> </section>
<div class="cp-zine-grid">
<div class="home-bento"> <div class="cp-panel cp-panel--mint">
<article class="home-card home-card--intro">
{{ with .Params.intro_md }}{{ . | markdownify }}{{ end }} {{ with .Params.intro_md }}{{ . | markdownify }}{{ end }}
</article> </div>
<aside class="home-card home-card--ethics" aria-label="Engagements"> <div class="cp-panel">
<h2 class="visually-hidden">Nos engagements</h2> <div class="cp-stickers" aria-label="Engagements">
<ol class="ethics-steps">
{{ range .Params.ethics }} {{ range .Params.ethics }}
<li> <div class="cp-sticker"><strong>{{ .title }}</strong>{{ .detail }}</div>
<strong>{{ .title }}</strong>
{{ .detail }}
</li>
{{ end }} {{ end }}
</ol> </div>
</aside> </div>
</div> </div>
<div class="cp-band">
<section class="home-why">
{{ with .Params.why_md }}{{ . | markdownify }}{{ end }} {{ with .Params.why_md }}{{ . | markdownify }}{{ end }}
</section> </div>
<section class="cp-cta" aria-labelledby="cp-cta-title">
<section class="home-cta" aria-labelledby="home-cta-title"> <h2 id="cp-cta-title">{{ .Params.cta_title | default "Passer à l'action" }}</h2>
<h2 id="home-cta-title" class="visually-hidden">Actions</h2>
{{ with .Params.cta_title }}<h3>{{ . }}</h3>{{ end }}
<div> <div>
<a href="{{ "fonctionnalites" | relURL }}" class="cta-button">Voir les fonctionnalités clés</a> <a class="cp-btn" href="{{ "fonctionnalites" | relURL }}">Fonctionnalités</a>
<a href="{{ "contact" | relURL }}" class="cta-button">Demander une démo</a> <a class="cp-btn" href="{{ "contact" | relURL }}">Demander une démo</a>
</div> </div>
</section> </section>
</div> </div>
+4 -4
View File
@@ -1,8 +1,8 @@
<footer class="footer-site"> <footer class="cp-footer">
<p>&copy; {{ now.Year }} P'titsPas — Tous droits réservés.</p> <p>&copy; {{ now.Year }} P'titsPas</p>
<nav class="footer-site__links" aria-label="Liens de pied de page"> <nav aria-label="Liens de pied de page">
<a href="{{ "mentions-legales" | relURL }}">Mentions légales</a> <a href="{{ "mentions-legales" | relURL }}">Mentions légales</a>
<a href="{{ "politique-de-confidentialite" | relURL }}">Politique de confidentialité</a> <a href="{{ "politique-de-confidentialite" | relURL }}">Confidentialité</a>
<a href="{{ "technique" | relURL }}">Données techniques</a> <a href="{{ "technique" | relURL }}">Données techniques</a>
</nav> </nav>
</footer> </footer>
-1
View File
@@ -1 +0,0 @@
<img class="home-hero__motif home-hero__motif-img" src="{{ "images/motif-trajet.svg" | relURL }}" width="520" height="140" alt="" role="presentation" decoding="async">
-7
View File
@@ -1,7 +0,0 @@
{{- $title := .Get "title" -}}
<div class="feature-card">
{{- if $title -}}
<h4 class="feature-card__title">{{ $title }}</h4>
{{- end -}}
<div class="feature-card__body">{{ .Inner | markdownify }}</div>
</div>
-7
View File
@@ -1,7 +0,0 @@
{{- $title := .Get "title" -}}
<section class="feature-section">
{{- if $title -}}
<h3 class="feature-section__title">{{ $title }}</h3>
{{- end -}}
<div class="feature-section__body">{{ .Inner | markdownify }}</div>
</section>
+341 -507
View File
@@ -1,35 +1,20 @@
/* Charte P'titsPas — vitrine modernisée (tokens + layout) */ /* Proposition « Cahier pop » — néo-galet / fanzine (très différent de la vitrine classique) */
@import url("https://fonts.googleapis.com/css2?family=Merienda:wght@400;700&family=Source+Sans+3:ital,wght@0,400;0,600;0,700;1,400&display=swap"); @import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Syne:wght@400;600;700;800&display=swap");
:root { :root {
--color-peche-doux: #ffd7a8; --ink: #14110f;
--color-menthe-claire: #aee1cd; --paper: #fffef7;
--color-rose-tendre: #f6b2c4; --tape: #ffeb80;
--color-jaune-pale: #ffecb3; --mint-pop: #7dd3c0;
--color-lavande: #e6e6fa; --peach-pop: #ffb4a2;
--color-corail-leger: #ffdab9; --lav-pop: #c4b5fd;
--color-texte-principal: #2c2c2c; --border: 3px solid var(--ink);
--color-texte-secondaire: #555; --shadow-hard: 6px 6px 0 var(--ink);
--color-blanc: #fff; --shadow-soft: 4px 4px 0 rgba(20, 17, 15, 0.35);
--color-lien: #c45b6e; --font-display: "Syne", system-ui, sans-serif;
--color-lien-hover: #a8485a; --font-mono: "IBM Plex Mono", ui-monospace, monospace;
--color-surface: rgba(255, 255, 255, 0.92); --nav-cut: 52rem;
--shadow-soft: 0 2px 12px rgba(44, 44, 44, 0.06);
--shadow-card: 0 4px 24px rgba(44, 44, 44, 0.08);
--radius-sm: 8px;
--radius-md: 16px;
--radius-lg: 24px;
--space-1: 0.5rem;
--space-2: 1rem;
--space-3: 1.5rem;
--space-4: 2rem;
--space-5: 3rem;
--font-display: "Merienda", cursive;
--font-body: "Source Sans 3", system-ui, sans-serif;
--header-height: 4rem;
--content-max: 72rem;
--nav-break: 52rem;
} }
@media (prefers-reduced-motion: reduce) { @media (prefers-reduced-motion: reduce) {
@@ -39,7 +24,6 @@
animation-duration: 0.01ms !important; animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important; animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important; transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
} }
} }
@@ -53,601 +37,451 @@ html {
scroll-behavior: smooth; scroll-behavior: smooth;
} }
body { body.theme-cahier-pop {
margin: 0; margin: 0;
font-family: var(--font-body); font-family: var(--font-display);
font-size: clamp(1rem, 0.95rem + 0.2vw, 1.0625rem); font-size: clamp(1rem, 0.92rem + 0.35vw, 1.1rem);
line-height: 1.65; line-height: 1.55;
color: var(--color-texte-principal); color: var(--ink);
background: linear-gradient(165deg, var(--color-blanc) 0%, var(--color-lavande) 35%, var(--color-menthe-claire) 100%); background-color: var(--paper);
background-attachment: fixed; background-image:
min-height: 100vh; radial-gradient(circle at 12% 18%, rgba(255, 180, 162, 0.35) 0%, transparent 42%),
radial-gradient(circle at 88% 8%, rgba(196, 181, 253, 0.4) 0%, transparent 38%),
radial-gradient(circle at 1px 1px, rgba(20, 17, 15, 0.07) 1px, transparent 0);
background-size: auto, auto, 18px 18px;
} }
:focus-visible { :focus-visible {
outline: 3px solid var(--color-menthe-claire); outline: 3px solid var(--mint-pop);
outline-offset: 3px; outline-offset: 3px;
} }
.skip-link { .skip-link {
position: absolute; position: absolute;
left: -9999px; left: -9999px;
z-index: 1000; z-index: 2000;
padding: var(--space-2) var(--space-3); padding: 0.75rem 1rem;
background: var(--color-texte-principal); background: var(--ink);
color: var(--color-blanc); color: var(--paper);
font-weight: 600; font-weight: 700;
text-decoration: none; text-decoration: none;
border-radius: var(--radius-sm); border: var(--border);
box-shadow: var(--shadow-hard);
} }
.skip-link:focus { .skip-link:focus {
left: var(--space-2); left: 0.75rem;
top: var(--space-2); top: 0.75rem;
} }
.visually-hidden { /* Header */
position: absolute; .cp-header {
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* ——— Header ——— */
.site-header {
position: sticky; position: sticky;
top: 0; top: 0;
z-index: 50; z-index: 100;
background: color-mix(in srgb, var(--color-menthe-claire) 92%, transparent); background: var(--tape);
backdrop-filter: blur(10px); border-bottom: var(--border);
border-bottom: 1px solid color-mix(in srgb, var(--color-texte-principal) 8%, transparent); box-shadow: 0 4px 0 rgba(20, 17, 15, 0.12);
box-shadow: var(--shadow-soft);
} }
.site-header__inner { .cp-header__inner {
max-width: var(--content-max); max-width: 72rem;
margin: 0 auto; margin: 0 auto;
padding: var(--space-2) var(--space-3); padding: 0.75rem 1rem;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: var(--space-2); gap: 1rem;
min-height: var(--header-height); flex-wrap: wrap;
} }
.site-logo { .cp-logo {
font-family: var(--font-display); font-weight: 800;
font-weight: 700; font-size: clamp(1.15rem, 1rem + 0.6vw, 1.5rem);
font-size: clamp(1.1rem, 1rem + 0.5vw, 1.35rem); letter-spacing: -0.03em;
color: var(--color-texte-principal); text-transform: uppercase;
text-decoration: none; text-decoration: none;
white-space: nowrap; color: var(--ink);
border: var(--border);
padding: 0.35rem 0.65rem;
background: #fff;
box-shadow: var(--shadow-soft);
transform: rotate(-1.5deg);
} }
.site-logo:hover { .cp-logo:hover {
text-decoration: none; transform: rotate(0deg) translate(-2px, -2px);
color: var(--color-lien-hover); box-shadow: var(--shadow-hard);
} }
.site-nav { .cp-nav {
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
} }
.nav-toggle { .cp-nav-toggle {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
gap: 6px; gap: 5px;
width: 2.75rem; width: 2.75rem;
height: 2.75rem; height: 2.75rem;
padding: 0; padding: 0;
border: none; border: var(--border);
border-radius: var(--radius-sm); background: #fff;
background: var(--color-blanc);
cursor: pointer; cursor: pointer;
box-shadow: var(--shadow-soft); box-shadow: var(--shadow-soft);
} }
.nav-toggle__bar { .cp-nav-toggle span {
display: block; display: block;
width: 1.25rem; width: 1.1rem;
height: 2px; height: 3px;
margin: 0 auto; margin: 0 auto;
background: var(--color-texte-principal); background: var(--ink);
border-radius: 1px;
transition: transform 0.2s ease, opacity 0.2s ease;
} }
.site-nav.is-open .nav-toggle__bar:nth-child(1) { .cp-nav-panel {
transform: translateY(8px) rotate(45deg); overflow: hidden;
max-height: 0;
transition: max-height 0.35s ease;
} }
.site-nav.is-open .nav-toggle__bar:nth-child(2) { .cp-nav.is-open .cp-nav-panel {
opacity: 0; max-height: 22rem;
} }
.site-nav.is-open .nav-toggle__bar:nth-child(3) { .cp-nav-list {
transform: translateY(-8px) rotate(-45deg);
}
.site-nav__list {
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0; padding: 0.75rem 0 0;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; gap: 0.5rem;
justify-content: center; justify-content: flex-end;
gap: var(--space-1);
} }
.site-nav__list a { .cp-nav-list a {
display: block; font-family: var(--font-mono);
padding: var(--space-1) var(--space-2); font-size: 0.8rem;
font-weight: 600; font-weight: 600;
font-size: 0.95rem; text-transform: uppercase;
color: var(--color-texte-principal); letter-spacing: 0.06em;
text-decoration: none; text-decoration: none;
border-radius: var(--radius-sm); color: var(--ink);
transition: background-color 0.2s ease; border: var(--border);
padding: 0.45rem 0.65rem;
background: #fff;
display: inline-block;
box-shadow: 3px 3px 0 var(--ink);
} }
.site-nav__list a:hover { .cp-nav-list a:hover {
background: var(--color-peche-doux); transform: translate(-2px, -2px);
text-decoration: none; box-shadow: 5px 5px 0 var(--ink);
}
@media (max-width: 51.99rem) {
.nav-toggle {
display: flex;
}
.site-nav__panel {
position: absolute;
left: 0;
right: 0;
top: 100%;
max-height: 0;
overflow: hidden;
background: color-mix(in srgb, var(--color-blanc) 96%, var(--color-menthe-claire));
border-bottom: 1px solid color-mix(in srgb, var(--color-texte-principal) 8%, transparent);
transition: max-height 0.35s ease;
}
.site-nav.is-open .site-nav__panel {
max-height: 24rem;
}
.site-nav__list {
flex-direction: column;
padding: var(--space-3);
align-items: stretch;
}
.site-nav__list a {
text-align: center;
}
} }
@media (min-width: 52rem) { @media (min-width: 52rem) {
.nav-toggle { .cp-nav-toggle {
display: none; display: none;
} }
.site-nav { .cp-nav-panel {
flex: 1;
}
.site-nav__panel {
position: static;
max-height: none !important; max-height: none !important;
overflow: visible; overflow: visible;
background: transparent; padding-top: 0;
border: none;
} }
.site-nav__list { .cp-nav-list {
justify-content: flex-end; padding-top: 0;
} }
} }
/* ——— Main ——— */ @media (max-width: 51.99rem) {
.site-main { .cp-nav-panel {
max-width: var(--content-max); position: absolute;
right: 0;
top: calc(100% + 0.35rem);
left: 0;
background: var(--paper);
border: var(--border);
box-shadow: var(--shadow-hard);
padding: 0.75rem;
}
.cp-nav-list {
flex-direction: column;
align-items: stretch;
}
}
/* Main shell */
.cp-main {
max-width: 72rem;
margin: 0 auto; margin: 0 auto;
padding: var(--space-4) var(--space-3) var(--space-5); padding: 1.5rem 1rem 3rem;
} }
.page-shell { .cp-page {
background: var(--color-surface); border: var(--border);
border-radius: var(--radius-md); background: #fff;
box-shadow: var(--shadow-card); box-shadow: var(--shadow-hard);
padding: var(--space-4); padding: clamp(1.25rem, 3vw, 2.25rem);
} }
.page-shell .content { .cp-page .content {
max-width: 52rem; max-width: 48rem;
margin: 0 auto; margin: 0 auto;
} }
h1 { /* Home */
font-family: var(--font-display); .cp-hero {
font-weight: 700;
font-size: clamp(1.65rem, 1.2rem + 2vw, 2.35rem);
line-height: 1.25;
color: var(--color-texte-principal);
margin: 0 0 var(--space-3);
}
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-body);
font-weight: 700;
color: var(--color-texte-principal);
line-height: 1.3;
}
h2 {
font-size: clamp(1.35rem, 1.1rem + 1vw, 1.75rem);
}
h3 {
font-size: clamp(1.15rem, 1rem + 0.5vw, 1.35rem);
}
.accroche {
font-weight: 600;
color: var(--color-texte-secondaire);
}
a {
color: var(--color-lien);
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 3px;
}
a:hover {
color: var(--color-lien-hover);
}
/* ——— Home ——— */
.home-hero {
position: relative;
overflow: hidden;
border-radius: var(--radius-lg);
background: var(--color-surface);
box-shadow: var(--shadow-card);
margin-bottom: var(--space-4);
}
.home-hero__motif {
position: absolute;
inset: 0;
pointer-events: none;
}
.home-hero__motif-img {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
animation: motifReveal 2s ease forwards 0.2s;
}
@media (prefers-reduced-motion: reduce) {
.home-hero__motif-img {
animation: none;
opacity: 0.16;
}
}
@keyframes motifReveal {
to {
opacity: 0.16;
}
}
.home-hero__inner {
position: relative;
z-index: 1;
display: grid; display: grid;
gap: var(--space-4); gap: 1.5rem;
padding: var(--space-4); margin-bottom: 2rem;
align-items: start;
} }
@media (min-width: 48rem) { @media (min-width: 52rem) {
.home-hero__inner { .cp-hero {
grid-template-columns: 1fr 1.1fr; grid-template-columns: 1fr 1.05fr;
align-items: center;
} }
} }
.home-hero__media { .cp-polaroid {
border-radius: var(--radius-md); border: var(--border);
overflow: hidden; background: #fff;
box-shadow: var(--shadow-soft); padding: 0.75rem 0.75rem 2.25rem;
box-shadow: var(--shadow-hard);
transform: rotate(-2.2deg);
max-width: 22rem;
margin: 0 auto;
} }
.home-hero__media img { @media (min-width: 52rem) {
.cp-polaroid {
margin: 0;
}
}
.cp-polaroid img {
display: block;
width: 100%; width: 100%;
height: auto; height: auto;
max-height: 22rem; border: var(--border);
object-fit: cover;
display: block;
} }
.home-hero__title { .cp-hero-copy h1 {
margin-bottom: var(--space-2); font-size: clamp(1.75rem, 1.1rem + 2.8vw, 2.85rem);
line-height: 1.08;
margin: 0 0 0.75rem;
letter-spacing: -0.04em;
} }
.home-bento { .cp-tagline {
display: grid; font-family: var(--font-mono);
gap: var(--space-3); font-size: 0.85rem;
margin-bottom: var(--space-4); text-transform: uppercase;
} letter-spacing: 0.12em;
border: var(--border);
@media (min-width: 48rem) {
.home-bento {
grid-template-columns: 1.4fr 1fr;
align-items: start;
}
}
.home-card {
background: var(--color-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
padding: var(--space-4);
}
.home-card--ethics {
background: linear-gradient(145deg, var(--color-blanc), var(--color-jaune-pale));
}
.ethics-steps {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: var(--space-2);
}
.ethics-steps li {
padding: var(--space-2);
background: var(--color-blanc);
border-radius: var(--radius-sm);
border-left: 4px solid var(--color-rose-tendre);
font-size: 0.95rem;
box-shadow: var(--shadow-soft);
}
.ethics-steps strong {
display: block;
font-family: var(--font-body);
margin-bottom: 0.15rem;
}
.home-why {
background: var(--color-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
padding: var(--space-4);
margin-bottom: var(--space-4);
}
.home-why :first-child {
margin-top: 0;
}
.home-why :last-child {
margin-bottom: 0;
}
.home-cta {
text-align: center;
padding: var(--space-4);
background: linear-gradient(135deg, var(--color-peche-doux), var(--color-rose-tendre));
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.home-cta h2,
.home-cta h3 {
margin-top: 0;
margin-bottom: var(--space-3);
}
.home-cta .cta-button {
margin: var(--space-1);
}
/* ——— Legacy / inner pages ——— */
.logo-accueil img {
width: 100%;
max-height: 400px;
object-fit: cover;
display: block;
margin-bottom: var(--space-4);
border-radius: var(--radius-sm);
}
.content-section {
background: var(--color-surface);
padding: var(--space-4);
margin-bottom: var(--space-3);
border-radius: var(--radius-md);
box-shadow: var(--shadow-soft);
}
button,
input[type="submit"],
.cta-button {
font-family: var(--font-body);
font-weight: 700;
background: var(--color-peche-doux);
color: var(--color-texte-principal);
border: none;
padding: var(--space-2) var(--space-4);
border-radius: 999px;
cursor: pointer;
text-decoration: none;
display: inline-block; display: inline-block;
margin-top: var(--space-1); padding: 0.35rem 0.5rem;
transition: background-color 0.2s ease, transform 0.15s ease; background: var(--lav-pop);
box-shadow: var(--shadow-soft); box-shadow: 3px 3px 0 var(--ink);
margin-bottom: 1rem;
} }
.cta-button { .cp-zine-grid {
text-decoration: none;
}
button:hover,
input[type="submit"]:hover,
.cta-button:hover {
background: var(--color-rose-tendre);
text-decoration: none;
transform: translateY(-1px);
}
@media (prefers-reduced-motion: reduce) {
button:hover,
input[type="submit"]:hover,
.cta-button:hover {
transform: none;
}
}
form div {
margin-bottom: var(--space-2);
}
form label {
display: block;
margin-bottom: var(--space-1);
font-weight: 600;
}
form input[type="text"],
form input[type="email"],
form input[type="tel"],
form textarea {
width: 100%;
padding: var(--space-2);
border: 1px solid color-mix(in srgb, var(--color-menthe-claire) 70%, var(--color-texte-principal));
border-radius: var(--radius-sm);
font-family: var(--font-body);
font-size: 1rem;
}
.site-form {
max-width: 38rem;
margin: var(--space-4) auto;
padding: var(--space-4);
background: var(--color-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-soft);
}
.site-form button[type="submit"] {
margin-top: var(--space-2);
}
/* ——— Feature sections (shortcodes) ——— */
.feature-section {
background: var(--color-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-soft);
padding: var(--space-4);
margin: var(--space-4) 0;
}
.feature-section__title {
margin: 0 0 var(--space-2);
padding-bottom: var(--space-2);
border-bottom: 2px solid var(--color-menthe-claire);
}
.feature-section__body > :first-child {
margin-top: 0;
}
.feature-section__body > :last-child {
margin-bottom: 0;
}
.feature-grid {
display: grid; display: grid;
gap: var(--space-3); gap: 1rem;
margin: var(--space-3) 0; margin-bottom: 2rem;
} }
@media (min-width: 40rem) { @media (min-width: 40rem) {
.feature-grid { .cp-zine-grid {
grid-template-columns: repeat(2, 1fr); grid-template-columns: 1.35fr 1fr;
} }
} }
.feature-card { .cp-panel {
background: color-mix(in srgb, var(--color-blanc) 88%, var(--color-lavande)); border: var(--border);
border-radius: var(--radius-sm); background: #fff;
padding: var(--space-3); padding: 1.25rem;
border: 1px solid color-mix(in srgb, var(--color-texte-principal) 6%, transparent); box-shadow: var(--shadow-soft);
} }
.feature-card__title { .cp-panel--mint {
margin: 0 0 var(--space-1); background: color-mix(in srgb, var(--mint-pop) 55%, #fff);
font-size: 1rem;
} }
.feature-card__body { .cp-stickers {
margin: 0;
font-size: 0.95rem;
color: var(--color-texte-secondaire);
}
/* ——— Footer ——— */
.footer-site {
background: color-mix(in srgb, var(--color-jaune-pale) 88%, var(--color-blanc));
padding: var(--space-4) var(--space-3);
text-align: center;
border-top: 1px solid color-mix(in srgb, var(--color-peche-doux) 80%, transparent);
margin-top: var(--space-5);
}
.footer-site p {
margin: var(--space-1) 0;
font-size: 0.95rem;
color: var(--color-texte-secondaire);
}
.footer-site__links {
display: flex; display: flex;
flex-wrap: wrap; flex-direction: column;
justify-content: center; gap: 0.65rem;
gap: var(--space-2) var(--space-3);
margin-top: var(--space-2);
} }
.footer-site__links a { .cp-sticker {
color: var(--color-texte-principal); font-family: var(--font-mono);
font-size: 0.78rem;
font-weight: 600; font-weight: 600;
text-decoration: none; border: var(--border);
padding: 0.55rem 0.65rem;
background: var(--peach-pop);
box-shadow: 3px 3px 0 var(--ink);
transform: rotate(var(--rot, 0deg));
} }
.footer-site__links a:hover { .cp-sticker:nth-child(1) {
text-decoration: underline; --rot: -0.8deg;
color: var(--color-lien-hover); }
.cp-sticker:nth-child(2) {
--rot: 1deg;
background: var(--lav-pop);
}
.cp-sticker:nth-child(3) {
--rot: -0.4deg;
background: var(--tape);
}
.cp-sticker strong {
display: block;
font-family: var(--font-display);
font-size: 0.95rem;
text-transform: none;
letter-spacing: 0;
margin-bottom: 0.15rem;
}
.cp-band {
border: var(--border);
background: var(--ink);
color: var(--paper);
padding: 1.5rem 1.25rem;
box-shadow: var(--shadow-hard);
margin-bottom: 2rem;
}
.cp-band h2 {
margin-top: 0;
color: var(--tape);
font-size: clamp(1.35rem, 1rem + 1.2vw, 1.75rem);
}
.cp-band a {
color: var(--mint-pop);
}
.cp-cta {
text-align: center;
border: var(--border);
padding: 1.75rem 1rem;
background: linear-gradient(135deg, var(--peach-pop), var(--tape));
box-shadow: var(--shadow-hard);
}
.cp-cta h2 {
margin-top: 0;
}
.cp-btn {
font-family: var(--font-mono);
font-size: 0.82rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
text-decoration: none;
color: var(--ink);
border: var(--border);
padding: 0.65rem 1.1rem;
background: #fff;
display: inline-block;
margin: 0.35rem;
box-shadow: var(--shadow-soft);
}
.cp-btn:hover {
transform: translate(-3px, -3px);
box-shadow: var(--shadow-hard);
}
/* Legacy content pages */
body.theme-cahier-pop .logo-accueil img {
border: var(--border);
box-shadow: var(--shadow-hard);
}
body.theme-cahier-pop .content-section {
border: var(--border);
background: #fff;
padding: 1.25rem;
margin-bottom: 1.25rem;
box-shadow: var(--shadow-soft);
}
body.theme-cahier-pop h1,
body.theme-cahier-pop h2,
body.theme-cahier-pop h3 {
font-family: var(--font-display);
letter-spacing: -0.02em;
}
body.theme-cahier-pop a {
color: var(--ink);
font-weight: 600;
text-decoration-thickness: 2px;
}
body.theme-cahier-pop .cta-button {
font-family: var(--font-mono);
font-size: 0.82rem;
text-transform: uppercase;
letter-spacing: 0.06em;
border: var(--border);
background: var(--tape);
color: var(--ink);
padding: 0.6rem 1rem;
box-shadow: var(--shadow-soft);
border-radius: 0;
}
body.theme-cahier-pop .cta-button:hover {
transform: translate(-2px, -2px);
box-shadow: var(--shadow-hard);
}
body.theme-cahier-pop form input,
body.theme-cahier-pop form textarea {
border: var(--border);
font-family: var(--font-display);
}
body.theme-cahier-pop button,
body.theme-cahier-pop input[type="submit"] {
font-family: var(--font-mono);
text-transform: uppercase;
border: var(--border);
box-shadow: var(--shadow-soft);
cursor: pointer;
}
/* Footer */
.cp-footer {
border-top: var(--border);
background: var(--ink);
color: var(--paper);
padding: 1.5rem 1rem;
text-align: center;
}
.cp-footer a {
color: var(--mint-pop);
font-family: var(--font-mono);
font-size: 0.78rem;
text-transform: uppercase;
letter-spacing: 0.08em;
margin: 0 0.5rem;
} }
-3
View File
@@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 520 140" preserveAspectRatio="xMidYMid slice" fill="none">
<path stroke="#7eb9a4" stroke-width="2.5" stroke-linecap="round" opacity="0.35" d="M20 100 C 90 30, 160 120, 230 70 S 360 20, 500 85"/>
</svg>

Before

Width:  |  Height:  |  Size: 257 B

+7 -12
View File
@@ -1,8 +1,7 @@
(function () { (function () {
var nav = document.getElementById("site-nav"); var nav = document.getElementById("cp-nav");
if (!nav) return; if (!nav) return;
var toggle = document.getElementById("cp-nav-toggle");
var toggle = nav.querySelector(".nav-toggle");
var mq = window.matchMedia("(max-width: 51.99rem)"); var mq = window.matchMedia("(max-width: 51.99rem)");
function setOpen(open) { function setOpen(open) {
@@ -18,12 +17,8 @@
var next = !nav.classList.contains("is-open"); var next = !nav.classList.contains("is-open");
setOpen(next); setOpen(next);
if (next) { if (next) {
var first = nav.querySelector(".site-nav__list a"); var first = nav.querySelector(".cp-nav-list a");
if (first) { if (first) requestAnimationFrame(function () { first.focus(); });
window.requestAnimationFrame(function () {
first.focus();
});
}
} }
}); });
} }
@@ -35,13 +30,13 @@
} }
}); });
nav.querySelectorAll(".site-nav__list a").forEach(function (a) { nav.querySelectorAll(".cp-nav-list a").forEach(function (a) {
a.addEventListener("click", function () { a.addEventListener("click", function () {
if (mq.matches) setOpen(false); if (mq.matches) setOpen(false);
}); });
}); });
mq.addEventListener("change", function (e) { mq.addEventListener("change", function (ev) {
if (!e.matches) setOpen(false); if (!ev.matches) setOpen(false);
}); });
})(); })();