/*
Theme Name: MPT Villeparisis
Description: Thème bloc sur mesure pour la Maison Pour Tous Jacques Marguin et son FabLab (Villeparisis).
Author: Emmanuel Jambou
Version: 0.9.11
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: mptvp
*/

@font-face {
	font-family: "Space Grotesk";
	src: url("assets/fonts/space-grotesk.woff2") format("woff2");
	font-weight: 300 700;
	font-display: swap;
}

:root {
	--ink: #0d1117;
	--orange: #f28c3f; /* orange du logo */
	--orange-text: #b8520a; /* version foncée, lisible en petit texte sur blanc */
	--blue: #1557ff;
	--accent: var(--orange);
	--accent-text: var(--orange-text);
	--grad: linear-gradient(100deg, #e8651a 0%, #f28c3f 55%, #f9b36b 100%);
	--line: #e6e3dd;
	--soft: #f6f5f2;
	--shadow: 0 1px 2px rgba(13, 17, 23, .04), 0 12px 32px rgba(13, 17, 23, .07);
	--ease: cubic-bezier(.2, .8, .2, 1);
}
/* Couleur d'accent propre aux pages des financeurs */
.mptvp-accent-orange { --accent: #f16e00; --accent-text: #b8520a; }
.mptvp-accent-lime { --accent: #1557ff; --accent-text: #0a2fd6; --grad: linear-gradient(100deg, #0a2fd6 0%, #1557ff 50%, #38b6ff 100%); }

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; }
.wp-site-blocks > * { margin-block-start: 0; }
::selection { background: var(--orange); color: var(--ink); }
:where(a, button, input, textarea):focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* ---------- En-tête ---------- */
.wp-site-blocks > header { position: sticky; top: 0; z-index: 50; view-transition-name: mptvp-header; }
.mptvp-header { background: rgba(255, 255, 255, .92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.wp-block-site-logo img { display: block; height: auto; }
.wp-block-site-title a { text-decoration: none; color: var(--ink); }
.wp-block-navigation { font-size: .95rem; }
.wp-block-navigation a { position: relative; text-decoration: none !important; color: var(--ink); }
.wp-block-navigation .wp-block-navigation-item__content::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 3px; border-radius: 3px; background: var(--grad);
	transform: scaleX(0); transform-origin: left; transition: transform .3s var(--ease);
}
.wp-block-navigation .wp-block-navigation-item__content:hover::after,
.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content::after { transform: scaleX(1); }

/* Sous-menu de L'association */
.wp-block-navigation .wp-block-navigation__submenu-container {
	min-width: 13rem !important; padding: .5rem !important; border: 1px solid var(--line) !important; border-radius: 12px;
	background: #fff !important; box-shadow: var(--shadow); transform: translateY(6px); transition: opacity .2s, transform .25s var(--ease), visibility .2s;
}
.wp-block-navigation .has-child:hover > .wp-block-navigation__submenu-container,
.wp-block-navigation .has-child:focus-within > .wp-block-navigation__submenu-container { transform: none; }
.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: .55rem .8rem !important; border-radius: 8px; }
.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: var(--soft); }
.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content::after { display: none; }
.wp-block-navigation__responsive-container.is-menu-open .has-child,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { align-items: flex-start !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { border: 0 !important; box-shadow: none; padding: .6rem 0 0 1rem !important; transform: none; gap: .8rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { font-size: 1.1rem; padding: 0 !important; }

/* ---------- Titres ---------- */
.mptvp-hero h1 em { font-style: normal; color: var(--orange); }
.mptvp-sabre { height: 5px; width: 6rem; border: 0 !important; border-radius: 5px; margin: 1.6rem 0 !important; background: var(--grad) !important; opacity: 1 !important; transform-origin: left; animation: mptvp-grow .9s var(--ease) .3s both; }
main h2.wp-block-heading { position: relative; padding-bottom: .9rem; }
main h2.wp-block-heading::after {
	content: ""; position: absolute; left: 0; bottom: 0; height: 4px; width: 3.5rem; border-radius: 4px; background: var(--accent);
	transform: scaleX(0); transform-origin: left; transition: transform .7s var(--ease) .1s;
}
html:not(.js) main h2.wp-block-heading::after, main h2.wp-block-heading.is-visible::after { transform: scaleX(1); }
.mptvp-kicker { text-transform: uppercase; letter-spacing: .16em; font-size: .78rem; font-weight: 700; color: var(--accent-text); margin-bottom: .6rem !important; }

/* ---------- Bandeau d'accueil ---------- */
.mptvp-hero { padding-block: clamp(3rem, 7vw, 6rem); background: linear-gradient(180deg, var(--soft), #fff); overflow: hidden; }
.mptvp-hero h1 { font-size: clamp(2.3rem, 5vw, 4rem); line-height: 1.05; letter-spacing: -.02em; }
.mptvp-hero .wp-block-heading, .mptvp-hero p, .mptvp-hero .wp-block-buttons { animation: mptvp-rise .8s var(--ease) both; }
.mptvp-hero p.has-large-font-size { animation-delay: .15s; font-size: 1.25rem !important; line-height: 1.6; }
.mptvp-hero .wp-block-buttons { animation-delay: .3s; }
.mptvp-hero__photo { position: relative; margin: 0 !important; animation: mptvp-rise 1s var(--ease) .2s both; }
.mptvp-hero__photo::before { content: ""; position: absolute; inset: 1.4rem -1.4rem -1.4rem 1.4rem; border-radius: 24px; background: var(--grad); z-index: 0; }
.mptvp-hero__photo img { position: relative; z-index: 1; display: block; width: 100%; aspect-ratio: 4 / 3.3; object-fit: cover; border-radius: 24px; box-shadow: var(--shadow); }

/* ---------- En-tête des pages intérieures ---------- */
.mptvp-pagehead { padding-block: 4rem 2.5rem; background: linear-gradient(180deg, var(--soft), #fff); border-bottom: 1px solid var(--line); }
.mptvp-pagehead h1 { font-size: clamp(2.1rem, 4.5vw, 3.4rem); letter-spacing: -.02em; animation: mptvp-rise .7s var(--ease) both; }

/* ---------- Sections ---------- */
.mptvp-section { padding-block: clamp(3rem, 7vw, 5.5rem); }
.mptvp-section--soft { background: var(--soft); }
/* bandeau noir : le blanc sur l'orange du logo ne serait pas assez lisible */
.mptvp-band { padding-block: clamp(3rem, 7vw, 5rem); background: var(--ink); color: #fff; position: relative; }
.mptvp-band::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: var(--grad); }
.mptvp-band :is(h2, h3, p, a, td) { color: #fff; }
.mptvp-band .mptvp-stat__num { color: var(--accent); }
.mptvp-accent-lime .mptvp-band .mptvp-stat__num { color: #8fb8ff; }
.mptvp-lead { font-size: 1.2rem; line-height: 1.6; }

/* ---------- Cartes ---------- */
.mptvp-card, .mptvp-machine {
	position: relative; overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 16px;
	box-shadow: 0 1px 2px rgba(13, 17, 23, .04); transition: transform .35s var(--ease), box-shadow .35s, border-color .35s;
}
.mptvp-card { padding: 1.6rem; }
/* Cartes de même hauteur dans une rangée : la colonne s'étire, la carte la remplit (sans height: 100%, qui débordait) */
.wp-block-column:has(> .mptvp-card, > .mptvp-machine) { display: flex; flex-direction: column; }
.wp-block-column > .mptvp-card, .wp-block-column > .mptvp-machine { flex: 1 1 auto; }
.mptvp-card h3, .mptvp-machine h3 { hyphens: auto; overflow-wrap: break-word; }
.mptvp-card::before, .mptvp-machine::before { content: ""; position: absolute; left: 0; top: 0; height: 4px; width: 100%; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease); z-index: 3; }
.mptvp-card:hover, .mptvp-machine:hover { transform: translateY(-4px); box-shadow: var(--shadow); border-color: #cfd8e6; }
.mptvp-card:hover::before, .mptvp-machine:hover::before { transform: scaleX(1); }
a.mptvp-cardlink, .mptvp-card h3 a, .mptvp-machine h3 a { text-decoration: none; color: var(--ink); }
.mptvp-card h3 a:hover, .mptvp-machine h3 a:hover { color: var(--orange-text); }
.mptvp-machine h3 a::after { content: ""; position: absolute; inset: 0; }
.mptvp-card h3 a::after { content: ""; position: absolute; inset: 0; }
.mptvp-machine > :not(figure):not(.mptvp-slot) { padding-inline: 1.4rem; }
.mptvp-machine > :last-child { padding-bottom: 1.5rem; }
.mptvp-machine figure, .mptvp-machine .mptvp-slot { margin: 0 0 1.2rem !important; aspect-ratio: 16 / 10; overflow: hidden; border-radius: 0; border-width: 0 0 1px; }
.mptvp-machine figure img, .mptvp-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.mptvp-machine:hover figure img, .mptvp-photo:hover img { transform: scale(1.05); }
.mptvp-photo { overflow: hidden; border-radius: 20px; box-shadow: var(--shadow); margin: 0 !important; }
.mptvp-photo img { display: block; aspect-ratio: 4 / 3; }

/* Logos des partenaires : affichés en entier, jamais recadrés */
.mptvp-logo { margin: 0 !important; background: #fff; display: grid; place-items: center; min-height: 7rem; padding: 1.2rem 1.5rem; border: 1px solid var(--line); border-radius: 16px; }
/* logo officiel de la Fondation Orange : blanc sur fond noir */
.mptvp-logo:has(img[src*="fondation-orange"]) { background: #000; border-color: #000; }
.mptvp-logo img { width: auto !important; max-width: 100%; max-height: 6rem; object-fit: contain; }
.mptvp-machine figure.mptvp-logo { aspect-ratio: 16 / 10; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
.mptvp-logo img[src*=".svg"] { height: 5rem !important; }
.mptvp-machine figure.mptvp-logo img[src*=".svg"] { height: 50% !important; }
.mptvp-machine figure.mptvp-logo img { width: auto !important; height: auto !important; max-width: 70%; max-height: 55%; object-fit: contain; transform: none !important; }

/* Emplacements à remplir plus tard */
.mptvp-slot { display: grid; place-items: center; text-align: center; min-height: 11rem; padding: 1rem; border: 1.5px dashed #b9c6da; border-radius: 16px; background: repeating-linear-gradient(135deg, #eef2f8 0 14px, #f7f9fc 14px 28px); }
.mptvp-slot p { margin: 0; font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; color: #5b6b82; }
.mptvp-slot--tall { min-height: 20rem; }

/* Petites galeries de photos (sans agrandissement) */
.mptvp-galerie { display: grid; gap: 1rem; margin-top: 2rem; }
.mptvp-galerie--3 { grid-template-columns: repeat(3, 1fr); }
.mptvp-galerie--4 { grid-template-columns: repeat(4, 1fr); }
.mptvp-galerie figure { margin: 0; position: relative; overflow: hidden; border-radius: 16px; box-shadow: var(--shadow); background: #eee; }
.mptvp-galerie img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .9s var(--ease); }
.mptvp-galerie--4 img { aspect-ratio: 4 / 5; }
.mptvp-galerie figure:hover img { transform: scale(1.04); }
.mptvp-galerie figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 2.2rem .9rem .7rem; font-size: .82rem; font-weight: 600; color: #fff; background: linear-gradient(transparent, rgba(0, 0, 0, .6)); }

/* Montage des financeurs (page Europe, Département et numixs) */
.financeurs { margin: 0; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--blue); border-radius: 20px; padding: 1.8rem 2rem 1.5rem; box-shadow: 0 18px 40px -28px rgba(10, 30, 80, .35); }
.financeurs__titre { font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--blue); margin-bottom: 1.3rem; }
.financeurs__ue { display: flex; align-items: center; gap: 1rem; padding-bottom: 1.4rem; border-bottom: 1px solid var(--line); }
.financeurs__ue img { height: 4.2rem; width: auto; }
.financeurs__ue span { font-weight: 600; font-size: 1.05rem; line-height: 1.25; color: #003399; }
.financeurs__autres { display: grid; grid-template-columns: 1fr 1fr; align-items: center; padding: 1.4rem 0; }
.financeurs__autres img { justify-self: center; max-height: 5.6rem; max-width: 80%; width: auto; height: auto; }
.financeurs__autres img + img { border-left: 1px solid var(--line); padding-left: 1.5rem; max-width: calc(80% + 1.5rem); }
.financeurs__objet { margin: 0; padding-top: 1rem; border-top: 1px solid var(--line); font-size: .85rem; color: var(--muted, #5c5c5c); text-align: center; }
.mptvp-slot--logo { min-height: 7rem; }
.mptvp-section > .mptvp-slot { max-width: var(--wp--style--global--wide-size); }

/* Chiffres clés */
.mptvp-stat { text-align: center; }
.mptvp-stat__num { font-size: clamp(2.4rem, 5.5vw, 3.8rem); font-weight: 700; line-height: 1; margin: 0 !important; font-variant-numeric: tabular-nums; }
.mptvp-stat p:not(.mptvp-stat__num) { margin-top: .4rem; letter-spacing: .1em; text-transform: uppercase; font-size: .78rem; }

/* Étapes numérotées */
.mptvp-steps { counter-reset: step; }
.mptvp-steps .mptvp-card { counter-increment: step; padding-top: 4rem; }
.mptvp-steps .mptvp-card::after { content: "0" counter(step); position: absolute; top: 1.1rem; left: 1.5rem; font-size: 1.9rem; font-weight: 700; color: var(--accent-text); }

/* ---------- Boutons ---------- */
.wp-block-button__link { background: var(--ink) !important; color: #fff !important; transition: background .3s, transform .3s var(--ease), box-shadow .3s; }
.wp-block-button__link:hover { background: var(--orange) !important; color: var(--ink) !important; transform: translateY(-2px); box-shadow: 0 10px 24px rgba(242, 140, 63, .35); }
.is-style-outline .wp-block-button__link { background: transparent !important; color: var(--ink) !important; border: 2px solid var(--ink); }
.is-style-outline .wp-block-button__link:hover { background: var(--ink) !important; color: #fff !important; box-shadow: none; }
.mptvp-band .wp-block-button__link { background: #fff !important; color: var(--ink) !important; border-color: #fff; }
.mptvp-accent-lime .wp-block-button__link:hover { background: var(--accent) !important; color: #fff !important; box-shadow: none; }

/* ---------- Articles, tableaux, pied de page ---------- */
.wp-block-post-featured-image img { border-radius: 12px; }
.wp-block-post-title a { text-decoration: none; }
.wp-block-post-title a:hover { color: var(--orange-text); }
.mptvp-hours { width: 100%; border-collapse: collapse; }
.mptvp-hours td { border: 0; border-bottom: 1px solid rgba(255, 255, 255, .3); padding: .7rem 0; }
.mptvp-hours td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.mptvp-footer { background: var(--ink); color: #fff; border-top: 5px solid var(--orange); }
.mptvp-band + .mptvp-footer, main:has(> .mptvp-band:last-child) + footer .mptvp-footer { border-top-color: rgba(255, 255, 255, .15); border-top-width: 1px; }
.mptvp-footer :is(h3, p, a) { color: #fff; }
.mptvp-footer a { text-decoration: none; opacity: .8; transition: opacity .3s; }
.mptvp-footer a:hover { opacity: 1; text-decoration: underline; }
/* Ligne légale discrète en bas du pied de page */
.mptvp-legal { margin-top: 2.5rem !important; padding-top: 1.2rem; border-top: 1px solid rgba(255, 255, 255, .12); font-size: .78rem !important; opacity: .65; }
.mptvp-legal a { opacity: 1; white-space: nowrap; }
.mptvp-credit { display: inline-block; margin-top: .5rem; }
input, textarea, select { border: 1px solid var(--line); border-radius: 10px; padding: .7rem .9rem; }

/* ---------- Apparition au défilement ---------- */
html.js .mptvp-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s var(--ease), transform .7s var(--ease); transition-delay: var(--d, 0ms); }
html.js .mptvp-reveal.is-visible { opacity: 1; transform: none; }

/* ---------- Transitions entre les pages ---------- */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: mptvp-page-out .25s ease-in both; }
::view-transition-new(root) { animation: mptvp-page-in .45s var(--ease) both; }
::view-transition-group(mptvp-header) { z-index: 60; }
html.mptvp-no-vt body { animation: mptvp-page-in .45s var(--ease) both; }
html.mptvp-no-vt.mptvp-leaving body { opacity: 0; transform: translateY(-10px); transition: opacity .22s, transform .22s; }

@keyframes mptvp-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes mptvp-rise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes mptvp-page-out { to { opacity: 0; transform: translateY(-10px); } }
@keyframes mptvp-page-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }

@media (max-width: 781px) {
	.mptvp-col-vide { display: none; }
	.mptvp-hero p.has-large-font-size { font-size: 1.05rem !important; line-height: 1.6; }
	.mptvp-hero .wp-block-buttons, .mptvp-hero .wp-block-button, .mptvp-hero .wp-block-button__link { width: 100%; text-align: center; }
	.mptvp-hero__photo::before { inset: .8rem -.6rem -.8rem .8rem; }
	.mptvp-pagehead { padding-block: 2.5rem 1.5rem; }
	.wp-block-site-title { font-size: .95rem; white-space: normal; }
	.mptvp-card:hover, .mptvp-machine:hover { transform: none; }
	.mptvp-slot--tall { min-height: 13rem; }
	.financeurs { padding: 1.4rem 1.2rem 1.1rem; }
	.mptvp-galerie--3, .mptvp-galerie--4 { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
	.mptvp-galerie--3 figure:first-child { grid-column: 1 / -1; }
	.mptvp-galerie figcaption { font-size: .74rem; padding: 1.6rem .6rem .5rem; }
	.financeurs__ue img { height: 3.2rem; }
	.financeurs__ue span { font-size: .95rem; }
	.financeurs__autres img { max-height: 4.2rem; }
	.financeurs__autres img + img { padding-left: .9rem; }
	.wp-block-columns:has(> .wp-block-column > .mptvp-stat) { display: grid; grid-template-columns: 1fr 1fr; gap: 2.2rem 1rem; }
	.mptvp-hours td { display: block; padding: .2rem 0; border: 0; text-align: left !important; }
	.mptvp-hours td:first-child { padding-top: .8rem; font-weight: 600; }
	.mptvp-hours td:last-child { padding-bottom: .8rem; border-bottom: 1px solid rgba(255, 255, 255, .3); }
}

/* ---------- Ateliers : cartes compactes qui s'agrandissent ---------- */
.ateliers__filtres { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
.ateliers__filtres button, .cal__legende button {
	font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; padding: .45rem .9rem; border-radius: 999px;
	border: 1.5px solid var(--line); background: #fff; color: var(--ink); transition: background .2s, border-color .2s, color .2s;
}
.ateliers__filtres button span { opacity: .55; margin-left: .2rem; }
.ateliers__filtres button:hover { border-color: var(--cat, var(--ink)); }
.ateliers__filtres button.is-active { background: var(--cat, var(--ink)); border-color: var(--cat, var(--ink)); color: #fff; }
.ateliers__grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 1rem; }
.atelier { position: relative; height: 180px; }
.atelier[hidden] { display: none; }
.atelier__inner {
	position: absolute; top: 0; left: 0; width: 100%; height: 180px; box-sizing: border-box; overflow: hidden; cursor: pointer;
	padding: 1rem 1.1rem; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--cat); border-radius: 14px;
	transition: height .4s var(--ease), width .4s var(--ease), left .4s var(--ease), box-shadow .3s;
}
.atelier__inner:focus-visible { outline: 2px solid var(--cat); outline-offset: 2px; }
.atelier__cat { margin: 0; font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--cat); }
.atelier__titre { margin: .35rem 0 .3rem; font-size: 1.05rem; line-height: 1.2; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.atelier:hover .atelier__titre, .atelier__inner:focus .atelier__titre, .atelier.is-open .atelier__titre { -webkit-line-clamp: unset; }
.atelier__jours { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.atelier__public, .atelier__jours { margin: 0; font-size: .85rem; color: #4a5568; }
.atelier__jours { margin-top: .35rem; font-weight: 600; color: var(--ink); }
.atelier__more { opacity: 0; transition: opacity .3s .1s; font-size: .85rem; margin-top: .8rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.atelier__more p { margin: 0 0 .6rem; }
.atelier__horaires { display: grid; grid-template-columns: auto 1fr; gap: .25rem .8rem; margin: .6rem 0; }
.atelier__horaires dt { font-weight: 700; }
.atelier__horaires dd { margin: 0; }
.atelier__tarifs { width: 100%; border-collapse: collapse; margin: .6rem 0; font-size: .8rem; }
.atelier__tarifs th { text-align: left; font-weight: 600; color: #4a5568; border-bottom: 1px solid var(--line); padding: .25rem .3rem .25rem 0; }
.atelier__tarifs td { border-bottom: 1px solid var(--line); padding: .3rem .3rem .3rem 0; }
.atelier__salle::before { content: "📍 "; }
.atelier__note { font-style: italic; color: #4a5568; }
@media (hover: hover) {
	.atelier:hover .atelier__inner, .atelier__inner:focus, .atelier.is-open .atelier__inner {
		height: auto; min-height: 180px; z-index: 20; box-shadow: 0 24px 60px rgba(13, 17, 23, .22);
		/* la carte s'élargit (largeur et décalage calculés par le script pour rester dans la grille) */
		width: var(--w, 100%); left: var(--x, 0px);
	}
	.atelier.is-wide .atelier__more { display: grid; grid-template-columns: 1fr 1.25fr; gap: 0 1.6rem; }
	.atelier.is-wide .atelier__horaires dd { white-space: nowrap; }
	.atelier.is-wide .atelier__tarifs th { white-space: nowrap; }
	.atelier.is-wide .atelier__col + .atelier__col { border-left: 1px solid var(--line); padding-left: 1.6rem; }
	.atelier.is-wide .atelier__horaires { margin-top: 0; }
	.atelier:hover .atelier__more, .atelier__inner:focus .atelier__more, .atelier.is-open .atelier__more { opacity: 1; }
}
@media (hover: none) {
	.atelier { height: auto; }
	.atelier__inner { position: relative; height: auto; min-height: 0; }
	.atelier__more { display: none; }
	.atelier.is-open .atelier__more { display: block; opacity: 1; }
	.atelier__inner::after { content: "+"; position: absolute; top: .7rem; right: .9rem; font-size: 1.3rem; color: var(--cat); }
	.atelier.is-open .atelier__inner::after { content: "−"; }
}

/* ---------- Infos clés (inscription, permanences) ---------- */
.mptvp-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; }
.mptvp-facts .mptvp-card { padding: 1.3rem 1.4rem; }
.mptvp-facts h3 { font-size: 1.05rem; margin: 0 0 .5rem; }
.mptvp-facts p, .mptvp-facts li { font-size: .92rem; margin: 0 0 .4rem; }
.mptvp-facts ul { padding-left: 1.1rem; margin: 0; }

/* ---------- Calendrier ---------- */
.mptvp-cal { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: clamp(1rem, 2.5vw, 1.6rem); box-shadow: var(--shadow); }
.cal__bar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-bottom: 1rem; }
.cal__titre { margin: 0 .4rem; font-size: 1.5rem; text-transform: capitalize; min-width: 11ch; text-align: center; }
.cal__nav, .cal__today { font: inherit; cursor: pointer; border: 1.5px solid var(--line); background: #fff; border-radius: 999px; }
.cal__nav { width: 2.4rem; height: 2.4rem; font-size: 1.4rem; line-height: 1; }
.cal__nav:hover:not(:disabled), .cal__today:hover { border-color: var(--ink); }
.cal__nav:disabled { opacity: .3; cursor: default; }
.cal__today { margin-left: auto; padding: .45rem .9rem; font-size: .85rem; font-weight: 600; }
.cal__legende { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-bottom: 1rem; }
.cal__legende button { font-size: .78rem; padding: .3rem .75rem; border-color: var(--cat); }
.cal__legende button::before { content: ""; display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; background: var(--cat); margin-right: .4rem; }
.cal__legende button.is-off { opacity: .4; }
.cal__vac { font-size: .78rem; padding: .3rem .75rem; border-radius: 999px; background: repeating-linear-gradient(135deg, #f1efe9 0 6px, #fff 6px 12px); border: 1px solid var(--line); }
.cal__grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.cal__jour { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; padding: .5rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--soft); }
.cal__case { min-height: 6.6rem; padding: .3rem .25rem .4rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cal__case.is-vide { background: #fcfbf9; }
.cal__case.is-vac { background: repeating-linear-gradient(135deg, #f6f4ef 0 6px, #fff 6px 12px); }
.cal__case.is-passe .cal__num, .cal__case.is-passe .cal__ev { opacity: .45; }
.cal__num { font-size: .8rem; font-weight: 600; padding: 0 .2rem; }
.cal__ferie { font-size: .66rem; line-height: 1.2; color: #a9561a; padding: 0 .2rem; }
.cal__case.is-ferie:not(.is-today) .cal__num { color: #a9561a; }
.cal__ferie-leg { font-size: .78rem; padding: .3rem .75rem; border-radius: 999px; border: 1px solid var(--line); color: #a9561a; }
.cal__case.is-today .cal__num { background: var(--orange); color: #fff; border-radius: 999px; padding: 0 .45rem; align-self: flex-start; }
.cal__ev {
	font: inherit; font-size: .72rem; font-weight: 600; line-height: 1.25; text-align: left; cursor: pointer; color: #fff; background: var(--cat);
	border: 0; border-radius: 6px; padding: .2rem .35rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	transition: transform .2s var(--ease), box-shadow .2s;
}
.cal__ev:hover, .cal__ev:focus-visible { transform: scale(1.05); box-shadow: 0 6px 16px rgba(13, 17, 23, .25); }
.cal__ev.is-long { border-radius: 0; margin: 0 -.26rem; padding-left: .6rem; }
.cal__ev.is-suite { height: 8px; padding: 0; }
.cal__liste { display: none; list-style: none; padding: 0; margin: 1rem 0 0; }
.cal__liste button { font: inherit; width: 100%; text-align: left; cursor: pointer; display: flex; gap: .8rem; align-items: baseline; padding: .7rem .8rem; background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--cat); border-radius: 10px; margin-bottom: .5rem; }
.cal__liste b { min-width: 3.6rem; color: var(--cat); }
.cal__liste .is-vide { color: #4a5568; font-size: .9rem; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Fenêtre de détail, qui zoome depuis l'élément cliqué */
.cal__pop { border: 0; padding: 0; background: transparent; max-width: min(34rem, calc(100vw - 2rem)); width: 100%; overflow: visible; }
.cal__pop::backdrop { background: rgba(13, 17, 23, .45); backdrop-filter: blur(3px); animation: mptvp-fade .25s both; }
.cal__pop[open] .cal__pop-in { animation: mptvp-zoom .42s var(--ease) both; }
.cal__pop.is-closing .cal__pop-in { animation: mptvp-zoom .18s ease-in reverse both; }
.cal__pop.is-closing::backdrop { animation: mptvp-fade .18s reverse both; }
.cal__pop-in { position: relative; background: #fff; border-radius: 20px; padding: 2rem 1.8rem 1.6rem; border-top: 6px solid var(--cat); box-shadow: 0 40px 100px rgba(13, 17, 23, .35); }
.cal__pop-in h3 { margin: .3rem 0 .6rem; font-size: 1.6rem; line-height: 1.15; padding-right: 2rem; }
.cal__pop-cat { margin: 0; font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--cat); }
.cal__pop-quand { font-weight: 700; margin: 0 0 .2rem; }
.cal__pop-quand::first-letter { text-transform: uppercase; }
.cal__pop-lieu { margin: 0 0 1rem; color: #4a5568; }
.cal__pop-lieu::before { content: "📍 "; }
.cal__pop-note { font-size: .85rem; background: #fff4e8; border-left: 3px solid var(--orange); padding: .5rem .7rem; border-radius: 6px; }
.cal__close { position: absolute; top: .8rem; right: .9rem; width: 2.2rem; height: 2.2rem; border-radius: 50%; border: 1px solid var(--line); background: #fff; font-size: 1.4rem; line-height: 1; cursor: pointer; }
@keyframes mptvp-zoom { from { opacity: 0; transform: translate(calc(var(--ox, 50vw) - 50vw), calc(var(--oy, 50vh) - 50vh)) scale(.15); } to { opacity: 1; transform: none; } }
@keyframes mptvp-fade { from { opacity: 0; } to { opacity: 1; } }

/* ---------- Prochains rendez-vous (accueil) ---------- */
.rdv { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.rdv__item { display: flex; gap: 1rem; align-items: center; padding: 1rem 1.1rem; background: #fff; border: 1px solid var(--line); border-radius: 16px; text-decoration: none; color: var(--ink); transition: transform .3s var(--ease), box-shadow .3s; }
.rdv__item:hover { transform: translateY(-3px); box-shadow: var(--shadow); color: var(--ink); }
.rdv__date { flex: none; width: 3.8rem; height: 3.8rem; border-radius: 12px; background: var(--cat); color: #fff; display: grid; place-items: center; align-content: center; font-size: .75rem; text-transform: uppercase; line-height: 1.1; }
.rdv__date b { font-size: 1.5rem; }
.rdv__txt { display: grid; gap: .1rem; font-size: .85rem; }
.rdv__txt small { color: var(--cat); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: .68rem; }
.rdv__txt strong { font-size: 1rem; }

/* ---------- Équipe sans photo : monogrammes ---------- */
.equipe { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.equipe__p { display: flex; align-items: center; gap: .85rem; padding: .9rem 1rem; background: #fff; border: 1px solid var(--line); border-radius: 14px; transition: transform .3s var(--ease), box-shadow .3s; }
.equipe__p:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.equipe__ini { flex: none; width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 1rem; color: #fff; background: var(--grad); letter-spacing: .02em; }
.equipe--bureau .equipe__ini { background: var(--ink); }
.equipe--ca .equipe__ini { background: #fff; color: var(--ink); border: 2px solid var(--orange); }
.equipe__p strong { display: block; font-size: .95rem; line-height: 1.2; }
.equipe__p span { font-size: .8rem; color: #4a5568; }
.equipe__titre { font-size: 1.1rem; margin: 2rem 0 .9rem; }

/* ---------- Carte d'accès, formulaire ---------- */
.mptvp-map { width: 100%; height: 22rem; border: 1px solid var(--line); border-radius: 18px; display: block; }
.wpforms-container .wpforms-field input, .wpforms-container .wpforms-field textarea, .wpforms-container .wpforms-field select { border-radius: 10px !important; border: 1px solid #cfd6e0 !important; }
.wpforms-container .wpforms-submit { background: var(--ink) !important; color: #fff !important; border-radius: 999px !important; padding: .8rem 1.8rem !important; font-weight: 600 !important; }
.wpforms-container .wpforms-submit:hover { background: var(--orange) !important; color: var(--ink) !important; }
.mptvp-reglement h3 { margin-top: 2rem; }
.mptvp-credits { overflow-x: auto; }
.mptvp-credits table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.mptvp-credits th, .mptvp-credits td { text-align: left; padding: .45rem .5rem; border-bottom: 1px solid var(--line); vertical-align: top; }


/* Flèches de part et d'autre du calendrier, et bulle de détail au survol */
.cal__corps { position: relative; }
.cal__side {
	position: absolute; top: 50%; z-index: 2; width: 2.8rem; height: 2.8rem; margin-top: -1.4rem; border-radius: 50%;
	font: inherit; font-size: 1.6rem; line-height: 1; cursor: pointer; background: #fff; border: 1.5px solid var(--line); box-shadow: var(--shadow);
	transition: transform .2s var(--ease), border-color .2s, opacity .2s;
}
.cal__side--prev { left: -1.4rem; }
.cal__side--next { right: -1.4rem; }
.cal__side:hover:not(:disabled) { border-color: var(--ink); transform: scale(1.08); }
.cal__side:disabled { opacity: 0; pointer-events: none; }
.cal__tip {
	position: fixed; z-index: 100; width: min(22rem, calc(100vw - 24px)); pointer-events: auto;
	background: #fff; border-radius: 16px; border-top: 5px solid var(--cat); padding: 1.1rem 1.2rem .9rem;
	box-shadow: 0 30px 80px rgba(13, 17, 23, .28); font-size: .9rem;
	opacity: 0; visibility: hidden; transform: scale(.6); transition: opacity .2s, transform .3s var(--ease), visibility 0s .3s;
}
.cal__tip.is-on { opacity: 1; visibility: visible; transform: none; transition: opacity .2s, transform .35s var(--ease), visibility 0s; }
.cal__tip h3 { margin: .25rem 0 .4rem; font-size: 1.15rem; line-height: 1.2; }
.cal__tip p { margin: 0 0 .5rem; }
.cal__tip .cal__pop-lieu { margin-bottom: .6rem; }


/* ---------- Lieux : étiquette survolable et bulle avec mini-plan ---------- */
.lieu { cursor: pointer; text-decoration: underline dotted var(--orange); text-underline-offset: .2em; text-decoration-thickness: 2px; }
.lieu:hover, .lieu:focus-visible { color: var(--orange-text); outline: none; }
.lieu-pop {
	position: fixed; z-index: 120; overflow: hidden; background: #fff; border-radius: 14px; border: 1px solid var(--line);
	box-shadow: 0 24px 60px rgba(13, 17, 23, .25); opacity: 0; visibility: hidden; transform: scale(.85);
	transition: opacity .18s, transform .25s var(--ease), visibility 0s .25s;
}
.lieu-pop.is-on { opacity: 1; visibility: visible; transform: none; transition: opacity .18s, transform .3s var(--ease), visibility 0s; }
.lieu-pop img { display: block; width: 100%; height: auto; aspect-ratio: 400 / 220; object-fit: cover; }
.lieu-pop__txt { display: grid; gap: .15rem; padding: .8rem 1rem .9rem; font-size: .88rem; }
.lieu-pop__txt strong { font-size: .98rem; }
.lieu-pop__txt span { color: #4a5568; }
.lieu-pop__txt a { margin-top: .35rem; font-weight: 600; }
.lieu-pop__txt small { color: #8a94a3; font-size: .7rem; }
.lieux-liste { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.lieux-liste__item { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; }
.lieux-liste__item img { width: 100%; height: auto; aspect-ratio: 400 / 220; object-fit: cover; display: block; }
.lieux-liste__item > div { padding: .8rem 1rem 1rem; }
.lieux-liste__item h3 { font-size: .95rem; margin: 0 0 .25rem; }
.lieux-liste__item p { font-size: .82rem; margin: 0 0 .4rem; color: #4a5568; }
.lieux-liste__item a { font-size: .85rem; font-weight: 600; }
.atelier__salle::before, .cal__pop-lieu::before { content: "📍 "; }
@media (max-width: 781px) { .lieux-liste { grid-template-columns: 1fr; } }

/* Calendrier sur mobile : pastilles dans les cases, détail dans la liste du mois */
@media (max-width: 781px) {
	.cal__case { min-height: 3.4rem; padding: .2rem; gap: 2px; }
	.cal__jour { padding: .4rem .1rem; text-align: center; font-size: .65rem; letter-spacing: 0; }
	.cal__ev, .cal__ev.is-long, .cal__ev.is-suite { font-size: 0; height: 6px; padding: 0; margin: 0; border-radius: 3px; }
	.cal__liste { display: block; }
	.cal__ferie { display: none; }
	.cal__titre { font-size: 1.15rem; min-width: 0; flex: 1; }
	.cal__today { order: 4; margin-left: 0; padding: .35rem .8rem; }
	.mptvp-cal { padding: .8rem; }
	.cal__pop-in { padding: 1.6rem 1.3rem 1.3rem; }
	.cal__side { width: 2.2rem; height: 2.2rem; margin-top: -1.1rem; font-size: 1.3rem; }
	.cal__side--prev { left: -1.1rem; }
	.cal__side--next { right: -1.1rem; }
}
/* Menu mobile : plein écran, même si l'en-tête collant sert de repère au positionnement */
.wp-block-navigation__responsive-container.is-menu-open { position: fixed; top: 0; left: 0; box-sizing: border-box; width: 100vw; height: 100dvh; padding: 1.5rem; background: #fff !important; color: var(--ink) !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { align-items: flex-start !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 1.4rem; padding-top: 3rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { font-size: 1.4rem; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; }
	html.js .mptvp-reveal { opacity: 1; transform: none; }
	main h2.wp-block-heading::after { transform: scaleX(1); }
	::view-transition-old(root), ::view-transition-new(root) { animation: none; }
}
