/*
Theme Name: Clément Marceau
Template: twentytwentyfour
Description: Thème enfant de Twenty Twenty-Four appliquant le design system Clément Marceau (Raleway, ocre #B09010, teal, crème), avec mode sombre et panneau d'accessibilité.
Version: 1.2.0
Text Domain: cm-somatic
*/

/* =========================================================
   Jetons — mode clair (par défaut)
   ========================================================= */
:root {
	--cm-ocre: #B09010;
	--cm-ocre-deep: #8C7308;
	--cm-ocre-mist: #F7F1DC;
	--cm-ocre-light: #E8DBA8;
	--cm-teal: #1F6660;
	--cm-teal-deep: #154A45;
	--cm-cream: #FBF7EE;

	--cm-bg: #FBF7EE;
	--cm-surface: #FFFFFF;
	--cm-fg: #161510;
	--cm-fg-muted: #6E6957;
	--cm-border: #E5DFD2;
	--cm-border-strong: #C9C0AE;
	--cm-hero-top: #FBF5E0;
	--cm-link: #8C7308;
	--cm-btn-bg: #B09010;
	--cm-btn-bg-hover: #8C7308;
	--cm-btn-fg: #FFFFFF;
	--cm-header-bg: rgba(21, 74, 69, 0.96);
	--cm-header-fg: #FBF7EE;
	--cm-header-muted: rgba(251, 247, 238, 0.78);
	--cm-inverse-bg: #154A45;
	--cm-glow-ocre: rgba(176, 144, 16, 0.14);
	--cm-glow-teal: rgba(31, 102, 96, 0.12);

	--r-md: 16px;
	--r-lg: 24px;
	--r-xl: 32px;
	--shadow-md: 0 8px 24px -8px rgba(34, 32, 22, 0.10);
	--shadow-lg: 0 20px 40px -12px rgba(34, 32, 22, 0.14);
	--ease-out: cubic-bezier(0.22, 1, 0.36, 1);
	--cm-measure: 46rem;
}

/* =========================================================
   Mode sombre — html.cm-dark (choix du visiteur)
   ou réglage du système si le visiteur n'a rien choisi (html.cm-auto)
   ========================================================= */
html.cm-dark {
	--cm-bg: #161510;
	--cm-surface: #23221C;
	--cm-fg: #F2EEE6;
	--cm-fg-muted: #C9C0AE;
	--cm-border: #3D3B33;
	--cm-border-strong: #5A564A;
	--cm-hero-top: #1D1C15;
	--cm-link: #E0CC6E;
	--cm-ocre-mist: #2E2A17;
	--cm-header-bg: rgba(16, 46, 43, 0.97);
	--cm-inverse-bg: #102E2B;
	--cm-glow-ocre: rgba(176, 144, 16, 0.12);
	--cm-glow-teal: rgba(31, 102, 96, 0.18);
	--shadow-md: 0 8px 24px -8px rgba(0, 0, 0, 0.5);
	--shadow-lg: 0 20px 40px -12px rgba(0, 0, 0, 0.6);
	color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
	html.cm-auto {
		--cm-bg: #161510;
		--cm-surface: #23221C;
		--cm-fg: #F2EEE6;
		--cm-fg-muted: #C9C0AE;
		--cm-border: #3D3B33;
		--cm-border-strong: #5A564A;
		--cm-hero-top: #1D1C15;
		--cm-link: #E0CC6E;
		--cm-ocre-mist: #2E2A17;
		--cm-header-bg: rgba(16, 46, 43, 0.97);
		--cm-inverse-bg: #102E2B;
		--cm-glow-ocre: rgba(176, 144, 16, 0.12);
		--cm-glow-teal: rgba(31, 102, 96, 0.18);
		--shadow-md: 0 8px 24px -8px rgba(0, 0, 0, 0.5);
		--shadow-lg: 0 20px 40px -12px rgba(0, 0, 0, 0.6);
		color-scheme: dark;
	}
}

/* Les couleurs WordPress (theme.json) suivent les jetons (html:root l'emporte sur le :root de WordPress) */
html:root {
	--wp--preset--color--base: var(--cm-bg);
	--wp--preset--color--base-2: var(--cm-surface);
	--wp--preset--color--ink: var(--cm-fg);
	--wp--preset--color--contrast: var(--cm-inverse-bg);
	--wp--preset--color--contrast-2: var(--cm-fg-muted);
	--wp--preset--color--contrast-3: var(--cm-border);
	--wp--preset--color--accent-mist: var(--cm-ocre-mist);
}
body { background: var(--cm-bg); color: var(--cm-fg); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
:where(h1, h2, h3, h4, h5, h6) { color: var(--cm-fg); text-wrap: balance; }
:where(p) { text-wrap: pretty; }
a:where(:not(.wp-element-button)) { color: var(--cm-link); }
:focus-visible { outline: 3px solid var(--cm-ocre); outline-offset: 3px; border-radius: 4px; }

/* =========================================================
   En-tête : teal profond, se détache du fond de page
   ========================================================= */
.cm-header {
	position: sticky; top: 0; z-index: 50;
	background: var(--cm-header-bg);
	-webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
	box-shadow: 0 2px 12px -4px rgba(0, 0, 0, 0.25);
}
.admin-bar .cm-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .cm-header { top: 46px; } }
.cm-brand { gap: 0.75rem !important; }
.cm-brand .wp-block-image img { width: 44px; height: 44px; }
.cm-header .wp-block-site-title a { text-decoration: none; color: var(--cm-header-fg); }
.cm-header .wp-block-navigation { color: var(--cm-header-muted); }
.cm-header .wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content { color: var(--cm-header-muted); text-decoration: none; transition: color 150ms var(--ease-out); }
.cm-header .wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover { color: var(--cm-ocre-light); }
.cm-header .wp-block-navigation .current-menu-item > .wp-block-navigation-item__content.wp-block-navigation-item__content { color: var(--cm-header-fg); box-shadow: inset 0 -2px 0 var(--cm-ocre); }
.cm-header .wp-block-navigation__responsive-container-open,
.cm-header .wp-block-navigation__responsive-container-close { color: var(--cm-header-fg); }
.cm-header .wp-block-navigation__responsive-container.is-menu-open { background: var(--cm-teal-deep) !important; color: var(--cm-header-fg) !important; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open a { color: var(--cm-header-fg); font-size: 1.25rem; }

/* Sélecteur de langue en capsules */
ul.wp-block-polylang-language-switcher { display: flex; gap: 0.25rem; list-style: none; padding: 0; margin: 0; }
.wp-block-polylang-language-switcher li a {
	display: inline-block; padding: 0.2rem 0.6rem; border-radius: 9999px;
	font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
	color: var(--cm-header-muted); text-decoration: none;
}
.wp-block-polylang-language-switcher li.current-lang a { background: rgba(176, 144, 16, 0.25); color: var(--cm-ocre-light); }

/* =========================================================
   Bandeau d'accueil (première section)
   ========================================================= */
.cm-hero {
	position: relative; overflow: hidden;
	background: linear-gradient(180deg, var(--cm-hero-top) 0%, var(--cm-bg) 100%);
}
.cm-hero::before, .cm-hero::after {
	content: ""; position: absolute; border-radius: 50%; filter: blur(80px); pointer-events: none; z-index: 0;
	animation: cm-float 6s ease-in-out infinite;
}
.cm-hero::before { width: 420px; height: 420px; top: -120px; left: -80px; background: var(--cm-glow-ocre); }
.cm-hero::after { width: 360px; height: 360px; top: 10%; right: -120px; background: var(--cm-glow-teal); animation-delay: -3s; }
.cm-hero > * { position: relative; z-index: 1; }
.cm-hero h1 { font-size: clamp(2.5rem, 5.5vw, 4.5rem); letter-spacing: -0.03em; }
.cm-hero p { color: var(--cm-fg-muted); font-size: 1.125rem; }
.cm-hero p.cm-eyebrow { font-size: 0.75rem; color: var(--cm-ocre); }
@keyframes cm-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }

/* Rythme vertical des sections (96 → 128 px) */
main .entry-content > .wp-block-group.alignfull { padding-top: clamp(4rem, 8vw, 7rem) !important; padding-bottom: clamp(4rem, 8vw, 7rem) !important; }
main .entry-content > .wp-block-group.alignfull:not(.cm-hero):not(.cm-inverse) + .wp-block-group.alignfull:not(.cm-hero):not(.cm-inverse) { padding-top: 0 !important; }
main .entry-content > .alignfull { margin-block-start: 0; }

/* =========================================================
   Sections inversées (teal profond)
   ========================================================= */
.cm-inverse { background-color: var(--cm-inverse-bg) !important; color: var(--cm-cream) !important; position: relative; overflow: hidden; }
.cm-inverse::after {
	content: ""; position: absolute; width: 480px; height: 480px; top: -200px; right: -120px;
	border-radius: 50%; background: rgba(176, 144, 16, 0.18); filter: blur(90px); pointer-events: none;
}
.cm-inverse > * { position: relative; z-index: 1; }
.cm-inverse :is(h1, h2, h3, h4, h5, h6, p, li) { color: var(--cm-cream); }
.cm-inverse a:not(.wp-element-button) { color: var(--cm-ocre-light); }
.cm-inverse .cm-card { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.14); }
.cm-inverse .wp-element-caption { color: rgba(251, 247, 238, 0.6); }

/* =========================================================
   Cartes
   ========================================================= */
.cm-card {
	background: var(--cm-surface);
	border: 1px solid var(--cm-border);
	border-radius: var(--r-lg);
	padding: clamp(1.5rem, 3vw, 2.25rem);
	transition: transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
}
.cm-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.cm-card > :first-child { margin-top: 0; }
.cm-card h3 { font-size: 1.25rem; }
.cm-card ul.wp-block-list { padding-left: 1.1rem; }
.cm-season-sub { color: var(--cm-fg-muted); font-style: italic; }
.wp-block-columns { gap: 1.5rem; }

/* =========================================================
   Photos
   ========================================================= */
.cm-photo img { border-radius: var(--r-lg); width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; box-shadow: var(--shadow-md); }
.cm-photo.is-portrait img, .cm-photo img[src*="portrait"] { aspect-ratio: 4 / 5; object-position: center 30%; }
.cm-photo .wp-element-caption { margin-top: 0.5rem; text-align: left; color: var(--cm-fg-muted); }

/* =========================================================
   Boutons
   ========================================================= */
.wp-element-button, .wp-block-button__link {
	background-color: var(--cm-btn-bg) !important; color: var(--cm-btn-fg) !important; border-color: var(--cm-btn-bg) !important;
	transition: background-color 300ms var(--ease-out), transform 300ms var(--ease-out), box-shadow 300ms var(--ease-out);
	box-shadow: 0 8px 24px -8px rgba(176, 144, 16, 0.4);
}
.wp-block-button__link:hover, .wp-element-button:hover { background-color: var(--cm-btn-bg-hover) !important; border-color: var(--cm-btn-bg-hover) !important; transform: scale(1.02); box-shadow: var(--shadow-lg); }
.wp-block-button__link:active { transform: scale(0.98); box-shadow: none; }
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent !important; color: var(--cm-fg) !important; border: 1px solid var(--cm-border-strong) !important; box-shadow: none;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--cm-ocre-mist) !important; border-color: var(--cm-ocre) !important; transform: none; }
.cm-inverse .wp-block-button.is-style-outline > .wp-block-button__link { color: var(--cm-cream) !important; border-color: rgba(251, 247, 238, 0.4) !important; }
.cm-inverse .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: rgba(255, 255, 255, 0.08) !important; }
.wp-block-buttons + .has-small-font-size { color: var(--cm-fg-muted); margin-top: 0.5rem; }
.cm-inverse .wp-block-buttons + .has-small-font-size { color: rgba(251, 247, 238, 0.7); }

/* =========================================================
   Listes, citations, FAQ
   ========================================================= */
.entry-content ul.wp-block-list li::marker { color: var(--cm-ocre); }
.wp-block-quote { padding-left: 0; }
.wp-block-details {
	border: 1px solid var(--cm-border); border-radius: var(--r-md); background: var(--cm-surface);
	padding: 1rem 1.5rem; margin-block: 0.75rem;
}
.wp-block-details summary { font-weight: 600; cursor: pointer; }
.wp-block-details[open] summary { margin-bottom: 0.75rem; color: var(--cm-link); }

/* =========================================================
   Pied de page
   ========================================================= */
.cm-footer { background: var(--cm-inverse-bg) !important; color: var(--cm-cream); }
.cm-footer a { color: var(--cm-cream); text-decoration: none; }
.cm-footer a:hover { color: var(--cm-ocre-light); }
.cm-footer p { color: var(--cm-cream); }
.cm-footer .cm-tagline { color: #D9C46A; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; }
.cm-footer .cm-muted { color: rgba(251, 247, 238, 0.7); }

/* Pas d'espace entre le contenu et le pied de page */
.wp-site-blocks > main, .wp-site-blocks > footer, .wp-site-blocks > .wp-block-template-part:last-child { margin-block-start: 0 !important; }
main.wp-block-group { margin-bottom: 0 !important; padding-bottom: 0 !important; }
main .entry-content { margin-bottom: 0 !important; }

/* =========================================================
   Blog
   ========================================================= */
.wp-block-post-title a { text-decoration: none; color: inherit; }
.wp-block-post-title a:hover { color: var(--cm-ocre); }
.wp-block-post-featured-image img { border-radius: var(--r-lg); }
.cm-eyebrow { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--cm-ocre); margin-bottom: 0.5rem; }
.cm-post-grid { gap: 1.5rem !important; }
.cm-post-card { overflow: hidden; display: flex; flex-direction: column; }
.cm-post-card .wp-block-post-featured-image { margin: 0 0 0.5rem; }
.cm-post-card .wp-block-post-featured-image img { border-radius: 0; }
.cm-post-card > :not(.wp-block-post-featured-image) { padding-inline: 1.5rem; }
.cm-post-meta { color: var(--cm-fg-muted); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.75rem !important; }
.cm-post-title { font-size: 1.2rem !important; margin: 0; }
.cm-post-excerpt { color: var(--cm-fg-muted); font-size: 0.9375rem; }
.cm-post-excerpt .wp-block-post-excerpt__more-text { display: none; }
@media (max-width: 900px) { .cm-post-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 600px) { .cm-post-grid { grid-template-columns: 1fr !important; } }

/* =========================================================
   Largeur unique : toutes les sections sur la même colonne (1100 px).
   Les textes longs gardent une ligne lisible mais restent calés à gauche.
   ========================================================= */
.page .entry-content > .wp-block-group > :is(p, ul.wp-block-list, .wp-block-details, .wp-block-quote) {
	max-width: var(--cm-measure);
	margin-left: calc((100% - min(100%, var(--wp--style--global--content-size))) / 2) !important;
	margin-right: auto !important;
}
/* Articles du blog : colonne de lecture centrée, plus étroite */
.single main, .single .wp-block-post-content { --wp--style--global--content-size: 720px; }

@media (max-width: 781px) {
	.cm-hero::before { width: 260px; height: 260px; }
	.cm-hero::after, .cm-inverse::after { display: none; }
}

/* =========================================================
   Adaptations d'accessibilité (panneau « Affichage »)
   ========================================================= */
/* Taille du texte */
html.cm-text-lg { font-size: 112.5%; }
html.cm-text-xl { font-size: 125%; }

/* Contraste renforcé */
html.cm-contrast {
	--cm-fg-muted: var(--cm-fg);
	--cm-border: #6E6957;
	--cm-border-strong: #34322A;
	--cm-link: #5C4B00;
	--cm-btn-bg: #161510;
	--cm-btn-bg-hover: #000000;
	--cm-btn-fg: #FFFFFF;
	--cm-header-muted: #FFFFFF;
}
html.cm-contrast.cm-dark, html.cm-contrast.cm-auto.cm-sys-dark {
	--cm-bg: #000000;
	--cm-surface: #121212;
	--cm-fg: #FFFFFF;
	--cm-fg-muted: #FFFFFF;
	--cm-border: #9A9382;
	--cm-border-strong: #E5DFD2;
	--cm-link: #FFE680;
	--cm-btn-bg: #FFE680;
	--cm-btn-bg-hover: #FFFFFF;
	--cm-btn-fg: #000000;
}
html.cm-contrast .cm-hero::before, html.cm-contrast .cm-hero::after, html.cm-contrast .cm-inverse::after { display: none; }
html.cm-contrast .cm-hero { background: var(--cm-bg); }
html.cm-contrast .cm-photo .wp-element-caption, html.cm-contrast .cm-inverse :is(p, li, .wp-element-caption) { color: #FFFFFF; opacity: 1; }

/* Police très lisible */
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 400; font-display: swap; src: url("assets/fonts/atkinson-400-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 400; font-display: swap; src: url("assets/fonts/atkinson-400-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 700; font-display: swap; src: url("assets/fonts/atkinson-700-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 700; font-display: swap; src: url("assets/fonts/atkinson-700-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
html.cm-readable { --wp--preset--font-family--body: "Atkinson Hyperlegible", Verdana, sans-serif; --wp--preset--font-family--heading: "Atkinson Hyperlegible", Verdana, sans-serif; }
html.cm-readable :is(body, h1, h2, h3, h4, h5, h6, .wp-element-button, .wp-block-navigation, .wp-block-site-title) { font-family: "Atkinson Hyperlegible", Verdana, sans-serif !important; letter-spacing: 0 !important; }
html.cm-readable :is(em, i, blockquote) { font-style: normal; }

/* Espacement du texte (WCAG 1.4.12) */
html.cm-spacing :is(p, li, dd, summary, .wp-block-post-excerpt) { line-height: 1.9 !important; letter-spacing: 0.12em !important; word-spacing: 0.16em !important; }
html.cm-spacing p { margin-bottom: 1.5em !important; }
html.cm-spacing { --cm-measure: 52rem; }

/* Liens soulignés */
html.cm-underline a:not(.wp-element-button):not(.cm-a11y-panel *) { text-decoration: underline !important; text-underline-offset: 0.2em; text-decoration-thickness: 2px; }

/* Animations coupées (choix du visiteur ou réglage du système) */
html.cm-no-motion *, html.cm-no-motion *::before, html.cm-no-motion *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
html.cm-no-motion .cm-card:hover, html.cm-no-motion .wp-block-button__link:hover { transform: none; }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* =========================================================
   Bouton flottant + panneau « Affichage et accessibilité »
   ========================================================= */
.cm-a11y-toggle {
	position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 1000;
	width: 3.25rem; height: 3.25rem; border-radius: 9999px; border: 2px solid var(--cm-ocre);
	background: var(--cm-teal-deep); color: #FBF7EE; cursor: pointer;
	display: grid; place-items: center; box-shadow: 0 10px 28px -8px rgba(0, 0, 0, 0.45);
	transition: transform 200ms var(--ease-out);
}
.cm-a11y-toggle:hover { transform: scale(1.06); }
.cm-a11y-toggle svg { width: 1.6rem; height: 1.6rem; }
.cm-a11y-panel {
	position: fixed; right: 1.25rem; bottom: 5.25rem; z-index: 1001;
	width: min(22rem, calc(100vw - 2.5rem)); max-height: calc(100vh - 7rem); overflow-y: auto;
	background: var(--cm-surface); color: var(--cm-fg);
	border: 1px solid var(--cm-border-strong); border-radius: var(--r-lg);
	box-shadow: var(--shadow-lg); padding: 1.25rem 1.25rem 1rem;
	font-family: Raleway, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 0.9375rem; line-height: 1.4;
}
html.cm-readable .cm-a11y-panel { font-family: "Atkinson Hyperlegible", Verdana, sans-serif; }
.cm-a11y-panel[hidden] { display: none; }
.cm-a11y-panel h2 { font-size: 1.05rem; margin: 0 0 0.25rem; letter-spacing: 0; }
.cm-a11y-panel .cm-a11y-intro { color: var(--cm-fg-muted); font-size: 0.8125rem; margin: 0 0 1rem; }
.cm-a11y-close { position: absolute; top: 0.75rem; right: 0.75rem; width: 2rem; height: 2rem; border-radius: 9999px; border: 0; background: transparent; color: var(--cm-fg); cursor: pointer; font-size: 1.25rem; line-height: 1; }
.cm-a11y-close:hover { background: var(--cm-ocre-mist); }
.cm-a11y-group { border: 0; margin: 0 0 0.9rem; padding: 0; }
.cm-a11y-group legend { font-weight: 700; font-size: 0.75rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--cm-fg-muted); margin-bottom: 0.4rem; padding: 0; }
.cm-a11y-seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 0.25rem; background: var(--cm-bg); border: 1px solid var(--cm-border); border-radius: 12px; padding: 0.25rem; }
.cm-a11y-seg button {
	border: 0; border-radius: 9px; padding: 0.5rem 0.4rem; background: transparent; color: var(--cm-fg);
	font: inherit; font-weight: 600; cursor: pointer;
}
.cm-a11y-seg button[aria-pressed="true"] { background: var(--cm-teal-deep); color: #FBF7EE; }
.cm-a11y-switch {
	display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1rem;
	padding: 0.6rem 0.25rem; border: 0; border-top: 1px solid var(--cm-border); background: transparent;
	color: var(--cm-fg); font: inherit; text-align: left; cursor: pointer;
}
.cm-a11y-switch small { display: block; color: var(--cm-fg-muted); font-size: 0.75rem; margin-top: 0.1rem; }
.cm-a11y-switch .cm-a11y-knob { flex: none; width: 2.5rem; height: 1.4rem; border-radius: 9999px; background: var(--cm-border-strong); position: relative; transition: background 150ms; }
.cm-a11y-switch .cm-a11y-knob::after { content: ""; position: absolute; top: 0.2rem; left: 0.2rem; width: 1rem; height: 1rem; border-radius: 50%; background: #fff; transition: transform 150ms; }
.cm-a11y-switch[aria-checked="true"] .cm-a11y-knob { background: var(--cm-teal); }
.cm-a11y-switch[aria-checked="true"] .cm-a11y-knob::after { transform: translateX(1.1rem); }
.cm-a11y-reset { margin-top: 0.75rem; width: 100%; padding: 0.6rem; border-radius: 12px; border: 1px solid var(--cm-border-strong); background: transparent; color: var(--cm-fg); font: inherit; font-weight: 600; cursor: pointer; }
.cm-a11y-reset:hover { background: var(--cm-ocre-mist); }
@media print { .cm-a11y-toggle, .cm-a11y-panel { display: none !important; } }

/* =========================================================
   Offres de coaching (Rise / Solar / Soma)
   ========================================================= */
.cm-badge {
	display: inline-block; align-self: flex-start; margin: 0 0 0.25rem !important;
	padding: 0.25rem 0.75rem; border-radius: 9999px;
	background: var(--cm-ocre-mist); color: var(--cm-link);
	font-size: 0.75rem !important; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
}
.cm-price { font-size: 1.75rem; margin: 0 !important; color: var(--cm-fg); }
.cm-price strong { font-weight: 700; letter-spacing: -0.02em; }
.cm-price-unit { font-size: 0.875rem; font-weight: 500; color: var(--cm-fg-muted); }
.wp-block-column:has(> .cm-offer) { display: flex; }
.cm-offer { display: flex; flex-direction: column; width: 100%; }
.cm-offer > .wp-block-buttons { margin-top: auto !important; padding-top: 1rem; }
.cm-offer h3 { font-size: 1.75rem; margin: 0.25rem 0 0; }
.cm-callout { border-color: rgba(176, 144, 16, 0.35); background: var(--cm-ocre-mist); }
html { scroll-padding-top: 6rem; scroll-behavior: smooth; }
.cm-offer h3, .cm-offer .cm-price { text-align: left; }
.cm-sub { margin-top: 1.5rem; }
.cm-sub .wp-block-columns { gap: 2rem; align-items: center; }
.cm-sub > .wp-block-columns > .wp-block-column { display: block; }

/* ---------- Formations et qualifications (À propos) ---------- */
.cm-cred-logos { gap: 1.25rem !important; margin-bottom: 0.5rem; }
.cm-cred-logo { margin: 0 !important; }
.cm-cred-logo img { border-radius: 0 !important; box-shadow: none !important; }
html.cm-dark .cm-cred-logo img[src*="somatic-school"] { filter: invert(1); }
.cm-cred-meta { color: var(--cm-ocre) !important; font-size: 0.75rem !important; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; margin-top: 0 !important; }
.cm-card h3 + .cm-cred-meta { margin-top: 0.25rem !important; }
.cm-legal-links a { text-decoration: underline; text-underline-offset: 0.2em; }

/* =========================================================
   Mise en page v2 (validée le 17/10/2026) — plus dense et plus structurée sur ordinateur.
   ========================================================= */
@media (min-width: 900px) {
	/* 1. Rythme vertical resserré */
	html main .entry-content > .wp-block-group.alignfull { padding-top: clamp(3.25rem, 5.5vw, 5rem) !important; padding-bottom: clamp(3.25rem, 5.5vw, 5rem) !important; }
	html main .entry-content > .wp-block-group.alignfull:not(.cm-hero):not(.cm-inverse) + .wp-block-group.alignfull:not(.cm-hero):not(.cm-inverse) { padding-top: clamp(3.25rem, 5.5vw, 5rem) !important; }
	html .cm-hero { padding-top: 3.5rem !important; padding-bottom: 4rem !important; }
	html .cm-hero h1 { font-size: clamp(2.5rem, 4.6vw, 3.9rem); }
	/* 2. Bandes alternées : une section sur deux sur fond légèrement teinté */
	html main .entry-content > .wp-block-group.alignfull:not(.cm-hero):not(.cm-inverse):nth-child(even) { background: var(--cm-band); }
	html main .entry-content > .wp-block-group.alignfull:nth-child(even) .cm-card { background: var(--cm-surface); }
	/* 3. Titres de section marqués d'un trait ocre */
	html main .entry-content > .wp-block-group > h2::after,
	html main .entry-content > .wp-block-group > .wp-block-columns > .wp-block-column > h2:first-child::after {
		content: ""; display: block; width: 3rem; height: 3px; margin-top: 0.9rem; border-radius: 3px; background: var(--cm-ocre);
	}
	html .cm-inverse h2::after { background: var(--cm-ocre-light); }
	html main .entry-content > .wp-block-group > h2 { margin-bottom: 1.5rem; }
	/* 4. Cartes : bord supérieur ocre, contenu plus compact */
	html .cm-card { padding: clamp(1.25rem, 2.2vw, 1.75rem); border-top: 3px solid var(--cm-ocre); }
	html .cm-card.cm-offer { border-top-width: 4px; }
	html .cm-inverse .cm-card { border-top-color: var(--cm-ocre-light); }
	html .cm-card h3 { font-size: 1.15rem; }
	html .cm-offer h3 { font-size: 1.6rem; }
	/* 5. Témoignages : grand guillemet décoratif */
	html .cm-card:has(> p:first-child > em) { position: relative; padding-top: 2.75rem; }
	html .cm-card:has(> p:first-child > em)::before {
		content: "“"; position: absolute; top: 0.4rem; left: 1.4rem; font-size: 3.5rem; line-height: 1; color: var(--cm-ocre); opacity: 0.55; font-family: Georgia, serif;
	}
	/* 7. Images moins hautes, plus panoramiques */
	html .cm-photo img { aspect-ratio: 3 / 2; }
	html .cm-photo img[src*="portrait"] { aspect-ratio: 4 / 5; }
	html .cm-cred-logo img[src*="icf"] { width: 112px !important; }
}
:root { --cm-band: #F3EEE3; }
html.cm-dark { --cm-band: #1C1B15; }

/* 8. Apparition douce des sections au défilement (désactivée si « Couper les animations » ou réglage système) */
html.cm-js .cm-reveal { opacity: 0; transform: translateY(18px); transition: opacity 600ms var(--ease-out), transform 600ms var(--ease-out); }
html.cm-js .cm-reveal.is-in { opacity: 1; transform: none; }
html.cm-no-motion .cm-reveal { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) { html .cm-reveal { opacity: 1 !important; transform: none !important; } }

/* ---------- Réseaux sociaux (pied de page) ---------- */
.cm-social { margin-bottom: 1.5rem; }
.cm-social-title { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: #D9C46A !important; margin: 0 0 0.6rem; }
.cm-social ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.cm-social a { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.45rem 0.9rem; border: 1px solid rgba(251, 247, 238, 0.3); border-radius: 9999px; font-size: 0.875rem; color: var(--cm-cream) !important; text-decoration: none !important; transition: background 150ms var(--ease-out), border-color 150ms var(--ease-out); }
.cm-social a:hover { background: rgba(255, 255, 255, 0.08); border-color: var(--cm-ocre-light); }
.cm-social svg { width: 1.05rem; height: 1.05rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.cm-social svg.cm-fill { fill: currentColor; stroke: none; }

/* Emblème : toujours rond, même quand l'en-tête manque de place sur mobile */
.cm-brand .wp-block-image, .cm-footer .wp-block-image.is-resized { flex: 0 0 auto; margin: 0; }
.cm-brand .wp-block-image img { width: 44px !important; height: 44px !important; max-width: none; aspect-ratio: 1 / 1; object-fit: contain; }
.cm-footer .wp-block-image.is-resized img { aspect-ratio: 1 / 1; object-fit: contain; height: auto !important; }
.cm-brand .wp-block-site-title { min-width: 0; }
@media (max-width: 420px) { .cm-brand .wp-block-site-title { font-size: 1rem; } }
/* Mobile : seule la langue vers laquelle basculer est affichée, pour que l'en-tête tienne sur une ligne */
@media (max-width: 600px) {
	.wp-block-polylang-language-switcher li.current-lang { display: none; }
	.cm-header .wp-block-group.alignwide > .wp-block-group:last-child { gap: 0.75rem !important; }
}

/* Menu mobile plein écran : le flou d'arrière-plan de l'en-tête (backdrop-filter) emprisonnait la
   superposition « position: fixed » du menu dans le bandeau. En-tête opaque, sans flou. */
.cm-header { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background: var(--cm-teal-deep) !important; }
html.cm-dark .cm-header { background: #102E2B !important; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open {
	position: fixed; inset: 0; z-index: 100000; padding: 1.5rem 1.5rem 2rem;
	background: var(--cm-teal-deep) !important; color: var(--cm-cream) !important;
}
.admin-bar .cm-header .wp-block-navigation__responsive-container.is-menu-open { top: 46px; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 3.5rem; gap: 1.25rem; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content.wp-block-navigation-item__content { color: var(--cm-cream); font-size: 1.375rem; font-weight: 500; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content.wp-block-navigation-item__content { color: var(--cm-ocre-light); box-shadow: none; }
.cm-header .wp-block-navigation__responsive-container-close { color: var(--cm-cream); top: 1.25rem; right: 1.25rem; }
.cm-header .wp-block-navigation__responsive-container-close svg { width: 32px; height: 32px; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 5rem !important; align-items: flex-start !important; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items: flex-start !important; gap: 1.5rem !important; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { border-bottom: 1px solid rgba(251, 247, 238, 0.12); width: 100%; padding-bottom: 1rem; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { width: 100% !important; justify-content: flex-start !important; text-align: left; }
.cm-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { align-items: flex-start !important; justify-content: flex-start !important; }
