/*
Theme Name: Unité Communiste
Theme URI: https://unitecommuniste.com/
Update URI: false
Author: Unité communiste
Description: Thème WordPress classique reproduisant la mise en page et l'identité visuelle du site (bannière d'article plein écran, en-tête transparent + sticky, grille d'archives 3 colonnes, pied de page rouge). Aucune extension premium requise : compatible Gutenberg et Spectra.
Version: 1.1.3
Requires at least: 6.6
Tested up to: 7.0
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: unite-communiste
Tags: blog, news, one-column, custom-logo, custom-menu, featured-images, block-styles, wide-blocks, translation-ready
*/

/* ==========================================================================
   1. Design tokens
   ========================================================================== */

:root {
	/* Palette (reprise de la palette globale du site d'origine) */
	--uc-primary:        #ef4d48; /* rouge clair : titres, liens, méta, pied de page */
	--uc-primary-dark:   #d90700; /* rouge vif : survol, accents */
	--uc-black:          #000000;
	--uc-text:           #444444;
	--uc-light:          #f7f3f5; /* texte clair sur fond sombre */
	--uc-white:          #ffffff;
	--uc-gray:           #888888;
	--uc-bg-alt:         #f6f7f8;
	--uc-border:         #eaeaea;
	--uc-input-bg:       #fafafa;

	/* Typographie */
	--uc-font-body: 'Libre Caslon Text', Georgia, 'Times New Roman', serif;
	--uc-font-head: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
	--uc-line-height: 1.5em;
	--uc-head-line-height: 1.2em;

	/* Gabarits */
	--uc-content-width: 1200px;
	--uc-narrow-width: 750px;
	--uc-gutter: 20px;
	--uc-header-gutter: 35px;
	--uc-header-height: 70px;

	/* Divers */
	--uc-transition: all 0.2s linear;
}

/* ==========================================================================
   2. Reset / base
   ========================================================================== */

html {
	font-size: 106.25%; /* 17px */
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

* { box-sizing: border-box; }

body {
	margin: 0;
	background-color: var(--uc-white);
	color: var(--uc-text);
	font-family: var(--uc-font-body);
	font-size: 1rem;
	font-weight: 400;
	line-height: var(--uc-line-height);
	overflow-wrap: break-word;
}

body.uc-no-scroll { overflow: hidden; }

img,
video,
iframe,
embed,
object {
	max-width: 100%;
	height: auto;
}

figure { margin: 0 0 1em; }

a {
	color: var(--uc-primary);
	text-decoration: none;
	transition: color 0.2s linear;
}

a:hover,
a:focus { color: var(--uc-black); }

::selection {
	background-color: var(--uc-primary);
	color: var(--uc-white);
}

:focus-visible {
	outline: thin dotted currentColor;
	outline-offset: 2px;
}

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 1000;
	background: var(--uc-white);
	color: var(--uc-black);
	padding: 12px 20px;
	font-family: var(--uc-font-head);
	font-weight: 700;
}

.skip-link:focus { left: 6px; top: 6px; }

/* ==========================================================================
   3. Typographie
   ========================================================================== */

/* Les titres sont rouges par défaut, comme sur le site d'origine où la couleur
   de titre définie dans le personnalisateur est le rouge principal. Le texte
   courant reste gris foncé. Un bloc peut toujours imposer sa propre couleur. */
h1, h2, h3, h4, h5, h6,
.site-title,
.entry-title,
.page-title {
	font-family: var(--uc-font-head);
	font-weight: 700;
	line-height: var(--uc-head-line-height);
	color: var(--uc-primary);
	margin: 0 0 0.5em;
	clear: both;
}

h1, .entry-content h1 { font-size: 90px; font-weight: 900; }
h2, .entry-content h2 { font-size: 55px; }
h3, .entry-content h3 { font-size: 35px; }
h4, .entry-content h4 { font-size: 26px; }
h5, .entry-content h5 { font-size: 20px; line-height: 1.5em; }
h6, .entry-content h6 { font-size: 16px; line-height: 1.5em; }

p { margin: 0 0 2em; }

.entry-content p:last-child { margin-bottom: 0; }

/* Citations : filet rouge fin, sans italique — valeurs relevées sur le site
   d'origine (1px solid #EF4D48, padding-left 20px, 1em/1.5, marge 1.5em). */
blockquote,
.wp-block-quote {
	color: var(--uc-text);
	border-left: 1px solid var(--uc-primary);
	margin: 1.5em 0;
	padding: 0 0 0 20px;
	font-style: normal;
	font-size: 1em;
	line-height: 1.5;
}

blockquote cite {
	display: block;
	margin-top: 0.75em;
	font-family: var(--uc-font-head);
	font-size: 0.82rem;
	font-style: normal;
	color: var(--uc-gray);
}

code, kbd, pre, samp {
	font-family: SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.9em;
}

pre {
	background: var(--uc-bg-alt);
	padding: 1.5em;
	overflow: auto;
	margin: 0 0 2em;
}

hr {
	border: 0;
	border-top: 1px solid var(--uc-border);
	margin: 2em 0;
}

ul, ol { margin: 0 0 2em; padding-left: 1.5em; }

/* Listes du contenu : retrait resserré, items espacés, puces rouges en Poppins.
   Valeurs relevées sur l'original (ul 15px, li 5px / 1em, marqueur #EF4D48). */
.entry-content ul,
.entry-content ol {
	padding-left: 15px;
	margin-bottom: 1.5em;
}

.entry-content li {
	padding-left: 5px;
	padding-bottom: 1em;
}

li::marker {
	color: var(--uc-primary);
	font-family: var(--uc-font-head);
}

table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 2em;
}

th, td {
	border: 1px solid var(--uc-border);
	padding: 0.6em 0.8em;
	text-align: left;
}

th { font-family: var(--uc-font-head); font-weight: 700; }

/* ==========================================================================
   4. Boutons & formulaires
   ========================================================================== */

button,
input[type="button"],
input[type="reset"],
input[type="submit"],
.uc-button,
.wp-block-button__link,
.wp-element-button {
	display: inline-block;
	background-color: var(--uc-primary);
	border: 1px solid var(--uc-primary);
	border-radius: 0;
	color: var(--uc-white);
	cursor: pointer;
	font-family: var(--uc-font-head);
	font-size: 14px;
	font-weight: 700;
	line-height: 1em;
	letter-spacing: 2px;
	padding: 20px 30px;
	transition: var(--uc-transition);
}

/* Libellés de boutons toujours en capitales.
   `!important` est nécessaire : Spectra génère une règle `text-transform` par
   bloc, avec une spécificité de quatre classes
   (`.wp-block-uagb-buttons .uagb-block-XXXX .uagb-buttons-repeater .uagb-button__link`),
   qu'aucun sélecteur raisonnable du thème ne peut dépasser. Sans cela, chaque
   bouton garde le réglage saisi dans l'éditeur et l'ensemble devient incohérent
   (« capitalize » ici, « none » là).
   Conséquence assumée : le réglage « Transformation du texte » des blocs
   boutons n'a plus d'effet sur le site public. */
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
.uc-button,
.wp-block-button__link,
.wp-element-button,
.uagb-buttons-repeater,
.uagb-button__link {
	text-transform: uppercase !important;
}

/* Boutons purement iconographiques : ni capitales ni interlettrage. */
.uc-menu-toggle,
.uc-offcanvas-close,
.uc-scroll-top {
	letter-spacing: normal;
	text-transform: none !important;
}

button:hover,
input[type="submit"]:hover,
.uc-button:hover,
.wp-block-button__link:hover {
	background-color: var(--uc-primary-dark);
	border-color: var(--uc-primary-dark);
	color: var(--uc-white);
}

.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	border: 1px solid var(--uc-primary);
	color: var(--uc-primary);
}

.wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: var(--uc-white);
	color: var(--uc-primary);
	border-color: var(--uc-primary);
}

input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="date"],
select,
textarea {
	background: var(--uc-input-bg);
	border: 1px solid var(--uc-border);
	border-radius: 0;
	color: var(--uc-text);
	font-family: var(--uc-font-body);
	font-size: 1rem;
	padding: 0.7em 1em;
	width: 100%;
	max-width: 100%;
}

input:focus,
select:focus,
textarea:focus {
	border-color: var(--uc-primary);
	outline: none;
}

/* ==========================================================================
   5. Conteneurs
   ========================================================================== */

.uc-container {
	width: 100%;
	max-width: calc(var(--uc-content-width) + (var(--uc-gutter) * 2));
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--uc-gutter);
	padding-right: var(--uc-gutter);
}

.uc-container--narrow {
	max-width: calc(var(--uc-narrow-width) + (var(--uc-gutter) * 2));
}

.uc-container--full {
	max-width: 100%;
	padding-left: var(--uc-header-gutter);
	padding-right: var(--uc-header-gutter);
}

#page { display: flow-root; }

.site-content { padding: 0; }

/* ==========================================================================
   6. En-tête
   ========================================================================== */

.site-header {
	position: relative;
	z-index: 99;
}

.uc-header-bar {
	background-color: var(--uc-white);
	border-bottom: 1px solid var(--uc-border);
	transition: background-color 0.2s linear, box-shadow 0.2s linear;
}

.uc-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: var(--uc-header-height);
}

/* --- Logo --- */

.site-branding {
	display: flex;
	align-items: center;
	line-height: 0;
}

.site-branding .custom-logo-link { display: inline-block; }

.site-branding img,
.site-branding .custom-logo {
	width: var(--uc-logo-width, 250px);
	max-width: var(--uc-logo-width, 250px);
	height: auto;
	transition: var(--uc-transition);
}

.uc-logo--transparent { display: none; }

.site-title {
	font-size: 35px;
	margin: 0;
}

.site-title a { color: inherit; }

.site-description {
	font-size: 15px;
	margin: 0;
	color: var(--uc-gray);
}

.uc-hide-title .site-title,
.uc-hide-title .site-description { display: none; }

/* --- Navigation principale (desktop) --- */

.uc-nav-desktop ul {
	display: flex;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

.uc-nav-desktop li { position: relative; }

.uc-nav-desktop a {
	display: block;
	color: var(--uc-black);
	font-family: var(--uc-font-head);
	font-size: 12px;
	font-weight: 700;
	line-height: var(--uc-header-height);
	height: var(--uc-header-height);
	padding: 0 12px;
	text-transform: uppercase;
	white-space: nowrap;
}

.uc-nav-desktop > ul > li:last-child > a { padding-right: 0; }

.uc-nav-desktop a:hover,
.uc-nav-desktop .current-menu-item > a,
.uc-nav-desktop .current-menu-ancestor > a,
.uc-nav-desktop .current_page_item > a {
	color: var(--uc-primary);
}

/* Sous-menus */

.uc-nav-desktop ul ul {
	position: absolute;
	top: 100%;
	left: 0;
	display: block;
	min-width: 240px;
	background: var(--uc-white);
	border: 1px solid var(--uc-border);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.15s linear, transform 0.15s linear, visibility 0.15s;
	z-index: 100;
}

.uc-nav-desktop ul ul ul { top: 0; left: 100%; }

.uc-nav-desktop li:hover > ul,
.uc-nav-desktop li:focus-within > ul {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.uc-nav-desktop ul ul a {
	height: auto;
	line-height: 1.4;
	padding: 12px 18px;
	color: var(--uc-black);
	white-space: normal;
}

.uc-nav-desktop ul ul a:hover { background: var(--uc-bg-alt); color: var(--uc-primary); }

.uc-nav-desktop .menu-item-has-children > a::after {
	content: "";
	display: inline-block;
	width: 0.4em;
	height: 0.4em;
	margin-left: 0.5em;
	vertical-align: middle;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translateY(-0.15em);
}

.uc-nav-desktop ul ul .menu-item-has-children > a::after {
	transform: rotate(-45deg);
	float: right;
}

/* --- En-tête transparent --- */

.uc-transparent-header .site-header {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
}

.uc-transparent-header .uc-header-bar {
	background-color: transparent;
	border-bottom-color: transparent;
}

.uc-transparent-header .uc-nav-desktop a { color: var(--uc-transparent-link, var(--uc-light)); }

/* Sur en-tête transparent, l'original bascule vers le rouge foncé (et non le
   rouge principal) pour le survol comme pour l'élément courant. */
.uc-transparent-header .uc-nav-desktop a:hover,
.uc-transparent-header .uc-nav-desktop .current-menu-item > a,
.uc-transparent-header .uc-nav-desktop .current-menu-ancestor > a,
.uc-transparent-header .uc-nav-desktop .current_page_item > a { color: var(--uc-primary-dark); }

.uc-transparent-header .uc-menu-toggle { color: var(--uc-transparent-link, var(--uc-light)); }

/* Variantes de couleur de lien, réglables par page */
.uc-header-scheme-red  { --uc-transparent-link: var(--uc-primary-dark); }
.uc-header-scheme-dark { --uc-transparent-link: var(--uc-black); }

/* Logo alternatif quand l'en-tête est transparent */
.uc-transparent-header .uc-has-alt-logo .uc-logo--default { display: none; }
.uc-transparent-header .uc-has-alt-logo .uc-logo--transparent { display: inline-block; }

/* --- En-tête collant (sticky) --- */

/* En-tête opaque : `sticky` suffit, aucun décalage du contenu. */
.uc-sticky-header:not(.uc-transparent-header) .site-header {
	position: sticky;
	top: 0;
}

/* En-tête transparent : il est superposé au héros, on le repasse en `fixed`
   au défilement pour qu'il reste visible. */
.uc-sticky-header.uc-transparent-header.uc-stuck .site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	animation: uc-slide-down 0.3s ease;
}

body.uc-stuck .uc-header-bar {
	background-color: var(--uc-white);
	border-bottom-color: var(--uc-border);
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}

body.uc-stuck .uc-nav-desktop a,
body.uc-stuck .uc-menu-toggle { color: var(--uc-black); }

body.uc-stuck .uc-nav-desktop a:hover,
body.uc-stuck .uc-nav-desktop .current-menu-item > a { color: var(--uc-primary); }

body.uc-stuck .uc-has-alt-logo .uc-logo--default { display: inline-block; }
body.uc-stuck .uc-has-alt-logo .uc-logo--transparent { display: none; }

/* Rétrécissement au défilement */
body.uc-stuck .site-branding img { width: calc(var(--uc-logo-width, 250px) * 0.8); }
body.uc-stuck .uc-nav-desktop a { line-height: 60px; height: 60px; }
body.uc-stuck .uc-header-inner { min-height: 60px; }

@keyframes uc-slide-down {
	from { transform: translateY(-100%); }
	to   { transform: translateY(0); }
}

/* --- Bouton menu mobile + panneau off-canvas --- */

.uc-menu-toggle {
	display: none;
	background: none;
	border: 0;
	color: var(--uc-black);
	padding: 10px;
	line-height: 0;
	cursor: pointer;
}

.uc-menu-toggle svg { width: 26px; height: 26px; fill: currentColor; }
.uc-menu-toggle .uc-icon-close { display: none; }

.uc-offcanvas {
	position: fixed;
	inset: 0;
	z-index: 999;
	background: var(--uc-black);
	color: var(--uc-white);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.25s ease, visibility 0.25s ease;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	padding: 30px 0 60px;
}

.uc-offcanvas.is-open { opacity: 1; visibility: visible; }

.uc-offcanvas-close {
	align-self: flex-end;
	background: none;
	border: 0;
	color: var(--uc-white);
	cursor: pointer;
	font-size: 34px;
	line-height: 1;
	padding: 0 30px 20px;
}

.uc-offcanvas nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.uc-offcanvas nav a {
	display: block;
	color: var(--uc-white);
	font-family: var(--uc-font-head);
	font-size: 30px;
	font-weight: 700;
	padding: 5px 20px;
	text-transform: none;
}

.uc-offcanvas nav a:hover,
.uc-offcanvas nav .current-menu-item > a,
.uc-offcanvas nav .current-menu-ancestor > a { color: var(--uc-primary); }

.uc-offcanvas nav ul ul a { font-size: 20px; padding-left: 40px; }

/* ==========================================================================
   7. Bannière d'entrée (article / page / archive)
   ========================================================================== */

.uc-entry-banner {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: var(--uc-banner-height, 100vh);
	padding: 80px 20px 20px;
	background-color: var(--uc-black);
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
	text-align: left;
}

.uc-entry-banner::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: rgba(0, 0, 0, 0.52);
}

.uc-entry-banner > .uc-container {
	position: relative;
	max-width: var(--uc-narrow-width);
	padding: 0;
}

/* Taille en rem : le titre suit la taille de police racine, qui passe à 96.9 %
   sous 921 px — exactement le comportement du site d'origine. */
.uc-entry-banner .entry-title {
	color: var(--uc-light);
	font-size: 4.11765rem; /* 70px à 17px de racine */
	font-weight: 900;
	line-height: 1.2;
	margin: 0;
}

.uc-entry-banner .entry-meta,
.uc-entry-banner .entry-meta a {
	color: var(--uc-white);
	font-family: var(--uc-font-head);
	font-size: 1rem;
	margin-top: 0;
}

/* Bannière sans image mise en avant : fond plein, hauteur réduite */
.uc-entry-banner.uc-entry-banner--plain {
	min-height: 60vh;
	background-color: var(--uc-black);
}

/* ==========================================================================
   8. Contenu : articles et pages
   ========================================================================== */

.uc-article-single { padding: 40px 0 60px; }

.entry-content > * {
	max-width: var(--uc-narrow-width);
	margin-left: auto;
	margin-right: auto;
}

.entry-content > .alignwide { max-width: var(--uc-content-width); }

/* `vw` inclut la barre de défilement : sans compensation, un bloc `alignfull`
   dépasse de la moitié de sa largeur de chaque côté et provoque un défilement
   horizontal (l'en-tête, lui, reste à la largeur du viewport et paraît décalé).
   --uc-scrollbar est mesurée en JS ; 0px tant que le script n'a pas tourné. */
.entry-content > .alignfull {
	max-width: none;
	width: auto;
	margin-left: calc(50% - 50vw + (var(--uc-scrollbar, 0px) / 2));
	margin-right: calc(50% - 50vw + (var(--uc-scrollbar, 0px) / 2));
}

.entry-content > .alignleft {
	float: left;
	margin: 0 2em 1em 0;
	max-width: 50%;
}

.entry-content > .alignright {
	float: right;
	margin: 0 0 1em 2em;
	max-width: 50%;
}

.aligncenter { margin-left: auto; margin-right: auto; text-align: center; }

.entry-content::after { content: ""; display: table; clear: both; }

/* Gabarit « pleine largeur » : aucune contrainte, les blocs gèrent leur largeur */
.uc-template-full .entry-content > * { max-width: none; }
.uc-template-full .site-content { padding: 0; }

/* Ici le contenu occupe déjà toute la largeur disponible : les marges négatives
   d'`alignfull` n'ont rien à compenser et feraient déborder la page. */
.uc-template-full .entry-content > .alignfull,
.uc-template-full .entry-content > .alignwide {
	margin-left: 0;
	margin-right: 0;
}

/* Liens dans le corps du texte : soulignés pour rester repérables sans la
   couleur seule. C'est un écart volontaire avec le site d'origine, qui ne les
   souligne pas. Pour reproduire l'original à l'identique, supprimer la
   déclaration `text-decoration` de la règle ci-dessous. */
.entry-content a { text-decoration: underline; text-underline-offset: 0.15em; }
.entry-content a:hover { color: var(--uc-black); }

/* …mais jamais un bouton, ni un élément d'interface. La règle précédente
   (`.entry-content a`) l'emportait sur le style de bouton et soulignait les
   libellés — de façon irrégulière selon les blocs. Les sélecteurs ci-dessous
   la dépassent en spécificité, sans recourir à `!important` : aucune règle de
   Spectra ne déclare `text-decoration` sur ces éléments. */
.entry-content a.wp-block-button__link,
.entry-content a.wp-element-button,
.entry-content a.uc-button,
.entry-content .uagb-buttons-repeater,
.entry-content .uagb-button__link,
.entry-content .uagb-infobox-cta-link,
.entry-content .uagb-post__link-complete-box,
.entry-content .uagb-post__image a,
.entry-content .uagb-post__title a,
.entry-content .page-numbers,
.entry-content .uc-read-more,
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
.uc-button,
.wp-block-button__link,
.wp-element-button {
	text-decoration: none;
}

.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4 { margin-top: 1.2em; }

.entry-content h1:first-child,
.entry-content h2:first-child,
.entry-content h3:first-child { margin-top: 0; }

.wp-block-image img { display: block; }

/* Légendes : valeurs de l'original (0.8em, Poppins, gris, 5px/10px de retrait).
   Le centrage est un choix du thème, l'original ne le précise pas. */
.wp-caption-text,
figcaption,
.wp-block-image figcaption {
	color: var(--uc-gray);
	font-size: 0.8em;
	font-family: var(--uc-font-head);
	line-height: 1.5em;
	padding: 5px 0 10px;
	text-align: center;
}

/* Article sans bannière : en-tête classique */

.uc-article-single > .entry-header {
	max-width: var(--uc-narrow-width);
	margin: 0 auto 1.5em;
}

.uc-featured-image {
	max-width: var(--uc-narrow-width);
	margin: 0 auto 2em;
}

.uc-featured-image img { width: 100%; display: block; }

.page-links {
	max-width: var(--uc-narrow-width);
	margin: 2em auto 0;
	font-family: var(--uc-font-head);
	font-size: 0.88rem;
}

.page-links a { padding: 0 6px; }

/* Formulaire de recherche du thème et bloc « Recherche » de l'éditeur.
   Les deux partagent la même apparence : champ Poppins sur fond clair,
   bordure discrète qui passe au rouge au focus, angles droits. */

.uc-search-form,
.wp-block-search__inside-wrapper {
	display: flex;
	gap: 0;
	max-width: 100%;
}

.uc-search-form {
	max-width: 480px;
	margin: 1.5em 0;
}

.wp-block-search { max-width: 100%; }

/* Sélecteurs à deux classes : ils doivent l'emporter sur la règle générique
   `input[type="search"]` de la section formulaires, de spécificité égale. */
.uc-search-form .search-field,
.wp-block-search .wp-block-search__input {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	background: var(--uc-input-bg);
	border: 1px solid var(--uc-border);
	border-radius: 0;
	color: var(--uc-text);
	font-family: var(--uc-font-head);
	font-size: 0.94rem;
	line-height: 1.4;
	padding: 0.85em 1.1em;
}

.uc-search-form .search-field::placeholder,
.wp-block-search .wp-block-search__input::placeholder {
	color: var(--uc-gray);
	opacity: 1;
}

.uc-search-form .search-field:focus,
.wp-block-search .wp-block-search__input:focus {
	border-color: var(--uc-primary);
	border-style: solid;
	outline: none;
}

.uc-search-form .search-submit,
.wp-block-search .wp-block-search__button {
	flex: 0 0 auto;
	background: var(--uc-primary);
	border: 1px solid var(--uc-primary);
	border-radius: 0;
	color: var(--uc-white);
	font-family: var(--uc-font-head);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.03em;
	margin-left: 0;
	padding: 0 24px;
	text-transform: uppercase;
}

.uc-search-form .search-submit:hover,
.wp-block-search .wp-block-search__button:hover {
	background: var(--uc-primary-dark);
	border-color: var(--uc-primary-dark);
	color: var(--uc-white);
}

.wp-block-search__button svg { fill: currentColor; }

/* Variante « bouton à l'intérieur » */
.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper {
	background: var(--uc-input-bg);
	border: 1px solid var(--uc-border);
	padding: 4px;
}

.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper:focus-within { border-color: var(--uc-primary); }
.wp-block-search.wp-block-search__button-inside .wp-block-search__input { background: transparent; border: 0; }

.wp-block-search__label {
	display: block;
	font-family: var(--uc-font-head);
	font-size: 0.82rem;
	margin-bottom: 6px;
}

/* Méta d'article */

.entry-meta,
.entry-meta a {
	color: var(--uc-primary);
	font-family: var(--uc-font-head);
	font-size: 1rem;
	line-height: 1.45;
}

.entry-meta a:hover { color: var(--uc-black); }

.entry-meta .uc-meta-sep { margin: 0 0.4em; opacity: 0.6; }

/* Pied d'article : catégories, étiquettes, partage */

.uc-entry-footer {
	max-width: var(--uc-narrow-width);
	margin: 3em auto 0;
	padding-top: 1.5em;
	border-top: 1px solid var(--uc-border);
	font-family: var(--uc-font-head);
	font-size: 0.82rem;
}

.uc-entry-footer a { color: var(--uc-primary); }

.uc-tags a {
	display: inline-block;
	border: 1px solid var(--uc-border);
	padding: 4px 10px;
	margin: 0 6px 6px 0;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.uc-tags a:hover {
	background: var(--uc-primary);
	border-color: var(--uc-primary);
	color: var(--uc-white);
}

/* Navigation article précédent / suivant */

.uc-post-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 30px;
	max-width: var(--uc-narrow-width);
	margin: 3em auto 0;
	padding-top: 2em;
	border-top: 1px solid var(--uc-border);
}

.uc-post-nav > div { flex: 1 1 45%; }
.uc-post-nav .uc-post-nav-next { text-align: right; }

.uc-post-nav .uc-post-nav-label {
	display: block;
	font-family: var(--uc-font-head);
	font-size: 0.7rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--uc-gray);
	margin-bottom: 0.4em;
}

.uc-post-nav a {
	font-family: var(--uc-font-head);
	font-weight: 700;
	font-size: 1.05rem;
	color: var(--uc-text);
}

.uc-post-nav a:hover { color: var(--uc-primary); }

/* Articles liés */

.uc-related {
	background: var(--uc-bg-alt);
	padding: 60px 0;
	margin-top: 60px;
}

.uc-related-title {
	font-size: 35px;
	margin-bottom: 1em;
}

/* ==========================================================================
   9. Archives et grille d'articles
   ========================================================================== */

.uc-archive-header {
	padding: 20px 0 40px;
}

.page-title,
.uc-archive-title {
	color: var(--uc-primary);
	font-size: 40px;
	font-weight: 900;
	margin: 0;
}

.uc-archive-description { margin-top: 1em; max-width: var(--uc-narrow-width); }

.uc-posts-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 34px;
	padding-bottom: 40px;
}

.uc-posts-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.uc-posts-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.uc-posts-grid--1 { grid-template-columns: minmax(0, 1fr); }

.uc-post-card { display: flex; flex-direction: column; }

.uc-post-card .uc-post-thumb {
	display: block;
	margin-bottom: 1em;
	overflow: hidden;
}

.uc-post-card .uc-post-thumb img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	transition: transform 0.4s ease;
}

.uc-post-card:hover .uc-post-thumb img { transform: scale(1.04); }

.uc-post-card .entry-title {
	font-size: 26px;
	font-weight: 700;
	line-height: 1.2em;
	margin: 0 0 0.4em;
}

/* L'original garde le rouge au survol : pas de changement visible. Pour un
   retour visuel, remplacer la couleur de survol par var(--uc-black). */
.uc-post-card .entry-title a { color: var(--uc-primary); }
.uc-post-card .entry-title a:hover { color: var(--uc-primary); }

.uc-post-card .entry-meta { margin-bottom: 0.6em; }

.uc-post-card .uc-excerpt { margin: 0; }

.uc-post-card .uc-read-more {
	display: inline-block;
	margin-top: 0.8em;
	font-family: var(--uc-font-head);
	font-size: 0.82rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

/* Article en liste (recherche, index simple) */

.uc-posts-list .uc-post-card {
	padding-bottom: 34px;
	margin-bottom: 34px;
	border-bottom: 1px solid var(--uc-border);
}

/* Pagination */

.uc-pagination {
	padding: 34px 0 60px;
	font-family: var(--uc-font-head);
	font-size: 0.88rem;
	font-weight: 700;
}

/* Pagination des grilles Spectra comprise. */
.page-numbers { font-family: var(--uc-font-head); }

.uc-pagination .page-numbers {
	display: inline-block;
	min-width: 40px;
	padding: 9px 12px;
	margin: 0 4px 8px 0;
	border: 1px solid var(--uc-border);
	color: var(--uc-text);
	text-align: center;
}

.uc-pagination .page-numbers:hover,
.uc-pagination .page-numbers.current {
	background: var(--uc-primary);
	border-color: var(--uc-primary);
	color: var(--uc-white);
}

.uc-pagination .page-numbers.dots { border-color: transparent; }

/* Aucun résultat */

.uc-no-results { padding: 60px 0 80px; max-width: var(--uc-narrow-width); }

/* ==========================================================================
   10. Barre latérale et widgets
   ========================================================================== */

.uc-has-sidebar .uc-content-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 300px;
	gap: 60px;
}

.widget-area .widget {
	margin-bottom: 40px;
	font-size: 0.94rem;
}

.widget-area .widget-title,
.widget-area .wp-block-heading {
	font-size: 24px;
	color: var(--uc-text);
	margin-bottom: 0.7em;
}

.widget-area ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.widget-area li { padding: 6px 0; border-bottom: 1px solid var(--uc-border); }

/* ==========================================================================
   11. Commentaires
   ========================================================================== */

.comments-area {
	max-width: var(--uc-narrow-width);
	margin: 3em auto 0;
	padding-bottom: 60px;
}

.comments-title,
.comment-reply-title { font-size: 26px; }

.comment-list { list-style: none; margin: 0; padding: 0; }
.comment-list .children { list-style: none; padding-left: 30px; }

.comment-body {
	padding: 1.5em 0;
	border-bottom: 1px solid var(--uc-border);
}

.comment-author { font-family: var(--uc-font-head); font-weight: 700; }
.comment-author img { border-radius: 50%; margin-right: 10px; vertical-align: middle; }
.comment-metadata { font-size: 0.8rem; color: var(--uc-gray); }
.comment-form label { display: block; font-family: var(--uc-font-head); font-size: 0.82rem; margin-bottom: 6px; }
.comment-form p { margin-bottom: 1em; }

/* ==========================================================================
   12. Pied de page
   ========================================================================== */

.site-footer {
	background-color: var(--uc-primary);
	color: var(--uc-light);
}

.uc-footer-inner {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: center;
	gap: 20px;
	padding: 25px var(--uc-header-gutter);
}

.uc-footer-col-2 { justify-self: center; }
.uc-footer-col-3 { justify-self: end; }

.site-footer p {
	margin: 0;
	color: var(--uc-light);
	font-family: var(--uc-font-head);
	font-size: 0.70588rem; /* 12px à 17px de racine, 10.9px sous 921px */
}

.site-footer a { color: var(--uc-white); }
.site-footer a:hover { color: var(--uc-black); }

.uc-footer-nav ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	list-style: none;
	margin: 0;
	padding: 0;
}

.uc-footer-nav a {
	display: block;
	color: var(--uc-white);
	font-family: var(--uc-font-head);
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 1.5em;
	padding: 0 0.5em;
	text-transform: uppercase;
}

.uc-footer-social {
	display: flex;
	align-items: center;
	gap: 12px;
}

.uc-footer-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--uc-black);
	width: 1.6em;
	height: 1.6em;
}

.uc-footer-social a:hover { color: var(--uc-white); }
.uc-footer-social svg { width: 1.1em; height: 1.1em; fill: currentColor; }

/* Zones de widgets du pied de page */

.uc-footer-widgets {
	background: var(--uc-black);
	color: var(--uc-light);
	padding: 60px 0;
}

.uc-footer-widgets .uc-container {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 40px;
}

.uc-footer-widgets .widget-title { color: var(--uc-white); }
.uc-footer-widgets a { color: var(--uc-light); }
.uc-footer-widgets li { border-bottom-color: rgba(255, 255, 255, 0.12); }

/* Retour en haut */

.uc-scroll-top {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 90;
	width: 42px;
	height: 42px;
	padding: 0;
	background: var(--uc-primary);
	border: 0;
	color: var(--uc-white);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.2s linear, visibility 0.2s linear;
}

.uc-scroll-top.is-visible { opacity: 1; visibility: visible; }
.uc-scroll-top:hover { background: var(--uc-primary-dark); }

/* ==========================================================================
   13. Compatibilité blocs Gutenberg / Spectra
   ========================================================================== */

.wp-block-group.has-background { padding: 2em; }

.wp-block-cover { min-height: 430px; }

.wp-block-columns { gap: 2em; }

.wp-block-separator {
	border-top: 1px solid var(--uc-border);
	max-width: 100px;
}

/* Séparateurs Spectra : filet rouge fin, respiration verticale.
   `!important` requis, Spectra écrit ces valeurs par bloc. */
.wp-block-uagb-separator {
	padding: 15px 0 !important;
}

.wp-block-uagb-separator__inner {
	border-top-width: 1px !important;
	border-top-color: var(--uc-primary) !important;
}

/* Titres des grilles d'articles Spectra. */
.uagb-post-grid h4 {
	padding-bottom: 1.5em !important;
}

.uagb-post-grid h4:hover,
.uagb-post-grid h4 a:hover {
	color: var(--uc-primary) !important;
}

.wp-block-latest-posts a,
.wp-block-latest-posts__post-title { color: var(--uc-primary); font-family: var(--uc-font-head); font-weight: 700; }

/* --- Carrousel d'articles Spectra ----------------------------------------
   Le site d'origine obtenait ce rendu par du CSS additionnel dans le
   personnalisateur ; c'est intégré ici pour que le thème soit autonome.

   1. Sans hauteur imposée, chaque diapositive suit le format de son image mise
      en avant : les cartes sont de hauteurs inégales (422, 356, 488 px…).
      Une hauteur d'écran les égalise, l'image étant recadrée par Spectra.
   2. Sans le retrait du padding, la carte ne touche pas le haut de la page :
      l'en-tête transparent surplombe alors une bande blanche au lieu de
      l'image, contrairement aux bannières d'articles.

   `!important` est nécessaire : Spectra écrit ces deux propriétés par bloc,
   depuis les réglages de l'éditeur. Ajuster la hauteur via --uc-carousel-height. */
.wp-block-uagb-post-carousel {
	padding: 0 !important;
}

.wp-block-uagb-post-carousel .slick-slide .uagb-post__inner-wrap {
	height: var(--uc-carousel-height, 100vh) !important;
}

/* 3. Sans cela, une bande de 28 px apparaît sous la diapositive : Spectra pose
      une marge basse de 20 px sur la carte, et son `display: inline-block`
      ajoute la gouttière de ligne de base (~8 px). Sur le site d'origine, le
      conteneur qui entoure le carrousel a un fond rouge, ce qui la rend
      invisible ; sur un fond clair elle se voit. On supprime l'écart plutôt
      que de le masquer, pour que le rendu ne dépende pas de la couleur du
      conteneur parent. */
.wp-block-uagb-post-carousel .slick-slide .uagb-post__inner-wrap {
	margin-bottom: 0 !important;
	vertical-align: top;
}

.has-uc-primary-color { color: var(--uc-primary) !important; }
.has-uc-primary-background-color { background-color: var(--uc-primary) !important; }
.has-uc-primary-dark-color { color: var(--uc-primary-dark) !important; }
.has-uc-primary-dark-background-color { background-color: var(--uc-primary-dark) !important; }
.has-uc-black-color { color: var(--uc-black) !important; }
.has-uc-black-background-color { background-color: var(--uc-black) !important; }
.has-uc-text-color { color: var(--uc-text) !important; }
.has-uc-text-background-color { background-color: var(--uc-text) !important; }
.has-uc-light-color { color: var(--uc-light) !important; }
.has-uc-light-background-color { background-color: var(--uc-light) !important; }
.has-uc-white-color { color: var(--uc-white) !important; }
.has-uc-white-background-color { background-color: var(--uc-white) !important; }

/* --- Compatibilité des contenus importés ---------------------------------
   Les blocs créés sous Astra (ou sous un thème de blocs) portent des classes
   qui référencent des palettes désormais absentes : `has-accent-color`,
   `has-base-2-background-color`, `has-ast-global-color-0-*`… Sans ces règles,
   la couleur choisie dans l'éditeur disparaît silencieusement (c'est le cas
   de la barre de recherche des pages « Articles » et « Communiqués »).
   On remappe donc ces anciens slugs sur la palette du thème. */

.has-accent-color            { color: var(--uc-primary) !important; }
.has-accent-background-color { background-color: var(--uc-primary) !important; }
.has-contrast-color          { color: var(--uc-text) !important; }
.has-contrast-background-color { background-color: var(--uc-text) !important; }
.has-base-color              { color: var(--uc-white) !important; }
.has-base-background-color   { background-color: var(--uc-white) !important; }
.has-base-2-color            { color: var(--uc-bg-alt) !important; }
.has-base-2-background-color { background-color: var(--uc-bg-alt) !important; }

.has-ast-global-color-0-color { color: var(--uc-primary) !important; }
.has-ast-global-color-0-background-color { background-color: var(--uc-primary) !important; }
.has-ast-global-color-1-color { color: var(--uc-primary-dark) !important; }
.has-ast-global-color-1-background-color { background-color: var(--uc-primary-dark) !important; }
.has-ast-global-color-2-color { color: var(--uc-black) !important; }
.has-ast-global-color-2-background-color { background-color: var(--uc-black) !important; }
.has-ast-global-color-3-color { color: var(--uc-text) !important; }
.has-ast-global-color-3-background-color { background-color: var(--uc-text) !important; }
.has-ast-global-color-4-color { color: var(--uc-light) !important; }
.has-ast-global-color-4-background-color { background-color: var(--uc-light) !important; }
.has-ast-global-color-5-color { color: var(--uc-white) !important; }
.has-ast-global-color-5-background-color { background-color: var(--uc-white) !important; }
.has-ast-global-color-7-color { color: var(--uc-gray) !important; }
.has-ast-global-color-7-background-color { background-color: var(--uc-gray) !important; }
.has-ast-global-color-8-color { color: var(--uc-bg-alt) !important; }
.has-ast-global-color-8-background-color { background-color: var(--uc-bg-alt) !important; }

/* Variables de préréglage correspondantes, pour les blocs qui les utilisent
   directement dans un attribut `style` plutôt que via une classe. */
:root {
	--wp--preset--color--accent: var(--uc-primary);
	--wp--preset--color--contrast: var(--uc-text);
	--wp--preset--color--base: var(--uc-white);
	--wp--preset--color--base-2: var(--uc-bg-alt);
	--ast-global-color-0: var(--uc-primary);
	--ast-global-color-1: var(--uc-primary-dark);
	--ast-global-color-2: var(--uc-black);
	--ast-global-color-3: var(--uc-text);
	--ast-global-color-4: var(--uc-light);
	--ast-global-color-5: var(--uc-white);
	--ast-global-color-7: var(--uc-gray);
	--ast-global-color-8: var(--uc-bg-alt);
}

/* ==========================================================================
   14. Responsive
   ========================================================================== */

/* --- Tablette et mobile : bascule de l'en-tête à 921 px, comme à l'origine --- */

@media (max-width: 921px) {
	html { font-size: 96.9%; }

	h1, .entry-content h1 { font-size: 48px; }
	h2, .entry-content h2 { font-size: 38px; }
	h3, .entry-content h3 { font-size: 30px; }
	h4, .entry-content h4 { font-size: 24px; }

	.uc-container,
	.uc-container--full { padding-left: 20px; padding-right: 20px; }

	.uc-nav-desktop { display: none; }
	.uc-menu-toggle { display: block; }

	.site-branding img,
	.site-branding .custom-logo {
		width: var(--uc-logo-width-tablet, 120px);
		max-width: var(--uc-logo-width-tablet, 120px);
	}

	/* La bannière reste plein écran ; le contenu y est centré, l'en-tête
	   superposé ne le chevauche donc pas malgré le faible padding. */
	.uc-entry-banner { padding: 20px; }

	/* Retrait latéral de l'article : 20 px de conteneur + 20 px d'article. */
	.uc-article-single { padding: 40px 20px 60px; }

	/* Le pied de page garde ses 3 colonnes sur tablette, avec un retrait accru. */
	.uc-footer-inner { padding: 25px 50px; }

	.uc-posts-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; }

	.uc-has-sidebar .uc-content-wrap { grid-template-columns: minmax(0, 1fr); gap: 40px; }

	.entry-content > .alignleft,
	.entry-content > .alignright { float: none; margin: 0 auto 1.5em; max-width: 100%; }
}

/* --- Mobile strict --- */

@media (max-width: 544px) {
	h1, .entry-content h1 { font-size: 36px; }
	h2, .entry-content h2 { font-size: 32px; }
	h3, .entry-content h3 { font-size: 28px; }

	.site-branding img,
	.site-branding .custom-logo {
		width: var(--uc-logo-width-mobile, 100px);
		max-width: var(--uc-logo-width-mobile, 100px);
	}

	.uc-entry-banner .entry-title { font-size: 2.05882rem; /* 35px à 17px de racine */ }

	.uc-container { padding-left: 8px; padding-right: 8px; }
	.uc-container--full { padding-left: 20px; padding-right: 20px; }

	.page-title, .uc-archive-title { font-size: 30px; }

	.uc-offcanvas nav a { font-size: 20px; }

	.uc-post-nav { flex-direction: column; }
	.uc-post-nav .uc-post-nav-next { text-align: left; }

	/* Pied de page : une colonne, comme à l'origine (3 colonnes conservées
	   jusqu'à 544 px, y compris sur tablette). */
	.uc-footer-inner {
		grid-template-columns: minmax(0, 1fr);
		justify-items: start;
		gap: 16px;
		padding: 75px 25px 60px;
	}

	.uc-footer-col-2,
	.uc-footer-col-3 { justify-self: start; }

	.uc-footer-col-1 { justify-self: stretch; }
	.uc-footer-col-1 p { text-align: center; }

	.uc-footer-nav ul { flex-direction: column; align-items: flex-start; }
	.uc-footer-nav a { padding-left: 0; }
}

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