/*
Theme Name: La Bulle Massage + Sport
Theme URI: https://www.la-bulle-massage.ch/
Author: Webressources
Author URI: https://webressources.ch/
Description: Thème blocs sur mesure pour La Bulle Massage + Sport à Villars-sur-Glâne : coaching sportif, soins et massages, à propos, contact et cabinet. Animations au défilement, soins « À découvrir » tirés au hasard, filtres des soins.
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Version: 1.17.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: la-bulle
Tags: block-patterns, full-site-editing, one-column, custom-colors
*/

:root {
	--paper: var(--wp--preset--color--paper, #f7f6f3);
	--paper-2: var(--wp--preset--color--paper-2, #efece6);
	--card: #ffffff;
	--ink: var(--wp--preset--color--ink, #252422);
	--ink-2: var(--wp--preset--color--ink-2, #55524c);
	--line: #dcd7cd;
	--taupe: var(--wp--preset--color--taupe, #9e9277);
	--taupe-soft: #e6e0d3;
	--sport: var(--wp--preset--color--sport, #1d5a61);
	--rose: var(--wp--preset--color--rose, #a8234a);
	--rose-soft: var(--wp--preset--color--rose-soft, #f5e4e9);
	--footer: #23221f;
	--footer-ink: #e9e5dc;
	--display: var(--wp--preset--font-family--jost, "Jost", system-ui, sans-serif);
	--serif: var(--wp--preset--font-family--newsreader, "Newsreader", Georgia, serif);
	--gutter: clamp(16px, 4vw, 40px);
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; }
p { margin: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: 300; line-height: 1.08; text-wrap: balance; letter-spacing: -0.01em; }
em { font-family: inherit; font-style: italic; }
mark.has-inline-color { background-color: transparent; }
.hero h1 em { font-style: normal; }
/* Le slogan « Chaque geste est pensé… » est le seul texte en Newsreader (.bubbles .quote, .about .wp-block-quote). */
figure { margin: 0; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--taupe); outline-offset: 3px; }

.wrap { max-width: 1180px; margin-inline: auto; padding-inline: var(--gutter); width: 100%; }
.eyebrow { font-size: .78rem; font-weight: 500; letter-spacing: .16em; text-transform: uppercase; color: var(--taupe); display: flex; align-items: center; gap: .7em; }
.eyebrow::before { content: ""; flex: none; width: 18px; height: 18px; border: 1.5px solid currentColor; border-radius: 50%; }
.lead { font-size: 1.15rem; color: var(--ink-2); max-width: 60ch; }

/* Boutons */
.wp-block-button__link { transition: transform .2s, background .2s, color .2s; }
.wp-block-button__link:hover { transform: translateY(-2px); }
.wp-block-button.is-style-line .wp-block-button__link { background: transparent; color: inherit; border: 1.5px solid currentColor; }
.wp-block-button.is-style-sport .wp-block-button__link { background: var(--sport); color: #fff; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px; }

/* ---------- En-tête ---------- */
.site-header { position: sticky; top: 0; z-index: 50; }
.site-top { background: var(--paper); border-bottom: 1px solid var(--line); transition: box-shadow .35s ease; }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
.lb-section, .hero { scroll-margin-top: 80px; }
.site-top > .wrap { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 14px; transition: padding .35s ease; }
.site-top .logo { flex: none; }
.site-top .logo img { height: 88px !important; width: auto !important; max-width: none; display: block; transition: height .35s ease; }
.site-top .logo, .site-top .logo > div { width: auto !important; }
.site-top .main-nav { font-size: 1.12rem; gap: 32px; margin-left: auto; }
.site-top .main-nav .wp-block-navigation-item__content { text-decoration: none; color: var(--ink-2); transition: color .2s; }
.site-top .main-nav .wp-block-navigation-item__content:hover { color: var(--ink); }
.site-top .main-nav .sp .wp-block-navigation-item__content { color: var(--sport); font-weight: 500; }
.site-top .main-nav .ms .wp-block-navigation-item__content { color: var(--rose); font-weight: 500; }
.site-top .cta .wp-block-button__link { font-size: 1rem; white-space: nowrap; }
.site-top.small { box-shadow: 0 6px 24px rgba(0,0,0,.06); }
.site-top.small > .wrap { padding-block: 8px; }
.site-top.small .logo img { height: 52px !important; }
.wp-block-navigation__responsive-container.is-menu-open { background: var(--paper) !important; }
.wp-block-navigation__responsive-container.is-menu-open { padding: 28px var(--gutter) !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 64px; align-items: flex-start !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { font-size: 1.6rem; gap: 22px !important; align-items: flex-start !important; }
@media (max-width: 1200px) {
	.site-top .main-nav { order: 3; margin-left: 0; }
	.site-top .cta { margin-left: auto; }
	.site-top > .wrap { gap: 12px; }
	.site-top .logo img { height: 64px !important; }
	.site-top.small .logo img { height: 44px !important; }
}
@media (max-width: 420px) {
	.site-top .logo img { height: 54px !important; }
	.site-top .cta .wp-block-button__link { font-size: .8rem; padding: .6em .9em; }
}

/* Menu repliable jusqu'à 1200 px (5 entrées + bouton) */
@media (max-width: 1200px) {
	.site-top .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex !important; }
	.site-top .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none !important; }
}

/* ---------- Hero ---------- */
.hero { position: relative; overflow: hidden; padding-block: clamp(56px, 9vw, 110px) clamp(48px, 7vw, 90px); }
.hero > .wrap { display: grid; grid-template-columns: 1.15fr .85fr; gap: 48px; align-items: center; }
.hero h1 { font-size: clamp(2.6rem, 6.2vw, 5.2rem); margin-top: 22px; }
.hero .lead { margin-top: 24px; }
.hero .wp-block-buttons { margin-top: 34px; }
.creds { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 34px; font-size: .85rem; color: var(--ink-2); }
.creds strong { font-weight: 600; color: var(--ink); }
.bubbles { position: relative; aspect-ratio: 1; max-width: 100%; }
.bubbles i { position: absolute; border-radius: 50%; border: 1.5px solid var(--taupe); animation: lb-float 9s ease-in-out infinite; }
.bubbles i:nth-child(1) { inset: 4% 18% 22% 4%; opacity: .9; }
.bubbles i:nth-child(2) { inset: 0 0 44% 40%; opacity: .6; animation-delay: -3s; }
.bubbles i:nth-child(3) { inset: 46% 34% 0 22%; border-color: var(--sport); opacity: .7; animation-delay: -5s; }
.bubbles i:nth-child(4) { inset: 54% 2% 12% 62%; border-color: var(--rose); opacity: .7; animation-delay: -7s; }
.bubbles .tag { position: absolute; padding: .55em 1.1em; border-radius: 999px; font-size: .85rem; font-weight: 500; background: var(--card); border: 1px solid var(--line); box-shadow: 0 8px 24px rgba(0,0,0,.06); white-space: nowrap; text-decoration: none; }
.bubbles .t1 { left: 2%; top: 52%; color: var(--sport); }
.bubbles .t2 { right: 0; top: 66%; color: var(--rose); }
.bubbles .quote { position: absolute; left: 24%; top: 16%; right: 8%; font-family: var(--serif); font-style: italic; font-size: clamp(1.1rem, 2vw, 1.45rem); line-height: 1.3; color: var(--ink-2); }
@keyframes lb-float { 50% { transform: translate(6px, -10px); } }
@media (max-width: 880px) { .hero > .wrap { grid-template-columns: 1fr; } .bubbles { max-width: 380px; justify-self: center; width: 100%; } }

/* ---------- Sections ---------- */
.lb-section { padding-block: clamp(64px, 9vw, 112px); }
.shead { margin-bottom: 48px; display: grid; gap: 12px; }
.shead h2 { font-size: clamp(2.1rem, 4.6vw, 3.6rem); }
.shead .lead { margin-top: 6px; }

/* Coaching */
.coaching { background: var(--sport); color: #fff; position: relative; overflow: hidden; }
.coaching::after { content: ""; position: absolute; width: 560px; height: 560px; right: -180px; top: -200px; border: 1.5px solid rgba(255,255,255,.14); border-radius: 50%; pointer-events: none; }
.coaching .eyebrow { color: #cfe3e2; }
.coaching .lead { color: #d6e6e5; }
.coach-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; }
.story { display: grid; gap: 16px; align-content: start; }
.story p { color: #e3eeed; max-width: 58ch; }
.pillars { list-style: none; margin: 16px 0 0; padding: 0; border-top: 1px solid rgba(255,255,255,.22); }
.pillars li { display: grid; grid-template-columns: 150px 1fr; gap: 16px; padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,.22); color: #d6e6e5; font-size: .95rem; }
.pillars li strong { font-weight: 500; color: #fff; font-size: 1.06rem; }
@media (max-width: 880px) { .coach-grid { grid-template-columns: 1fr; gap: 40px; } .pillars li { grid-template-columns: 1fr; gap: 2px; } }
.pricing { margin-top: 72px; }
.pricing h3 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.pricing .meta { font-size: .9rem; color: #d6e6e5; margin: 10px 0 28px; }
.plans { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.plan { background: #fff; color: #252422; border-radius: 22px; padding: 28px; display: flex; flex-direction: column; gap: 6px; }
.plan.feat { background: #f3efe6; }
.plan h4 { font-size: 1.3rem; font-weight: 500; }
.plan .who { font-size: .9rem; color: #6a665e; }
.plan .desc { margin-top: 12px; font-size: .95rem; color: #4a4740; }
.plan .wp-block-buttons { margin-top: auto; padding-top: 22px; }
.pricing .note { margin-top: 18px; font-size: .88rem; color: #cfe3e2; }
@media (max-width: 880px) { .plans { grid-template-columns: 1fr; } }

/* Soins & massages */
.une-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px 20px; margin-bottom: 18px; }
.une-note { font-size: .88rem; color: var(--ink-2); }
.une { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-bottom: 56px; }
.une a { display: flex; flex-direction: column; text-decoration: none; background: var(--card); border: 1px solid var(--line); border-radius: 22px; overflow: hidden; transition: transform .3s, box-shadow .3s; }
.une a:hover { transform: translateY(-4px); box-shadow: 0 14px 34px rgba(0,0,0,.08); }
.une .ph { aspect-ratio: 4/3; max-width: 100%; overflow: hidden; background: var(--taupe-soft); }
.une .ph img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s; }
.une a:hover .ph img { transform: scale(1.05); }
.une .bd { padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.une .cat { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--taupe); font-weight: 500; }
.une h4 { font-size: 1.35rem; font-weight: 400; line-height: 1.15; }
.une p { color: var(--ink-2); font-size: .95rem; }
.une .go { margin-top: auto; padding-top: 10px; color: var(--rose); font-weight: 500; font-size: .92rem; }
@media (max-width: 900px) { .une { grid-template-columns: 1fr 1fr; } .une a:nth-child(3) { display: none; } }
@media (max-width: 600px) { .une { grid-template-columns: 1fr; } .une a:nth-child(3) { display: flex; } }
.photo-pool { display: none; }
.soin .soin-photo { display: none; }
.all-title { font-size: 1.4rem; font-weight: 400; margin-bottom: 18px; }
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.filters button { font: 500 .9rem var(--display); padding: .55em 1.15em; border-radius: 999px; border: 1.5px solid var(--line); background: transparent; color: var(--ink-2); cursor: pointer; }
.filters button[aria-pressed="true"] { background: var(--rose); border-color: var(--rose); color: #fff; }
.soins { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.soin { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 26px; display: flex; flex-direction: column; gap: 10px; }
.soin[hidden] { display: none !important; }
.soin .cat { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--taupe); font-weight: 500; display: flex; justify-content: space-between; gap: 10px; }
.soin .cat mark, .soin .cat .new { background: var(--rose) !important; color: #fff !important; flex: none; align-self: flex-start; letter-spacing: .08em; padding: .15em .7em; border-radius: 999px; }
.soin h3 { font-size: 1.4rem; font-weight: 400; }
.soin p { color: var(--ink-2); font-size: .95rem; }
.soin .wp-block-details { margin-top: auto; font-size: .92rem; color: var(--ink-2); }
.soin .wp-block-details summary { cursor: pointer; color: var(--rose); font-weight: 500; list-style: none; padding-top: 8px; }
.soin .wp-block-details summary::-webkit-details-marker { display: none; }
.soin .wp-block-details summary::after { content: " +"; }
.soin .wp-block-details[open] summary::after { content: " –"; }
.soin .wp-block-details > * + * { margin-top: 10px; }
.soin .wp-block-details ul { padding-left: 1.1em; margin: 10px 0 0; }
.soin.feature { grid-column: span 2; background: var(--rose-soft); border-color: transparent; display: grid; grid-template-columns: 1fr 1fr; padding: 0; overflow: hidden; gap: 0; }
.soin.feature .wp-block-image { height: 100%; min-height: 240px; }
.soin.feature .wp-block-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.soin.feature .tx { padding: 26px; display: flex; flex-direction: column; gap: 10px; }
.soin.flash { box-shadow: 0 0 0 2px var(--rose); transition: box-shadow .4s; }
@media (max-width: 960px) { .soins { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .soins { grid-template-columns: 1fr; } .soin.feature { grid-column: auto; grid-template-columns: 1fr; } .soin.feature .wp-block-image { min-height: 200px; } }

/* À propos */
.a-propos { background: var(--paper-2); }
.about { display: grid; grid-template-columns: .8fr 1.2fr; gap: 56px; align-items: center; }
.about .portrait { aspect-ratio: 4/5; max-width: 100%; border-radius: 200px 200px 24px 24px; overflow: hidden; background: var(--taupe-soft); }
.about .portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
.about h2 { font-size: clamp(2rem, 4vw, 3.2rem); margin-top: 14px; }
.about p { color: var(--ink-2); margin-top: 18px; max-width: 60ch; }
.about .wp-block-quote { margin: 28px 0 0; padding: 0; border: 0; }
.about .wp-block-quote p { font-family: var(--serif); font-style: italic; font-size: 1.5rem; line-height: 1.35; color: var(--ink); max-width: 30ch; margin: 0; }
.facts { display: flex; flex-wrap: wrap; gap: 28px; margin-top: 30px; }
.about .facts p { margin: 0; font-size: .85rem; color: var(--ink-2); }
.facts strong { display: block; font-size: 2rem; font-weight: 300; color: var(--ink); line-height: 1.2; }
@media (max-width: 880px) { .about { grid-template-columns: 1fr; } .about .portrait { max-width: 320px; } }

/* Contact & cabinet */
.cabinet { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 18px; align-items: stretch; margin-bottom: 56px; }
.cabinet .wp-block-image { border-radius: 22px; overflow: hidden; min-height: 240px; background: var(--taupe-soft); }
.cabinet .wp-block-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cab-tx { display: flex; flex-direction: column; justify-content: center; gap: 12px; padding: 8px 4px; }
.cab-tx h3 { font-size: 1.5rem; font-weight: 400; }
.cab-tx p { color: var(--ink-2); }
@media (max-width: 900px) { .cabinet { grid-template-columns: 1fr 1fr; } .cab-tx { grid-column: span 2; } }
@media (max-width: 520px) { .cabinet { grid-template-columns: 1fr; } .cab-tx { grid-column: auto; } .cabinet .wp-block-image { min-height: 200px; } }
.infos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.infos h3 { font-size: 1.1rem; font-weight: 500; margin-bottom: 16px; }
.hours { list-style: none; margin: 0; padding: 0; font-variant-numeric: tabular-nums; }
.hours li { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); color: var(--ink-2); }
.hours li strong { font-weight: 400; }
.hours li.today { color: var(--ink); font-weight: 500; }
.hours li.today strong { font-weight: 500; }
.hours li.today strong::after { content: "aujourd’hui"; margin-left: 10px; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--sport); font-weight: 600; }
.contact p { color: var(--ink-2); margin-bottom: 6px; overflow-wrap: anywhere; }
.contact .big { font-size: 1.5rem; color: var(--ink); font-weight: 300; font-variant-numeric: tabular-nums; }
.contact .big a { text-decoration: none; }
@media (max-width: 880px) { .infos { grid-template-columns: 1fr; } }

/* Pied de page */
.site-foot { background: var(--footer); color: var(--footer-ink); padding-block: 48px; }
.site-foot > .wrap { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; }
.site-foot .wp-block-image img { height: 64px; width: auto; }
.site-foot p { color: #a39e93; font-size: .85rem; }
.foot-social { gap: 14px !important; margin: 0 0 0 auto !important; }
.foot-social .wp-social-link { color: var(--footer-ink) !important; transition: opacity .2s; }
.foot-social .wp-social-link:hover { opacity: .7; }
.foot-social .wp-social-link svg { width: 26px; height: 26px; }
@media (max-width: 640px) { .foot-social { margin: 0 !important; } }
.foot-text { display: grid; gap: 6px; text-align: right; }
.site-foot .legal-links a { color: var(--footer-ink); text-decoration: none; border-bottom: 1px solid rgba(233,229,220,.35); }
.site-foot .legal-links a:hover { border-color: currentColor; }
@media (max-width: 640px) { .foot-text { text-align: left; } }
.page-body .entry h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); margin-top: 2em; }
.page-body .entry h3 { font-size: 1.15rem; font-weight: 500; margin-top: 1.4em; }
.page-body .entry p, .page-body .entry li { color: var(--ink-2); }
.page-body .entry a { color: var(--sport); }
.page-body .entry ul { padding-left: 1.2em; }

/* Pages simples (mentions légales, etc.) */
.page-body { padding-block: clamp(48px, 7vw, 90px); }
.page-body > .wrap { max-width: 820px; }
.page-body h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); margin-bottom: 32px; }
.page-body .entry > * + * { margin-top: 1em; }


/* ---------- Page À propos (parcours) ---------- */
.about .more { margin-top: 32px; }
.cv-hero { padding-block: clamp(56px, 8vw, 100px) clamp(40px, 6vw, 72px); }
.cv-hero > .wrap { display: grid; grid-template-columns: 1.2fr .8fr; gap: 56px; align-items: center; }
.cv-hero h1 { font-size: clamp(2.6rem, 6vw, 4.8rem); margin-top: 18px; }
.cv-hero .lead { margin-top: 22px; }
.cv-hero .text > p:not(.eyebrow):not(.lead) { color: var(--ink-2); margin-top: 16px; max-width: 60ch; }
.cv-hero .wp-block-buttons { margin-top: 32px; }
.cv-hero .portrait { aspect-ratio: 4/5; max-width: 100%; border-radius: 200px 200px 24px 24px; overflow: hidden; background: var(--taupe-soft); }
.cv-hero .portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 880px) { .cv-hero > .wrap { grid-template-columns: 1fr; } .cv-hero .portrait { max-width: 320px; order: -1; } }
.cv-facts { background: var(--paper-2); padding-block: 36px; }
.cv-facts .facts { margin-top: 0; justify-content: space-between; }
.cv-facts .facts p { font-size: .85rem; color: var(--ink-2); }
.cv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.cv-col h2 { font-size: clamp(2rem, 4vw, 3rem); margin: 12px 0 32px; }
.timeline { position: relative; padding-left: 28px; border-left: 1.5px solid var(--line); display: grid; gap: 28px; }
.tl-item { position: relative; }
.tl-item::before { content: ""; position: absolute; left: -36px; top: 4px; width: 14px; height: 14px; border-radius: 50%; background: var(--paper); border: 1.5px solid var(--taupe); }
.cv-col:first-child .tl-item::before { border-color: var(--sport); }
.cv-col:last-child .tl-item::before { border-color: var(--rose); }
.tl-item .when { font-size: .78rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--taupe); }
.tl-item h3 { font-size: 1.3rem; font-weight: 400; margin-top: 6px; }
.tl-item .where { font-size: .92rem; color: var(--ink-2); margin-top: 4px; }
.tl-item p:not(.when):not(.where) { color: var(--ink-2); font-size: .95rem; margin-top: 8px; max-width: 52ch; }
@media (max-width: 880px) { .cv-grid { grid-template-columns: 1fr; gap: 56px; } }
.cv-col > h3 { font-size: 1.3rem; font-weight: 400; margin: 48px 0 16px; }
.cv-list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.cv-list li { display: grid; grid-template-columns: 7.5rem 1fr; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: .95rem; color: var(--ink-2); margin: 0; }
.cv-list li strong { font-size: .78rem; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--taupe); padding-top: 3px; }
.cv-tags { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.cv-tags li { margin: 0; padding: 7px 16px; border: 1px solid var(--line); border-radius: 999px; font-size: .9rem; color: var(--ink-2); background: var(--card); }
.cv-more { background: var(--paper-2); }
@media (max-width: 480px) { .cv-list li { grid-template-columns: 1fr; gap: 2px; } }
.cv-recog { background: var(--paper-2); }
.recog { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.recog-card { background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: 28px; display: grid; gap: 8px; }
.recog-card h3 { font-size: 2rem; font-weight: 300; }
.recog-card p { color: var(--ink-2); }
.recog-card .where { font-size: .9rem; }
.cv-recog .mission { margin: 56px 0 0; padding: 0; border: 0; }
.cv-recog .mission p { font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 300; line-height: 1.3; max-width: 34ch; color: var(--ink); }
@media (max-width: 640px) { .recog { grid-template-columns: 1fr; } }
/* Textes à compléter : bien visibles pour les repérer */
mark.todo { color: var(--rose) !important; border-bottom: 1.5px dashed currentColor; font-style: normal; }


/* ---------- Page Coaching sportif ---------- */
.coach-hero .portrait { border-radius: 24px 200px 24px 24px; }
.coach-work { padding-top: clamp(40px, 6vw, 72px); }
.work-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.work-card { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 26px; display: grid; gap: 10px; align-content: start; }
.work-card h3 { font-size: 1.3rem; font-weight: 400; color: var(--sport); }
.work-card p { color: var(--ink-2); font-size: .95rem; }
@media (max-width: 900px) { .work-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .work-grid { grid-template-columns: 1fr; } }
.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; align-items: start; }
.gallery .wp-block-image { aspect-ratio: 3/4; max-width: 100%; margin: 0; border-radius: 18px; overflow: hidden; background: var(--taupe-soft); }
.gallery .wp-block-image img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s; }
.gallery .wp-block-image:hover img { transform: scale(1.04); }
@media (max-width: 760px) { .gallery { grid-template-columns: 1fr 1fr; } }
.coach-how .facts { margin: 0 0 36px; gap: 18px 48px; }
.coach-how .facts p { font-size: .9rem; color: var(--ink-2); margin: 0; max-width: 22ch; }
.coach-duo { background: var(--sport); color: #fff; position: relative; overflow: hidden; }
.coach-duo .eyebrow { color: #cfe3e2; }
.coach-duo .lead, .coach-duo p { color: #d6e6e5; }
.coach-duo h2 { font-size: clamp(2.1rem, 4.6vw, 3.4rem); margin-top: 12px; }
.duo-head, .duo-foot { display: grid; grid-template-columns: 1.2fr .8fr; gap: 56px; align-items: center; }
.duo-head .lead { margin-top: 18px; max-width: 56ch; }
.duo-photo { border-radius: 24px; overflow: hidden; aspect-ratio: 4/5; max-width: 100%; }
.duo-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.duo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin: 56px 0; }
.duo-item { border: 1px solid rgba(255,255,255,.25); border-radius: 20px; padding: 26px; display: grid; gap: 10px; align-content: start; }
.duo-item h3 { font-size: 1.5rem; font-weight: 300; color: #fff; }
.duo-foot { grid-template-columns: .8fr 1.2fr; }
.duo-foot h3 { font-size: 1.6rem; font-weight: 300; color: #fff; margin-bottom: 14px; }
.duo-foot .wp-block-buttons { margin-top: 28px; }
.coach-duo .wp-block-button:not(.is-style-line) .wp-block-button__link { background: #fff; color: var(--sport); }
.coach-duo .is-style-line .wp-block-button__link { color: #fff; }
@media (max-width: 880px) { .duo-head, .duo-foot { grid-template-columns: 1fr; gap: 32px; } .duo-grid { grid-template-columns: 1fr; } .duo-photo { aspect-ratio: 4/3; } }
.coaching .more-link { margin-top: 28px; }
.page-link { margin-top: 14px; font-weight: 500; }
.page-link a { text-decoration: none; border-bottom: 1.5px solid currentColor; padding-bottom: 2px; transition: opacity .2s; }
.page-link a:hover { opacity: .75; }
.coaching .page-link a { color: #fff; }
.coaching .more-link .wp-block-button__link { background: #fff; color: var(--sport); }


/* ---------- Fenêtre « Demande de coaching » ---------- */
.lb-modal { width: min(640px, calc(100% - 32px)); max-height: calc(100% - 32px); padding: 0; border: 0; border-radius: 24px; background: var(--paper); color: var(--ink); box-shadow: 0 30px 80px rgba(0,0,0,.25); overflow: auto; }
.lb-modal::backdrop { background: rgba(29, 39, 40, .55); backdrop-filter: blur(3px); }
.lb-modal[open] { animation: lb-pop .35s cubic-bezier(.2,.7,.2,1); }
@keyframes lb-pop { from { opacity: 0; transform: translateY(16px) scale(.98); } }
.lb-form[hidden], .lb-done[hidden] { display: none !important; }
.lb-form, .lb-done { position: relative; padding: clamp(24px, 5vw, 40px); display: grid; gap: 14px; }
.lb-form h2, .lb-done h2 { font-size: clamp(1.7rem, 4vw, 2.3rem); color: var(--sport); }
.lb-intro, .lb-done p { color: var(--ink-2); font-size: .95rem; }
.lb-close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line); background: var(--card); font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--ink); }
.lb-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 560px) { .lb-row { grid-template-columns: 1fr; } }
.lb-field { margin: 0; display: grid; gap: 6px; border: 0; padding: 0; min-width: 0; }
.lb-field label, .lb-field legend { font-size: .85rem; font-weight: 500; color: var(--ink); padding: 0; }
.lb-field input[type=text], .lb-field input[type=email], .lb-field input[type=tel], .lb-field textarea { width: 100%; font: inherit; font-size: 1rem; padding: .75em .9em; border: 1.5px solid var(--line); border-radius: 12px; background: var(--card); color: var(--ink); }
.lb-field input:focus, .lb-field textarea:focus { outline: none; border-color: var(--sport); box-shadow: 0 0 0 3px rgba(29, 90, 97, .15); }
.lb-choices { display: grid; gap: 8px; }
.lb-choices legend { margin-bottom: 8px; }
.lb-inline { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); }
.lb-check { display: flex; align-items: center; gap: 10px; padding: .75em .95em; min-height: 46px; line-height: 1.3; border: 1.5px solid var(--line); border-radius: 12px; background: var(--card); cursor: pointer; font-size: .95rem; font-weight: 400 !important; }
.lb-check input { accent-color: var(--sport); width: 18px; height: 18px; margin: 0; }
.lb-check:has(input:checked) { border-color: var(--sport); background: #e2eeee; }
.lb-cards { grid-template-columns: 1fr 1fr; }
.lb-cards legend { grid-column: 1 / -1; }
.lb-card { align-items: flex-start; padding: 14px 16px !important; }
.lb-card input { margin-top: 3px; flex: none; }
.lb-card span { display: grid; gap: 4px; }
.lb-card strong { font-weight: 500; color: var(--ink); }
.lb-card small { font-size: .82rem; color: var(--ink-2); line-height: 1.35; }
@media (max-width: 560px) { .lb-cards { grid-template-columns: 1fr; } }
.lb-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.lb-note { font-size: .8rem; color: var(--ink-2); }
.lb-note a { color: var(--sport); }
.lb-status { font-size: .9rem; min-height: 1.2em; color: var(--sport); }
.lb-status.err { color: var(--rose); }
.lb-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.lb-done .wp-element-button { justify-self: start; }
.lb-submit, .lb-done .wp-element-button { background: var(--sport); color: #fff; border: 0; border-radius: 999px; padding: .85em 1.6em; font: 500 .95rem var(--display); cursor: pointer; }
.lb-submit[disabled] { opacity: .6; cursor: wait; }
.lb-cancel { background: none; border: 0; font: 500 .95rem var(--display); color: var(--ink-2); cursor: pointer; text-decoration: underline; }
@media (prefers-reduced-motion: reduce) { .lb-modal[open] { animation: none; } }


/* ---------- Disponibilités, location de salle, à propos (v1.7) ---------- */
.coaching .dispo { margin: -14px 0 28px; font-size: .95rem; color: #e3eeed; max-width: 70ch; }
.coaching .dispo strong { color: #fff; font-weight: 500; }
.dispo-card { background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: 28px; margin: 0 0 36px; max-width: 520px; }
.dispo-card h3 { font-size: 1.3rem; font-weight: 400; color: var(--sport); margin-bottom: 12px; }
.dispo-card .dispo-note { margin-top: 14px; font-size: .9rem; color: var(--ink-2); }
.salle-teaser { background: var(--paper-2); }
.salle-teaser .wrap { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 28px; }
.salle-teaser h2 { font-size: clamp(1.9rem, 4vw, 2.8rem); margin-top: 12px; }
.salle-teaser .text p:not(.eyebrow) { color: var(--ink-2); margin-top: 14px; max-width: 56ch; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.chips span { font-size: .85rem; padding: .35em .9em; border: 1px solid var(--line); border-radius: 999px; background: var(--card); color: var(--ink-2); }
.salle-hero .portrait { border-radius: 200px 24px 24px 24px; }
.tarif-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.tarif-card { background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: 28px; display: grid; gap: 6px; align-content: start; }
.tarif-card h3 { font-size: 1.5rem; font-weight: 400; color: var(--sport); }
.tarif-card .where { font-size: .9rem; color: var(--ink-2); margin-bottom: 14px; }
.tarifs { margin: 0; overflow-x: auto; }
.wp-block-table.tarifs table { table-layout: auto; border: 0; }
.wp-block-table.tarifs thead { border: 0; }
.wp-block-table.tarifs th, .wp-block-table.tarifs td { border: 0; border-bottom: 1px solid var(--line); padding-left: 0; padding-right: 12px; }
.wp-block-table.tarifs th:last-child, .wp-block-table.tarifs td:last-child { padding-right: 0; white-space: nowrap; }
.tarifs table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tarifs th { text-align: left; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 500; color: var(--taupe); padding: 0 0 10px; border-bottom: 1px solid var(--line); }
.tarifs td { padding: 12px 0; border-bottom: 1px solid var(--line); color: var(--ink-2); }
.tarifs th:last-child, .tarifs td:last-child { text-align: right; }
.tarifs td:last-child { color: var(--ink); font-weight: 500; }
@media (max-width: 760px) { .tarif-grid { grid-template-columns: 1fr; } }
.salle-infos { padding-top: 0; }
.infos-2 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.infos-2 h3 { font-size: 1.2rem; font-weight: 500; margin-bottom: 14px; }
.infos-2 p { color: var(--ink-2); margin-bottom: 18px; }
@media (max-width: 880px) { .infos-2 { grid-template-columns: 1fr; } }
.checks { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.checks li { position: relative; padding-left: 28px; color: var(--ink-2); }
.checks li::before { content: ""; position: absolute; left: 0; top: .35em; width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--sport); background: radial-gradient(circle, var(--sport) 0 3px, transparent 3.5px); }
.cv-approche .checks { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 820px; }
@media (max-width: 640px) { .cv-approche .checks { grid-template-columns: 1fr; } }
.cv-approche .mission { margin: 48px 0 0; padding: 0; border: 0; }
.cv-approche .mission p { font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 300; line-height: 1.3; max-width: 34ch; color: var(--ink); }
.site-foot .legal-links a + a { margin-left: 0; }

/* Section libre (composition « Section : titre et introduction ») */
.section-libre .wrap > p, .section-libre .wrap > ul { color: var(--ink-2); max-width: 65ch; }
.section-libre .wrap > * + * { margin-top: 1em; }

/* ---------- Apparitions au défilement (activées par JS) ---------- */
.anim .rv { opacity: 0; transform: translateY(30px); transition: opacity .9s ease, transform .9s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0s); }
.anim .rv.in { opacity: 1; transform: none; }
.anim .w { display: inline-block; opacity: 0; transform: translateY(.55em) rotate(2deg); transition: opacity .7s ease, transform .8s cubic-bezier(.2,.7,.2,1); transition-delay: var(--d, 0s); }
.anim .in .w { opacity: 1; transform: none; }
.anim .rv-img { opacity: 0; transition: opacity 1.4s ease; transition-delay: var(--d, 0s); }
.anim .rv-img.in { opacity: 1; }
.anim .bubbles i { transform: scale(.6); opacity: 0; transition: transform 1.6s cubic-bezier(.2,.7,.2,1), opacity 1.2s ease; }
.anim .bubbles.in i { transform: none; opacity: var(--o, .8); }
.bubbles i:nth-child(1) { --o: .9; } .bubbles i:nth-child(2) { --o: .6; } .bubbles i:nth-child(3), .bubbles i:nth-child(4) { --o: .7; }
.anim .bubbles i:nth-child(2) { transition-delay: .25s; } .anim .bubbles i:nth-child(3) { transition-delay: .45s; } .anim .bubbles i:nth-child(4) { transition-delay: .65s; }

@media (prefers-reduced-motion: reduce) {
	.bubbles i { animation: none; }
	.anim .rv, .anim .w, .anim .rv-img, .anim .bubbles i { opacity: 1 !important; transform: none !important; transition: none !important; }
	.site-top, .site-top > .wrap, .site-top .logo img, .wp-block-button__link, .une a, .une img { transition: none; }
}

/* Éditeur : montrer les blocs cachés sur le site */
.editor-styles-wrapper .photo-pool { display: flex; flex-wrap: wrap; gap: 12px; padding: 16px; border: 2px dashed var(--taupe); border-radius: 16px; }
.editor-styles-wrapper .photo-pool::before { content: "Photos utilisées au hasard dans « À découvrir » (invisibles sur le site)"; width: 100%; font-size: .8rem; color: var(--ink-2); }
.editor-styles-wrapper .photo-pool .wp-block-image { width: 160px; }
.editor-styles-wrapper .soin .soin-photo { display: block; position: relative; border-radius: 12px; overflow: hidden; }
.editor-styles-wrapper .soin .soin-photo img { width: 100%; height: 120px; object-fit: cover; opacity: .75; }
.editor-styles-wrapper .soin .soin-photo::after { content: "Photo pour « À découvrir » (cachée dans la liste)"; position: absolute; left: 8px; bottom: 8px; font-size: .7rem; background: #fff; padding: 2px 8px; border-radius: 99px; color: var(--ink-2); }
.editor-styles-wrapper .une { min-height: 60px; border: 2px dashed var(--line); border-radius: 16px; display: flex; align-items: center; justify-content: center; }
.editor-styles-wrapper .une::before { content: "3 soins tirés au hasard s’affichent ici sur le site"; font-size: .85rem; color: var(--ink-2); }

/* Bouton « retour en haut » */
.to-top { position: fixed; right: clamp(16px, 3vw, 32px); bottom: clamp(16px, 3vw, 32px); z-index: 40; width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--line); background: var(--card); color: var(--ink); display: grid; place-items: center; cursor: pointer; box-shadow: 0 6px 20px rgba(37, 36, 34, .12); opacity: 0; visibility: hidden; transform: translateY(12px); transition: opacity .3s, transform .3s, visibility .3s, background .2s, color .2s; }
.to-top.show { opacity: 1; visibility: visible; transform: none; }
.to-top:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.to-top:focus-visible { outline: 2px solid var(--sport); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .to-top { transition: none; } }
@media print { .to-top { display: none; } }

/* Bandeau cookies */
.lb-cookies { position: fixed; left: clamp(16px, 3vw, 32px); bottom: clamp(16px, 3vw, 32px); z-index: 60; width: min(420px, calc(100vw - 32px)); background: var(--card); color: var(--ink); border: 1px solid var(--line); border-radius: 20px; padding: 22px 24px; box-shadow: 0 14px 40px rgba(37, 36, 34, .16); opacity: 0; transform: translateY(16px); transition: opacity .3s, transform .3s; }
.lb-cookies.show { opacity: 1; transform: none; }
.lb-cookies[hidden] { display: none !important; }
.lb-cookies-title { font-size: .78rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--taupe); margin: 0 0 8px; }
.lb-cookies-text { font-size: .92rem; line-height: 1.55; color: var(--ink-2); margin: 0; }
.lb-cookies-text a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.lb-cookies-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; justify-content: flex-end; }
.lb-cookies-btn { font: inherit; font-size: .9rem; font-weight: 500; padding: 10px 22px; border-radius: 999px; border: 1px solid var(--ink); background: var(--ink); color: var(--paper); cursor: pointer; transition: background .2s, color .2s; }
.lb-cookies-btn:hover { background: var(--sport); border-color: var(--sport); }
.lb-cookies-btn.ghost { background: transparent; color: var(--ink); }
.lb-cookies-btn.ghost:hover { background: var(--paper-2); color: var(--ink); border-color: var(--ink); }
.lb-cookies-btn:focus-visible { outline: 2px solid var(--sport); outline-offset: 3px; }
@media (max-width: 600px) { body.lb-cookies-open .to-top { display: none; } }
@media (prefers-reduced-motion: reduce) { .lb-cookies { transition: none; } }
@media print { .lb-cookies { display: none !important; } }
