/*
Theme Name: UDSM
Theme URI: https://www.udsm-asso.fr
Author: UDSM
Description: Thème bloc de l'Union pour la Défense de la Santé Mentale. Charte UDSM 2025. Toutes les sections sont modifiables, réordonnables et masquables depuis l'éditeur.
Version: 1.0.3
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: udsm
Tags: block-theme, full-site-editing, accessibility-ready
*/

/* La mise en forme vit dans theme.json. Ce fichier ne contient que ce que
   theme.json ne sait pas exprimer. */

/* --- Section masquée -------------------------------------------------
   Style de bloc appliqué depuis l'éditeur (Groupe > Styles > Masquée).
   Cache la section sur le site public. Dans l'éditeur, assets/css/editor.css
   la réaffiche en semi-transparent pour qu'elle reste manipulable. */
.is-style-udsm-masquee { display: none !important; }

/* --- Accessibilité --------------------------------------------------- */
:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid var(--wp--preset--color--noir);
  outline-offset: 3px;
}
.udsm-saut-contenu {
  position: absolute; left: -9999px;
  background: var(--wp--preset--color--noir); color: #fff;
  padding: 12px 20px; border-radius: 999px; z-index: 999; text-decoration: none;
}
.udsm-saut-contenu:focus { left: 12px; top: 12px; position: fixed; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  html { scroll-behavior: auto; }
}

/* --- Titres : interdits de la charte 4.7 ------------------------------
   Pas de capitales, pas de centrage, graisses regular et medium seulement. */
h1, h2, h3, h4, h5, h6,
.wp-block-post-title, .wp-block-site-title {
  text-transform: none;
  letter-spacing: -0.025em;
}

/* --- Liens : la charte interdit le texte en couleur, le soulignement
   porte donc seul la distinction. ------------------------------------- */
.wp-block-post-content a:not(.wp-element-button),
.entry-content a:not(.wp-element-button) {
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}

/* --- Grilles de contenu ---------------------------------------------- */
.udsm-vignette img { aspect-ratio: 16 / 10; object-fit: cover; width: 100%; }
.udsm-vignette-carree img { aspect-ratio: 1 / 1; object-fit: cover; width: 100%; }

/* --- Étiquette (catégorie, type, public) ------------------------------ */
.udsm-etiquette,
.is-style-udsm-etiquette {
  display: inline-block;
  border: 1px solid currentColor;
  border-radius: 999px;
  padding: 2px 12px;
  font-size: var(--wp--preset--font-size--annotation);
  line-height: 1.6;
}

/* --- Chiffre clé ------------------------------------------------------ */
.udsm-chiffre {
  font-family: var(--wp--preset--font-family--labil);
  font-size: clamp(2.6rem, 5vw, 4.2rem);
  line-height: .9; letter-spacing: -.03em; display: block;
}

/* --- Carte des établissements ----------------------------------------- */
.udsm-carte { width: 100%; height: 520px; border-radius: 26px; overflow: hidden; }
.udsm-carte .leaflet-popup-content { font-family: inherit; }
@media (max-width: 781px) { .udsm-carte { height: 380px; } }

/* --- Annuaire : filtres ------------------------------------------------ */
.udsm-filtres { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 28px; }
.udsm-filtres select, .udsm-filtres input[type="search"] {
  font: inherit; padding: 10px 16px; border: 1px solid var(--wp--preset--color--noir);
  border-radius: 999px; background: #fff;
}

/* --- Formulaires -------------------------------------------------------- */
.udsm-form { display: grid; gap: 18px; max-width: 640px; }
.udsm-form .champ { display: grid; gap: 6px; }
.udsm-form label { font-weight: 500; font-size: .95rem; }
.udsm-form input, .udsm-form select, .udsm-form textarea {
  font: inherit; padding: 13px 15px; border: 1px solid var(--wp--preset--color--noir);
  border-radius: 14px; background: #fff; width: 100%;
}
.udsm-form textarea { min-height: 140px; }
.udsm-form .consentement { display: flex; gap: 10px; align-items: flex-start; font-size: .9rem; font-weight: 400; }
.udsm-form .consentement input { width: auto; margin-top: 4px; }
.udsm-form .pot-de-miel { position: absolute; left: -9999px; }
.udsm-message { border-radius: 16px; padding: 16px 20px; margin-bottom: 24px; }
.udsm-message--ok { background: var(--wp--preset--color--eau); }
.udsm-message--erreur { background: var(--wp--preset--color--peche); }
.udsm-form .erreur-champ { font-size: .85rem; }

/* --- Emplacement HelloAsso (vide tant que le code n'est pas collé) ------ */
.udsm-emplacement-vide {
  border: 2px dashed currentColor; border-radius: 26px; padding: 32px;
  text-align: center; opacity: .55;
}
body:not(.wp-admin) .udsm-emplacement-vide { display: none; }

/* --- Staff Santé : le module tiers impose sa propre mise en forme,
   on se contente de contenir sa largeur. ------------------------------- */
#module-sundaffil { max-width: 100%; overflow-x: auto; }

/* --- Sections pleine largeur -----------------------------------------
   Une section de la page d'accueil doit couvrir toute la largeur de
   l'écran, bord à bord. Sans cette règle, WordPress la contient dans la
   colonne de texte et l'aplat de couleur s'arrête au milieu. */
.wp-block-post-content > .alignfull {
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	max-width: 100vw;
	width: auto;
}

/* La largeur de la fenêtre inclut la barre de défilement : sans cette
   ligne, une bande horizontale apparaît. « clip » plutôt que « hidden »
   pour ne pas casser l'en-tête qui reste collé en haut. */
html { overflow-x: clip; }

/* --- Sections qui se touchent ----------------------------------------
   Les sections de la page d'accueil se suivent sans interruption : leur
   respiration vient de leur propre marge intérieure, pas d'un écart
   entre elles. Sans cette règle, une bande blanche coupe chaque aplat. */
.home .wp-block-post-content > *,
.page-template-page-accueil .wp-block-post-content > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* --- En-tête, contenu et pied de page collés -------------------------
   WordPress glisse un écart entre les trois grands blocs de la page.
   Entre le menu et la première section, cela dessine une bande blanche.
   Chaque section porte déjà sa propre marge intérieure : l'écart n'a pas
   lieu d'être. La classe est écrite sans :where() pour l'emporter sur la
   règle par défaut de WordPress. */
.wp-site-blocks > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* --- Titre du site ---------------------------------------------------
   Quand un logo est déposé, le nom écrit à côté fait doublon. */
.udsm-entete .wp-block-site-title { display: none; }
