/*
 * Template Équilibre — feuille de styles unique.
 * Les jetons reprennent la palette d'ifs-Styles (--ifs-s-*) quand elle existe,
 * sinon les valeurs par défaut ci-dessous s'appliquent.
 */

/* ==========================================================================
   1. Jetons
   ========================================================================== */
:root {
  --eq-primary: var(--ifs-s-primary, #4f6f52);
  --eq-primary-dark: var(--ifs-s-primary-2, #3a5340);
  --eq-accent: var(--ifs-s-accent, #a35a32);
  --eq-ink: var(--ifs-s-ink, #23302a);
  --eq-muted: var(--ifs-s-muted, #5d6b63);
  --eq-surface: var(--ifs-s-surface, #f6f3ed);
  --eq-line: var(--ifs-s-line, #e3ddd2);
  --eq-white: var(--ifs-s-white, #fff);
  --eq-bg: #fbfaf7;
  --eq-sage-soft: color-mix(in srgb, var(--eq-primary) 10%, var(--eq-white));
  --eq-terre-soft: color-mix(in srgb, var(--eq-accent) 9%, var(--eq-white));
  --eq-danger: var(--ifs-s-danger, #b8322b);
  --eq-success: var(--ifs-s-success, #1b7f50);

  --eq-font-heading: var(--ifs-s-font-heading, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif);
  --eq-font-body: var(--ifs-s-font-body, "Segoe UI", "Gill Sans", Calibri, "Trebuchet MS", system-ui, sans-serif);

  --eq-fs-sm: .9rem;
  --eq-fs-base: 1.0625rem;
  --eq-fs-lg: 1.2rem;
  --eq-fs-h3: clamp(1.25rem, 1.1rem + .5vw, 1.45rem);
  --eq-fs-h2: clamp(1.6rem, 1.3rem + 1.2vw, 2.2rem);
  --eq-fs-h1: clamp(2rem, 1.5rem + 2.2vw, 3.1rem);
  --eq-fs-hero: clamp(2.3rem, 1.6rem + 3.2vw, 3.9rem);

  --eq-space-xs: .375rem;
  --eq-space-sm: .75rem;
  --eq-space-md: 1.25rem;
  --eq-space-lg: 2rem;
  --eq-space-xl: 3.5rem;
  --eq-space-2xl: clamp(4rem, 3rem + 4vw, 6.5rem);

  --eq-radius-sm: var(--ifs-s-radius-sm, 6px);
  --eq-radius: var(--ifs-s-radius-md, 12px);
  --eq-radius-lg: var(--ifs-s-radius-lg, 24px);
  --eq-shadow-sm: 0 1px 2px rgb(35 48 42 / 6%);
  --eq-shadow: 0 6px 24px rgb(35 48 42 / 8%);
  --eq-shadow-lg: 0 18px 48px rgb(35 48 42 / 12%);

  --eq-wrap: 1200px;
  --eq-gutter: clamp(1rem, .5rem + 2vw, 2rem);
  --eq-header-h: 78px;

  --eq-ease: cubic-bezier(.22, .61, .36, 1);
  --eq-dur: .25s;
  --eq-dur-hero: .9s;
}

/* ==========================================================================
   2. Base
   ========================================================================== */
*,
*::before,
*::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-padding-top: calc(var(--eq-header-h) + 1rem);
}

body {
  margin: 0;
  background: var(--eq-bg);
  color: var(--eq-ink);
  font-family: var(--eq-font-body);
  font-size: var(--eq-fs-base);
  line-height: 1.65;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

img,
svg,
video { max-width: 100%; height: auto; }

img { display: block; }

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 var(--eq-space-sm);
  color: var(--eq-ink);
  font-family: var(--eq-font-heading);
  font-weight: 600;
  line-height: 1.18;
  letter-spacing: -.01em;
  text-wrap: balance;
}

h1 { font-size: var(--eq-fs-h1); }
h2 { font-size: var(--eq-fs-h2); }
h3 { font-size: var(--eq-fs-h3); }
h4 { font-size: var(--eq-fs-lg); }

p,
ul,
ol,
dl,
blockquote,
figure,
table { margin: 0 0 var(--eq-space-md); }

a {
  color: var(--eq-primary-dark);
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  transition: color var(--eq-dur) var(--eq-ease);
}

a:hover { color: var(--eq-accent); }

:focus-visible {
  outline: 3px solid var(--eq-accent);
  outline-offset: 3px;
  border-radius: 4px;
}

hr {
  margin: var(--eq-space-lg) 0;
  border: 0;
  border-top: 1px solid var(--eq-line);
}

::selection { background: var(--eq-sage-soft); }

.visually-hidden,
.element-invisible {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.eq-skip {
  position: absolute;
  top: -100px;
  left: 1rem;
  z-index: 100;
  padding: .6rem 1rem;
  border-radius: var(--eq-radius-sm);
  background: var(--eq-ink);
  color: var(--eq-white);
}

.eq-skip:focus { top: 1rem; color: var(--eq-white); }

/* ==========================================================================
   3. Mise en page
   ========================================================================== */
.eq-wrap {
  width: 100%;
  max-width: calc(var(--eq-wrap) + 2 * var(--eq-gutter));
  margin-inline: auto;
  padding-inline: var(--eq-gutter);
}

.eq-topbar {
  background: var(--eq-primary-dark);
  color: var(--eq-white);
  font-size: var(--eq-fs-sm);
}

.eq-topbar .eq-wrap { padding-block: .45rem; }
.eq-topbar a { color: inherit; }
.eq-topbar p { margin: 0; }

/* En-tête */
.eq-header {
  position: relative;
  z-index: 30;
  border-bottom: 1px solid var(--eq-line);
  background: rgb(251 250 247 / 92%);
  backdrop-filter: saturate(1.4) blur(10px);
}

.eq-header--sticky { position: sticky; top: 0; }

.eq-header.is-scrolled { box-shadow: var(--eq-shadow-sm); }

.eq-header__inner {
  display: flex;
  align-items: center;
  gap: var(--eq-space-md);
  min-height: var(--eq-header-h);
}

.eq-brand {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  margin-right: auto;
  color: var(--eq-ink);
  text-decoration: none;
}

.eq-brand:hover { color: var(--eq-ink); }

.eq-brand__logo { max-height: 52px; width: auto; }

/* Emblème : deux feuilles en équilibre, dessinées en CSS */
.eq-brand__mark {
  position: relative;
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--eq-sage-soft);
}

.eq-brand__mark::before,
.eq-brand__mark::after {
  position: absolute;
  top: 9px;
  width: 13px;
  height: 22px;
  border-radius: 100% 0;
  content: "";
}

.eq-brand__mark::before { left: 7px; background: var(--eq-primary); transform: rotate(-18deg); }
.eq-brand__mark::after { right: 7px; background: var(--eq-accent); transform: scaleX(-1) rotate(-18deg); }

.eq-brand__text { display: flex; flex-direction: column; line-height: 1.15; }

.eq-brand__name {
  font-family: var(--eq-font-heading);
  font-size: 1.35rem;
  font-weight: 600;
}

.eq-brand__tagline {
  color: var(--eq-muted);
  font-size: .8rem;
  letter-spacing: .04em;
}

.eq-brand--center {
  justify-content: center;
  margin: 0 auto var(--eq-space-lg);
}

/* Navigation */
.eq-nav .mod-menu {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.eq-nav .mod-menu li { position: relative; padding: 0; border: 0; }

.eq-nav .mod-menu a,
.eq-nav .mod-menu .mod-menu__heading,
.eq-nav .mod-menu .mod-menu__separator {
  display: block;
  padding: .55rem .85rem;
  border-radius: 999px;
  color: var(--eq-ink);
  font-weight: 500;
  text-decoration: none;
  transition: background-color var(--eq-dur) var(--eq-ease), color var(--eq-dur) var(--eq-ease);
}

.eq-nav .mod-menu a:hover { background: var(--eq-sage-soft); color: var(--eq-primary-dark); }

.eq-nav .mod-menu .current > a,
.eq-nav .mod-menu .active > a { background: var(--eq-sage-soft); color: var(--eq-primary-dark); }

.eq-nav .mod-menu__sub {
  margin: 0;
  padding: 0;
  list-style: none;
}

.eq-nav-toggle { display: none; }

.eq-header__actions {
  display: flex;
  align-items: center;
  gap: var(--eq-space-sm);
}

.eq-header__actions .moduletable,
.eq-header__actions > div { margin: 0; }

/* Corps */
.eq-body {
  display: grid;
  gap: var(--eq-space-xl);
  padding-block: var(--eq-space-xl);
}

.eq-body--sidebar { grid-template-columns: minmax(0, 1fr) 320px; }

.eq-main { min-width: 0; }
.eq-main:focus { outline: none; }

.is-home .eq-body { padding-block: var(--eq-space-xl) var(--eq-space-lg); }

.eq-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--eq-space-md);
}

/* ==========================================================================
   4. Composants
   ========================================================================== */

/* Boutons */
.eq-btn,
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 46px;
  padding: .7rem 1.4rem;
  border: 1.5px solid transparent;
  border-radius: 999px;
  background: var(--eq-white);
  color: var(--eq-ink);
  font: inherit;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--eq-dur) var(--eq-ease), color var(--eq-dur) var(--eq-ease),
    border-color var(--eq-dur) var(--eq-ease), transform var(--eq-dur) var(--eq-ease), box-shadow var(--eq-dur) var(--eq-ease);
}

.eq-btn:hover,
.btn:hover { transform: translateY(-1px); }

.eq-btn--primary,
.btn-primary {
  background: var(--eq-primary);
  color: var(--eq-white);
  box-shadow: 0 6px 16px color-mix(in srgb, var(--eq-primary) 28%, transparent);
}

.eq-btn--primary:hover,
.btn-primary:hover { background: var(--eq-primary-dark); color: var(--eq-white); }

.eq-btn--ghost,
.btn-secondary,
.btn-outline-primary {
  border-color: color-mix(in srgb, var(--eq-primary) 45%, transparent);
  background: transparent;
  color: var(--eq-primary-dark);
}

.eq-btn--ghost:hover,
.btn-secondary:hover,
.btn-outline-primary:hover { border-color: var(--eq-primary); background: var(--eq-sage-soft); color: var(--eq-primary-dark); }

.eq-btn--light { background: var(--eq-white); color: var(--eq-primary-dark); }
.eq-btn--light:hover { background: var(--eq-surface); color: var(--eq-primary-dark); }

.eq-btn--small,
.btn-sm { min-height: 38px; padding: .45rem 1rem; font-size: var(--eq-fs-sm); }

/* Cartes */
.eq-card {
  padding: var(--eq-space-lg);
  border: 1px solid var(--eq-line);
  border-radius: var(--eq-radius);
  background: var(--eq-white);
  box-shadow: var(--eq-shadow-sm);
}

.eq-card__title {
  margin-bottom: var(--eq-space-sm);
  font-size: var(--eq-fs-lg);
}

.eq-card__body > :last-child { margin-bottom: 0; }

.eq-sidebar .eq-card { padding: var(--eq-space-md) var(--eq-space-md) var(--eq-space-lg); }

/* Sections pleine largeur */
.eq-section { padding-block: var(--eq-space-2xl); }
.eq-section + .eq-section { padding-top: 0; }
.eq-section--clair,
.eq-section--sauge,
.eq-section--terre { padding-top: var(--eq-space-2xl) !important; }
.eq-section--clair { background: var(--eq-surface); }
.eq-section--sauge { background: var(--eq-primary-dark); color: var(--eq-white); }
.eq-section--sauge h2,
.eq-section--sauge h3 { color: var(--eq-white); }
.eq-section--sauge a:not(.eq-btn) { color: var(--eq-white); }
.eq-section--terre { background: var(--eq-terre-soft); }

.eq-section__title { margin-bottom: var(--eq-space-lg); text-align: center; }

.eq-kicker {
  display: inline-block;
  margin-bottom: var(--eq-space-sm);
  color: var(--eq-accent);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.eq-section--sauge .eq-kicker { color: color-mix(in srgb, var(--eq-accent) 35%, var(--eq-white)); }

.eq-lead {
  max-width: 62ch;
  color: var(--eq-muted);
  font-size: var(--eq-fs-lg);
}

.eq-center { text-align: center; }
.eq-center .eq-lead { margin-inline: auto; }

.eq-intro { max-width: 720px; margin: 0 auto var(--eq-space-xl); text-align: center; }
.eq-intro .eq-lead { margin-inline: auto; }

/* Grilles */
.eq-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: var(--eq-space-lg);
}

.eq-feature {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: var(--eq-space-lg);
  border: 1px solid var(--eq-line);
  border-radius: var(--eq-radius-lg);
  background: var(--eq-white);
  transition: transform var(--eq-dur) var(--eq-ease), box-shadow var(--eq-dur) var(--eq-ease);
}

.eq-feature:hover { box-shadow: var(--eq-shadow); transform: translateY(-3px); }

.eq-feature__icon {
  display: grid;
  width: 60px;
  height: 60px;
  margin-bottom: var(--eq-space-md);
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--eq-primary) 18%, transparent);
  border-radius: 50%;
  background: var(--eq-sage-soft);
  color: var(--eq-primary-dark);
  font-size: 0;
  line-height: 0;
}

/* Icônes au trait (Tabler, MIT) dessinées en masque : couleur = currentColor.
   Usage : <p class="eq-feature__icon eq-ico--feuille" aria-hidden="true">&nbsp;</p> ou <span class="eq-ico eq-ico--fleur"></span> */
.eq-ico,
[class*="eq-ico--"]::before {
  display: inline-block;
  width: 32px;
  height: 32px;
  background: currentcolor;
  -webkit-mask: var(--eq-ico) center / contain no-repeat;
  mask: var(--eq-ico) center / contain no-repeat;
  content: "";
}

.eq-ico[class*="eq-ico--"]::before { content: none; }
.eq-feature .eq-feature__icon { color: var(--eq-primary-dark); }
.eq-feature:hover .eq-feature__icon { background: var(--eq-primary); color: var(--eq-white); }
.eq-feature__icon { transition: background-color var(--eq-dur) var(--eq-ease), color var(--eq-dur) var(--eq-ease); }

.eq-ico--feuille { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M5 21c.5 -4.5 2.5 -8 7 -10' /%3E%3Cpath d='M9 18c6.218 0 10.5 -3.288 11 -12v-2h-4.014c-9 0 -11.986 4 -12 9c0 1 0 3 2 5h3z' /%3E%3C/svg%3E"); }
.eq-ico--massage { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M4 17m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0' /%3E%3Cpath d='M9 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0' /%3E%3Cpath d='M4 22l4 -2v-3h12' /%3E%3Cpath d='M11 20h9' /%3E%3Cpath d='M8 14l3 -2l1 -4c3 1 3 4 3 6' /%3E%3C/svg%3E"); }
.eq-ico--equilibre { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0' /%3E%3Cpath d='M12 3a4.5 4.5 0 0 0 0 9a4.5 4.5 0 0 1 0 9' /%3E%3Ccircle cx='12' cy='7.5' r='.5' fill='%23000' /%3E%3Ccircle cx='12' cy='16.5' r='.5' fill='%23000' /%3E%3C/svg%3E"); }
.eq-ico--plante { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M7 15h10v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2v-4z' /%3E%3Cpath d='M12 9a6 6 0 0 0 -6 -6h-3v2a6 6 0 0 0 6 6h3' /%3E%3Cpath d='M12 11a6 6 0 0 1 6 -6h3v1a6 6 0 0 1 -6 6h-3' /%3E%3Cpath d='M12 15l0 -6' /%3E%3C/svg%3E"); }
.eq-ico--fleur { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0' /%3E%3Cpath d='M12 2a3 3 0 0 1 3 3c0 .562 -.259 1.442 -.776 2.64l-.724 1.36l1.76 -1.893c.499 -.6 .922 -1 1.27 -1.205a2.968 2.968 0 0 1 4.07 1.099a3.011 3.011 0 0 1 -1.09 4.098c-.374 .217 -.99 .396 -1.846 .535l-2.664 .366l2.4 .326c1 .145 1.698 .337 2.11 .576a3.011 3.011 0 0 1 1.09 4.098a2.968 2.968 0 0 1 -4.07 1.098c-.348 -.202 -.771 -.604 -1.27 -1.205l-1.76 -1.893l.724 1.36c.516 1.199 .776 2.079 .776 2.64a3 3 0 0 1 -6 0c0 -.562 .259 -1.442 .776 -2.64l.724 -1.36l-1.76 1.893c-.499 .601 -.922 1 -1.27 1.205a2.968 2.968 0 0 1 -4.07 -1.098a3.011 3.011 0 0 1 1.09 -4.098c.374 -.218 .99 -.396 1.846 -.536l2.664 -.366l-2.4 -.325c-1 -.145 -1.698 -.337 -2.11 -.576a3.011 3.011 0 0 1 -1.09 -4.099a2.968 2.968 0 0 1 4.07 -1.099c.348 .203 .771 .604 1.27 1.205l1.76 1.894c-1 -2.292 -1.5 -3.625 -1.5 -4a3 3 0 0 1 3 -3z' /%3E%3C/svg%3E"); }
.eq-ico--soin { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572' /%3E%3Cpath d='M12 6l-3.293 3.293a1 1 0 0 0 0 1.414l.543 .543c.69 .69 1.81 .69 2.5 0l1 -1a3.182 3.182 0 0 1 4.5 0l2.25 2.25' /%3E%3Cpath d='M12.5 15.5l2 2' /%3E%3Cpath d='M15 13l2 2' /%3E%3C/svg%3E"); }
.eq-ico--eclat { --eq-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z' /%3E%3C/svg%3E"); }


.eq-feature h3 { margin-bottom: .4rem; }
.eq-feature p { color: var(--eq-muted); }
.eq-feature__meta { margin-top: auto; padding-top: var(--eq-space-sm); color: var(--eq-primary-dark); font-weight: 600; }

/* Bloc image + texte */
.eq-split {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--eq-space-xl);
  align-items: center;
}

.eq-split--reverse .eq-split__media { order: 2; }

.eq-split__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--eq-radius-lg);
  object-fit: cover;
  box-shadow: var(--eq-shadow);
}

.eq-checklist { padding: 0; list-style: none; }

.eq-checklist li {
  position: relative;
  margin-bottom: .55rem;
  padding-left: 1.9rem;
}

.eq-checklist li::before {
  position: absolute;
  top: .55em;
  left: .2rem;
  width: .9rem;
  height: .5rem;
  border-bottom: 2.5px solid var(--eq-primary);
  border-left: 2.5px solid var(--eq-primary);
  content: "";
  transform: rotate(-45deg);
}

/* Bandeau d'accueil */
.eq-hero {
  position: relative;
  display: grid;
  min-height: clamp(460px, 62vh, 640px);
  align-items: center;
  overflow: hidden;
  isolation: isolate;
  background: var(--eq-surface);
}

.eq-hero__media {
  position: absolute;
  inset: 0;
  z-index: -2;
}

.eq-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: right center;
}

.eq-hero::before {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgb(251 250 247 / 96%) 0%, rgb(251 250 247 / 86%) 38%, rgb(251 250 247 / 0%) 72%);
  content: "";
}

.eq-hero__content { max-width: 600px; padding-block: var(--eq-space-xl); }

.eq-hero__title {
  margin-bottom: var(--eq-space-md);
  font-size: var(--eq-fs-hero);
  line-height: 1.08;
}

.eq-hero__title em { color: var(--eq-primary); font-style: italic; }

.eq-hero__text { max-width: 48ch; margin-bottom: var(--eq-space-lg); color: var(--eq-muted); font-size: var(--eq-fs-lg); }

.eq-hero__actions { display: flex; flex-wrap: wrap; gap: var(--eq-space-sm); }

.eq-hero__note {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem 1.2rem;
  margin: var(--eq-space-lg) 0 0;
  padding: 0;
  color: var(--eq-muted);
  font-size: var(--eq-fs-sm);
  list-style: none;
}

.eq-hero__note li::before { margin-right: .4rem; color: var(--eq-primary); content: "●"; font-size: .6em; vertical-align: middle; }

/* Animation d'entrée : transform + opacité uniquement */
@keyframes eq-rise {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: none; }
}

@keyframes eq-zoom {
  from { transform: scale(1.06); }
  to { transform: scale(1); }
}

.eq-hero__content > * { animation: eq-rise var(--eq-dur-hero) var(--eq-ease) both; }
.eq-hero__content > :nth-child(2) { animation-delay: .08s; }
.eq-hero__content > :nth-child(3) { animation-delay: .16s; }
.eq-hero__content > :nth-child(4) { animation-delay: .24s; }
.eq-hero__content > :nth-child(5) { animation-delay: .32s; }
.eq-hero__media img { animation: eq-zoom 2.4s var(--eq-ease) both; }

/* Citation / témoignage */
.eq-quote {
  max-width: 760px;
  margin: 0 auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font-family: var(--eq-font-heading);
  font-size: clamp(1.3rem, 1.1rem + .9vw, 1.75rem);
  line-height: 1.45;
  text-align: center;
}

.eq-quote p { margin: 0; }

.eq-quote cite { display: block; margin-top: var(--eq-space-md); font-family: var(--eq-font-body); font-size: var(--eq-fs-base); font-style: normal; opacity: .85; }

/* Pied de page */
.eq-footer {
  background: var(--eq-ink);
  color: rgb(255 255 255 / 82%);
  font-size: var(--eq-fs-sm);
}

.eq-footer a { color: var(--eq-white); }
.eq-footer a:hover { color: color-mix(in srgb, var(--eq-accent) 40%, var(--eq-white)); }

.eq-footer__cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--eq-space-xl);
  padding-block: var(--eq-space-xl);
}

.eq-footer .eq-card { padding: 0; border: 0; background: none; box-shadow: none; }
.eq-footer .eq-card__title { color: var(--eq-white); font-size: 1.15rem; }
.eq-footer ul { padding: 0; list-style: none; }
.eq-footer li { margin-bottom: .35rem; }

/* ifs-Horaires, variante « pied de page » : jours et heures en liste, titre interne masqué (celui du module suffit) */
.eq-footer .eq-card__body > :has(+ .ifs-horaires-footer) { display: none; }
.eq-footer .ifs-horaires-footer { display: grid; gap: .55rem; }
.eq-footer .ifs-horaires-footer > span { display: block; line-height: 1.45; }
.eq-footer .ifs-horaires-footer > span::first-line { color: var(--eq-white); font-weight: 600; }
.eq-footer .ifs-horaires-footer .ifs-horaires-fermeture {
  margin-top: .25rem;
  padding: .55rem .7rem;
  border-left: 3px solid var(--eq-accent);
  border-radius: 0 var(--eq-radius-sm) var(--eq-radius-sm) 0;
  background: rgb(255 255 255 / 6%);
  color: color-mix(in srgb, var(--eq-accent) 45%, var(--eq-white));
}

.eq-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--eq-space-sm);
  padding-block: var(--eq-space-md);
  border-top: 1px solid rgb(255 255 255 / 12%);
}

.eq-footer__bottom p { margin: 0; }
.eq-footer__sep { margin-inline: .35rem; }

/* ==========================================================================
   5. Contenus Joomla
   ========================================================================== */

/* Fil d'Ariane */
.mod-breadcrumbs__wrapper { margin-bottom: var(--eq-space-md); }

.mod-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem;
  margin: 0;
  padding: 0;
  color: var(--eq-muted);
  font-size: var(--eq-fs-sm);
  list-style: none;
}

.mod-breadcrumbs .mod-breadcrumbs__divider,
.mod-breadcrumbs .mod-breadcrumbs__here { display: none; }

.mod-breadcrumbs li + li::before { margin-right: .35rem; color: var(--eq-line); content: "/"; }
.mod-breadcrumbs .mod-breadcrumbs__here + li::before { content: none; }
.mod-breadcrumbs a { color: var(--eq-muted); }

/* En-têtes de page */
.page-header { margin-bottom: var(--eq-space-lg); }
.page-header h1,
.page-header h2 { margin-bottom: 0; }

.com-content-article,
.item-page { max-width: 78ch; }

.com-content-article__body > :first-child,
.item-page > :first-child { margin-top: 0; }

.article-info,
.com-content-article .article-info {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem 1rem;
  margin-bottom: var(--eq-space-md);
  color: var(--eq-muted);
  font-size: var(--eq-fs-sm);
}

.article-info dt { display: none; }
.article-info dd { margin: 0; }

.blog-items { display: grid; gap: var(--eq-space-lg); }

.blog-item {
  padding: var(--eq-space-lg);
  border: 1px solid var(--eq-line);
  border-radius: var(--eq-radius);
  background: var(--eq-white);
}

.readmore { margin: 0; }

.item-image img,
.com-content-article img { border-radius: var(--eq-radius); }

:where(:is(blockquote):not([class*="ifs-"] *)) {
  margin-inline: 0;
  padding: var(--eq-space-md) var(--eq-space-lg);
  border-left: 4px solid var(--eq-primary);
  border-radius: 0 var(--eq-radius) var(--eq-radius) 0;
  background: var(--eq-sage-soft);
}

/* Tableaux */
:where(:is(table):not([class*="ifs-"] *)) { width: 100%; border-collapse: collapse; }
:where(:is(th, td):not([class*="ifs-"] *)) { padding: .6rem .75rem; border-bottom: 1px solid var(--eq-line); text-align: left; vertical-align: top; }
:where(:is(th):not([class*="ifs-"] *)) { color: var(--eq-ink); font-weight: 600; }

/* Pagination */
.pagination {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin: var(--eq-space-lg) 0 0;
  padding: 0;
  list-style: none;
}

.pagination .page-link {
  display: inline-grid;
  min-width: 42px;
  min-height: 42px;
  padding: 0 .6rem;
  place-items: center;
  border: 1px solid var(--eq-line);
  border-radius: 999px;
  background: var(--eq-white);
  color: var(--eq-ink);
  text-decoration: none;
}

.pagination .active .page-link { border-color: var(--eq-primary); background: var(--eq-primary); color: var(--eq-white); }
.pagination .disabled .page-link { opacity: .45; }

/* Formulaires */
:where(:is(label, .form-label):not([class*="ifs-"] *)) { display: inline-block; margin-bottom: .3rem; font-weight: 600; }

:where(:is(.form-control, .form-select, .inputbox, input[type="text"], input[type="email"], input[type="tel"], input[type="password"], input[type="search"], input[type="number"], input[type="url"], input[type="date"], select, textarea):not([class*="ifs-"] *)) {
  width: 100%;
  min-height: 46px;
  padding: .6rem .85rem;
  border: 1.5px solid var(--eq-line);
  border-radius: var(--eq-radius-sm);
  background: var(--eq-white);
  color: var(--eq-ink);
  font: inherit;
  transition: border-color var(--eq-dur) var(--eq-ease), box-shadow var(--eq-dur) var(--eq-ease);
}

:where(:is(textarea):not([class*="ifs-"] *)) { min-height: 130px; }

:where(:is(.form-control, .form-select, input, select, textarea):not([class*="ifs-"] *)):focus {
  border-color: var(--eq-primary);
  outline: none;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--eq-primary) 18%, transparent);
}

:where(:is(input[type="checkbox"], input[type="radio"]):not([class*="ifs-"] *)) { width: 1.1rem; height: 1.1rem; accent-color: var(--eq-primary); }

.control-group,
.mb-3,
.eq-field { margin-bottom: var(--eq-space-md); }

.form-check { display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.form-check-label { margin: 0; font-weight: 400; }

.input-group { display: flex; align-items: stretch; }
.input-group > .form-control { flex: 1 1 auto; min-width: 0; border-radius: var(--eq-radius-sm) 0 0 var(--eq-radius-sm); }
.input-group > :last-child:not(:first-child),
.input-group > .input-group-text:last-child,
.input-group > .btn:last-child { border-radius: 0 var(--eq-radius-sm) var(--eq-radius-sm) 0; }

.input-group-text {
  display: flex;
  align-items: center;
  padding: 0 .8rem;
  border: 1.5px solid var(--eq-line);
  border-left: 0;
  background: var(--eq-surface);
}

.invalid,
.form-control-danger { border-color: var(--eq-danger) !important; }

.form-text,
.small,
small { color: var(--eq-muted); font-size: var(--eq-fs-sm); }

:where(:is(fieldset):not([class*="ifs-"] *)) { margin: 0 0 var(--eq-space-md); padding: 0; border: 0; }
:where(:is(legend):not([class*="ifs-"] *)) { margin-bottom: var(--eq-space-sm); font-family: var(--eq-font-heading); font-size: var(--eq-fs-lg); font-weight: 600; }

/* Module de connexion */
.mod-login .mod-login__username,
.mod-login .mod-login__password,
.mod-login .mod-login__remember { margin-bottom: var(--eq-space-sm); }
.mod-login .mod-login__options { margin: var(--eq-space-sm) 0 0; padding: 0; font-size: var(--eq-fs-sm); list-style: none; }
.mod-login .btn { width: 100%; }

/* Listes de modules */
.mod-list,
.mod-menu.nav { padding: 0; list-style: none; }
.mod-list li { padding: .3rem 0; border-bottom: 1px solid var(--eq-line); }
.mod-list li:last-child { border-bottom: 0; }

/* Messages système */
#system-message-container { margin-bottom: var(--eq-space-md); }
#system-message-container:empty { margin: 0; }

.alert {
  padding: var(--eq-space-md);
  border: 1px solid var(--eq-line);
  border-radius: var(--eq-radius);
  background: var(--eq-white);
}

.alert-success { border-color: color-mix(in srgb, var(--eq-success) 35%, transparent); background: var(--ifs-s-success-bg, #e8f6ee); }
.alert-danger,
.alert-error { border-color: color-mix(in srgb, var(--eq-danger) 35%, transparent); background: var(--ifs-s-danger-bg, #fdecea); }

/* Boutique : pastille panier de l'en-tête */
.eq-header__actions .ifs-mini { margin: 0; }

/* ==========================================================================
   6. Pages spéciales
   ========================================================================== */
.eq-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: var(--eq-space-xl) var(--eq-gutter);
  background: radial-gradient(circle at 70% 20%, var(--eq-sage-soft), transparent 55%), var(--eq-bg);
  text-align: center;
}

.eq-error__code {
  margin: 0;
  color: var(--eq-primary);
  font-family: var(--eq-font-heading);
  font-size: clamp(4.5rem, 3rem + 8vw, 8rem);
  line-height: 1;
  opacity: .25;
}

.eq-error__title { margin-top: var(--eq-space-sm); }
.eq-error__text { max-width: 48ch; color: var(--eq-muted); font-size: var(--eq-fs-lg); }
.eq-error__debug { max-width: 100%; margin-top: var(--eq-space-lg); overflow: auto; text-align: left; }

.eq-offline-form { width: min(100%, 380px); margin-top: var(--eq-space-md); text-align: left; }
.eq-offline-form .eq-btn { width: 100%; }

.eq-component { padding: var(--eq-space-md); background: var(--eq-white); }

/* ==========================================================================
   7. Adaptatif
   ========================================================================== */
@media (max-width: 1024px) {
  .eq-body--sidebar { grid-template-columns: minmax(0, 1fr); }
  .eq-sidebar { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
  .eq-split { gap: var(--eq-space-lg); }
}

@media (max-width: 900px) {
  :root { --eq-header-h: 66px; }

  .eq-nav-toggle {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    order: 3;
    min-height: 44px;
    padding: .4rem .85rem;
    border: 1.5px solid var(--eq-line);
    border-radius: 999px;
    background: var(--eq-white);
    color: var(--eq-ink);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
  }

  .eq-nav-toggle__bars,
  .eq-nav-toggle__bars::before,
  .eq-nav-toggle__bars::after {
    display: block;
    width: 18px;
    height: 2px;
    border-radius: 2px;
    background: currentcolor;
    transition: transform var(--eq-dur) var(--eq-ease), opacity var(--eq-dur) var(--eq-ease);
  }

  .eq-nav-toggle__bars { position: relative; }
  .eq-nav-toggle__bars::before,
  .eq-nav-toggle__bars::after { position: absolute; left: 0; content: ""; }
  .eq-nav-toggle__bars::before { top: -6px; }
  .eq-nav-toggle__bars::after { top: 6px; }

  .eq-nav-toggle[aria-expanded="true"] .eq-nav-toggle__bars { background: transparent; }
  .eq-nav-toggle[aria-expanded="true"] .eq-nav-toggle__bars::before { transform: translateY(6px) rotate(45deg); }
  .eq-nav-toggle[aria-expanded="true"] .eq-nav-toggle__bars::after { transform: translateY(-6px) rotate(-45deg); }

  .eq-header__actions { order: 2; }

  .eq-nav {
    position: absolute;
    top: 100%;
    right: 0;
    left: 0;
    visibility: hidden;
    padding: var(--eq-space-sm) var(--eq-gutter) var(--eq-space-md);
    border-bottom: 1px solid var(--eq-line);
    background: var(--eq-bg);
    box-shadow: var(--eq-shadow);
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity var(--eq-dur) var(--eq-ease), transform var(--eq-dur) var(--eq-ease), visibility 0s linear var(--eq-dur);
  }

  .eq-nav.is-open {
    visibility: visible;
    opacity: 1;
    transform: none;
    transition-delay: 0s;
  }

  .eq-nav .mod-menu { flex-direction: column; }
  .eq-nav .mod-menu a { padding: .75rem 1rem; border-radius: var(--eq-radius-sm); }

  .eq-header__cta { display: none; }
  .eq-brand__tagline { display: none; }

  .eq-split,
  .eq-footer__cols { grid-template-columns: minmax(0, 1fr); }
  .eq-split--reverse .eq-split__media { order: 0; }

  .eq-hero::before { background: linear-gradient(180deg, rgb(251 250 247 / 70%) 0%, rgb(251 250 247 / 94%) 55%); }
  .eq-hero__media img { object-position: 70% center; }
}

@media (max-width: 480px) {
  .eq-brand__name { font-size: 1.1rem; }
  .eq-brand__mark { width: 34px; height: 34px; }
  .eq-brand__mark::before,
  .eq-brand__mark::after { top: 7px; width: 11px; height: 19px; }
  .eq-hero__actions .eq-btn { width: 100%; }
  .eq-card { padding: var(--eq-space-md); }
}

/* ==========================================================================
   8. Préférences et impression
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

@media print {
  .eq-header,
  .eq-topbar,
  .eq-sidebar,
  .eq-footer,
  .eq-banner,
  .eq-sections { display: none !important; }
  body { background: #fff; color: #000; }
  .eq-body { display: block; padding: 0; }
  .eq-main a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .85em; }
}
