/* Sections du catalogue Forge16 : styles du balisage par défaut du noyau (core/sections/*.php, classes s-*).
   Copié dans theme/css/ de chaque site. Aucune valeur de design en dur : couleurs, typographie, arrondis et espacements
   passent par les variables --f16-*, que chaque thème cale sur son design dans tokens.css (bloc « Sections du
   catalogue »). Les valeurs ci-dessous ne sont que des replis. Un type surchargé par theme/sections/<type>.php
   n'utilise pas ces règles. */
:where(:root) {                         /* spécificité nulle : les valeurs du thème (tokens.css) l’emportent toujours */
  --f16-text: var(--ink, #1d1d1f);
  --f16-muted: var(--muted, #5f6368);
  --f16-accent: var(--brand-700, #0b57d0);
  --f16-accent-bg: var(--brand-600, #0b57d0);
  --f16-accent-soft: var(--brand-50, #eef3fd);
  --f16-bg: var(--white, #fff);
  --f16-bg-alt: var(--sand, #f5f5f5);
  --f16-dark: var(--ink, #1d1d1f);
  --f16-line: var(--line, #e3e3e3);
  --f16-radius: var(--r-md, 12px);
  --f16-radius-sm: var(--r-sm, 8px);
  --f16-shadow: none;
  --f16-section: var(--section, clamp(3rem, 2rem + 5vw, 6rem));
  --f16-gap: var(--s-5, 1.5rem);
  --f16-head-gap: calc(var(--f16-gap) * 1.5);
  --f16-heading-font: inherit;
  --f16-heading-weight: 800;
  --f16-heading-tracking: -0.01em;
  --f16-heading-lh: 1.15;
  --f16-h3-weight: 700;
  --f16-h2-size: var(--fs-h2, clamp(1.75rem, 1.4rem + 1.5vw, 2.5rem));
  --f16-h3-size: var(--fs-h3, 1.2rem);
  --f16-lead-size: var(--fs-lead, 1.125rem);
  --f16-eyebrow-size: .8125rem;
  --f16-eyebrow-weight: 700;
  --f16-eyebrow-tracking: .08em;
  --f16-eyebrow-transform: uppercase;
  --f16-eyebrow-rule: 0;               /* longueur du filet avant le surtitre (0 = aucun) */
}

/* Structure commune */
[class^="s-"].tone-default, [class*=" s-"].tone-default { background: var(--f16-bg); }
.tone-alt, .tone-sand { background: var(--f16-bg-alt); }
.tone-dark { background: var(--f16-dark); color: #fff; }
.tone-accent { background: var(--f16-accent-bg); color: #fff; }
.s-texte, .s-texte-image, .s-cartes, .s-etapes, .s-galerie, .s-media-externe, .s-faq, .s-tarifs, .s-tableau,
.s-equipe, .s-logos, .s-avis, .s-contact, .s-collection, .s-module, .s-bandeau-cta, .s-legal { padding-block: var(--f16-section); }
.s-head { max-width: 46rem; margin-bottom: var(--f16-head-gap); }
.s-eyebrow { display: flex; align-items: center; gap: .75rem; margin: 0 0 .5rem; font-size: var(--f16-eyebrow-size); font-weight: var(--f16-eyebrow-weight); letter-spacing: var(--f16-eyebrow-tracking); text-transform: var(--f16-eyebrow-transform); color: var(--f16-accent); }
.s-eyebrow::before { content: ""; width: var(--f16-eyebrow-rule); height: 2px; background: currentColor; flex: none; }
.tone-dark .s-eyebrow, .tone-accent .s-eyebrow { color: inherit; opacity: .85; }
.s-title, .s-page-hero__title, .s-hero__title { font-family: var(--f16-heading-font); font-weight: var(--f16-heading-weight); letter-spacing: var(--f16-heading-tracking); line-height: var(--f16-heading-lh); }
.s-title { margin: 0; font-size: var(--f16-h2-size); }
.s-card__title, .s-etapes__list h3, .s-person h3, .s-collection__item h3, .s-tarifs__group h3 { font-family: var(--f16-heading-font); font-weight: var(--f16-h3-weight); letter-spacing: var(--f16-heading-tracking); }
.s-lead { margin: .75rem 0 0; font-size: var(--f16-lead-size); color: var(--f16-muted); }
.tone-dark .s-lead, .tone-accent .s-lead { color: inherit; opacity: .85; }
.s-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: var(--f16-gap) 0 0; }
.s-note { margin-top: var(--f16-gap); padding: 1rem 1.25rem; border-left: 4px solid var(--f16-accent); background: var(--f16-accent-soft); border-radius: 0 var(--f16-radius) var(--f16-radius) 0; }
.s-note h3 { margin: 0 0 .25rem; font-size: 1rem; }
.s-checks, .s-list { list-style: none; margin: var(--f16-gap) 0 0; padding: 0; display: grid; gap: .5rem; }
.s-checks li, .s-list li { display: flex; gap: .5rem; align-items: baseline; }
.s-checks .icon, .s-list .icon { color: var(--f16-accent); flex: none; }
.s-list--steps { counter-reset: step; }
.s-list--steps li::before { counter-increment: step; content: counter(step); flex: none; width: 1.75rem; height: 1.75rem; border-radius: 50%; display: grid; place-items: center; font-weight: 700; background: var(--f16-accent-bg); color: #fff; }
.hours__exception { margin: .75rem 0 0; font-size: .9375rem; }
.hours__exception strong { display: block; }

/* Pages */
.s-page-hero { padding-block: calc(var(--f16-section) * .6) calc(var(--f16-section) * .4); }
.s-page-hero__title { margin: .5rem 0 0; font-size: var(--fs-display, clamp(2rem, 1.5rem + 2.5vw, 3.5rem)); line-height: 1.1; }
.s-page-hero.is-center { text-align: center; }
.s-page-hero.is-center .s-actions { justify-content: center; }
.s-texte__grid { display: grid; gap: calc(var(--f16-gap) * 2); }
.s-texte--narrow .s-texte__body { max-width: 46rem; }
@media (min-width: 960px) { .s-texte__grid:has(.s-texte__aside) { grid-template-columns: minmax(0, 1fr) 20rem; align-items: start; } }
.s-texte__aside { padding: var(--f16-gap); border: 1px solid var(--f16-line); border-radius: var(--f16-radius); display: grid; gap: .75rem; }
.s-texte__aside-title { margin: 0; font-weight: 800; font-size: 1.125rem; }
.s-texte-image__grid { display: grid; gap: calc(var(--f16-gap) * 2); align-items: center; }
@media (min-width: 960px) {
  .s-texte-image__grid { grid-template-columns: 1fr 1fr; }
  .s-texte-image.is-image-right .s-texte-image__media { order: 2; }
}
.s-texte-image__media img, .s-card img, .s-person img, .s-galerie img, .s-collection img { display: block; width: 100%; height: auto; border-radius: var(--f16-radius); }
.s-logos-inline { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: var(--f16-gap); }
.s-logos-inline p { margin: 0; width: 100%; font-weight: 700; }

/* Grilles */
.s-cartes__grid, .s-equipe__grid, .s-galerie__grid, .s-avis__list, .s-collection--cartes .s-collection__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--f16-gap); grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.s-card { position: relative; padding: var(--f16-gap); background: var(--f16-bg); border: 1px solid var(--f16-line); border-radius: var(--f16-radius); box-shadow: var(--f16-shadow); display: grid; gap: .5rem; align-content: start; color: var(--f16-text); }
.s-card__icon { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: var(--f16-radius-sm); background: var(--f16-accent-soft); color: var(--f16-accent); }
.s-card__title { margin: 0; font-size: var(--f16-h3-size); }
.s-card__title a { color: inherit; text-decoration: none; }
.s-card__title a::after { content: ""; position: absolute; inset: 0; }
.s-card__text { margin: 0; color: var(--f16-muted); }
.s-card__badge { margin: 0; font-size: .8125rem; font-weight: 700; color: var(--f16-accent); }
.s-card--cta { background: var(--f16-bg-alt); }
.s-atouts { padding-block: calc(var(--f16-gap) * 1.5); border-bottom: 1px solid var(--f16-line); }
.s-atouts__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--f16-gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); }
.s-atouts__list li { display: flex; gap: .75rem; align-items: center; }
.s-atouts__list .icon { color: var(--f16-accent); flex: none; }
.s-atouts__list strong { display: block; }
.s-etapes__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--f16-gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }
.s-etapes__list li { display: flex; gap: 1rem; }
.s-etapes__n { flex: none; width: 2.25rem; height: 2.25rem; border-radius: 50%; display: grid; place-items: center; font-weight: 800; background: var(--f16-accent-bg); color: #fff; }
.s-etapes__list h3 { margin: 0 0 .25rem; font-size: 1.0625rem; }
.s-etapes__list p { margin: 0; color: var(--f16-muted); }
.s-bandeau-cta__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--f16-gap); }
.s-bandeau-cta__in p { margin: .5rem 0 0; }
.s-galerie figure { margin: 0; }
.s-galerie figcaption { margin-top: .5rem; font-size: .875rem; color: var(--f16-muted); }
.s-galerie--mosaique .s-galerie__grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); }
.s-media-externe__frame { position: relative; aspect-ratio: 16 / 9; display: grid; place-content: center; gap: 1rem; padding: var(--f16-gap); text-align: center; background: var(--f16-bg-alt); border-radius: var(--f16-radius); overflow: hidden; }
.s-media-externe__frame iframe, .s-media-externe video { width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--f16-radius); }
.s-faq__item { border-bottom: 1px solid var(--f16-line); }
.s-faq__item summary { cursor: pointer; padding: 1rem 0; font-weight: 700; list-style-position: outside; }
.s-faq__item .prose { padding-bottom: 1rem; }
.s-tarifs__groups { display: grid; gap: calc(var(--f16-gap) * 1.5); grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.s-tarifs__group h3 { margin: 0 0 .75rem; }
.s-tarifs dl { margin: 0; }
.s-tarifs dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px dashed var(--f16-line); }
.s-tarifs dt small { display: block; color: var(--f16-muted); }
.s-tarifs dd { margin: 0; font-weight: 700; white-space: nowrap; }
.s-tarifs__note, .s-tarifs__foot, .s-tableau__note { font-size: .875rem; color: var(--f16-muted); }
.s-tableau__scroll { overflow-x: auto; }
.s-tableau table { width: 100%; border-collapse: collapse; }
.s-tableau th, .s-tableau td { padding: .6rem .75rem; text-align: left; border-bottom: 1px solid var(--f16-line); }
.s-tableau caption { text-align: left; margin-bottom: .5rem; color: var(--f16-muted); }
.s-person h3 { margin: .75rem 0 0; font-size: 1.0625rem; }
.s-person__role { margin: 0; color: var(--f16-muted); }
.s-logos__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 1.5rem 2.5rem; }
.s-avis figure { margin: 0; padding: var(--f16-gap); background: var(--f16-bg-alt); border-radius: var(--f16-radius); height: 100%; }
.s-avis blockquote { margin: 0 0 .75rem; font-style: italic; }
.s-avis figcaption { font-weight: 700; }
.s-contact__grid { display: grid; gap: calc(var(--f16-gap) * 2); }
@media (min-width: 960px) { .s-contact__grid:has(.s-contact__form) { grid-template-columns: 1fr 1fr; } }
.s-contact__list { list-style: none; margin: 0 0 var(--f16-gap); padding: 0; display: grid; gap: .75rem; }
.s-contact__list strong { display: block; }
.s-collection__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--f16-gap); }
.s-collection--liste .s-collection__item { padding-bottom: var(--f16-gap); border-bottom: 1px solid var(--f16-line); }
.s-collection__item h3 { margin: 0 0 .25rem; font-size: var(--f16-h3-size); }
.s-collection__item h3 a { color: inherit; }
.s-collection__item p { margin: 0; }
.s-collection__date { font-size: .8125rem; font-weight: 700; color: var(--f16-accent); }
.s-collection__empty { color: var(--f16-muted); }
