/*
Theme Name: Tous Occitariens
Theme URI: https://tousoccitariens.fr/
Author: [éditeur]
Description: Thème de Tous Occitariens, annuaire et média indépendant des producteurs d'Occitanie. Charte « Radis ».
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.1
Version: 0.3.1
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: tous-occitariens
*/

/* ------------------------------------------------------------
   Typographie : titres étroits, comme une enseigne de marché
   ------------------------------------------------------------ */
:where(h1, h2, h3, h4, .wp-block-site-title, .wp-block-post-title) {
	font-stretch: 66%;
}
:where(h1, h2, h3) {
	text-wrap: balance;
}
:where(p, li) {
	text-wrap: pretty;
}
:where(a) {
	text-underline-offset: 0.18em;
	text-decoration-thickness: 1px;
}
/* Horaires, dates, tampons : chiffres alignés */
:where(time, table, .to-horaires, .is-style-tampon) {
	font-variant-numeric: tabular-nums;
}

/* Focus clavier visible partout */
:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 3px solid var(--wp--preset--color--accent);
	outline-offset: 2px;
}

/* ------------------------------------------------------------
   En-tête
   ------------------------------------------------------------ */
.to-entete {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	padding-block: var(--wp--preset--spacing--30);
}
.to-entete a {
	color: inherit;
	text-decoration: none;
}
.to-entete a:hover {
	color: inherit;
	text-decoration: underline;
}
.to-entete :focus-visible {
	outline-color: var(--wp--preset--color--fond);
}
.to-entete .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}

/* ------------------------------------------------------------
   Pied de page
   ------------------------------------------------------------ */
.to-pied {
	background: var(--wp--preset--color--calcaire);
	padding-block: var(--wp--preset--spacing--50);
	font-size: var(--wp--preset--font-size--petit);
}
.to-pied .wp-block-site-title a {
	color: var(--wp--preset--color--primaire);
	text-decoration: none;
}

/* ------------------------------------------------------------
   Mise en page des gabarits
   ------------------------------------------------------------ */
.to-principal {
	padding-block-end: var(--wp--preset--spacing--60);
}
/* Accueil : les sections portent déjà leurs marges */
.home .to-principal {
	padding-block-end: 0;
}
.to-page > .wp-block-post-title {
	margin-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
}

/* Accueil : la promesse en enseigne */
.to-hero {
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--50);
}
.to-hero__titre {
	font-size: var(--wp--preset--font-size--enseigne);
	font-stretch: 62%;
	line-height: 0.95;
}
.to-hero__intro {
	font-size: var(--wp--preset--font-size--moyen);
	max-width: 36rem;
}

/* Contenu aligné sur le bord gauche de la colonne large (72rem), avec une
   longueur de ligne lisible. Sert au hero de l'accueil. */
.wp-block-group.to-gauche > :where(:not(.alignfull):not(.alignwide)) {
	max-width: 42rem;
	margin-left: max(0px, calc((100% - 72rem) / 2)) !important;
	margin-right: auto !important;
}
.wp-block-group.to-gauche > .to-hero__titre {
	max-width: 13ch;
}
.wp-block-group.to-gauche > .wp-block-buttons {
	max-width: 72rem;
}

/* Section blanche entre deux bandes */
.to-section {
	padding-block: var(--wp--preset--spacing--60);
}
.to-colonnes-texte {
	gap: var(--wp--preset--spacing--60);
}

/* Bande de fond calcaire */
.to-bande {
	background: var(--wp--preset--color--calcaire);
	padding-block: var(--wp--preset--spacing--60);
}

/* Bouton secondaire (contour) */
.wp-block-button.is-style-outline > .wp-block-button__link {
	color: var(--wp--preset--color--primaire);
	border: 2px solid currentColor;
	padding: calc(0.75rem - 2px) calc(1.25rem - 2px);
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire-fonce);
}

/* ------------------------------------------------------------
   Composants de la charte
   ------------------------------------------------------------ */

/* Mention d'indépendance */
.to-mention {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-mention a {
	color: inherit;
}

/* Tampon de vérification : l'élément signature.
   Style de bloc « Tampon » sur un paragraphe : « Vérifiée le 12/10/2026 ». */
.is-style-tampon {
	width: fit-content;
	color: var(--wp--preset--color--primaire);
	border: 2px solid currentColor;
	outline: 1px solid currentColor;
	outline-offset: 3px;
	padding: 0.3rem 0.65rem;
	font-size: var(--wp--preset--font-size--petit);
	font-weight: 700;
	line-height: 1.3;
	transform: rotate(-2deg);
	transform-origin: left center;
}

/* Encadré drive (le rose ne sert qu'au drive) */
.to-drive {
	background: var(--wp--preset--color--accent-pale);
	border-left: 6px solid var(--wp--preset--color--accent);
	border-radius: 0;
	padding: var(--wp--preset--spacing--40);
}
.to-drive :where(h2, h3, h4) {
	color: var(--wp--preset--color--accent-fonce);
}

/* Pastilles de statut (fiches producteurs, V1) */
.to-badge {
	display: inline-block;
	padding: 0.15em 0.6em;
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--petit);
	font-weight: 600;
	line-height: 1.4;
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--encre-douce);
}
.to-badge--drive {
	background: var(--wp--preset--color--accent-pale);
	color: var(--wp--preset--color--accent-fonce);
}

/* Emplacement à compléter (formulaires, placeholders) : très visible exprès */
.to-a-faire {
	border: 2px dashed var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent-pale);
	color: var(--wp--preset--color--accent-fonce);
	padding: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--petit);
}

/* Infos pratiques d'un marché : tableau compact, sans quadrillage lourd */
.to-horaires table {
	border-collapse: collapse;
	width: auto;
	min-width: min(100%, 24rem);
}
.to-horaires :where(th, td) {
	border: 0;
	border-bottom: 1px solid var(--wp--preset--color--trait);
	padding: 0.5rem 1.25rem 0.5rem 0;
	text-align: left;
	vertical-align: top;
}
.to-horaires th {
	font-weight: 700;
	color: var(--wp--preset--color--encre-douce);
	white-space: nowrap;
}
.to-infos-marche .is-style-tampon {
	margin-block-start: var(--wp--preset--spacing--40);
}

/* ------------------------------------------------------------
   Dates : « Ajouté le » (fiches) / « Publié le » (articles)
   ------------------------------------------------------------ */
.to-date__libelle {
	margin-inline-end: 0.2em;
}

/* ------------------------------------------------------------
   Images à la une
   ------------------------------------------------------------ */
.wp-block-post-featured-image img {
	border-radius: 4px;
}
.to-article__image {
	margin-block: var(--wp--preset--spacing--40);
}

/* Visuel de remplacement (fiche sans photo) : initiale en enseigne */
.to-visuel-vide {
	display: grid;
	width: 100%;
	margin: 0;
	border-radius: 4px;
	overflow: hidden;
	background:
		repeating-linear-gradient(-45deg, transparent 0 14px, rgb(255 255 255 / 0.05) 14px 28px),
		var(--wp--preset--color--primaire);
}
.to-visuel-vide > :is(span, a) {
	display: grid;
	place-items: center;
	color: var(--wp--preset--color--calcaire);
	font-size: clamp(3rem, 8vw, 6rem);
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
	text-decoration: none;
}
.to-visuel-vide > a > span {
	display: contents;
}

/* ------------------------------------------------------------
   Cartes (listes de producteurs, magazine)
   ------------------------------------------------------------ */
.to-cartes {
	gap: var(--wp--preset--spacing--40) !important;
	margin-block-start: var(--wp--preset--spacing--50);
}
.to-carte {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	height: 100%;
}
.to-carte > * {
	margin-block: 0;
}
.to-carte .wp-block-post-featured-image {
	margin-block-end: 0.3rem;
	overflow: hidden;
	border-radius: 4px;
}
.to-carte .wp-block-post-featured-image img {
	transition: transform 0.3s ease;
}
.to-carte:hover .wp-block-post-featured-image img {
	transform: scale(1.03);
}
.to-carte__titre {
	font-size: var(--wp--preset--font-size--grand);
}
.to-carte__titre a {
	text-decoration: none;
}
.to-carte__titre a:hover {
	text-decoration: underline;
}
.to-carte__infos {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem 0.75rem;
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-carte__lieu a {
	color: inherit;
}
.to-carte__extrait {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-carte__extrait .wp-block-post-excerpt__more-text {
	display: none;
}
.wp-block-query-pagination {
	margin-block-start: var(--wp--preset--spacing--50);
}

/* Statut vérifié / revendiqué */
.to-badge--ok {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}

/* ------------------------------------------------------------
   Fiche producteur
   ------------------------------------------------------------ */
.to-fiche__tete {
	margin-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
}
.to-fiche__tete > * + * {
	margin-block-start: var(--wp--preset--spacing--30);
}
.to-fiche__image {
	margin-block-end: var(--wp--preset--spacing--40) !important;
}
.to-page .to-fiche__tete > .wp-block-post-title {
	margin: var(--wp--preset--spacing--40) 0 0;
}
.to-fiche__colonnes {
	gap: var(--wp--preset--spacing--50);
}

.to-fiche-infos {
	position: sticky;
	top: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--calcaire);
	border-top: 4px solid var(--wp--preset--color--primaire);
	padding: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--petit);
}
.to-fiche-infos > * {
	margin-block: 0;
}
.to-fiche-infos > * + * {
	margin-block-start: var(--wp--preset--spacing--30);
}
.to-fiche-infos dl {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.5rem 1rem;
}
.to-fiche-infos dt {
	font-weight: 700;
	color: var(--wp--preset--color--encre-douce);
}
.to-fiche-infos dd {
	margin: 0;
}
.to-fiche-infos .is-style-tampon {
	margin-block-start: var(--wp--preset--spacing--40);
}
.to-fiche-infos__drive .wp-element-button {
	display: block;
	text-align: center;
	background: var(--wp--preset--color--accent-fonce);
	color: var(--wp--preset--color--fond);
	text-decoration: none;
}
.to-fiche-infos__non-verifiee {
	color: var(--wp--preset--color--encre-douce);
	font-style: italic;
}
.to-fiche-infos .to-badge:not(.to-badge--ok, .to-badge--drive) {
	background: var(--wp--preset--color--fond);
	border: 1px solid var(--wp--preset--color--trait);
}
.wp-block-term-description.alignwide > * {
	max-width: 42rem;
}

/* ============================================================
   V1 : accueil « Radis enrichie » (maquette du 25 septembre 2026)
   Palette d'illustration : crème, tendre, miel, argile, raisin
   (theme.json). Le rose reste réservé au drive.
   ============================================================ */

/* ---------------- Structure commune des sections ---------------- */
.to-accueil > * {
	margin-block: 0;
}
/* Pages en bandes (accueil, territoire, attente) : pas de blanc entre l'en-tête, les bandes et le pied. */
.wp-site-blocks > main.to-accueil,
.wp-site-blocks > main.to-accueil + * {
	margin-block-start: 0;
}
.to-conteneur {
	width: min(var(--wp--style--global--wide-size, 72rem), 100% - 2 * var(--wp--preset--spacing--40));
	margin-inline: auto;
}
.to-section {
	padding-block: var(--wp--preset--spacing--60);
}
.to-section--creme {
	background: var(--wp--preset--color--creme);
}
.to-section-tete {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 1.25rem 2.5rem;
	margin-block-end: var(--wp--preset--spacing--50);
}
.to-section-tete > * {
	margin-block: 0;
}
.to-section-tete h2 {
	margin: 0;
	font-size: clamp(2.25rem, 4.2vw, 3.5rem);
	font-stretch: 62%;
	line-height: 0.95;
}
.to-section-tete__intro {
	margin: 0.75rem 0 0;
	max-width: 42rem;
	color: var(--wp--preset--color--encre-douce);
}
.to-surtitre {
	margin: 0 0 0.6rem;
	font-size: var(--wp--preset--font-size--petit);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--encre-douce);
}
.to-lien-fleche {
	margin: 0;
	font-weight: 700;
}
.to-lien-fleche a::after {
	content: " →";
}
.to-bouton {
	display: inline-block;
	padding: 0.8rem 1.25rem;
	border-radius: 4px;
	border: 2px solid var(--wp--preset--color--primaire);
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
}
.to-bouton:hover {
	color: var(--wp--preset--color--fond);
	background: var(--wp--preset--color--primaire-fonce);
	border-color: var(--wp--preset--color--primaire-fonce);
}
.to-bouton--contour {
	background: transparent;
	color: var(--wp--preset--color--primaire);
}
.to-bouton--contour:hover {
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire-fonce);
}
.to-bouton--drive {
	background: var(--wp--preset--color--accent-fonce);
	border-color: var(--wp--preset--color--accent-fonce);
}
.to-bouton--drive:hover {
	background: #6E1638;
	border-color: #6E1638;
}
.to-picto {
	display: block;
	flex-shrink: 0;
}

/* ---------------- En-tête ---------------- */
.to-entete .to-nav-drive a::before {
	content: "";
	display: inline-block;
	width: 0.55rem;
	height: 0.55rem;
	margin-inline-end: 0.45rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	vertical-align: 0.08em;
}
.to-entete .to-nav-bouton a {
	padding: 0.55rem 1rem;
	border-radius: 4px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire) !important;
	font-weight: 700;
}
.to-entete .to-nav-bouton a:hover {
	text-decoration: none !important;
	background: var(--wp--preset--color--calcaire);
}

/* ---------------- Hero ---------------- */
.to-hero-v1 {
	background: var(--wp--preset--color--creme);
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--60);
}
.to-hero-v1__colonnes {
	gap: var(--wp--preset--spacing--50);
}
.to-hero-v1__texte > * {
	margin-block: 0;
}
.to-hero-v1__texte > * + * {
	margin-block-start: 1.4rem;
}
.to-hero-v1__titre {
	font-size: clamp(2.9rem, 6.4vw, 6rem);
	font-stretch: 62%;
	line-height: 0.9;
	max-width: 13ch;
}
.to-hero-v1__intro {
	font-size: var(--wp--preset--font-size--moyen);
	max-width: 36rem;
}
.to-hero-v1 .to-mention {
	margin-block-start: 1.75rem;
}

/* Pastille « Aujourd'hui » */
.to-pastille-ligne {
	margin: 0;
}
.to-pastille-ligne[hidden] {
	display: none;
}
.to-pastille {
	display: inline-flex;
	align-items: center;
	gap: 0.7rem;
	padding: 0.6rem 1.1rem 0.6rem 0.85rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--encre);
	font-size: 1rem;
	font-weight: 600;
	text-decoration: none;
}
.to-pastille:hover {
	color: var(--wp--preset--color--encre);
	border-color: var(--wp--preset--color--primaire);
}
.to-pastille .to-picto {
	color: var(--wp--preset--color--primaire);
}
.to-pastille__point {
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	background: var(--wp--preset--color--primaire);
	animation: to-pouls 1.8s ease-out infinite;
}
@keyframes to-pouls {
	0% { box-shadow: 0 0 0 0 rgb(31 82 54 / 0.45); }
	70% { box-shadow: 0 0 0 10px rgb(31 82 54 / 0); }
	100% { box-shadow: 0 0 0 0 rgb(31 82 54 / 0); }
}

/* Recherche */
.to-recherche {
	max-width: 38rem;
}
.to-recherche .wp-block-search__inside-wrapper {
	border: 2px solid var(--wp--preset--color--primaire);
	border-radius: 6px;
	background: var(--wp--preset--color--fond);
	padding: 0;
	overflow: hidden;
}
.to-recherche .wp-block-search__input {
	border: 0;
	padding: 1rem 1.1rem;
	font-size: 1.125rem;
	min-width: 0;
}
.to-recherche .wp-block-search__button {
	margin: 0;
	border: 0;
	border-radius: 0;
	padding-inline: 1.6rem;
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-weight: 700;
}
.to-puces {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.9375rem;
}
.to-puces span {
	color: var(--wp--preset--color--encre-douce);
}
.to-puces a {
	padding: 0.45rem 0.85rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	font-weight: 600;
	text-decoration: none;
}
.to-puces a:hover {
	border-color: var(--wp--preset--color--primaire);
}

/* Illustrations */
.to-illustration {
	margin: 0;
}
.to-illustration svg {
	display: block;
	width: 100%;
	height: auto;
	margin-inline: auto;
}
.to-illustration--etal svg {
	max-width: 35rem;
}
.to-illustration--cagette svg {
	max-width: 29rem;
}

/* ---------------- Bandeau de saison ---------------- */
.to-bandeau-saison {
	overflow: hidden;
	background: var(--wp--preset--color--primaire-fonce);
	color: var(--wp--preset--color--calcaire);
}
.to-bandeau-saison__piste {
	display: flex;
	width: max-content;
	animation: to-defile 45s linear infinite;
}
.to-bandeau-saison:hover .to-bandeau-saison__piste {
	animation-play-state: paused;
}
.to-bandeau-saison ul {
	display: flex;
	margin: 0;
	padding: 1rem 0;
	list-style: none;
	font-size: 1.1875rem;
	font-weight: 700;
	font-stretch: 75%;
	white-space: nowrap;
}
.to-bandeau-saison li {
	padding-inline-start: 2.25rem;
}
.to-bandeau-saison li:not(:first-child)::before {
	content: "•";
	margin-inline-end: 2.25rem;
	color: #5C9A5E;
}
.to-bandeau-saison__titre {
	color: #B7D3A8;
}
@keyframes to-defile {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

/* ---------------- Marchés de la semaine ---------------- */
.to-marches {
	padding-block: var(--wp--preset--spacing--60);
}
.to-lieu {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.25rem;
	margin-block-end: 1.5rem;
}
.to-lieu[hidden] {
	display: none;
}
.to-lieu button,
.to-lieu input {
	font: inherit;
}
.to-lieu__autour,
.to-lieu__commune button,
.to-lieu__reinit {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.75rem;
	padding: 0 1rem;
	border: 2px solid var(--wp--preset--color--primaire);
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire);
	font-weight: 700;
	cursor: pointer;
}
.to-lieu__autour:hover,
.to-lieu__commune button:hover {
	background: var(--wp--preset--color--calcaire);
}
.to-lieu__commune {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}
.to-lieu__commune label {
	font-weight: 600;
	color: var(--wp--preset--color--encre-douce);
}
.to-lieu__commune input {
	min-height: 2.75rem;
	width: 14rem;
	max-width: 100%;
	padding: 0 0.9rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 6px;
	box-sizing: border-box;
}
.to-lieu__reinit {
	border-color: var(--wp--preset--color--trait);
	color: var(--wp--preset--color--encre-douce);
}
.to-lieu__reinit[hidden] {
	display: none;
}
.to-lieu__message {
	flex-basis: 100%;
	margin: 0;
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-lieu__message:empty {
	display: none;
}
.to-jours {
	position: relative;
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 0.6rem;
	margin-block-end: 1.5rem;
}
.to-jours button {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.1rem;
	min-height: 4.5rem;
	padding: 0.4rem;
	border: 2px solid var(--wp--preset--color--trait);
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--encre);
	font: inherit;
	cursor: pointer;
}
.to-jours button:hover {
	border-color: var(--wp--preset--color--primaire);
}
.to-jours button[aria-selected="true"] {
	background: var(--wp--preset--color--primaire);
	border-color: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}
.to-jours__nom {
	font-size: 1.375rem;
	font-weight: 800;
	font-stretch: 70%;
	line-height: 1.1;
}
.to-jours__detail {
	font-size: 0.8125rem;
	font-weight: 600;
	opacity: 0.85;
}
/* Sans JavaScript : la semaine entière, jour par jour, sans onglets. */
.to-marches:not(.to-js) .to-jours {
	display: none;
}
.to-marches:not(.to-js) .to-marches__panneau + .to-marches__panneau {
	margin-block-start: var(--wp--preset--spacing--50);
}
.to-marches__jour {
	margin: 0 0 0.5rem;
	font-size: var(--wp--preset--font-size--grand);
}
.to-marches.to-js .to-marches__jour {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.to-marches__resume {
	margin: 0 0 1.25rem;
	font-size: var(--wp--preset--font-size--moyen);
	font-weight: 700;
}
.to-marches__liste {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-marche-carte__lien {
	display: flex;
	align-items: flex-start;
	gap: 1.1rem;
	height: 100%;
	box-sizing: border-box;
	padding: 1.35rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--encre);
	text-decoration: none;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.to-marche-carte__lien:hover {
	color: var(--wp--preset--color--encre);
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgb(20 56 36 / 0.14);
}
.to-marche-carte__icone {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 3.5rem;
	height: 3.5rem;
	border-radius: 10px;
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire);
}
.to-marche-carte__corps {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 0;
}
.to-marche-carte__titre {
	font-size: 1.625rem;
	font-weight: 800;
	font-stretch: 66%;
	line-height: 1.05;
	color: var(--wp--preset--color--primaire);
}
.to-marche-carte__sous,
.to-marche-carte__distance {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-marche-carte__distance {
	font-weight: 700;
	color: var(--wp--preset--color--primaire);
}
.to-marche-carte .is-style-tampon {
	margin: 0.5rem 0 0 0.2rem;
	font-size: 0.75rem;
}
.to-marche-carte--drive .to-marche-carte__lien {
	background: var(--wp--preset--color--accent-pale);
	border-color: #F2B8CC;
}
.to-marche-carte--drive .to-marche-carte__icone {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--fond);
}
.to-marche-carte--drive .to-marche-carte__titre,
.to-marche-carte--drive .to-marche-carte__distance {
	color: var(--wp--preset--color--accent-fonce);
}
.to-marches__vide {
	margin: 0;
	padding: 1.5rem;
	border: 2px dashed var(--wp--preset--color--trait);
	border-radius: 10px;
}

/* ---------------- Départements ---------------- */
.to-departements {
	padding-block: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--calcaire);
}
.to-departements__grille {
	display: grid;
	grid-template-columns: minmax(0, 37.5rem) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--50);
	align-items: start;
}
.to-departements__carte {
	container-type: inline-size;
}
.to-departements__tuiles {
	position: relative;
	aspect-ratio: 600 / 440;
}
.to-tuile {
	position: absolute;
	left: var(--x);
	top: var(--y);
	width: 17.33%;
	height: 17.73%;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 1.4cqw 1.7cqw;
	border: 1px solid #C2C8BD;
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--encre-douce);
	text-decoration: none;
	transition: transform 0.15s ease;
}
.to-tuile:hover {
	color: var(--wp--preset--color--primaire);
	transform: translateY(-3px);
}
.to-tuile__num {
	font-size: 5cqw;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
}
.to-tuile__nom {
	font-size: 2cqw;
	font-weight: 600;
	line-height: 1.15;
}
.to-tuile.is-ouvert {
	background: var(--wp--preset--color--primaire);
	border-color: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}
.to-tuile[aria-current="true"] {
	border: 3px solid var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--primaire);
}
.to-tuile.is-ouvert[aria-current="true"] {
	background: var(--wp--preset--color--primaire-fonce);
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--fond);
}
@container (max-width: 30rem) {
	.to-departements__tuiles {
		position: static;
		aspect-ratio: auto;
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 0.5rem;
	}
	.to-tuile {
		position: static;
		width: auto;
		height: auto;
		min-height: 4.5rem;
		padding: 0.6rem 0.7rem;
	}
	.to-tuile__num {
		font-size: 1.5rem;
	}
	.to-tuile__nom {
		font-size: 0.75rem;
	}
}
.to-departements__legende {
	display: flex;
	gap: 1.25rem;
	margin: 1rem 0 0;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--encre-douce);
}
.to-departements__legende span::before {
	content: "";
	display: inline-block;
	width: 0.875rem;
	height: 0.875rem;
	margin-inline-end: 0.5rem;
	border: 1px solid #C2C8BD;
	border-radius: 3px;
	background: var(--wp--preset--color--fond);
	vertical-align: -0.1em;
}
.to-departements__legende .is-ouvert::before {
	background: var(--wp--preset--color--primaire);
	border-color: var(--wp--preset--color--primaire);
}
.to-dep-panneau {
	padding: 2.25rem;
	border-radius: 12px;
	background: var(--wp--preset--color--fond);
}
.to-dep-panneau[hidden] {
	display: none;
}
.to-dep-panneau > * {
	margin-block: 0;
}
.to-dep-panneau > * + * {
	margin-block-start: 1.25rem;
}
.to-dep-panneau h3 {
	margin-block-start: 0.1rem;
	font-size: clamp(2.25rem, 3.5vw, 2.75rem);
	font-stretch: 62%;
}
.to-dep-panneau__num {
	font-size: 1.25rem;
	font-weight: 800;
	font-stretch: 70%;
	color: var(--wp--preset--color--encre-douce);
}
.to-dep-panneau__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}
.to-portes {
	display: grid;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-porte {
	display: flex;
	align-items: center;
	gap: 1.1rem;
	padding: 1.1rem 1.25rem;
	border-radius: 10px;
	text-decoration: none;
	transition: transform 0.2s ease;
}
.to-porte:hover {
	transform: translateX(4px);
}
.to-porte__texte {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
	gap: 0.1rem;
	font-size: 0.9375rem;
}
.to-porte__texte strong {
	font-size: 1.375rem;
	font-weight: 800;
	font-stretch: 70%;
}
.to-porte--producteurs,
.to-porte--producteurs:hover {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}
.to-porte--marches,
.to-porte--marches:hover {
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire);
}
.to-porte--marches .to-porte__texte span {
	color: var(--wp--preset--color--encre-douce);
}
.to-porte--drive,
.to-porte--drive:hover {
	background: var(--wp--preset--color--accent-pale);
	color: var(--wp--preset--color--accent-fonce);
}

/* ---------------- Cartes encadrées (fiches de l'accueil) ---------------- */
.to-cartes--cadre .to-carte {
	overflow: hidden;
	padding-block-end: 1.25rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 12px;
	background: var(--wp--preset--color--fond);
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.to-cartes--cadre .to-carte:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgb(20 56 36 / 0.14);
}
.to-cartes--cadre .to-carte > :not(.wp-block-post-featured-image) {
	padding-inline: 1.25rem;
}
.to-cartes--cadre .wp-block-post-featured-image,
.to-cartes--cadre .wp-block-post-featured-image img {
	border-radius: 0;
}
.to-cartes--magazine .to-carte {
	overflow: hidden;
	padding-block-end: 1.5rem;
	border-radius: 12px;
	background: var(--wp--preset--color--fond);
}
.to-cartes--magazine .to-carte > :not(.wp-block-post-featured-image) {
	padding-inline: 1.5rem;
}
.to-cartes--magazine .wp-block-post-featured-image,
.to-cartes--magazine .wp-block-post-featured-image img {
	border-radius: 0;
}

/* Visuel de remplacement avec pictogramme du type de produit */
.to-visuel-vide--picto {
	background:
		radial-gradient(color-mix(in srgb, var(--to-teinte) 22%, transparent) 1.6px, transparent 1.8px) 0 0 / 18px 18px,
		color-mix(in srgb, var(--to-teinte) 16%, #fff);
}
.to-visuel-vide--picto > :is(span, a),
.to-visuel-vide--picto > a > span {
	color: var(--to-teinte);
}
.to-visuel-vide--picto .to-picto {
	width: clamp(4rem, 30%, 6rem);
	height: auto;
}

/* ---------------- Bande drive ---------------- */
.to-bande-drive {
	padding-block: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--accent-pale);
}
.to-bande-drive__grille {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--50);
	align-items: center;
}
.to-bande-drive__texte > * {
	margin-block: 0;
}
.to-bande-drive__texte > * + * {
	margin-block-start: 1.5rem;
}
.to-bande-drive h2 {
	font-size: clamp(2.5rem, 4.6vw, 4rem);
	font-stretch: 62%;
	line-height: 0.92;
	color: var(--wp--preset--color--accent-fonce);
}
.to-surtitre--drive {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	color: var(--wp--preset--color--accent-fonce);
}
.to-surtitre--drive::before {
	content: "";
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}
.to-etapes {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
	padding: 0;
	list-style: none;
	counter-reset: to-etape;
}
.to-etapes li {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	padding: 1.25rem;
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
	counter-increment: to-etape;
}
.to-etapes li::before {
	content: counter(to-etape);
	font-size: 2.5rem;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
	color: var(--wp--preset--color--accent);
}
.to-etapes span {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-bande-drive__mention {
	font-size: var(--wp--preset--font-size--petit);
	color: #6B3A4E;
}
.to-bande-drive__visuel {
	position: relative;
}
.to-bande-drive__carte {
	position: absolute;
	left: 0;
	bottom: 0;
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	margin: 0;
	padding: 1rem 1.25rem;
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
	box-shadow: 0 12px 28px rgb(142 31 74 / 0.16);
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-bande-drive__carte strong {
	font-size: 1.375rem;
	font-stretch: 70%;
	color: var(--wp--preset--color--encre);
}

/* ---------------- Produits du terroir ---------------- */
.to-produits__grille {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 9.5rem), 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-produit {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	min-height: 12.5rem;
	box-sizing: border-box;
	padding: 1.4rem 1.1rem;
	border-radius: 12px;
	background: color-mix(in srgb, var(--to-teinte) 18%, #fff);
	color: var(--wp--preset--color--encre);
	text-decoration: none;
	transition: transform 0.15s ease;
}
.to-produit:hover {
	color: var(--wp--preset--color--encre);
	transform: translateY(-3px);
}
.to-produit .to-picto {
	color: var(--to-teinte);
}
.to-produit__nom {
	font-size: 1.625rem;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
}
.to-produit__nombre {
	margin-block-start: auto;
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}

/* ---------------- Lettre ---------------- */
.to-bande-lettre {
	padding-block: var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--primaire-fonce);
	color: var(--wp--preset--color--fond);
}
.to-bande-lettre__colonnes {
	gap: var(--wp--preset--spacing--50);
}
.to-bande-lettre :where(h2, h3) {
	color: var(--wp--preset--color--fond);
}
.to-bande-lettre h2 {
	margin-block: 0 1rem;
	font-size: clamp(2.25rem, 4.2vw, 3.5rem);
	font-stretch: 62%;
	line-height: 0.95;
}
.to-bande-lettre__intro {
	margin-block: 0 1.5rem;
	color: var(--wp--preset--color--trait);
}
.to-bande-lettre :focus-visible {
	outline-color: #F2B8CC;
}
.to-lettre > * {
	margin-block: 0;
}
.to-lettre > * + * {
	margin-block-start: 1rem;
}
.to-lettre__champs {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto;
	gap: 0.75rem;
	align-items: end;
}
.to-lettre__champs p {
	margin: 0;
}
.to-lettre label {
	display: block;
	margin-block-end: 0.35rem;
	font-size: var(--wp--preset--font-size--petit);
	font-weight: 600;
	color: var(--wp--preset--color--trait);
}
.to-lettre label span {
	font-weight: 400;
}
.to-lettre input[type="email"],
.to-lettre input[type="text"] {
	width: 100%;
	height: 3.375rem;
	box-sizing: border-box;
	padding: 0 1rem;
	border: 0;
	border-radius: 4px;
	font: inherit;
	color: var(--wp--preset--color--encre);
}
.to-lettre button {
	height: 3.375rem;
	padding: 0 1.4rem;
	border: 0;
	border-radius: 4px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire-fonce);
	font: inherit;
	font-weight: 800;
	cursor: pointer;
}
.to-lettre button:hover {
	background: var(--wp--preset--color--calcaire);
}
.to-lettre__case label {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 1rem;
	font-weight: 400;
	color: var(--wp--preset--color--fond);
	cursor: pointer;
}
.to-lettre__case input {
	width: 1.25rem;
	height: 1.25rem;
	accent-color: var(--wp--preset--color--accent);
}
.to-lettre__info {
	font-size: 0.8125rem;
	color: #B9C2B6;
}
.to-lettre__info a {
	color: inherit;
}
.to-lettre__piege {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.to-lettre__message {
	padding: 0.75rem 1rem;
	border-radius: 6px;
	font-weight: 600;
}
.to-lettre__message--succes {
	background: var(--wp--preset--color--tendre);
	color: var(--wp--preset--color--primaire-fonce);
}
.to-lettre__message--erreur {
	background: var(--wp--preset--color--accent-pale);
	color: var(--wp--preset--color--accent-fonce);
}
.to-carte-producteur {
	padding: 2rem;
	border-radius: 12px;
	background: var(--wp--preset--color--primaire);
}
.to-carte-producteur > * {
	margin-block: 0;
}
.to-carte-producteur > * + * {
	margin-block-start: 1rem;
}
.to-carte-producteur h3 {
	font-size: 2.125rem;
	font-stretch: 62%;
}
.to-carte-producteur p {
	color: var(--wp--preset--color--trait);
}
.to-bouton-clair .wp-block-button__link {
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire);
	font-weight: 800;
}
.to-bouton-clair .wp-block-button__link:hover {
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire-fonce);
}

/* ============================================================
   Pages de territoire (département, commune) : taxonomy-territoire.html
   ============================================================ */
.to-territoire-tete {
	padding-block: var(--wp--preset--spacing--40) var(--wp--preset--spacing--60);
	background: var(--wp--preset--color--creme);
}
.to-ariane {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-block-end: var(--wp--preset--spacing--40);
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-ariane a {
	color: inherit;
}
.to-ariane [aria-current] {
	font-weight: 700;
	color: var(--wp--preset--color--encre);
}
.to-territoire-tete__grille {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 35rem);
	gap: var(--wp--preset--spacing--50);
	align-items: center;
}
.to-territoire-tete__texte > * {
	margin-block: 0;
}
.to-territoire-tete__texte > * + * {
	margin-block-start: 1.4rem;
}
.to-territoire-tete h1 {
	font-size: clamp(2.6rem, 5.6vw, 5.25rem);
	font-stretch: 62%;
	line-height: 0.9;
}
.to-territoire-tete__dep {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: var(--wp--preset--font-size--petit);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--encre-douce);
}
.to-territoire-tete__dep span {
	padding: 0.2rem 0.6rem;
	border-radius: 6px;
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-size: 1.125rem;
	font-weight: 800;
	font-stretch: 70%;
	letter-spacing: 0;
}
.to-territoire-tete__intro {
	max-width: 38rem;
	font-size: var(--wp--preset--font-size--moyen);
}
.to-territoire-tete__intro p {
	margin: 0;
}
.to-territoire-tete__intro p + p {
	margin-block-start: 0.75rem;
}
.to-chiffres {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	gap: 0.75rem;
	max-width: 40rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-chiffres li {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 1rem 1.1rem;
	border-radius: 10px;
	background: var(--wp--preset--color--fond);
}
.to-chiffres strong {
	font-size: 2.5rem;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
	color: var(--wp--preset--color--primaire);
}
.to-chiffres span {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-chiffres .is-drive {
	background: var(--wp--preset--color--accent-pale);
}
.to-chiffres .is-drive strong {
	color: var(--wp--preset--color--accent-fonce);
}
.to-chiffres .is-drive span {
	color: #6B3A4E;
}

/* Mini-carte : points réels projetés, sans fond de carte */
.to-mini-carte {
	position: relative;
	margin: 0;
	padding: 0.5rem;
	border-radius: 16px;
	background:
		radial-gradient(rgb(122 82 52 / 0.12) 1.4px, transparent 1.6px) 0 0 / 22px 22px,
		#E9E4D6;
}
.to-mini-carte svg {
	display: block;
	width: 100%;
	height: auto;
}
.to-mini-carte__fiche {
	fill: var(--wp--preset--color--primaire);
	stroke: var(--wp--preset--color--fond);
	stroke-width: 1.5;
}
.to-mini-carte__marche {
	fill: none;
	stroke: var(--wp--preset--color--primaire);
	stroke-width: 3;
}
.to-mini-carte__marche.is-voisin {
	stroke: #7B8A7F;
	stroke-width: 2.5;
}
.to-mini-carte__drive {
	fill: var(--wp--preset--color--accent);
	stroke: var(--wp--preset--color--fond);
	stroke-width: 3;
}
.to-mini-carte__onde {
	fill: var(--wp--preset--color--accent);
	transform-box: fill-box;
	transform-origin: center;
	animation: to-onde 2.4s ease-out infinite;
}
@keyframes to-onde {
	0% { opacity: 0.55; transform: scale(1); }
	80% { opacity: 0; transform: scale(2.6); }
	100% { opacity: 0; }
}
.to-mini-carte__legende {
	position: absolute;
	bottom: 1rem;
	left: 1rem;
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	padding: 0.6rem 0.85rem;
	border-radius: 8px;
	background: var(--wp--preset--color--fond);
	box-shadow: 0 6px 18px rgb(20 56 36 / 0.12);
	font-size: 0.8125rem;
}
.to-mini-carte__legende span::before {
	content: "";
	display: inline-block;
	width: 0.7rem;
	height: 0.7rem;
	margin-inline-end: 0.5rem;
	border-radius: 50%;
	vertical-align: -0.05em;
}
.to-mini-carte__legende .is-fiche::before {
	background: var(--wp--preset--color--primaire);
}
.to-mini-carte__legende .is-marche::before {
	box-sizing: border-box;
	border: 2px solid var(--wp--preset--color--primaire);
	background: var(--wp--preset--color--fond);
}
.to-mini-carte__legende .is-drive::before {
	background: var(--wp--preset--color--accent);
}

/* Trois portes */
.to-territoire-portes {
	padding-block: var(--wp--preset--spacing--50) 0;
}
.to-grandes-portes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-grande-porte {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	height: 100%;
	box-sizing: border-box;
	min-height: 15rem;
	padding: 2rem;
	border-radius: 14px;
	text-decoration: none;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.to-grande-porte:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgb(20 56 36 / 0.14);
}
.to-grande-porte strong {
	font-size: 2.5rem;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
}
.to-grande-porte span {
	flex-grow: 1;
	font-size: 1.0625rem;
}
.to-grande-porte em {
	font-style: normal;
	font-weight: 700;
}
.to-grande-porte--producteurs,
.to-grande-porte--producteurs:hover {
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}
.to-grande-porte--producteurs .to-picto {
	color: #B7D3A8;
}
.to-grande-porte--producteurs span {
	color: var(--wp--preset--color--trait);
}
.to-grande-porte--marches,
.to-grande-porte--marches:hover {
	background: var(--wp--preset--color--calcaire);
	color: var(--wp--preset--color--primaire);
}
.to-grande-porte--marches span {
	color: var(--wp--preset--color--encre-douce);
}
.to-grande-porte--drive,
.to-grande-porte--drive:hover {
	background: var(--wp--preset--color--accent-pale);
	color: var(--wp--preset--color--accent-fonce);
}
.to-grande-porte--drive span {
	color: #6B3A4E;
}

/* Producteurs : filtres */
.to-territoire-liste {
	padding-block: var(--wp--preset--spacing--60);
}
.to-territoire-producteurs {
	margin-block-end: var(--wp--preset--spacing--40);
}
.to-territoire-producteurs .to-section-tete {
	margin-block-end: 1.5rem;
}
.to-filtres {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}
.to-filtre {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.75rem;
	box-sizing: border-box;
	padding: 0 1.1rem;
	border: 2px solid var(--wp--preset--color--trait);
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire);
	font-weight: 700;
	text-decoration: none;
}
.to-filtre:hover {
	border-color: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--primaire);
}
.to-filtre span {
	padding: 0.05rem 0.5rem;
	border-radius: 999px;
	background: var(--wp--preset--color--calcaire);
	font-size: 0.8125rem;
	color: var(--wp--preset--color--encre-douce);
}
.to-filtre[aria-current="true"] {
	border-color: var(--wp--preset--color--primaire);
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
}
.to-filtre[aria-current="true"] span {
	background: rgb(255 255 255 / 0.18);
	color: var(--wp--preset--color--fond);
}
.to-territoire-producteurs__resume {
	margin: 0.9rem 0 0;
	color: var(--wp--preset--color--encre-douce);
}

/* Communes */
.to-territoire-communes {
	background: var(--wp--preset--color--calcaire);
}
.to-communes {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-commune {
	display: inline-flex;
	align-items: baseline;
	gap: 0.6rem;
	padding: 0.75rem 1.25rem;
	border: 2px solid transparent;
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	color: var(--wp--preset--color--primaire);
	font-size: 1.125rem;
	font-weight: 700;
	text-decoration: none;
}
.to-commune:hover {
	border-color: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--primaire);
}
.to-commune span {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--wp--preset--color--encre-douce);
}

/* Semaine des marchés (tableau) */
.to-territoire-marches .to-marches__liste {
	margin-block-end: var(--wp--preset--spacing--40);
}
.to-territoire-marches__sous-titre {
	margin: var(--wp--preset--spacing--40) 0 1rem;
	font-size: var(--wp--preset--font-size--grand);
}
.to-semaine-cadre {
	overflow-x: auto;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 12px;
}
.to-semaine {
	width: 100%;
	min-width: 44rem;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
}
.to-semaine caption {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.to-semaine thead th {
	padding: 0.85rem 0.5rem;
	background: var(--wp--preset--color--calcaire);
	font-size: 0.9375rem;
	font-weight: 800;
	color: var(--wp--preset--color--encre-douce);
	text-align: center;
}
.to-semaine thead th:first-child {
	padding-inline-start: 1.25rem;
	text-align: left;
}
.to-semaine abbr {
	text-decoration: none;
}
.to-semaine tbody tr {
	border-top: 1px solid var(--wp--preset--color--trait);
}
.to-semaine tbody tr:nth-child(even) {
	background: #FBFCFA;
}
.to-semaine tbody th {
	padding: 0.85rem 1.25rem;
	text-align: left;
	font-weight: 400;
}
/* Première colonne fixe quand le tableau défile (mobile). */
.to-semaine thead th:first-child,
.to-semaine tbody th {
	position: sticky;
	left: 0;
	z-index: 1;
}
.to-semaine thead th:first-child {
	background: var(--wp--preset--color--calcaire);
}
.to-semaine tbody th {
	background: var(--wp--preset--color--fond);
}
.to-semaine tbody tr:nth-child(even) th {
	background: #FBFCFA;
}
.to-semaine tbody tr.is-drive th {
	background: var(--wp--preset--color--accent-pale);
}
.to-semaine tbody th a {
	font-size: 1.0625rem;
	font-weight: 700;
	text-decoration: none;
}
.to-semaine tbody th a:hover {
	text-decoration: underline;
}
.to-semaine tbody th span {
	display: block;
	font-size: 0.8125rem;
	color: var(--wp--preset--color--encre-douce);
}
.to-semaine td {
	padding: 0.6rem 0.35rem;
	border-left: 1px solid var(--wp--preset--color--calcaire);
	text-align: center;
}
.to-semaine .is-aujourdhui {
	background: rgb(31 82 54 / 0.05);
}
.to-semaine thead .is-aujourdhui {
	color: var(--wp--preset--color--primaire);
}
.to-semaine__oui {
	display: inline-block;
	padding: 0.25rem 0.6rem;
	border-radius: 999px;
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-size: 0.8125rem;
	font-weight: 800;
	white-space: nowrap;
}
.to-semaine__non {
	display: inline-block;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: #E3E6DF;
}
.to-semaine tr.is-drive {
	background: var(--wp--preset--color--accent-pale);
}
.to-semaine tr.is-drive th a {
	color: var(--wp--preset--color--accent-fonce);
}
.to-semaine tr.is-drive .to-semaine__oui {
	background: var(--wp--preset--color--accent);
}

/* ============================================================
   Page d'attente « coming-soon »
   ============================================================ */
.to-attente .wp-block-post-content > * {
	margin-block: 0;
}
.to-attente-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.7rem;
	width: fit-content;
	padding: 0.55rem 1.1rem 0.55rem 0.9rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 999px;
	background: var(--wp--preset--color--fond);
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--primaire);
}
.to-attente-badge::before {
	content: "";
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	animation: to-pouls-rose 1.8s ease-out infinite;
}
@keyframes to-pouls-rose {
	0% { box-shadow: 0 0 0 0 rgb(217 71 122 / 0.5); }
	70% { box-shadow: 0 0 0 10px rgb(217 71 122 / 0); }
	100% { box-shadow: 0 0 0 0 rgb(217 71 122 / 0); }
}
.to-attente-hero .wp-block-buttons {
	gap: 0.75rem;
}

/* Compte à rebours */
.to-compte {
	padding-block: var(--wp--preset--spacing--50);
	background: var(--wp--preset--color--primaire-fonce);
	color: var(--wp--preset--color--fond);
}
.to-compte[hidden] {
	display: none;
}
.to-compte__grille {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	align-items: center;
}
.to-compte h2 {
	margin: 0 0 0.5rem;
	font-size: clamp(2rem, 3.6vw, 3rem);
	font-stretch: 62%;
	line-height: 0.95;
	color: var(--wp--preset--color--fond);
}
.to-compte p {
	margin: 0;
	color: var(--wp--preset--color--trait);
}
.to-compte__cases {
	display: grid;
	grid-template-columns: repeat(3, minmax(6.5rem, 1fr));
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.to-compte__cases li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	padding: 1rem 1.25rem;
	border-radius: 12px;
	background: rgb(255 255 255 / 0.08);
}
.to-compte__cases strong {
	font-size: clamp(3rem, 6vw, 4.5rem);
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}
.to-compte__cases span {
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--trait);
}

/* Teasing */
.to-teasers {
	gap: 1.5rem;
}
.to-teaser {
	height: 100%;
	box-sizing: border-box;
	padding: 2rem;
	border: 1px solid var(--wp--preset--color--trait);
	border-radius: 14px;
	background: var(--wp--preset--color--fond);
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.to-teaser:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgb(20 56 36 / 0.12);
}
.to-teaser > * {
	margin-block: 0;
}
.to-teaser > * + * {
	margin-block-start: 0.9rem;
}
.to-teaser .is-style-tampon {
	margin: 0 0 1.4rem 0.2rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.to-teaser h3 {
	font-size: 2rem;
	font-stretch: 62%;
	line-height: 1;
}
.to-teaser p:not(.is-style-tampon) {
	color: var(--wp--preset--color--encre-douce);
}
.to-teaser--drive {
	border-color: #F2B8CC;
	background: var(--wp--preset--color--accent-pale);
}
.to-teaser--drive .is-style-tampon,
.to-teaser--drive h3 {
	color: var(--wp--preset--color--accent-fonce);
}
.to-teaser__mention {
	font-size: var(--wp--preset--font-size--petit);
}

/* Appel aux producteurs */
.to-attente-producteurs h2 {
	margin-block: 0 1rem;
	font-size: clamp(2.25rem, 4.2vw, 3.5rem);
	font-stretch: 62%;
	line-height: 0.95;
}
.to-attente-producteurs__intro {
	max-width: 36rem;
	font-size: var(--wp--preset--font-size--moyen);
}
.to-coches {
	display: grid;
	gap: 0.6rem;
	margin-block: 1.5rem;
	padding: 0;
	list-style: none;
}
.to-coches li {
	position: relative;
	padding-inline-start: 2rem;
	font-weight: 600;
}
.to-coches li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.2em;
	width: 1.25rem;
	height: 1.25rem;
	border-radius: 50%;
	background: var(--wp--preset--color--primaire) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5 L10.5 17 L18 8'/%3E%3C/svg%3E") center / 72% no-repeat;
}
.to-fiche-apercu {
	max-width: 22rem;
	margin-inline: auto;
	overflow: hidden;
	padding-block-end: 1.5rem;
	border-radius: 14px;
	background: var(--wp--preset--color--fond);
	box-shadow: 0 22px 48px rgb(20 56 36 / 0.18);
	transform: rotate(1.5deg);
}
.to-fiche-apercu > * {
	margin: 0;
	padding-inline: 1.4rem;
}
.to-fiche-apercu__visuel {
	position: relative;
	height: 9rem;
	padding: 0;
	background:
		radial-gradient(rgb(62 122 74 / 0.18) 1.6px, transparent 1.8px) 0 0 / 16px 16px,
		var(--wp--preset--color--tendre);
}
.to-fiche-apercu__visuel::after {
	content: "";
	position: absolute;
	inset: 0;
	background: #3E7A4A;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M27 13 L9 31 Q8 33 11 32 L29 15 Z'/%3E%3Cpath d='M27 13 Q27 6 31 4 M29 15 Q34 13 36 9 M28 14 Q33 9 35.5 7.5'/%3E%3Cpath d='M14 26 L17 29 M18 22 L21 25'/%3E%3C/svg%3E") center / 5.5rem no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M27 13 L9 31 Q8 33 11 32 L29 15 Z'/%3E%3Cpath d='M27 13 Q27 6 31 4 M29 15 Q34 13 36 9 M28 14 Q33 9 35.5 7.5'/%3E%3Cpath d='M14 26 L17 29 M18 22 L21 25'/%3E%3C/svg%3E") center / 5.5rem no-repeat;
}
.to-fiche-apercu__badge {
	width: fit-content;
	margin: 1.25rem 1.4rem 0;
	padding: 0.15rem 0.7rem;
	border-radius: 999px;
	background: var(--wp--preset--color--primaire);
	color: var(--wp--preset--color--fond);
	font-size: 0.8125rem;
	font-weight: 700;
}
.to-fiche-apercu__titre {
	margin-block-start: 0.6rem;
	font-size: 1.875rem;
	font-stretch: 66%;
}
.to-fiche-apercu__ligne {
	margin-block-start: 0.35rem;
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--encre-douce);
}
.to-fiche-apercu .is-style-tampon {
	margin: 1.1rem 1.4rem 0 1.6rem;
	padding: 0.3rem 0.65rem;
}

/* Origine du projet */
.to-attente-origine h2 {
	margin-block: 0 1.25rem;
	font-size: clamp(2.25rem, 4.2vw, 3.5rem);
	font-stretch: 62%;
	line-height: 0.95;
}
.to-attente-origine p {
	max-width: 40rem;
}
.to-attente-origine__independance {
	font-weight: 700;
}
.to-frise {
	margin-block-start: 0.5rem;
	padding-inline-start: 2rem;
	border-inline-start: 3px solid var(--wp--preset--color--trait);
}
.to-frise__etape {
	position: relative;
}
.to-frise__etape + .to-frise__etape {
	margin-block-start: 2rem;
}
.to-frise__etape::before {
	content: "";
	position: absolute;
	left: calc(-2rem - 0.6rem - 1.5px);
	top: 0.45rem;
	width: 1.2rem;
	height: 1.2rem;
	border: 3px solid var(--wp--preset--color--fond);
	border-radius: 50%;
	background: var(--wp--preset--color--primaire);
	box-sizing: border-box;
}
.to-frise__etape.is-bientot::before {
	background: var(--wp--preset--color--accent);
}
.to-frise__etape > * {
	margin: 0;
}
.to-frise__date {
	font-size: 2.25rem;
	font-weight: 800;
	font-stretch: 62%;
	line-height: 1;
	color: var(--wp--preset--color--primaire);
}
.to-frise__etape.is-bientot .to-frise__date {
	color: var(--wp--preset--color--accent-fonce);
}
.to-frise__etape p + p {
	margin-block-start: 0.35rem;
	color: var(--wp--preset--color--encre-douce);
}

/* ---------------- Petits écrans ---------------- */
@media (max-width: 781px) {
	.to-departements__grille,
	.to-bande-drive__grille {
		grid-template-columns: minmax(0, 1fr);
	}
	.to-etapes {
		grid-template-columns: minmax(0, 1fr);
	}
	.to-lettre__champs {
		grid-template-columns: minmax(0, 1fr);
	}
	.to-jours {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: minmax(4.9rem, 1fr);
		overflow-x: auto;
		padding-block-end: 0.25rem;
	}
	.to-jours__detail {
		font-size: 0.75rem;
	}
	.to-bande-drive__carte {
		position: static;
		margin-block-start: 1rem;
	}
	.to-dep-panneau {
		padding: 1.5rem;
	}
	.to-territoire-tete__grille {
		grid-template-columns: minmax(0, 1fr);
	}
	.to-grande-porte {
		min-height: 0;
		padding: 1.5rem;
	}
	.to-grande-porte strong {
		font-size: 2rem;
	}
	.to-commune {
		padding: 0.6rem 1rem;
		font-size: 1rem;
	}
	.to-compte__grille {
		grid-template-columns: minmax(0, 1fr);
	}
	.to-compte__cases {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.to-compte__cases li {
		padding: 0.85rem 0.5rem;
	}
	.to-fiche-apercu {
		transform: none;
	}
	.to-semaine {
		min-width: 38rem;
	}
	.to-semaine tbody th {
		min-width: 8.5rem;
		padding-inline: 0.85rem;
	}
	/* Fiches de l'accueil : deux par ligne sur téléphone. */
	.to-cartes--cadre.wp-block-post-template {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 0.75rem !important;
	}
	.to-cartes--cadre .to-carte > :not(.wp-block-post-featured-image) {
		padding-inline: 0.75rem;
	}
	.to-cartes--cadre .to-carte__titre {
		font-size: 1.25rem;
	}
	.to-produit {
		min-height: 10rem;
	}
}

/* ---------------- Moins d'animations si demandé ---------------- */
@media (prefers-reduced-motion: reduce) {
	.to-pastille__point,
	.to-bandeau-saison__piste,
	.to-mini-carte__onde,
	.to-attente-badge::before {
		animation: none;
	}
	.to-teaser {
		transition: none;
	}
	.to-teaser:hover {
		transform: none;
	}
	.to-grande-porte {
		transition: none;
	}
	.to-grande-porte:hover {
		transform: none;
	}
	.to-bandeau-saison__piste {
		width: auto;
	}
	.to-bandeau-saison ul {
		flex-wrap: wrap;
		white-space: normal;
		row-gap: 0.25rem;
	}
	.to-bandeau-saison ul[aria-hidden="true"] {
		display: none;
	}
	.to-marche-carte__lien,
	.to-cartes--cadre .to-carte,
	.to-porte,
	.to-tuile,
	.to-produit {
		transition: none;
	}
	.to-marche-carte__lien:hover,
	.to-cartes--cadre .to-carte:hover,
	.to-porte:hover,
	.to-tuile:hover,
	.to-produit:hover {
		transform: none;
	}
}
