/*
 * Common layout of the Elementor pages (recette 29/09/2026): one frame and one set of spacings for every
 * section, instead of the per-section values typed in Elementor.
 * Mockup (1440px): content 1360px wide, 40px side gutter. Tablet 24px, mobile 16px.
 */
:root { --apsh-gutter: 40px; --apsh-frame: 1360px; }
@media (max-width: 1024px) { :root { --apsh-gutter: 24px; } }
@media (max-width: 767px) { :root { --apsh-gutter: 16px; } }

/* Page sections (the first one is the hero band, whose mosaic touches the right edge: left alone). */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-boxed:not(:first-child),
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:not(:first-child) > .e-con-boxed {
	--padding-left: var(--apsh-gutter) !important;
	--padding-right: var(--apsh-gutter) !important;
	--content-width: var(--apsh-frame) !important;
}
/* A full-width section holding a boxed one: the gutter is on the boxed child only (it was doubled). */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:not(:first-child):has(> .e-con-boxed) { --padding-left: 0px !important; --padding-right: 0px !important; }

/* Hero band (first section): text on the 40px gutter like the other sections; the mosaic keeps touching the
   right edge on desktop. On tablet/mobile the whole hero sits on the gutter with the same top spacing on
   every page, and its buttons wrap as whole buttons instead of squeezing their labels. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-con-boxed { --padding-left: var(--apsh-gutter) !important; }
@media (max-width: 1024px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child { --padding-top: 48px !important; --padding-left: 0px !important; --padding-right: 0px !important; }
	/* The mosaic stays on the right edge of the screen; only the text keeps the right gutter. */
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-con-boxed { --padding-right: 0px !important; --row-gap: 32px !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-grid :is(.e-con-inner > .e-con, > .e-con):not(:has(.elementor-widget-image)) { --padding-right: var(--apsh-gutter) !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .elementor-widget-heading { padding-top: 0 !important; margin-top: 0 !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-atomic-element:has(> .elementor-widget-button) { flex-wrap: wrap; padding: 0; gap: 12px 24px; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-atomic-element > .elementor-widget-button { flex: 0 1 auto; max-width: 100%; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-atomic-element .elementor-button { white-space: nowrap; }
}
@media (max-width: 767px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child { --padding-top: 40px !important; }
}
/* Tablet, text | mosaic side by side: the mosaic fills the band height (top and bottom edges), the 48px
   spacing moves onto the text column. */
@media (min-width: 768px) and (max-width: 1024px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child:has(.elementor-widget-image) { --padding-top: 0px !important; --padding-bottom: 0px !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child:has(.elementor-widget-image) .e-grid :is(.e-con-inner > .e-con, > .e-con):not(:has(.elementor-widget-image)) { --padding-top: 48px !important; --padding-bottom: 48px !important; justify-content: center; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child:has(.elementor-widget-image) .e-grid :is(.e-con-inner > .e-con, > .e-con):has(.elementor-widget-image) { align-self: stretch; position: relative; min-height: 220px; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child:has(.elementor-widget-image) .e-grid :is(.e-con-inner > .e-con, > .e-con) > .elementor-widget-image:only-child { position: absolute; inset: 0; width: auto !important; max-width: none !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child:has(.elementor-widget-image) .e-grid :is(.e-con-inner > .e-con, > .e-con) > .elementor-widget-image:only-child img { width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: left center; }
}

/* Vertical rhythm of the sections on tablet and mobile: one spacing for all (values typed per section
   ranged from 20 to 60px). Desktop keeps the mockup values. */
@media (max-width: 1024px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con:not(:first-child) { --padding-top: 40px !important; --padding-bottom: 40px !important; }
}
@media (max-width: 767px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con:not(:first-child) { --padding-top: 28px !important; --padding-bottom: 28px !important; }
}

/* Full-width bands (hero, image | text bands): beyond 1440px (zoomed out) the content stays in a centred
   1440px frame while the background keeps the full width. */
@media (min-width: 1441px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full {
		--padding-left: calc((100% - 1440px) / 2) !important;
		--padding-right: calc((100% - 1440px) / 2) !important;
	}
	/* ...except on the side where the picture touches the screen edge (mockup): the right side of the hero
	   mosaic, the left side of the image | text bands. */
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child { --padding-right: 0px !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-con-boxed { --content-width: 100% !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:not(:first-child) { --padding-left: 0px !important; }
}

/* Map band "39 établissements et services" (home #2): the motif column reaches the right edge of the
   screen, as in the mockup (it stopped on the 40px gutter). 100cqw = band width inside its gutters. */
:is(.elementor-element-f80ff2b, .elementor-element-908274e, .elementor-element-512512e) { container-type: inline-size; }
:is(.elementor-element-af4e139, .elementor-element-9cf82ab, .elementor-element-729f046) { --width: calc(50% + 50cqw + var(--apsh-gutter)) !important; max-width: none !important; }
@media (max-width: 1024px) { :is(.elementor-element-bdf3650, .elementor-element-55a38f2, .elementor-element-9213c62) { --padding-right: var(--apsh-gutter) !important; } }

/* Cards (title, text, short rule, link): the text takes the free height so the rule and the link line up
   at the bottom of every card of a row, whatever the text length. */
.e-con:has(> hr.e-divider-base) > :has(+ hr.e-divider-base) { flex-grow: 1; }

/* Header (template #11) at the mockup size: no gap under the top bar, 40px gutter, 128px white band,
   search + donation on the first line and menu on the second, right-aligned on the 1400px edge. */
.elementor-11 .elementor-element-dd2a7b2 { --gap: 0px !important; --row-gap: 0px !important; }
.elementor-11 .elementor-element-6f19191,
.elementor-11 .elementor-element-a077b8b { --padding-left: var(--apsh-gutter) !important; --padding-right: var(--apsh-gutter) !important; }
.elementor-11 .elementor-element-fc17903 { --padding-left: 0px !important; --padding-right: 0px !important; }
.elementor-11 .elementor-element-a077b8b { --min-height: 128px !important; }
.elementor-11 .elementor-element-a077b8b > .e-con-inner { align-items: center; grid-template-columns: auto 1fr !important; }
.elementor-11 .elementor-element-33de27a,
.elementor-11 .elementor-element-0be18b0,
.elementor-11 .elementor-element-8523743 { --padding-top: 0px !important; --padding-right: 0px !important; --padding-bottom: 0px !important; --padding-left: 0px !important; }
.elementor-11 .elementor-element-33de27a { --gap: 14px !important; --row-gap: 14px !important; }
/* Last item of each menu ends on the right edge of the frame, like the donation button. */
.elementor-11 ul.hfe-nav-menu > li:last-child { padding-right: 0 !important; }
.elementor-11 ul.hfe-nav-menu > li:last-child > a.hfe-menu-item { padding-right: 0 !important; }

/* Small desktops (1025-1279px): the header keeps one line per row (top bar, search + donation, menu). */
.elementor-11 .elementor-element-0be18b0 .elementor-button { white-space: nowrap; }
@media (min-width: 1025px) and (max-width: 1279px) {
	.elementor-11 .elementor-element-d2e5b58 { --gap: 12px !important; }
	.elementor-11 .elementor-element-5580946 img { width: 124px; height: auto; }
	.elementor-11 .elementor-element-10a2d2a img { width: 160px; height: auto; }
	.elementor-11 .elementor-element-cdc8e7b, .elementor-11 .elementor-element-cdc8e7b form { width: 260px !important; }
	.elementor-11 .elementor-element-fc17903 ul.hfe-nav-menu > li:not(:first-child) { padding-left: 6px !important; padding-right: 6px !important; }
	.elementor-11 .elementor-element-fc17903 ul.hfe-nav-menu > li:not(:first-child) a.hfe-menu-item { font-size: 14px !important; padding-left: 8px !important; padding-right: 8px !important; }
	.elementor-11 .elementor-element-8523743 ul.hfe-nav-menu > li:not(:first-child) a.hfe-menu-item { font-size: 15px !important; padding-left: 9px !important; padding-right: 9px !important; }
}
@media (min-width: 1025px) and (max-width: 1120px) {
	.elementor-11 .elementor-element-fc17903 ul.hfe-nav-menu > li:not(:first-child) { padding-left: 2px !important; padding-right: 2px !important; }
	.elementor-11 .elementor-element-fc17903 ul.hfe-nav-menu > li:not(:first-child) a.hfe-menu-item { font-size: 13px !important; }
}

/* Main menu: sub-menus get more room and a wider inner margin (recette). */
header .hfe-nav-menu .sub-menu { min-width: 260px; }
header .hfe-nav-menu .sub-menu a.hfe-sub-menu-item { padding-left: 40px; padding-right: 20px; }

/* Footer (template #254): 40px gutter, mockup columns (APSH34 | Contact | Liens utiles at 40 / 570 / 1092px),
   legal links grouped on the right. */
.elementor-254 .elementor-element-a46b3f5,
.elementor-254 .elementor-element-68f9419 { --padding-left: var(--apsh-gutter) !important; --padding-right: var(--apsh-gutter) !important; --content-width: var(--apsh-frame) !important; }
.elementor-254 .elementor-element-8ba28c3 > .e-con { --padding-top: 0px !important; --padding-right: 0px !important; --padding-bottom: 0px !important; --padding-left: 0px !important; }
@media (min-width: 1025px) {
	.elementor-254 .elementor-element-8ba28c3 { --e-con-grid-template-columns: minmax(0, 510fr) minmax(0, 502fr) minmax(0, 308fr) !important; }
	.elementor-254 .elementor-element-337b226 { --e-con-grid-template-columns: repeat(3, auto) !important; justify-content: end; --column-gap: 90px !important; }
}

/* "Image | text" blocks (class apsh-media-row, set in Elementor > Advanced > CSS classes): in the mockup
   the image is 580px wide, 52px from the text, and the text takes the rest of the 1360px frame. */
@media (min-width: 1025px) {
	.apsh-media-row { --gap: 52px !important; --column-gap: 52px !important; }
	.apsh-media-row.e-grid { --e-con-grid-template-columns: minmax(0, 1fr) 580px !important; }
	.apsh-media-row.e-grid:has(> .e-con-inner > .e-con:first-child > .elementor-widget-image:only-child),
	.apsh-media-row.e-grid:has(> .e-con:first-child > .elementor-widget-image:only-child) { --e-con-grid-template-columns: 580px minmax(0, 1fr) !important; }
	.apsh-media-row.e-flex { flex-wrap: nowrap; }
	.apsh-media-row.e-flex > .e-con { flex: 1 1 0; --width: auto !important; }
	.apsh-media-row.e-flex > .e-con:has(> .elementor-widget-image:only-child) { flex: 0 0 580px; --width: 580px !important; }
	.apsh-media-row .e-con > .elementor-widget-image:only-child,
	.apsh-media-row .e-con > .elementor-widget-image:only-child img { width: 100%; }
}

/* Votre parcours > "Comment cette page vous aide ?" (#704): mockup sizes - 32px title, 2 columns 52px apart,
   rows 28px apart, 24px card titles 12px above their text. */
.elementor-element-8f3e3bd .elementor-heading-title { font-size: 32px !important; line-height: 1.2; }
.elementor-element-0e86f57 > .e-con-inner { --gap: 50px !important; --row-gap: 50px !important; }
.elementor-element-87d5761 { --gap: 28px 52px !important; --row-gap: 28px !important; --column-gap: 52px !important; }
.elementor-element-fa76f37, .elementor-element-ab4fc11 { --gap: 28px !important; --row-gap: 28px !important; }
.elementor-element-87d5761 .e-con .e-con { --gap: 12px !important; --row-gap: 12px !important; }
.elementor-element-87d5761 .e-con .e-con > .elementor-widget-text-editor:first-child { font-size: 24px !important; }
@media (max-width: 767px) {
	.elementor-element-8f3e3bd .elementor-heading-title { font-size: 24px !important; }
	.elementor-element-87d5761 .e-con .e-con > .elementor-widget-text-editor:first-child { font-size: 20px !important; }
}

/* Space between a section header (title + intro) and its grid of cards: about 48px in the mockup, 20px
   (Elementor default gap) in the pages. The margin adds to the 20px gap: 48 / 40 / 32px in total. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con.e-flex > .e-con-inner > :is(.elementor-widget, .e-con) + .e-con.e-grid { margin-top: 28px; }
@media (max-width: 1024px) { :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con.e-flex > .e-con-inner > :is(.elementor-widget, .e-con) + .e-con.e-grid { margin-top: 20px; } }
@media (max-width: 767px) { :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con.e-flex > .e-con-inner > :is(.elementor-widget, .e-con) + .e-con.e-grid { margin-top: 12px; } }

/* Picture cards (image on top, then a content box): content starts right under a 216px image (mockup),
   so the tags and titles of a row line up; the link stays at the bottom. */
.e-grid > .e-con:has(> .elementor-widget-image:first-child + .e-con) { justify-content: flex-start !important; }
.e-grid > .e-con:has(> .elementor-widget-image:first-child + .e-con) > .elementor-widget-image img { width: 100%; height: 216px; object-fit: cover; }
.e-grid > .e-con:has(> .elementor-widget-image:first-child + .e-con) > .e-con { flex-grow: 1; }
.e-grid > .e-con:has(> .elementor-widget-image:first-child + .e-con) > .e-con > .elementor-widget-button:last-child { margin-top: auto; }

/* Votre parcours > "Vous êtes..." (#704): 4 cards 24px apart (mockup), not 30px. */
@media (min-width: 1025px) { .elementor-element-b588632 { --gap: 25px 24px !important; --column-gap: 24px !important; } }

/* Nos prestations > list of needs (#779): mockup = 1167px list, 437px left column (tags + title) 30px from
   the text, more space under the intro, 30px-high tags 8px apart. */
.elementor-779 .elementor-element-b8dc684 { --content-width: 1167px !important; margin-top: 56px; }
@media (min-width: 1025px) {
	.elementor-779 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con { --gap: 30px !important; --column-gap: 30px !important; }
	.elementor-779 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con > .e-con:first-child { --width: 437px !important; flex: 0 0 437px; }
	.elementor-779 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con > .e-con:last-child { flex: 1 1 0; --width: auto !important; }
}
.elementor-element-b8dc684 .e-con:has(> .elementor-widget-heading > div.elementor-heading-title) { --gap: 8px !important; --row-gap: 8px !important; --column-gap: 8px !important; }
.elementor-element-b8dc684 .elementor-widget-heading > div.elementor-heading-title { line-height: 20px; }
@media (max-width: 1024px) { .elementor-element-b8dc684 { margin-top: 24px; } }
/* Footer on tablet: APSH34 | Contact, then the useful links across the full width (the third column was
   squeezed to 40px). */
@media (min-width: 768px) and (max-width: 1024px) {
	.elementor-254 .elementor-element-8ba28c3 { --e-con-grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; --row-gap: 32px !important; }
	.elementor-254 .elementor-element-d1cd52a { grid-column: 1 / -1; }
	.elementor-254 .elementor-element-91d5002 { --e-con-grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
	.elementor-254 .elementor-element-7ac58b5 { --e-con-grid-template-columns: minmax(0, 1fr) !important; --row-gap: 8px !important; }
	.elementor-254 .elementor-element-337b226 { --e-con-grid-template-columns: repeat(3, auto) !important; justify-content: start; --column-gap: 40px !important; }
}
@media (max-width: 767px) {
	.elementor-254 .elementor-element-91d5002 { --e-con-grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Titles: line-height 1.2 as in the mockup (56px titles on 68px lines), the widgets used 1.0. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) :is(h1, h2).elementor-heading-title { line-height: 1.2 !important; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) h3.elementor-heading-title { line-height: 1.333 !important; }

/* Home hero (#2): its own mockup (470px band, 783px collage), the text starts 90px from the edge. */
@media (min-width: 1025px) { .home :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con:first-child { --padding-left: 50px !important; } }

/* Page hero (text | mosaic), both variants (boxed grid or full grid). Mockup: the text sets the height
   (276px at least, 48px above and below the text) and the mosaic follows that height, keeping its
   proportions, flush with the right edge (417x276 on a short hero). The picture used to force 349px. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-con-full.e-grid { --padding-left: var(--apsh-gutter) !important; }
@media (min-width: 1025px) {
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid:has(.elementor-widget-image:only-child) { --min-height: 276px !important; --e-con-grid-template-columns: minmax(0, 1fr) 414px !important; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con:not(:has(> .elementor-widget-image:only-child)) > *,
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con:not(:has(> .elementor-widget-image:only-child)) > * { max-width: 840px; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con:has(> .elementor-widget-image:only-child),
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con:has(> .elementor-widget-image:only-child) { position: relative; align-self: stretch; min-height: 276px; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con > .elementor-widget-image:only-child,
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con > .elementor-widget-image:only-child { position: absolute; top: 0; right: 0 !important; bottom: 0; left: auto !important; width: auto !important; max-width: none !important; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con > .elementor-widget-image:only-child img,
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con > .elementor-widget-image:only-child img { height: 100%; width: auto; max-width: calc(100vw - 72px - min(840px, 100vw - 454px)); object-fit: cover; object-position: left center; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con:not(:has(> .elementor-widget-image:only-child)),
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con:not(:has(> .elementor-widget-image:only-child)) { --padding-top: 48px !important; --padding-bottom: 48px !important; justify-content: center; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con-inner > .e-con:not(:has(> .elementor-widget-image:only-child)) > .elementor-widget-heading:first-child,
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-grid > .e-con:not(:has(> .elementor-widget-image:only-child)) > .elementor-widget-heading:first-child { padding-top: 0 !important; margin-top: 0 !important; }
}
@media (max-width: 1024px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child > .e-con-full.e-grid { --padding-right: 0px !important; --row-gap: 32px !important; }
}
@media (max-width: 767px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con:first-child h1.elementor-heading-title { font-size: 32px !important; }
}

/* Nothing wider than its column: widgets given a fixed width (651px quote image on the home page, 680px
   glossary cards) were cut off on tablet and mobile. Loop items take the width of their grid cell. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .elementor-widget { max-width: 100%; }
.e-loop-item > .e-con-boxed { --content-width: 100% !important; }
.e-loop-item > .e-con { --width: 100% !important; max-width: 100%; }
@media (max-width: 1024px) {
	.elementor-element-33e2b0f { --e-con-grid-template-columns: minmax(0, 1fr) !important; }
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-con .e-con { max-width: 100%; }
}
.e-loop-item { max-width: 100%; }
/* Glossary full names are long texts, not pills: they wrap (the pill rule of apsh-pages.css keeps them on one line). */
.elementor-1161 .elementor-widget-post-info li { white-space: normal; }
/* Glossary cards (loop #1161): 2 equal columns 42px apart (mockup), not 471 + 680px. */
.elementor-widget-loop-grid:has(.elementor-1161) { --grid-column-gap: 42px !important; }
@media (min-width: 768px) { .elementor-widget-loop-grid:has(.elementor-1161) .elementor-loop-container { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }

/* Hero buttons start on the text edge (the atomic block around them had a 10px padding). */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con:first-child .e-atomic-element:has(> .elementor-widget-button) { padding: 0 !important; }

/* "L'APSH34 en chiffres" (home, Qui sommes-nous): the 4 figures form a 1048px band centred in the frame. */
@media (min-width: 1025px) {
	:is(.elementor-element-24ec8ba, .elementor-element-62b5d90) > .e-con-inner > .e-con { max-width: 1048px; margin-inline: auto; }
}

/* Cards of a grid (a bordered box with title, text, short rule, link; not the picture cards): one inner
   spacing for all, as in the mockup - 20px padding, 12px between the blocks, the short rule 16px under
   the text and 28px above the link, texts across the whole card. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) { --padding-top: 20px !important; --padding-right: 20px !important; --padding-bottom: 20px !important; --padding-left: 20px !important; --gap: 12px !important; --row-gap: 12px !important; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > hr.e-divider-base { margin-block: 4px 16px !important; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget:first-child { padding-bottom: 0 !important; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget-text-editor { width: 100% !important; max-width: 100%; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget-text-editor { line-height: 1.45; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
@media (max-width: 767px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) { --padding-top: 20px !important; --padding-right: 20px !important; --padding-bottom: 20px !important; --padding-left: 20px !important; }
}

/* Coloured call-to-action banner (class apsh-cta: text | decorative motif). Mockup: text 70px from the
   left edge, 72px from the top, 56px under the buttons; the title stays on one line when it fits (up to
   1000px) and the text reads on about 760px. The motif column is as wide as the motif. */
.apsh-cta > .e-con:first-child { flex: 1 1 auto; --width: auto !important; }
.apsh-cta > .e-con:last-child:has(> .elementor-widget-image:only-child) { flex: 0 0 auto; --width: auto !important; }
.apsh-cta .elementor-widget-heading { max-width: min(840px, 100%) !important; }
.apsh-cta .elementor-widget-text-editor { max-width: min(800px, 100%) !important; }
@media (min-width: 1025px) {
	.apsh-cta > .e-con:first-child { --padding-top: 40px !important; --padding-right: 24px !important; --padding-bottom: 40px !important; --padding-left: 70px !important; min-height: 362px; justify-content: center; }
	.apsh-cta .e-con:has(> .elementor-widget-button) { margin-top: 10px; }
}
@media (max-width: 1024px) {
	.apsh-cta > .e-con:first-child { --padding-top: 40px !important; --padding-right: 32px !important; --padding-bottom: 40px !important; --padding-left: 32px !important; }
}
@media (max-width: 767px) {
	.apsh-cta > .e-con:first-child { --padding-top: 32px !important; --padding-right: 20px !important; --padding-bottom: 32px !important; --padding-left: 20px !important; }
	.apsh-cta > .e-con:last-child:has(> .elementor-widget-image:only-child) { display: none; }
}

/* News / event card (loop item #589, home, Actualités, Nos prestations, articles): tag on the left and date
   16px after it on one line, 24px inner spacing, 18px excerpt, "Découvrir" at the bottom of every card;
   cards 24px apart (mockup). */
.elementor-589 > .e-con, .elementor-589 > .e-con > .e-con-inner, .elementor-589 .elementor-element-f32a2a3 { height: 100%; }
.elementor-589 .elementor-element-169817c { flex-grow: 1; --padding-top: 24px !important; --padding-right: 24px !important; --padding-bottom: 24px !important; --padding-left: 24px !important; --gap: 16px !important; --row-gap: 16px !important; }
.elementor-589 .elementor-element-9121b39 { display: flex !important; flex-wrap: wrap; align-items: center; gap: 8px 16px !important; }
.elementor-589 .elementor-element-9121b39 > .elementor-widget { flex: 0 0 auto; width: auto; margin: 0 !important; }
.elementor-589 .elementor-element-9121b39 .elementor-heading-title { white-space: nowrap; line-height: 20px; }
.elementor-589 .elementor-element-cafa9e8 { margin-top: auto; }
.elementor-widget-loop-grid:has(.elementor-589) { --grid-column-gap: 24px !important; --grid-row-gap: 24px !important; }
@media (max-width: 767px) { .elementor-589 .elementor-element-6f01e1c { font-size: 16px; line-height: 24px; } }

/* Portrait card (loop item #1755): 30px tag instead of 47px, 24px inner spacing, link at the bottom. */
.elementor-1755 > .e-con, .elementor-1755 .elementor-element-8a3b68d { height: 100%; }
.elementor-1755 .elementor-element-ea01696 { flex-grow: 1; --padding-top: 24px !important; --padding-right: 24px !important; --padding-bottom: 24px !important; --padding-left: 24px !important; --gap: 16px !important; --row-gap: 16px !important; }
.elementor-1755 .elementor-element-45bf9f8 { --padding-top: 5px !important; --padding-bottom: 5px !important; --padding-left: 12px !important; --padding-right: 12px !important; }
.elementor-1755 .elementor-element-e1da9da { margin-top: auto; }

/* Directory card (loop item #940): the title follows the tags (24px) instead of floating in the middle,
   the buttons stay at the bottom; tags 8px apart; cards 40px apart (mockup). */
.elementor-940 > .e-con, .elementor-940 > .e-con > .e-con-inner { height: 100%; }
.elementor-940 > .e-con > .e-con-inner { justify-content: flex-start !important; --gap: 24px !important; --row-gap: 24px !important; }
.elementor-940 .elementor-element-4eba453 { --gap: 8px !important; --row-gap: 8px !important; --column-gap: 8px !important; }
.elementor-940 .elementor-element-3c2b07e { margin-top: auto; }
.elementor-widget-loop-grid:has(.elementor-940) { --grid-column-gap: 40px !important; --grid-row-gap: 40px !important; }
@media (max-width: 1024px) { .elementor-widget-loop-grid:has(.elementor-940) { --grid-column-gap: 24px !important; --grid-row-gap: 24px !important; } }

/* Single templates - article #612, portrait #1852, fiche #1214, antenne #1300: content + sidebar as in the
   mockups (964px content, 352px sidebar 44px apart, sidebar cards 28px apart). */
@media (min-width: 1025px) {
	:is(.elementor-element-48b755a, .elementor-element-a5b428a, .elementor-element-6b81885, .elementor-element-135e7de) > .e-con-inner { --gap: 44px !important; --column-gap: 44px !important; flex-wrap: nowrap; }
	:is(.elementor-element-48b755a, .elementor-element-a5b428a, .elementor-element-6b81885, .elementor-element-135e7de) > .e-con-inner > .e-con:first-child { flex: 1 1 0; --width: auto !important; }
	:is(.elementor-element-48b755a, .elementor-element-a5b428a, .elementor-element-6b81885, .elementor-element-135e7de) > .e-con-inner > .e-con:last-child { flex: 0 0 352px; --width: 352px !important; --gap: 28px !important; --row-gap: 28px !important; }
}
/* Sidebar card links read from the left, like the text above them. */
:is(.elementor-element-7758fe7, .elementor-element-01e9894, .elementor-element-708b852, .elementor-element-a21e10d) .elementor-button { justify-content: flex-start; text-align: left; }
:is(.elementor-element-7758fe7, .elementor-element-01e9894, .elementor-element-708b852, .elementor-element-a21e10d) .elementor-widget-button { text-align: left; }

/* Centred heroes of the article / portrait / antenne templates: 40px gutter, text centred on the page, the
   back icon on the right edge of the frame, level with the tags. */
:is(.elementor-element-3670e08, .elementor-element-3273f46, .elementor-element-65d0d37) { --padding-left: var(--apsh-gutter) !important; --padding-right: var(--apsh-gutter) !important; }
:is(.elementor-element-72e6f12, .elementor-element-c6ef1e3, .elementor-element-11892a3) { --padding-left: 0px !important; --padding-right: 0px !important; }
:is(.elementor-element-72e6f12, .elementor-element-c6ef1e3, .elementor-element-11892a3) > .e-con-inner { position: relative; justify-content: center; }
:is(.elementor-element-415aa5a, .elementor-element-7181edb) { position: absolute !important; top: 0; right: 0; }

/* Timeline (Qui sommes-nous "Une histoire", Organisation "Un réseau de partenaires", Nos engagements
   "Organisation responsable"): cards column 542px wide on the right edge, cards 24px apart, 24px card
   title 14px above a 16px text (mockup). */
@media (min-width: 1025px) {
	:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c, .elementor-element-829f920) { flex-wrap: nowrap; --gap: 80px !important; --column-gap: 80px !important; }
	:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c, .elementor-element-829f920) > .e-con:first-child { flex: 1 1 0; --width: auto !important; }
	:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c, .elementor-element-829f920) > .e-con:last-child { flex: 0 0 542px; --width: 542px !important; }
}
:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child { --gap: 24px !important; --row-gap: 24px !important; }
:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con { --gap: 10px !important; --row-gap: 10px !important; --padding-top: 18px !important; --padding-bottom: 20px !important; }
:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con > .elementor-widget-text-editor:first-child { font-size: 24px !important; line-height: 28px; }
:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con > .elementor-widget-text-editor:not(:first-child) { font-size: 20px !important; line-height: 28px; font-weight: 400 !important; }
.elementor-element-d0cf06c > .e-con:last-child { --gap: 30px !important; --row-gap: 30px !important; }
@media (max-width: 767px) { :is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con > .elementor-widget-text-editor:not(:first-child) { font-size: 18px !important; } }
:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con p { margin-bottom: 0; }
@media (max-width: 767px) {
	:is(.elementor-element-42d2b8e, .elementor-element-4f8c6bc, .elementor-element-d0cf06c) > .e-con:last-child > .e-con > .elementor-widget-text-editor:first-child { font-size: 20px !important; }
}

/* Values cards (Qui sommes-nous "Même humanité", Nos engagements "Comité éthique"): title 10px above the
   text, 16px text (14px on Nos engagements), as in the mockup. */
:is(.elementor-element-d1119e2, .elementor-element-0da1e3f) > .e-con { --gap: 10px !important; --row-gap: 10px !important; }
:is(.elementor-element-d1119e2, .elementor-element-0da1e3f) > .e-con p { margin-bottom: 0; }
.elementor-element-d1119e2 > .e-con > .elementor-widget-text-editor:not(:first-child) { font-size: 16px !important; line-height: 22px; font-weight: 400 !important; }
.elementor-element-0da1e3f > .e-con > .elementor-widget-text-editor:not(:first-child) { font-size: 16px !important; line-height: 22px; font-weight: 400 !important; }

/* Info cards of a grid (tag, title, text - Accessibilité, Adhérer, Mécène, Soutenez...): 24px on every side
   instead of 40/20/20/40, text lines at 1.3 (mockup). */
body:not(.single-etablissement) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:not(.elementor-element-5327cf0, :is(.elementor-element-188366f, .elementor-element-783739a) > .e-con):has(> .elementor-widget-heading:first-child):not(:has(> hr.e-divider-base)):not(:has(> .elementor-widget-image)):not(:has(> .elementor-widget-heading :is(h1, h2))) { --padding-top: 24px !important; --padding-right: 24px !important; --padding-bottom: 36px !important; --padding-left: 24px !important; }
body:not(.single-etablissement) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:not(.elementor-element-5327cf0, :is(.elementor-element-188366f, .elementor-element-783739a) > .e-con):has(> .elementor-widget-heading:first-child):not(:has(> hr.e-divider-base)):not(:has(> .elementor-widget-image)):not(:has(> .elementor-widget-heading :is(h1, h2))) > .elementor-widget-text-editor { line-height: 1.1 !important; }
body:not(.single-etablissement) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:not(.elementor-element-5327cf0, :is(.elementor-element-188366f, .elementor-element-783739a) > .e-con):has(> .elementor-widget-heading:first-child):not(:has(> hr.e-divider-base)):not(:has(> .elementor-widget-image)):not(:has(> .elementor-widget-heading :is(h1, h2))) p:last-child { margin-bottom: 0; }
@media (max-width: 767px) {
	body:not(.single-etablissement) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:not(.elementor-element-5327cf0, :is(.elementor-element-188366f, .elementor-element-783739a) > .e-con):has(> .elementor-widget-heading:first-child):not(:has(> hr.e-divider-base)):not(:has(> .elementor-widget-image)):not(:has(> .elementor-widget-heading :is(h1, h2))) { --padding-top: 20px !important; --padding-right: 20px !important; --padding-bottom: 20px !important; --padding-left: 20px !important; }
}
@media (min-width: 1025px) {
	.elementor-element-7456df1 { --gap: 55px 30px !important; --row-gap: 55px !important; --column-gap: 30px !important; }
	.elementor-element-39cf943 { --gap: 45px !important; --row-gap: 45px !important; --column-gap: 45px !important; }
	.elementor-element-6169625 { --gap: 32px 41px !important; --row-gap: 32px !important; --column-gap: 41px !important; margin-top: 0 !important; }
}
/* Info cards without a tag (the title comes first): 40px above the title in the mockups. */
@media (min-width: 768px) {
	body:not(.single-etablissement) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:not(.elementor-element-5327cf0, :is(.elementor-element-188366f, .elementor-element-783739a) > .e-con):has(> .elementor-widget-heading:first-child h3):not(:has(> hr.e-divider-base)):not(:has(> .elementor-widget-image)) { --padding-top: 40px !important; }
}
/* Devenir mécène: 940px intro centred under the title (mockup). */
.elementor-element-f74399e { max-width: 940px; margin-inline: auto; }
/* Presse: the form box fills the frame, 10px tighter title/intro and label/field, third resource card text
   on 2 lines; the card links get a 44px touch area without moving. */
.elementor-element-05e4842 { flex: 1 1 0; }
.elementor-element-adbf870 { margin-top: -10px; }
.elementor-element-d6800b7 { margin-top: -8px; }
.elementor-element-e3ed089 > .e-con { --padding-right: 16px !important; }
.e-grid > .e-con:has(> hr.e-divider-base) .elementor-widget-button .elementor-button { padding-block: 14px !important; margin-block: -14px; }
/* Soutenez: support cards text at 20px, title 21px above it (mockup). */
.elementor-element-80721bf > .e-con { --gap: 12px !important; --row-gap: 12px !important; }
.elementor-element-80721bf > .e-con > .elementor-widget-button { margin-top: auto; padding-top: 15px; }
.elementor-element-80721bf > .e-con > .elementor-widget-text-editor { font-size: 20px !important; line-height: 1.2 !important; }
@media (max-width: 767px) { .elementor-element-80721bf > .e-con > .elementor-widget-text-editor { font-size: 16px !important; } }

/* "À consulter aussi" band (Nos prestations, family pages, map): 198px high, 60px buttons 36px apart
   (mockup); on mobile the buttons line up on the left under the title. */
:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) .elementor-button { padding: 14px 28px !important; }
:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) .e-con:has(> .elementor-widget-button) { --gap: 36px !important; --column-gap: 36px !important; }
@media (min-width: 1025px) {
	:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) { --padding-top: 69px !important; --padding-bottom: 69px !important; }
}
@media (max-width: 767px) {
	:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) .e-con:has(> .elementor-widget-button) { align-items: flex-start !important; --gap: 12px !important; --row-gap: 12px !important; }
	:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) .elementor-widget-button { align-self: flex-start; text-align: left; }
	:is(.elementor-element-667b1ea, .elementor-element-3cf1d35, .elementor-element-26f612d, .elementor-element-cb60b3f, .elementor-element-3723ff2, .elementor-element-2dd7a6e, .elementor-element-00d6f8e) .elementor-button { padding: 12px 24px !important; }
}

/* Reading lists centred on 1010px (mockup): FAQ, Avis du comité éthique; the FAQ stays in one column on
   tablet (2 columns made the questions wrap on 3 lines). */
:is(.elementor-element-274ff4e, .elementor-element-b09f452, .elementor-element-b1811cc) { --content-width: 1010px !important; }
@media (max-width: 1024px) {
	.elementor-widget-loop-grid:has(.elementor-2034) .elementor-loop-container { grid-template-columns: minmax(0, 1fr) !important; }
}

/* Forms (atomic Elementor forms - Contact, Presse): fields on the card's text edge, 48px fields and button,
   86px message box (mockup); the info card and the form stack under 1025px. */
.e-form-base { padding-left: 0 !important; padding-right: 0 !important; }
.e-form-base .e-form-input-base, .e-form-base select { min-height: 48px; font-size: 16px; }
.e-form-base textarea { height: 86px !important; min-height: 86px !important; }
.e-form-base :is(.e-form-submit, .e-form-submit-button-base) { min-height: 48px !important; font-size: 16px; }
@media (min-width: 1025px) {
	.elementor-element-f4a1bce > .e-con-inner > .e-con:first-child:not(:has(form)) { --width: 426px !important; flex: 0 0 426px; }
}
@media (max-width: 1024px) {
	.elementor-element-f4a1bce > .e-con-inner { flex-direction: column !important; }
	.elementor-element-f4a1bce > .e-con-inner > .e-con { --width: 100% !important; width: 100%; }
}

/* Search / filter boxes (Actualités and directory filter .actu-filter-box, map .apsh-search-box): mockup
   sizes - 40px inner padding, 20px intro, 16px bold labels, 48px fields with 16px text 24px apart, 50px
   button. */
:is(.actu-filter-box, .apsh-search-box) { padding: 40px !important; }
:is(.actu-filter-box, .apsh-search-box) :is(.actu-filter-subtitle, p) { font-size: 20px; line-height: 1.4; }
:is(.actu-filter-box, .apsh-search-box) label { font-size: 16px !important; font-weight: 700 !important; }
:is(.actu-filter-box, .apsh-search-box) :is(input:not([type="checkbox"]):not([type="radio"]), select) { min-height: 48px; font-size: 16px !important; }
:is(.actu-filter-box, .apsh-search-box) :is(.actu-filter-grid, .apsh-form-grid) { gap: 24px !important; }
:is(.actu-filter-box, .apsh-search-box) :is(button, .actu-btn-search, input[type="submit"]) { min-height: 50px; font-size: 16px !important; }
@media (max-width: 767px) {
	:is(.actu-filter-box, .apsh-search-box) { padding: 24px 20px !important; }
	:is(.actu-filter-box, .apsh-search-box) :is(.actu-filter-subtitle, p) { font-size: 16px; }
}

/* Family pages: "Etablissements non médicalisés" on the same 1140px column as the block above it; the
   4 event cards 24px apart fit the 1360px frame (they ran 18px past it). */
:is(.elementor[data-elementor-type="wp-page"]) > .e-con-full > .e-con-boxed:is(.elementor-element-82db73b, .elementor-element-37e70a9, .elementor-element-c3cd2ce, .elementor-element-448e9f4, .elementor-element-2fc2250, .elementor-element-45c7916) { --content-width: 1126px !important; }
.elementor-element-00a9d01 { --gap: 24px !important; --column-gap: 24px !important; --row-gap: 24px !important; }

/* Bands whose picture touches the top and bottom edges (map of France, portrait band, "ressource" band,
   Une journée): no vertical padding, as in the mockup. */
:is(.elementor-element-908274e, .elementor-element-f80ff2b, .elementor-element-a980216, .elementor-element-8245222, .elementor-element-90af5bb, .elementor-element-fd3d22c) { --padding-top: 0px !important; --padding-bottom: 0px !important; }

/* ---- Full scan against the mockups (30/09/2026) ---- */
/* Intro right under a title: no extra 10px top margin on its first paragraph. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .elementor-widget-heading + .elementor-widget-text-editor p:first-child { margin-top: 0 !important; }
/* Card links pushed to the bottom (the Elementor 5px widget margin used to win over "auto"). */
:is(.elementor-589 .elementor-element.elementor-element-cafa9e8, .elementor-1755 .elementor-element.elementor-element-e1da9da, .elementor-940 .elementor-element.elementor-element-3c2b07e) { margin-top: auto !important; }
.elementor-widget-loop-grid:has(.elementor-589) { --grid-row-gap: 34px !important; }
.elementor-1755 .elementor-element-ea01696 { --padding-right: 20px !important; --padding-left: 20px !important; --gap: 20px !important; --row-gap: 20px !important; }
/* Home: quick-access cards, conviction cards, "Une association" cards, portrait quote column. */
.elementor-element-9dca8d9 > .e-con { --padding-top: 34px !important; --padding-bottom: 23px !important; }
.elementor-element-9dca8d9 > .e-con > hr.e-divider-base { margin-top: 9px !important; }
.elementor-element-760fe47 > .e-con { --padding-top: 14px !important; --padding-right: 16px !important; --padding-bottom: 16px !important; --padding-left: 16px !important; --gap: 0px !important; --row-gap: 0px !important; }
.elementor-element-760fe47 > .e-con > hr.e-divider-base { margin-block: 11px 0 !important; }
@media (min-width: 768px) { .elementor-element-188366f > .e-con { --padding-top: 38px !important; --padding-right: 24px !important; --padding-bottom: 31px !important; --padding-left: 38px !important; } }
.elementor-element-188366f > .e-con > .elementor-widget-text-editor { line-height: 28px !important; }
.elementor-element-188366f { margin-top: 4px !important; }
/* Portraits CTA (#1615): title and text widths, spacing of the mockup. */
.elementor-element-eebd5dc { max-width: 720px !important; }
.elementor-element-033c2c7 { max-width: 580px !important; }
@media (min-width: 1025px) { .elementor-element-315af16 { --padding-top: 47px !important; --padding-bottom: 32px !important; } }
/* Actualités filter box: 16px intro, labels 14px above the fields; counter 24px, events link 16px. */
.actu-filter-box .actu-filter-subtitle { font-size: 16px !important; margin-bottom: 20px; }
.actu-filter-box .actu-field-col { gap: 14px; }
.actu-filter-box { margin-bottom: 93px; }
.actu-meta-bar { margin-bottom: 27px; }
.actu-results-counter { font-size: 24px; }
.actu-events-link { font-size: 16px; }
/* Sidebar cards (article, portrait, fiches): the rule under the text, not on it. */
:is(.elementor-element-7758fe7, .elementor-element-01e9894) > .e-con > hr.e-divider-base { margin-top: 24px !important; }
:is(.elementor-element-7758fe7, .elementor-element-01e9894) > .e-con > .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
/* Back icon level with the tags (the script widget next to it took height). */
:is(.elementor-element-415aa5a, .elementor-element-7181edb) > .elementor-widget-html { display: none; }
:is(.elementor-element-415aa5a, .elementor-element-7181edb) { top: 6px; }
.elementor-1852 .elementor-widget-theme-post-content ul { margin-top: 0; padding-left: 22px; }
/* Fiche sidebars: cards 18px apart (fiche mockups), 28px on the article / portrait. */
@media (min-width: 1025px) { :is(.elementor-element-6b81885, .elementor-element-135e7de) > .e-con-inner > .e-con:last-child { --gap: 18px !important; --row-gap: 18px !important; } }
/* FAQ: closed questions keep their rounded bottom corners. */
.faq-acf details:not([open]) > summary.e-n-accordion-item-title { border-radius: 16px; }
/* Contact (atomic form and info card): paddings and spacings of the mockup. */
.elementor-element-05e4842 { padding: 16px 24px 24px !important; gap: 10px !important; }
.elementor-element-05e4842 .e-form-base { padding-top: 12px !important; }
.elementor-element-05e4842 .e-form-base > .e-form-label-base { margin-bottom: -8px; }
.elementor-element-945a25f { padding: 0 !important; }
.elementor-element-f20c8ab { padding: 32px 24px 36px !important; }
.elementor-element-f20c8ab > .e-divider-base { margin-block: 6px; }
/* Footer: second link column on the right edge. */
@media (min-width: 1025px) { .elementor-254 .elementor-element-91d5002 { --e-con-grid-template-columns: 1fr auto !important; } }
/* Touch targets: text links get a 44px hit area on tablet and mobile. */
@media (max-width: 1024px) {
	.elementor-254 .elementor-widget-button .elementor-button, .elementor-254 .hfe-menu-item,
	:is(.elementor-element-708b852, .elementor-element-a21e10d, .elementor-element-7758fe7, .elementor-element-01e9894) .elementor-widget-button .elementor-button { min-height: 44px; display: inline-flex; align-items: center; }
	.elementor-11 .elementor-element-0100427 { min-height: 44px; }
}
/* Cards with a short rule: body text at the regular weight (mockups), 500 wrapped it on one more line. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget-text-editor:not(:first-child) { font-weight: 400 !important; }
/* Page hero buttons (Qui sommes-nous, Organisation, Documents...): 10px lower, 24px apart, 50px tall. */
@media (min-width: 1025px) {
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-atomic-element:has(> .elementor-widget-button) { margin-top: 10px; gap: 24px !important; }
	body:not(.home) :is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) > .e-con-full:first-child .e-atomic-element > .elementor-widget-button .elementor-button { min-height: 50px; }
}
/* Map bands of Qui sommes-nous / Organisation: the motif reaches the right edge like the home one. */
/* Protection des données (#1368, atomic flexboxes): 310px summary, 1010px content 40px away. */
@media (min-width: 1025px) {
	.elementor .elementor-element-add42cc { padding: 0 var(--apsh-gutter) 60px !important; gap: 40px; }
	.elementor .elementor-element-4a179f1 { flex: 0 0 310px; width: 310px !important; padding: 0 !important; }
	.elementor .elementor-element-6e5f9bc { flex: 1 1 0; width: auto !important; padding: 0 !important; gap: 50px !important; }
}
.elementor-1368 .elementor-element-6e5f9bc .elementor-widget-text-editor { line-height: 26px; }
.elementor-1368 .elementor-element-6e5f9bc .elementor-widget-text-editor ul { margin: 0; }
/* Touch targets on tablet and mobile: every button and text link is at least 44px tall. */
@media (max-width: 1024px) {
	:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .elementor-widget-button .elementor-button { min-height: 44px; display: inline-flex; align-items: center; }
}
/* Hébergements (#805): "établissements médicalisés" card 562px wide, 58px from the list (mockup). */
@media (min-width: 1025px) {
	.elementor-805 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con { --gap: 58px !important; --column-gap: 58px !important; }
	.elementor-805 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con > .e-con:first-child { --width: 562px !important; flex: 0 0 562px; }
	.elementor-805 .elementor-element-b8dc684 .e-con-inner > .e-con > .e-con > .e-con:last-child { flex: 1 1 0; --width: auto !important; }
}
/* Cards with a short rule: 20px titles on 24px lines, link 28px under the rule (the 17px widget margin
   doubled it); title blocks of equal height so the texts line up across a row. */
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con:has(> hr.e-divider-base) > .elementor-widget-text-editor:first-child { line-height: 1.2 !important; }
:is(.elementor[data-elementor-type="wp-page"], .elementor[data-elementor-type="archive"], .elementor[data-elementor-type="single-post"]) .e-grid > .e-con > hr.e-divider-base + .elementor-widget { margin-top: 0 !important; }
@media (min-width: 1025px) {
	.elementor-element-b588632 > .e-con > .elementor-widget-text-editor:first-child { min-height: 48px; }
	:is(.elementor-element-7f23de7, .elementor-element-d17ca96, .elementor-element-a385833, .elementor-element-bdec482, .elementor-element-22b51a4, .elementor-element-9536171) > .e-con > .elementor-widget-text-editor:first-child { min-height: 72px; }
}
.elementor-element-b588632 > .e-con { --padding-right: 16px !important; }
/* Votre parcours "Que cherchez-vous ?": the rule is the last block, 20px above the card bottom. */
.elementor-element-1e54e24 > .e-con { --padding-top: 28px !important; }
.elementor-element-1e54e24 > .e-con > hr.e-divider-base { margin-block: 8px 0 !important; }
.elementor-element-87d5761 .e-con .e-con { --padding-top: 24px !important; --padding-bottom: 24px !important; }
/* CTA text width of the Nos prestations, Votre parcours and Répertoire mockups. */
:is(.elementor-779, .elementor-704, .elementor-932) .apsh-cta .elementor-widget-text-editor { max-width: min(660px, 100%) !important; }
/* Interactive map (Center Locator plugin): list | map 44px apart, 658px map, mockup cards. */
.apsh-content-grid { gap: 44px; }
.apsh-map-container { height: 658px; }
.apsh-results-counter { font-size: 24px; margin: 26px 0 20px; }
.apsh-card { padding: 24px; margin-bottom: 34px; }
.apsh-pill { padding: 7px 10px; }
.apsh-card-desc { font-size: 20px; margin-bottom: 38px; }
/* Search boxes (map, directory): 31px top padding, 9px under the intro, 12px label to field. */
:is(.apsh-search-box, .apsh-dir-filter) { padding-top: 31px !important; }
:is(.apsh-search-subtitle, .apsh-dir-filter .actu-filter-subtitle) { margin-bottom: 9px !important; }
:is(.apsh-field-col, .apsh-dir-filter .actu-field-col) { gap: 12px; }
/* Glossary search and alphabet. */
.apsh-glossaire-search-box { padding: 31px 40px 36px !important; }
.apsh-glossaire-search-box :is(input, button) { min-height: 48px; }
.elementor-widget-loop-grid:has(.elementor-1161) { --grid-row-gap: 40px !important; }
.elementor-1161 .elementor-element-3c2b07e { margin-top: auto; }
@media (min-width: 1025px) {
	.apsh-alphabet-bar { gap: 13px !important; }
	.apsh-alphabet-bar .letter-btn { width: 40px; height: 40px; font-size: 16px; font-weight: 700; }
}

/* Buttons without a link (file not provided yet): hidden until the link is set in Elementor. */
.elementor-widget-button:has(a.elementor-button:not([href])) { display: none; }
