.gas-block-hero,
.gas-block-section,
.gas-block-text,
.gas-block-image,
.gas-block-row,
.gas-block-cta-band,
.gas-block-shortcode,
.gas-block-article-header,
.gas-block-paywall-gate,
.gas-block-related-articles,
.gas-gated-placeholder {
    margin: var(--gas-space-6, 20px) auto;
    max-width: min(100%, var(--gas-content-max-width, 720px));
    padding-inline: var(--gas-space-4, 10px);
}

/* Base de taille du texte libre des documents/pages GAS. Sans elle, le texte non
   explicitement taillé hérite du root : sous un site épinglé 62.5% (1rem=10px), il
   tombe à ~10px (illisible). Token px → invariant au root (no-op à 100%). Même parti
   pris que le footer (gas-site-footer.css) et le body Astro (Layout.astro). */
.gas-page {
    font-size: var(--gas-text-m);
    line-height: var(--gas-leading-normal);
}

.gas-page--layout-canvas {
    max-width: none;
    padding: 0;
}

.gas-page--layout-canvas > .gas-block-anchor {
    margin: 0;
}

.gas-block-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    background: var(--gas-block-section-bg, transparent);
}

.gas-block-section::before,
.gas-block-section::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: -1;
}

.gas-block-section--bg-image::before {
    background-image: var(--gas-block-section-image);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
}

.gas-block-section--focal-top::before {
    background-position: top center;
}

.gas-block-section--focal-bottom::before {
    background-position: bottom center;
}

.gas-block-section--focal-left::before {
    background-position: center left;
}

.gas-block-section--focal-right::before {
    background-position: center right;
}

.gas-block-section::after {
    background: var(--gas-block-section-overlay, transparent);
    opacity: var(--gas-block-section-overlay-opacity, 0);
}

.gas-block-section--width-wide {
    max-width: min(100%, var(--gas-wide-max-width, 920px));
}

.gas-block-section--width-full_bleed {
    width: 100vw;
    max-width: none;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
}

.gas-block-section--height-half {
    min-height: 50vh;
}

.gas-block-section--height-full {
    min-height: 100vh;
}

.gas-block-section__inner {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: min(100%, var(--gas-content-max-width, 720px));
    margin-inline: auto;
    display: grid;
    gap: var(--gas-space-5, 12.5px);
}

.gas-block-section--content-wide .gas-block-section__inner {
    max-width: min(100%, var(--gas-wide-max-width, 920px));
}

.gas-block-section--content-full .gas-block-section__inner {
    max-width: none;
}

/* ── Shape dividers (découpes SVG en haut/bas de section) ── */
.gas-block-section--divider-h-s {
    --_gas-divider-h: clamp(24px, 4vw, 48px);
}

.gas-block-section--divider-h-m {
    --_gas-divider-h: clamp(40px, 6vw, 80px);
}

.gas-block-section--divider-h-l {
    --_gas-divider-h: clamp(60px, 9vw, 120px);
}

.gas-block-section--divider-h-xl {
    --_gas-divider-h: clamp(90px, 12vw, 170px);
}

.gas-block-section__divider {
    position: absolute;
    left: 0;
    width: 100%;
    height: var(--_gas-divider-h, 80px);
    line-height: 0;
    color: var(--gas-block-section-divider-color, var(--gas-white, #fff));
    pointer-events: none;
    z-index: 0;
}

.gas-block-section__divider svg {
    display: block;
    width: 100%;
    height: 100%;
}

.gas-block-section__divider--top {
    top: 0;
}

.gas-block-section__divider--bottom {
    bottom: 0;
}

/* La forme du bas pointe vers le bas (retournement vertical). */
.gas-block-section__divider--bottom svg {
    transform: scaleY(-1);
}

/* Miroir horizontal optionnel. */
.gas-block-section--divider-flip-top .gas-block-section__divider--top svg {
    transform: scaleX(-1);
}

.gas-block-section--divider-flip-bottom .gas-block-section__divider--bottom svg {
    transform: scaleX(-1) scaleY(-1);
}

/* ── Fonds décoratifs : mesh (maillage de tokens) ── */
.gas-block-section--mesh-aurora {
    background-color: var(--gas-neutral-50, #f8fafc);
    background-image:
        radial-gradient(at 18% 20%, color-mix(in srgb, var(--gas-primary) 38%, transparent), transparent 52%),
        radial-gradient(at 82% 12%, color-mix(in srgb, var(--gas-accent) 32%, transparent), transparent 46%),
        radial-gradient(at 62% 82%, color-mix(in srgb, var(--gas-info) 30%, transparent), transparent 50%);
}

.gas-block-section--mesh-sunset {
    background-color: var(--gas-neutral-50, #f8fafc);
    background-image:
        radial-gradient(at 16% 22%, color-mix(in srgb, var(--gas-warning) 40%, transparent), transparent 52%),
        radial-gradient(at 84% 18%, color-mix(in srgb, var(--gas-danger) 32%, transparent), transparent 48%),
        radial-gradient(at 60% 84%, color-mix(in srgb, var(--gas-accent) 30%, transparent), transparent 50%);
}

.gas-block-section--mesh-ocean {
    background-color: var(--gas-neutral-50, #f8fafc);
    background-image:
        radial-gradient(at 20% 18%, color-mix(in srgb, var(--gas-info) 38%, transparent), transparent 52%),
        radial-gradient(at 80% 16%, color-mix(in srgb, var(--gas-primary) 34%, transparent), transparent 48%),
        radial-gradient(at 58% 86%, color-mix(in srgb, var(--gas-success) 28%, transparent), transparent 50%);
}

.gas-block-section--mesh-forest {
    background-color: var(--gas-neutral-50, #f8fafc);
    background-image:
        radial-gradient(at 18% 20%, color-mix(in srgb, var(--gas-success) 38%, transparent), transparent 52%),
        radial-gradient(at 82% 14%, color-mix(in srgb, var(--gas-primary) 30%, transparent), transparent 48%),
        radial-gradient(at 62% 82%, color-mix(in srgb, var(--gas-accent) 26%, transparent), transparent 50%);
}

.gas-block-section--mesh-mono {
    background-color: var(--gas-neutral-50, #f8fafc);
    background-image:
        radial-gradient(at 20% 18%, color-mix(in srgb, var(--gas-primary) 32%, transparent), transparent 52%),
        radial-gradient(at 80% 20%, color-mix(in srgb, var(--gas-primary) 18%, transparent), transparent 50%),
        radial-gradient(at 60% 84%, color-mix(in srgb, var(--gas-primary) 12%, transparent), transparent 52%);
}

/* ── Fonds décoratifs : motifs (pattern) en filigrane via ::before ── */
.gas-block-section--bg-pattern::before {
    opacity: var(--gas-block-section-pattern-opacity, 0.08);
}

.gas-block-section--pattern-dots::before {
    background-image: radial-gradient(var(--gas-neutral-500, #64748b) 1.5px, transparent 1.6px);
    background-size: 22px 22px;
}

.gas-block-section--pattern-grid::before {
    background-image:
        linear-gradient(var(--gas-neutral-500, #64748b) 1px, transparent 1px),
        linear-gradient(90deg, var(--gas-neutral-500, #64748b) 1px, transparent 1px);
    background-size: 28px 28px;
}

.gas-block-section--pattern-lines::before {
    background-image: repeating-linear-gradient(45deg, var(--gas-neutral-500, #64748b) 0, var(--gas-neutral-500, #64748b) 1px, transparent 1px, transparent 12px);
}

.gas-block-section--pattern-cross::before {
    background-image:
        linear-gradient(var(--gas-neutral-500, #64748b) 1px, transparent 1px),
        linear-gradient(90deg, var(--gas-neutral-500, #64748b) 1px, transparent 1px);
    background-size: 32px 32px;
    background-position: center;
}

/* ── Forme organique décorative (blob), cumulable avec tout fond ── */
.gas-block-section__blob {
    position: absolute;
    width: clamp(180px, 32vw, 460px);
    aspect-ratio: 1;
    border-radius: 42% 58% 63% 37% / 41% 44% 56% 59%;
    background: var(--gas-block-section-blob-color, var(--gas-primary));
    filter: blur(48px);
    opacity: 0.45;
    z-index: 0;
    pointer-events: none;
}

.gas-block-section--blob-tl .gas-block-section__blob { top: -8%; left: -6%; }
.gas-block-section--blob-tr .gas-block-section__blob { top: -8%; right: -6%; }
.gas-block-section--blob-bl .gas-block-section__blob { bottom: -8%; left: -6%; }
.gas-block-section--blob-br .gas-block-section__blob { bottom: -8%; right: -6%; }
.gas-block-section--blob-center .gas-block-section__blob {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* ── Cadre média réutilisable (gas-frame) : image, hero, feature_showcase ── */
.gas-frame {
    display: block;
}

.gas-frame img {
    display: block;
    width: 100%;
    height: auto;
    /* La bordure du cadre "ring" est incluse dans la largeur (sinon +2px de
       débordement quand l'image fait 100% de sa colonne, ex. mobile). */
    box-sizing: border-box;
}

.gas-frame--ring img {
    border-radius: var(--gas-radius-l, 12px);
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
}

.gas-frame--shadow img {
    border-radius: var(--gas-radius-l, 12px);
    box-shadow: 0 24px 50px -12px rgba(15, 23, 42, 0.28), 0 8px 20px -8px rgba(15, 23, 42, 0.16);
}

.gas-frame--browser {
    border-radius: var(--gas-radius-l, 12px);
    overflow: hidden;
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
    box-shadow: 0 24px 50px -16px rgba(15, 23, 42, 0.25);
    background: var(--gas-white, #fff);
}

.gas-frame__bar {
    display: block;
    height: 34px;
    background: var(--gas-neutral-100, #f1f5f9);
    border-bottom: 1px solid var(--gas-neutral-200, #e2e8f0);
    position: relative;
}

.gas-frame__bar::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 14px;
    width: 10px;
    height: 10px;
    transform: translateY(-50%);
    border-radius: 50%;
    background: var(--gas-danger, #ef4444);
    box-shadow: 18px 0 0 var(--gas-warning, #f59e0b), 36px 0 0 var(--gas-success, #22c55e);
}

.gas-frame--browser img {
    border-radius: 0;
}

.gas-frame--device {
    display: inline-block;
    max-width: min(100%, 360px);
    padding: 10px;
    background: var(--gas-neutral-900, #0f172a);
    border-radius: 28px;
    box-shadow: 0 30px 60px -18px rgba(15, 23, 42, 0.4);
}

.gas-frame--device img {
    border-radius: 18px;
}

/* ── Section « panneau » : carte arrondie contenue et flottante ── */
.gas-block-section--panel {
    width: auto;
    max-width: min(100%, var(--gas-wide-max-width, 920px));
    margin-inline: auto;
    margin-block: var(--gas-space-l, 15px);
    border-radius: var(--gas-radius-xl, 20px);
    box-shadow: 0 30px 60px -24px rgba(15, 23, 42, 0.28), 0 8px 24px -12px rgba(15, 23, 42, 0.16);
    overflow: hidden;
}

@media (max-width: 640px) {
    .gas-block-section--panel {
        margin-block: var(--gas-space-m, 10px);
        border-radius: var(--gas-radius-l, 12px);
    }
}

/* ── Hero : effets média (variante split) + variante minimal ── */
.gas-block-hero--effect-tilt .gas-block-hero__media {
    transform: rotate(-2deg);
    transition: transform 0.3s ease;
}

.gas-block-hero--effect-tilt .gas-block-hero__media:hover {
    transform: rotate(0);
}

.gas-block-hero--effect-offset .gas-block-hero__media {
    transform: translateY(15px);
}

.gas-block-hero--effect-angled .gas-block-hero__media img,
.gas-block-hero--effect-angled .gas-block-hero__image {
    clip-path: polygon(0 0, 100% 5%, 100% 100%, 0 95%);
}

.gas-block-hero--minimal .gas-block-hero__content {
    max-width: 560px;
    margin-inline: auto;
    text-align: center;
}

.gas-block-hero--minimal .gas-block-hero__actions {
    justify-content: center;
}

/* ── hero : variante overlay (image plein cadre + contenu centré + voile) ── */
.gas-block-hero--overlay {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    border-radius: var(--gas-radius-l, 12px);
}
.gas-block-hero--overlay .gas-block-hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.gas-block-hero--overlay .gas-block-hero__bg .gas-block-hero__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.gas-block-hero--overlay::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: rgba(15, 23, 42, var(--gas-hero-overlay, 0.5));
}
.gas-block-hero--overlay .gas-block-hero__inner {
    position: relative;
    z-index: 1;
    display: block;
    padding-block: var(--gas-space-3xl, 50px);
    text-align: center;
}
.gas-block-hero--overlay .gas-block-hero__content {
    max-width: 460px;
    margin-inline: auto;
}
.gas-block-hero--overlay .gas-block-hero__eyebrow,
.gas-block-hero--overlay .gas-block-hero__title,
.gas-block-hero--overlay .gas-block-hero__subtitle,
.gas-block-hero--overlay .gas-block-hero__note {
    color: var(--gas-white, #fff);
}
.gas-block-hero--overlay .gas-block-hero__actions,
.gas-block-hero--overlay .gas-block-hero__note {
    justify-content: center;
}

@media (max-width: 720px) {
    .gas-block-hero--effect-tilt .gas-block-hero__media,
    .gas-block-hero--effect-offset .gas-block-hero__media {
        transform: none;
    }
}

.gas-block-section--padding-none {
    padding: 0;
}

.gas-block-section--padding-sm {
    padding-block: var(--gas-space-4, 10px);
}

.gas-block-section--padding-md {
    padding-block: var(--gas-space-6, 20px);
}

.gas-block-section--padding-lg {
    padding-block: var(--gas-space-8, 30px);
}

.gas-block-section--padding-xl {
    padding-block: var(--gas-space-10, 40px);
}

/* Alignement vertical du contenu dans la hauteur de la section.
 * `align-content` (et non `align-items`) centre le bloc de contenu dans
 * l'espace disponible quand la section est plus haute que son contenu
 * (height: half / full). */
.gas-block-section--valign-center {
    display: grid;
    align-content: center;
}

.gas-block-section--valign-bottom {
    display: grid;
    align-content: end;
}

/* Couleur de texte des blocs enfants — pilotable depuis l'éditeur (champ
 * text_color), pour rendre lisible le contenu sur une image de fond sombre
 * sans écrire de CSS.
 *
 * Les renderers de blocs lisent tous `var(--gas-color-text[-muted], …)`. Plutôt
 * qu'une guerre de spécificité, on REDÉFINIT ces variables sur la section :
 * elles cascadent vers hero / text / cta / image-text-split / etc. Les boutons
 * gardent leur propre style (ils n'utilisent pas ces variables). */
.gas-block-section--text-light {
    --gas-color-text: var(--gas-text-color-inverse, #fff);
    --gas-color-text-muted: var(--gas-text-color-inverse, #fff);
    color: var(--gas-text-color-inverse, #fff);
}

.gas-block-section--text-dark {
    --gas-color-text: var(--gas-text-color, #161616);
    --gas-color-text-muted: var(--gas-text-color-muted, #4a4a4a);
    color: var(--gas-text-color, #161616);
}

/* Colonnes natives de section (gas-block-section--cols-1 = mono-col, par défaut) */
.gas-block-section__grid {
    display: grid;
    grid-template-columns: var(--gas-block-section-columns, 1fr);
    align-items: start;
}

.gas-block-section__column {
    display: grid;
    gap: var(--gas-space-5, 12.5px);
    min-width: 0;
}

.gas-block-section--gap-none .gas-block-section__grid {
    gap: 0;
}

.gas-block-section--gap-sm .gas-block-section__grid {
    gap: var(--gas-space-4, 10px);
}

.gas-block-section--gap-md .gas-block-section__grid {
    gap: var(--gas-space-6, 20px);
}

.gas-block-section--gap-lg .gas-block-section__grid {
    gap: var(--gas-space-8, 30px);
}

@media (max-width: 768px) {
    .gas-block-section--cols-2 .gas-block-section__grid,
    .gas-block-section--cols-3 .gas-block-section__grid,
    .gas-block-section--cols-4 .gas-block-section__grid {
        grid-template-columns: 1fr;
    }
}

.gas-block-section .gas-block-anchor,
.gas-block-section .gas-block-hero,
.gas-block-section .gas-block-text,
.gas-block-section .gas-block-image,
.gas-block-section .gas-block-row,
.gas-block-section .gas-block-cta-band,
.gas-block-section .gas-block-shortcode,
.gas-block-section .gas-block-cta {
    max-width: none;
    margin: 0;
    padding-inline: 0;
}

.gas-block-hero__inner {
    display: grid;
    gap: var(--gas-space-4, 10px);
    align-items: center;
}

.gas-block-hero__eyebrow {
    margin: 0 0 var(--gas-space-3, 7.5px);
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-sm, 8.5px);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.gas-block-hero__title {
    margin: 0;
    color: var(--gas-color-text, #161616);
    font-size: clamp(18px, 4vw, 26px);
    line-height: 1.2;
}

.gas-block-hero__note {
    display: flex;
    align-items: center;
    gap: var(--gas-space-2, 5px);
    margin: var(--gas-space-4, 10px) 0 0;
    color: var(--gas-color-text-muted, #4a4a4a);
    font-style: italic;
    font-size: var(--gas-text-s, 14px);
    line-height: 1.4;
}

.gas-block-hero__note-icon {
    flex: 0 0 auto;
    width: 1.4em;
    height: 1.4em;
    color: var(--gas-accent-text);
}

.gas-block-hero__subtitle {
    margin: var(--gas-space-3, 7.5px) 0 0;
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-m, 16px);
    line-height: 1.5;
}

.gas-block-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-3, 7.5px);
    margin-top: var(--gas-space-4, 10px);
}

.gas-block-hero__media {
    margin: 0;
}

.gas-block-hero__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-lg, 7.5px);
}

/* Garde-fou : une photo portrait posée dans un hero "split" (colonne étroite)
   monterait à sa hauteur native (~950px) et déséquilibrerait l'ouverture. On
   borne et on recadre (cover). N'affecte pas les images plus basses que le cap. */
.gas-block-hero--split .gas-block-hero__image {
    max-height: 480px;
    object-fit: cover;
}

.gas-block-text__inner {
    display: grid;
    gap: var(--gas-space-3, 7.5px);
}

.gas-block-text__title {
    margin: 0;
    color: var(--gas-color-text, #161616);
}

.gas-block-text__content {
    color: var(--gas-color-text, #161616);
    line-height: 1.65;
}

.gas-block-text--narrow {
    max-width: min(100%, 520px);
}

.gas-block-text--full {
    max-width: min(100%, 920px);
}

.gas-block-text--card .gas-block-text__inner {
    background: var(--gas-color-surface, #fff);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-lg, 7.5px);
    padding: var(--gas-space-4, 10px);
}

.gas-block-text--highlight .gas-block-text__inner {
    background: var(--gas-color-primary-soft, #eef7ff);
    border-left: 4px solid var(--gas-color-primary, #1a73e8);
    padding: var(--gas-space-4, 10px);
}

.gas-block-text--align-center {
    text-align: center;
}

.gas-block-text--align-right {
    text-align: right;
}

.gas-block-image__figure {
    margin: 0;
}

.gas-block-image__img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-md, 5px);
}

.gas-block-image__caption {
    margin-top: var(--gas-space-2, 5px);
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-s, 14px);
}

.gas-block-image--narrow {
    max-width: min(100%, 520px);
}

.gas-block-image--full {
    max-width: min(100%, 920px);
}

.gas-block-row__grid {
    display: grid;
    grid-template-columns: 1fr;
}

.gas-block-row--gap-none .gas-block-row__grid {
    gap: 0;
}

.gas-block-row--gap-sm .gas-block-row__grid {
    gap: var(--gas-space-2, 5px);
}

.gas-block-row--gap-md .gas-block-row__grid {
    gap: var(--gas-space-4, 10px);
}

.gas-block-row--gap-lg .gas-block-row__grid {
    gap: var(--gas-space-6, 20px);
}

/* cta_band : base + layout (__inner/__content/__title/__subtitle/__actions) consolidés
   plus bas dans ce fichier (bloc unique). Ici, uniquement les modifiers de fond ACTIFS
   (--none/--primary/--soft, émis par le renderer via background_tone). */
.gas-block-cta-band--none .gas-block-cta-band__inner {
    background: var(--gas-color-surface, #fff);
    border: 1px solid var(--gas-color-border, #e0e0e0);
}

.gas-block-cta-band--primary .gas-block-cta-band__inner {
    background: var(--gas-color-primary, #1a73e8);
    color: var(--gas-color-on-primary, #fff);
}

.gas-block-cta-band--soft .gas-block-cta-band__inner {
    background: var(--gas-color-primary-soft, #eef7ff);
    color: var(--gas-color-text, #161616);
}

.gas-block-shortcode {
    min-height: 1px;
}

.gas-document--article {
    max-width: min(100%, var(--gas-content-max-width, 720px));
    margin: 0 auto;
}

.gas-document__body--article {
    display: grid;
    gap: var(--gas-space-5, 12.5px);
}

.gas-block-article-header {
    display: grid;
    gap: var(--gas-space-4, 10px);
}

.gas-block-article-header__media {
    margin: 0;
}

.gas-block-article-header__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-lg, 7.5px);
}

.gas-block-article-header__content {
    display: grid;
    gap: var(--gas-space-2, 5px);
}

.gas-block-article-header__title {
    margin: 0;
    color: var(--gas-color-text, #161616);
    font-size: clamp(20px, 5vw, 30px);
    line-height: 1.1;
}

.gas-block-article-header__meta,
.gas-block-article-header__subtitle {
    margin: 0;
    color: var(--gas-color-text-muted, #4a4a4a);
}

.gas-block-article-header--compact .gas-block-article-header__title,
.gas-block-article-header--title_only .gas-block-article-header__title {
    font-size: clamp(17.5px, 4vw, 23.5px);
}

.gas-block-paywall-gate--unlocked {
    display: grid;
    gap: var(--gas-space-4, 10px);
}

.gas-block-related-articles {
    display: grid;
    gap: var(--gas-space-4, 10px);
}

.gas-gated-placeholder {
    display: grid;
    gap: var(--gas-space-3, 7.5px);
    justify-items: start;
    padding: var(--gas-space-4, 10px);
    border: 1px dashed var(--gas-color-border, #d0d0d0);
    border-radius: var(--gas-radius-md, 5px);
    background: var(--gas-color-surface-soft, #f8f8f8);
}

.gas-gated-placeholder__icon {
    font-size: 11.5px;
    line-height: 1;
}

.gas-gated-placeholder__message {
    margin: 0;
    color: var(--gas-color-text, #161616);
}

.gas-gated-placeholder__action {
    margin-top: var(--gas-space-1, 2.5px);
}

.gas-gated-placeholder__loading {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-2, 5px);
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-s, 14px);
}

.gas-gated-placeholder__spinner {
    width: 9px;
    height: 9px;
    border: 2px solid var(--gas-color-border, #d0d0d0);
    border-top-color: var(--gas-color-primary, #1a73e8);
    border-radius: 50%;
    animation: gas-gated-spinner 0.8s linear infinite;
}

.gas-gated-placeholder__error {
    margin: 0;
    color: var(--gas-color-danger, #c62828);
    font-size: var(--gas-text-s, 14px);
}

.gas-gated-placeholder--unlocked {
    border-style: solid;
    border-color: var(--gas-color-success, #2e7d32);
    background: var(--gas-color-surface, #fff);
    animation: gas-gated-unlock-fade 0.2s ease-out;
}

@keyframes gas-gated-spinner {
    to {
        transform: rotate(360deg);
    }
}

@keyframes gas-gated-unlock-fade {
    from {
        opacity: 0.35;
    }
    to {
        opacity: 1;
    }
}

.gas-block-features-grid__grid,
.gas-block-stats__grid,
.gas-block-team-grid__grid,
.gas-block-logo-cloud__grid,
.gas-block-gallery__grid {
    display: grid;
    gap: var(--gas-space-4, 10px);
}

.gas-block-features-grid--cols-2 .gas-block-features-grid__grid,
.gas-block-team-grid--cols-2 .gas-block-team-grid__grid,
.gas-block-gallery--cols-2 .gas-block-gallery__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gas-block-features-grid--cols-3 .gas-block-features-grid__grid,
.gas-block-team-grid--cols-3 .gas-block-team-grid__grid,
.gas-block-gallery--cols-3 .gas-block-gallery__grid,
.gas-block-logo-cloud--cols-3 .gas-block-logo-cloud__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gas-block-features-grid--cols-4 .gas-block-features-grid__grid,
.gas-block-team-grid--cols-4 .gas-block-team-grid__grid,
.gas-block-gallery--cols-4 .gas-block-gallery__grid,
.gas-block-logo-cloud--cols-4 .gas-block-logo-cloud__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gas-block-logo-cloud--cols-5 .gas-block-logo-cloud__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.gas-block-logo-cloud--cols-6 .gas-block-logo-cloud__grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.gas-block-features-grid__item,
.gas-block-stats__item,
.gas-block-team-grid__item,
.gas-block-testimonials__item,
.gas-block-info-box,
.gas-block-file-download__inner,
.gas-block-faq__item {
    background: var(--gas-color-surface, #fff);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-md, 5px);
    padding: var(--gas-space-4, 10px);
}

.gas-block-image-text-split__inner {
    display: grid;
    gap: var(--gas-space-5, 12.5px);
    align-items: center;
}

.gas-block-image-text-split--right .gas-block-image-text-split__media {
    order: 2;
}

.gas-block-image-text-split--sticky-media .gas-block-image-text-split__media {
    position: sticky;
    top: var(--gas-space-6, 15px);
    align-self: start;
}

.gas-block-image-text-split__image {
    display: block;
    width: 100%;
    height: auto;
    /* Garde-fou : les photos portrait (768×1024…) atteignent ~950px à leur
       hauteur native et déséquilibrent la section. On borne et on recadre
       (cover). Les images plus basses que le cap ne sont pas affectées. */
    max-height: 560px;
    object-fit: cover;
    border-radius: var(--gas-radius-md, 5px);
}

/* Label vertical pivoté sur le bord extérieur de la colonne de contenu. */
.gas-block-image-text-split--has-side-label .gas-block-image-text-split__content {
    display: flex;
    align-items: stretch;
    gap: var(--gas-space-4, 10px);
}

.gas-block-image-text-split__side-label {
    flex: 0 0 auto;
    margin: 0;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-size: var(--gas-text-xs, 7.5px);
    font-weight: 600;
    color: var(--gas-color-text-muted, #6b7280);
    white-space: nowrap;
}

.gas-block-image-text-split__content-body {
    flex: 1 1 auto;
    min-width: 0;
}

/* Rectangle décoratif décalé derrière l'image (effet quinconce). */
.gas-block-image-text-split--decor-panel .gas-block-image-text-split__media {
    position: relative;
}

.gas-block-image-text-split--decor-panel .gas-block-image-text-split__media::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: calc(var(--gas-space-6, 15px) * -1);
    bottom: var(--gas-space-6, 15px);
    left: calc(var(--gas-space-6, 15px) * -1);
    right: var(--gas-space-6, 15px);
    border-radius: var(--gas-radius-lg, 7.5px);
    background: var(--gas-its-decor, var(--gas-color-primary-soft, #d8eefb));
}

/* L'image à droite => décor décalé vers le coin extérieur droit. */
.gas-block-image-text-split--decor-panel.gas-block-image-text-split--right .gas-block-image-text-split__media::before {
    left: var(--gas-space-6, 15px);
    right: calc(var(--gas-space-6, 15px) * -1);
}

.gas-block-image-text-split--decor-primary {
    --gas-its-decor: var(--gas-color-primary-soft, #d8eefb);
}

.gas-block-image-text-split--decor-accent {
    --gas-its-decor: var(--gas-color-accent-soft, #f6e2d8);
}

.gas-block-image-text-split--decor-secondary {
    --gas-its-decor: var(--gas-color-secondary-soft, #e6e2f3);
}

.gas-block-image-text-split--decor-neutral {
    --gas-its-decor: var(--gas-color-surface-muted, #f0f1f3);
}

/* Mobile : le label vertical reprend un flux horizontal lisible. */
@media (max-width: 768px) {
    .gas-block-image-text-split--has-side-label .gas-block-image-text-split__content {
        flex-direction: column;
        gap: var(--gas-space-2, 5px);
    }

    .gas-block-image-text-split__side-label {
        writing-mode: horizontal-tb;
        transform: none;
    }
}

.gas-block-shop-catalog__inner,
.gas-block-placement-slot__inner {
    display: grid;
    gap: var(--gas-space-4, 10px);
}

.gas-block-shop-catalog--grid-2 .gas-block-shop-catalog__inner,
.gas-block-placement-slot--grid-2 .gas-block-placement-slot__inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gas-block-shop-catalog--grid-3 .gas-block-shop-catalog__inner,
.gas-block-placement-slot--grid-3 .gas-block-placement-slot__inner {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gas-block-shop-catalog--grid-4 .gas-block-shop-catalog__inner,
.gas-block-placement-slot--grid-4 .gas-block-placement-slot__inner {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gas-block-shop-catalog--list .gas-block-shop-catalog__inner,
.gas-block-placement-slot--list .gas-block-placement-slot__inner,
.gas-block-placement-slot--carousel .gas-block-placement-slot__inner {
    grid-template-columns: 1fr;
}

.gas-block-shop-catalog__item {
    background: var(--gas-color-surface, #fff);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-md, 5px);
    padding: var(--gas-space-4, 10px);
}

.gas-block-shop-catalog__link {
    display: grid;
    gap: var(--gas-space-2, 5px);
    color: inherit;
    text-decoration: none;
}

.gas-block-shop-catalog__image {
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-sm, 3.75px);
    display: block;
}

.gas-block-shop-catalog__title {
    margin: 0;
}

.gas-block-shop-catalog__price {
    margin: 0;
    color: var(--gas-color-text-muted, #4a4a4a);
}

/* rental_catalog — catalogue de matériel louable (module location) */
.gas-block-rental-catalog__inner {
    display: grid;
    gap: var(--gas-space-m, 10px);
}

.gas-block-rental-catalog--grid-2 .gas-block-rental-catalog__inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gas-block-rental-catalog--grid-3 .gas-block-rental-catalog__inner {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gas-block-rental-catalog--grid-4 .gas-block-rental-catalog__inner {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gas-block-rental-catalog--list .gas-block-rental-catalog__inner {
    grid-template-columns: 1fr;
}

.gas-block-rental-catalog__card {
    display: grid;
    gap: var(--gas-space-s, 5px);
    align-content: start;
    background: var(--gas-color-surface, #fff);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-l, 7.5px);
    padding: var(--gas-space-m, 10px);
}

.gas-block-rental-catalog__media {
    display: block;
    border-radius: var(--gas-radius-m, 5px);
    overflow: hidden;
}

.gas-block-rental-catalog__media img {
    width: 100%;
    height: auto;
    display: block;
}

.gas-block-rental-catalog__title {
    margin: 0;
    font-size: var(--gas-text-m, 10px);
}

.gas-block-rental-catalog__title a {
    color: inherit;
    text-decoration: none;
}

.gas-block-rental-catalog__desc {
    margin: 0;
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-s, 8.75px);
}

.gas-block-rental-catalog__price {
    margin: 0;
    font-weight: var(--gas-weight-semi, 600);
}

.gas-block-toc {
    padding: var(--gas-space-3, 7.5px);
    border-left: 2px solid var(--gas-color-border, #d0d0d0);
}

.gas-block-toc__list {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

.gas-block-toc__item + .gas-block-toc__item {
    margin-top: var(--gas-space-2, 5px);
}

.gas-block-toc__item--level-3 {
    padding-left: var(--gas-space-3, 7.5px);
}

.gas-block-toc__link {
    color: var(--gas-color-text, #161616);
    text-decoration: none;
}

.gas-block-toc__link:hover,
.gas-block-toc__link:focus {
    text-decoration: underline;
}

.gas-block-toc--sticky {
    position: sticky;
    top: var(--gas-space-4, 10px);
    align-self: start;
    max-height: calc(100vh - var(--gas-space-8, 20px));
    overflow-y: auto;
}

.gas-block-image-text-split__actions,
.gas-block-cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-3, 7.5px);
    margin-top: var(--gas-space-4, 10px);
}

.gas-block-stats--inline .gas-block-stats__grid {
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}

.gas-block-stats__value {
    margin: 0;
    font-size: clamp(15px, 2.5vw, 20px);
    font-weight: 700;
}

.gas-block-stats__label {
    margin: var(--gas-space-1, 2.5px) 0 0;
    color: var(--gas-color-text-muted, #4a4a4a);
}

.gas-block-team-grid__avatar img,
.gas-block-testimonials__avatar img,
.gas-block-logo-cloud__item img,
.gas-block-gallery__item img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-sm, 3.75px);
}

/* ── testimonials : taille des avatars (hors avatar vedette, cercle fixe) + note étoilée ── */
.gas-block-testimonials__avatar:not(.gas-block-testimonials__featured-avatar) {
    width: 60px;
}
.gas-block-testimonials--avatar-small .gas-block-testimonials__avatar:not(.gas-block-testimonials__featured-avatar) {
    width: 40px;
}
.gas-block-testimonials--avatar-large .gas-block-testimonials__avatar:not(.gas-block-testimonials__featured-avatar) {
    width: 80px;
}
.gas-block-testimonials__rating {
    margin: 0 0 var(--gas-space-2, 5px);
    line-height: 1;
    letter-spacing: 0.08em;
    font-size: var(--gas-text-m, 16px);
}
.gas-block-testimonials__rating-on {
    color: var(--gas-warning, #f59e0b);
}
.gas-block-testimonials__rating-off {
    color: var(--gas-color-border, #d1d5db);
}

.gas-block-accordion__items {
    border-top: 1px solid var(--gas-color-border, #e2e8f0);
}

.gas-block-accordion__item {
    border-bottom: 1px solid var(--gas-color-border, #e2e8f0);
}

.gas-block-accordion__item + .gas-block-accordion__item {
    margin-top: 0;
}

.gas-block-accordion__question {
    cursor: pointer;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: var(--gas-space-4, 10px) 0;
    list-style: none;
}

.gas-block-accordion__question::-webkit-details-marker {
    display: none;
}

.gas-block-accordion__question::after {
    content: "";
    flex: 0 0 auto;
    width: 6px;
    height: 6px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-1.5px);
    transition: transform 0.2s ease;
    opacity: 0.45;
}

.gas-block-accordion__item[open] .gas-block-accordion__question::after {
    transform: rotate(-135deg) translateY(-1.5px);
}

.gas-block-accordion__answer {
    margin-top: 0;
    padding: 0 0 var(--gas-space-4, 10px);
    color: var(--gas-color-text-muted, #64748b);
    line-height: 1.65;
}

/* Styles bordered / filled : encadré complet, pas de filet de base, espacement entre items */
.gas-block-accordion--style-bordered .gas-block-accordion__items,
.gas-block-accordion--style-filled .gas-block-accordion__items {
    border-top: 0;
    display: grid;
    gap: var(--gas-space-3, 7.5px);
}

.gas-block-accordion--style-bordered .gas-block-accordion__question,
.gas-block-accordion--style-filled .gas-block-accordion__question {
    padding: var(--gas-space-3, 9px) 0;
}

.gas-block-accordion--style-bordered .gas-block-accordion__answer,
.gas-block-accordion--style-filled .gas-block-accordion__answer {
    padding-bottom: var(--gas-space-3, 9px);
}

.gas-block-testimonials__track {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--gas-space-4, 10px);
}

.gas-block-testimonials--carousel .gas-block-testimonials__track {
    display: flex;
    transition: transform 0.25s ease;
    overflow: hidden;
}

.gas-block-testimonials--carousel .gas-block-testimonials__item {
    min-width: 100%;
}

.gas-block-testimonials__controls {
    display: flex;
    gap: var(--gas-space-2, 5px);
    margin-top: var(--gas-space-3, 7.5px);
}

.gas-block-info-box--info {
    border-left: 4px solid var(--gas-color-primary, #1a73e8);
}

.gas-block-info-box--success {
    border-left: 4px solid var(--gas-color-success, #2e7d32);
}

.gas-block-info-box--warning {
    border-left: 4px solid var(--gas-color-warning, #f9a825);
}

.gas-block-info-box--danger {
    border-left: 4px solid var(--gas-color-danger, #c62828);
}

.gas-block-quote {
    margin: var(--gas-space-6, 20px) auto;
    max-width: min(100%, 520px);
    border-left: 4px solid var(--gas-color-border, #d0d0d0);
    padding: var(--gas-space-4, 10px);
    color: var(--gas-color-text, #161616);
}

.gas-block-quote--highlight {
    background: var(--gas-color-primary-soft, #eef7ff);
    border-left-color: var(--gas-color-primary, #1a73e8);
}

.gas-block-gallery-lightbox {
    position: fixed;
    inset: 0;
    background: var(--gas-topbar-bg);
    z-index: 99999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: var(--gas-space-4, 10px);
}

.gas-block-gallery-lightbox.is-open {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-2, 5px);
}

.gas-block-gallery-lightbox__img {
    max-width: min(100%, 700px);
    max-height: 80vh;
    width: auto;
    height: auto;
}

.gas-block-gallery-lightbox__caption {
    color: var(--gas-text-color-inverse);
    margin: 0;
}

.gas-block-gallery-lightbox__close {
    position: absolute;
    top: 10px;
    right: 10px;
    font-size: 20px;
    line-height: 1;
    background: transparent;
    border: 0;
    color: var(--gas-text-color-inverse);
    cursor: pointer;
}

/* Lightbox : navigation précédent/suivant + compteur (album parcourable). */
.gas-block-gallery-lightbox__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 50%;
    background: color-mix(in srgb, var(--gas-text-color-inverse) 15%, transparent);
    color: var(--gas-text-color-inverse);
    font-size: 17.5px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}
.gas-block-gallery-lightbox__nav:hover {
    background: color-mix(in srgb, var(--gas-text-color-inverse) 28%, transparent);
}
.gas-block-gallery-lightbox__nav--prev { left: 10px; }
.gas-block-gallery-lightbox__nav--next { right: 10px; }
.gas-block-gallery-lightbox__counter {
    color: var(--gas-text-color-inverse);
    font-size: var(--gas-text-s, 8.75px);
    opacity: 0.85;
    margin: 0;
}
.gas-block-gallery-lightbox__nav[hidden] { display: none; }

/* ===== gallery layout=feature : mosaïque « 1 grande tuile + vignettes » ===== */
.gas-block-gallery--layout-feature .gas-block-gallery__grid {
    grid-template-columns: 1fr;
    gap: var(--gas-space-3, 7.5px);
}
.gas-block-gallery--layout-feature .gas-block-gallery__item {
    position: relative;
    margin: 0;
    aspect-ratio: 1 / 1;
    border-radius: var(--gas-radius-md, 5px);
    overflow: hidden;
}
.gas-block-gallery--layout-feature .gas-block-gallery__link {
    display: block;
    width: 100%;
    height: 100%;
}
.gas-block-gallery--layout-feature .gas-block-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 0;
}
.gas-block-gallery--layout-feature .gas-block-gallery__item.is-hidden {
    display: none;
}
@container (min-width: 560px) {
    .gas-block-gallery--layout-feature .gas-block-gallery__grid {
        grid-template-columns: repeat(4, 1fr);
    }
    /* 1re image = grande tuile carrée 2×2 (l'aire est déjà carrée via les vignettes). */
    .gas-block-gallery--layout-feature .gas-block-gallery__item:first-child {
        grid-column: span 2;
        grid-row: span 2;
        aspect-ratio: auto;
    }
}
/* Calque « Voir les N photos » sur la dernière tuile visible. */
.gas-block-gallery__more {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--gas-space-2, 5px);
    background: var(--gas-bg-overlay);
    color: var(--gas-text-color-inverse);
    font-weight: 600;
    text-align: center;
    padding: var(--gas-space-3, 7.5px);
    transition: background 0.2s ease;
}
.gas-block-gallery__link:hover .gas-block-gallery__more {
    background: var(--gas-bg-overlay);
}
.gas-block-gallery__more-icon { display: block; }

/* ===== letter : en-tête centré + feuille « papier » + pile de feuilles ===== */
.gas-block-letter__header {
    max-width: 460px;
    margin: 0 auto var(--gas-space-xl, 30px);
    text-align: center;
}
.gas-block-letter--align-left .gas-block-letter__header {
    margin-inline: 0;
    text-align: left;
}
.gas-block-letter__eyebrow {
    margin: 0 0 var(--gas-space-3, 7.5px);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 600;
    color: var(--gas-color-text-muted, #6b7280);
}
.gas-block-letter__title {
    margin: 0 0 var(--gas-space-4, 10px);
    font-size: var(--gas-text-3xl, 25px);
    line-height: 1.1;
}
.gas-block-letter__lead {
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-l, 11.25px);
    line-height: var(--gas-prose-leading, 1.6);
}
.gas-block-letter__sheet {
    position: relative;
    max-width: 460px;
    margin-inline: auto;
    background: var(--gas-color-surface, #fff);
    border-radius: var(--gas-radius-sm, 2.5px);
    padding: clamp(var(--gas-space-l, 20px), 5vw, var(--gas-space-2xl, 40px));
    box-shadow: 0 30px 60px -30px rgba(0, 0, 0, 0.18);
}
.gas-block-letter__body {
    line-height: var(--gas-prose-leading, 1.7);
    color: var(--gas-color-text, #161616);
}
.gas-block-letter__body > * {
    margin: 0;
}
.gas-block-letter__body > * + * {
    margin-top: var(--gas-space-4, 10px);
}

/* Effet pile de papier : deux calques blancs pivotés derrière la feuille. */
.gas-block-letter.is-stacked .gas-block-letter__sheet::before,
.gas-block-letter.is-stacked .gas-block-letter__sheet::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: var(--gas-color-surface, #fff);
    border-radius: inherit;
    box-shadow: 0 24px 50px -30px rgba(0, 0, 0, 0.15);
}
.gas-block-letter.is-stacked .gas-block-letter__sheet::before {
    transform: rotate(-2.4deg) translateY(-3px);
}
.gas-block-letter.is-stacked .gas-block-letter__sheet::after {
    transform: rotate(1.8deg) translateY(6px);
}

/* ===== intro_cards : colonne d'intro + grille de cartes configurables ===== */
.gas-block-intro-cards {
    container-type: inline-size;
}
.gas-block-intro-cards__inner {
    display: grid;
    gap: var(--gas-space-xl, 30px);
    align-items: start;
}
@container (min-width: 720px) {
    .gas-block-intro-cards__inner {
        grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr);
    }
}
.gas-block-intro-cards__eyebrow {
    margin: 0 0 var(--gas-space-4, 10px);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
    color: var(--gas-color-text, #161616);
}
.gas-block-intro-cards__title {
    margin: 0 0 var(--gas-space-4, 10px);
    font-size: var(--gas-text-3xl, 25px);
    line-height: 1.1;
}
.gas-block-intro-cards__lead {
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-l, 11.25px);
    line-height: var(--gas-prose-leading, 1.6);
}
.gas-block-intro-cards__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--gas-space-m, 15px);
    grid-template-columns: 1fr;
}
@container (min-width: 520px) {
    .gas-block-intro-cards--cols-2 .gas-block-intro-cards__grid,
    .gas-block-intro-cards--cols-3 .gas-block-intro-cards__grid,
    .gas-block-intro-cards--cols-4 .gas-block-intro-cards__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@container (min-width: 860px) {
    .gas-block-intro-cards--cols-3 .gas-block-intro-cards__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .gas-block-intro-cards--cols-4 .gas-block-intro-cards__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}
.gas-block-intro-cards__item {
    margin: 0;
}
.gas-block-intro-cards__card {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-3, 7.5px);
    height: 100%;
    padding: var(--gas-space-l, 20px);
    border-radius: var(--gas-radius-l, 7.5px);
    text-decoration: none;
    color: inherit;
}
.gas-block-intro-cards__icon {
    font-size: 20px;
    line-height: 1;
    margin-bottom: var(--gas-space-3, 7.5px);
}
.gas-block-intro-cards__card-title {
    margin: 0;
    font-size: var(--gas-text-l, 12.5px);
    line-height: 1.2;
}
.gas-block-intro-cards__card-text {
    margin: 0;
    font-size: var(--gas-text-m, 10px);
    line-height: var(--gas-prose-leading, 1.6);
    opacity: 0.92;
}
.gas-block-intro-cards__link {
    margin-top: auto;
    padding-top: var(--gas-space-3, 7.5px);
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-2, 5px);
    font-weight: 600;
}
.gas-block-intro-cards__link-arrow {
    transition: transform 0.2s ease;
}
a.gas-block-intro-cards__card:hover .gas-block-intro-cards__link-arrow {
    transform: translateX(4px);
}

/* Tons de carte (couleur de fond configurable). */
.gas-block-intro-cards--card-dark .gas-block-intro-cards__card {
    background: var(--gas-tone-dark-bg, #111827);
    color: var(--gas-tone-dark-fg, #f9fafb);
}
.gas-block-intro-cards--card-primary .gas-block-intro-cards__card {
    background: var(--gas-color-primary, #1a73e8);
    color: var(--gas-text-color-inverse);
}
.gas-block-intro-cards--card-accent .gas-block-intro-cards__card {
    background: var(--gas-accent-dark, #c8643c);
    color: var(--gas-text-color-inverse);
}
.gas-block-intro-cards--card-secondary .gas-block-intro-cards__card {
    background: var(--gas-color-secondary, #6b5b95);
    color: var(--gas-text-color-inverse);
}
.gas-block-intro-cards--card-surface .gas-block-intro-cards__card {
    background: var(--gas-color-surface, #fff);
    color: var(--gas-color-text, #161616);
    border: 1px solid var(--gas-color-border, #e0e0e0);
}

/* ===== newsletter_signup : bandeau d'inscription (texte + formulaire) ===== */
.gas-block-newsletter-signup {
    container-type: inline-size;
    padding: var(--gas-space-xl, 30px) var(--gas-space-l, 20px);
    border-radius: var(--gas-radius-m, 5px);
}
.gas-block-newsletter-signup__inner {
    display: grid;
    gap: var(--gas-space-xl, 30px);
    align-items: center;
}
@container (min-width: 760px) {
    .gas-block-newsletter-signup__inner {
        grid-template-columns: 1fr 1fr;
    }
}
.gas-block-newsletter-signup__eyebrow {
    margin: 0 0 var(--gas-space-3, 7.5px);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
}
.gas-block-newsletter-signup__title {
    margin: 0 0 var(--gas-space-3, 7.5px);
    font-size: var(--gas-text-2xl, 20px);
    line-height: 1.15;
}
.gas-block-newsletter-signup__lead {
    font-size: var(--gas-text-l, 11.25px);
    opacity: 0.9;
}
.gas-block-newsletter-signup__note {
    margin: 0 0 var(--gas-space-4, 10px);
    font-size: var(--gas-text-l, 12.5px);
}
.gas-block-newsletter-signup__fields {
    display: flex;
    gap: var(--gas-space-2, 5px);
    flex-wrap: wrap;
    background: var(--gas-color-surface, #fff);
    border-radius: var(--gas-radius-m, 5px);
    padding: 3.5px;
}
.gas-block-newsletter-signup__input {
    flex: 1 1 120px;
    min-width: 0;
    border: 0;
    padding: 8.5px 10px;
    font-size: var(--gas-text-m, 16px);
    background: transparent;
    color: var(--gas-color-text, #161616);
}
.gas-block-newsletter-signup__input:focus {
    outline: 2px solid var(--gas-color-primary, #1a73e8);
    outline-offset: -2px;
    border-radius: var(--gas-radius-sm, 2.5px);
}
.gas-block-newsletter-signup__button {
    flex: 0 0 auto;
    border: 0;
    cursor: pointer;
    padding: 8.5px 15px;
    border-radius: var(--gas-radius-sm, 2.5px);
    background: var(--gas-tone-dark-bg, #111827);
    color: var(--gas-tone-dark-fg, #f9fafb);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.gas-block-newsletter-signup__button:disabled {
    opacity: 0.6;
    cursor: default;
}
.gas-block-newsletter-signup__hp {
    position: absolute !important;
    left: -9999px;
    width: 1px;
    height: 1px;
    opacity: 0;
}
.gas-block-newsletter-signup__feedback {
    margin: var(--gas-space-3, 7.5px) 0 0;
    font-size: var(--gas-text-s, 8.75px);
    min-height: 1.2em;
}
.gas-block-newsletter-signup__feedback.is-error {
    font-weight: 600;
}

/* Tons de bandeau (couleur de fond configurable). */
.gas-block-newsletter-signup--band-accent {
    background: var(--gas-accent-dark, #c8643c);
    color: var(--gas-text-color-inverse);
}
.gas-block-newsletter-signup--band-primary {
    background: var(--gas-color-primary, #1a73e8);
    color: var(--gas-text-color-inverse);
}
.gas-block-newsletter-signup--band-dark {
    background: var(--gas-tone-dark-bg, #111827);
    color: var(--gas-tone-dark-fg, #f9fafb);
}
.gas-block-newsletter-signup--band-surface {
    background: var(--gas-color-surface-muted, #f0f1f3);
    color: var(--gas-color-text, #161616);
}
.gas-block-newsletter-signup--band-surface .gas-block-newsletter-signup__fields {
    border: 1px solid var(--gas-color-border, #e0e0e0);
}

/* Média optionnel (logo / illustration au-dessus du texte). */
.gas-block-newsletter-signup__media {
    margin: 0 0 var(--gas-space-4, 10px);
}
.gas-block-newsletter-signup__image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-m, 5px);
    object-fit: cover;
}

/* Layouts : stacked + centered_card repassent en une colonne centrée. */
.gas-block-newsletter-signup--layout-stacked .gas-block-newsletter-signup__inner,
.gas-block-newsletter-signup--layout-centered_card .gas-block-newsletter-signup__inner {
    grid-template-columns: 1fr;
    max-width: 400px;
    margin-inline: auto;
    text-align: center;
    gap: var(--gas-space-l, 20px);
}
.gas-block-newsletter-signup--layout-stacked .gas-block-newsletter-signup__fields,
.gas-block-newsletter-signup--layout-centered_card .gas-block-newsletter-signup__fields {
    justify-content: center;
}
.gas-block-newsletter-signup--layout-stacked .gas-block-newsletter-signup__media,
.gas-block-newsletter-signup--layout-centered_card .gas-block-newsletter-signup__media {
    max-width: 120px;
    margin-inline: auto;
}
/* Carte centrée : encart blanc posé sur la bande teintée. */
.gas-block-newsletter-signup--layout-centered_card .gas-block-newsletter-signup__inner {
    background: var(--gas-color-surface, #fff);
    color: var(--gas-color-text, #161616);
    padding: var(--gas-space-xl, 30px) var(--gas-space-l, 20px);
    border-radius: var(--gas-radius-l, 10px);
    box-shadow: 0 24px 60px -30px rgba(15, 23, 42, 0.45);
}

.gas-block-video-embed__frame {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: var(--gas-radius-md, 5px);
    overflow: hidden;
    background: var(--gas-topbar-bg);
    display: grid;
    place-items: center;
}

.gas-block-video-embed--ratio-4-3 .gas-block-video-embed__frame {
    aspect-ratio: 4 / 3;
}

.gas-block-video-embed--ratio-1-1 .gas-block-video-embed__frame {
    aspect-ratio: 1 / 1;
}

.gas-block-video-embed__iframe,
.gas-block-video-embed__video {
    width: 100%;
    height: 100%;
    border: 0;
}

.gas-block-faq__item + .gas-block-faq__item {
    margin-top: var(--gas-space-2, 5px);
}

.gas-block-faq__number {
    font-weight: 700;
    display: inline-block;
    margin-bottom: var(--gas-space-1, 2.5px);
}

/* ── faq : variante side_by_side (question à gauche, réponse à droite) ── */
.gas-block-faq--side_by_side .gas-block-faq__item {
    background: transparent;
    border: 0;
    border-top: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: 0;
    padding: var(--gas-space-l, 20px) 0;
}
.gas-block-faq--side_by_side .gas-block-faq__item + .gas-block-faq__item {
    margin-top: 0;
}
.gas-block-faq--side_by_side .gas-block-faq__question {
    margin: 0;
    font-size: var(--gas-text-l, 11.25px);
}
@media (min-width: 720px) {
    .gas-block-faq--side_by_side .gas-block-faq__item {
        display: grid;
        grid-template-columns: 2fr 3fr;
        gap: var(--gas-space-xl, 30px);
        align-items: start;
    }
}

@media (min-width: 768px) {
    .gas-block-hero--split .gas-block-hero__inner,
    .gas-block-cta-band__inner {
        grid-template-columns: 1fr 1fr;
    }

    /* Variante split image à gauche : on inverse l'ordre des colonnes (DOM reste
       texte-d'abord pour le mobile/a11y, où tout est empilé). */
    .gas-block-hero--split.gas-block-hero--media-left .gas-block-hero__content { order: 2; }
    .gas-block-hero--split.gas-block-hero--media-left .gas-block-hero__media { order: 1; }

    .gas-block-row__grid {
        grid-template-columns: var(--gas-block-row-columns, 1fr);
    }

    .gas-block-image-text-split__inner {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 767px) {
    .gas-block-shop-catalog__inner,
    .gas-block-placement-slot__inner {
        grid-template-columns: 1fr;
    }

    .gas-block-toc--collapsed-on-mobile {
        max-height: 37.5px;
        overflow: hidden;
        position: relative;
    }
}

/* ----------------------------------------------------------------------
 * Block: feature_lead
 * Vedette + colonne latérale de cards secondaires.
 * -------------------------------------------------------------------- */

.gas-block-feature-lead {
    display: block;
    margin-block: var(--gas-space-l, 20px);
}

.gas-block-feature-lead__inner {
    display: grid;
    gap: var(--gas-space-l, 20px);
    grid-template-columns: 2fr 1fr;
    align-items: start;
}

.gas-block-feature-lead--featured-right .gas-block-feature-lead__inner {
    grid-template-columns: 1fr 2fr;
}

.gas-block-feature-lead--featured-right .gas-block-feature-lead__featured {
    order: 2;
}

.gas-block-feature-lead--magazine .gas-block-feature-lead__inner {
    grid-template-columns: 3fr 1fr;
    gap: var(--gas-space-xl, 30px);
    border-block-start: 1px solid var(--gas-border-subtle, rgba(0, 0, 0, 0.08));
    border-block-end: 1px solid var(--gas-border-subtle, rgba(0, 0, 0, 0.08));
    padding-block: var(--gas-space-l, 20px);
}

.gas-block-feature-lead--stacked .gas-block-feature-lead__inner {
    grid-template-columns: 1fr;
}

.gas-block-feature-lead__featured {
    display: grid;
    gap: var(--gas-space-m, 15px);
}

.gas-block-feature-lead__featured-media {
    margin: 0;
    overflow: hidden;
    border-radius: var(--gas-radius-m, 7.5px);
}

.gas-block-feature-lead__featured-image {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
}

.gas-block-feature-lead__kicker {
    margin: 0;
    font-size: var(--gas-text-xs, 7.5px);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gas-color-text-muted, #666);
}

.gas-block-feature-lead__featured-title {
    margin: 0;
    font-size: var(--gas-text-2xl, 17.5px);
    line-height: 1.15;
}

.gas-block-feature-lead--magazine .gas-block-feature-lead__featured-title {
    font-size: var(--gas-text-3xl, 22.5px);
    font-family: var(--gas-font-serif, Georgia, serif);
}

.gas-block-feature-lead__featured-description {
    margin: 0;
    font-size: var(--gas-text-m, 10px);
    line-height: 1.6;
    color: var(--gas-color-text, inherit);
}

.gas-block-feature-lead__featured-cta {
    justify-self: start;
}

.gas-block-feature-lead__sidebar {
    display: grid;
    gap: var(--gas-space-m, 12.5px);
}

.gas-block-feature-lead__sidebar-title {
    margin: 0;
    font-size: var(--gas-text-l, 12.5px);
}

.gas-block-feature-lead__sidebar-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: var(--gas-space-m, 12.5px);
}

.gas-block-feature-lead--stacked .gas-block-feature-lead__sidebar-list {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.gas-block-feature-lead__sidebar-item {
    margin: 0;
}

.gas-block-feature-lead__sidebar-link {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: var(--gas-space-s, 7.5px);
    align-items: center;
    text-decoration: none;
    color: inherit;
    padding: var(--gas-space-xs, 5px);
    border-radius: var(--gas-radius-s, 5px);
    transition: background-color 0.15s ease;
}

a.gas-block-feature-lead__sidebar-link:hover,
a.gas-block-feature-lead__sidebar-link:focus-visible {
    background-color: var(--gas-color-surface-hover, rgba(0, 0, 0, 0.04));
}

.gas-block-feature-lead__sidebar-media {
    margin: 0;
    overflow: hidden;
    border-radius: var(--gas-radius-s, 5px);
    aspect-ratio: 1 / 1;
}

.gas-block-feature-lead__sidebar-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gas-block-feature-lead__sidebar-body {
    display: grid;
    gap: var(--gas-space-2xs, 2.5px);
}

.gas-block-feature-lead__sidebar-kicker {
    font-size: var(--gas-text-xs, 7px);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gas-color-text-muted, #666);
}

.gas-block-feature-lead__sidebar-name {
    font-size: var(--gas-text-m, 10px);
    line-height: 1.3;
    font-weight: 600;
}

@media (max-width: 768px) {
    .gas-block-feature-lead__inner,
    .gas-block-feature-lead--featured-right .gas-block-feature-lead__inner,
    .gas-block-feature-lead--magazine .gas-block-feature-lead__inner {
        grid-template-columns: 1fr;
    }
    .gas-block-feature-lead--featured-right .gas-block-feature-lead__featured {
        order: 0;
    }
}

/* ----------------------------------------------------------------------
 * Block: featured_encounter
 * Triptyque éditorial intro + média + fiche détail.
 * -------------------------------------------------------------------- */

.gas-block-featured-encounter {
    --_encounter-accent: var(--gas-accent-text, var(--gas-accent, #c96a4d));
    --_encounter-muted: var(--gas-color-text-muted, var(--gas-secondary, #83916f));
    --_encounter-text: var(--gas-color-text, #111111);
    --_encounter-border: var(--gas-border-subtle, rgba(17, 17, 17, 0.18));
    display: block;
    max-width: var(--gas-container-wide, 960px);
    margin-inline: auto;
    margin-block: var(--gas-space-2xl, 50px);
    padding-inline: var(--gas-space-m, 15px);
    color: var(--_encounter-text);
}

.gas-block-featured-encounter--compact {
    margin-block: var(--gas-space-xl, 30px);
}

.gas-block-featured-encounter__inner {
    display: grid;
    grid-template-columns: minmax(130px, 0.9fr) minmax(240px, 2fr) minmax(140px, 0.95fr);
    gap: var(--gas-space-xl, 30px);
    align-items: center;
}

.gas-block-featured-encounter--compact .gas-block-featured-encounter__inner {
    gap: var(--gas-space-l, 20px);
}

.gas-block-featured-encounter__intro,
.gas-block-featured-encounter__detail {
    min-width: 0;
}

.gas-block-featured-encounter__eyebrow,
.gas-block-featured-encounter__type {
    margin: 0 0 var(--gas-space-m, 12.5px) 0;
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.gas-block-featured-encounter__type {
    color: var(--_encounter-muted);
}

.gas-block-featured-encounter__headline,
.gas-block-featured-encounter__title,
.gas-block-featured-encounter__closing {
    font-family: var(--gas-font-serif, Georgia, serif);
    font-weight: 400;
    letter-spacing: 0;
}

.gas-block-featured-encounter__headline {
    display: grid;
    gap: var(--gas-space-2xs, 2.5px);
    margin: 0 0 var(--gas-space-l, 20px) 0;
    font-size: var(--gas-text-4xl, 35px);
    line-height: 1.03;
}

.gas-block-featured-encounter__headline-primary {
    color: var(--_encounter-accent);
}

.gas-block-featured-encounter__headline-secondary {
    color: var(--_encounter-muted);
}

.gas-block-featured-encounter__intro-text {
    margin: 0;
    font-size: var(--gas-text-xl, 15px);
    line-height: 1.45;
    font-weight: 600;
}

.gas-block-featured-encounter__archive-link,
.gas-block-featured-encounter__watch-link {
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-s, 7.5px);
    color: var(--_encounter-accent);
    text-decoration: none;
}

.gas-block-featured-encounter__archive-link {
    margin-block-start: var(--gas-space-xl, 30px);
    min-height: 35px;
    padding: 0 var(--gas-space-m, 15px);
    border: 1px solid var(--_encounter-muted);
    border-radius: var(--gas-radius-s, 3.5px);
    color: var(--_encounter-muted);
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.gas-block-featured-encounter__archive-link:hover,
.gas-block-featured-encounter__archive-link:focus-visible {
    background: color-mix(in srgb, var(--_encounter-muted) 9%, transparent);
}

.gas-block-featured-encounter__media {
    margin: 0;
}

.gas-block-featured-encounter__media-frame {
    position: relative;
    display: block;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    min-height: 260px;
    color: inherit;
    background: var(--gas-color-surface-muted, #f4f1ec);
    text-decoration: none;
}

.gas-block-featured-encounter__image,
.gas-block-featured-encounter__image-placeholder {
    display: block;
    width: 100%;
    height: 100%;
}

.gas-block-featured-encounter__image {
    object-fit: cover;
}

.gas-block-featured-encounter__image-placeholder {
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--_encounter-accent) 18%, transparent), transparent),
        var(--gas-color-surface-muted, #f4f1ec);
}

.gas-block-featured-encounter__play {
    position: absolute;
    inset: 50% auto auto 50%;
    width: 50px;
    height: 50px;
    border: 2px solid var(--gas-color-white, #ffffff);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    background: color-mix(in srgb, var(--gas-color-text-default) 12%, transparent);
}

.gas-block-featured-encounter__play::before {
    content: "";
    position: absolute;
    inset: 50% auto auto 53%;
    width: 0;
    height: 0;
    border-block: 7.5px solid transparent;
    border-inline-start: 12.5px solid var(--gas-color-white, #ffffff);
    transform: translate(-50%, -50%);
}

.gas-block-featured-encounter__title {
    margin: 0 0 var(--gas-space-s, 7.5px) 0;
    color: var(--_encounter-accent);
    font-size: var(--gas-text-3xl, 22.5px);
    line-height: 1.08;
}

.gas-block-featured-encounter__person {
    margin: 0 0 var(--gas-space-m, 15px) 0;
    font-size: var(--gas-text-m, 10px);
    font-weight: 700;
}

.gas-block-featured-encounter__description {
    margin: 0;
    font-size: var(--gas-text-m, 10px);
    line-height: 1.45;
    font-weight: 600;
}

.gas-block-featured-encounter__watch-link {
    margin-block-start: var(--gas-space-l, 20px);
    font-size: var(--gas-text-m, 10px);
    font-weight: 600;
}

.gas-block-featured-encounter__meta {
    display: grid;
    gap: var(--gas-space-s, 7.5px);
    margin-block-start: var(--gas-space-xl, 30px);
    padding-block-start: var(--gas-space-m, 15px);
    border-block-start: 1px solid var(--_encounter-border);
    font-size: var(--gas-text-m, 10px);
    font-weight: 600;
}

.gas-block-featured-encounter__meta p {
    margin: 0;
}

.gas-block-featured-encounter__keywords-label {
    margin-inline-end: 2.5px;
}

.gas-block-featured-encounter__keywords {
    color: var(--_encounter-accent);
}

.gas-block-featured-encounter__closing {
    max-width: 720px;
    margin: var(--gas-space-2xl, 50px) 0 0 0;
    color: var(--_encounter-muted);
    font-size: var(--gas-text-4xl, 35px);
    line-height: 1.08;
}

@media (max-width: 1180px) {
    .gas-block-featured-encounter__inner {
        grid-template-columns: minmax(140px, 0.8fr) minmax(200px, 1.2fr);
    }

    .gas-block-featured-encounter__detail {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: minmax(140px, 0.8fr) minmax(200px, 1.2fr);
        gap: var(--gas-space-l, 20px) var(--gas-space-xl, 30px);
        align-items: start;
    }

    .gas-block-featured-encounter__detail > :not(.gas-block-featured-encounter__meta) {
        grid-column: 1;
    }

    .gas-block-featured-encounter__meta {
        grid-column: 2;
        grid-row: 1 / span 5;
        margin-block-start: 0;
    }
}

@media (max-width: 760px) {
    .gas-block-featured-encounter {
        margin-block: var(--gas-space-xl, 30px);
        padding-inline: var(--gas-space-s, 10px);
    }

    .gas-block-featured-encounter__inner,
    .gas-block-featured-encounter__detail {
        grid-template-columns: 1fr;
    }

    .gas-block-featured-encounter__headline {
        font-size: var(--gas-text-3xl, 22.5px);
    }

    .gas-block-featured-encounter__intro-text {
        font-size: var(--gas-text-l, 12.5px);
    }

    .gas-block-featured-encounter__media-frame {
        min-height: 180px;
    }

    .gas-block-featured-encounter__detail > :not(.gas-block-featured-encounter__meta),
    .gas-block-featured-encounter__meta {
        grid-column: auto;
        grid-row: auto;
    }

    .gas-block-featured-encounter__meta {
        margin-block-start: var(--gas-space-l, 20px);
    }

    .gas-block-featured-encounter__closing {
        margin-block-start: var(--gas-space-xl, 30px);
        font-size: var(--gas-text-3xl, 22.5px);
    }
}

/* ----------------------------------------------------------------------
 * Block: card_carousel
 * Rangée scrollable horizontale de cards (livres, produits, contenus).
 * -------------------------------------------------------------------- */

.gas-block-card-carousel {
    margin-block: var(--gas-space-l, 20px);
    position: relative;
}

.gas-block-card-carousel__title {
    margin: 0 0 var(--gas-space-m, 15px) 0;
    font-size: var(--gas-text-2xl, 17.5px);
    text-align: center;
}

.gas-block-card-carousel__viewport {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
    padding-block: var(--gas-space-xs, 5px);
}

.gas-block-card-carousel__track {
    display: grid;
    grid-auto-flow: column;
    gap: var(--gas-space-m, 15px);
    padding-inline: var(--gas-space-xs, 5px);
}

.gas-block-card-carousel--cols-2 .gas-block-card-carousel__track {
    grid-auto-columns: calc((100% - var(--gas-space-m, 15px) * 1) / 2);
}

.gas-block-card-carousel--cols-3 .gas-block-card-carousel__track {
    grid-auto-columns: calc((100% - var(--gas-space-m, 15px) * 2) / 3);
}

.gas-block-card-carousel--cols-4 .gas-block-card-carousel__track {
    grid-auto-columns: calc((100% - var(--gas-space-m, 15px) * 3) / 4);
}

.gas-block-card-carousel--cols-5 .gas-block-card-carousel__track {
    grid-auto-columns: calc((100% - var(--gas-space-m, 15px) * 4) / 5);
}

.gas-block-card-carousel--with-peek .gas-block-card-carousel__track {
    padding-inline-end: 20%;
}

.gas-block-card-carousel__item {
    scroll-snap-align: start;
    min-width: 0;
}

.gas-block-card-carousel__link {
    display: grid;
    gap: var(--gas-space-xs, 5px);
    text-decoration: none;
    color: inherit;
}

.gas-block-card-carousel__media {
    margin: 0;
    overflow: hidden;
    border-radius: var(--gas-radius-s, 5px);
    aspect-ratio: 3 / 4;
    background: var(--gas-color-surface-muted, #f5f5f5);
}

.gas-block-card-carousel__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gas-block-card-carousel__badge {
    position: absolute;
    inset-block-start: var(--gas-space-xs, 5px);
    inset-inline-start: var(--gas-space-xs, 5px);
    background: var(--gas-color-accent-bg, #111);
    color: var(--gas-color-accent-fg, #fff);
    padding: 1.5px 5px;
    font-size: var(--gas-text-xs, 7px);
    border-radius: var(--gas-radius-xs, 2.5px);
}

.gas-block-card-carousel__title-item {
    font-size: var(--gas-text-m, 10px);
    font-weight: 600;
    margin: 0;
    line-height: 1.3;
}

.gas-block-card-carousel__subtitle {
    font-size: var(--gas-text-s, 8.75px);
    color: var(--gas-color-text-muted, #666);
    margin: 0;
}

.gas-block-card-carousel--compact .gas-block-card-carousel__media {
    aspect-ratio: 1 / 1;
}

@media (max-width: 768px) {
    .gas-block-card-carousel--cols-3 .gas-block-card-carousel__track,
    .gas-block-card-carousel--cols-4 .gas-block-card-carousel__track,
    .gas-block-card-carousel--cols-5 .gas-block-card-carousel__track {
        grid-auto-columns: 60%;
    }
}

/* ----------------------------------------------------------------------
 * Block: image_collage — composition de tuiles superposées, presets figés.
 * -------------------------------------------------------------------- */
.gas-block-image-collage {
    max-width: var(--gas-container, var(--gas-container-default));
    margin-inline: auto;
}

/* Tuile générique : ratio, coins arrondis, image en couverture. */
.gas-block-image-collage__tile {
    position: relative;
    margin: 0;
    overflow: hidden;
    border-radius: var(--gas-radius-lg, 7.5px);
    background: var(--gas-color-surface, #fff);
    box-shadow: 0 18px 40px -24px rgba(0, 0, 0, 0.45);
}

.gas-block-image-collage__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Libellé + légende en surimpression bas de tuile. */
.gas-block-image-collage__overlay {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-1, 2.5px);
    padding: var(--gas-space-4, 10px);
    color: var(--gas-text-color-inverse);
    background: linear-gradient(to top, var(--gas-bg-overlay), transparent);
}

.gas-block-image-collage__label {
    font-size: var(--gas-text-lg, 11.25px);
    font-weight: 600;
    line-height: 1.15;
}

.gas-block-image-collage__caption {
    font-size: var(--gas-text-sm, 8.5px);
    opacity: 0.9;
}

/* Pastille de lecture vidéo, centrée. */
.gas-block-image-collage__play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.gas-block-image-collage__play-icon {
    width: 64px;
    height: 64px;
    padding: 16px;
    color: var(--gas-color-text, #161616);
    background: color-mix(in srgb, var(--gas-color-surface-card) 90%, transparent);
    border-radius: 999px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.5);
}

/* Carte statistique (pas d'image). */
.gas-block-image-collage__tile--stat {
    display: flex;
    align-items: center;
    justify-content: center;
}

.gas-block-image-collage__stat {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-2, 5px);
    padding: var(--gas-space-4, 10px);
    text-align: center;
}

.gas-block-image-collage__stat-value {
    font-size: var(--gas-text-4xl, 25px);
    font-weight: 700;
    line-height: 1;
    color: var(--gas-color-text, #161616);
}

.gas-block-image-collage__stat-label {
    font-size: var(--gas-text-xs, 7.5px);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gas-color-text-muted, #555);
}

.gas-block-image-collage__stat-text {
    margin: 0;
    font-size: var(--gas-text-sm, 8.5px);
    color: var(--gas-color-text, #161616);
}

/* Preset editorial-feature : maquette (grande tuile + 2 moyennes + stat). */
.gas-block-image-collage--editorial-feature {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    grid-template-rows: auto auto;
    gap: var(--gas-space-4, 10px);
}

.gas-block-image-collage--editorial-feature .gas-block-image-collage__tile--pos-1 {
    grid-column: 1 / 5;
    grid-row: 1;
    aspect-ratio: 4 / 3;
}

.gas-block-image-collage--editorial-feature .gas-block-image-collage__tile--pos-2 {
    grid-column: 4 / 7;
    grid-row: 1 / 3;
    align-self: center;
    aspect-ratio: 3 / 4;
    transform: translateY(var(--gas-space-6, 32px));
}

.gas-block-image-collage--editorial-feature .gas-block-image-collage__tile--pos-3 {
    grid-column: 1 / 4;
    grid-row: 2;
    aspect-ratio: 4 / 3;
}

.gas-block-image-collage--editorial-feature .gas-block-image-collage__tile--pos-4 {
    grid-column: 3 / 6;
    grid-row: 2;
    align-self: end;
    transform: translateY(var(--gas-space-4, 10px));
}

/* Preset staggered-3 : 3 tuiles décalées verticalement. */
.gas-block-image-collage--staggered-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--gas-space-4, 10px);
    align-items: start;
}

.gas-block-image-collage--staggered-3 .gas-block-image-collage__tile {
    aspect-ratio: 3 / 4;
}

.gas-block-image-collage--staggered-3 .gas-block-image-collage__tile--pos-2 {
    transform: translateY(var(--gas-space-6, 32px));
}

.gas-block-image-collage--staggered-3 .gas-block-image-collage__tile--pos-3 {
    transform: translateY(calc(var(--gas-space-6, 32px) * 2));
}

/* Preset mosaic-4 : mosaïque régulière 2×2, sans chevauchement. */
.gas-block-image-collage--mosaic-4 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--gas-space-4, 10px);
}

.gas-block-image-collage--mosaic-4 .gas-block-image-collage__tile {
    aspect-ratio: 1 / 1;
}

/* Responsive : tous les presets s'empilent en une colonne sans décalage. */
@media (max-width: 768px) {
    .gas-block-image-collage--editorial-feature,
    .gas-block-image-collage--staggered-3,
    .gas-block-image-collage--mosaic-4 {
        display: flex;
        flex-direction: column;
        gap: var(--gas-space-4, 10px);
    }

    .gas-block-image-collage--editorial-feature .gas-block-image-collage__tile,
    .gas-block-image-collage--staggered-3 .gas-block-image-collage__tile,
    .gas-block-image-collage--mosaic-4 .gas-block-image-collage__tile {
        grid-column: auto;
        grid-row: auto;
        transform: none;
        aspect-ratio: 4 / 3;
    }
}

/* ----------------------------------------------------------------------
 * Block: contact_form mock fallback
 * Rendu visuel quand aucun formulaire réel n'est connecté.
 * -------------------------------------------------------------------- */

.gas-block-contact-form__mock {
    display: grid;
    gap: var(--gas-space-m, 10px);
    max-width: 360px;
}

.gas-block-contact-form__mock-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--gas-space-m, 10px);
}

.gas-block-contact-form__mock-label {
    display: grid;
    gap: var(--gas-space-2xs, 3px);
    font-size: var(--gas-text-s, 8.75px);
    color: var(--gas-color-text, inherit);
}

.gas-block-contact-form__mock-label > span {
    font-weight: 500;
}

.gas-block-contact-form__mock-label input,
.gas-block-contact-form__mock-label select,
.gas-block-contact-form__mock-label textarea {
    width: 100%;
    padding: 6px 8px;
    border: 1px solid var(--gas-border-subtle, rgba(0,0,0,0.15));
    border-radius: var(--gas-radius-s, 5px);
    font-size: var(--gas-text-s, 14px);
    font-family: inherit;
    background: var(--gas-color-surface-card);
}

.gas-block-contact-form__mock-label textarea {
    resize: vertical;
    min-height: 60px;
}

.gas-block-contact-form__mock-consent {
    display: flex;
    align-items: flex-start;
    gap: var(--gas-space-s, 5px);
    font-size: var(--gas-text-s, 8.75px);
    color: var(--gas-color-text-muted, #555);
}

.gas-block-contact-form__mock-note {
    font-size: var(--gas-text-xs, 7.5px);
    color: var(--gas-color-text-muted, #777);
    margin: 0;
}

@media (max-width: 600px) {
    .gas-block-contact-form__mock-row {
        grid-template-columns: 1fr;
    }
}

/* ----------------------------------------------------------------------
 * Modifiers transverses : is-tone-*, is-align-*, density/container
 * Appliqués au root [data-block-type] de tout block (cf. schemas/*.php).
 * -------------------------------------------------------------------- */

/* Tone : surface (défaut, transparent), accent (teinte douce),
 * primary (couleur de marque), dark (sombre, texte clair). */
/* NB : pas de `color:` ici — un bloc surface imbriqué dans une bande sombre doit
 * hériter du texte clair de la bande (--gas-tone-surface-fg = texte de base,
 * non réassigné par les tones sombres). */
[data-block-type].is-tone-surface { background: var(--gas-tone-surface-bg, transparent); }

[data-block-type].is-tone-accent {
    background: var(--gas-tone-accent-bg, #f3f4f6);
    color: var(--gas-tone-accent-fg, inherit);
    padding-block: var(--gas-space-l, 20px);
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-m, 7.5px);
    /* bande accent claire (ultra-light) : le texte de marque reste lisible en foncé. */
    --gas-accent-text: var(--gas-accent-ultra-dark);
    --gas-primary-text: var(--gas-color-primary);
}

/* Tones sombres (primary/dark) : on REDÉFINIT les tokens --gas-color-* DANS la section
 * (comme le dark mode) au lieu de forcer la couleur via `*`. Ainsi cartes, texte, bordures
 * et boutons s'adaptent ensemble — fini le « texte clair sur carte blanche ». */
[data-block-type].is-tone-primary {
    background: var(--gas-tone-primary-bg, #1d4ed8);
    color: var(--gas-tone-primary-fg, #fff);
    padding-block: var(--gas-space-l, 20px);
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-m, 7.5px);
    --gas-color-text: var(--gas-tone-primary-fg, #fff);
    --gas-color-text-muted: var(--gas-primary-ultra-light);
    --gas-color-surface-card: var(--gas-primary-dark);
    --gas-color-surface: var(--gas-primary);
    --gas-color-border: var(--gas-primary-light);
    /* fond teal saturé : texte de marque → foreground clair. */
    --gas-accent-text: var(--gas-tone-primary-fg, #fff);
    --gas-primary-text: var(--gas-tone-primary-fg, #fff);
}
[data-block-type].is-tone-dark {
    background: var(--gas-tone-dark-bg, #111827);
    color: var(--gas-tone-dark-fg, #f9fafb);
    padding-block: var(--gas-space-l, 20px);
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-m, 7.5px);
    --gas-color-text: var(--gas-tone-dark-fg, #f9fafb);
    --gas-color-text-muted: var(--gas-neutral-400);
    --gas-color-surface-card: var(--gas-neutral-800);
    --gas-color-surface: var(--gas-neutral-900);
    --gas-color-border: var(--gas-neutral-700);
    /* fond sombre : texte de marque → variantes claires (lisibles sur noir).
       primary-light (L36%) reste trop foncé sur cette bande → ultra-light (L95%). */
    --gas-accent-text: var(--gas-accent-light);
    --gas-primary-text: var(--gas-primary-ultra-light);
}
/* Liens textuels hérités soulignés sur tones sombres (les .gas-button gardent leur style). */
[data-block-type].is-tone-primary a:not(.gas-button),
[data-block-type].is-tone-dark a:not(.gas-button) {
    color: inherit;
    text-decoration: underline;
}

/* Align : impose un text-align au contenu interne. */
[data-block-type].is-align-left { text-align: left; }
[data-block-type].is-align-center { text-align: center; }
[data-block-type].is-align-center :is(.gas-block-cta__actions, .gas-block-hero__actions, .gas-block-cta-band__actions, .gas-block-feature-lead__featured-body) { justify-content: center; }
[data-block-type].is-align-right { text-align: right; }
[data-block-type].is-align-right :is(.gas-block-cta__actions, .gas-block-hero__actions, .gas-block-cta-band__actions) { justify-content: flex-end; }

/* ----------------------------------------------------------------------
 * Polish : petits blocks (cta, cta_band, member_cta, info_box)
 * Plus de padding, fonds doux, espacements généreux pour un rendu pro.
 * -------------------------------------------------------------------- */

.gas-block-cta {
    padding-block: var(--gas-space-l, 20px);
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-m, 7.5px);
    background: var(--gas-tone-accent-bg, #f8fafc);
    text-align: center;
    margin-block: var(--gas-space-l, 20px);
}

.gas-block-cta--none {
    background: transparent;
    padding-block: var(--gas-space-m, 15px);
}

.gas-block-cta--primary {
    background: var(--gas-tone-primary-bg, #1d4ed8);
    color: var(--gas-text-color-inverse);
}

.gas-block-cta--soft {
    background: var(--gas-tone-accent-bg, #eef2ff);
}

.gas-block-cta__inner {
    max-width: 400px;
    margin-inline: auto;
    display: grid;
    gap: var(--gas-space-m, 10px);
}

.gas-block-cta__title {
    margin: 0;
    font-size: var(--gas-text-xl, 15px);
    line-height: 1.2;
}

.gas-block-cta__text {
    margin: 0;
    font-size: var(--gas-text-m, 10px);
    color: var(--gas-color-text-muted, #4b5563);
    opacity: 0.85;
}

.gas-block-cta__actions {
    display: flex;
    gap: var(--gas-space-s, 7.5px);
    flex-wrap: wrap;
    justify-content: center;
}

.gas-block-cta--primary :is(.gas-block-cta__title, .gas-block-cta__text) {
    color: inherit;
}

.gas-block-cta-band {
    padding-block: var(--gas-space-l, 20px);
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-m, 7.5px);
    margin-block: var(--gas-space-l, 20px);
}

.gas-block-cta-band__inner {
    display: flex;
    gap: var(--gas-space-l, 20px);
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    max-width: 600px;
    margin-inline: auto;
    padding: var(--gas-space-l, 20px) var(--gas-space-xl, 27.5px);
    border-radius: var(--gas-radius-l, 14px);
}

@media (max-width: 640px) {
    .gas-block-cta-band__inner {
        padding: var(--gas-space-m, 15px);
    }
}

.gas-block-cta-band__content {
    display: grid;
    gap: var(--gas-space-2xs, 3px);
    flex: 1;
    min-width: 160px;
}

.gas-block-cta-band__title {
    margin: 0;
    font-size: var(--gas-text-l, 12.5px);
    line-height: 1.2;
}

.gas-block-cta-band__subtitle {
    margin: 0;
    opacity: 0.85;
    font-size: var(--gas-text-m, 10px);
}

.gas-block-cta-band__actions {
    display: flex;
    gap: var(--gas-space-s, 7.5px);
    flex-wrap: wrap;
}

.gas-block-cta-band--primary :is(.gas-block-cta-band__title, .gas-block-cta-band__subtitle) {
    color: inherit;
}

/* Member CTA : pro card avec ombre légère, padding généreux. */
.gas-block-member-cta {
    border: 1px solid var(--gas-border-subtle, rgba(0, 0, 0, 0.08));
    border-radius: var(--gas-radius-l, 10px);
    padding: var(--gas-space-l, 20px);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    background: var(--gas-color-surface-card);
    margin-block: var(--gas-space-l, 20px);
}

.gas-block-member-cta--showcase {
    background: linear-gradient(135deg, var(--gas-tone-accent-bg, #eef2ff), #fff);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
}

.gas-block-member-cta__inner {
    display: grid;
    gap: var(--gas-space-m, 10px);
    text-align: center;
    max-width: 360px;
    margin-inline: auto;
}

.gas-block-member-cta__title {
    margin: 0;
    font-size: var(--gas-text-xl, 15px);
}

.gas-block-member-cta__subtitle {
    margin: 0;
    color: var(--gas-color-text-muted, #6b7280);
}

.gas-block-member-cta__actions {
    display: flex;
    gap: var(--gas-space-s, 7.5px);
    justify-content: center;
    flex-wrap: wrap;
    margin-top: var(--gas-space-s, 5px);
}

/* ============================================================
 * CONTAINER QUERIES — adaptation des blocs grids à leur container
 *
 * Au lieu de scaler selon le viewport (@media), les grids scalent
 * selon la largeur de leur PARENT. Un block placé dans une colonne
 * étroite (sidebar, row 1/2+1/2) reçoit naturellement moins de
 * colonnes. Le modifier --cols-N agit comme PLAFOND : "max N
 * colonnes si la container width le permet, sinon réduit".
 *
 * Breakpoints choisis :
 *   < 420px  : 1 col (mobile, sidebar)
 *   420-680  : 2 cols max
 *   680-900  : 3 cols max
 *   900-1140 : 4 cols max
 *   >=1140   : 5-6 cols max (logo_cloud)
 * ============================================================ */

.gas-block-features-grid,
.gas-block-team-grid,
.gas-block-gallery,
.gas-block-logo-cloud,
.gas-block-stats,
.gas-block-card-carousel,
.gas-block-image-text-split,
.gas-block-feature-lead,
.gas-block-row {
    container-type: inline-size;
}

/* Grids classiques (features_grid, team_grid, gallery, logo_cloud, stats) :
 * grid-template-columns scale par paliers de container width.
 * Base mobile (avant tout breakpoint) = 1 colonne. */
.gas-block-features-grid__grid,
.gas-block-team-grid__grid,
.gas-block-gallery__grid,
.gas-block-logo-cloud__grid,
.gas-block-stats__grid {
    grid-template-columns: 1fr;
}

@container (min-width: 420px) {
    .gas-block-features-grid--cols-2 .gas-block-features-grid__grid,
    .gas-block-features-grid--cols-3 .gas-block-features-grid__grid,
    .gas-block-features-grid--cols-4 .gas-block-features-grid__grid,
    .gas-block-team-grid--cols-2 .gas-block-team-grid__grid,
    .gas-block-team-grid--cols-3 .gas-block-team-grid__grid,
    .gas-block-team-grid--cols-4 .gas-block-team-grid__grid,
    .gas-block-gallery--cols-2 .gas-block-gallery__grid,
    .gas-block-gallery--cols-3 .gas-block-gallery__grid,
    .gas-block-gallery--cols-4 .gas-block-gallery__grid,
    .gas-block-logo-cloud--cols-3 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-4 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-5 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-6 .gas-block-logo-cloud__grid,
    .gas-block-stats__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@container (min-width: 680px) {
    .gas-block-features-grid--cols-3 .gas-block-features-grid__grid,
    .gas-block-features-grid--cols-4 .gas-block-features-grid__grid,
    .gas-block-team-grid--cols-3 .gas-block-team-grid__grid,
    .gas-block-team-grid--cols-4 .gas-block-team-grid__grid,
    .gas-block-gallery--cols-3 .gas-block-gallery__grid,
    .gas-block-gallery--cols-4 .gas-block-gallery__grid,
    .gas-block-logo-cloud--cols-3 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-4 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-5 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-6 .gas-block-logo-cloud__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .gas-block-stats--cards .gas-block-stats__grid,
    .gas-block-stats--inline .gas-block-stats__grid {
        grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    }
}

@container (min-width: 900px) {
    .gas-block-features-grid--cols-4 .gas-block-features-grid__grid,
    .gas-block-team-grid--cols-4 .gas-block-team-grid__grid,
    .gas-block-gallery--cols-4 .gas-block-gallery__grid,
    .gas-block-logo-cloud--cols-4 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-5 .gas-block-logo-cloud__grid,
    .gas-block-logo-cloud--cols-6 .gas-block-logo-cloud__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* features_grid en 1 colonne : liste verticale éditoriale, icône (badge rond)
 * à gauche du titre + description, sans carte. Reste mono-colonne à toute
 * largeur (pas promu dans les @container ci-dessus). Idéal en colonne de page
 * ou comme enfant d'un row 1/2+1/2. */
.gas-block-features-grid--cols-1 .gas-block-features-grid__grid {
    grid-template-columns: 1fr;
    gap: var(--gas-space-l, 20px);
}
.gas-block-features-grid--cols-1 .gas-block-features-grid__item {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: var(--gas-space-m, 15px);
    align-items: start;
    background: none;
    border: 0;
    padding: 0;
}
/* ── features_grid : taille des icônes ── */
.gas-block-features-grid--icon-none .gas-block-features-grid__icon {
    display: none;
}
.gas-block-features-grid--icon-small .gas-block-features-grid__icon {
    font-size: 15px;
    line-height: 1;
}
.gas-block-features-grid--icon-medium .gas-block-features-grid__icon {
    font-size: 22.5px;
    line-height: 1;
}
.gas-block-features-grid--icon-large .gas-block-features-grid__icon {
    font-size: 32.5px;
    line-height: 1;
}

.gas-block-features-grid--cols-1 .gas-block-features-grid__icon {
    grid-row: 1 / span 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 27.5px;
    height: 27.5px;
    border-radius: 50%;
    background: var(--gas-color-surface-muted, #f0f1f3);
    font-size: var(--gas-text-l, 12.5px);
    line-height: 1;
}
.gas-block-features-grid--cols-1 .gas-block-features-grid__item-title,
.gas-block-features-grid--cols-1 .gas-block-features-grid__item-text {
    grid-column: 2;
    margin: 0;
}
.gas-block-features-grid--cols-1 .gas-block-features-grid__item-text {
    margin-top: var(--gas-space-2, 5px);
}

@container (min-width: 1140px) {
    .gas-block-logo-cloud--cols-5 .gas-block-logo-cloud__grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
    .gas-block-logo-cloud--cols-6 .gas-block-logo-cloud__grid {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}

/* image_text_split : devient mono-col en container < 640px */
.gas-block-image-text-split__inner {
    display: grid;
    gap: var(--gas-space-m, 15px);
    grid-template-columns: 1fr;
}
@container (min-width: 640px) {
    .gas-block-image-text-split__inner {
        grid-template-columns: 1fr 1fr;
        align-items: center;
    }
    .gas-block-image-text-split--right .gas-block-image-text-split__media {
        order: 2;
    }

    /* media_fill : l'image s'étire sur toute la hauteur de la colonne texte
     * (cover) au lieu de garder son ratio naturel centré. Gated sur la classe
     * pour ne pas affecter les usages existants (image centrée hauteur auto). */
    .gas-block-image-text-split--media-fill .gas-block-image-text-split__inner {
        align-items: stretch;
    }
    .gas-block-image-text-split--media-fill .gas-block-image-text-split__media {
        height: 100%;
    }
    .gas-block-image-text-split--media-fill .gas-block-image-text-split__image {
        height: 100%;
        object-fit: cover;
    }
}

/* feature_lead : vedette + sidebar en 2/3+1/3 quand assez large, sinon stack */
@container (max-width: 768px) {
    .gas-block-feature-lead__inner,
    .gas-block-feature-lead--featured-right .gas-block-feature-lead__inner,
    .gas-block-feature-lead--magazine .gas-block-feature-lead__inner {
        grid-template-columns: 1fr;
    }
}

/* row : passe en colonne unique quand container < 640px (au lieu du media 768px global) */
@container (max-width: 640px) {
    .gas-block-row__grid {
        grid-template-columns: 1fr !important;
    }
}

/* card_carousel : nombre de cards visibles à la fois adapté au container */
@container (max-width: 600px) {
    .gas-block-card-carousel--cols-3 .gas-block-card-carousel__track,
    .gas-block-card-carousel--cols-4 .gas-block-card-carousel__track,
    .gas-block-card-carousel--cols-5 .gas-block-card-carousel__track {
        grid-auto-columns: 65%;
    }
}
@container (min-width: 600px) and (max-width: 900px) {
    .gas-block-card-carousel--cols-4 .gas-block-card-carousel__track,
    .gas-block-card-carousel--cols-5 .gas-block-card-carousel__track {
        grid-auto-columns: calc((100% - var(--gas-space-m, 15px) * 2) / 3);
    }
}


/* =============================================================
   Couleurs de texte par token (mark richtext gas-rt-color--*)
   Partagé : éditeur admin + rendu frontend WP/Astro.
   ============================================================= */
.gas-rt-color--primary { color: var(--gas-primary-text); }
.gas-rt-color--primary-dark { color: var(--gas-primary-dark); }
.gas-rt-color--primary-light { color: var(--gas-primary-light); }
.gas-rt-color--secondary { color: var(--gas-secondary); }
.gas-rt-color--secondary-dark { color: var(--gas-secondary-dark); }
.gas-rt-color--accent { color: var(--gas-accent-text); }
.gas-rt-color--accent-dark { color: var(--gas-accent-dark); }
.gas-rt-color--accent-light { color: var(--gas-accent-light); }
.gas-rt-color--success { color: var(--gas-success); }
.gas-rt-color--warning { color: var(--gas-warning); }
.gas-rt-color--danger { color: var(--gas-danger); }
.gas-rt-color--info { color: var(--gas-info); }
.gas-rt-color--neutral-900 { color: var(--gas-neutral-900); }
.gas-rt-color--neutral-700 { color: var(--gas-neutral-700); }
.gas-rt-color--neutral-500 { color: var(--gas-neutral-500); }

/* =============================================================
   Bloc statement — grande phrase d'accroche typographique
   ============================================================= */
.gas-block-statement {
    padding-block: var(--gas-block-gap-l, 20px);
}
.gas-block-statement__inner {
    max-width: var(--gas-container, var(--gas-container-wide, 720px));
    margin-inline: auto;
    padding-inline: var(--gas-block-pad-x, 12.5px);
}
.gas-block-statement__eyebrow {
    margin: 0 0 var(--gas-space-3, 7.5px);
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-statement__text {
    margin: 0;
    font-family: var(--gas-font-heading, var(--gas-font-base, inherit));
    font-weight: 600;
    line-height: 1.1;
    color: var(--gas-color-text, var(--gas-neutral-900));
}
.gas-block-statement__text :is(p, h1, h2, h3) {
    margin: 0 0 0.2em;
}
.gas-block-statement__text :is(p, h1, h2, h3):last-child {
    margin-bottom: 0;
}
.gas-block-statement--size-l .gas-block-statement__text { font-size: var(--gas-text-2xl, clamp(15px, 3vw, 22.5px)); }
.gas-block-statement--size-xl .gas-block-statement__text { font-size: var(--gas-text-3xl, clamp(20px, 5vw, 35px)); }
.gas-block-statement--size-display .gas-block-statement__text { font-size: clamp(25px, 7vw, 50px); }
.gas-block-statement.is-align-center { text-align: center; }
.gas-block-statement.is-align-right { text-align: right; }

/* =============================================================
   Bloc country_cloud — nuage de pays sur carte du monde
   ============================================================= */
.gas-block-country-cloud {
    padding-block: var(--gas-block-gap-m, 15px);
}
.gas-block-country-cloud__inner {
    position: relative;
    max-width: var(--gas-container, var(--gas-container-default, 640px));
    margin-inline: auto;
    min-height: 120px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.gas-block-country-cloud__map {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    opacity: 0.45;
    pointer-events: none;
    z-index: 0;
}
.gas-block-country-cloud__list {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35em 0.9em;
    margin: 0;
    padding: 0;
    list-style: none;
}
.gas-block-country-cloud.is-align-center .gas-block-country-cloud__list { justify-content: center; }
.gas-block-country-cloud.is-align-right .gas-block-country-cloud__list { justify-content: flex-end; }
.gas-block-country-cloud__item {
    font-family: var(--gas-font-heading, var(--gas-font-base, inherit));
    font-weight: 700;
    line-height: 1;
}
.gas-block-country-cloud__item--size-s { font-size: var(--gas-text-l, 12.5px); }
.gas-block-country-cloud__item--size-m { font-size: var(--gas-text-xl, 17.5px); }
.gas-block-country-cloud__item--size-l { font-size: clamp(20px, 4vw, 30px); }
.gas-block-country-cloud__item--size-xl { font-size: clamp(27.5px, 6vw, 45px); }
.gas-block-country-cloud__more {
    position: relative;
    z-index: 1;
    margin: 7.5px 0 0;
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 700;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-country-cloud.is-align-center .gas-block-country-cloud__more { text-align: center; }
.gas-block-country-cloud.is-align-right .gas-block-country-cloud__more { text-align: right; }

/* ==========================================================================
   Bloc pathway_cards — en-tête colorable + grille de cartes « porte d'entrée »
   ========================================================================== */
.gas-block-pathway-cards {
    --gas-pathway-card-bg: var(--gas-color-surface-card, var(--gas-bg-elevated, #fff));
    box-sizing: border-box;
    width: 100%;
    max-width: var(--gas-container, var(--gas-site-max-width, 1280px));
    margin-inline: auto;
    padding-block: var(--gas-space-2xl, 48px);
    padding-inline: var(--gas-space-l, 24px);
}

/* ── En-tête ──────────────────────────────────────────────────────────── */
.gas-block-pathway-cards__header {
    max-width: 64ch;
    margin: 0 auto var(--gas-space-2xl, 48px);
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-m, 16px);
}
.gas-block-pathway-cards--align-center .gas-block-pathway-cards__header {
    text-align: center;
    align-items: center;
}
.gas-block-pathway-cards--align-left .gas-block-pathway-cards__header {
    text-align: left;
    align-items: flex-start;
    margin-inline: 0;
}

.gas-block-pathway-cards__eyebrow {
    margin: 0;
    font-size: var(--gas-text-xs, 11px);
    font-weight: var(--gas-weight-bold, 700);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gas-primary-text);
}
.gas-block-pathway-cards__title {
    margin: 0;
    font-size: var(--gas-text-3xl, 33px);
    font-weight: var(--gas-weight-bold, 700);
    line-height: 1.1;
    color: var(--gas-color-text, var(--gas-neutral-900));
}
.gas-block-pathway-cards__lead {
    font-size: var(--gas-text-l, 20px);
    font-weight: var(--gas-weight-semi, 600);
    line-height: 1.35;
    color: var(--gas-color-text, var(--gas-neutral-900));
}
.gas-block-pathway-cards__intro {
    font-size: var(--gas-text-m, 16px);
    line-height: 1.6;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-pathway-cards__lead > :first-child,
.gas-block-pathway-cards__intro > :first-child { margin-top: 0; }
.gas-block-pathway-cards__lead > :last-child,
.gas-block-pathway-cards__intro > :last-child { margin-bottom: 0; }

/* ── Grille ───────────────────────────────────────────────────────────── */
.gas-block-pathway-cards__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--gas-space-l, 24px);
    grid-template-columns: 1fr;
}
@media (min-width: 640px) {
    .gas-block-pathway-cards__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
    .gas-block-pathway-cards--cols-2 .gas-block-pathway-cards__grid { grid-template-columns: repeat(2, 1fr); }
    .gas-block-pathway-cards--cols-3 .gas-block-pathway-cards__grid { grid-template-columns: repeat(3, 1fr); }
    .gas-block-pathway-cards--cols-4 .gas-block-pathway-cards__grid { grid-template-columns: repeat(4, 1fr); }
}

.gas-block-pathway-cards__item { display: flex; }

/* ── Carte ────────────────────────────────────────────────────────────── */
.gas-block-pathway-cards__card {
    display: flex;
    flex-direction: column;
    width: 100%;
    background: var(--gas-pathway-card-bg);
    border-radius: var(--gas-radius-l, 12px);
    overflow: hidden;
    box-shadow: var(--gas-shadow-m, 0 4px 12px rgba(0, 0, 0, 0.08));
    text-decoration: none;
    color: inherit;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
a.gas-block-pathway-cards__card:hover,
a.gas-block-pathway-cards__card:focus-visible {
    transform: translateY(-4px);
    box-shadow: var(--gas-shadow-l, 0 10px 30px rgba(0, 0, 0, 0.1));
}

.gas-block-pathway-cards__media {
    margin: 0;
    aspect-ratio: var(--gas-aspect-card, 4 / 3);
    overflow: hidden;
    background: var(--gas-neutral-100);
}
.gas-block-pathway-cards__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gas-block-pathway-cards__body {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 8px);
    padding: var(--gas-space-l, 24px);
    flex: 1 1 auto;
}
.gas-block-pathway-cards__category {
    margin: 0;
    font-size: var(--gas-text-xs, 11px);
    font-weight: var(--gas-weight-bold, 700);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gas-primary-text);
}
.gas-block-pathway-cards__card-title {
    margin: 0;
    font-size: var(--gas-text-l, 20px);
    font-weight: var(--gas-weight-semi, 600);
    line-height: 1.2;
    color: var(--gas-accent-text);
}
.gas-block-pathway-cards__card-text {
    margin: 0;
    font-size: var(--gas-text-s, 13px);
    line-height: 1.55;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-pathway-cards__link {
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-s, 8px);
    margin-top: var(--gas-space-s, 8px);
    font-size: var(--gas-text-s, 13px);
    font-weight: var(--gas-weight-semi, 600);
    color: var(--gas-accent-text);
}
.gas-block-pathway-cards__link-arrow {
    transition: transform 0.2s ease;
}
a.gas-block-pathway-cards__card:hover .gas-block-pathway-cards__link-arrow {
    transform: translateX(4px);
}

/* ============================================================================
 * Bloc people_grid — panneau intro + grille de portraits (nom en surimpression)
 * ========================================================================== */
.gas-block-people-grid {
    box-sizing: border-box;
    width: 100%;
    max-width: var(--gas-container, var(--gas-site-max-width, 1280px));
    margin-inline: auto;
    padding-block: var(--gas-space-2xl, 48px);
    padding-inline: var(--gas-space-l, 24px);
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gas-space-2xl, 48px);
}
@media (min-width: 1024px) {
    .gas-block-people-grid {
        grid-template-columns: 1.4fr 1fr;
        align-items: center;
        gap: var(--gas-space-3xl, 64px);
    }
    /* Maquette : portraits à gauche, panneau d'intro à droite. */
    .gas-block-people-grid__grid { order: 1; }
    .gas-block-people-grid__intro { order: 2; }
}

/* ── Panneau d'intro ──────────────────────────────────────────────────── */
.gas-block-people-grid__intro {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-m, 16px);
}
.gas-block-people-grid__eyebrow {
    margin: 0;
    font-size: var(--gas-text-xs, 11px);
    font-weight: var(--gas-weight-bold, 700);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-people-grid__title {
    margin: 0;
    font-size: var(--gas-text-3xl, 33px);
    font-weight: var(--gas-weight-bold, 700);
    line-height: 1.1;
    color: var(--gas-color-text, var(--gas-neutral-900));
}
.gas-block-people-grid__lead {
    font-size: var(--gas-text-l, 20px);
    line-height: 1.4;
    color: var(--gas-color-text, var(--gas-neutral-900));
}
.gas-block-people-grid__text {
    font-size: var(--gas-text-m, 16px);
    line-height: 1.6;
    color: var(--gas-color-text-muted, var(--gas-neutral-600));
}
.gas-block-people-grid__lead > :first-child,
.gas-block-people-grid__text > :first-child { margin-top: 0; }
.gas-block-people-grid__lead > :last-child,
.gas-block-people-grid__text > :last-child { margin-bottom: 0; }
.gas-block-people-grid__cta {
    align-self: flex-start;
    margin-top: var(--gas-space-s, 8px);
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-s, 8px);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.gas-block-people-grid__cta-arrow { transition: transform 0.2s ease; }
.gas-block-people-grid__cta:hover .gas-block-people-grid__cta-arrow { transform: translateX(4px); }

/* ── Grille de portraits ──────────────────────────────────────────────── */
.gas-block-people-grid__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--gas-space-m, 16px);
    grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 640px) {
    .gas-block-people-grid--cols-2 .gas-block-people-grid__grid { grid-template-columns: repeat(2, 1fr); }
    .gas-block-people-grid--cols-3 .gas-block-people-grid__grid { grid-template-columns: repeat(3, 1fr); }
}
.gas-block-people-grid__item { display: flex; }

/* ── Tuile portrait ───────────────────────────────────────────────────── */
.gas-block-people-grid__tile {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: var(--gas-aspect-square, 1 / 1);
    border-radius: var(--gas-radius-l, 12px);
    overflow: hidden;
    background: var(--gas-neutral-100);
    text-decoration: none;
    color: inherit;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
a.gas-block-people-grid__tile:hover,
a.gas-block-people-grid__tile:focus-visible {
    transform: translateY(-3px);
    box-shadow: var(--gas-shadow-l, 0 10px 30px rgba(0, 0, 0, 0.12));
}
.gas-block-people-grid__media {
    margin: 0;
    width: 100%;
    height: 100%;
}
.gas-block-people-grid__photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.gas-block-people-grid__caption {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--gas-space-m, 16px);
    background: linear-gradient(to top, var(--gas-bg-overlay), transparent);
}
.gas-block-people-grid__name {
    font-size: var(--gas-text-m, 16px);
    font-weight: var(--gas-weight-bold, 700);
    line-height: 1.15;
    color: var(--gas-white, #fff);
}
.gas-block-people-grid__role {
    font-size: var(--gas-text-xs, 11px);
    line-height: 1.2;
    color: var(--gas-white, #fff);
    opacity: 0.85;
}

/* ── Tuile « voir tout » ──────────────────────────────────────────────── */
.gas-block-people-grid__tile--see-all {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-end;
    gap: var(--gas-space-s, 8px);
    padding: var(--gas-space-l, 24px);
    background: var(--gas-accent-dark, var(--gas-accent));
    color: var(--gas-white, #fff);
}
.gas-block-people-grid__see-all-label {
    font-size: var(--gas-text-m, 16px);
    font-weight: var(--gas-weight-semi, 600);
}
.gas-block-people-grid__see-all-arrow {
    font-size: var(--gas-text-l, 20px);
    transition: transform 0.2s ease;
}
a.gas-block-people-grid__tile--see-all:hover .gas-block-people-grid__see-all-arrow { transform: translateX(4px); }

/* =============================================================================
   Lot 0 — règles transverses centrales (a11y + modifier container)
   ============================================================================= */

/* Focus clavier visible sur tout élément interactif d'un bloc qui n'est pas déjà
   un .gas-button (liens, champs, boutons natifs, summary). a11y « pro ». */
[data-block-type] :is(a, button, input, select, textarea, summary, [tabindex]):not(.gas-button):focus-visible {
    outline: var(--gas-focus-ring-width, 2px) solid var(--gas-focus-ring-color, currentColor);
    outline-offset: var(--gas-focus-ring-offset, 2px);
    border-radius: var(--gas-radius-s, 4px);
}

/* Modifier `container` — opt-in : ne s'applique QUE si la racine du bloc porte
   l'inline `--gas-container` (posé par l'applicateur central de modifiers). Contraint
   la largeur du wrapper de contenu __inner et le centre. Zéro impact sur les blocs
   sans le modifier (aucune régression de layout). */
[data-block-type][style*="--gas-container"] [class*="__inner"] {
    max-width: var(--gas-container);
    margin-inline: auto;
}

/* Wrappers de shortcodes legacy (typed_shortcode : committee_grid, news_strip,
   partner_banner, featured_activity, upcoming_activities, latest_articles, etc.).
   Le contenu interne vient du shortcode (styles legacy du module) ; ici on garantit
   seulement un rythme vertical cohérent + un cadre propre quand le bloc est toné.
   Les wrappers ayant un CSS dédié (member_cta…) gardent la priorité (plus spécifique). */
.gas-block-typed-shortcode {
    margin-block: var(--gas-space-2xl);
}
.gas-block-typed-shortcode:is(.is-tone-accent, .is-tone-primary, .is-tone-dark, .is-tone-muted) {
    padding: var(--gas-space-xl);
    border-radius: var(--gas-radius-l);
}

/* =============================================================================
   Bloc pricing_table — grille de plans tarifaires (conversion). Portable WP/Astro.
   ============================================================================= */
.gas-block-pricing-table {
    margin-block: var(--gas-space-2xl);
}
.gas-block-pricing-table__inner {
    max-width: var(--gas-container, var(--gas-container-wide, 1120px));
    margin-inline: auto;
    padding-inline: var(--gas-space-l);
}
.gas-block-pricing-table__title {
    margin: 0 0 var(--gas-space-s);
    font-size: var(--gas-text-2xl);
    line-height: var(--gas-leading-tight);
    text-align: center;
}
.gas-block-pricing-table__subtitle {
    margin: 0 auto var(--gas-space-xl);
    max-width: 480px;
    color: var(--gas-color-text-muted);
    font-size: var(--gas-text-l);
    text-align: center;
}
.gas-block-pricing-table__grid {
    display: grid;
    gap: var(--gas-space-l);
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
    align-items: start;
}
.gas-block-pricing-table--cols-2 .gas-block-pricing-table__grid { max-width: 560px; margin-inline: auto; }
.gas-block-pricing-table--cols-3 .gas-block-pricing-table__grid { max-width: 800px; margin-inline: auto; }

.gas-block-pricing-table__plan {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s);
    padding: var(--gas-space-xl) var(--gas-space-l);
    background: var(--gas-color-surface-card, #fff);
    /* Fond clair propre : on fixe la couleur de texte au lieu d'hériter d'un tone
       sombre de la section (sinon texte clair sur carte blanche). */
    color: var(--gas-color-text);
    border: 1px solid var(--gas-color-border);
    border-radius: var(--gas-radius-l);
    box-shadow: var(--gas-shadow-s);
    height: 100%;
}
.gas-block-pricing-table__plan--featured {
    border-color: var(--gas-color-primary, #2563eb);
    border-width: 2px;
    /* Halo teinté primaire pour faire ressortir le plan « populaire ». */
    box-shadow: 0 24px 50px -22px color-mix(in srgb, var(--gas-color-primary, #2563eb) 55%, transparent);
}
.gas-block-pricing-table__plan--featured .gas-block-pricing-table__plan-name {
    color: var(--gas-color-primary, #2563eb);
}
/* Sur desktop (plans côte à côte), le plan vedette est légèrement surélevé. */
@media (min-width: 768px) {
    .gas-block-pricing-table__plan--featured {
        transform: scale(1.05);
        z-index: 1;
    }
}
.gas-block-pricing-table__badge {
    position: absolute;
    top: 0;
    inset-inline-end: var(--gas-space-l);
    transform: translateY(-50%);
    padding: var(--gas-space-2xs) var(--gas-space-s);
    background: var(--gas-color-primary);
    color: var(--gas-color-on-primary, #fff);
    border-radius: var(--gas-radius-full);
    font-size: var(--gas-text-xs);
    font-weight: var(--gas-weight-semi);
    letter-spacing: 0.02em;
}
.gas-block-pricing-table__plan-name {
    margin: 0;
    font-size: var(--gas-text-l);
    font-weight: var(--gas-weight-semi);
}
.gas-block-pricing-table__price {
    margin: 0;
    display: flex;
    align-items: baseline;
    gap: var(--gas-space-2xs);
    flex-wrap: wrap;
}
.gas-block-pricing-table__price-amount {
    font-size: var(--gas-text-3xl);
    font-weight: var(--gas-weight-bold);
    line-height: 1;
    color: var(--gas-primary-text);
}
.gas-block-pricing-table__price-period {
    color: var(--gas-color-text-muted);
    font-size: var(--gas-text-s);
}
.gas-block-pricing-table__plan-desc {
    margin: 0;
    color: var(--gas-color-text-muted);
    font-size: var(--gas-text-s);
}
.gas-block-pricing-table__features {
    list-style: none;
    margin: var(--gas-space-s) 0;
    padding: 0;
    display: grid;
    gap: var(--gas-space-xs);
}
.gas-block-pricing-table__feature {
    display: flex;
    align-items: flex-start;
    gap: var(--gas-space-s);
    font-size: var(--gas-text-s);
}
.gas-block-pricing-table__feature-check {
    flex-shrink: 0;
    color: var(--gas-primary-text);
    font-weight: var(--gas-weight-bold);
    line-height: 1.4;
}
.gas-block-pricing-table__cta {
    margin-top: auto;
    width: 100%;
    justify-content: center;
}

/* =============================================================================
   Bloc bento_grid — grille modulaire de cellules de tailles variées. Portable WP/Astro.
   ============================================================================= */
.gas-block-bento-grid {
    margin-block: var(--gas-space-2xl);
}
.gas-block-bento-grid__inner {
    max-width: var(--gas-container, var(--gas-container-wide, 1120px));
    margin-inline: auto;
    padding-inline: var(--gas-space-l);
}
.gas-block-bento-grid__title {
    margin: 0 0 var(--gas-space-s);
    font-size: var(--gas-text-2xl);
    line-height: var(--gas-leading-tight);
    text-align: center;
}
.gas-block-bento-grid__subtitle {
    margin: 0 auto var(--gas-space-xl);
    max-width: 480px;
    color: var(--gas-color-text-muted);
    font-size: var(--gas-text-l);
    text-align: center;
}
.gas-block-bento-grid__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: minmax(110px, auto);
    grid-auto-flow: dense;
    gap: var(--gas-space-m);
}
.gas-block-bento-grid__item {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    gap: var(--gas-space-2xs);
    padding: var(--gas-space-l);
    background: var(--gas-color-surface-card, #fff);
    border: 1px solid var(--gas-color-border);
    border-radius: var(--gas-radius-l);
    overflow: hidden;
    /* Fond clair propre : couleur de texte fixée (pas d'héritage du tone section).
       Les tuiles avec image gardent leur texte clair via --has-image plus bas. */
    color: var(--gas-color-text);
    text-decoration: none;
    transition: transform var(--gas-transition-normal), box-shadow var(--gas-transition-normal);
}
a.gas-block-bento-grid__item:hover {
    transform: translateY(-3px);
    box-shadow: var(--gas-shadow-m);
}
.gas-block-bento-grid__item--wide  { grid-column: span 2; }
.gas-block-bento-grid__item--tall  { grid-row: span 2; }
.gas-block-bento-grid__item--large { grid-column: span 2; grid-row: span 2; }

.gas-block-bento-grid__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.gas-block-bento-grid__item--has-image::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 30%, rgba(0, 0, 0, 0.6));
    z-index: 1;
}
.gas-block-bento-grid__item--has-image .gas-block-bento-grid__body {
    position: relative;
    z-index: 2;
    color: var(--gas-color-white, #fff);
}
.gas-block-bento-grid__body {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-2xs);
}
.gas-block-bento-grid__icon {
    font-size: var(--gas-text-2xl);
    line-height: 1;
    margin-bottom: var(--gas-space-xs);
}
.gas-block-bento-grid__eyebrow {
    font-size: var(--gas-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--gas-primary-text);
    font-weight: var(--gas-weight-semi);
}
.gas-block-bento-grid__item--has-image .gas-block-bento-grid__eyebrow {
    color: var(--gas-color-white, #fff);
    opacity: 0.85;
}
.gas-block-bento-grid__item-title {
    margin: 0;
    font-size: var(--gas-text-l);
    font-weight: var(--gas-weight-semi);
    line-height: var(--gas-leading-tight);
}
.gas-block-bento-grid__item-text {
    margin: 0;
    font-size: var(--gas-text-s);
    color: var(--gas-color-text-muted);
}
.gas-block-bento-grid__item--has-image .gas-block-bento-grid__item-text {
    color: var(--gas-color-white, #fff);
    opacity: 0.9;
}

@media (max-width: 60rem) {
    .gas-block-bento-grid__grid { grid-template-columns: repeat(2, 1fr); }
    .gas-block-bento-grid__item--large { grid-column: span 2; }
}
@media (max-width: 36rem) {
    .gas-block-bento-grid__grid { grid-template-columns: 1fr; }
    .gas-block-bento-grid__item--wide,
    .gas-block-bento-grid__item--tall,
    .gas-block-bento-grid__item--large { grid-column: auto; grid-row: auto; }
}

/* =============================================================================
   gallery — layouts additionnels : masonry / carousel / justified / marquee / stack
   ============================================================================= */
/* Masonry — colonnes CSS, hauteurs naturelles */
.gas-block-gallery--layout-masonry .gas-block-gallery__grid { display: block; column-count: 3; column-gap: var(--gas-space-m); }
.gas-block-gallery--layout-masonry .gas-block-gallery__item { break-inside: avoid; margin-bottom: var(--gas-space-m); }
.gas-block-gallery--layout-masonry .gas-block-gallery__item img { width: 100%; height: auto; display: block; border-radius: var(--gas-radius-m); }
@media (max-width: 60rem) { .gas-block-gallery--layout-masonry .gas-block-gallery__grid { column-count: 2; } }
@media (max-width: 36rem) { .gas-block-gallery--layout-masonry .gas-block-gallery__grid { column-count: 1; } }

/* Carousel — défilement horizontal scroll-snap (pas de JS requis) */
.gas-block-gallery--layout-carousel .gas-block-gallery__grid { display: flex; gap: var(--gas-space-m); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: var(--gas-space-s); }
.gas-block-gallery--layout-carousel .gas-block-gallery__item { flex: 0 0 min(80%, 220px); scroll-snap-align: start; }
.gas-block-gallery--layout-carousel .gas-block-gallery__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; border-radius: var(--gas-radius-m); }

/* Justified — rangées de hauteur constante, largeurs variables (type Flickr) */
.gas-block-gallery--layout-justified .gas-block-gallery__grid { display: flex; flex-wrap: wrap; gap: var(--gas-space-s); }
.gas-block-gallery--layout-justified .gas-block-gallery__item { flex: 1 1 160px; height: 130px; }
.gas-block-gallery--layout-justified .gas-block-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: var(--gas-radius-s); }

/* Marquee — ruban défilant en continu (drift doux ; statique si reduced-motion) */
.gas-block-gallery--layout-marquee { overflow: hidden; }
.gas-block-gallery--layout-marquee .gas-block-gallery__grid { display: flex; gap: var(--gas-space-m); width: max-content; animation: gas-gallery-marquee 40s linear infinite; }
.gas-block-gallery--layout-marquee .gas-block-gallery__item { flex: 0 0 auto; width: 160px; }
.gas-block-gallery--layout-marquee .gas-block-gallery__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; border-radius: var(--gas-radius-m); }
@keyframes gas-gallery-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .gas-block-gallery--layout-marquee .gas-block-gallery__grid { animation: none; flex-wrap: wrap; width: auto; } }

/* Stack — pile de polaroids pivotés, se déploie au survol */
.gas-block-gallery--layout-stack .gas-block-gallery__grid { display: flex; justify-content: center; flex-wrap: wrap; padding: var(--gas-space-l) 0; }
.gas-block-gallery--layout-stack .gas-block-gallery__item { width: 130px; margin-inline: -25px; padding: var(--gas-space-xs); background: var(--gas-color-surface-card, #fff); border: 1px solid var(--gas-color-border); border-radius: var(--gas-radius-s); box-shadow: var(--gas-shadow-m); transform: rotate(-4deg); transition: transform var(--gas-transition-normal), margin var(--gas-transition-normal); }
.gas-block-gallery--layout-stack .gas-block-gallery__item:nth-child(even) { transform: rotate(4deg); }
.gas-block-gallery--layout-stack .gas-block-gallery__grid:hover .gas-block-gallery__item { margin-inline: var(--gas-space-xs); transform: rotate(0); }
.gas-block-gallery--layout-stack .gas-block-gallery__item img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; display: block; }

/* =============================================================================
   Bloc logo_marquee — bandeau de logos défilant (boucle fluide via piste dupliquée)
   ============================================================================= */
.gas-block-logo-marquee { margin-block: var(--gas-space-2xl); text-align: center; }
.gas-block-logo-marquee__title { margin: 0 0 var(--gas-space-l); color: var(--gas-color-text-muted); font-size: var(--gas-text-s); text-transform: uppercase; letter-spacing: 0.06em; }
.gas-block-logo-marquee__viewport { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.gas-block-logo-marquee__track { display: flex; gap: var(--gas-space-2xl); width: max-content; align-items: center; animation: gas-logo-marquee 30s linear infinite; }
.gas-block-logo-marquee--speed-slow .gas-block-logo-marquee__track { animation-duration: 50s; }
.gas-block-logo-marquee--speed-fast .gas-block-logo-marquee__track { animation-duration: 18s; }
.gas-block-logo-marquee__viewport:hover .gas-block-logo-marquee__track { animation-play-state: paused; }
.gas-block-logo-marquee__item { flex: 0 0 auto; display: inline-flex; align-items: center; }
.gas-block-logo-marquee__img { height: 26px; width: auto; max-width: 120px; object-fit: contain; display: block; }
.gas-block-logo-marquee--grayscale .gas-block-logo-marquee__img { filter: grayscale(1); opacity: .7; transition: filter var(--gas-transition-normal), opacity var(--gas-transition-normal); }
.gas-block-logo-marquee--grayscale .gas-block-logo-marquee__item:hover .gas-block-logo-marquee__img { filter: grayscale(0); opacity: 1; }
@keyframes gas-logo-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .gas-block-logo-marquee__track { animation: none; flex-wrap: wrap; width: auto; justify-content: center; } }

/* =============================================================================
   Bloc timeline — frise chronologique verticale
   ============================================================================= */
.gas-block-timeline { margin-block: var(--gas-space-2xl); }
.gas-block-timeline__inner { max-width: var(--gas-container, var(--gas-container-narrow, 640px)); margin-inline: auto; padding-inline: var(--gas-space-l); }
.gas-block-timeline__title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-2xl); line-height: var(--gas-leading-tight); text-align: center; }
.gas-block-timeline__subtitle { margin: 0 auto var(--gas-space-xl); color: var(--gas-color-text-muted); text-align: center; max-width: 480px; }
.gas-block-timeline__list { list-style: none; margin: 0; padding: 0; position: relative; }
.gas-block-timeline__list::before { content: ''; position: absolute; left: 9px; top: 6px; bottom: 6px; width: 2px; background: var(--gas-color-border); }
.gas-block-timeline__item { position: relative; display: flex; gap: var(--gas-space-m); padding-bottom: calc(var(--gas-space-xl) * var(--gas-density, 1)); }
.gas-block-timeline__item:last-child { padding-bottom: 0; }
.gas-block-timeline__dot { position: relative; z-index: 1; flex: 0 0 auto; width: 19px; height: 19px; border-radius: var(--gas-radius-full); background: var(--gas-color-primary); color: var(--gas-color-on-primary, #fff); display: inline-flex; align-items: center; justify-content: center; font-size: var(--gas-text-s); }
.gas-block-timeline__body { padding-top: 1px; }
.gas-block-timeline__marker { font-size: var(--gas-text-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--gas-primary-text); font-weight: var(--gas-weight-semi); }
.gas-block-timeline__item-title { margin: 1.5px 0 2.5px; font-size: var(--gas-text-l); }
.gas-block-timeline__item-text { margin: 0; color: var(--gas-color-text-muted); font-size: var(--gas-text-s); }

/* =============================================================================
   Bloc comparison_table — comparatif features × plans
   ============================================================================= */
.gas-block-comparison-table { margin-block: var(--gas-space-2xl); }
.gas-block-comparison-table__inner { max-width: var(--gas-container, var(--gas-container-default, 800px)); margin-inline: auto; padding-inline: var(--gas-space-l); }
.gas-block-comparison-table__title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-2xl); line-height: var(--gas-leading-tight); text-align: center; }
.gas-block-comparison-table__subtitle { margin: 0 auto var(--gas-space-xl); color: var(--gas-color-text-muted); text-align: center; max-width: 480px; }
.gas-block-comparison-table__scroll { overflow-x: auto; }
.gas-block-comparison-table__table { width: 100%; border-collapse: collapse; font-size: var(--gas-text-s); }
.gas-block-comparison-table__table th,
.gas-block-comparison-table__table td { padding: calc(var(--gas-space-s) * var(--gas-density, 1)) var(--gas-space-m); text-align: center; border-bottom: 1px solid var(--gas-color-border); }
.gas-block-comparison-table__col { font-weight: var(--gas-weight-semi); font-size: var(--gas-text-m); }
.gas-block-comparison-table__feature { text-align: left; font-weight: var(--gas-weight-medium); color: var(--gas-color-text); }
.gas-block-comparison-table__col.is-featured,
.gas-block-comparison-table__cell.is-featured { background: var(--gas-color-primary-soft); }
.gas-block-comparison-table__col.is-featured { color: var(--gas-primary-text); border-top: 2px solid var(--gas-color-primary); border-top-left-radius: var(--gas-radius-m); border-top-right-radius: var(--gas-radius-m); }
.gas-block-comparison-table__yes { color: var(--gas-primary-text); font-weight: var(--gas-weight-bold); }
.gas-block-comparison-table__no { color: var(--gas-color-text-muted); opacity: .5; }
.gas-block-comparison-table__val { color: var(--gas-color-text); }

/* ===== Blocs/variantes ajoutés (workflow parallèle) — intégrés ===== */

/* =============================================================================
   Bloc pricing_toggle — bascule Mensuel/Annuel qui pilote un pricing_table voisin.
   Portable WP/Astro. Le toggle ajoute/retire .is-annual sur la cible.
   ============================================================================= */
.gas-block-pricing-toggle {
    margin-block: calc(var(--gas-space-l) * var(--gas-density, 1));
}
.gas-block-pricing-toggle__inner {
    max-width: var(--gas-container, var(--gas-container-narrow, 640px));
    margin-inline: auto;
    padding-inline: var(--gas-space-l);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: var(--gas-space-m);
}
.gas-block-pricing-toggle__control {
    display: inline-flex;
    padding: var(--gas-space-2xs);
    background: var(--gas-color-surface-card, #fff);
    border: 1px solid var(--gas-color-border);
    border-radius: var(--gas-radius-full);
    box-shadow: var(--gas-shadow-s);
}
.gas-block-pricing-toggle__option {
    appearance: none;
    margin: 0;
    border: 0;
    cursor: pointer;
    padding: var(--gas-space-xs) var(--gas-space-l);
    background: transparent;
    color: var(--gas-color-text-muted);
    font-size: var(--gas-text-s);
    font-weight: var(--gas-weight-semi);
    border-radius: var(--gas-radius-full);
    transition: background-color 0.2s ease, color 0.2s ease;
}
.gas-block-pricing-toggle__option[aria-selected="true"] {
    background: var(--gas-color-primary);
    color: var(--gas-color-on-primary, #fff);
    box-shadow: var(--gas-shadow-s);
}
.gas-block-pricing-toggle__save {
    color: var(--gas-accent-text);
    font-size: var(--gas-text-s);
    font-weight: var(--gas-weight-semi);
}
@media (prefers-reduced-motion: reduce) {
    .gas-block-pricing-toggle__option {
        transition: none;
    }
}

/* Bascule mensuel/annuel sur le pricing_table cible.
   Par défaut : prix mensuel visible, annuel masqué (hidden inline).
   Quand un ancêtre porte .is-annual : on inverse. */
.gas-block-pricing-table .gas-block-pricing-table__price--annual {
    display: none;
}
.is-annual .gas-block-pricing-table__price--monthly,
.gas-block-pricing-table.is-annual .gas-block-pricing-table__price--monthly {
    display: none;
}
.is-annual .gas-block-pricing-table__price--annual[hidden],
.gas-block-pricing-table.is-annual .gas-block-pricing-table__price--annual[hidden] {
    display: flex;
}

/* =========================================================================
 * Bloc feature_tabs — Fonctionnalités en onglets (role=tablist/tab/tabpanel)
 * ========================================================================= */
.gas-block-feature-tabs { margin-block: calc(var(--gas-space-2xl) * var(--gas-density, 1)); }
.gas-block-feature-tabs__inner { max-width: var(--gas-container, var(--gas-container-default, 800px)); margin-inline: auto; padding-inline: var(--gas-space-l); }
.gas-block-feature-tabs__title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-3xl); line-height: var(--gas-leading-tight); text-align: center; }
.gas-block-feature-tabs__subtitle { margin: 0 auto var(--gas-space-xl); color: var(--gas-color-text-muted); text-align: center; max-width: 480px; }

.gas-block-feature-tabs__tablist {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--gas-space-xs);
    margin-bottom: calc(var(--gas-space-xl) * var(--gas-density, 1));
    border-bottom: 1px solid var(--gas-color-border);
}
.gas-block-feature-tabs__tab {
    appearance: none;
    border: 0;
    background: transparent;
    cursor: pointer;
    padding: var(--gas-space-s) var(--gas-space-m);
    margin-bottom: -1px;
    font: inherit;
    font-size: var(--gas-text-m);
    font-weight: var(--gas-weight-medium);
    color: var(--gas-color-text-muted);
    border-bottom: 2px solid transparent;
    border-radius: var(--gas-radius-s) var(--gas-radius-s) 0 0;
    transition: color var(--gas-transition-fast, 150ms), border-color var(--gas-transition-fast, 150ms), background-color var(--gas-transition-fast, 150ms);
}
.gas-block-feature-tabs__tab:hover { color: var(--gas-color-text); background: var(--gas-color-surface-card); }
.gas-block-feature-tabs__tab.is-active,
.gas-block-feature-tabs__tab[aria-selected="true"] {
    color: var(--gas-primary-text);
    border-bottom-color: var(--gas-primary-text);
    font-weight: var(--gas-weight-semi);
}

.gas-block-feature-tabs__panels { position: relative; }
.gas-block-feature-tabs__panel {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--gas-space-xl);
    align-items: center;
}
.gas-block-feature-tabs__panel[hidden] { display: none; }
.gas-block-feature-tabs__panel-title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-2xl); line-height: var(--gas-leading-tight); }
.gas-block-feature-tabs__panel-text { margin: 0; color: var(--gas-color-text-muted); font-size: var(--gas-text-m); line-height: var(--gas-leading-relaxed, 1.625); }
.gas-block-feature-tabs__panel-media { overflow: hidden; border-radius: var(--gas-radius-l); box-shadow: var(--gas-shadow-m); }
.gas-block-feature-tabs__image { display: block; width: 100%; height: auto; }

@media (min-width: 48rem) {
    .gas-block-feature-tabs__panel { grid-template-columns: 1fr 1fr; }
}

@media (prefers-reduced-motion: reduce) {
    .gas-block-feature-tabs__tab { transition: none; }
}


/* =============================================================================
   Bloc cta_sticky_bar — barre d'appel à l'action flottante (bas d'écran, fixed)
   ============================================================================= */
.gas-block-cta-sticky-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: var(--gas-z-sticky, 1000);
    padding-inline: var(--gas-space-m);
    padding-block: calc(var(--gas-space-s) * var(--gas-density, 1));
    padding-bottom: calc(var(--gas-space-s) * var(--gas-density, 1) + env(safe-area-inset-bottom, 0px));
    background: var(--gas-color-primary);
    color: var(--gas-color-on-primary, #fff);
    box-shadow: var(--gas-shadow-l);
}
.gas-block-cta-sticky-bar[hidden] { display: none; }
.gas-block-cta-sticky-bar__inner {
    max-width: var(--gas-container, var(--gas-container-wide, 960px));
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: calc(var(--gas-space-s) * var(--gas-density, 1));
}
.gas-block-cta-sticky-bar__text {
    margin: 0;
    font-size: var(--gas-text-s);
    line-height: var(--gas-leading-snug, 1.4);
}
.gas-block-cta-sticky-bar__actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gas-space-s);
}
.gas-block-cta-sticky-bar__cta { flex: 1 1 auto; text-align: center; }
.gas-block-cta-sticky-bar__close {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 0;
    border: none;
    border-radius: var(--gas-radius-full);
    background: transparent;
    color: inherit;
    font-size: var(--gas-text-l);
    line-height: 1;
    cursor: pointer;
    opacity: 0.85;
}
.gas-block-cta-sticky-bar__close:hover { opacity: 1; background: rgba(0, 0, 0, 0.12); }

/* Desktop : barre horizontale alignée */
@media (min-width: 48rem) {
    .gas-block-cta-sticky-bar__inner {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: var(--gas-space-l);
    }
    .gas-block-cta-sticky-bar__text { flex: 1 1 auto; font-size: var(--gas-text-m); }
    .gas-block-cta-sticky-bar__actions { flex: 0 0 auto; justify-content: flex-end; }
    .gas-block-cta-sticky-bar__cta { flex: 0 0 auto; }
}

/* Tonalités — adaptatives dark via tokens (l'applicateur central pose is-tone-*) */
.gas-block-cta-sticky-bar.is-tone-surface { background: var(--gas-color-surface-card); color: var(--gas-color-text); border-top: 1px solid var(--gas-color-border); }
.gas-block-cta-sticky-bar.is-tone-accent { background: var(--gas-accent-dark); color: var(--gas-color-on-accent, #fff); }
.gas-block-cta-sticky-bar.is-tone-primary { background: var(--gas-color-primary); color: var(--gas-color-on-primary, #fff); }
.gas-block-cta-sticky-bar.is-tone-dark { background: var(--gas-tone-dark-bg, #111827); color: var(--gas-tone-dark-fg, #f9fafb); }

/* Alignement du texte (l'applicateur central pose is-align-*) */
.gas-block-cta-sticky-bar.is-align-center .gas-block-cta-sticky-bar__text { text-align: center; }
.gas-block-cta-sticky-bar.is-align-right .gas-block-cta-sticky-bar__text { text-align: right; }

/* Animation d'entrée — neutralisée si l'utilisateur préfère un mouvement réduit
   (l'enhancer JS n'ajoute la classe --enter qu'en l'absence de prefers-reduced-motion). */
@media (prefers-reduced-motion: no-preference) {
    .gas-block-cta-sticky-bar--enter {
        animation: gas-cta-sticky-bar-in var(--gas-duration-m, 240ms) var(--gas-ease-out, ease-out) both;
    }
}
@keyframes gas-cta-sticky-bar-in {
    from { transform: translateY(100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* Position haut d'écran (alternative au bas par défaut). */
.gas-block-cta-sticky-bar--position-top {
    top: 0;
    bottom: auto;
    padding-bottom: calc(var(--gas-space-s) * var(--gas-density, 1));
    padding-top: calc(var(--gas-space-s) * var(--gas-density, 1) + env(safe-area-inset-top, 0px));
}
@media (prefers-reduced-motion: no-preference) {
    .gas-block-cta-sticky-bar--position-top.gas-block-cta-sticky-bar--enter {
        animation-name: gas-cta-sticky-bar-in-top;
    }
}
@keyframes gas-cta-sticky-bar-in-top {
    from { transform: translateY(-100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* =============================================================================
   Bloc before_after — comparateur d'images avant/après (curseur draggable)
   ============================================================================= */
.gas-block-before-after { margin-block: var(--gas-space-2xl); }
.gas-block-before-after__inner { max-width: var(--gas-container, var(--gas-container-default, 800px)); margin-inline: auto; padding-inline: var(--gas-space-l); }
.gas-block-before-after__title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-2xl); line-height: var(--gas-leading-tight); text-align: center; }
.gas-block-before-after__subtitle { margin: 0 auto var(--gas-space-xl); color: var(--gas-color-text-muted); text-align: center; max-width: 480px; }

.gas-block-before-after__figure {
    --gas-ba-start: 50%;
    position: relative;
    margin: 0;
    width: 100%;
    overflow: hidden;
    border-radius: var(--gas-radius-l);
    box-shadow: var(--gas-shadow-m);
    background: var(--gas-color-surface-card);
    user-select: none;
    touch-action: pan-y;
    line-height: 0;
}
.gas-block-before-after__pane { position: absolute; inset: 0; }
.gas-block-before-after__pane--after { position: relative; }
.gas-block-before-after__pane--before {
    clip-path: inset(0 calc(100% - var(--gas-ba-start)) 0 0);
}
.gas-block-before-after__image { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

.gas-block-before-after__badge {
    position: absolute;
    top: var(--gas-space-m);
    padding: calc(var(--gas-space-xs)) var(--gas-space-s);
    border-radius: var(--gas-radius-s, var(--gas-radius-m));
    background: var(--gas-color-surface-card);
    color: var(--gas-color-text);
    font-size: var(--gas-text-xs);
    line-height: var(--gas-leading-tight);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: var(--gas-weight-semi);
    box-shadow: var(--gas-shadow-m);
}
.gas-block-before-after__badge--before { left: var(--gas-space-m); }
.gas-block-before-after__badge--after { right: var(--gas-space-m); }

.gas-block-before-after__handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: var(--gas-ba-start);
    transform: translateX(-50%);
    width: 28px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: ew-resize;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.gas-block-before-after__handle-line {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 2px;
    transform: translateX(-50%);
    background: var(--gas-color-surface-card);
    box-shadow: var(--gas-shadow-m);
}
.gas-block-before-after__handle-grip {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: var(--gas-radius-full);
    background: var(--gas-color-primary);
    color: var(--gas-color-on-primary, #fff);
    box-shadow: var(--gas-shadow-m);
    transition: transform var(--gas-transition-fast, 0.15s) ease;
}
.gas-block-before-after__handle-grip svg { width: 14px; height: 14px; }
.gas-block-before-after__handle:hover .gas-block-before-after__handle-grip { transform: scale(1.08); }
.gas-block-before-after__handle:focus-visible { outline: none; }
.gas-block-before-after__handle:focus-visible .gas-block-before-after__handle-grip {
    outline: 2px solid var(--gas-color-primary);
    outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
    .gas-block-before-after__handle-grip { transition: none; }
    .gas-block-before-after__handle:hover .gas-block-before-after__handle-grip { transform: none; }
}


/* =============================================================================
   Bloc faq_columns — FAQ en deux colonnes, questions/réponses ouvertes
   ============================================================================= */
.gas-block-faq-columns { margin-block: var(--gas-space-2xl); }
.gas-block-faq-columns__inner { max-width: var(--gas-container, var(--gas-container-default, 800px)); margin-inline: auto; padding-inline: var(--gas-space-l); }
.gas-block-faq-columns__title { margin: 0 0 var(--gas-space-s); font-size: var(--gas-text-2xl); line-height: var(--gas-leading-tight); }
.gas-block-faq-columns__subtitle { margin: 0 0 var(--gas-space-xl); color: var(--gas-color-text-muted); max-width: 480px; }
.gas-block-faq-columns.is-align-center .gas-block-faq-columns__subtitle { margin-inline: auto; }
.gas-block-faq-columns__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: calc(var(--gas-space-xl) * var(--gas-density, 1)) var(--gas-space-2xl);
    text-align: left;
}
.gas-block-faq-columns__item { min-width: 0; }
.gas-block-faq-columns__question { margin: 0 0 var(--gas-space-xs); font-size: var(--gas-text-l); line-height: var(--gas-leading-snug, 1.4); color: var(--gas-color-text); }
.gas-block-faq-columns__answer { margin: 0; color: var(--gas-color-text-muted); font-size: var(--gas-text-s); line-height: var(--gas-leading-relaxed, 1.625); }
.gas-block-faq-columns__answer > :first-child { margin-top: 0; }
.gas-block-faq-columns__answer > :last-child { margin-bottom: 0; }
.gas-block-faq-columns__answer a { color: var(--gas-primary-text); }
@media (max-width: 48rem) {
    .gas-block-faq-columns__grid { grid-template-columns: minmax(0, 1fr); gap: calc(var(--gas-space-l) * var(--gas-density, 1)); }
}


/* ==========================================================================
   Hero — variante media_grid : texte d'un côté, grille asymétrique d'images
   (1 grande + 2 petites) de l'autre. Respecte image_position (left/right).
   ========================================================================== */

.gas-block-hero--media_grid .gas-block-hero__inner {
    gap: calc(var(--gas-space-6, 20px) * var(--gas-density, 1));
    max-width: var(--gas-container, 720px);
}

.gas-block-hero__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: 1fr;
    gap: var(--gas-space-3, 7.5px);
}

.gas-block-hero__grid-cell {
    margin: 0;
    overflow: hidden;
    border-radius: var(--gas-radius-l, 10px);
    box-shadow: var(--gas-shadow-m, 0 8px 24px rgba(0, 0, 0, 0.12));
    background: var(--gas-color-surface-card, #fff);
}

/* Grande tuile : occupe les deux colonnes, plus haute. */
.gas-block-hero__grid-cell--large {
    grid-column: 1 / -1;
    aspect-ratio: 16 / 9;
}

.gas-block-hero__grid-cell--small {
    aspect-ratio: 1 / 1;
}

.gas-block-hero__grid-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Empilement mobile : texte au-dessus, grille en dessous. */
@media (min-width: 768px) {
    .gas-block-hero--media_grid .gas-block-hero__inner {
        grid-template-columns: 1fr 1fr;
        align-items: center;
    }

    /* image_position=left : on inverse l'ordre des colonnes (DOM reste
       texte-d'abord pour le mobile/a11y, où tout est empilé). */
    .gas-block-hero--media_grid.gas-block-hero--media-left .gas-block-hero__content { order: 2; }
    .gas-block-hero--media_grid.gas-block-hero--media-left .gas-block-hero__grid { order: 1; }
}


/* ── CTA variantes split_image / with_background ─────────────────────────── */

/* Densité + container appliqués par l'applicateur central sur la racine.
   On scope aux variantes pour ne pas perturber le CTA "default" historique. */

.gas-block-cta--variant-split_image,
.gas-block-cta--variant-with_background {
    padding-block: calc(var(--gas-space-l, 20px) * var(--gas-density, 1));
    padding-inline: 0;
    margin-block: calc(var(--gas-space-l, 20px) * var(--gas-density, 1));
    background: transparent;
    text-align: left;
}

/* — Variante split_image : visuel d'un côté, texte de l'autre — */
.gas-block-cta--variant-split_image .gas-block-cta__inner {
    max-width: var(--gas-container, var(--gas-container-default, 720px));
    margin-inline: auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: calc(var(--gas-space-l, 20px) * var(--gas-density, 1));
    align-items: center;
    padding-inline: var(--gas-space-m, 15px);
    border-radius: var(--gas-radius-l, 10px);
    overflow: hidden;
    background: var(--gas-color-surface-card, #fff);
    border: 1px solid var(--gas-color-border, #e5e7eb);
}

.gas-block-cta--variant-split_image.gas-block-cta--media-right .gas-block-cta__media {
    order: 2;
}

.gas-block-cta--variant-split_image .gas-block-cta__media {
    margin: 0;
    aspect-ratio: var(--gas-aspect-card, 4 / 3);
    border-radius: var(--gas-radius-m, 7.5px);
    overflow: hidden;
}

.gas-block-cta--variant-split_image .gas-block-cta__image {
    display: block;
    inline-size: 100%;
    block-size: 100%;
    object-fit: cover;
}

.gas-block-cta--variant-split_image .gas-block-cta__body {
    display: grid;
    gap: calc(var(--gas-space-m, 15px) * var(--gas-density, 1));
}

/* — Variante with_background : fond image + overlay + texte clair — */
.gas-block-cta--variant-with_background {
    position: relative;
    isolation: isolate;
    border-radius: var(--gas-radius-l, 10px);
    overflow: hidden;
    background-color: var(--gas-color-secondary, #1f2937);
    background-image: var(--gas-block-cta-image, none);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    text-align: center;
}

.gas-block-cta--variant-with_background .gas-block-cta__overlay {
    position: absolute;
    inset: 0;
    z-index: 0;
    background: #000;
    opacity: var(--gas-block-cta-overlay-opacity, 0.55);
    pointer-events: none;
}

.gas-block-cta--variant-with_background .gas-block-cta__inner {
    position: relative;
    z-index: 1;
    max-width: var(--gas-container, var(--gas-container-default, 720px));
    margin-inline: auto;
    padding-inline: var(--gas-space-l, 20px);
    display: grid;
    justify-items: center;
    gap: calc(var(--gas-space-m, 15px) * var(--gas-density, 1));
}

.gas-block-cta--variant-with_background .gas-block-cta__body {
    display: grid;
    gap: calc(var(--gas-space-m, 15px) * var(--gas-density, 1));
    justify-items: center;
    max-width: 480px;
}

/* Texte clair lisible par-dessus l'image */
.gas-block-cta--variant-with_background :is(.gas-block-cta__title, .gas-block-cta__text),
.gas-block-cta--variant-with_background .gas-block-cta__text :is(p, li, a) {
    color: var(--gas-text-color-inverse, #fff);
}

.gas-block-cta--variant-with_background .gas-block-cta__text {
    opacity: 0.92;
}

.gas-block-cta--variant-with_background .gas-block-cta__actions {
    justify-content: center;
}

/* Responsive : le visuel passe au-dessus du texte sur mobile */
@media (max-width: 48rem) {
    .gas-block-cta--variant-split_image .gas-block-cta__inner {
        grid-template-columns: 1fr;
    }
    .gas-block-cta--variant-split_image.gas-block-cta--media-right .gas-block-cta__media {
        order: 0;
    }
}

/* ── Testimonials — variante « featured » : une grande citation mise en avant ── */
.gas-block-testimonials--featured .gas-block-testimonials__inner {
    max-width: var(--gas-container, var(--gas-container-narrow, 480px));
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: calc(var(--gas-space-l) * var(--gas-density, 1));
    padding-block: calc(var(--gas-space-xl) * var(--gas-density, 1));
}

/* ── testimonials : variante side_by_side (image + citation horizontale) ── */
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs {
    display: grid;
    gap: var(--gas-space-xl, 30px);
    align-items: center;
    margin: 0;
}
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs-media img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-l, 12px);
    object-fit: cover;
}
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs-quote {
    margin: 0 0 var(--gas-space-m, 10px);
    font-size: var(--gas-text-l, 12.5px);
    line-height: 1.4;
}
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs-cite {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-2xs, 2.5px);
}
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs-cite .gas-block-testimonials__author {
    font-weight: 600;
}
.gas-block-testimonials--side_by_side .gas-block-testimonials__sbs-cite .gas-block-testimonials__role {
    color: var(--gas-color-text-muted, #4a4a4a);
}
@media (min-width: 720px) {
    .gas-block-testimonials--side_by_side .gas-block-testimonials__sbs {
        grid-template-columns: minmax(0, 180px) 1fr;
    }
}

.gas-block-testimonials__featured {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: calc(var(--gas-space-m) * var(--gas-density, 1));
    align-items: center;
    text-align: center;
}

.gas-block-testimonials__featured-logo img {
    display: block;
    height: var(--gas-space-2xl);
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

.gas-block-testimonials__featured-quote {
    margin: 0;
    font-size: var(--gas-text-2xl);
    line-height: 1.3;
    font-weight: 600;
    color: var(--gas-color-text);
    max-width: 38ch;
}

.gas-block-testimonials__featured-quote::before {
    content: "\201C";
    margin-inline-end: 0.1em;
    color: var(--gas-accent-text);
}

.gas-block-testimonials__featured-quote::after {
    content: "\201D";
    margin-inline-start: 0.05em;
    color: var(--gas-accent-text);
}

.gas-block-testimonials__featured-cite {
    display: flex;
    align-items: center;
    gap: var(--gas-space-s);
    font-style: normal;
}

.gas-block-testimonials__featured-avatar {
    flex: 0 0 auto;
    width: var(--gas-space-2xl);
    height: var(--gas-space-2xl);
    border-radius: var(--gas-radius-full, 999px);
    overflow: hidden;
}

.gas-block-testimonials__featured-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: var(--gas-radius-full, 999px);
}

.gas-block-testimonials__featured-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: start;
    line-height: 1.3;
}

.gas-block-testimonials__featured-author {
    font-weight: 600;
    color: var(--gas-color-text);
}

.gas-block-testimonials__featured-role {
    font-size: var(--gas-text-s);
    color: var(--gas-color-text-muted);
}

@media (max-width: 640px) {
    .gas-block-testimonials__featured-quote {
        font-size: var(--gas-text-xl);
    }
}
/* ── Bloc feature_showcase : capture encadrée + checklist ── */
.gas-block-feature-showcase__inner {
    max-width: min(100%, var(--gas-content-max-width, 720px));
    margin-inline: auto;
    display: grid;
    gap: var(--gas-block-gap-l, 25px);
    align-items: center;
}

.gas-block-feature-showcase--split .gas-block-feature-showcase__inner {
    grid-template-columns: 1fr 1fr;
}

.gas-block-feature-showcase--media-left .gas-block-feature-showcase__media {
    order: -1;
}

.gas-block-feature-showcase--stacked .gas-block-feature-showcase__inner {
    grid-template-columns: 1fr;
}

.gas-block-feature-showcase--stacked .gas-block-feature-showcase__content {
    max-width: 480px;
    margin-inline: auto;
    text-align: center;
}

.gas-block-feature-showcase__eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: var(--gas-text-s, 8.5px);
    color: var(--gas-primary, #2563eb);
    font-weight: 600;
    margin: 0 0 5px;
}

.gas-block-feature-showcase__title {
    font-size: var(--gas-text-3xl, 20px);
    margin: 0 0 5px;
    line-height: 1.15;
}

.gas-block-feature-showcase__text {
    color: var(--gas-color-text-muted, #64748b);
    margin: 0;
}

.gas-block-feature-showcase__list {
    list-style: none;
    margin: 12.5px 0 0;
    padding: 0;
    display: grid;
    gap: 6px;
}

.gas-block-feature-showcase--stacked .gas-block-feature-showcase__list {
    display: inline-grid;
    text-align: left;
}

.gas-block-feature-showcase__item {
    display: flex;
    gap: 6px;
    align-items: flex-start;
}

.gas-block-feature-showcase__check {
    width: 12.5px;
    height: 12.5px;
    flex: none;
    color: var(--gas-success, #16a34a);
    margin-top: 0.15em;
}

.gas-block-feature-showcase__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 7.5px;
    margin-top: 15px;
}

.gas-block-feature-showcase--stacked .gas-block-feature-showcase__actions {
    justify-content: center;
}

.gas-block-feature-showcase__media img {
    width: 100%;
    height: auto;
}

@media (max-width: 860px) {
    .gas-block-feature-showcase--split .gas-block-feature-showcase__inner {
        grid-template-columns: 1fr;
    }

    .gas-block-feature-showcase--media-left .gas-block-feature-showcase__media {
        order: 0;
    }
}

/* ── features_grid : styles d'items (cards / bordered / numbered) ── */
.gas-block-features-grid--style-cards .gas-block-features-grid__item {
    background: var(--gas-white, #fff);
    border: 1px solid var(--gas-neutral-100, #f1f5f9);
    border-radius: var(--gas-radius-l, 12px);
    padding: 15px;
    box-shadow: 0 10px 30px -16px rgba(15, 23, 42, 0.2);
}

.gas-block-features-grid--style-bordered .gas-block-features-grid__item {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
    border-radius: var(--gas-radius-m, 10px);
    padding: 15px;
}

.gas-block-features-grid--style-numbered .gas-block-features-grid__grid {
    counter-reset: gas-fg;
}

.gas-block-features-grid--style-numbered .gas-block-features-grid__item {
    counter-increment: gas-fg;
    position: relative;
    padding-top: 27.5px;
}

.gas-block-features-grid--style-numbered .gas-block-features-grid__item::before {
    content: counter(gas-fg, decimal-leading-zero);
    position: absolute;
    top: 0;
    left: 0;
    font-size: var(--gas-text-2xl, 16px);
    font-weight: 700;
    color: var(--gas-primary, #2563eb);
    opacity: 0.5;
}

/* ── team_grid : styles (card / circle / minimal) ── */
.gas-block-team-grid--style-card .gas-block-team-grid__item {
    background: var(--gas-white, #fff);
    border: 1px solid var(--gas-neutral-100, #f1f5f9);
    border-radius: var(--gas-radius-l, 12px);
    padding: 12.5px;
    box-shadow: 0 10px 30px -16px rgba(15, 23, 42, 0.18);
    text-align: center;
}

.gas-block-team-grid--style-circle .gas-block-team-grid__item {
    text-align: center;
}

.gas-block-team-grid--style-circle .gas-block-team-grid__avatar {
    width: min(90px, 100%);
    aspect-ratio: 1;
    height: auto;
    margin: 0 auto 7.5px;
    border-radius: 50%;
    overflow: hidden;
}

.gas-block-team-grid--style-circle .gas-block-team-grid__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gas-block-team-grid--style-minimal .gas-block-team-grid__bio {
    display: none;
}

/* ── team_grid : variante vertical (une rangée par membre : portrait + bio) ── */
.gas-block-team-grid.gas-block-team-grid--style-vertical .gas-block-team-grid__grid {
    grid-template-columns: 1fr;
    gap: var(--gas-space-l, 20px);
}
.gas-block-team-grid--style-vertical .gas-block-team-grid__item {
    display: grid;
    grid-template-columns: minmax(0, 120px) 1fr;
    column-gap: var(--gas-space-l, 20px);
    row-gap: var(--gas-space-2xs, 2.5px);
    align-content: center;
    text-align: left;
}
/* Avatar en colonne 1 (calé en haut) ; nom/rôle/bio empilés en colonne 2. */
.gas-block-team-grid--style-vertical .gas-block-team-grid__avatar {
    margin: 0;
    grid-column: 1;
    grid-row: 1 / span 3;
    align-self: start;
}
.gas-block-team-grid--style-vertical .gas-block-team-grid__name,
.gas-block-team-grid--style-vertical .gas-block-team-grid__role,
.gas-block-team-grid--style-vertical .gas-block-team-grid__bio {
    grid-column: 2;
    margin: 0;
}
.gas-block-team-grid--style-vertical .gas-block-team-grid__avatar img {
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-l, 12px);
}
@media (max-width: 640px) {
    .gas-block-team-grid--style-vertical .gas-block-team-grid__item {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .gas-block-team-grid--style-vertical .gas-block-team-grid__avatar {
        grid-column: 1;
        grid-row: auto;
        max-width: 120px;
        margin-inline: auto;
    }
    .gas-block-team-grid--style-vertical .gas-block-team-grid__name,
    .gas-block-team-grid--style-vertical .gas-block-team-grid__role,
    .gas-block-team-grid--style-vertical .gas-block-team-grid__bio {
        grid-column: 1;
    }
}

/* ── stats : variante band (bande colorée pleine largeur) ── */
.gas-block-stats--band .gas-block-stats__inner {
    background: var(--gas-primary, #2563eb);
    color: var(--gas-white, #fff);
    border-radius: var(--gas-radius-l, 12px);
    padding: 22.5px 15px;
}

.gas-block-stats--band .gas-block-stats__grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
    gap: 15px;
}

.gas-block-stats--band .gas-block-stats__title,
.gas-block-stats--band .gas-block-stats__value {
    color: var(--gas-white, #fff);
}

.gas-block-stats--band .gas-block-stats__label {
    color: rgba(255, 255, 255, 0.85);
}

/* ── stats : titre + accroche ── */
.gas-block-stats__title {
    font-size: var(--gas-text-xl, 15px);
    line-height: 1.2;
}
.gas-block-stats__lead {
    margin: var(--gas-space-2, 5px) 0 var(--gas-space-l, 20px);
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-l, 11.25px);
    max-width: 440px;
}

/* ── stats : fond image + voile sombre ── */
.gas-block-stats--has-bg {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    border-radius: var(--gas-radius-l, 12px);
}
.gas-block-stats--has-bg .gas-block-stats__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.gas-block-stats--has-bg .gas-block-stats__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.gas-block-stats--has-bg::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background: rgba(15, 23, 42, var(--gas-stats-overlay, 0.55));
}
.gas-block-stats--has-bg .gas-block-stats__inner {
    position: relative;
    z-index: 1;
    padding: var(--gas-space-2xl, 40px) var(--gas-space-xl, 30px);
}
.gas-block-stats--has-bg .gas-block-stats__title {
    color: var(--gas-white, #fff);
}
.gas-block-stats--has-bg .gas-block-stats__lead {
    color: rgba(255, 255, 255, 0.85);
}
/* Les chiffres restent dans leurs cartes claires (lisibles sur la photo) ;
   seuls le titre et l'accroche, posés à même le fond, passent en blanc. */

/* ── stats : variante split (image d'un côté, chiffres de l'autre) ── */
.gas-block-stats--split .gas-block-stats__inner {
    display: grid;
    gap: var(--gas-space-xl, 30px);
    align-items: center;
}
.gas-block-stats--split .gas-block-stats__media {
    margin: 0;
}
.gas-block-stats--split .gas-block-stats__media img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--gas-radius-l, 12px);
    object-fit: cover;
}
@container (min-width: 640px) {
    .gas-block-stats--split .gas-block-stats__inner {
        grid-template-columns: 1fr 1fr;
    }
    .gas-block-stats--split.gas-block-stats--media-right .gas-block-stats__media {
        order: 2;
    }
    .gas-block-stats--split .gas-block-stats__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ── stats : variante timeline (chiffres sur un axe chronologique) ── */
.gas-block-stats--timeline .gas-block-stats__grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-l, 20px);
}
.gas-block-stats--timeline .gas-block-stats__item {
    position: relative;
    flex: 1 1 80px;
    min-width: 80px;
    background: transparent;
    border: 0;
    border-radius: 0;
    padding: var(--gas-space-l, 20px) 0 0;
    text-align: center;
}
/* Segment de ligne (au sommet de chaque item) + point relié. */
.gas-block-stats--timeline .gas-block-stats__item::before {
    content: "";
    position: absolute;
    top: 3.5px;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--gas-color-border, #e2e8f0);
}
.gas-block-stats--timeline .gas-block-stats__item:first-child::before { left: 50%; }
.gas-block-stats--timeline .gas-block-stats__item:last-child::before { right: 50%; }
.gas-block-stats--timeline .gas-block-stats__item::after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--gas-color-primary, #2563eb);
    box-shadow: 0 0 0 4px var(--gas-color-surface, #fff);
}
@media (max-width: 640px) {
    .gas-block-stats--timeline .gas-block-stats__grid { flex-direction: column; }
    .gas-block-stats--timeline .gas-block-stats__item {
        text-align: left;
        padding: 0 0 var(--gas-space-m, 10px) var(--gas-space-l, 20px);
    }
    .gas-block-stats--timeline .gas-block-stats__item::before {
        top: 0;
        bottom: 0;
        left: 4px;
        right: auto;
        width: 2px;
        height: auto;
    }
    .gas-block-stats--timeline .gas-block-stats__item:first-child::before { top: 3px; left: 4px; }
    .gas-block-stats--timeline .gas-block-stats__item:last-child::before { bottom: auto; height: 100%; left: 4px; }
    .gas-block-stats--timeline .gas-block-stats__item::after {
        top: 3px;
        left: 0;
        transform: none;
    }
}

/* ── timeline : variante alternating (zig-zag desktop, vertical mobile) ── */
@media (min-width: 768px) {
    .gas-block-timeline--alternating .gas-block-timeline__list::before {
        left: 50%;
        transform: translateX(-50%);
    }

    .gas-block-timeline--alternating .gas-block-timeline__item {
        width: 50%;
        position: relative;
    }

    .gas-block-timeline--alternating .gas-block-timeline__dot {
        position: absolute;
        top: 0;
    }

    .gas-block-timeline--alternating .gas-block-timeline__item:nth-child(odd) {
        margin-left: 0;
        padding-right: 25px;
        text-align: right;
        flex-direction: row-reverse;
    }

    .gas-block-timeline--alternating .gas-block-timeline__item:nth-child(odd) .gas-block-timeline__dot {
        right: -9.5px;
        left: auto;
    }

    .gas-block-timeline--alternating .gas-block-timeline__item:nth-child(even) {
        margin-left: 50%;
        padding-left: 25px;
    }

    .gas-block-timeline--alternating .gas-block-timeline__item:nth-child(even) .gas-block-timeline__dot {
        left: -9.5px;
    }
}

/* ── quote : variantes card / pull ── */
.gas-block-quote--card {
    background: var(--gas-white, #fff);
    border: 1px solid var(--gas-neutral-100, #f1f5f9);
    border-left: 1px solid var(--gas-neutral-100, #f1f5f9);
    border-radius: var(--gas-radius-l, 12px);
    padding: 20px;
    box-shadow: 0 12px 30px -16px rgba(15, 23, 42, 0.18);
}

.gas-block-quote--pull {
    border: 0;
    text-align: center;
    padding: 25px 10px 10px;
}

.gas-block-quote--pull::before {
    content: "\201C";
    display: block;
    font-size: 40px;
    line-height: 0.5;
    color: var(--gas-primary, #2563eb);
    opacity: 0.3;
}

.gas-block-quote--pull .gas-block-quote__text {
    font-size: clamp(15px, 4vw, 25px);
    line-height: 1.25;
    font-weight: 600;
}

/* ── title_block : eyebrow (supertitre) ── */
.gas-block-title-block__eyebrow {
    margin: 0 0 var(--gas-space-2xs, 5px);
    font-size: var(--gas-text-s, 8.75px);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gas-primary, #2563eb);
}

.gas-block-title-block--decor-side .gas-block-title-block__eyebrow {
    padding-left: 10px;
}

/* ── title_block : décors (underline / gradient / side) ── */
.gas-block-title-block--decor-underline .gas-block-title-block__title {
    padding-bottom: 5px;
    position: relative;
}

.gas-block-title-block--decor-underline .gas-block-title-block__title::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 30px;
    height: 4px;
    border-radius: 2px;
    background: var(--gas-primary, #2563eb);
}

.gas-block-title-block--align-center.gas-block-title-block--decor-underline .gas-block-title-block__title::after {
    left: 50%;
    transform: translateX(-50%);
}

.gas-block-title-block--decor-gradient .gas-block-title-block__title {
    background: linear-gradient(90deg, var(--gas-primary, #2563eb), var(--gas-accent, #f59e0b));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.gas-block-title-block--decor-side .gas-block-title-block__title {
    border-left: 4px solid var(--gas-primary, #2563eb);
    padding-left: 10px;
}

/* ── logo_cloud : en-tête (titre / sous-titre / CTA) + alignement ── */
.gas-block-logo-cloud__header {
    margin: 0 0 var(--gas-space-l, 20px);
}
.gas-block-logo-cloud__title {
    margin: 0;
    font-size: var(--gas-text-xl, 15px);
    line-height: 1.2;
    font-weight: 600;
}
.gas-block-logo-cloud__subtitle {
    margin: var(--gas-space-2, 5px) 0 0;
    color: var(--gas-color-text-muted, #4a4a4a);
    font-size: var(--gas-text-l, 11.25px);
    max-width: 420px;
}
.gas-block-logo-cloud__cta {
    margin: var(--gas-space-l, 20px) 0 0;
}
.gas-block-logo-cloud--align-center .gas-block-logo-cloud__header,
.gas-block-logo-cloud--align-center .gas-block-logo-cloud__cta {
    text-align: center;
}
.gas-block-logo-cloud--align-center .gas-block-logo-cloud__subtitle {
    margin-inline: auto;
}

/* ── logo_cloud : styles grayscale / bordered ── */
.gas-block-logo-cloud--style-grayscale .gas-block-logo-cloud__item img {
    filter: grayscale(1);
    opacity: 0.7;
    transition: filter 0.25s ease, opacity 0.25s ease;
}

.gas-block-logo-cloud--style-grayscale .gas-block-logo-cloud__item:hover img {
    filter: grayscale(0);
    opacity: 1;
}

.gas-block-logo-cloud--style-bordered .gas-block-logo-cloud__item {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
    border-radius: var(--gas-radius-m, 10px);
    padding: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ── faq_columns : styles bordered / separated ── */
.gas-block-faq-columns--style-bordered .gas-block-faq-columns__item {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
    border-radius: var(--gas-radius-m, 10px);
    padding: 12.5px;
}

.gas-block-faq-columns--style-separated .gas-block-faq-columns__item {
    border-bottom: 1px solid var(--gas-neutral-200, #e2e8f0);
    padding-bottom: 10px;
}

/* ── accordion : styles bordered / filled ── */
.gas-block-accordion--style-bordered .gas-block-accordion__item {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
    border-radius: var(--gas-radius-m, 10px);
    padding: 0 10px;
}

.gas-block-accordion--style-filled .gas-block-accordion__item {
    background: var(--gas-neutral-50, #f8fafc);
    border: 0;
    border-radius: var(--gas-radius-m, 10px);
    padding: 0 10px;
}

/* ── pricing_table : styles compact / bordered ── */
.gas-block-pricing-table--style-bordered .gas-block-pricing-table__plan {
    box-shadow: none;
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
}

.gas-block-pricing-table--style-compact .gas-block-pricing-table__plan {
    padding: 12.5px;
    box-shadow: 0 6px 16px -10px rgba(15, 23, 42, 0.15);
}

/* ── cta_band : tons gradient / dark (sur __inner comme primary/soft) ── */
.gas-block-cta-band--gradient .gas-block-cta-band__inner {
    background: linear-gradient(120deg, var(--gas-primary, #2563eb), var(--gas-accent, #f59e0b));
}

.gas-block-cta-band--dark .gas-block-cta-band__inner {
    background: var(--gas-neutral-900, #0f172a);
}

.gas-block-cta-band--gradient .gas-block-cta-band__title,
.gas-block-cta-band--gradient .gas-block-cta-band__subtitle,
.gas-block-cta-band--dark .gas-block-cta-band__title,
.gas-block-cta-band--dark .gas-block-cta-band__subtitle {
    color: var(--gas-white, #fff);
}

/* ── Section : colonne collante (sticky) ── */
.gas-block-section--sticky-left,
.gas-block-section--sticky-right {
    overflow: visible; /* position:sticky est cassée par overflow:hidden de la section */
}

.gas-block-section--sticky-left .gas-block-section__column:first-child,
.gas-block-section--sticky-right .gas-block-section__column:last-child {
    position: sticky;
    top: var(--gas-sticky-top, 15px);
    align-self: start;
}

@media (max-width: 768px) {
    .gas-block-section--sticky-left .gas-block-section__column:first-child,
    .gas-block-section--sticky-right .gas-block-section__column:last-child {
        position: static;
    }
}

/* ── Cartes à hauteur égale (la carte remplit sa cellule de grille) ── */
.gas-block-intro-cards__item {
    display: flex;
}
.gas-block-intro-cards__card {
    flex: 1;
}
.gas-block-pathway-cards__card,
.gas-block-feature-showcase__media {
    height: 100%;
}

/* ══════════════════════════════════════════════════════════════════════════
   Bloc `cards` — collection unifiée (manuelle + dynamique).
   Anatomie : media (header visuel) + corps (category/titre/texte) + footer.
   Variantes : cover | standard | minimal | horizontal.
   Dispositions : grid | featured-first | list.
   ══════════════════════════════════════════════════════════════════════════ */
.gas-block-cards__inner {
    max-width: min(100%, var(--gas-content-max-width, 720px));
    margin-inline: auto;
}
.gas-block-cards__head {
    max-width: 480px;
    margin: 0 auto 20px;
    text-align: center;
}
.gas-block-cards__eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: var(--gas-text-s, 8.5px);
    color: var(--gas-primary, #2563eb);
    font-weight: 600;
    margin: 0 0 4px;
}
.gas-block-cards__title {
    font-size: var(--gas-text-3xl, 20px);
    margin: 0 0 5px;
    line-height: 1.15;
}
.gas-block-cards__lead {
    color: var(--gas-color-text-muted, #64748b);
    margin: 0;
}

/* ── Grille ── */
.gas-block-cards__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--gas-block-gap-m, 15px);
    align-items: stretch;
}
.gas-block-cards--cols-2 .gas-block-cards__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gas-block-cards--cols-4 .gas-block-cards__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gas-block-cards__cell { display: flex; }

/* ── Disposition "list" : une carte par rangée, pleine largeur ── */
.gas-block-cards--layout-list .gas-block-cards__grid { grid-template-columns: 1fr; }

/* ── Disposition "featured-first" : 1re carte sur toute la largeur ── */
.gas-block-cards--layout-featured-first .gas-block-cards__cell--featured {
    grid-column: 1 / -1;
}

/* ── La carte remplit la cellule + flex column pour pousser le footer en bas ── */
.gas-block-cards__card {
    display: flex;
    flex-direction: column;
    flex: 1;
    height: 100%;
    border-radius: var(--gas-radius-l, 14px);
    overflow: hidden;
    background: var(--gas-color-surface-card, #fff);
    color: inherit;
    text-decoration: none;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}
a.gas-block-cards__card:hover { transform: translateY(-3px); }

.gas-block-cards__media {
    position: relative;
    margin: 0;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--gas-neutral-100, #f1f5f9);
}
.gas-block-cards__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.gas-block-cards__icon {
    font-size: 18px;
    line-height: 1;
    padding: 12.5px 12.5px 0;
}
.gas-block-cards__body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12.5px;
    flex: 1;
}
.gas-block-cards--align-center .gas-block-cards__body {
    text-align: center;
    align-items: center;
}
.gas-block-cards__category {
    font-size: var(--gas-text-xs, 11px);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gas-primary, #2563eb);
    margin: 0;
}
.gas-block-cards__card-title {
    font-size: var(--gas-text-l, 12px);
    margin: 0;
    line-height: 1.25;
}
.gas-block-cards__text {
    margin: 0;
    color: var(--gas-color-text-muted, #64748b);
    line-height: 1.55;
}
.gas-block-cards__footer {
    margin-top: auto;
    padding-top: 7.5px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 7.5px;
    flex-wrap: wrap;
}
.gas-block-cards--align-center .gas-block-cards__footer { justify-content: center; }
.gas-block-cards__meta {
    font-size: var(--gas-text-xs, 11px);
    color: var(--gas-color-text-muted, #64748b);
}
.gas-block-cards__cta {
    font-weight: 600;
    font-size: var(--gas-text-s, 14px);
    color: var(--gas-primary, #2563eb);
    text-decoration: none;
}

/* ── Variante "horizontal" : image à gauche, corps à droite ── */
.gas-block-cards__card--horizontal {
    flex-direction: row;
    align-items: stretch;
}
.gas-block-cards__card--horizontal .gas-block-cards__media {
    aspect-ratio: auto;
    width: 38%;
    min-width: 38%;
    flex-shrink: 0;
}
.gas-block-cards__card--horizontal .gas-block-cards__body { flex: 1; }

/* ── Variante "cover" : titre en surimpression sur l'image ── */
.gas-block-cards__card--cover {
    position: relative;
    min-height: 160px;
    color: var(--gas-white, #fff);
}
.gas-block-cards__card--cover .gas-block-cards__media {
    position: absolute;
    inset: 0;
    aspect-ratio: auto;
    height: 100%;
}
.gas-block-cards__card--cover .gas-block-cards__media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0) 35%, rgba(15, 23, 42, 0.78) 100%);
}
.gas-block-cards__card--cover .gas-block-cards__body {
    position: relative;
    margin-top: auto;
    z-index: 1;
}
.gas-block-cards__card--cover .gas-block-cards__text,
.gas-block-cards__card--cover .gas-block-cards__meta { color: rgba(255, 255, 255, 0.85); }
.gas-block-cards__card--cover .gas-block-cards__category,
.gas-block-cards__card--cover .gas-block-cards__cta { color: var(--gas-white, #fff); }

/* ── Variante "minimal" : titre seul, dense ── */
.gas-block-cards__card--minimal .gas-block-cards__body { padding: 10px 11px; }

/* ── Styles de carte (card_style) ── */
.gas-block-cards--style-elevated .gas-block-cards__card {
    box-shadow: 0 12px 30px -16px rgba(15, 23, 42, 0.22);
    border: 1px solid var(--gas-neutral-100, #f1f5f9);
}
.gas-block-cards--style-outline .gas-block-cards__card {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
}
.gas-block-cards--style-flat .gas-block-cards__card {
    background: var(--gas-neutral-50, #f8fafc);
}
.gas-block-cards--style-glass .gas-block-cards__card {
    background: color-mix(in srgb, var(--gas-color-surface-card, #fff) 65%, transparent);
    border: 1px solid color-mix(in srgb, var(--gas-color-surface-card, #fff) 50%, transparent);
    backdrop-filter: blur(10px);
    box-shadow: 0 12px 30px -18px rgba(15, 23, 42, 0.25);
}
/* La variante cover garde un fond image, pas le fond de style. */
.gas-block-cards__card--cover.gas-block-cards__card { background: var(--gas-neutral-900, #0f172a); }

@media (max-width: 860px) {
    .gas-block-cards--cols-3 .gas-block-cards__grid,
    .gas-block-cards--cols-4 .gas-block-cards__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 560px) {
    .gas-block-cards__grid { grid-template-columns: 1fr; }
    .gas-block-cards__card--horizontal { flex-direction: column; }
    .gas-block-cards__card--horizontal .gas-block-cards__media { width: 100%; min-width: 0; aspect-ratio: 16 / 10; }
}

/* ── Badges de carte (manuels + règles dynamiques) ── */
.gas-block-cards__badge {
    --_tone: var(--gas-badge-tone, var(--gas-primary, #2563eb));
    display: inline-flex;
    align-items: center;
    font-size: var(--gas-text-xs, 11px);
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.02em;
    padding: 2.8px 5.5px;
    border-radius: 999px;
    white-space: nowrap;
}
/* Styles */
.gas-block-cards__badge--pill,
.gas-block-cards__badge--solid {
    background: var(--_tone);
    color: var(--gas-white, #fff);
}
.gas-block-cards__badge--outline {
    background: var(--gas-white, #fff);
    color: var(--_tone);
    border: 1px solid var(--_tone);
}
.gas-block-cards__badge--solid { border-radius: var(--gas-radius-s, 6px); }
/* Badges en surimpression sur l'image (coins) */
.gas-block-cards__media .gas-block-cards__badge {
    position: absolute;
    z-index: 2;
    box-shadow: 0 4px 12px -6px rgba(15, 23, 42, 0.45);
}
.gas-block-cards__badge--pos-image-top-left { top: 6px; left: 6px; }
.gas-block-cards__badge--pos-image-top-right { top: 6px; right: 6px; }
.gas-block-cards__badge--pos-image-bottom-left { bottom: 6px; left: 6px; }
.gas-block-cards__badge--pos-image-bottom-right { bottom: 6px; right: 6px; }
/* Badges sous l'image (dans le corps) */
.gas-block-cards__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 2px;
}
.gas-block-cards--align-center .gas-block-cards__badges { justify-content: center; }

/* ── intro_cards / pathway_cards : relief de carte (card_style) ── */
.gas-block-intro-cards--style-elevated .gas-block-intro-cards__card,
.gas-block-pathway-cards--style-elevated .gas-block-pathway-cards__card {
    box-shadow: 0 14px 34px -18px rgba(15, 23, 42, 0.28);
}
.gas-block-intro-cards--style-outline .gas-block-intro-cards__card,
.gas-block-pathway-cards--style-outline .gas-block-pathway-cards__card {
    border: 1px solid var(--gas-neutral-200, #e2e8f0);
}

/* ── text : flux multi-colonnes (type journal/magazine) ── */
.gas-block-text--cols-2 .gas-block-text__content {
    column-count: 2;
    column-gap: var(--gas-space-l, 25px);
}
.gas-block-text--cols-3 .gas-block-text__content {
    column-count: 3;
    column-gap: var(--gas-space-l, 25px);
}
/* Évite de couper titres, images, listes et citations entre 2 colonnes */
.gas-block-text--cols-2 .gas-block-text__content :is(h2, h3, h4, figure, ul, ol, blockquote, img),
.gas-block-text--cols-3 .gas-block-text__content :is(h2, h3, h4, figure, ul, ol, blockquote, img) {
    break-inside: avoid;
}
.gas-block-text--cols-2 .gas-block-text__content > :first-child,
.gas-block-text--cols-3 .gas-block-text__content > :first-child {
    margin-top: 0;
}
@media (max-width: 640px) {
    .gas-block-text--cols-2 .gas-block-text__content,
    .gas-block-text--cols-3 .gas-block-text__content {
        column-count: 1;
    }
}
@media (min-width: 641px) and (max-width: 900px) {
    .gas-block-text--cols-3 .gas-block-text__content {
        column-count: 2;
    }
}

/* ════════════════════════════════════════════════════════════════════════════
   Bloc contact_info — coordonnées structurées (adresse / tél / email / horaires)
   ════════════════════════════════════════════════════════════════════════════ */
.gas-block-contact-info {
    container-type: inline-size;
}
.gas-block-contact-info__inner {
    max-width: var(--gas-container, var(--gas-container-default, 800px));
    margin-inline: auto;
}
.gas-block-contact-info__head {
    margin: 0 0 var(--gas-space-l, 20px);
}
.gas-block-contact-info__title {
    margin: 0;
    font-size: var(--gas-text-xl, 15px);
    line-height: 1.2;
}
.gas-block-contact-info__intro {
    margin: var(--gas-space-2, 5px) 0 0;
    color: var(--gas-color-text-muted, #4a4a4a);
}
.gas-block-contact-info__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--gas-space-m, 10px);
}
.gas-block-contact-info__item {
    display: flex;
    gap: var(--gas-space-3, 7.5px);
    align-items: flex-start;
}
.gas-block-contact-info__icon {
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
    color: var(--gas-color-primary, #2563eb);
    margin-top: 1.5px;
}
.gas-block-contact-info__value {
    color: inherit;
    text-decoration: none;
}
a.gas-block-contact-info__value:hover,
.gas-block-contact-info__maplink:hover {
    text-decoration: underline;
}
.gas-block-contact-info__address {
    font-style: normal;
}
.gas-block-contact-info__maplink {
    display: inline-block;
    margin-top: var(--gas-space-1, 2.5px);
    font-size: var(--gas-text-s, 9px);
    color: var(--gas-color-primary, #2563eb);
}
.gas-block-contact-info__socials {
    list-style: none;
    display: flex;
    gap: var(--gas-space-2, 5px);
    margin: var(--gas-space-l, 20px) 0 0;
    padding: 0;
}
.gas-block-contact-info__social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--gas-color-surface-muted, #f0f1f3);
    color: var(--gas-color-text, #161616);
    transition: background 0.18s ease, color 0.18s ease;
}
.gas-block-contact-info__social-link:hover {
    background: var(--gas-color-primary, #2563eb);
    color: #fff;
}
.gas-block-contact-info__social-link .gas-block-contact-info__icon {
    width: 12px;
    height: 12px;
    color: currentColor;
    margin: 0;
}
/* Grille 2 colonnes */
@container (min-width: 540px) {
    .gas-block-contact-info--layout-grid .gas-block-contact-info__list {
        grid-template-columns: 1fr 1fr;
    }
}
/* En ligne (footer) */
.gas-block-contact-info--layout-inline .gas-block-contact-info__list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-l, 20px);
    align-items: center;
}
.gas-block-contact-info--layout-inline .gas-block-contact-info__item {
    align-items: center;
}

/* ════════════════════════════════════════════════════════════════════════════
   Bloc map — carte de localisation intégrée (iframe OSM / Google)
   ════════════════════════════════════════════════════════════════════════════ */
.gas-block-map__figure {
    margin: 0;
    max-width: var(--gas-container, var(--gas-container-default, 800px));
    margin-inline: auto;
}
.gas-block-map__frame {
    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: var(--gas-radius-l, 12px);
    border: 1px solid var(--gas-color-border, #e2e8f0);
    background: var(--gas-color-surface-muted, #f0f1f3);
}
.gas-block-map--h-s .gas-block-map__frame { height: 300px; }
.gas-block-map--h-m .gas-block-map__frame { height: 420px; }
.gas-block-map--h-l .gas-block-map__frame { height: 560px; }
.gas-block-map__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}
.gas-block-map__caption {
    margin: var(--gas-space-2, 5px) 0 0;
    font-size: var(--gas-text-s, 9px);
    color: var(--gas-color-text-muted, #4a4a4a);
    text-align: center;
}
@media (max-width: 640px) {
    .gas-block-map--h-m .gas-block-map__frame { height: 340px; }
    .gas-block-map--h-l .gas-block-map__frame { height: 420px; }
}

/* ════════════════════════════════════════════════════════════════════════════
   Bloc privacy_notice — mention de confidentialité / RGPD inline (présentation)
   ════════════════════════════════════════════════════════════════════════════ */
.gas-block-privacy-notice__inner {
    display: flex;
    align-items: flex-start;
    gap: var(--gas-space-3, 7.5px);
    padding: var(--gas-space-m, 10px) var(--gas-space-l, 15px);
    border-radius: var(--gas-radius-l, 12px);
    border: 1px solid var(--gas-color-border, #e2e8f0);
    background: var(--gas-color-surface-muted, #f0f1f3);
    font-size: var(--gas-text-s, 9.5px);
}
.gas-block-privacy-notice__icon {
    flex: 0 0 auto;
    width: 15px;
    height: 15px;
    color: var(--gas-color-primary, #2563eb);
    margin-top: 1px;
}
.gas-block-privacy-notice__text {
    flex: 1 1 auto;
    min-width: 0;
}
.gas-block-privacy-notice__text > :first-child { margin-top: 0; }
.gas-block-privacy-notice__text > :last-child { margin-bottom: 0; }
.gas-block-privacy-notice__text a { color: var(--gas-color-primary, #2563eb); text-decoration: underline; }
.gas-block-privacy-notice__cta { flex: 0 0 auto; white-space: nowrap; }

/* Tons */
.gas-block-privacy-notice--tone-dark .gas-block-privacy-notice__inner {
    background: var(--gas-tone-dark-bg, #111827);
    border-color: transparent;
    color: var(--gas-tone-dark-fg, #f9fafb);
}
.gas-block-privacy-notice--tone-dark .gas-block-privacy-notice__icon,
.gas-block-privacy-notice--tone-dark .gas-block-privacy-notice__text a { color: var(--gas-accent, #f59e0b); }
.gas-block-privacy-notice--tone-primary .gas-block-privacy-notice__inner {
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 10%, var(--gas-color-surface, #fff));
    border-color: color-mix(in srgb, var(--gas-color-primary, #2563eb) 25%, transparent);
}

/* Dispositions */
.gas-block-privacy-notice--variant-left .gas-block-privacy-notice__inner,
.gas-block-privacy-notice--variant-center .gas-block-privacy-notice__inner,
.gas-block-privacy-notice--variant-right .gas-block-privacy-notice__inner {
    max-width: 480px;
}
.gas-block-privacy-notice--variant-center .gas-block-privacy-notice__inner {
    margin-inline: auto;
    text-align: center;
    flex-direction: column;
    align-items: center;
}
.gas-block-privacy-notice--variant-right .gas-block-privacy-notice__inner { margin-left: auto; }
.gas-block-privacy-notice--variant-full .gas-block-privacy-notice__inner { align-items: center; }
@media (max-width: 640px) {
    .gas-block-privacy-notice__inner { flex-wrap: wrap; }
    .gas-block-privacy-notice__cta { width: 100%; text-align: center; }
}
/* CTA lisible sur ton sombre */
.gas-block-privacy-notice--tone-dark .gas-block-privacy-notice__cta {
    border-color: rgba(255, 255, 255, 0.6);
    color: var(--gas-tone-dark-fg, #f9fafb);
}
.gas-block-privacy-notice--tone-dark .gas-block-privacy-notice__cta:hover {
    background: rgba(255, 255, 255, 0.12);
}

/* ════════════════════════════════════════════════════════════════════════════
   Bloc card_archive — collection dynamique filtrable / cherchable / paginée
   ════════════════════════════════════════════════════════════════════════════ */
.gas-block-card-archive { container-type: inline-size; }
.gas-block-card-archive__inner { max-width: var(--gas-container, var(--gas-container-wide, 900px)); margin-inline: auto; }
.gas-block-card-archive__head { margin: 0 0 var(--gas-space-l, 20px); }
.gas-block-card-archive__title { margin: 0; font-size: var(--gas-text-xl, 15px); line-height: 1.2; }
.gas-block-card-archive__lead { margin: var(--gas-space-2, 5px) 0 0; color: var(--gas-color-text-muted, #4a4a4a); }
.gas-block-card-archive__toolbar { display: flex; flex-wrap: wrap; gap: var(--gas-space-m, 10px); align-items: center; justify-content: space-between; margin-bottom: var(--gas-space-m, 10px); }
.gas-block-card-archive__search { display: flex; gap: var(--gas-space-2, 5px); flex: 1 1 180px; min-width: 0; }
.gas-block-card-archive__search-input { flex: 1 1 auto; min-width: 0; padding: 7px 10px; border: 1px solid var(--gas-color-border, #e2e8f0); border-radius: var(--gas-radius-m, 5px); font-size: var(--gas-text-m, 10px); }
.gas-block-card-archive__facets { display: flex; flex-wrap: wrap; gap: var(--gas-space-2, 5px); }
/* Facettes secondaires (entity multi-critères) : chaque groupe sur sa propre ligne,
   mais ses chips s'alignent EN LIGNE (côte à côte, wrap) — le libellé prend toute la
   largeur et passe au-dessus des chips. */
.gas-block-card-archive__facets--secondary { flex: 1 1 100%; margin-top: var(--gas-space-2, 5px); flex-direction: row; flex-wrap: wrap; align-items: center; gap: var(--gas-space-2, 5px); }
.gas-block-card-archive__facets--secondary > .gas-block-card-archive__filter-label { margin: 0; font-size: var(--gas-text-s, 9px); font-weight: 600; color: var(--gas-color-text-muted, #4a4a4a); text-transform: uppercase; letter-spacing: 0.05em; }
.gas-block-card-archive__facets--secondary > .gas-block-card-archive__chip { display: inline-flex; }
.gas-block-card-archive__filter-label { width: 100%; }
/* Boutons de basculement de vue */
.gas-block-card-archive__view-toggle { display: flex; gap: 2px; align-items: center; margin-left: auto; }
.gas-block-card-archive__view-btn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: 1px solid var(--gas-color-border, #e2e8f0); border-radius: var(--gas-radius-m, 5px); background: transparent; color: var(--gas-color-text-muted, #4a4a4a); font-size: 13px; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; }
.gas-block-card-archive__view-btn:hover { background: var(--gas-color-surface-muted, #f0f1f3); }
.gas-block-card-archive__view-btn.is-active { background: var(--gas-color-primary, #2563eb); color: #fff; border-color: transparent; }
.gas-block-card-archive__chip { display: inline-flex; align-items: center; gap: 4px; padding: 3.5px 8px; border-radius: var(--gas-radius-full, 999px); border: 1px solid var(--gas-color-border, #e2e8f0); background: var(--gas-color-surface, #fff); color: var(--gas-color-text, #161616); text-decoration: none; font-size: var(--gas-text-s, 9px); transition: background 0.15s ease, color 0.15s ease; }
.gas-block-card-archive__chip:hover { border-color: var(--gas-color-primary, #2563eb); }
.gas-block-card-archive__chip.is-active { background: var(--gas-color-primary, #2563eb); color: #fff; border-color: transparent; }
.gas-block-card-archive__chip-count { opacity: 0.7; font-size: 0.85em; }
.gas-block-card-archive__count { margin: 0 0 var(--gas-space-m, 10px); color: var(--gas-color-text-muted, #4a4a4a); font-size: var(--gas-text-s, 9px); }
.gas-block-card-archive__empty { padding: var(--gas-space-2xl, 40px); text-align: center; color: var(--gas-color-text-muted, #4a4a4a); border: 1px dashed var(--gas-color-border, #e2e8f0); border-radius: var(--gas-radius-l, 12px); }
.gas-block-card-archive__grid { display: grid; gap: var(--gas-space-l, 20px); grid-template-columns: 1fr; }
@container (min-width: 480px) {
    .gas-block-card-archive--cols-2 .gas-block-card-archive__grid,
    .gas-block-card-archive--cols-3 .gas-block-card-archive__grid,
    .gas-block-card-archive--cols-4 .gas-block-card-archive__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (min-width: 760px) {
    .gas-block-card-archive--cols-3 .gas-block-card-archive__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .gas-block-card-archive--cols-4 .gas-block-card-archive__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.gas-block-card-archive__card { display: flex; flex-direction: column; border-radius: var(--gas-radius-l, 12px); overflow: hidden; background: var(--gas-color-surface-card, #fff); color: inherit; text-decoration: none; height: 100%; transition: transform 0.18s ease; }
.gas-block-card-archive--style-elevated .gas-block-card-archive__card { box-shadow: 0 12px 30px -16px rgba(15, 23, 42, 0.22); border: 1px solid var(--gas-neutral-100, #f1f5f9); }
.gas-block-card-archive--style-outline .gas-block-card-archive__card { border: 1px solid var(--gas-color-border, #e2e8f0); }
.gas-block-card-archive--style-flat .gas-block-card-archive__card { background: var(--gas-color-surface-muted, #f0f1f3); }
a.gas-block-card-archive__card:hover { transform: translateY(-3px); }

/* Variante "liste" : une colonne, cartes horizontales (média à gauche). */
.gas-block-card-archive--layout-list .gas-block-card-archive__grid { grid-template-columns: 1fr; gap: var(--gas-space-m, 10px); }
.gas-block-card-archive--layout-list .gas-block-card-archive__card { flex-direction: row; align-items: stretch; height: auto; }
.gas-block-card-archive--layout-list .gas-block-card-archive__media { flex: 0 0 140px; max-width: 140px; }
.gas-block-card-archive--layout-list .gas-block-card-archive__body { flex: 1 1 auto; }
@media (max-width: 600px) {
    .gas-block-card-archive--layout-list .gas-block-card-archive__card { flex-direction: column; }
    .gas-block-card-archive--layout-list .gas-block-card-archive__media { flex-basis: auto; max-width: none; }
}

/* Variante "galerie" : image plein format + titre en overlay, aspect carré. */
.gas-block-card-archive--layout-gallery .gas-block-card-archive__card { position: relative; background: transparent; box-shadow: none; border: none; height: auto; aspect-ratio: 1; }
.gas-block-card-archive--layout-gallery.gas-block-card-archive--style-elevated .gas-block-card-archive__card,
.gas-block-card-archive--layout-gallery.gas-block-card-archive--style-outline .gas-block-card-archive__card { box-shadow: none; border: none; }
.gas-block-card-archive--layout-gallery .gas-block-card-archive__media { position: absolute; inset: 0; aspect-ratio: unset; border-radius: var(--gas-radius-l, 12px); overflow: hidden; }
.gas-block-card-archive--layout-gallery .gas-block-card-archive__overlay { position: absolute; bottom: 0; left: 0; right: 0; margin: 0; padding: var(--gas-space-m, 10px) var(--gas-space-4, 10px) var(--gas-space-4, 10px); background: linear-gradient(to top, rgba(0,0,0,0.62) 0%, transparent 100%); border-radius: 0 0 var(--gas-radius-l, 12px) var(--gas-radius-l, 12px); display: flex; flex-direction: column; gap: 2px; }
.gas-block-card-archive--layout-gallery .gas-block-card-archive__overlay .gas-block-card-archive__cat { color: rgba(255,255,255,0.75); }
.gas-block-card-archive--layout-gallery .gas-block-card-archive__overlay .gas-block-card-archive__card-title { color: #fff; margin: 0; font-size: var(--gas-text-m, 10px); }
a.gas-block-card-archive--layout-gallery .gas-block-card-archive__card:hover { transform: none; }
a.gas-block-card-archive--layout-gallery .gas-block-card-archive__card:hover .gas-block-card-archive__media img { transform: scale(1.04); transition: transform 0.3s ease; }

/* Variante "citations" : texte centré, style blockquote, pas d'image. */
.gas-block-card-archive--layout-quote .gas-block-card-archive__grid { grid-template-columns: 1fr; gap: var(--gas-space-m, 10px); }
@container (min-width: 480px) {
    .gas-block-card-archive--layout-quote .gas-block-card-archive__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.gas-block-card-archive--layout-quote .gas-block-card-archive__card { background: var(--gas-color-surface-muted, #f0f1f3); border-radius: var(--gas-radius-l, 12px); padding: var(--gas-space-l, 20px); border-left: 3px solid var(--gas-color-primary, #2563eb); height: auto; }
.gas-block-card-archive--layout-quote.gas-block-card-archive--style-elevated .gas-block-card-archive__card { box-shadow: none; }
.gas-block-card-archive--layout-quote .gas-block-card-archive__body { padding: 0; gap: var(--gas-space-m, 10px); }
.gas-block-card-archive--layout-quote .gas-block-card-archive__quote { margin: 0; font-style: italic; color: var(--gas-color-text, #161616); font-size: var(--gas-text-m, 10px); line-height: 1.6; }
.gas-block-card-archive--layout-quote .gas-block-card-archive__quote::before { content: '«\00a0'; }
.gas-block-card-archive--layout-quote .gas-block-card-archive__quote::after { content: '\00a0»'; }
.gas-block-card-archive--layout-quote .gas-block-card-archive__card-title { margin: 0; font-size: var(--gas-text-s, 9px); font-weight: 600; color: var(--gas-color-text-muted, #4a4a4a); }

.gas-block-card-archive__media { position: relative; margin: 0; aspect-ratio: 16 / 10; overflow: hidden; background: var(--gas-neutral-100, #f1f5f9); }
.gas-block-card-archive__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Pattern B — badge « dispo » (overlay) : places restantes / complet, rafraîchi au runtime. */
.gas-block-card-archive__badge { display: inline-block; padding: 2px 8px; border-radius: var(--gas-radius-full, 999px); font-size: var(--gas-text-s, 9px); font-weight: 600; line-height: 1.4; }
.gas-block-card-archive__media .gas-block-card-archive__badge { position: absolute; top: 8px; right: 8px; box-shadow: 0 1px 4px rgba(15, 23, 42, 0.2); }
.gas-block-card-archive__body > .gas-block-card-archive__badge { align-self: flex-start; }
.gas-block-card-archive__badge--ok { color: #fff; background: var(--gas-color-success, #16a34a); }
.gas-block-card-archive__badge--warn { color: #fff; background: var(--gas-color-warning, #d97706); }
.gas-block-card-archive__badge--full { color: #fff; background: var(--gas-color-danger, #dc2626); }
.gas-block-card-archive__badge--info { color: var(--gas-color-text, #161616); background: var(--gas-color-surface-muted, #f0f1f3); }
.gas-block-card-archive__badge--muted { color: var(--gas-color-text-muted, #4a4a4a); background: var(--gas-color-surface-muted, #f0f1f3); }
.gas-block-card-archive__body { display: flex; flex-direction: column; gap: 4px; padding: var(--gas-space-4, 10px); }
.gas-block-card-archive__cat { font-size: var(--gas-text-s, 9px); color: var(--gas-color-primary, #2563eb); font-weight: 600; }
.gas-block-card-archive__card-title { margin: 0; font-size: var(--gas-text-l, 12px); line-height: 1.25; }
.gas-block-card-archive__text { margin: 0; color: var(--gas-color-text-muted, #4a4a4a); font-size: var(--gas-text-s, 9px); }
.gas-block-card-archive__pagination { display: flex; align-items: center; justify-content: center; gap: var(--gas-space-l, 20px); margin-top: var(--gas-space-xl, 30px); }
.gas-block-card-archive__page { color: var(--gas-color-primary, #2563eb); text-decoration: none; font-weight: 600; }
.gas-block-card-archive__page-info { color: var(--gas-color-text-muted, #4a4a4a); }
@container (max-width: 480px) {
    .gas-block-card-archive__toolbar { flex-direction: column; align-items: stretch; }
}

/* ==========================================================================
   file_download — mode liste + état verrouillé + métadonnées
   ========================================================================== */
.gas-block-file-download__file-meta {
    color: var(--gas-text-muted, #6b7280);
    font-size: var(--gas-text-s, 13px);
}

.gas-block-file-download__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 7.5px);
}

.gas-block-file-download__file {
    display: flex;
    align-items: center;
    gap: var(--gas-space-m, 10px);
    padding: var(--gas-space-s, 7.5px) var(--gas-space-m, 10px);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-m, 5px);
    background: var(--gas-color-surface, #fff);
}

.gas-block-file-download__ext,
.gas-block-downloads-list__ext {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 var(--gas-space-xs, 5px);
    border-radius: var(--gas-radius-s, 3.75px);
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 12%, transparent);
    color: var(--gas-color-primary, #2563eb);
    font-size: var(--gas-text-s, 13px);
    font-weight: 700;
    letter-spacing: 0.02em;
}

.gas-block-file-download__file-body,
.gas-block-downloads-list__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1 1 auto;
}

.gas-block-file-download__file-label {
    font-weight: 600;
    color: var(--gas-text-color, #111827);
}

.gas-block-file-download__file-desc {
    color: var(--gas-text-secondary, #4b5563);
    font-size: var(--gas-text-s, 13px);
}

.gas-block-file-download__btn {
    flex: 0 0 auto;
}

.gas-block-file-download__lock,
.gas-block-downloads-list__lock {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gas-space-xs, 5px);
    text-align: center;
    padding: var(--gas-space-l, 15px);
    border: 1px dashed var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-m, 5px);
    color: var(--gas-text-muted, #6b7280);
}

.gas-block-file-download__lock-icon,
.gas-block-downloads-list__lock-icon {
    font-size: var(--gas-text-l, 20px);
}

/* ==========================================================================
   downloads_list — bibliothèque de fichiers
   ========================================================================== */
.gas-block-downloads-list__inner {
    max-width: var(--gas-container, 960px);
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-l, 15px);
}

.gas-block-downloads-list.is-align-center { text-align: center; }

.gas-block-downloads-list__title {
    font-size: var(--gas-text-l, 20px);
    margin: 0;
}

.gas-block-downloads-list__lead {
    color: var(--gas-text-secondary, #4b5563);
    margin: 4px 0 0;
}

.gas-block-downloads-list__grid {
    display: grid;
    gap: var(--gas-space-m, 10px);
    grid-template-columns: repeat(var(--gas-dl-cols, 2), minmax(0, 1fr));
}

.gas-block-downloads-list--cols-1 { --gas-dl-cols: 1; }
.gas-block-downloads-list--cols-2 { --gas-dl-cols: 2; }
.gas-block-downloads-list--cols-3 { --gas-dl-cols: 3; }

.gas-block-downloads-list__card {
    display: flex;
    align-items: center;
    gap: var(--gas-space-m, 10px);
    padding: var(--gas-space-m, 10px);
    border-radius: var(--gas-radius-m, 5px);
    text-decoration: none;
    color: inherit;
    background: var(--gas-color-surface, #fff);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.gas-block-downloads-list--style-outline .gas-block-downloads-list__card { border: 1px solid var(--gas-color-border, #e0e0e0); }
.gas-block-downloads-list--style-flat .gas-block-downloads-list__card { background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 5%, transparent); }
.gas-block-downloads-list--style-elevated .gas-block-downloads-list__card { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.06); }

.gas-block-downloads-list__card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}

.gas-block-downloads-list__label {
    font-weight: 600;
    color: var(--gas-text-color, #111827);
}

.gas-block-downloads-list__desc {
    color: var(--gas-text-secondary, #4b5563);
    font-size: var(--gas-text-s, 13px);
}

.gas-block-downloads-list__meta {
    color: var(--gas-text-muted, #6b7280);
    font-size: var(--gas-text-s, 13px);
}

.gas-block-downloads-list__action {
    flex: 0 0 auto;
    color: var(--gas-color-primary, #2563eb);
    font-size: var(--gas-text-l, 20px);
    font-weight: 700;
}

@container (max-width: 640px) {
    .gas-block-downloads-list__grid { grid-template-columns: 1fr; }
    .gas-block-file-download__file { flex-wrap: wrap; }
}

/* Bloc entity_single — fiche d'un CPT Entity Kit (parité avec le renderer PHP). */
.gas-block-entity-single .gas-entity-single__header { margin-bottom: var(--gas-space-l, 20px); }
.gas-block-entity-single .gas-entity-single__category { margin: 0 0 var(--gas-space-xs, 2.5px); color: var(--gas-color-primary, #5b3df5); font-size: var(--gas-text-s, 8.75px); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.gas-block-entity-single .gas-entity-single__title { margin: 0; font-size: var(--gas-text-xl, 22.5px); line-height: 1.1; color: var(--gas-color-text, #15151a); }
.gas-block-entity-single .gas-entity-single__media { margin: 0 0 var(--gas-space-l, 20px); }
.gas-block-entity-single .gas-entity-single__image { display: block; width: 100%; height: auto; border-radius: var(--gas-radius-l, 10px); object-fit: cover; }
.gas-block-entity-single .gas-entity-single__body { display: grid; gap: var(--gas-space-m, 10px); margin-bottom: var(--gas-space-l, 20px); }
.gas-block-entity-single .gas-entity-single__field { display: grid; gap: var(--gas-space-xs, 2.5px); }
.gas-block-entity-single .gas-entity-single__field-label { font-size: var(--gas-text-s, 8.75px); font-weight: 600; color: var(--gas-color-text-muted, #6b6b78); }
.gas-block-entity-single .gas-entity-single__field-value { color: var(--gas-color-text, #15151a); font-size: var(--gas-text-m, 10px); }
.gas-block-entity-single .gas-entity-single__field-value img { max-width: 100%; height: auto; border-radius: var(--gas-radius-m, 5px); }
.gas-block-entity-single .gas-entity-single__relations { margin-top: var(--gas-space-l, 20px); padding-top: var(--gas-space-m, 10px); border-top: 1px solid var(--gas-color-border, #e4e4ec); }
.gas-block-entity-single .gas-entity-single__relations-title { margin: 0 0 var(--gas-space-s, 5px); font-size: var(--gas-text-l, 15px); color: var(--gas-color-text, #15151a); }
.gas-block-entity-single .gas-entity-single__relation-list { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: var(--gas-space-s, 5px); }
.gas-block-entity-single .gas-entity-single__relation { display: inline-flex; align-items: baseline; gap: var(--gas-space-xs, 2.5px); padding: var(--gas-space-xs, 2.5px) var(--gas-space-s, 5px); border-radius: var(--gas-radius-m, 5px); background: var(--gas-color-surface-alt, #f4f4f8); }
.gas-block-entity-single .gas-entity-single__relation-link { color: var(--gas-color-primary, #5b3df5); font-weight: 600; text-decoration: none; }
.gas-block-entity-single .gas-entity-single__relation-link:hover { text-decoration: underline; }
.gas-block-entity-single .gas-entity-single__relation-meta { color: var(--gas-color-text-muted, #6b6b78); font-size: var(--gas-text-s, 8.75px); }
.gas-block-entity-single__empty { color: var(--gas-color-text-muted, #6b6b78); }

/* ==========================================================================
   breadcrumb — fil d'Ariane
   ========================================================================== */
.gas-block-breadcrumb {
    max-width: var(--gas-container, 960px);
    margin-inline: auto;
    font-size: var(--gas-text-s, 13px);
}

.gas-block-breadcrumb.is-tone-surface { background: var(--gas-color-surface, #fff); padding: var(--gas-space-s, 7.5px) var(--gas-space-m, 10px); border-radius: var(--gas-radius-m, 5px); }
.gas-block-breadcrumb.is-tone-dark { color: var(--gas-text-on, #fff); }
.gas-block-breadcrumb.is-align-center .gas-block-breadcrumb__list { justify-content: center; }

.gas-block-breadcrumb__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--gas-space-xs, 5px);
}

.gas-block-breadcrumb__item {
    display: inline-flex;
    align-items: center;
    gap: var(--gas-space-xs, 5px);
    color: var(--gas-text-muted, #6b7280);
}

.gas-block-breadcrumb__item:not(:first-child)::before {
    color: var(--gas-text-muted, #9ca3af);
    opacity: 0.7;
}

.gas-block-breadcrumb--sep-chevron .gas-block-breadcrumb__item:not(:first-child)::before { content: "\203A"; }
.gas-block-breadcrumb--sep-slash .gas-block-breadcrumb__item:not(:first-child)::before { content: "/"; }
.gas-block-breadcrumb--sep-arrow .gas-block-breadcrumb__item:not(:first-child)::before { content: "\2192"; }
.gas-block-breadcrumb--sep-dot .gas-block-breadcrumb__item:not(:first-child)::before { content: "\2022"; }

.gas-block-breadcrumb__link {
    color: var(--gas-text-secondary, #4b5563);
    text-decoration: none;
}
.gas-block-breadcrumb__link:hover { color: var(--gas-color-primary, #2563eb); text-decoration: underline; }

.gas-block-breadcrumb__current {
    color: var(--gas-text-color, #111827);
    font-weight: 600;
}

/* ==========================================================================
   directory_map — annuaire cartographié (carte + liste filtrable)
   ========================================================================== */
.gas-block-directory-map__inner {
    max-width: var(--gas-container, 1100px);
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-l, 15px);
}

.gas-block-directory-map__title { font-size: var(--gas-text-l, 20px); margin: 0; }
.gas-block-directory-map__lead { color: var(--gas-text-secondary, #4b5563); margin: 4px 0 0; }

.gas-block-directory-map__layout {
    display: grid;
    gap: var(--gas-space-l, 15px);
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
    align-items: start;
}

.gas-block-directory-map--map_left .gas-block-directory-map__panel { order: 2; }
.gas-block-directory-map--map_top .gas-block-directory-map__layout { grid-template-columns: 1fr; }
.gas-block-directory-map--map_top .gas-block-directory-map__map { order: -1; }

.gas-block-directory-map__panel {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-m, 10px);
}

.gas-block-directory-map__toolbar {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 7.5px);
}

.gas-block-directory-map__search { display: flex; gap: var(--gas-space-xs, 5px); }
.gas-block-directory-map__search-input {
    flex: 1 1 auto;
    padding: var(--gas-space-xs, 5px) var(--gas-space-s, 7.5px);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-m, 5px);
}

.gas-block-directory-map__facets { display: flex; flex-wrap: wrap; gap: var(--gas-space-xs, 5px); }
.gas-block-directory-map__chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px var(--gas-space-s, 7.5px);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-full, 999px);
    font-size: var(--gas-text-s, 13px);
    text-decoration: none;
    color: var(--gas-text-secondary, #4b5563);
}
.gas-block-directory-map__chip.is-active { background: var(--gas-color-primary, #2563eb); color: var(--gas-text-on, #fff); border-color: transparent; }
.gas-block-directory-map__chip-count { opacity: 0.7; font-variant-numeric: tabular-nums; }

.gas-block-directory-map__count { color: var(--gas-text-muted, #6b7280); font-size: var(--gas-text-s, 13px); margin: 0; }

.gas-block-directory-map__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-xs, 5px);
    max-height: 520px;
    overflow-y: auto;
}

.gas-block-directory-map__item {
    padding: var(--gas-space-s, 7.5px) var(--gas-space-m, 10px);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-m, 5px);
    background: var(--gas-color-surface, #fff);
}
.gas-block-directory-map__item:hover { border-color: var(--gas-color-primary, #2563eb); }
.gas-block-directory-map__item-title { font-size: var(--gas-text-m, 16px); margin: 0; }
.gas-block-directory-map__item-title a { color: inherit; text-decoration: none; }
.gas-block-directory-map__item-title a:hover { color: var(--gas-color-primary, #2563eb); }
.gas-block-directory-map__item-cat {
    display: inline-block;
    margin-top: 2px;
    font-size: var(--gas-text-s, 13px);
    color: var(--gas-color-primary, #2563eb);
}
.gas-block-directory-map__item-address { color: var(--gas-text-secondary, #4b5563); font-size: var(--gas-text-s, 13px); margin: 2px 0 0; }
.gas-block-directory-map__empty { color: var(--gas-text-muted, #6b7280); }

.gas-block-directory-map__map {
    position: sticky;
    top: var(--gas-space-m, 10px);
    border-radius: var(--gas-radius-l, 7.5px);
    overflow: hidden;
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 6%, transparent);
}
.gas-block-directory-map__canvas { width: 100%; height: 100%; min-height: inherit; }
.gas-block-directory-map--h-s .gas-block-directory-map__map { min-height: 320px; }
.gas-block-directory-map--h-m .gas-block-directory-map__map { min-height: 460px; }
.gas-block-directory-map--h-l .gas-block-directory-map__map { min-height: 600px; }
.gas-block-directory-map__canvas { min-height: 320px; }
.gas-block-directory-map--h-m .gas-block-directory-map__canvas { min-height: 460px; }
.gas-block-directory-map--h-l .gas-block-directory-map__canvas { min-height: 600px; }
.gas-block-directory-map__noscript { padding: var(--gas-space-l, 15px); text-align: center; color: var(--gas-text-muted, #6b7280); }

@media (max-width: 768px) {
    .gas-block-directory-map__layout { grid-template-columns: 1fr; }
    .gas-block-directory-map--map_left .gas-block-directory-map__panel { order: 0; }
    .gas-block-directory-map__map { position: static; order: -1; }
    .gas-block-directory-map__list { max-height: none; }
}

/* ==========================================================================
   search_box — champ de recherche
   ========================================================================== */
.gas-block-search-box__inner {
    max-width: var(--gas-container, 640px);
    margin-inline: auto;
}
.gas-block-search-box.is-align-center { text-align: center; }
.gas-block-search-box.is-align-center .gas-block-search-box__form { justify-content: center; }
.gas-block-search-box.is-tone-surface .gas-block-search-box__inner,
.gas-block-search-box.is-tone-dark .gas-block-search-box__inner,
.gas-block-search-box.is-tone-primary .gas-block-search-box__inner {
    padding: var(--gas-space-l, 15px);
    border-radius: var(--gas-radius-l, 7.5px);
}
.gas-block-search-box.is-tone-surface .gas-block-search-box__inner { background: var(--gas-color-surface, #fff); }
.gas-block-search-box.is-tone-dark .gas-block-search-box__inner { background: var(--gas-color-dark, #111827); color: var(--gas-text-on, #fff); }
.gas-block-search-box.is-tone-primary .gas-block-search-box__inner { background: var(--gas-color-primary, #2563eb); color: var(--gas-text-on, #fff); }

.gas-block-search-box__title { font-size: var(--gas-text-l, 20px); margin: 0 0 4px; }
.gas-block-search-box__lead { margin: 0 0 var(--gas-space-m, 10px); opacity: 0.85; }

.gas-block-search-box__form { display: flex; gap: var(--gas-space-xs, 5px); }
.gas-block-search-box__input {
    flex: 1 1 auto;
    min-width: 0;
    padding: var(--gas-space-s, 7.5px) var(--gas-space-m, 10px);
    border: 1px solid var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-m, 5px);
    font-size: var(--gas-text-m, 16px);
}
.gas-block-search-box--large .gas-block-search-box__input { padding: var(--gas-space-m, 10px) var(--gas-space-l, 15px); font-size: var(--gas-text-l, 20px); }
.gas-block-search-box__btn { flex: 0 0 auto; }

/* ==========================================================================
   search_results — résultats de recherche
   ========================================================================== */
.gas-block-search-results__inner {
    max-width: var(--gas-container, 800px);
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-m, 10px);
}
.gas-block-search-results__title { font-size: var(--gas-text-l, 20px); margin: 0; }
.gas-block-search-results__lead { color: var(--gas-text-secondary, #4b5563); margin: 0; }
.gas-block-search-results__count { color: var(--gas-text-muted, #6b7280); font-size: var(--gas-text-s, 13px); margin: 0; }
.gas-block-search-results__hint,
.gas-block-search-results__empty { color: var(--gas-text-muted, #6b7280); }

.gas-block-search-results__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-m, 10px);
}
.gas-block-search-results__item {
    padding: var(--gas-space-m, 10px) 0;
    border-bottom: 1px solid var(--gas-color-border, #e0e0e0);
}
.gas-block-search-results__badge {
    display: inline-block;
    font-size: var(--gas-text-s, 13px);
    color: var(--gas-color-primary, #2563eb);
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 10%, transparent);
    padding: 1px 6px;
    border-radius: var(--gas-radius-full, 999px);
    margin-bottom: 3px;
}
.gas-block-search-results__item-title { font-size: var(--gas-text-m, 16px); margin: 0; }
.gas-block-search-results__item-title a { color: var(--gas-text-color, #111827); text-decoration: none; }
.gas-block-search-results__item-title a:hover { color: var(--gas-color-primary, #2563eb); text-decoration: underline; }
.gas-block-search-results__excerpt { color: var(--gas-text-secondary, #4b5563); margin: 3px 0 0; }
.gas-block-search-results__lock { display: inline-block; margin-top: 3px; font-size: var(--gas-text-s, 13px); color: var(--gas-text-muted, #6b7280); }

.gas-block-search-results__pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--gas-space-m, 10px);
    margin-top: var(--gas-space-m, 10px);
}
.gas-block-search-results__page { color: var(--gas-color-primary, #2563eb); text-decoration: none; }
.gas-block-search-results__page-info { color: var(--gas-text-muted, #6b7280); font-size: var(--gas-text-s, 13px); }

/* ==========================================================================
   countdown — compte à rebours
   ========================================================================== */
.gas-block-countdown__inner {
    max-width: var(--gas-container, 720px);
    margin-inline: auto;
}
.gas-block-countdown.is-align-center { text-align: center; }
.gas-block-countdown.is-align-center .gas-block-countdown__timer { justify-content: center; }
.gas-block-countdown.is-tone-surface .gas-block-countdown__inner,
.gas-block-countdown.is-tone-primary .gas-block-countdown__inner,
.gas-block-countdown.is-tone-dark .gas-block-countdown__inner {
    padding: var(--gas-space-l, 15px);
    border-radius: var(--gas-radius-l, 7.5px);
}
.gas-block-countdown.is-tone-surface .gas-block-countdown__inner { background: var(--gas-color-surface, #fff); }
.gas-block-countdown.is-tone-primary .gas-block-countdown__inner { background: var(--gas-color-primary, #2563eb); color: var(--gas-text-on, #fff); }
.gas-block-countdown.is-tone-dark .gas-block-countdown__inner { background: var(--gas-color-dark, #111827); color: var(--gas-text-on, #fff); }

.gas-block-countdown__title { font-size: var(--gas-text-l, 20px); margin: 0 0 4px; }
.gas-block-countdown__lead { margin: 0 0 var(--gas-space-m, 10px); opacity: 0.85; }

.gas-block-countdown__timer {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-m, 10px);
}
.gas-block-countdown__unit {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    min-width: 60px;
}
.gas-block-countdown--boxes .gas-block-countdown__unit {
    padding: var(--gas-space-s, 7.5px) var(--gas-space-m, 10px);
    border-radius: var(--gas-radius-m, 5px);
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 10%, transparent);
}
.gas-block-countdown__value {
    font-size: clamp(28px, 6vw, 44px);
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
.gas-block-countdown__label {
    font-size: var(--gas-text-s, 13px);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.75;
}
.gas-block-countdown--inline .gas-block-countdown__timer { gap: var(--gas-space-s, 7.5px); align-items: baseline; }
.gas-block-countdown--inline .gas-block-countdown__unit { flex-direction: row; gap: 3px; min-width: 0; }
.gas-block-countdown--inline .gas-block-countdown__value { font-size: var(--gas-text-l, 20px); }
.gas-block-countdown__expired { font-size: var(--gas-text-l, 20px); font-weight: 600; margin: 0; }

/* ==========================================================================
   social_embed — publication réseau social (privacy-first)
   ========================================================================== */
.gas-block-social-embed__inner {
    max-width: var(--gas-container, 560px);
    margin-inline: auto;
}
.gas-block-social-embed.is-align-center { text-align: center; }
.gas-block-social-embed__title { font-size: var(--gas-text-l, 20px); margin: 0 0 var(--gas-space-s, 7.5px); }

.gas-block-social-embed__placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gas-space-s, 7.5px);
    padding: var(--gas-space-xl, 20px) var(--gas-space-l, 15px);
    border: 1px dashed var(--gas-color-border, #e0e0e0);
    border-radius: var(--gas-radius-l, 7.5px);
    background: color-mix(in srgb, var(--gas-color-primary, #2563eb) 4%, transparent);
}
.gas-block-social-embed__provider {
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: var(--gas-text-s, 13px);
    color: var(--gas-color-primary, #2563eb);
}
.gas-block-social-embed__notice {
    margin: 0;
    color: var(--gas-text-secondary, #4b5563);
    font-size: var(--gas-text-s, 13px);
    max-width: 420px;
}
.gas-block-social-embed__mount { display: flex; justify-content: center; }
.gas-block-social-embed__mount iframe {
    width: 100%;
    aspect-ratio: 16 / 9;
    border: 0;
    border-radius: var(--gas-radius-m, 5px);
}
.gas-block-social-embed__caption {
    margin: var(--gas-space-s, 7.5px) 0 0;
    color: var(--gas-text-muted, #6b7280);
    font-size: var(--gas-text-s, 13px);
}
.gas-block-social-embed__fallback { color: var(--gas-color-primary, #2563eb); }

/* ====== learning_pathway — plan d'un parcours de formation ====== */
.gas-block-learning-pathway {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 7.5px);
}
.gas-block-learning-pathway__title { margin: 0; }
.gas-block-learning-pathway__subtitle {
    margin: 0;
    color: var(--gas-text-muted, #6b7280);
}
.gas-block-learning-pathway__meta {
    margin: 0;
    font-size: var(--gas-text-s, 13px);
    color: var(--gas-text-muted, #6b7280);
}
.gas-block-learning-pathway__description { margin: 0; white-space: pre-line; }
.gas-block-learning-pathway__sections {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 7.5px);
}
.gas-block-learning-pathway__section {
    border: 1px solid var(--gas-border-color, #e5e7eb);
    border-radius: var(--gas-radius-l, 12px);
    padding: var(--gas-space-m, 10px);
    background: var(--gas-surface-card, #fff);
}
.gas-block-learning-pathway__section-title {
    margin: 0 0 var(--gas-space-xs, 5px);
    font-size: var(--gas-text-m, 15px);
}
.gas-block-learning-pathway__items {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-xs, 5px);
}
.gas-block-learning-pathway__item { font-size: var(--gas-text-s, 13px); }
.gas-block-learning-pathway__item-optional {
    font-size: var(--gas-text-xs, 11px);
    color: var(--gas-text-muted, #6b7280);
    border: 1px solid var(--gas-border-color, #e5e7eb);
    border-radius: var(--gas-radius-m, 8px);
    padding: 0 var(--gas-space-xs, 5px);
}
.gas-block-learning-pathway__cta { margin: 0; }
.gas-block-learning-pathway__empty { color: var(--gas-text-muted, #6b7280); }

/* ====== quiz_embed — quiz interactif dans une page ====== */
.gas-block-quiz-embed__title { margin: 0 0 var(--gas-space-s, 7.5px); }
.gas-block-quiz-embed__gate {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-s, 7.5px);
    align-items: flex-start;
    border: 1px solid var(--gas-border-color, #e5e7eb);
    border-radius: var(--gas-radius-l, 12px);
    padding: var(--gas-space-m, 10px);
    background: var(--gas-surface-card, #fff);
}
.gas-block-quiz-embed__gate-title { margin: 0; font-weight: 600; }
.gas-block-quiz-embed__empty { color: var(--gas-text-muted, #6b7280); }
/* Bloc related_entities (pont documents ↔ entités, lot 10 plan v2) */

.gas-block-related-entities {
    margin: var(--gas-space-l, 15px) 0;
}

.gas-block-related-entities__heading {
    font-size: var(--gas-text-l, 12.5px);
    margin: 0 0 var(--gas-space-s, 5px);
}

.gas-block-related-entities__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: var(--gas-space-s, 5px);
}

.gas-block-related-entities__item {
    display: flex;
    gap: var(--gas-space-s, 5px);
    padding: var(--gas-space-s, 5px);
    border: 1px solid var(--gas-color-border, #e2e2ea);
    border-radius: var(--gas-radius-m, 5px);
    background: var(--gas-color-surface, #fff);
}

.gas-block-related-entities__image {
    width: 40px;
    height: 40px;
    object-fit: cover;
    border-radius: var(--gas-radius-m, 5px);
    flex-shrink: 0;
}

.gas-block-related-entities__category {
    margin: 0;
    font-size: var(--gas-text-s, 8.75px);
    color: var(--gas-color-text-muted, #6b6b78);
}

.gas-block-related-entities__title {
    margin: 0;
    font-weight: 600;
}

.gas-block-related-entities__link {
    font-size: var(--gas-text-s, 8.75px);
    color: var(--gas-color-primary, #5b3df5);
}

/* ============================================================
   Bloc « Événement lié » (Lot 4a — article → activité)
   ============================================================ */
.gas-related-events {
    margin: var(--gas-space-6) 0;
}
.gas-related-events__title {
    margin-bottom: var(--gas-space-4);
}
.gas-related-events__list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: var(--gas-space-4);
}
.gas-related-events__card {
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-3);
    padding: var(--gas-space-4);
    border: 1px solid var(--gas-color-border);
    border-radius: var(--gas-radius-m);
    background: var(--gas-color-surface);
}
.gas-related-events__card-title {
    font-weight: 600;
    text-decoration: none;
    color: var(--gas-color-text);
}
.gas-related-events__card-title:hover {
    color: var(--gas-color-accent);
}
.gas-related-events__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-3);
    color: var(--gas-color-text-secondary);
    font-size: .9em;
}
.gas-related-events__cta {
    align-self: flex-start;
}

/* Pages système (404 / accès réservé) : rangée de boutons d'action. */
.gas-system-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-s, 0.75rem);
    justify-content: center;
    margin-block-start: var(--gas-space-m, 1.5rem);
}

/* Bloc formulaire de connexion : conteneur centré, largeur maîtrisée. */
.gas-block-login-form {
    max-width: var(--gas-container, 32rem);
    margin-inline: auto;
}

/* ============================================================
   Bloc collection_activites (Lot 4b — activités d'une collection)
   ============================================================ */
.gas-collection-activites { margin: var(--gas-space-6) 0; }
.gas-collection-activites__title { margin-bottom: var(--gas-space-4); }
.gas-collection-activites__list {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--gas-space-4);
}
.gas-collection-activites__link {
    display: flex; flex-direction: column;
    border: 1px solid var(--gas-color-border); border-radius: var(--gas-radius-m);
    overflow: hidden; text-decoration: none; color: var(--gas-color-text);
    background: var(--gas-color-surface); transition: border-color .15s ease, transform .15s ease;
}
.gas-collection-activites__link:hover { border-color: var(--gas-color-accent); transform: translateY(-2px); }
.gas-collection-activites__img { width: 100%; height: 140px; object-fit: cover; display: block; background: var(--gas-color-bg-subtle); }
.gas-collection-activites__body { display: flex; flex-direction: column; gap: var(--gas-space-2, 4px); padding: var(--gas-space-4); }
.gas-collection-activites__name { font-weight: 600; }
.gas-collection-activites__date { color: var(--gas-color-text-secondary); font-size: .9em; }

/* card_archive — état chargement AJAX (pagination dynamique) */
.gas-block-card-archive.is-loading .gas-block-card-archive__grid {
    opacity: 0.45;
    pointer-events: none;
    transition: opacity 0.18s ease;
}
.gas-block-card-archive.is-loading .gas-block-card-archive__pagination {
    opacity: 0.45;
    pointer-events: none;
}

/* ─── audio_player ──────────────────────────────────────────────────────── */

.gas-block-audio-player {
    container-type: inline-size;
}
.gas-block-audio-player__inner {
    max-width: var(--gas-container, var(--gas-container-default, 720px));
    margin-inline: auto;
    padding-inline: var(--gas-space-4);
    display: flex;
    flex-direction: column;
    gap: var(--gas-space-3);
}
.gas-block-audio-player__title {
    font-size: var(--gas-text-l, 1.25rem);
    font-weight: 600;
    color: var(--gas-color-text);
    margin: 0;
}
.gas-block-audio-player__frame {
    width: 100%;
    border-radius: var(--gas-radius-m, 8px);
    overflow: hidden;
    background: var(--gas-color-surface-muted, #111);
}
.gas-block-audio-player__iframe {
    width: 100%;
    height: var(--_player-h, 352px);
    display: block;
    border: 0;
}
.gas-block-audio-player__caption {
    font-size: var(--gas-text-s, .875rem);
    color: var(--gas-color-text-secondary);
    margin: 0;
}

/* ─── hero_video ─────────────────────────────────────────────────────────── */

.gas-block-hero-video {
    position: relative;
    min-height: var(--_hero-min-h, 100svh);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    isolation: isolate;
    color: #fff;
}

.gas-block-hero-video__bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.gas-block-hero-video__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
}
/* iFrame YouTube/Vimeo : scale trick pour couvrir sans bandes noires */
.gas-block-hero-video__video--yt,
.gas-block-hero-video__video--vimeo {
    width: 200%;
    height: 200%;
    top: -50%;
    left: -50%;
}

/* Image de secours : cachée par défaut, visible sous prefers-reduced-motion */
.gas-block-hero-video__fallback {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: none;
}
@media (prefers-reduced-motion: reduce) {
    .gas-block-hero-video__video { display: none; }
    .gas-block-hero-video__fallback { display: block; }
}

.gas-block-hero-video__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, var(--_hero-overlay, 0.45));
}

.gas-block-hero-video__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--gas-space-4);
    padding: clamp(48px, 8vw, 120px) clamp(20px, 5vw, 80px);
    max-width: 860px;
    width: 100%;
}
.gas-block-hero-video--align-left .gas-block-hero-video__content {
    align-items: flex-start;
    text-align: left;
}

.gas-block-hero-video__eyebrow {
    font-size: .75rem;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    opacity: .75;
    margin: 0;
}
.gas-block-hero-video__title {
    font-size: clamp(2.5rem, 7vw, 5rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -.02em;
    margin: 0;
    color: #fff;
}
.gas-block-hero-video__subtitle {
    font-size: clamp(1rem, 2vw, 1.15rem);
    line-height: 1.6;
    opacity: .88;
    margin: 0;
    max-width: 620px;
}
.gas-block-hero-video__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--gas-space-3);
    align-items: center;
}
.gas-block-hero-video--align-left .gas-block-hero-video__actions {
    justify-content: flex-start;
}
.gas-block-hero-video__note {
    font-size: .875rem;
    opacity: .6;
    margin: 0;
    font-style: italic;
}

/* ===========================================================================
   query — slice déclarative multi-source (cards | list | links | logos)
   Slice figée (sans toolbar/pagination). Cf. blocs/renderers/query.php.
   =========================================================================== */
.gas-block-query__head { margin: 0 0 var(--gas-space-l, 20px); }
.gas-block-query__title { margin: 0; font-size: var(--gas-text-xl, 15px); line-height: 1.2; }
.gas-block-query__lead { margin: var(--gas-space-2, 5px) 0 0; color: var(--gas-color-text-muted, #4a4a4a); }
.gas-block-query__empty { padding: var(--gas-space-2xl, 40px); text-align: center; color: var(--gas-color-text-muted, #4a4a4a); border: 1px dashed var(--gas-color-border, #e2e8f0); border-radius: var(--gas-radius-l, 12px); }

/* --- layout cards --- */
.gas-block-query__grid { display: grid; gap: var(--gas-space-l, 20px); grid-template-columns: 1fr; }
@media (min-width: 600px) {
    .gas-block-query--cols-2 .gas-block-query__grid,
    .gas-block-query--cols-3 .gas-block-query__grid,
    .gas-block-query--cols-4 .gas-block-query__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 960px) {
    .gas-block-query--cols-3 .gas-block-query__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .gas-block-query--cols-4 .gas-block-query__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.gas-block-query__card { display: flex; flex-direction: column; border-radius: var(--gas-radius-l, 12px); overflow: hidden; background: var(--gas-white, #fff); color: inherit; text-decoration: none; height: 100%; border: 1px solid var(--gas-neutral-100, #f1f5f9); box-shadow: 0 12px 30px -16px rgba(15, 23, 42, 0.22); transition: transform 0.18s ease; }
a.gas-block-query__card:hover { transform: translateY(-3px); }
.gas-block-query__media { position: relative; margin: 0; aspect-ratio: 16 / 10; overflow: hidden; background: var(--gas-neutral-100, #f1f5f9); }
.gas-block-query__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gas-block-query__body { display: flex; flex-direction: column; gap: var(--gas-space-2, 5px); padding: var(--gas-space-m, 10px); }
.gas-block-query__cat { font-size: var(--gas-text-s, 9px); color: var(--gas-color-primary, #2563eb); font-weight: 600; }
.gas-block-query__card-title { margin: 0; font-size: var(--gas-text-l, 12px); line-height: 1.25; }
.gas-block-query__text { margin: 0; color: var(--gas-color-text-muted, #4a4a4a); }

/* --- layout links : mur de références --- */
.gas-block-query__links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--gas-space-2, 5px) var(--gas-space-m, 10px); }
.gas-block-query__link-item { display: inline-flex; align-items: center; }
.gas-block-query__link-item:not(:last-child)::after { content: "·"; margin-left: var(--gas-space-m, 10px); color: var(--gas-color-border, #cbd5e1); }
.gas-block-query__link { color: var(--gas-color-primary, #2563eb); text-decoration: none; font-weight: 500; }
.gas-block-query__link:hover { text-decoration: underline; }

/* --- layout logos --- */
.gas-block-query__logos { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--gas-space-l, 20px); grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; }
@media (min-width: 600px) { .gas-block-query--cols-3 .gas-block-query__logos { grid-template-columns: repeat(3, minmax(0, 1fr)); } .gas-block-query--cols-4 .gas-block-query__logos { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.gas-block-query__logo { display: flex; align-items: center; justify-content: center; padding: var(--gas-space-m, 10px); filter: grayscale(1); opacity: 0.75; transition: filter 0.18s ease, opacity 0.18s ease; }
.gas-block-query__logo:hover { filter: none; opacity: 1; }
.gas-block-query__logo img { max-width: 100%; height: auto; max-height: 64px; object-fit: contain; display: block; }
.gas-block-query__logo-text { font-weight: 600; color: var(--gas-color-text-muted, #4a4a4a); }

/* --- layout list : lignes compactes --- */
.gas-block-query__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--gas-space-2, 5px); }
.gas-block-query__row-link { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: var(--gas-space-2, 5px) var(--gas-space-m, 10px); padding: var(--gas-space-m, 10px); border-radius: var(--gas-radius-md, 5px); color: inherit; text-decoration: none; border: 1px solid var(--gas-color-border, #e2e8f0); }
a.gas-block-query__row-link:hover { background: var(--gas-color-surface-muted, #f0f1f3); }
.gas-block-query__row-cat { font-size: var(--gas-text-s, 9px); color: var(--gas-color-primary, #2563eb); font-weight: 600; }
.gas-block-query__row-title { font-weight: 600; }
.gas-block-query__row-text { grid-column: 1 / -1; margin: 0; color: var(--gas-color-text-muted, #4a4a4a); }

/* loop — extras émis (en-têtes de groupe, séparateurs, état vide, voir-tout) */
.gas-block-loop__group { margin: var(--gas-space-l, 20px) 0 var(--gas-space-2, 5px); font-size: var(--gas-text-l, 12px); color: var(--gas-color-primary, #2563eb); }
.gas-block-loop__group:first-child { margin-top: 0; }
.gas-block-loop__sep--line { border: 0; border-top: 1px solid var(--gas-color-border, #e2e8f0); margin: var(--gas-space-m, 10px) 0; }
.gas-block-loop__sep--dot { text-align: center; color: var(--gas-color-border, #cbd5e1); margin: var(--gas-space-2, 5px) 0; }
.gas-block-loop__sep--space { height: var(--gas-space-l, 20px); }
.gas-block-loop__empty { padding: var(--gas-space-2xl, 40px); text-align: center; color: var(--gas-color-text-muted, #4a4a4a); border: 1px dashed var(--gas-color-border, #e2e8f0); border-radius: var(--gas-radius-l, 12px); }
.gas-block-loop__see-all-wrap { margin-top: var(--gas-space-m, 10px); }
.gas-block-loop__see-all { color: var(--gas-color-primary, #2563eb); font-weight: 600; text-decoration: none; }
.gas-block-loop__see-all:hover { text-decoration: underline; }
