  :root {
    --cream: #FBF6E9;
    --cream-2: #F3ECD8;
    --ink: #1C1710;
    --ink-soft: #4A4236;
    --gold: #F0AE1B;
    --gold-deep: #C98A0A;
    --gold-pale: #F6DFA0;
    --gold-pale-2: #FCEFC7;
    --plum: #5B3758;
    --plum-pale: #EADCE8;
    --moss: #55672E;
    --moss-pale: #E4E9D3;
    --line: rgba(28,23,16,0.12);
    --radius: 18px;
    --maxw: 1180px;
    padding-top: env(safe-area-inset-top, 0px);
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) { color-scheme: dark; }
  }
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; scroll-padding-top: 84px; scroll-padding-top: calc(84px + env(safe-area-inset-top, 0px)); }
  body {
    margin: 0;
    background: var(--cream);
    color: var(--ink);
    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 17px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
  }
  h1, h2, h3, h4, .display {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
    line-height: 1.08;
    letter-spacing: -0.01em;
  }
  p { margin: 0; }
  a { color: inherit; text-decoration: none; }
  img { max-width: 100%; display: block; }
  ul { margin: 0; padding: 0; list-style: none; }
  button { font-family: inherit; }
  .wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; }
  section { position: relative; }
  ::selection { background: var(--gold); color: var(--ink); }
  :focus-visible { outline: 3px solid var(--plum); outline-offset: 2px; }

  /* ---------- decorative bubbles (client artwork) ---------- */
  .bubbles { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
  .bubble-side { position: absolute; top: 6px; right: 24px; width: 150px; height: auto; user-select: none; transform: scaleX(-1);
    -webkit-mask-image: linear-gradient(to bottom, black 55%, transparent 92%);
    mask-image: linear-gradient(to bottom, black 55%, transparent 92%); }
  .bubble-corner { position: absolute; width: 190px; height: auto; user-select: none; }
  .bubbles-dark { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
  .bubble-band-wrap.small { max-width: 460px; margin: 0 auto; opacity: 0.9; }
  @media (max-width: 700px) { .bubble-corner { width: 120px; } }
  .bubble-band-wrap { width: 100%; overflow: hidden; line-height: 0; }
  .bubble-band { display: block; width: 100%; height: auto; user-select: none; pointer-events: none; }
  .bubble-band-behind { position: absolute; top: 40px; left: 0; width: 100%; z-index: 0; overflow: hidden;
    line-height: 0; pointer-events: none; opacity: 0.9; }
  .bubble-band-behind img { display: block; width: 100%; height: auto; }
  #objectifs { overflow: hidden; }
  #festival { background: #fff; overflow: hidden; position: relative; }
  #festival > .wrap { position: relative; z-index: 1; }
  #festival .bubble-band-behind { opacity: 0.55; }
  #festival .bubble-band-behind.fest-bottom { top: auto; bottom: 40px; }
  #festival .umami-stats li::before { color: #C99A1E; }
  #objectifs > .wrap { position: relative; z-index: 1; }
  @media (max-width: 700px) {
    .bubble-side { width: 96px; top: 2px; right: 14px; }
  }

  /* ---------- nav ---------- */
  .topbar {
    position: sticky; top: 0; z-index: 100;
    background: rgba(251,246,233,0.94);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--line);
    padding-top: env(safe-area-inset-top, 0px);
  }
  .topbar .wrap { display: flex; align-items: center; justify-content: space-between; height: 72px; gap: 16px; }
  .brand { display: flex; align-items: center; gap: 10px; font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-weight:700; font-size: 21px; white-space: nowrap; }
  .brand-mark { position: relative; width: 34px; height: 34px; flex: none; }
  .brand-mark span { position:absolute; border-radius:50%; background: var(--gold); }
  .brand-mark span:nth-child(1){ width:34px; height:34px; top:0; left:0; }
  .brand-mark span:nth-child(2){ width:14px; height:14px; background:var(--ink); top:-4px; right:-6px; }
  .brand-mark span:nth-child(3){ width:9px; height:9px; background:var(--plum); bottom:-3px; left:-3px; }
  .brand-logo { height: 52px; width: auto; display: block; }
  .brand-tagline { font-size: 13.5px; font-weight: 600; color: var(--ink-soft); font-style: italic; white-space: nowrap; margin-left: -4px; }
  @media (max-width: 760px) { .brand-tagline { display: none; } }

  /* ---------- team banner ---------- */
  .team-banner { position: relative; width: 100%; height: clamp(150px, 26vw, 320px); overflow: hidden; }
  .team-banner img { width: 100%; height: 100%; object-fit: cover; object-position: center 32%; display: block; }
  .team-banner::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(28,23,16,0.12) 0%, rgba(251,246,233,0.15) 55%, var(--cream) 100%),
                rgba(240,174,27,0.10);
  }
  .banner-caption {
    position: absolute; right: 14px; bottom: 10px; z-index: 2;
    font-size: 11.5px; font-style: italic; color: rgba(255,255,255,0.92);
    text-shadow: 0 1px 3px rgba(0,0,0,0.55);
    letter-spacing: .01em;
  }
  @media (max-width: 560px) { .banner-caption { font-size: 10px; right: 8px; bottom: 6px; } }

  nav.mainnav { display: flex; align-items: center; gap: 4px; }
  nav.mainnav > a, .dropdown-toggle {
    font-size: 15px; font-weight: 600; padding: 9px 14px; border-radius: 999px;
    color: var(--ink-soft); transition: background .15s ease, color .15s ease;
    background: transparent; border: none; cursor: pointer; display:flex; align-items:center; gap:6px;
  }
  nav.mainnav > a:hover, .dropdown-toggle:hover { background: var(--gold-pale-2); color: var(--ink); }
  nav.mainnav > a.active, .dropdown-toggle.active { background: var(--ink); color: var(--cream); }
  .caret { width:9px; height:9px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform: rotate(45deg); margin-top:-3px; transition: transform .15s ease; }
  .dropdown.open .caret { transform: rotate(-135deg); margin-top:3px; }

  .dropdown { position: relative; }
  .dropdown-menu {
    position: absolute; top: calc(100% + 8px); left: 0; min-width: 230px;
    background: var(--cream); border: 1.5px solid var(--line); border-radius: 14px; padding: 8px;
    box-shadow: 0 12px 30px rgba(28,23,16,0.14);
    opacity: 0; visibility: hidden; transform: translateY(-6px);
    transition: opacity .15s ease, transform .15s ease;
  }
  .dropdown.open .dropdown-menu { opacity: 1; visibility: visible; transform: translateY(0); }
  .dropdown-menu a { display:block; padding: 10px 14px; border-radius: 9px; font-size: 14.5px; font-weight: 600; color: var(--ink-soft); }
  .dropdown-menu a:hover { background: var(--gold-pale-2); color: var(--ink); }

  .nav-cta {
    background: var(--gold); color: var(--ink); font-weight: 700; padding: 10px 20px;
    border-radius: 999px; font-size: 15px; white-space: nowrap; border: 2px solid var(--ink);
    box-shadow: 3px 3px 0 var(--ink);
    transition: transform .12s ease, box-shadow .12s ease;
  }
  .nav-cta:hover { transform: translate(-1px,-1px); box-shadow: 4px 4px 0 var(--ink); }
  .burger { display: none; width: 42px; height: 42px; border-radius: 10px; border: 2px solid var(--ink); background: transparent; cursor: pointer; align-items:center; justify-content:center; flex:none; }
  .burger span, .burger span::before, .burger span::after { content:''; display:block; width:18px; height:2px; background:var(--ink); position:relative; }
  .burger span::before { position:absolute; top:-6px; }
  .burger span::after { position:absolute; top:6px; }

  @media (max-width: 900px) {
    nav.mainnav { position: fixed; inset: 72px 0 0 0; background: var(--cream); flex-direction: column;
      align-items: stretch; padding: 18px; gap: 4px; transform: translateX(100%); transition: transform .25s ease;
      border-top: 1px solid var(--line); overflow-y: auto; }
    nav.mainnav.open { transform: translateX(0); }
    nav.mainnav > a, .dropdown-toggle { width: 100%; padding: 14px 16px; font-size: 17px; border-radius: 12px; justify-content: space-between; }
    .dropdown-menu { position: static; box-shadow:none; border: none; opacity:1; visibility:visible; transform:none; height:0; overflow:hidden; padding:0; transition: height .18s ease; }
    .dropdown.open .dropdown-menu { height: auto; padding: 4px 0 4px 10px; }
    .burger { display: flex; }
    .nav-cta.desktop-only { display: none; }
    /* le flou d'arrière-plan emprisonnait le menu dans la barre : on le retire sur mobile */
    .topbar { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--cream); }
    nav.mainnav { top: calc(72px + env(safe-area-inset-top, 0px)); bottom: 0; left: 0; right: 0; height: auto; z-index: 99; box-shadow: 0 12px 30px rgba(0,0,0,.12); }
    nav.mainnav:not(.open) { visibility: hidden; }
  }
  @media (min-width: 901px) { nav.mainnav > a.mobile-only { display: none; } }

  /* ---------- hero ---------- */
  .hero { padding: 72px 0 56px; overflow: hidden; }
  .hero-grid { display: block; max-width: 720px; position: relative; z-index: 1; }
  .kicker { display:inline-flex; align-items:center; gap:8px; background:var(--ink); color:var(--gold-pale-2); font-weight:700; font-size:13px; padding:7px 14px 7px 10px; border-radius:999px; margin-bottom:22px; }
  .kicker i { width:8px; height:8px; border-radius:50%; background:var(--gold); display:inline-block; }
  .hero h1 { font-size: clamp(36px, 4.8vw, 54px); }
  .hero h1 em { font-style: normal; color: var(--gold-deep); background: linear-gradient(transparent 62%, var(--gold-pale) 62%); padding: 0 2px; }
  .hero p.lead { margin-top: 22px; font-size: 19px; color: var(--ink-soft); max-width: 46ch; }
  .hero-ctas { display:flex; gap:14px; margin-top: 32px; flex-wrap: wrap; }
  .btn { display:inline-flex; align-items:center; gap:8px; font-weight:700; padding:14px 26px; border-radius:999px; font-size:16px; border:2px solid var(--ink); }
  .btn-primary { background: var(--gold); color: var(--ink); box-shadow: 4px 4px 0 var(--ink); }
  .btn-primary:hover { transform: translate(-1px,-1px); box-shadow: 5px 5px 0 var(--ink); }
  .btn-ghost { background: transparent; color: var(--ink); }
  .btn-ghost:hover { background: var(--cream-2); }

  .hero-visual { position: relative; aspect-ratio: 1/1; }
  .stat-bubble { position:absolute; border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; box-shadow: 0 8px 24px rgba(28,23,16,0.12); }
  .stat-bubble .num { font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-weight:700; line-height:1; }
  .stat-bubble .lbl { font-size:12px; font-weight:600; color: var(--ink-soft); margin-top:4px; padding: 0 10px; }
  .sb-1 { width: 230px; height: 230px; background: var(--gold); top: 0; left: 30px; }
  .sb-1 .num { font-size: 52px; }
  .sb-2 { width: 150px; height: 150px; background: var(--ink); color: var(--cream); top: 40px; right: 0; }
  .sb-2 .lbl { color: var(--gold-pale-2); }
  .sb-2 .num { font-size: 34px; }
  .sb-3 { width: 175px; height: 175px; background: var(--plum-pale); border: 2px solid var(--plum); bottom: 10px; left: 0; }
  .sb-3 .num { font-size: 36px; color: var(--plum); }
  .sb-4 { width: 120px; height: 120px; background: var(--moss-pale); border: 2px solid var(--moss); bottom: -10px; right: 40px; }
  .sb-4 .num { font-size: 26px; color: var(--moss); }
  @media (max-width: 900px) {
    .hero-grid { grid-template-columns: 1fr; }
    .hero-visual { max-width: 380px; margin: 20px auto 0; width: 100%; }
  }

  /* ---------- generic section chrome ---------- */
  .section { padding: 84px 0; }
  .section.alt { background: var(--ink); color: var(--cream); }
  .section.alt h2, .section.alt h3 { color: var(--cream); }
  .section.tint { background: var(--gold-pale-2); }
  .section.tint-plum { background: var(--plum); color: var(--cream); }
  .section.tint-plum h2, .section.tint-plum h3 { color: var(--cream); }
  .section-head { max-width: 660px; margin-bottom: 44px; }
  .eyebrow { display:inline-block; font-weight:700; font-size:13.5px; color: var(--gold-deep); margin-bottom:10px; }
  .section.alt .eyebrow, .section.tint-plum .eyebrow { color: var(--gold); }
  .section-head h2 { font-size: clamp(28px, 3.4vw, 40px); }
  .section-head p { margin-top: 14px; font-size: 17.5px; color: var(--ink-soft); }
  .section.alt .section-head p { color: #D8CFBF; }
  .section.tint-plum .section-head p { color: #E4D6E2; }
  hr.div { border: none; border-top: 1px dashed var(--line); margin: 72px 0; }
  .section.alt hr.div, .section.tint-plum hr.div { border-top-color: rgba(251,246,233,0.2); }

  /* ---------- manifesto (accueil) ---------- */
  .think-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items:start; }
  .think-grid p { color: var(--ink-soft); margin-bottom: 14px; }
  .manifesto-list { display: flex; flex-direction: column; gap: 14px; }
  .manifesto-item { display:flex; gap: 14px; align-items:flex-start; padding: 18px; background: var(--cream-2); border-radius: 14px; }
  .manifesto-icon { flex:none; width:36px; height:36px; border-radius:50%; background:var(--gold); display:flex; align-items:center; justify-content:center; margin-top:2px; }
  .manifesto-icon svg { width:18px; height:18px; }
  .manifesto-item p { font-weight: 600; font-size: 15.5px; margin: 0; }

  /* ---------- manifeste illustré ---------- */
  .mf-intro { max-width: 760px; margin-bottom: 28px; color: var(--ink-soft); font-size: 15.5px; }
  .mf-intro p { margin-bottom: 8px; }
  .mf-band { display: grid; grid-template-columns: 2fr 3fr; border-radius: 16px; overflow: hidden; margin-bottom: 18px; background: #F5ECA2; }
  .mf-art { background: #FEDD58; display: flex; align-items: center; justify-content: center; min-height: 220px; }
  .mf-art { padding: 20px; }
  .mf-art img { max-width: 100%; max-height: 320px; display: block; }
  .mf-art-fill { align-items: flex-end; justify-content: flex-start; padding: 0; }
  .mf-art-fill img { max-height: none; width: 100%; height: 100%; object-fit: cover; object-position: left bottom; }
  .mf-text { padding: 28px 32px; display: flex; flex-direction: column; justify-content: center; gap: 18px; color: var(--ink); }
  .mf-val h3 { font-size: 17px; font-weight: 700; margin-bottom: 6px; }
  .mf-val p { font-size: 14.5px; line-height: 1.6; color: var(--ink); margin: 0 0 8px; }
  .mf-closing { background: #FEDD58; border-radius: 16px; padding: clamp(40px, 6vw, 72px) clamp(22px, 8vw, 110px); text-align: left; }
  .mf-closing p { font-weight: 700; font-size: clamp(18px, 2vw, 23px); line-height: 1.55; color: var(--ink); max-width: 820px; margin: 0 auto; }
  .mf-closing .mf-quote { text-align: center; margin-top: 28px; font-size: clamp(24px, 3.2vw, 36px); font-weight: 800; line-height: 1.25; }
  #manifeste { overflow-x: clip; }
  .mf-art-duo { gap: 0; flex-wrap: nowrap; }
  .mf-art-duo img { max-width: 46%; max-height: 120px; object-fit: contain; transition: transform .3s ease; }
  .mf-art-duo img:first-child { transform: rotate(-8deg) translate(8px, -14px); }
  .mf-art-duo img:last-child { transform: rotate(7deg) translate(-8px, 16px); }
  .mf-art-duo:hover img:first-child { transform: rotate(-4deg) translate(4px, -8px); }
  .mf-art-duo:hover img:last-child { transform: rotate(3deg) translate(-4px, 8px); }
  /* bandeaux plus compacts */
  .mf-band { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) !important; margin-bottom: 10px; }
  .mf-art { min-height: 0; padding: 14px 16px; }
  .mf-art img { max-height: 170px; }
  .mf-art-duo img { max-height: 120px; }
  .mf-text { padding-top: 18px; padding-bottom: 18px; gap: 12px; }
  .mf-val h3 { font-size: 16px; margin-bottom: 4px; }
  .mf-val p { font-size: 14px; line-height: 1.55; margin-bottom: 6px; }
  .mf-closing { padding-top: clamp(28px, 4vw, 44px); padding-bottom: clamp(28px, 4vw, 44px); }
  .mf-band, .mf-closing { width: 100vw; margin-left: calc(50% - 50vw); border-radius: 0; }
  .mf-band { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
  .mf-text { max-width: 760px; padding-left: clamp(24px, 4vw, 56px); padding-right: clamp(24px, 4vw, 56px); }
  .mf-tilt-l img, .mf-tilt-r img { transition: transform .3s ease; }
  .mf-tilt-l img { transform: rotate(-5deg); }
  .mf-tilt-r img { transform: rotate(5deg); max-height: 230px; }
  .mf-tilt-l:hover img, .mf-tilt-r:hover img { transform: rotate(0deg) scale(1.04); }
  .mf-art-duo img:last-child { max-height: 150px; }
  @media (prefers-reduced-motion: reduce) { .mf-tilt-l img, .mf-tilt-r img, .mf-art-duo img { transition: none; } }
  @media (max-width: 760px) {
    .mf-band { grid-template-columns: 1fr !important; }
    .mf-art { min-height: 0; padding: 18px; }
    .mf-art-fill { padding: 0; max-height: 260px; }
    .mf-text { padding: 22px 20px; }
  }
  @media (max-width: 900px) { .think-grid { grid-template-columns: 1fr; gap: 32px; } }

  /* ---------- portrait cards (fondateurs + adhérents) ---------- */
  .portrait-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 24px; }
  .portrait-card { background: var(--cream); border: 1.5px solid var(--line); border-radius: 16px; overflow: hidden; }
  .section.alt .portrait-card, .section.tint-plum .portrait-card { background: rgba(251,246,233,0.06); border-color: rgba(251,246,233,0.2); }
  .portrait-photo { aspect-ratio: 3/4; display:flex; align-items:center; justify-content:center; font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-size: 34px; position:relative; overflow:hidden; }
  .portrait-photo img { width:100%; height:100%; object-fit:cover; display:block; transition: transform .3s ease; }
  a.portrait-photo-link:hover .portrait-photo img { transform: scale(1.04); }
  .portrait-btn { display:block; text-align:center; margin: 10px 16px 16px; padding: 8px 10px; border-radius: 999px;
    border: 1.5px solid var(--ink); font-size: 12.5px; font-weight: 700; color: var(--ink); }
  .portrait-btn:hover { background: var(--gold); }
  .section.alt .portrait-btn, .section.tint-plum .portrait-btn { border-color: rgba(251,246,233,0.5); color: var(--cream); }
  .section.alt .portrait-btn:hover, .section.tint-plum .portrait-btn:hover { background: var(--gold); color: var(--ink); border-color: var(--gold); }
  .founder-badge { position:absolute; top:10px; left:10px; background: var(--ink); color: var(--cream); font-size:10.5px; font-weight:700; padding:4px 9px; border-radius:999px; z-index:1; }
  .founder-badge.alumni { background: var(--plum); }

  /* ---------- adhérents pro : grille compacte + fiche/diaporama ---------- */
  .adh-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 16px 14px; margin-top: 8px; }
  .adh-card { cursor: pointer; background: transparent; border: none; padding: 0; text-align: left; font-family: inherit; color: inherit; }
  .adh-photo { aspect-ratio: 1/1; border-radius: 12px; overflow: hidden; background: rgba(240,174,27,0.18); display: flex; align-items: center; justify-content: center; }
  .adh-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .25s ease; }
  .adh-card:hover .adh-photo img { transform: scale(1.05); }
  .adh-photo .ph-initials { font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 800; font-size: 22px; color: var(--gold); }
  .adh-name { font-size: 12.5px; font-weight: 700; margin-top: 8px; line-height: 1.3; color: var(--cream); }
  .adh-teaser { font-size: 11px; color: #C9BFA9; margin-top: 3px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; }

  .adh-modal-backdrop { position: fixed; inset: 0; background: rgba(15,12,8,0.8); z-index: 300; display: flex; align-items: center; justify-content: center;
    padding: 20px; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
  .adh-modal-backdrop.open { opacity: 1; pointer-events: auto; }
  .adh-modal { background: var(--cream); border-radius: 20px; max-width: 900px; width: 100%; max-height: 86vh; overflow: hidden;
    display: grid; grid-template-columns: 1fr 1fr; position: relative; box-shadow: 0 30px 70px rgba(0,0,0,0.4); }
  .adh-modal-photo { background: var(--ink); min-height: 280px; }
  .adh-modal-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .adh-modal-body { padding: 34px 32px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; max-height: 86vh; }
  .adh-modal-body h3 { font-size: 22px; line-height: 1.2; }
  .adh-modal-body .subtitle { font-size: 13px; font-weight: 700; color: var(--gold-deep); text-transform: uppercase; letter-spacing: .02em; }
  .adh-modal-body p { font-size: 14.5px; color: var(--ink-soft); line-height: 1.6; white-space: pre-line; }
  .adh-modal-body .adh-link { margin-top: 6px; font-size: 13.5px; font-weight: 700; color: var(--ink); border-bottom: 1.5px solid var(--gold); align-self: flex-start; }
  .adh-modal-close, .adh-modal-nav { position: absolute; border-radius: 50%; background: var(--cream); border: 1.5px solid var(--ink);
    display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 2; }
  .adh-modal-close { top: 14px; right: 14px; width: 36px; height: 36px; font-size: 18px; }
  .adh-modal-nav { top: 50%; transform: translateY(-50%); width: 42px; height: 42px; font-size: 20px; }
  .adh-modal-nav.prev { left: 14px; } .adh-modal-nav.next { right: 14px; }
  .adh-modal-count { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 700; color: var(--cream);
    background: rgba(28,23,16,0.55); padding: 4px 10px; border-radius: 999px; z-index: 2; }
  @media (max-width: 760px) {
    .adh-modal { grid-template-columns: 1fr; max-height: 90vh; }
    .adh-modal-photo { min-height: 220px; }
    .adh-modal-body { max-height: 50vh; padding: 24px 22px; }
    .adh-modal-nav { width: 36px; height: 36px; }
  }
  .portrait-photo .badge { position:absolute; top:10px; left:10px; background: var(--ink); color: var(--cream); font-size:10.5px; font-weight:700; padding:4px 9px; border-radius:999px; letter-spacing:.02em; }
  .portrait-info { padding: 14px 16px 18px; }
  .portrait-info h4 { font-size: 16px; }
  .section.alt .portrait-info h4, .section.tint-plum .portrait-info h4 { color: var(--cream); }
  .portrait-info .role { color: var(--ink-soft); font-size: 13px; margin-top: 5px; line-height: 1.5; }
  .section.alt .portrait-info .role, .section.tint-plum .portrait-info .role { color: #D8CFBF; }
  @media (max-width: 980px) { .portrait-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 560px) { .portrait-grid { grid-template-columns: 1fr 1fr; gap: 12px; } }

  .evolutive-note { margin-top: 30px; padding: 18px 20px; border-radius: 14px; background: var(--gold-pale-2); border: 1.5px dashed var(--gold-deep); font-size: 14px; color: var(--ink-soft); display:flex; gap:12px; }
  .section.alt .evolutive-note { background: rgba(251,246,233,0.08); border-color: rgba(240,174,27,0.6); color: #E7DECB; }
  .section.tint-plum .evolutive-note { background: rgba(251,246,233,0.1); border-color: var(--gold); color: #F0E6EE; }

  /* ---------- adhésion (dans accueil) ---------- */
  .join-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
  .join-card { border-radius: 22px; padding: 32px; border: 2px solid var(--ink); }
  .join-card.p1 { background: var(--gold-pale-2); }
  .join-card.p2 { background: var(--ink); color: var(--cream); }
  .join-card.p2 h3, .join-card.p2 .price { color: var(--cream); }
  .join-card h3 { font-size: 23px; margin-bottom: 6px; }
  .join-card .price { font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-weight:700; font-size: 28px; margin: 14px 0 18px; }
  .join-card .price span { font-size: 14px; font-weight:600; opacity:.7; }
  .join-list { display:flex; flex-direction:column; gap:10px; margin-bottom: 24px; }
  .join-list li { display:flex; gap:10px; font-size: 15px; align-items:flex-start; }
  .join-list li::before { content:'●'; color: var(--gold-deep); font-size:10px; margin-top:7px; }
  .join-card.p2 .join-list li::before { color: var(--gold); }
  @media (max-width: 900px) { .join-grid { grid-template-columns: 1fr; } }

  /* ---------- membership (adhésion, compacte avec photos) ---------- */
  .membership-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .membership-card { border: 1.5px solid var(--line); border-radius: 16px; overflow: hidden; background: var(--cream-2); display: flex; flex-direction: column; }
  .membership-photo { aspect-ratio: 4/3; overflow: hidden; }
  .membership-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .membership-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
  .membership-body h3 { font-size: 16.5px; }
  .membership-body p { font-size: 13px; color: var(--ink-soft); line-height: 1.55; }
  .membership-link { margin-top: auto; padding-top: 4px; font-size: 12.5px; font-weight: 700; color: var(--ink); align-self: flex-start; border-bottom: 1.5px solid var(--gold); }
  @media (max-width: 860px) { .membership-grid { grid-template-columns: 1fr; } }

  /* ---------- cards (blogs / actus) ---------- */
  .filter-row { display:flex; gap:10px; margin-bottom: 28px; flex-wrap: wrap; }
  .filter-btn { padding: 9px 18px; border-radius: 999px; border: 1.5px solid currentColor; font-weight: 700; font-size: 14px; background: transparent; cursor: pointer; color: inherit; }
  .filter-btn.is-active { background: var(--ink); color: var(--cream); border-color: var(--ink); }
  .section.alt .filter-btn.is-active { background: var(--gold); color: var(--ink); border-color: var(--gold); }
  .card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
  .card { background: var(--cream); border: 1.5px solid var(--line); border-radius: var(--radius); padding: 24px; display: flex; flex-direction: column; gap: 12px; }
  .section.alt .card { background: rgba(251,246,233,0.06); border-color: rgba(251,246,233,0.18); }
  .tag { align-self: flex-start; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 999px; }
  .tag.evt { background: var(--plum-pale); color: var(--plum); }
  .tag.actu { background: var(--gold-pale); color: var(--gold-deep); }
  .tag.projet { background: var(--moss-pale); color: var(--moss); }
  .tag.pro { background: var(--plum-pale); color: var(--plum); }
  .card .date { font-size: 13px; color: var(--ink-soft); font-weight: 600; }
  .section.alt .card .date { color: #C9BFA9; }
  .card h3 { font-size: 19px; }
  .section.alt .card h3 { color: var(--cream); }
  .card p.desc { color: var(--ink-soft); font-size: 14.5px; }
  .section.alt .card p.desc { color: #D8CFBF; }
  .card .meta { margin-top: auto; padding-top: 10px; border-top: 1px dashed var(--line); font-size: 13px; color: var(--ink-soft); }
  .section.alt .card .meta { border-top-color: rgba(251,246,233,0.2); color: #C9BFA9; }
  @media (max-width: 980px) { .card-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 640px) { .card-grid { grid-template-columns: 1fr; } }

  /* ---------- carte réseau ---------- */
  .map-wrap { display:grid; grid-template-columns: 1fr 1.1fr; gap: 48px; align-items:center; margin-top: 10px; }
  .map-hex { position: relative; width: 100%; max-width: 420px; margin: 0 auto; }
  .map-hex svg { width: 100%; height: auto; display:block; }
  .map-pin { position:absolute; transform: translate(-50%,-100%); text-align:center; }
  .map-pin .dot { width:12px; height:12px; border-radius:50%; background: var(--gold); border: 2px solid var(--ink); margin: 0 auto; }
  .map-pin .lbl { font-size: 11px; font-weight: 700; background: var(--ink); color: var(--cream); padding: 2px 7px; border-radius: 6px; margin-bottom: 4px; display:inline-block; white-space:nowrap; }
  .map-legend { font-size: 14px; color: #D8CFBF; margin-top: 18px; }
  .map-legend a { color: var(--gold); font-weight: 700; text-decoration: underline; }
  @media (max-width: 900px) { .map-wrap { grid-template-columns: 1fr; } }
  .map-embed-wrap { position: relative; width: 100%; aspect-ratio: 4/3; border-radius: 14px; overflow: hidden; border: 1.5px solid rgba(251,246,233,0.25); background: rgba(255,255,255,0.04); }
  .map-embed-wrap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
  .map-shot-link { display: block; border-radius: 16px; overflow: hidden; border: 1.5px solid rgba(251,246,233,0.25); }
  .map-shot { display: block; width: 100%; height: auto; transition: transform .3s ease; }
  .map-shot-link:hover .map-shot { transform: scale(1.03); }

  /* ---------- festival ---------- */
  .festival-banner { border-radius: 24px; padding: 44px; background: linear-gradient(135deg, var(--gold), var(--gold-deep)); color: var(--ink); position: relative; overflow: hidden; }
  .festival-banner h3 { font-size: clamp(26px,3.4vw,38px); max-width: 20ch; }
  .festival-banner p { margin-top: 14px; font-size: 16.5px; max-width: 52ch; color: #3A2C08; }
  .festival-info { display:grid; grid-template-columns: repeat(3,1fr); gap: 18px; margin-top: 32px; }
  .festival-info .fi { background: rgba(255,255,255,0.35); border-radius: 14px; padding: 16px 18px; }
  .festival-info .fi .k { font-size: 12.5px; font-weight: 700; text-transform: none; opacity: .75; }
  .festival-info .fi .v { font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-weight:700; font-size: 18px; margin-top: 4px; }
  @media (max-width: 700px) { .festival-info { grid-template-columns: 1fr 1fr; } }

  /* ---------- archives timeline ---------- */
  .tl-car { position: relative; margin-top: 16px; }
  .tl-track { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: 2px 2px 6px; -webkit-overflow-scrolling: touch; }
  .tl-track::-webkit-scrollbar { display: none; }
  .tl-fig { position: relative; flex: 0 0 150px; height: 150px; margin: 0; border-radius: 12px; overflow: hidden; cursor: zoom-in; scroll-snap-align: start; transition: transform .25s ease, box-shadow .25s ease; }
  .tl-fig:hover, .tl-fig:focus-visible { transform: translateY(-3px); box-shadow: 0 10px 22px rgba(0,0,0,.35); outline: none; }
  .tl-fig img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .35s ease; }
  .tl-fig:hover img { transform: scale(1.07); }
  .tl-fig figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 8px 7px; font-size: 11.5px; line-height: 1.3; font-weight: 600; color: #fff; background: linear-gradient(to top, rgba(0,0,0,.78), rgba(0,0,0,.45) 60%, rgba(0,0,0,0)); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .tl-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 34px; height: 34px; border-radius: 50%; border: none; background: var(--gold); color: #2B1B0E; font-size: 22px; line-height: 1; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.3); }
  .tl-prev { left: -14px; } .tl-next { right: -14px; }
  .tl-nav:disabled { opacity: 0; pointer-events: none; }
  @media (max-width: 600px) { .tl-fig { flex-basis: 130px; height: 130px; } .tl-nav { display: none; } }
  .lightbox-cap { position: absolute; left: 50%; bottom: 18px; transform: translateX(-50%); max-width: min(90vw, 760px); margin: 0; padding: 8px 16px; border-radius: 10px; background: rgba(0,0,0,.6); color: #fff; font-size: 14.5px; text-align: center; }
  .timeline { position: relative; margin-top: 20px; padding-left: 28px; border-left: 2px dashed rgba(251,246,233,0.3); }
  .tl-item { position: relative; padding-bottom: 44px; }
  .tl-item:last-child { padding-bottom: 0; }
  .tl-item::before { content:''; position:absolute; left:-34px; top:2px; width:14px; height:14px; border-radius:50%; background: var(--gold); border: 3px solid var(--ink); }
  .tl-year { font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-weight:700; font-size: 22px; color: var(--gold); }
  .tl-item p { color: #D8CFBF; margin-top: 8px; max-width: 62ch; }
  .tl-gallery { display:flex; gap:10px; margin-top: 14px; flex-wrap: wrap; }
  .tl-ph { width: 84px; height: 84px; border-radius: 12px; background: rgba(251,246,233,0.08); border: 1.5px dashed rgba(251,246,233,0.3); display:flex; align-items:center; justify-content:center; font-size: 22px; }
  #archives > .wrap { position: relative; z-index: 1; }
  .archive-callout { position: relative; z-index: 2; margin-top: 56px; padding: 26px 28px; border-radius: 18px; background: #2E2920; border: 1.5px solid rgba(251,246,233,0.2); display:flex; gap:18px; align-items:flex-start; flex-wrap:wrap; justify-content:space-between; }
  .archive-callout p { color: #D8CFBF; max-width: 52ch; }
  .archive-callout h4 { color: var(--cream); font-size: 18px; margin-bottom: 6px; }

  /* ---------- journal des adhérents : blocs par mois ---------- */
  .month-block { margin-bottom: 44px; }
  .month-block:last-child { margin-bottom: 0; }
  .month-heading { text-align: center; font-size: 19px; font-weight: 700; color: var(--cream); margin: 0 0 20px;
    padding-bottom: 12px; border-bottom: 1px dashed rgba(251,246,233,0.25); }
  .blog-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .blog-card { background: var(--gold); border-radius: 14px; overflow: hidden; color: var(--ink); display: flex; flex-direction: column; }
  .blog-card .bc-photo { aspect-ratio: 4/3; overflow: hidden; background: rgba(28,23,16,0.08); }
  .blog-card .bc-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
  .bc-photo-link { display: block; }
  .bc-photo-link:hover .bc-photo img { transform: scale(1.05); }
  .blog-card-body { padding: 14px 16px 16px; }
  .blog-card-body h4 { font-size: 14.5px; margin-bottom: 6px; }
  .blog-card-body p { font-size: 12.5px; line-height: 1.55; color: rgba(28,23,16,0.72); }
  @media (max-width: 900px) { .blog-card-grid { grid-template-columns: 1fr 1fr; } }
  @media (max-width: 600px) { .blog-card-grid { grid-template-columns: 1fr; } }

  /* ---------- blocs saisonniers (format paysage) ---------- */
  .season-heading { text-align: center; font-size: 20px; font-weight: 700; color: var(--ink); margin: 44px 0 22px;
    padding-bottom: 12px; border-bottom: 1px dashed var(--line); }
  .season-card { display: grid; grid-template-columns: 220px 1fr; gap: 0; background: #DCE7EC; border-radius: 16px;
    overflow: hidden; margin-bottom: 22px; }
  .season-card .sc-media { position: relative; background: var(--ink); }
  .season-card .sc-media video { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 180px; }
  .season-card .sc-body { padding: 20px 24px; }
  .season-card .sc-body h4 { font-size: 15px; font-weight: 700; margin-bottom: 10px; }
  .season-card .sc-body p { font-size: 13px; line-height: 1.65; color: var(--ink-soft); margin-bottom: 10px; }
  .season-card .sc-body p:last-child { margin-bottom: 0; }
  .season-card .sc-body a { color: var(--plum); text-decoration: underline; }
  @media (max-width: 700px) {
    .season-card { grid-template-columns: 1fr; }
    .season-card .sc-media video { min-height: 220px; }
  }

  /* ---------- UMAMIAMMM : triptyque + focus 2025 ---------- */
  #festival { overflow-x: clip; }
  .umami-triptych { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 12px; width: min(1520px, calc(100vw - 64px)); margin-left: 50%; transform: translateX(-50%); }
  .umami-card { background: var(--gold); border-radius: 18px; overflow: hidden; color: var(--ink); display: flex; flex-direction: column; }
  .umami-posters { display: flex; gap: 8px; padding: 16px 16px 0; }
  .poster-ph { flex: 1; aspect-ratio: 3/4; background: rgba(28,23,16,0.06); border: 1.5px dashed rgba(28,23,16,0.3); border-radius: 8px; display: flex; align-items: center; justify-content: center; }
  .umami-body { padding: 16px 18px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
  .umami-body h3 { font-size: 17px; }
  .umami-body p { font-size: 13px; line-height: 1.55; color: rgba(28,23,16,0.75); }
  .umami-link { margin-top: auto; padding-top: 6px; font-size: 12.5px; font-weight: 700; color: var(--ink); border-bottom: 1.5px solid var(--ink); align-self: flex-start; }
  @media (max-width: 900px) { .umami-triptych { grid-template-columns: 1fr; width: auto; margin-left: 0; transform: none; } }
  .poster-ph.poster-center { aspect-ratio: auto; height: 340px; background: none; border: none; }
  .poster-ph img { cursor: zoom-in; }
  .posters-fan { display: flex !important; align-items: center; justify-content: center; gap: 0; padding: 14px 6px 6px; }
  .posters-fan .poster-ph { aspect-ratio: auto !important; background: none !important; border: none !important; flex: none; }
  .posters-fan .poster-ph img { width: 100%; height: auto; display: block; border-radius: 6px; box-shadow: 0 8px 22px rgba(40,25,5,.22); cursor: zoom-in; transition: transform .3s ease; }
  .posters-fan .fan-main { width: 44%; z-index: 2; margin: 0 -4%; }
  .posters-fan .fan-side { width: 32%; z-index: 1; transform: translateY(12%); }
  .posters-fan .poster-ph:hover img { transform: translateY(-4px) scale(1.03); }




  /* ---------- carte illustrée ---------- */
  .map-wrap { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) !important; gap: 36px !important; align-items: start !important; }
  .ffm { background: #FBF6E9; border-radius: 18px; padding: 14px; color: #2B1B0E; }
  .ffm-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
  .ffm-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 999px; border: 1.5px solid #E4D2A0; background: #fff; font: inherit; font-size: 12.5px; font-weight: 600; color: #3B2A10; cursor: pointer; }
  .ffm-chip i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
  .ffm-chip[aria-pressed="false"] { opacity: .45; background: transparent; }
  .ffm-stage { position: relative; border-radius: 12px; overflow: hidden; touch-action: none; cursor: grab; }
  .ffm-stage.dragging { cursor: grabbing; }
  #ffm-svg { width: 100%; height: auto; display: block; }
  .ffm-pt { cursor: pointer; transition: opacity .25s; }
  .ffm-pt:hover, .ffm-pt.on { stroke-width: 2.4; }
  .ffm-halo { animation: ffm-pulse 2.6s ease-out infinite; transform-box: fill-box; transform-origin: center; pointer-events: none; }
  @keyframes ffm-pulse { 0% { transform: scale(1); opacity: .45; } 100% { transform: scale(2.6); opacity: 0; } }
  .ffm-hop { transition: transform 1.8s cubic-bezier(.5,0,.3,1); cursor: pointer; }
  .ffm-zoom { position: absolute; right: 8px; top: 8px; display: flex; flex-direction: column; gap: 4px; }
  .ffm-zoom button { width: 32px; height: 32px; border-radius: 8px; border: 1.5px solid #E4D2A0; background: #fff; font-size: 18px; line-height: 1; color: #3B2A10; cursor: pointer; }
  .ffm-info { margin-top: 10px; background: #fff; border: 1px solid #EAD9A8; border-radius: 12px; padding: 12px 14px; min-height: 64px; font-size: 14px; line-height: 1.5; }
  .ffm-info strong { display: block; font-size: 15.5px; }
  .ffm-info span { display: block; color: #6B5530; }
  .ffm-info .ffm-cat { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
  .ffm-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
  .ffm-links a, .ffm-links button { font: inherit; font-size: 13px; font-weight: 700; color: #2B1B0E; background: #F6E7BE; border: none; border-radius: 999px; padding: 5px 12px; text-decoration: none; cursor: pointer; }
  .ffm-chip b { font-size: 12px; min-width: 14px; text-align: center; }
  .ffm-card { display: flex; gap: 12px; align-items: flex-start; margin: 6px 0 2px; }
  .ffm-card img, .ffm-ini { width: 72px; height: 72px; border-radius: 12px; object-fit: cover; flex: none; background: #F6E7BE; display: flex; align-items: center; justify-content: center; font-weight: 800; color: #6B5530; }
  .ffm-card strong { display: block; font-size: 15.5px; }
  .ffm-card span { display: block; color: #6B5530; font-size: 13px; }
  .ffm-card em { display: block; font-style: normal; font-size: 13px; color: #3B2A10; margin-top: 4px; }
  .ffm-info .ffm-sub { font-size: 12.5px; margin-top: 6px; color: #8A6238; }
  .ffm-hop > g { transition: none; }
  .ffm-world { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; font-size: 12.5px; color: #6B5530; align-items: center; }
  .ffm-world button { font: inherit; font-size: 12.5px; background: #fff; border: 1px dashed #D2B66E; border-radius: 999px; padding: 3px 10px; cursor: pointer; color: #3B2A10; }
  @media (prefers-reduced-motion: reduce) { .ffm-halo { animation: none; opacity: 0; } .ffm-hop { transition: none; } }
  @media (max-width: 900px) { .map-wrap { grid-template-columns: 1fr !important; gap: 20px !important; } .ffm { padding: 10px; } }
  /* ---------- carte : recherche « Près de chez vous » ---------- */
  .ffn { margin-top: 22px; background: #FBF6E9; color: #2B1B0E; border-radius: 18px; padding: 18px 18px 14px; }
  .ffn h4 { font-size: 18px; font-weight: 800; margin: 0 0 4px; color: #1C1710; }
  .ffn-intro { font-size: 13.5px; color: #6B5530; margin: 0 0 12px; line-height: 1.45; }
  .ffn-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ffn-search { position: relative; }
  .ffn-search input { width: 100%; box-sizing: border-box; font: inherit; font-size: 15px; padding: 11px 14px; border-radius: 12px; border: 1.5px solid #E4D2A0; background: #fff; color: #1C1710; }
  .ffn-search input:focus { outline: none; border-color: #F0AE1B; box-shadow: 0 0 0 3px rgba(240,174,27,.3); }
  .ffn-sugg { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 20; list-style: none; margin: 0; padding: 4px; background: #fff; border: 1px solid #EAD9A8; border-radius: 12px; box-shadow: 0 10px 24px rgba(28,23,16,.18); }
  .ffn-sugg li { padding: 8px 10px; border-radius: 8px; cursor: pointer; font-size: 14px; }
  .ffn-sugg li small { color: #8A6238; margin-left: 6px; }
  .ffn-sugg li[aria-selected="true"], .ffn-sugg li:hover { background: #F6E7BE; }
  .ffn-geo { margin-top: 8px; font: inherit; font-size: 13px; font-weight: 700; color: #2B1B0E; background: none; border: none; padding: 4px 0; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
  .ffn-radius { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; font-size: 13px; color: #6B5530; }
  .ffn-radius span { margin-right: 2px; }
  .ffn-radius button { font: inherit; font-size: 12.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; border: 1.5px solid #E4D2A0; background: #fff; color: #3B2A10; cursor: pointer; }
  .ffn-radius button[aria-pressed="true"] { background: #F0AE1B; border-color: #F0AE1B; color: #1C1710; }
  .ffn-res:empty { display: none; }
  .ffn-res { margin-top: 14px; border-top: 1px solid #EAD9A8; padding-top: 12px; }
  .ffn-sum { font-size: 14px; margin: 0 0 8px; }
  .ffn-sum strong { color: #1C1710; }
  .ffn-list { max-height: 420px; overflow-y: auto; margin: 0 -6px; padding: 0 6px; }
  .ffn-grp { font-size: 12.5px; font-weight: 800; margin: 12px 0 4px; display: flex; align-items: center; gap: 6px; }
  .ffn-grp:first-child { margin-top: 0; }
  .ffn-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; font: inherit; background: #fff; border: 1px solid #F0E3BF; border-radius: 12px; padding: 8px 10px; margin-bottom: 6px; cursor: pointer; color: #2B1B0E; }
  .ffn-item:hover, .ffn-item:focus-visible { border-color: #F0AE1B; outline: none; }
  .ffn-item.on { border-color: #F0AE1B; background: #FFF6DC; }
  .ffn-ic { width: 40px; height: 40px; border-radius: 10px; flex: none; background: #F6E7BE; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 800; overflow: hidden; }
  .ffn-ic img { width: 100%; height: 100%; object-fit: cover; }
  .ffn-txt { flex: 1; min-width: 0; }
  .ffn-txt strong { display: block; font-size: 14px; line-height: 1.3; }
  .ffn-txt span { display: block; font-size: 12.5px; color: #6B5530; line-height: 1.35; }
  .ffn-km { flex: none; font-size: 12.5px; font-weight: 700; color: #8A6238; white-space: nowrap; }
  .ffn-more, .ffn-wide { font: inherit; font-size: 13px; font-weight: 700; color: #2B1B0E; background: #F6E7BE; border: none; border-radius: 999px; padding: 5px 12px; cursor: pointer; margin: 2px 0 6px; }
  .ffn-msg { font-size: 13.5px; color: #6B5530; margin: 0 0 8px; }
  .ffm-radius { fill: #F0AE1B; fill-opacity: .13; stroke: #C98A06; stroke-width: 1.5; stroke-dasharray: 5 4; pointer-events: none; }
  .ffn-geo:focus-visible, .ffn-radius button:focus-visible, .ffn-more:focus-visible, .ffn-wide:focus-visible { outline: 2px solid #F0AE1B; outline-offset: 2px; }
  .ffm-expand { display: none; position: absolute; left: 50%; bottom: 10px; transform: translateX(-50%); padding: 8px 16px; border-radius: 999px; border: none; background: #2B1B0E; color: #FBF6E9; font: inherit; font-size: 13.5px; font-weight: 700; box-shadow: 0 6px 16px rgba(0,0,0,.25); cursor: pointer; }
  @media (max-width: 900px) { .ffm-expand { display: block; } }
  .adh-modal-backdrop { z-index: 400 !important; }
  .ffm.is-full { position: fixed; inset: 0; z-index: 300; border-radius: 0; display: flex; flex-direction: column; padding: calc(10px + env(safe-area-inset-top, 0px)) 10px calc(10px + env(safe-area-inset-bottom, 0px)); overflow-y: auto; }
  .ffm.is-full .ffm-stage { flex: 1 1 auto; min-height: 55vh; display: flex; align-items: center; background: #FBF6E9; }
  .ffm.is-full #ffm-svg { width: 100%; height: 100%; max-height: 100%; }
  .ffm.is-full .ffm-expand { display: none; }
  .ffm.is-full > *:not(.ffm-stage) { flex-shrink: 0; }
  .ffm-info, .ffm-world { position: relative; z-index: 1; }
  .ffm.is-full .ffm-zoom button { width: 40px; height: 40px; font-size: 20px; }
  /* ---------- menu déroulant des adhérent·es ---------- */
  .adh-finder { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 0 0 22px; }
  .adh-finder label { font-weight: 700; color: var(--cream); font-size: 15px; }
  .adh-select-wrap { position: relative; flex: 1 1 320px; max-width: 640px; }
  .adh-select-wrap::after { content: '▾'; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); color: #2B1B0E; pointer-events: none; font-size: 14px; }
  #adh-select { width: 100%; appearance: none; -webkit-appearance: none; padding: 12px 42px 12px 16px; border-radius: 999px; border: 2px solid var(--gold); background: #FBF6E9; color: #1C1710; font: inherit; font-size: 14.5px; cursor: pointer; }
  #adh-select:focus { outline: none; box-shadow: 0 0 0 3px rgba(240,174,27,.35); }
  .adh-card.adh-hl { animation: adh-hl 2.4s ease; position: relative; z-index: 2; }
  @keyframes adh-hl { 0%, 100% { box-shadow: 0 0 0 0 rgba(240,174,27,0); } 15%, 60% { box-shadow: 0 0 0 5px rgba(240,174,27,1), 0 12px 30px rgba(0,0,0,.4); transform: translateY(-4px); } }
  /* ---------- adhérents repliés ---------- */
  .adh-collapse { position: relative; overflow: hidden; transition: max-height .6s ease; }
  .adh-fade { position: absolute; left: 0; right: 0; bottom: 0; height: 0; pointer-events: none; background: linear-gradient(to bottom, rgba(28,23,16,0) 0%, rgba(28,23,16,.75) 60%, rgba(28,23,16,.95) 100%); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); transition: opacity .4s ease; }
  .adh-collapse:not(.is-collapsed) .adh-fade { opacity: 0; }
  .adh-more-wrap { display: flex; justify-content: center; margin-top: 18px; }
  .adh-more-btn { display: inline-flex; align-items: center; gap: 10px; padding: 12px 24px; border-radius: 999px; border: none; background: var(--gold); color: #2B1B0E; font: inherit; font-weight: 700; font-size: 15px; cursor: pointer; box-shadow: 0 6px 18px rgba(0,0,0,.3); transition: transform .2s ease; }
  .adh-more-btn:hover, .adh-more-btn:focus-visible { transform: translateY(-2px); outline: none; }
  .adh-more-btn[aria-expanded="true"] .rm-ic { transform: rotate(180deg); }
  /* ---------- bulles en filigrane (par-ci, par-là) ---------- */
  .section { position: relative; overflow: hidden; }
  .section > .wrap, .section > .jf-band { position: relative; z-index: 1; }
  .ff-bubbles { position: absolute; z-index: 0; pointer-events: none; width: var(--s); height: var(--s); animation: ff-drift 14s ease-in-out infinite alternate; }
  .ff-bubbles i { position: absolute; border-radius: 50%; background: #F0AE1B; opacity: var(--o, .22); }
  .section.alt .ff-bubbles i { opacity: .12; }
  .ff-bubbles i:nth-child(1) { width: 100%; height: 100%; left: 0; top: 0; }
  .ff-bubbles i:nth-child(2) { width: 42%; height: 42%; left: 78%; top: -18%; }
  .ff-bubbles i:nth-child(3) { width: 22%; height: 22%; left: -14%; top: 70%; }
  .ff-bubbles i:nth-child(4) { width: 12%; height: 12%; left: 92%; top: 62%; }
  .ff-bubbles.flip i:nth-child(2) { left: -22%; } .ff-bubbles.flip i:nth-child(3) { left: 88%; } .ff-bubbles.flip i:nth-child(4) { left: -4%; top: 96%; }
  @keyframes ff-drift { from { transform: translateY(0) rotate(0deg); } to { transform: translateY(-18px) rotate(6deg); } }
  @media (max-width: 700px) { .ff-bubbles { --s: calc(var(--s-m, 90px)) !important; } }
  @media (prefers-reduced-motion: reduce) { .ff-bubbles { animation: none; } }
  .nl-soon { display: inline-block; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; background: #5B3A32; color: #FFF3D6; }
  .nl-input { flex: 1; min-width: 180px; padding: 12px 16px; border-radius: 999px; border: 1.5px solid var(--line); font-family: inherit; font-size: 14.5px; background: #fff; color: #1C1710 !important; -webkit-text-fill-color: #1C1710; caret-color: #1C1710; }
  .nl-input::placeholder { color: #8A7A5E; -webkit-text-fill-color: #8A7A5E; opacity: 1; }
  .nl-msg { font-size: 13.5px; margin: 8px 0 0; min-height: 1em; }
  /* ---------- formulaire de contact ---------- */
  .cf-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 48px; align-items: start; }
  .cf-side { display: flex; flex-direction: column; gap: 18px; }
  .cf-cities { padding: 4px 6px; }
  .cf { display: flex; flex-direction: column; gap: 14px; background: #fff; border-radius: 18px; padding: 26px; box-shadow: 0 10px 30px rgba(60,40,10,.08); }
  .cf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  .cf label { display: flex; flex-direction: column; gap: 6px; font-size: 13.5px; font-weight: 700; color: var(--ink); }
  .cf input, .cf select, .cf textarea { font: inherit; font-weight: 400; font-size: 15px; padding: 11px 14px; border-radius: 12px; border: 1.5px solid var(--line); background: var(--cream); color: #1C1710; -webkit-text-fill-color: #1C1710; width: 100%; box-sizing: border-box; }
  .cf textarea { resize: vertical; min-height: 110px; }
  .cf input:focus, .cf select:focus, .cf textarea:focus { outline: none; border-color: #E3B92F; box-shadow: 0 0 0 3px rgba(227,185,47,.25); }
  .cf .cf-consent { flex-direction: row; align-items: flex-start; gap: 10px; font-weight: 400; font-size: 13px; color: var(--ink-soft); }
  .cf .cf-consent input { width: auto; margin-top: 3px; }
  .cf .cf-consent a { color: inherit; text-decoration: underline; }
  .cf-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
  .cf button[type="submit"] { align-self: flex-start; }
  .cf-status { font-size: 14px; margin: 0; min-height: 1.2em; }
  .cf-status.ok { color: #3E7A2E; } .cf-status.err { color: #B4442A; }
  .cf .invalid { border-color: #D9577A; }
  @media (max-width: 800px) { .cf-grid { grid-template-columns: 1fr; } .cf-row { grid-template-columns: 1fr; } }
  .foot-cities { font-size: 13.5px; color: #D8CFBF; margin-top: 10px; }
  /* ---------- mentions légales / confidentialité ---------- */
  .legal-modal { position: fixed; inset: 0; z-index: 200; background: rgba(28,23,16,.6); display: flex; align-items: flex-start; justify-content: center; padding: 5vh 16px; overflow-y: auto; }
  .legal-modal[hidden] { display: none; }
  .legal-box { position: relative; background: #FBF6E9; color: var(--ink); border-radius: 18px; max-width: 760px; width: 100%; padding: 34px clamp(20px, 4vw, 44px); box-shadow: 0 20px 60px rgba(0,0,0,.35); }
  .legal-box h2 { font-size: 26px; margin-bottom: 14px; }
  .legal-box h3 { font-size: 16px; margin: 20px 0 6px; }
  .legal-box p { font-size: 14.5px; line-height: 1.65; color: var(--ink-soft); margin-bottom: 8px; }
  .legal-box a { color: inherit; text-decoration: underline; }
  .legal-date { font-size: 13px !important; }
  .legal-close { position: absolute; top: 14px; right: 14px; width: 36px; height: 36px; border-radius: 50%; border: none; background: #fff; font-size: 16px; cursor: pointer; }
  mark.todo { background: #FFE58A; padding: 0 4px; border-radius: 4px; }
  /* ---------- légendes discrètes sur photos ---------- */
  .membership-photo, .uc-slide { position: relative; }
  .ph-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 8px; font-size: 12px; line-height: 1.35; font-weight: 500; color: rgba(255,255,255,.92); background: linear-gradient(to top, rgba(0,0,0,.6), rgba(0,0,0,0)); pointer-events: none; letter-spacing: .01em; }
  /* ---------- pages ---------- */
  .page-off { display: none !important; }
  .page-next { background: var(--cream-2, #F3EAD6); padding: 34px 20px; text-align: center; }
  .page-next p { margin: 0 0 12px; font-size: 14px; color: var(--ink-soft); }
  .page-next .pn-links { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
  .page-next a { display: inline-flex; align-items: center; gap: 8px; padding: 12px 22px; border-radius: 999px; background: #fff; color: var(--ink); font-weight: 700; text-decoration: none; border: 1.5px solid var(--line); transition: transform .2s ease, background .2s ease; }
  .page-next a.pn-main { background: var(--gold); border-color: var(--gold); color: #2B1B0E; }
  .page-next a:hover { transform: translateY(-2px); }
  nav.mainnav > a.is-page, .dropdown.is-page > .dropdown-toggle { color: var(--ink); box-shadow: inset 0 -3px 0 var(--gold); }
  /* ---------- Qui sommes-nous : photo en filigrane ---------- */
  .qsn { position: relative; }
  .qsn-text { position: relative; z-index: 1; }
  .qsn-wm { position: absolute; top: -10px; right: 0; width: 52%; height: calc(100% + 20px); object-fit: cover; object-position: center 45%; opacity: .32; filter: saturate(.75) sepia(.15); border-radius: 22px; pointer-events: none; -webkit-mask-image: linear-gradient(to left, #000 55%, transparent 100%); mask-image: linear-gradient(to left, #000 55%, transparent 100%); }
  @media (max-width: 900px) {
    .qsn-wm { position: static; display: block; width: 100%; height: 220px; margin-bottom: -60px; opacity: .4; -webkit-mask-image: linear-gradient(to bottom, #000 40%, transparent 100%); mask-image: linear-gradient(to bottom, #000 40%, transparent 100%); }
  }
  /* ---------- Lire la suite ---------- */
  .rm-more { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows .4s ease, opacity .35s ease; }
  .rm-more > * { overflow: hidden; min-height: 0; }
  .rm-more.open { grid-template-rows: 1fr; opacity: 1; }
  .rm-inline { display: none; }
  .rm-scope.is-open .rm-inline { display: inline; animation: rm-fade .4s ease; }
  .rm-scope.is-open .rm-ell { display: none; }
  @keyframes rm-fade { from { opacity: 0; } to { opacity: 1; } }
  .umami-body .rm-btn { margin-top: 4px; }
  .rm-scope .rm-btn, .sc-body .rm-btn { margin-bottom: 10px; margin-top: 6px; }
  .rm-btn { align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; margin-top: 2px; padding: 8px 16px; border-radius: 999px; border: 1.5px solid currentColor; background: transparent; color: var(--ink); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; transition: background .2s ease, color .2s ease; }
  .rm-btn:hover, .rm-btn:focus-visible { background: var(--ink); color: #fff; outline: none; }
  .rm-ic { display: inline-block; transition: transform .3s ease; }
  .rm-btn[aria-expanded="true"] .rm-ic { transform: rotate(180deg); }
  @media (prefers-reduced-motion: reduce) { .rm-more, .rm-ic { transition: none; } }
  /* ---------- Recettes (en construction) ---------- */
  .rc-hero { display: grid; grid-template-columns: 220px 1fr; gap: 40px; align-items: center; max-width: 980px; margin: 0 auto; }
  .rc-art { display: flex; justify-content: center; }
  .rc-jar { width: 190px; height: auto; animation: rc-sway 5s ease-in-out infinite; transform-origin: 50% 100%; }
  .rc-bubbles circle { animation: rc-rise 3.2s ease-in infinite; opacity: 0; }
  .rc-bubbles circle:nth-child(2) { animation-delay: .6s; } .rc-bubbles circle:nth-child(3) { animation-delay: 1.2s; }
  .rc-bubbles circle:nth-child(4) { animation-delay: 1.8s; } .rc-bubbles circle:nth-child(5) { animation-delay: 2.3s; } .rc-bubbles circle:nth-child(6) { animation-delay: 2.8s; }
  @keyframes rc-rise { 0% { transform: translateY(0); opacity: 0; } 15% { opacity: .95; } 85% { opacity: .8; } 100% { transform: translateY(-95px); opacity: 0; } }
  @keyframes rc-sway { 0%,100% { transform: rotate(-1.5deg); } 50% { transform: rotate(1.5deg); } }
  .rc-photo { position: relative; width: 200px; border-radius: 18px; overflow: hidden; box-shadow: 0 14px 30px rgba(60,40,10,.25); transform: rotate(-3deg); animation: rc-sway 6s ease-in-out infinite; transform-origin: 50% 100%; }
  .rc-photo img { display: block; width: 100%; height: auto; }
  .rc-b { position: absolute; bottom: 18%; width: 10px; height: 10px; border-radius: 50%; background: rgba(255,255,255,.85); border: 1.5px solid #E3B92F; opacity: 0; animation: rc-rise 3.4s ease-in infinite; }
  .rc-b:nth-of-type(1) { left: 30%; } .rc-b:nth-of-type(2) { left: 48%; width: 7px; height: 7px; animation-delay: .7s; }
  .rc-b:nth-of-type(3) { left: 62%; animation-delay: 1.4s; } .rc-b:nth-of-type(4) { left: 40%; width: 6px; height: 6px; animation-delay: 2.1s; }
  .rc-b:nth-of-type(5) { left: 55%; width: 12px; height: 12px; animation-delay: 2.7s; }
  @media (prefers-reduced-motion: reduce) { .rc-photo, .rc-b { animation: none; } }
  .rc-text h2 { margin: 6px 0 14px; }
  .rc-text p { color: var(--ink-soft); font-size: 15.5px; line-height: 1.65; margin-bottom: 10px; }
  .rc-status { display: inline-flex; align-items: center; gap: 10px; margin-top: 8px; padding: 8px 16px; border-radius: 999px; background: #FBEFC4; color: #6B4E12; font-weight: 700; font-size: 14px; }
  .rc-dot { width: 10px; height: 10px; border-radius: 50%; background: #E3B92F; animation: rc-pulse 1.6s ease-in-out infinite; }
  @keyframes rc-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(227,185,47,.6); } 50% { box-shadow: 0 0 0 8px rgba(227,185,47,0); } }
  .rc-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; max-width: 1100px; margin: 0 auto 32px; }
  .rc-card { position: relative; background: #FFFBEF; border: 2px dashed #E8CF7A; border-radius: 16px; padding: 22px 18px 18px; text-align: center; transition: transform .25s ease, border-color .25s ease; }
  .rc-card:hover { transform: translateY(-4px) rotate(-.5deg); border-color: #E3B92F; }
  .rc-ic { font-size: 30px; display: block; margin-bottom: 8px; }
  .rc-card h3 { font-size: 16px; margin-bottom: 12px; }
  .rc-card p { font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; margin-bottom: 12px; }
  .rc-soon { display: inline-block; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; background: #5B3A32; color: #FFF3D6; }
  .rc-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; max-width: 1100px; margin: 0 auto; background: #E3B92F; border-radius: 18px; padding: 26px 32px; color: #3B2A10; }
  .rc-cta h3 { font-size: 20px; margin-bottom: 4px; }
  .rc-cta p { font-size: 14.5px; margin: 0; max-width: 640px; }
  .rc-cta .btn { flex-shrink: 0; }
  @media (max-width: 900px) { .rc-hero { grid-template-columns: 1fr; text-align: center; gap: 16px; } .rc-cards { grid-template-columns: 1fr 1fr; } .rc-cta { flex-direction: column; text-align: center; } }
  @media (max-width: 520px) { .rc-cards { grid-template-columns: 1fr; } }
  @media (prefers-reduced-motion: reduce) { .rc-jar, .rc-bubbles circle, .rc-dot { animation: none; } .rc-bubbles circle { opacity: .8; } }
  /* ---------- JFCV ---------- */
  .jf-head { max-width: 860px; margin: 0 auto 40px; }
  .jf-head h2 { text-align: center; margin-bottom: 22px; font-size: clamp(26px, 3.2vw, 38px); }
  .jf-head p { color: var(--ink-soft); margin-bottom: 12px; font-size: 15.5px; line-height: 1.65; }
  .jf-head a { color: inherit; text-decoration: underline; }
  .jf-welcome { font-weight: 700; color: var(--ink) !important; }
  .jf-band { background: #E3B92F; padding: 40px 0; }
  .jf-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: min(1520px, calc(100% - 48px)); margin: 0 auto; }
  .jf-card { background: #F5F4EE; padding: 40px clamp(20px, 3vw, 44px) 32px; display: flex; flex-direction: column; }
  .jf-title { text-align: center; font-size: clamp(24px, 2.3vw, 32px); font-weight: 800; margin-bottom: 20px; background: linear-gradient(90deg, #5B3A32 0%, #B8925A 45%, #5B3A32 90%); -webkit-background-clip: text; background-clip: text; color: transparent; }
  .jf-card p { font-size: 14.5px; line-height: 1.6; color: #5A4A1E; margin-bottom: 12px; }
  .jf-media { display: block; margin: auto auto 0; padding-top: 14px; }
  .jf-media img { display: block; max-width: 100%; width: 300px; border-radius: 6px; }
  .jf-videos { margin-top: 36px; }
  .jf-videos h3 { font-size: 15px; font-weight: 700; margin-bottom: 12px; }
  .jf-vgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
  .jf-logo img { width: 130px; }
  a.jf-media img, .jf-vimg img { transition: transform .35s cubic-bezier(.2,.8,.3,1.2), box-shadow .35s ease; }
  a.jf-media:hover img, a.jf-media:focus-visible img { transform: translateY(-6px) scale(1.06) rotate(-1.5deg); box-shadow: 0 14px 28px rgba(60,40,10,.28); }
  a.jf-logo:hover img { animation: jf-wiggle .6s ease; }
  @keyframes jf-wiggle { 0%{transform:rotate(0)} 25%{transform:translateY(-6px) scale(1.06) rotate(-4deg)} 60%{transform:translateY(-6px) scale(1.06) rotate(3deg)} 100%{transform:translateY(-6px) scale(1.06) rotate(-1.5deg)} }
  .jf-v { display: block; color: inherit; text-decoration: none; }
  .jf-vimg { display: block; border-radius: 8px; overflow: hidden; }
  .jf-vimg img { width: 100%; aspect-ratio: 16/9; object-fit: cover; display: block; }
  .jf-v:hover .jf-vimg img { transform: scale(1.1); }
  .jf-v:hover .jf-vimg { box-shadow: 0 10px 22px rgba(60,40,10,.25); }
  .jf-v:hover span:last-child { text-decoration: underline; }
  @media (prefers-reduced-motion: reduce) { a.jf-media img, .jf-vimg img { transition: none; } a.jf-logo:hover img { animation: none; } }
  .jf-v > span:last-child { display: block; font-size: 13.5px; font-weight: 600; margin-top: 6px; }
  @media (max-width: 900px) { .jf-cards { grid-template-columns: 1fr; } }

  .lightbox-backdrop { position: fixed; inset: 0; background: rgba(15,12,8,0.88); z-index: 400; display: flex;
    align-items: center; justify-content: center; padding: 24px; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
  .lightbox-backdrop.open { opacity: 1; pointer-events: auto; }
  .lightbox-backdrop img { max-width: 92vw; max-height: 90vh; border-radius: 10px; box-shadow: 0 20px 60px rgba(0,0,0,0.5); }
  .lightbox-close { position: absolute; top: 20px; right: 24px; width: 40px; height: 40px; border-radius: 50%;
    background: var(--cream); border: none; font-size: 20px; cursor: pointer; display: flex; align-items: center; justify-content: center; }

  .umami-focus { display: grid; grid-template-columns: 1fr; gap: 40px; align-items: start; }
  .umami-focus-text { max-width: 860px; }
  .umami-focus-text p { color: var(--ink-soft); font-size: 14.5px; line-height: 1.65; margin-bottom: 12px; }
  .umami-stats { list-style: none; padding: 0; margin: 10px 0 0; display: flex; flex-direction: column; gap: 8px; }
  .umami-stats li { font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; padding-left: 20px; position: relative; }
  .umami-stats li::before { content: '•'; position: absolute; left: 4px; color: var(--gold); font-weight: 700; }
  .umami-focus-carousel { display: flex; flex-direction: column; gap: 22px; }
  .umami-carousel { position: relative; }
  .uc-track { display: flex; gap: 14px; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; border-radius: 14px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .uc-track::-webkit-scrollbar { display: none; }
  .uc-slide { flex: 0 0 calc((100% - 28px) / 3); aspect-ratio: 1/1; scroll-snap-align: start; background: rgba(251,246,233,0.08); border: 1.5px dashed rgba(251,246,233,0.3); border-radius: 10px;
    display: flex; align-items: center; justify-content: center; font-size: 22px; color: rgba(251,246,233,0.4); }
  .uc-slide:has(img) { border: none; background: none; }
  .uc-slide img { width: 100%; height: 100%; object-fit: cover; border-radius: 10px; display: block; }
  .uc-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 42px; height: 42px; border-radius: 50%;
    background: var(--cream); border: 1.5px solid var(--ink); display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 2; font-size: 16px; }
  .uc-nav.prev { left: -14px; } .uc-nav.next { right: -14px; }
  @media (max-width: 900px) {
    .umami-focus { grid-template-columns: 1fr; }
    .uc-slide { flex-basis: 82%; }
  }

  /* ---------- contact / footer ---------- */
  footer { background: var(--ink); color: var(--gold-pale-2); padding: 64px 0 28px; }
  .foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; }
  footer h4 { color: var(--cream); font-size: 15px; margin-bottom: 16px; }
  footer .brand { color: var(--cream); }
  .foot-logo { width: 170px; height: auto; display: block; }
  .foot-logo-link { display: inline-block; background: #fff; padding: 12px 16px; border-radius: 14px; margin-bottom: 14px; }
  footer p.tag-line { color: #C9BFA9; font-size: 14.5px; margin-top: 12px; max-width: 32ch; }
  .foot-links { display:flex; flex-direction:column; gap: 10px; font-size: 14.5px; }
  .foot-links a:hover { color: var(--cream); }
  .foot-bottom { margin-top: 54px; padding-top: 22px; border-top: 1px solid rgba(251,246,233,0.15); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size: 13px; color: #A79C85; }
  @media (max-width: 900px) { .foot-grid { grid-template-columns: 1fr 1fr; } }

  .visually-hidden { position:absolute; width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap; }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    * { transition: none !important; animation: none !important; }
  }

  /* ---------- pages séparées ---------- */
  h1.ph2 { font-size: clamp(28px, 3.4vw, 40px); }
  h1.ph3 { font-size: 24px; }
  .section.alt h1 { color: var(--cream); }
  .rc-text h1 { margin: 6px 0 14px; }
  .jf-head h1 { text-align: center; margin-bottom: 22px; font-size: clamp(26px, 3.2vw, 38px); }
  main#main > .section:first-child { padding-top: 120px; }
  .mainnav .dropdown-menu a[aria-current="page"] { font-weight: 800; color: var(--gold-deep, #C98A06); }

  /* ---------- journal des adhérent·es : carrousel ---------- */
  .rb-car { position: relative; }
  .blog-card-grid.rb-track { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: 4px 2px 6px; margin: -4px -2px 0; }
  .rb-track::-webkit-scrollbar { display: none; }
  .rb-track:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; border-radius: 14px; }
  .rb-track .blog-card { flex: 0 0 calc((100% - 40px) / 3); scroll-snap-align: start; }
  .rb-arrow { position: absolute; top: calc(50% - 22px); width: 44px; height: 44px; border-radius: 50%; border: none; background: var(--cream); color: var(--ink); font-size: 28px; line-height: 1; cursor: pointer; display: none; align-items: center; justify-content: center; box-shadow: 0 6px 18px rgba(0,0,0,.35); transition: opacity .2s, transform .2s; z-index: 2; }
  .rb-arrow span { margin-top: -3px; }
  .rb-car.is-scrollable .rb-arrow { display: flex; }
  .rb-prev { left: -18px; } .rb-next { right: -18px; }
  .rb-arrow:hover { transform: scale(1.06); }
  .rb-arrow:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
  .rb-arrow:disabled { opacity: 0; pointer-events: none; }
  .rb-dots { display: flex; justify-content: center; gap: 8px; margin-top: 16px; }
  .rb-dots span { width: 8px; height: 8px; border-radius: 50%; background: rgba(251,246,233,.3); transition: background .2s, width .2s; }
  .rb-dots span.on { background: var(--gold); width: 22px; border-radius: 4px; }
  @media (max-width: 900px) { .rb-track .blog-card { flex-basis: calc((100% - 20px) / 2); } }
  @media (max-width: 600px) { .rb-track .blog-card { flex-basis: 82%; } .rb-arrow { display: none !important; } }

  /* ---------- actualités de l'association : carrousel ---------- */
  .card-grid.asso-track { display: flex; gap: 22px; align-items: stretch; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: 4px 2px 6px; margin: -4px -2px 0; }
  .asso-track::-webkit-scrollbar { display: none; }
  .asso-track .card { flex: 0 0 calc((100% - 44px) / 3); scroll-snap-align: start; }
  .rb-light .rb-arrow { background: var(--ink); color: var(--cream); }
  .rb-dots-light span { background: rgba(28,23,16,.22); }
  .rb-dots-light span.on { background: var(--gold); }
  @media (max-width: 980px) { .asso-track .card { flex-basis: calc((100% - 22px) / 2); } }
  @media (max-width: 640px) { .asso-track .card { flex-basis: 85%; } }

  /* actualités de l'asso : pas d'espace vide, médias à hauteur raisonnable */
  .card-grid.asso-track { align-items: flex-start; }
  .asso-track .bc-photo img { width: 100%; max-height: 300px; object-fit: cover; display: block; }
  .asso-track .bc-photo video { width: 100% !important; height: 300px !important; object-fit: contain !important; background: #1C1710; display: block; }
  .season-heading.season-first { margin-top: 8px; }
  .season-heading sup { font-size: .6em; }
  .season-card .sc-media img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 180px; }
  .season-card .sc-media a { display: block; height: 100%; }
  .sc-tag { display: block; font-size: 12px; font-weight: 700; color: #8A6238; margin-top: 4px; }
  .sc-gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 14px 0 4px; max-width: 520px; }
  .sc-thumb { padding: 0; border: 1px solid rgba(28,23,16,.12); border-radius: 10px; overflow: hidden; background: #fff; cursor: zoom-in; aspect-ratio: 3/4; }
  .sc-thumb img { width: 100%; height: 100%; object-fit: contain; display: block; transition: transform .2s; }
  .sc-thumb:hover img { transform: scale(1.04); }
  .sc-thumb:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
  @media (max-width: 600px) { .sc-gallery { grid-template-columns: repeat(2, 1fr); } }
  .card-gallery { margin: 2px 0 6px; max-width: none; gap: 6px; }
