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
This commit is contained in:
parent
1cc51e0745
commit
89b2bd7090
@ -1,48 +1,33 @@
|
|||||||
---
|
---
|
||||||
title: "P'titsPas - Plateforme Publique de Gestion Petite Enfance pour Collectivités"
|
title: "P'titsPas : La solution publique pour accompagner la Petite Enfance de votre territoire"
|
||||||
description: "Solution numérique publique pour les collectivités : gestion transparente des relations parents-assistantes maternelles, sans notation ni algorithme opaque. Égalité et neutralité garanties."
|
description: "Solution numérique publique pour les collectivités : gestion transparente des relations parents-assistantes maternelles, sans notation ni algorithme opaque. Égalité et neutralité garanties."
|
||||||
keywords: ["P'titsPas", "ptitspas", "p'tits pas", "ptits pas", "petitspas", "petit pas", "petits pas", "opetitspas", "pitispas", "ptitpas", "p'titpas", "Ptitspas", "PTITSPAS", "petite enfance", "assistante maternelle", "collectivité", "commune", "garde enfant", "RPE", "relais petite enfance", "plateforme publique", "transparence", "neutralité", "gestion municipale petite enfance", "plateforme numérique collectivité", "mise en relation parents assistante maternelle", "solution publique garde enfant", "service public petite enfance", "accompagnement parental collectivité", "transparence service public", "égalité accès garde enfant", "politique municipale enfance", "dématérialisation services municipaux"]
|
keywords: ["P'titsPas", "ptitspas", "p'tits pas", "ptits pas", "petitspas", "petit pas", "petits pas", "opetitspas", "pitispas", "ptitpas", "p'titpas", "Ptitspas", "PTITSPAS", "petite enfance", "assistante maternelle", "collectivité", "commune", "garde enfant", "RPE", "relais petite enfance", "plateforme publique", "transparence", "neutralité", "gestion municipale petite enfance", "plateforme numérique collectivité", "mise en relation parents assistante maternelle", "solution publique garde enfant", "service public petite enfance", "accompagnement parental collectivité", "transparence service public", "égalité accès garde enfant", "politique municipale enfance", "dématérialisation services municipaux"]
|
||||||
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_alt: "Logo P'titsPas"
|
||||||
|
hero_tagline: "Zéro algo opaque · Zéro notation · 100 % collectivité"
|
||||||
|
intro_md: |
|
||||||
|
**Modernisez la mise en relation Parents - Assistantes Maternelles avec une plateforme 100% éthique, conçue pour les collectivités.**
|
||||||
|
|
||||||
|
Les RPE sont saturés, la gestion administrative est lourde et les parents peinent à trouver une information fiable ?
|
||||||
|
**P'titsPas** centralise et sécurise tout le parcours d'accueil individuel, tout en redonnant la main à la collectivité.
|
||||||
|
|
||||||
|
Plus qu'un outil de gestion, c'est la garantie d'un **Service Public Numérique** exemplaire.
|
||||||
|
ethics:
|
||||||
|
- title: "Sans notation"
|
||||||
|
detail: " des pros"
|
||||||
|
- title: "Sans algorithme opaque"
|
||||||
|
detail: " de sélection"
|
||||||
|
- title: "100 % conforme"
|
||||||
|
detail: " aux valeurs de la République"
|
||||||
|
why_md: |
|
||||||
|
## Pourquoi choisir P'titsPas pour votre commune ?
|
||||||
|
|
||||||
|
Là où les plateformes privées "ubérisent" la garde d'enfant, P'titsPas **restaure le lien de confiance** et la neutralité du service public.
|
||||||
|
|
||||||
|
* **🏛️ Souveraineté des Données :** Vos données restent sur le territoire, protégées et maîtrisées (RGPD strict).
|
||||||
|
* **⚖️ É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.
|
||||||
|
* **📱 Simplicité d'Usage :** Une interface pensée pour tous (parents, assistantes mat', agents), accessible sur mobile et PC.
|
||||||
|
cta_title: "Reprenez la main sur votre politique petite enfance"
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="logo-accueil"><img src="/images/page_login_4.1.png" alt="Logo P'titsPas"></div>
|
|
||||||
|
|
||||||
# P'titsPas : La solution publique pour accompagner la Petite Enfance de votre territoire
|
|
||||||
|
|
||||||
<div class="content-section">
|
|
||||||
|
|
||||||
**Modernisez la mise en relation Parents - Assistantes Maternelles avec une plateforme 100% éthique, conçue pour les collectivités.**
|
|
||||||
|
|
||||||
Les RPE sont saturés, la gestion administrative est lourde et les parents peinent à trouver une information fiable ?
|
|
||||||
**P'titsPas** centralise et sécurise tout le parcours d'accueil individuel, tout en redonnant la main à la collectivité.
|
|
||||||
|
|
||||||
Plus qu'un outil de gestion, c'est la garantie d'un **Service Public Numérique** exemplaire :
|
|
||||||
* **Sans notation** des professionnels
|
|
||||||
* **Sans algorithme opaque** de sélection
|
|
||||||
* **100% conforme** aux valeurs de la République
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
<div class="content-section">
|
|
||||||
|
|
||||||
## Pourquoi choisir P'titsPas pour votre commune ?
|
|
||||||
|
|
||||||
Là où les plateformes privées "ubérisent" la garde d'enfant, P'titsPas **restaure le lien de confiance** et la neutralité du service public.
|
|
||||||
|
|
||||||
* **🏛️ Souveraineté des Données :** Vos données restent sur le territoire, protégées et maîtrisées (RGPD strict).
|
|
||||||
* **⚖️ É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.
|
|
||||||
* **📱 Simplicité d'Usage :** Une interface pensée pour tous (parents, assistantes mat', agents), accessible sur mobile et PC.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
|
||||||
<div style="text-align: center; margin-top: calc(var(--padding-module) * 3);">
|
|
||||||
|
|
||||||
### Reprenez le contrôle de votre politique Petite Enfance
|
|
||||||
|
|
||||||
<a href="/fonctionnalites" class="cta-button">Voir les fonctionnalités clés</a>
|
|
||||||
<a href="/contact" class="cta-button">Demander une démo</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|||||||
@ -3,40 +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">
|
||||||
|
|
||||||
<!-- SEO Meta Tags -->
|
|
||||||
<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 }}">
|
||||||
|
|
||||||
<!-- Prevent indexing of staging site -->
|
|
||||||
{{ 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 }}
|
||||||
|
|
||||||
<!-- Open Graph / Facebook -->
|
|
||||||
<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">
|
||||||
|
|
||||||
<!-- Twitter -->
|
|
||||||
<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">
|
||||||
|
|
||||||
<!-- Canonical URL -->
|
|
||||||
<link rel="canonical" href="{{ .Permalink }}">
|
<link rel="canonical" href="{{ .Permalink }}">
|
||||||
|
<link rel="icon" type="image/x-icon" href="{{ "favicon.ico" | relURL }}">
|
||||||
<!-- Favicon -->
|
|
||||||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
|
||||||
|
|
||||||
<!-- JSON-LD structured data for Google -->
|
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{
|
{
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
@ -57,16 +43,12 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ `/css/style.css` | relURL }}">
|
<link rel="stylesheet" href="{{ `/css/style.css` | relURL }}">
|
||||||
|
|
||||||
<!-- Google tag (gtag.js) -->
|
|
||||||
<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 || [];
|
||||||
function gtag(){dataLayer.push(arguments);}
|
function gtag(){dataLayer.push(arguments);}
|
||||||
gtag('js', new Date());
|
gtag('js', new Date());
|
||||||
|
|
||||||
gtag('config', 'G-65J8GVLCRH', {
|
gtag('config', 'G-65J8GVLCRH', {
|
||||||
'anonymize_ip': true,
|
'anonymize_ip': true,
|
||||||
'allow_google_signals': false,
|
'allow_google_signals': false,
|
||||||
@ -75,19 +57,31 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body class="theme-cahier-pop">
|
||||||
<header>
|
<a class="skip-link" href="#contenu-principal">Aller au contenu</a>
|
||||||
<nav>
|
<header class="cp-header">
|
||||||
<ul>
|
<div class="cp-header__inner">
|
||||||
{{ range .Site.Menus.main }}
|
<a class="cp-logo" href="{{ "/" | relURL }}">P'titsPas</a>
|
||||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
<nav class="cp-nav" id="cp-nav" aria-label="Navigation principale">
|
||||||
{{ end }}
|
<button type="button" class="cp-nav-toggle" id="cp-nav-toggle" aria-expanded="false" aria-controls="cp-nav-panel" aria-label="Ouvrir le menu">
|
||||||
</ul>
|
<span aria-hidden="true"></span>
|
||||||
</nav>
|
<span aria-hidden="true"></span>
|
||||||
|
<span aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
|
<div class="cp-nav-panel" id="cp-nav-panel">
|
||||||
|
<ul class="cp-nav-list">
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
<li><a href="{{ .URL | relURL }}">{{ .Name }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main id="contenu-principal" class="cp-main">
|
||||||
{{ block "main" . }}{{ .Content }}{{ end }}
|
{{ block "main" . }}{{ .Content }}{{ end }}
|
||||||
</main>
|
</main>
|
||||||
{{ partial "footer.html" . }}
|
{{ partial "footer.html" . }}
|
||||||
|
<script src="{{ `/js/site.js` | relURL }}" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -1,3 +1,5 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
{{ .Content }}
|
<div class="cp-page">
|
||||||
|
{{ .Content }}
|
||||||
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@ -1,5 +1,7 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<article class="content">
|
<div class="cp-page">
|
||||||
{{ .Content }}
|
<article class="content">
|
||||||
</article>
|
{{ .Content }}
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
35
layouts/index.html
Normal file
35
layouts/index.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
<div class="cp-home">
|
||||||
|
<section class="cp-hero">
|
||||||
|
<figure class="cp-polaroid">
|
||||||
|
<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">
|
||||||
|
</figure>
|
||||||
|
<div class="cp-hero-copy">
|
||||||
|
<p class="cp-tagline">{{ .Params.hero_tagline | default "Service public numérique — petite enfance" }}</p>
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div class="cp-zine-grid">
|
||||||
|
<div class="cp-panel cp-panel--mint">
|
||||||
|
{{ with .Params.intro_md }}{{ . | markdownify }}{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="cp-panel">
|
||||||
|
<div class="cp-stickers" aria-label="Engagements">
|
||||||
|
{{ range .Params.ethics }}
|
||||||
|
<div class="cp-sticker"><strong>{{ .title }}</strong>{{ .detail }}</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cp-band">
|
||||||
|
{{ with .Params.why_md }}{{ . | markdownify }}{{ end }}
|
||||||
|
</div>
|
||||||
|
<section class="cp-cta" aria-labelledby="cp-cta-title">
|
||||||
|
<h2 id="cp-cta-title">{{ .Params.cta_title | default "Passer à l'action" }}</h2>
|
||||||
|
<div>
|
||||||
|
<a class="cp-btn" href="{{ "fonctionnalites" | relURL }}">Fonctionnalités</a>
|
||||||
|
<a class="cp-btn" href="{{ "contact" | relURL }}">Demander une démo</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
@ -1,11 +1,8 @@
|
|||||||
<footer style="background-color: #f8f9fa; padding: 20px 0; text-align: center; border-top: 1px solid #e7e7e7; margin-top: 40px;">
|
<footer class="cp-footer">
|
||||||
<div class="container">
|
<p>© {{ now.Year }} P'titsPas</p>
|
||||||
<p>© {{ now.Year }} P'titsPas - Tous droits réservés.</p>
|
<nav aria-label="Liens de pied de page">
|
||||||
<p>
|
<a href="{{ "mentions-legales" | relURL }}">Mentions légales</a>
|
||||||
<a href="/mentions-legales/" style="margin-right: 15px; text-decoration: none; color: #007bff;">Mentions Légales</a>
|
<a href="{{ "politique-de-confidentialite" | relURL }}">Confidentialité</a>
|
||||||
<a href="/politique-de-confidentialite/" style="margin-right: 15px; text-decoration: none; color: #007bff;">Politique de Confidentialité</a>
|
<a href="{{ "technique" | relURL }}">Données techniques</a>
|
||||||
<a href="/technique/" style="text-decoration: none; color: #007bff;">Données Techniques</a>
|
</nav>
|
||||||
</p>
|
|
||||||
<!-- Vous pouvez ajouter ici d'autres informations ou liens si nécessaire -->
|
|
||||||
</div>
|
|
||||||
</footer>
|
</footer>
|
||||||
@ -1,180 +1,487 @@
|
|||||||
/* Charte Graphique P'titsPas */
|
/* Proposition « Cahier pop » — néo-galet / fanzine (très différent de la vitrine classique) */
|
||||||
|
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Syne:wght@400;600;700;800&display=swap");
|
||||||
|
|
||||||
/* Variables de Couleurs */
|
|
||||||
: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; /* Approximation, à ajuster si vous avez un hex exact */
|
--peach-pop: #ffb4a2;
|
||||||
--color-corail-leger: #FFDAB9; /* Approximation, à ajuster */
|
--lav-pop: #c4b5fd;
|
||||||
--color-texte-principal: #333333;
|
--border: 3px solid var(--ink);
|
||||||
--color-texte-secondaire: #555555;
|
--shadow-hard: 6px 6px 0 var(--ink);
|
||||||
--color-blanc: #FFFFFF;
|
--shadow-soft: 4px 4px 0 rgba(20, 17, 15, 0.35);
|
||||||
--padding-module: 8px;
|
--font-display: "Syne", system-ui, sans-serif;
|
||||||
|
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
|
||||||
|
--nav-cut: 52rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Import des polices (exemple avec Google Fonts) */
|
@media (prefers-reduced-motion: reduce) {
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Merienda:wght@400;700&family=Open+Sans:wght@400;700&family=Poppins:wght@700&family=Quicksand:wght@500;700&family=Montserrat:wght@400;700&display=swap');
|
*,
|
||||||
/* Si vous avez une police script/brushed spécifique, elle devra être importée ici aussi, potentiellement localement */
|
*::before,
|
||||||
|
*::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Styles de Base */
|
*,
|
||||||
body {
|
*::before,
|
||||||
font-family: 'Open Sans', sans-serif;
|
*::after {
|
||||||
color: var(--color-texte-principal);
|
box-sizing: border-box;
|
||||||
background-color: var(--color-blanc); /* Ou une teinte pastel très claire comme fond général */
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-cahier-pop {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
font-family: var(--font-display);
|
||||||
line-height: 1.6;
|
font-size: clamp(1rem, 0.92rem + 0.35vw, 1.1rem);
|
||||||
|
line-height: 1.55;
|
||||||
|
color: var(--ink);
|
||||||
|
background-color: var(--paper);
|
||||||
|
background-image:
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
:focus-visible {
|
||||||
padding: calc(var(--padding-module) * 3); /* 24px */
|
outline: 3px solid var(--mint-pop);
|
||||||
max-width: 960px;
|
outline-offset: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skip-link {
|
||||||
|
position: absolute;
|
||||||
|
left: -9999px;
|
||||||
|
z-index: 2000;
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
font-weight: 700;
|
||||||
|
text-decoration: none;
|
||||||
|
border: var(--border);
|
||||||
|
box-shadow: var(--shadow-hard);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skip-link:focus {
|
||||||
|
left: 0.75rem;
|
||||||
|
top: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.cp-header {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
background: var(--tape);
|
||||||
|
border-bottom: var(--border);
|
||||||
|
box-shadow: 0 4px 0 rgba(20, 17, 15, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-header__inner {
|
||||||
|
max-width: 72rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 1rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-logo {
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: clamp(1.15rem, 1rem + 0.6vw, 1.5rem);
|
||||||
|
letter-spacing: -0.03em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--ink);
|
||||||
|
border: var(--border);
|
||||||
|
padding: 0.35rem 0.65rem;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: var(--shadow-soft);
|
||||||
|
transform: rotate(-1.5deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-logo:hover {
|
||||||
|
transform: rotate(0deg) translate(-2px, -2px);
|
||||||
|
box-shadow: var(--shadow-hard);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-toggle {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 5px;
|
||||||
|
width: 2.75rem;
|
||||||
|
height: 2.75rem;
|
||||||
|
padding: 0;
|
||||||
|
border: var(--border);
|
||||||
|
background: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: var(--shadow-soft);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-toggle span {
|
||||||
|
display: block;
|
||||||
|
width: 1.1rem;
|
||||||
|
height: 3px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: var(--ink);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-panel {
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 0;
|
||||||
|
transition: max-height 0.35s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav.is-open .cp-nav-panel {
|
||||||
|
max-height: 22rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-list {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.75rem 0 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.5rem;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-list a {
|
||||||
|
font-family: var(--font-mono);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--ink);
|
||||||
|
border: var(--border);
|
||||||
|
padding: 0.45rem 0.65rem;
|
||||||
|
background: #fff;
|
||||||
|
display: inline-block;
|
||||||
|
box-shadow: 3px 3px 0 var(--ink);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-list a:hover {
|
||||||
|
transform: translate(-2px, -2px);
|
||||||
|
box-shadow: 5px 5px 0 var(--ink);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 52rem) {
|
||||||
|
.cp-nav-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-panel {
|
||||||
|
max-height: none !important;
|
||||||
|
overflow: visible;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-nav-list {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 51.99rem) {
|
||||||
|
.cp-nav-panel {
|
||||||
|
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;
|
||||||
|
padding: 1.5rem 1rem 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-page {
|
||||||
|
border: var(--border);
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: var(--shadow-hard);
|
||||||
|
padding: clamp(1.25rem, 3vw, 2.25rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-page .content {
|
||||||
|
max-width: 48rem;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
/* Home */
|
||||||
font-family: 'Merienda', cursive; /* Police Script pour titres d'impact */
|
.cp-hero {
|
||||||
color: var(--color-texte-principal);
|
display: grid;
|
||||||
/* Peut nécessiter des ajustements de taille ou de graisse spécifiques */
|
gap: 1.5rem;
|
||||||
/* font-weight: 700; /* ou 400 selon le style désiré */
|
margin-bottom: 2rem;
|
||||||
|
align-items: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2, h3, h4, h5, h6 {
|
@media (min-width: 52rem) {
|
||||||
font-family: 'Poppins', sans-serif; /* Pour les sous-titres et autres titres */
|
.cp-hero {
|
||||||
color: var(--color-texte-principal);
|
grid-template-columns: 1fr 1.05fr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Accroches et sous-titres (exemples) */
|
.cp-polaroid {
|
||||||
.accroche {
|
border: var(--border);
|
||||||
font-family: 'Quicksand', sans-serif;
|
background: #fff;
|
||||||
font-weight: 700;
|
padding: 0.75rem 0.75rem 2.25rem;
|
||||||
color: var(--color-texte-secondaire);
|
box-shadow: var(--shadow-hard);
|
||||||
|
transform: rotate(-2.2deg);
|
||||||
|
max-width: 22rem;
|
||||||
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
@media (min-width: 52rem) {
|
||||||
color: var(--color-corail-leger); /* Corail léger pour les liens */
|
.cp-polaroid {
|
||||||
text-decoration: none;
|
margin: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
.cp-polaroid img {
|
||||||
text-decoration: underline;
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Header / Navigation */
|
.cp-hero-copy h1 {
|
||||||
header nav {
|
font-size: clamp(1.75rem, 1.1rem + 2.8vw, 2.85rem);
|
||||||
background-color: var(--color-menthe-claire); /* Menthe claire pour le header */
|
line-height: 1.08;
|
||||||
padding: var(--padding-module) 0;
|
margin: 0 0 0.75rem;
|
||||||
|
letter-spacing: -0.04em;
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav ul {
|
.cp-tagline {
|
||||||
list-style-type: none;
|
font-family: var(--font-mono);
|
||||||
padding: 0 calc(var(--padding-module) * 2);
|
font-size: 0.85rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
border: var(--border);
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.35rem 0.5rem;
|
||||||
|
background: var(--lav-pop);
|
||||||
|
box-shadow: 3px 3px 0 var(--ink);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-zine-grid {
|
||||||
|
display: grid;
|
||||||
|
gap: 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 40rem) {
|
||||||
|
.cp-zine-grid {
|
||||||
|
grid-template-columns: 1.35fr 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-panel {
|
||||||
|
border: var(--border);
|
||||||
|
background: #fff;
|
||||||
|
padding: 1.25rem;
|
||||||
|
box-shadow: var(--shadow-soft);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-panel--mint {
|
||||||
|
background: color-mix(in srgb, var(--mint-pop) 55%, #fff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-stickers {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.65rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-sticker {
|
||||||
|
font-family: var(--font-mono);
|
||||||
|
font-size: 0.78rem;
|
||||||
|
font-weight: 600;
|
||||||
|
border: var(--border);
|
||||||
|
padding: 0.55rem 0.65rem;
|
||||||
|
background: var(--peach-pop);
|
||||||
|
box-shadow: 3px 3px 0 var(--ink);
|
||||||
|
transform: rotate(var(--rot, 0deg));
|
||||||
|
}
|
||||||
|
|
||||||
|
.cp-sticker:nth-child(1) {
|
||||||
|
--rot: -0.8deg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
text-align: center;
|
||||||
margin: 0;
|
border: var(--border);
|
||||||
|
padding: 1.75rem 1rem;
|
||||||
|
background: linear-gradient(135deg, var(--peach-pop), var(--tape));
|
||||||
|
box-shadow: var(--shadow-hard);
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav ul li {
|
.cp-cta h2 {
|
||||||
display: inline;
|
margin-top: 0;
|
||||||
margin-right: calc(var(--padding-module) * 2.5); /* 20px */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav ul li a {
|
.cp-btn {
|
||||||
color: var(--color-texte-principal); /* Texte plus foncé sur fond pastel clair */
|
font-family: var(--font-mono);
|
||||||
|
font-size: 0.82rem;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
padding: calc(var(--padding-module) * 1.5) var(--padding-module);
|
color: var(--ink);
|
||||||
|
border: var(--border);
|
||||||
|
padding: 0.65rem 1.1rem;
|
||||||
|
background: #fff;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-family: 'Quicksand', sans-serif;
|
margin: 0.35rem;
|
||||||
font-weight: 700;
|
box-shadow: var(--shadow-soft);
|
||||||
border-radius: calc(var(--padding-module) / 2); /* 4px */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header nav ul li a:hover {
|
.cp-btn:hover {
|
||||||
background-color: var(--color-peche-doux); /* Pêche doux au survol */
|
transform: translate(-3px, -3px);
|
||||||
text-decoration: none;
|
box-shadow: var(--shadow-hard);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Style pour l'image du logo sur la page d'accueil */
|
/* Legacy content pages */
|
||||||
.logo-accueil img {
|
body.theme-cahier-pop .logo-accueil img {
|
||||||
width: 100%;
|
border: var(--border);
|
||||||
max-height: 400px;
|
box-shadow: var(--shadow-hard);
|
||||||
object-fit: cover;
|
|
||||||
display: block;
|
|
||||||
margin-bottom: calc(var(--padding-module) * 4); /* 32px */
|
|
||||||
border-radius: var(--padding-module); /* Coins arrondis style galet */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Boutons */
|
body.theme-cahier-pop .content-section {
|
||||||
button,
|
border: var(--border);
|
||||||
input[type="submit"],
|
background: #fff;
|
||||||
.cta-button {
|
padding: 1.25rem;
|
||||||
font-family: 'Quicksand', sans-serif;
|
margin-bottom: 1.25rem;
|
||||||
font-weight: 700;
|
box-shadow: var(--shadow-soft);
|
||||||
background-color: var(--color-peche-doux); /* Pêche doux pour les boutons primaires */
|
}
|
||||||
color: var(--color-texte-principal);
|
|
||||||
border: none;
|
body.theme-cahier-pop h1,
|
||||||
padding: calc(var(--padding-module) * 1.5) calc(var(--padding-module) * 3);
|
body.theme-cahier-pop h2,
|
||||||
border-radius: calc(var(--padding-module) * 3); /* Forme de galet allongé */
|
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;
|
cursor: pointer;
|
||||||
text-decoration: none;
|
|
||||||
display: inline-block;
|
|
||||||
margin-top: var(--padding-module);
|
|
||||||
transition: background-color 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover,
|
|
||||||
input[type="submit"]:hover,
|
|
||||||
.cta-button:hover {
|
|
||||||
background-color: var(--color-rose-tendre); /* Rose tendre au survol */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Formulaires (basique) */
|
|
||||||
form div {
|
|
||||||
margin-bottom: calc(var(--padding-module) * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
form label {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: var(--padding-module);
|
|
||||||
font-family: 'Quicksand', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
form input[type="text"],
|
|
||||||
form input[type="email"],
|
|
||||||
form input[type="tel"],
|
|
||||||
form textarea {
|
|
||||||
width: 100%;
|
|
||||||
padding: var(--padding-module);
|
|
||||||
border: 1px solid var(--color-menthe-claire);
|
|
||||||
border-radius: calc(var(--padding-module) / 2); /* 4px */
|
|
||||||
box-sizing: border-box; /* Important pour que padding ne change pas la largeur totale */
|
|
||||||
font-family: 'Open Sans', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sections de contenu - style galet */
|
|
||||||
.content-section {
|
|
||||||
background-color: var(--color-blanc);
|
|
||||||
padding: calc(var(--padding-module) * 3);
|
|
||||||
margin-bottom: calc(var(--padding-module) * 3);
|
|
||||||
border-radius: calc(var(--padding-module) * 2); /* 16px, angles arrondis */
|
|
||||||
box-shadow: 0 4px 8px rgba(0,0,0,0.05); /* Ombre douce */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Footer */
|
/* Footer */
|
||||||
footer {
|
.cp-footer {
|
||||||
background-color: var(--color-jaune-pale); /* Jaune pâle pour le footer */
|
border-top: var(--border);
|
||||||
padding: calc(var(--padding-module) * 2.5) 0;
|
background: var(--ink);
|
||||||
|
color: var(--paper);
|
||||||
|
padding: 1.5rem 1rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-top: 1px solid var(--color-peche-doux);
|
|
||||||
margin-top: calc(var(--padding-module) * 5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
footer p {
|
.cp-footer a {
|
||||||
margin: var(--padding-module) 0;
|
color: var(--mint-pop);
|
||||||
font-size: 0.9em;
|
font-family: var(--font-mono);
|
||||||
}
|
font-size: 0.78rem;
|
||||||
|
text-transform: uppercase;
|
||||||
footer a {
|
letter-spacing: 0.08em;
|
||||||
color: var(--color-texte-secondaire);
|
margin: 0 0.5rem;
|
||||||
}
|
}
|
||||||
42
static/js/site.js
Normal file
42
static/js/site.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
(function () {
|
||||||
|
var nav = document.getElementById("cp-nav");
|
||||||
|
if (!nav) return;
|
||||||
|
var toggle = document.getElementById("cp-nav-toggle");
|
||||||
|
var mq = window.matchMedia("(max-width: 51.99rem)");
|
||||||
|
|
||||||
|
function setOpen(open) {
|
||||||
|
nav.classList.toggle("is-open", open);
|
||||||
|
if (toggle) {
|
||||||
|
toggle.setAttribute("aria-expanded", open ? "true" : "false");
|
||||||
|
toggle.setAttribute("aria-label", open ? "Fermer le menu" : "Ouvrir le menu");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
toggle.addEventListener("click", function () {
|
||||||
|
var next = !nav.classList.contains("is-open");
|
||||||
|
setOpen(next);
|
||||||
|
if (next) {
|
||||||
|
var first = nav.querySelector(".cp-nav-list a");
|
||||||
|
if (first) requestAnimationFrame(function () { first.focus(); });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener("keydown", function (e) {
|
||||||
|
if (e.key === "Escape" && nav.classList.contains("is-open")) {
|
||||||
|
setOpen(false);
|
||||||
|
if (toggle) toggle.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nav.querySelectorAll(".cp-nav-list a").forEach(function (a) {
|
||||||
|
a.addEventListener("click", function () {
|
||||||
|
if (mq.matches) setOpen(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
mq.addEventListener("change", function (ev) {
|
||||||
|
if (!ev.matches) setOpen(false);
|
||||||
|
});
|
||||||
|
})();
|
||||||
Loading…
x
Reference in New Issue
Block a user