/*
 * Mairéo — base commune à tous les blocs.
 *
 * Les valeurs (--cw-*) sont déclarées en ligne juste après cette feuille,
 * à partir du style choisi et de l'identité de la commune.
 * Aucune couleur ni police n'est écrite en dur ici ni dans les blocs.
 */

.cw-bloc,
.cw-bloc *,
.cw-bloc *::before,
.cw-bloc *::after {
	box-sizing: border-box;
}

.cw-bloc {
	font-family: var(--cw-police-texte);
	font-size: var(--cw-taille-texte);
	line-height: var(--cw-interligne-texte);
	color: var(--cw-texte);
}

/* Les sections et le titre de page occupent toute la largeur, même dans un thème qui centre le contenu. */
.cw-section,
.cw-titre-chapo {
	margin-block: 0;
}

.cw-bloc :is(h1, h2, h3, h4) {
	font-family: var(--cw-police-titres);
	font-weight: var(--cw-graisse-titres);
	line-height: var(--cw-interligne-titres);
	letter-spacing: var(--cw-interlettrage-titres);
	text-transform: var(--cw-casse-titres);
	color: inherit;
	text-wrap: balance;
}

.cw-bloc h1 { font-size: var(--cw-taille-h1); }
.cw-bloc h2 { font-size: var(--cw-taille-h2); }
.cw-bloc h3 { font-size: var(--cw-taille-h3); }
.cw-bloc h4 { font-size: var(--cw-taille-h4); }

.cw-bloc p {
	text-wrap: pretty;
}

.cw-bloc a {
	color: var(--cw-lien);
	text-decoration: none;
}

/* Le texte rédigé garde ses liens soulignés : sans cela, un lien ne se distingue que par sa couleur (RGAA 10.6). */
.cw-texte__corps a {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}

.cw-bloc a:hover {
	text-decoration-thickness: 2px;
}

.cw-bloc :focus-visible {
	outline: 3px solid var(--cw-focus);
	outline-offset: 2px;
}

.cw-bloc img {
	max-width: 100%;
	height: auto;
}

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

/* ---------- Composants partagés par plusieurs blocs ---------- */

.cw-bloc .cw-bouton,
.cw-affichage .cw-bouton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5em;
	min-height: 44px;
	padding: 0.6em 1.25em;
	border: 2px solid var(--cw-couleur-principale);
	border-radius: var(--cw-rayon-bouton);
	background: var(--cw-couleur-principale);
	color: var(--cw-couleur-principale-texte);
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
}

.cw-bloc .cw-bouton:hover,
.cw-affichage .cw-bouton:hover {
	background: var(--cw-texte);
	border-color: var(--cw-texte);
	color: var(--cw-fond);
}

.cw-bloc .cw-bouton--contour,
.cw-affichage .cw-bouton--contour {
	background: transparent;
	border-color: currentColor;
	color: var(--cw-texte);
}

.cw-section--ambiance-principale .cw-bouton--plein,
.cw-section--ambiance-sombre .cw-bouton--plein {
	background: var(--cw-fond);
	border-color: var(--cw-fond);
	color: var(--cw-texte-fond, #1d2125);
}

.cw-bloc .cw-icone {
	width: 1.5em;
	height: 1.5em;
	flex: none;
}

.cw-bloc__titre {
	margin: 0 0 calc(var(--cw-espace) * 1.25);
}

/* Surtitre facultatif d'un bloc : une petite ligne en couleur, au-dessus du titre. */
.cw-bloc__surtitre {
	display: block;
	margin-bottom: 0.4em;
	color: var(--cw-lien);
	font-family: var(--cw-police-texte);
	font-size: var(--cw-taille-petit);
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1.3;
	text-transform: none;
}

/* Pictogrammes posés dans une pastille ronde, teintée de la couleur du style. */
.cw-bloc :is(.cw-acces-rapides__icone, .cw-sous-pages__icone, .cw-sous-pages__categorie-icone, .cw-demarches__theme > .cw-icone, .cw-contact li > .cw-icone),
.cw-bloc .cw-documents:not(.cw-documents--compact) .cw-documents__icone,
.cw-documents:not(.cw-documents--compact) .cw-documents__icone {
	box-sizing: content-box;
	padding: 0.45em;
	border-radius: 50%;
	background: var(--cw-fond-pastille);
}

/* « Tout voir » : un bouton discret plutôt qu'un lien souligné. */
.cw-bloc :is(.cw-actualites__tout, .cw-agenda__tout, .cw-lieux__tout),
.cw-bloc .cw-actes-bloc__tout a {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	min-height: 2.5rem;
	padding: 0.4em 1em;
	border-radius: var(--cw-rayon-bouton);
	background: var(--cw-fond-pastille);
	color: var(--cw-lien);
	font-weight: 600;
	text-decoration: none;
}

.cw-bloc :is(.cw-actualites__tout, .cw-agenda__tout, .cw-lieux__tout):hover,
.cw-bloc .cw-actes-bloc__tout a:hover {
	background: color-mix(in srgb, var(--cw-fond-pastille) 78%, var(--cw-lien));
}

.cw-bloc .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
