@font-face{ font-family:'Bricolage Grotesque'; font-style:normal; font-weight:400 800; font-display:swap; src:url('/assets/fonts/bricolage-grotesque-normal-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face{ font-family:'Bricolage Grotesque'; font-style:normal; font-weight:400 800; font-display:swap; src:url('/assets/fonts/bricolage-grotesque-normal-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:400 700; font-display:swap; src:url('/assets/fonts/jetbrains-mono-normal-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:400 700; font-display:swap; src:url('/assets/fonts/jetbrains-mono-normal-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face{ font-family:'Karla'; font-style:italic; font-weight:400; font-display:swap; src:url('/assets/fonts/karla-italic-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face{ font-family:'Karla'; font-style:italic; font-weight:400; font-display:swap; src:url('/assets/fonts/karla-italic-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face{ font-family:'Karla'; font-style:normal; font-weight:400 700; font-display:swap; src:url('/assets/fonts/karla-normal-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face{ font-family:'Karla'; font-style:normal; font-weight:400 700; font-display:swap; src:url('/assets/fonts/karla-normal-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root{
  --bg:#FFFFFF;
  --page-bg:#FFFFFF;
  --surface:#FAFAF8;
  --surface-2:#F1F1EE;
  --ink:#17302A;
  --ink-soft:#4B5F58;
  --ink-faint:#64706A;
  --water:#1C6F8C;
  --water-deep:#0F4A5E;
  --meadow:#3D7A4C;
  --meadow-deep:#265733;
  --wheat:#956319;
  --wheat-deep:#8C5C15;
  --line:#E3E3DF;
  --line-soft:#EEEEEA;
  --shadow: 0 1px 2px rgba(23,48,42,.06), 0 8px 24px -12px rgba(23,48,42,.16);
  --radius: 14px;
  --footer-band:#0F4A5E;
  --band:#F3F2EC;
  --nav-height: 56px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0E1A17;
    --page-bg:#0E1A17;
    --surface:#152420;
    --surface-2:#1C2D28;
    --ink:#EDE8D9;
    --ink-soft:#AFBBB2;
    --ink-faint:#7E8D85;
    --water:#57B7DA;
    --water-deep:#8CD3EC;
    --meadow:#72C481;
    --meadow-deep:#9BDBA5;
    --wheat:#E4A63F;
    --wheat-deep:#F0C077;
    --line:#2C3B35;
    --line-soft:#233029;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 28px -14px rgba(0,0,0,.55);
    --band:#0A1412;
  }
}
:root[data-theme="dark"]{
  --bg:#0E1A17;
  --page-bg:#0E1A17;
  --surface:#152420;
  --surface-2:#1C2D28;
  --ink:#EDE8D9;
  --ink-soft:#AFBBB2;
  --ink-faint:#7E8D85;
  --water:#57B7DA;
  --water-deep:#8CD3EC;
  --meadow:#72C481;
  --meadow-deep:#9BDBA5;
  --wheat:#E4A63F;
  --wheat-deep:#F0C077;
  --line:#2C3B35;
  --line-soft:#233029;
  --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 28px -14px rgba(0,0,0,.55);
  --band:#0A1412;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} *{animation-duration:.001ms !important; transition-duration:.001ms !important;} }

.reveal{ transition: opacity .6s ease, transform 1.2s ease; }
.reveal.reveal-init{ opacity:0; }
.reveal.is-visible{ opacity:1; transform:none; }

body{
  margin:0;
  background:var(--page-bg);
  color:var(--ink);
  font-family:"Karla", ui-sans-serif, system-ui, sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3{
  font-family:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;
  font-weight:700;
  color:var(--ink);
  text-wrap:balance;
  margin:0;
}
p{margin:0;}
a{color:inherit;}
img{max-width:100%;}

.eyebrow{
  font-family:"JetBrains Mono", ui-monospace, monospace;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--water-deep);
  margin:0 0 .9rem;
}
.eyebrow a{ color:inherit; text-decoration:none; }
.eyebrow a:hover{ text-decoration:underline; }

.lede{
  max-width:62ch;
  color:var(--ink-soft);
  font-size:1.06rem;
}

.wrap{
  max-width:1120px;
  margin-inline:auto;
  padding-inline: clamp(20px, 5vw, 56px);
}

/* Bandeau de la campagne du mois (cdt79_bandeau_campagne() : Octobre Rose en
   octobre, Novembre Bleu en novembre) : hors flux sticky, il défile avec la
   page et laisse le menu en haut. Les couleurs dépendent de la campagne
   (.bandeau-rose, .bandeau-bleu). */
.bandeau-campagne{ border-bottom:1px solid; }
.bandeau-campagne-inner{
  max-width:1120px;
  margin-inline:auto;
  padding: 8px clamp(20px, 5vw, 56px);
  display:flex; align-items:center; justify-content:center; gap:.6rem;
}
.bandeau-campagne svg{ flex-shrink:0; }
.bandeau-campagne p{ margin:0; font-size:.88rem; line-height:1.35; }
.bandeau-rose{ background:#FBE4EE; color:#7A1740; border-bottom-color:#F3C3D6; }
.bandeau-bleu{ background:#E3EEFA; color:#163A6B; border-bottom-color:#BBD3EE; }
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .bandeau-rose{ background:#3A1528; color:#F8CFE0; border-bottom-color:#5A2340; }
  :root:not([data-theme="light"]) .bandeau-bleu{ background:#15263F; color:#CFE0F7; border-bottom-color:#24406A; }
}
:root[data-theme="dark"] .bandeau-rose{ background:#3A1528; color:#F8CFE0; border-bottom-color:#5A2340; }
:root[data-theme="dark"] .bandeau-bleu{ background:#15263F; color:#CFE0F7; border-bottom-color:#24406A; }

.nav{
  position:sticky;
  top:0;
  z-index:40;
  backdrop-filter: blur(10px) saturate(1.1);
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  border-bottom:1px solid var(--line);
  box-shadow: var(--shadow);
  min-height: 48px;
}
.nav-inner{
  max-width:1120px;
  margin-inline:auto;
  padding: 0px clamp(20px, 5vw, 56px);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap: .6rem 1rem;
}
.nav .logo svg {
  width: 190px;
  padding-top: 5px;
}
/* Campagne du mois : symbole (ruban rose, moustache bleue) à droite du logo,
   aux dimensions données par cdt79_campagne_mois(). */
.nav .logo-campagne{ display:inline-flex; align-items:flex-end; gap:.6rem; }
.nav .logo .symbole-logo{ width:auto; height:auto; padding-top:0; flex-shrink:0; }
/* La moustache, basse et large, est centrée sur le logo plutôt que calée en bas. */
.nav .logo-bleu .symbole-logo{ align-self:center; }
/* Sur téléphone, plus petite, pour laisser le bouton du menu sur la ligne du logo. */
@media (max-width: 480px){ .nav .logo-bleu .symbole-logo{ height:20px; } }
/* Espace membre : logo monochrome, pour distinguer d'un coup d'œil l'administration du site public. */
.is-membre .nav .logo{ color:var(--water-deep); }
.is-membre .nav .logo svg .swim,
.is-membre .nav .logo svg .bike,
.is-membre .nav .logo svg .run{ fill:currentColor; }
.is-membre .nav .logo svg .bike{ stroke:currentColor; }
.wordmark{
  font-family:"Bricolage Grotesque", sans-serif;
  font-weight:800;
  font-size: clamp(.86rem, 1.6vw, 1.05rem);
  text-decoration:none;
  color:var(--ink);
  letter-spacing:-.01em;
  display:flex;
  align-items:baseline;
  gap:.4em;
  white-space:nowrap;
}
.nav-links{
  display:flex;
  gap: clamp(12px, 2.2vw, 24px);
  list-style:none;
  margin:0; padding:0;
  font-size:.92rem;
}
.nav-links a{
  text-decoration:none;
  color:var(--ink-soft);
  position:relative;
  padding:.2em 0;
}
.nav-links a:hover, .nav-links a:focus-visible{ color:var(--ink); }
.nav-links a::after{
  content:"";
  position:absolute; left:0; right:100%; bottom:-3px;
  height:2px; background:var(--water);
  transition:right .18s ease;
}
.nav-links a:hover::after, .nav-links a:focus-visible::after{ right:0; }
.nav-links a.active{ color:var(--ink); }
.nav-links a.active::after{ right:0; background:var(--wheat); }

.nav-toggle{
  display:none; background:none; border:none; padding:.4em; margin:0; cursor:pointer;
  color:var(--ink); align-items:center; justify-content:center;
}
.nav-toggle svg{ width:24px; height:24px; display:block; }

.mobile-menu{ display:none; }
.mobile-menu.is-open{ display:block; border-top:1px solid var(--line); background:var(--bg); }
.mobile-menu-links{
  list-style:none; margin:0; padding: 10px clamp(20px, 5vw, 56px) 16px;
  display:flex; flex-direction:column;
}
.mobile-menu-links a{
  display:block; padding:.65em 0; text-decoration:none; color:var(--ink-soft); font-size:.98rem;
  border-bottom:1px solid var(--line-soft);
}
.mobile-menu-links li:last-child a{ border-bottom:none; }
.mobile-menu-links a:hover, .mobile-menu-links a:focus-visible{ color:var(--ink); }
.mobile-menu-links a.active{ color:var(--ink); font-weight:700; }

a:focus-visible, button:focus-visible{
  outline:2px solid var(--water);
  outline-offset:3px;
  border-radius:4px;
}

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

.skip-link{
  position:absolute; left:1rem; top:-4rem; z-index:100;
  background:var(--water-deep); color:#fff;
  padding:.75em 1.3em; border-radius:8px;
  font-weight:700; font-size:.92rem; text-decoration:none;
  transition: top .15s ease;
}
.skip-link:focus{ top:1rem; }

.hero{
  position:relative;
  overflow:hidden;
  min-height: clamp(440px, 62vh, 640px);
  display:flex;
  align-items:flex-end;
}
.hero-photo{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center center;
  z-index:0; opacity:0; transition:opacity 1.4s ease;
}
.hero-photo.is-active{ opacity:1; }
.hero-photo-depart{ object-position:center 65%; }
.hero-photo-transition{ object-position:center 30%; }
.hero-photo-velo{ object-position:center 60%; }
.hero-photo-arrivee{ object-position:center 35%; }
.hero-overlay{
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(90deg, rgba(10,20,18,.84) 0%, rgba(10,20,18,.76) 42%, rgba(10,20,18,.48) 64%, rgba(10,20,18,.12) 90%),
    linear-gradient(180deg, rgba(10,20,18,.2) 0%, rgba(10,20,18,0) 35%, rgba(10,20,18,.5) 100%);
}
@media (max-width: 900px){
  .hero-overlay{ background: linear-gradient(180deg, rgba(10,20,18,.35) 0%, rgba(10,20,18,.55) 55%, rgba(10,20,18,.82) 100%); }
}
.hero-content{
  position:relative; z-index:2;
  padding-block: clamp(40px, 8vw, 72px) clamp(36px, 6vw, 56px);
  display:grid;
  gap: 1.6rem;
}
.hero-content .eyebrow{ color:#fff; opacity:.85; }
.hero-content h1{ color:#fff; }
.hero h1{
  font-size: clamp(2.1rem, 4.6vw, 3.4rem);
  line-height:1.08;
  letter-spacing:-.015em;
  max-width: 16ch;
}
.hero h1 em{ font-style:normal; color:#F4C263; }
/* Sur-titre placé dans le H1 (mots-clés « triathlon Deux-Sèvres » pour le
   référencement) : il garde l'apparence d'un .eyebrow, pas celle du titre. */
.hero h1 .eyebrow{
  display:block;
  font-weight:400;
  line-height:normal;
  max-width:none;
  margin-bottom:1.6rem;
}
.hero-content .lede{ color:rgba(255,255,255,.9); text-shadow: 0 1px 14px rgba(10,20,18,.45); }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:.9rem; margin-top:.4rem; }
@media (max-width: 480px){
  .hero-ctas{ flex-direction:column; align-items:stretch; }
  .hero-ctas .btn{ justify-content:center; }
}

.btn{
  display:inline-flex;
  align-items:center;
  gap:.5em;
  text-decoration:none;
  font-family:inherit;
  font-size:.96rem;
  font-weight:700;
  line-height:1.2;
  padding:.85em 1.5em;
  border-radius:999px;
  border:1px solid transparent;
  cursor:pointer;
  transition: transform .15s ease, background .15s ease, border-color .15s ease;
}
.btn:hover{ transform: translateY(-1px); }
.btn-primary{ background:var(--ink); color:var(--bg); }
.btn-primary:hover{ background:var(--water-deep); }
.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--line); }
.btn-ghost:hover{ border-color:var(--ink); }
.hero .btn-primary{ background:#fff; color:#17302A; }
.hero .btn-primary:hover{ background:#F4C263; color:#17302A; }
.hero .btn-ghost{ background:rgba(255,255,255,.1); color:#fff; border-color:rgba(255,255,255,.55); backdrop-filter:blur(3px); }
.hero .btn-ghost:hover{ border-color:#fff; background:rgba(255,255,255,.18); }

.hero-credit{
  position:absolute; z-index:2; right: clamp(16px,3vw,24px); bottom:.6rem;
  font-size:.68rem; color:rgba(255,255,255,.72);
  opacity:0; transition:opacity .6s ease;
}
.hero-credit.is-active{ opacity:1; }
.hero-credit a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }
.hero-credit a:hover{ color:#fff; }
.hero-credit .cal-arrow{
  width:10px; height:10px; color:currentColor;
  display:inline-block; vertical-align:1px; margin-left:.2rem;
}

.page-header{
  padding-block: max(0px, calc(clamp(44px, 7.5vw, 76px) - 49px)) clamp(16px, 3vw, 24px);
  display:grid;
  gap: 1.1rem;
  animation: page-header-fade .6s ease;
}
body:not(.is-membre) .page-header{
  position:relative; isolation:isolate;
  padding-block: clamp(28px, 5vw, 52px) clamp(28px, 4.5vw, 44px);
  margin-bottom: clamp(24px, 4vw, 36px);
  background:var(--band);
  box-shadow: 0 0 0 100vmax var(--band);
  clip-path: inset(0 -100vmax);
}
body:not(.is-membre) .page-header::after{
  content:""; position:absolute; z-index:-1; pointer-events:none;
  right:0; top:50%; transform: translateY(-50%);
  width: clamp(150px, 30vw, 360px); aspect-ratio: 60 / 22;
  background:var(--water); opacity:.13;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 24 60 22'%3E%3Cpath d='M30 34.3c8.6 2.8 16.1 3.5 24.7 1.7-.5.1-8.2 1.2-22.9-4.1-8.6-2.8-17-3.3-24.8 3.3.5-.3 8.3-6.2 23-.9'/%3E%3Cpath d='M28.9 28.1c5.9 1.9 11.1 2.4 17 1.2-.4.1-5.7.8-15.8-2.8-5.9-1.9-11.7-2.3-17.1 2.3.4-.3 5.8-4.3 15.9-.7'/%3E%3Cpath d='M31.9 38.4C20.8 34.8 10 34.2 0 42.6c.7-.5 10.7-8 29.6-1.2C40 44.8 49.2 45.8 59.4 44c-3.3.3-10.8-.1-27.5-5.6'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 24 60 22'%3E%3Cpath d='M30 34.3c8.6 2.8 16.1 3.5 24.7 1.7-.5.1-8.2 1.2-22.9-4.1-8.6-2.8-17-3.3-24.8 3.3.5-.3 8.3-6.2 23-.9'/%3E%3Cpath d='M28.9 28.1c5.9 1.9 11.1 2.4 17 1.2-.4.1-5.7.8-15.8-2.8-5.9-1.9-11.7-2.3-17.1 2.3.4-.3 5.8-4.3 15.9-.7'/%3E%3Cpath d='M31.9 38.4C20.8 34.8 10 34.2 0 42.6c.7-.5 10.7-8 29.6-1.2C40 44.8 49.2 45.8 59.4 44c-3.3.3-10.8-.1-27.5-5.6'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (max-width: 760px){
  body:not(.is-membre) .page-header::after{ display:none; }
}
@keyframes page-header-fade{
  from{ opacity:0; }
  to{ opacity:1; }
}
.is-membre-connecte main > .wrap > .page-header:first-child{ padding-block-start: 27px; }
.page-header h1{
  font-size: clamp(1.9rem, 4vw, 2.9rem);
  line-height:1.12;
  letter-spacing:-.01em;
  max-width: 22ch;
}
.page-header-row{ display:flex; align-items:center; justify-content:space-between; gap:1.2rem; flex-wrap:wrap; }
.page-header-row .btn{ flex-shrink:0; }

section{ padding-block: clamp(44px, 7vw, 80px); }
.section-head{ display:flex; flex-direction:column; gap:.7rem; margin-bottom: clamp(28px, 4vw, 44px); }
.section-head h2{ font-size: clamp(1.6rem, 3vw, 2.15rem); letter-spacing:-.01em; }
.rule{ border:none; border-top:1px solid var(--line); margin:0; }
.page-texte section:not(.page-header){ padding-block: clamp(24px, 3.5vw, 40px); }
.page-texte .section-head{ margin-bottom: clamp(16px, 2.5vw, 26px); }

picture{ display:contents; }
picture > source{ display:none; }

.section-photo{
  display:block; width:100%; height:auto; object-fit:cover;
  border-radius:var(--radius); background:var(--surface-2); box-shadow:var(--shadow);
}
.mission-intro{
  display:grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr);
  gap: clamp(24px,4vw,56px); align-items:center;
}
.mission-intro .section-head{ margin-bottom:0; }
.mission-photo{ aspect-ratio: 4 / 3; object-position: center 60%; }
.programs-photo{ aspect-ratio: 21 / 8; object-position: center 45%; margin-top: clamp(24px,4vw,36px); }

.key-figures{
  list-style:none; margin: clamp(28px,4.5vw,44px) 0 0; padding:0;
  display:grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: clamp(16px,2.5vw,24px);
}
.key-figure{
  display:flex; flex-direction:column; gap:.35rem;
  padding-left: 1rem; border-left: 3px solid var(--fig-color);
}
.key-figure[hidden]{ display:none; }
.key-figure-num{
  font-family:"Bricolage Grotesque", sans-serif; font-weight:800; line-height:1;
  font-size: clamp(2.2rem, 4.6vw, 3.1rem); letter-spacing:-.02em;
  color: var(--fig-color); font-variant-numeric: tabular-nums;
}
.key-figure-label{ color:var(--ink-soft); font-size:.95rem; }
.key-figure-water{ --fig-color: var(--water); }
.key-figure-meadow{ --fig-color: var(--meadow); }
.key-figure-wheat{ --fig-color: var(--wheat); }
.key-figure-ink{ --fig-color: var(--water-deep); }
.pillars{
  list-style:none; margin: clamp(24px,4vw,36px) 0 0; padding:0;
  display:grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
  background:var(--line); border:1px solid var(--line); border-radius: var(--radius); overflow:hidden;
}
.pillars li{ background:var(--surface); padding: clamp(20px,3vw,28px); display:flex; flex-direction:column; gap:.6rem; }
.pillar-icon{ width:30px; height:30px; color:var(--water-deep); }
.pillars h3{ font-size:1.05rem; }
.pillars p{ color:var(--ink-soft); font-size:.94rem; }

.discipline-tabs{
  display:grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap:.5rem;
  margin: 0 0 clamp(28px, 4vw, 44px); padding:0;
}
.discipline-tab{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.45rem;
  padding: .75rem .5rem; margin:0; cursor:pointer; font:inherit; text-align:center;
  background:var(--surface); color:var(--ink-soft);
  border:1px solid var(--line); border-radius: var(--radius);
  transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.discipline-tab:hover{ border-color: var(--water-deep); color:var(--ink); }
.discipline-tab:focus-visible{ outline:2px solid var(--water); outline-offset:2px; }
.discipline-tab[aria-selected="true"]{
  background: var(--water-deep); border-color: var(--water-deep); color: var(--surface);
}
.discipline-tab-icons{ display:flex; align-items:center; gap:.2rem; }
.discipline-tab-icons svg{ width:17px; height:17px; flex:none; }
.discipline-tab-label{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em;
  text-transform:uppercase; line-height:1.25;
}
@media (max-width: 960px){
  .discipline-tabs{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.discipline-band.is-scrub > .wrap{ position:sticky; top:var(--nav-height); }
.discipline-band.is-scrub #disciplines{ padding-block: clamp(16px, 3vh, 32px); }
.discipline-band.is-scrub .discipline-tabs{ margin-bottom: clamp(14px, 2.4vh, 24px); }
.discipline-band.is-scrub .section-head{ margin-bottom: clamp(14px, 2.4vh, 24px); }
.discipline-carousel{ overflow:hidden; }
.discipline-track{
  display:flex;
  transition: transform .6s cubic-bezier(.65,0,.35,1);
}
@media (prefers-reduced-motion: reduce){
  .discipline-track{ transition:none; }
}
.discipline-slide{ flex: 0 0 100%; min-width:0; }

.course{ display:grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items:stretch; gap: clamp(10px, 2vw, 18px); }
.course-pair{ grid-template-columns: 1fr auto 1fr; }
.leg{
  background:var(--surface); border:1px solid var(--line); border-radius: var(--radius);
  padding: clamp(20px, 2.6vw, 26px); padding-left: calc(clamp(20px, 2.6vw, 26px) + 10px);
  display:flex; flex-direction:column; gap: .9rem;
  box-shadow: var(--shadow); position:relative;
}
.leg::before{
  content:""; position:absolute; left:0; top: var(--bar-top, 22px); bottom: var(--bar-top, 22px);
  width:3px; border-radius:3px; background: var(--leg-color);
}
.leg-swim{ --leg-color: var(--water); }
.leg-bike{ --leg-color: var(--meadow); }
.leg-run{ --leg-color: var(--wheat); }
.leg-icon{ width:34px; height:34px; color: var(--leg-color); }
/* Étape d'un parcours : simple libellé, pas un titre (h3) — la trentaine
   d'étapes répétées (« Natation », « Vélo »…) brouillait le plan de la page
   pour les moteurs de recherche. Même apparence que les titres. */
.leg-title{
  font-family:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;
  font-weight:700;
  font-size:1.18rem;
  color:var(--ink);
  text-wrap:balance;
}
.leg .leg-desc{ color:var(--ink-soft); font-size:.93rem; }

.formats{
  margin: .3rem 0 0; padding-top:.8rem; border-top:1px dashed var(--line);
  display:grid; grid-template-columns: repeat(3, 1fr); gap: .7rem 1rem;
}
.formats div{ display:flex; flex-direction:column; gap:.15rem; }
.formats dt{ font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.08em; color: var(--leg-color); font-weight:700; }
.formats dd{ margin:0; font-family:"JetBrains Mono", monospace; font-variant-numeric: tabular-nums; font-size:.85rem; color:var(--ink); }

.transition{ align-self:center; display:flex; flex-direction:column; align-items:center; gap:.35rem; color:var(--ink-faint); }
.transition .t-label{
  font-family:"JetBrains Mono", monospace; font-size:.7rem; letter-spacing:.1em;
  background:var(--surface-2); border:1px solid var(--line); padding:.3em .55em; border-radius:999px; color:var(--ink-soft);
}

html.js-course-anim #disciplines .course > .leg{
  opacity:0; transform:translateY(14px);
  transition: opacity .5s ease, transform .5s ease;
}
html.js-course-anim #disciplines .course > .leg.is-visible{ opacity:1; transform:none; }

html.js-course-anim #disciplines .course > .transition{
  opacity:0; transform:scale(.4) rotate(-120deg);
  transition: opacity .5s ease, transform .55s cubic-bezier(.34,1.56,.64,1);
}
html.js-course-anim #disciplines .course > .transition.is-visible{ opacity:1; transform:scale(1) rotate(0deg); }
.transition svg{ width:20px; height:20px; }

.reseau-body{
  display:grid; grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr);
  grid-template-areas: "intro figure" "clubs figure";
  grid-template-rows: auto 1fr;
  column-gap: clamp(28px, 4vw, 48px); row-gap: 1.4rem; align-items:start;
}
.reseau-intro{ grid-area:intro; margin:0; }
.clubs-list{ grid-area:clubs; display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap:.9rem; }
.club-card{
  display:flex; flex-direction:column; gap:.75rem;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding: clamp(14px,1.8vw,18px);
  scroll-margin-top: 90px;
  transition: border-color .15s ease, background .15s ease;
}
.club-card:hover, .club-card:focus-within, .club-card.is-active{ border-color:var(--water); background:var(--surface-2); }
.club-card-head{ display:flex; align-items:center; gap:.85rem; }
.club-logo-wrap{ position:relative; flex:none; }
.club-logo{
  width:60px; height:60px; display:block; border-radius:10px;
  object-fit:contain; background:#fff; border:1px solid var(--line-soft); padding:6px;
}
.club-num{
  position:absolute; top:-7px; left:-7px;
  width:22px; height:22px; border-radius:50%;
  display:grid; place-items:center;
  font-family:"JetBrains Mono", monospace; font-size:.74rem; font-weight:700;
  background:var(--water-deep); color:var(--surface); border:2px solid var(--surface);
}
.club-name{ font-weight:700; font-size:1rem; line-height:1.25; color:var(--ink); margin:0; }
.club-town{
  display:block; margin-top:.2rem;
  font-family:"JetBrains Mono", monospace; font-size:.74rem; letter-spacing:.03em;
  color:var(--ink-faint);
}
.club-address{
  display:flex; gap:.45em; align-items:flex-start; margin:0;
  font-size:.84rem; line-height:1.4; color:var(--ink-soft);
}
.club-address svg{ width:15px; height:15px; flex:none; margin-top:.15em; color:var(--ink-faint); }
.club-icon-link{
  flex:none; width:32px; height:32px; border-radius:50%;
  display:grid; place-items:center;
  color:var(--water-deep); border:1px solid var(--line);
  transition: background .15s ease, border-color .15s ease;
}
.club-icon-link:hover, .club-icon-link:focus-visible{ background:var(--surface); border-color:var(--water); }
.club-icon-link svg{ width:17px; height:17px; }
.club-links{ display:flex; justify-content:flex-end; align-items:center; gap:.5rem; margin-top:auto; }
.club-link{ color:var(--water-deep); text-decoration:none; font-weight:600; font-size:.84rem; }
.club-link:hover{ text-decoration:underline; text-underline-offset:2px; }
.club-link .cal-arrow{
  width:14px; height:14px; color:currentColor;
  display:inline-block; vertical-align:-2px; margin-left:.3rem;
}
.licence-callout{
  padding: clamp(14px,1.8vw,18px);
  border-radius:var(--radius); border:1px solid color-mix(in srgb, var(--meadow) 35%, var(--line));
  background: color-mix(in srgb, var(--meadow) 8%, var(--surface));
  display:flex; flex-direction:column; gap:.5rem; align-items:flex-start;
}
.licence-callout h3{ font-size:1rem; }
.licence-callout p{ color:var(--ink-soft); font-size:.86rem; line-height:1.45; }
.licence-callout-note{ margin-top:auto; padding-top:.5rem; border-top:1px solid color-mix(in srgb, var(--meadow) 25%, var(--line)); width:100%; }
.licence-callout-note a{ color:var(--meadow-deep); font-weight:600; }
.reseau-figure{
  grid-area:figure; position:sticky; top:calc(var(--nav-height) + 20px);
  border:1px solid var(--line); border-radius: var(--radius); padding: clamp(16px,2vw,22px); background:var(--surface);
}
.reseau-figure .num{ font-family:"JetBrains Mono", monospace; font-weight:700; font-size:1.9rem; color:var(--meadow-deep); display:block; }
.reseau-figure .num-label{ color:var(--ink-soft); font-size:.86rem; display:block; margin-bottom:.6rem; }
.dept-map-figure{ margin:0; }
.dept-map{ width:100%; height:auto; display:block; overflow:visible; }
.dept-map-boundary{ fill:var(--surface-2); stroke:var(--line-soft); stroke-width:1.5; stroke-linejoin:round; }
.club-marker{ cursor:pointer; outline:none; }
.club-dot{ fill:var(--water-deep); stroke:var(--surface); stroke-width:2.5; transition: fill .15s ease; }
.club-marker.is-active .club-dot, .club-marker:hover .club-dot{ fill:var(--water); }
.club-marker:focus-visible .club-dot{ stroke:var(--wheat); stroke-width:3.5; }
.club-dot-num{ font-family:"JetBrains Mono", monospace; font-size:15px; font-weight:700; fill:var(--surface); pointer-events:none; }
.club-pulse{
  fill:var(--water-deep); opacity:0; pointer-events:none;
  transform-box:fill-box; transform-origin:50% 50%;
}
.club-pulse.is-active{ animation: club-sonar 1.8s ease-out infinite; }
@keyframes club-sonar{
  0%{ transform:scale(1); opacity:.5; }
  100%{ transform:scale(2.8); opacity:0; }
}
@media (prefers-reduced-motion: reduce){ .club-pulse.is-active{ animation:none; } }
.town-dot-empty{ fill:var(--surface); stroke:var(--ink-faint); stroke-width:1.5; }
.club-label-town{ font-family:"Karla", sans-serif; font-size:17.5px; font-weight:700; fill:var(--ink); }
.town-label-empty{ font-family:"Karla", sans-serif; font-size:15px; fill:var(--ink-faint); }
.dept-map-figure figcaption{ margin-top:.6rem; font-size:.82rem; color:var(--ink-soft); text-align:center; }
.club-logo-vide{ display:grid; place-items:center; color:var(--ink-faint); background:var(--surface-2); }
.club-logo-vide svg{ width:28px; height:28px; }
.club-logo-vide[hidden], .club-logo[hidden]{ display:none; }

/* Espace membre : liste et formulaire des clubs */
.membre-club-item .club-logo{ width:48px; height:48px; padding:4px; }
.club-logo-champ{ display:flex; align-items:flex-start; gap:1rem; }
.club-logo-actions{ display:flex; flex-direction:column; gap:.45rem; min-width:0; flex:1; }
.form-row .club-logo-actions input[type="file"]{ background:none; border:0; padding:0; width:100%; max-width:100%; }
.form-row .club-logo-actions input[type="file"]{ font-size:.88rem; color:var(--ink-soft); }
.form-row .club-logo-actions input[type="file"]::file-selector-button{
  font-family:"Karla", sans-serif; font-size:.88rem; font-weight:600; color:var(--ink);
  background:var(--surface); border:1px solid var(--line); border-radius:999px;
  padding:.45em 1em; margin-right:.75em; cursor:pointer;
  transition: background .15s ease, border-color .15s ease;
}
.form-row .club-logo-actions input[type="file"]::file-selector-button:hover{ background:var(--surface-2); border-color:var(--water); }
.form-row .club-logo-retirer{
  display:inline-flex; align-items:center; gap:.45rem;
  font-family:"Karla", sans-serif; font-size:.92rem; letter-spacing:0; text-transform:none; color:var(--ink);
}
.club-carte-champ{ border:0; margin:0; padding:0; min-width:0; }
.club-carte-champ legend{
  padding:0; margin-bottom:.4rem;
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft);
}
.club-carte-edition{ display:grid; grid-template-columns: minmax(0, 440px) minmax(0, 1fr); gap: 1.2rem 1.6rem; align-items:start; }
.club-carte-zone{ border:1px solid var(--line); border-radius:var(--radius); background:var(--page-bg); padding: clamp(12px,1.6vw,16px) clamp(28px,4vw,44px); }
.club-carte-reglages{ display:flex; flex-direction:column; gap:1rem; }
.club-carte-reglages .etiquettes-aide{ font-size:.88rem; color:var(--ink-soft); }
.club-carte-coordonnees{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.dept-map-edition{ cursor:crosshair; touch-action:none; user-select:none; -webkit-user-select:none; }
.dept-map-edition.is-glisse{ cursor:grabbing; }
.dept-map-edition .club-marker{ cursor:inherit; }
.dept-map-edition .club-marker-autre{ opacity:.4; }
.dept-map-edition .club-marker-autre .club-dot{ fill:var(--ink-faint); }
.dept-map-edition #carte-club-edite{ cursor:grab; }
.dept-map-edition #carte-club-edite.is-hors-carte .club-dot{ fill:#b3261e; }

.programs{
  display:grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: clamp(14px,2vw,20px);
  margin-top: clamp(24px,4vw,36px);
}
.program{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow); position:relative;
  padding: clamp(22px,3vw,30px);
  display:flex; flex-direction:column; gap: 1.1rem;
  color:inherit; text-decoration:none; transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.program::before{
  content:""; position:absolute; top:-1px; left: clamp(22px,3vw,30px);
  width:44px; height:3px; border-radius:0 0 3px 3px; background: var(--prog-color);
}
.program:hover, .program:focus-visible{ background:var(--surface-2); border-color: var(--prog-color); transform: translateY(-2px); }
.program-icon{
  width:52px; height:52px; border-radius:14px; flex:none;
  display:flex; align-items:center; justify-content:center;
  background: color-mix(in srgb, var(--prog-color) 12%, transparent); color: var(--prog-color);
}
.program-icon svg{ width:26px; height:26px; }
.program-stages{ --prog-color: var(--water); }
.program-classtri{ --prog-color: var(--meadow); }
.program-anim{ --prog-color: var(--wheat); }
.program-champ{ --prog-color: var(--water-deep); }
.program-body{ display:flex; flex-direction:column; flex:1; }
.program-body h3{ font-size:1.2rem; margin-bottom:.5rem; }
.program-body .lede{ font-size:.96rem; margin-bottom:1rem; }
.program-tags{ margin-top:auto; display:flex; gap:.5rem; flex-wrap:wrap; }
.program-tags span{
  font-family:"JetBrains Mono", monospace; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase;
  padding:.4em .75em; border-radius:999px; border:1px solid var(--line); color:var(--ink-soft);
}

.cta-band{
  margin-top: clamp(32px,4.5vw,44px);
  border:1px solid var(--line); border-radius:var(--radius); background:var(--surface);
  padding: clamp(22px,3.2vw,30px);
  display:flex; align-items:center; justify-content:space-between; gap:1.4rem; flex-wrap:wrap;
}
.cta-band p{ color:var(--ink-soft); max-width:46ch; }
.cta-band h3{ font-size:1.1rem; margin-bottom:.35rem; }

.band-tint{ background:var(--band); border-block:1px solid var(--line-soft); }
.band-dark{ background:var(--footer-band); color:#fff; }
.cta-band-dark{
  margin:0; border:none; border-radius:0; background:none;
  padding-block: clamp(40px,6vw,64px); padding-inline:0;
}
.cta-band-dark h2{ font-size: clamp(1.4rem, 2.6vw, 1.9rem); letter-spacing:-.01em; margin-bottom:.5rem; color:#fff; }
.cta-band-dark p{ color:rgba(255,255,255,.8); max-width:52ch; }
.band-dark .btn-primary{ background:#fff; color:#17302A; }
.band-dark .btn-primary:hover{ background:#F4C263; color:#17302A; }

.cal-list{
  display:flex; flex-direction:column; gap:1px; background:var(--line);
  border:1px solid var(--line); border-radius: var(--radius); overflow:hidden;
  margin-top: clamp(20px,3vw,28px);
}
.cal-item{
  background:var(--surface); padding: clamp(18px,2.4vw,22px) clamp(20px,2.8vw,26px);
  display:grid; grid-template-columns: 96px 1fr auto; gap: 1.2rem; align-items:center;
  text-decoration:none; color:inherit; transition: background .15s ease;
}
.cal-item:hover, .cal-item:focus-visible{ background:var(--surface-2); }
.cal-empty{
  margin:0; background:var(--surface); color:var(--ink-faint);
  padding: clamp(18px,2.4vw,22px) clamp(20px,2.8vw,26px);
}
.cal-date{
  font-family:"JetBrains Mono", monospace; color:var(--water-deep);
  display:flex; flex-direction:column; gap:.1rem; line-height:1.25;
}
.cal-date .day{ font-size:1.3rem; font-weight:700; color:var(--ink); font-variant-numeric: tabular-nums; }
.cal-date .month{ font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.cal-date .year{ font-size:.72rem; letter-spacing:.05em; color:var(--ink-faint); }
.cal-main h3{ font-size:1.04rem; margin-bottom:.25rem; }
.cal-main p{ color:var(--ink-soft); font-size:.87rem; }
.cal-badge{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.06em; text-transform:uppercase;
  padding:.4em .7em; border-radius:999px; border:1px solid var(--line); color:var(--ink-soft);
  white-space:nowrap; height:fit-content;
}
.cal-badge-group{ display:flex; align-items:center; gap:.5rem; justify-self:end; }
.cal-distances{ display:flex; flex-wrap:wrap; gap:.3rem; margin-top:.45rem; }
.cal-distance{
  font-family:"JetBrains Mono", monospace; font-size:.66rem; font-weight:600; letter-spacing:.04em;
  padding:.2em .55em; border-radius:4px; background:var(--surface-2); color:var(--water-deep);
  border:1px solid var(--line); line-height:1.4;
}
.cal-list.archive .cal-distance{ color:var(--ink-faint); }
.evenement-info .cal-distances{ margin-top:.1rem; gap:.35rem; }
.evenement-info .cal-distance{ font-size:.8rem; padding:.25em .65em; }
.cal-type-icon{ width:18px; height:18px; flex:none; }
.cal-type-icon.cal-type-epreuve{ color:var(--water-deep); }
.cal-type-icon.cal-type-stage{ color:var(--water); }
.cal-type-icon.cal-type-classtri{ color:var(--meadow); }
.cal-type-icon.cal-type-rassemblement{ color:var(--wheat); }
.cal-type-icon.cal-type-championnat{ color:var(--ink); }
.cal-arrow{ width:18px; height:18px; color:var(--ink-faint); justify-self:end; }

#prochaines-epreuves, #autres-evenements{ scroll-margin-top: 90px; }

.cal-subhead{
  display:flex; align-items:baseline; gap:.7rem; flex-wrap:wrap;
  margin: clamp(30px,4.5vw,42px) 0 0;
}
.cal-subhead h2{ font-size:1.2rem; }
.cal-subhead span{ color:var(--ink-faint); font-size:.86rem; }
.cal-list.archive{ opacity:.72; }
.cal-list.archive .cal-badge{ color:var(--ink-faint); }
.cal-archive summary.cal-subhead{ cursor:pointer; list-style:none; }
.cal-archive summary::-webkit-details-marker{ display:none; }
.cal-archive summary::after{
  content:"Afficher +"; font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.04em;
  color:var(--water-deep); margin-left:auto; flex:none;
}
.cal-archive[open] summary::after{ content:"Masquer –"; }
.cal-archive summary:hover{ color:var(--water-deep); }
.cal-archive summary:focus-visible{ outline:2px solid var(--water); outline-offset:3px; border-radius:4px; }
.cal-filters{ display:flex; flex-wrap:wrap; gap:.5rem; margin: clamp(14px,2vw,18px) 0 clamp(20px,3vw,28px); }
.cal-filter{
  display:inline-flex; align-items:center; gap:.4rem;
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.04em; text-transform:uppercase;
  padding:.45em .85em; border-radius:999px; border:1px solid var(--line); color:var(--ink-soft);
  text-decoration:none; background:var(--surface); transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.cal-filter .cal-type-icon{ width:14px; height:14px; }
.cal-search{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:.8rem; margin: clamp(14px,2vw,18px) 0 0; }
.cal-search .form-row{ margin:0; }
.cal-search-q{ flex:1 1 220px; max-width:360px; }
.cal-search-annee{ flex:0 0 auto; }
.cal-search .btn{ height:2.6rem; padding-top:0; padding-bottom:0; }
.cal-search + .membre-cal-list{ margin-top: clamp(20px,3vw,28px); }
.cal-resultats{ margin:-8px 0 clamp(14px,2vw,20px); font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-soft); }
.cal-filter:hover{ border-color:var(--water); color:var(--ink); }
.cal-filter.active{ background:var(--water-deep); border-color:var(--water-deep); color:#fff; }
.cal-filter.active .cal-type-icon{ color:#fff; }

.source-note{
  margin-top: clamp(26px,4vw,36px);
  padding: clamp(16px,2.2vw,20px) clamp(18px,2.6vw,24px);
  border:1px dashed var(--line); border-radius: var(--radius);
  display:flex; gap:.9rem; align-items:flex-start;
  color:var(--ink-soft); font-size:.88rem; background:var(--surface);
}
.source-note svg{ width:18px; height:18px; flex:none; margin-top:.15em; color:var(--water-deep); }
.source-note a{ color:var(--water-deep); text-decoration:underline; text-underline-offset:2px; }
.source-note a .cal-arrow{
  width:14px; height:14px; color:currentColor;
  display:inline-block; vertical-align:-2px; margin-left:.25rem; margin-top:0;
}

.contact-form{
  display:grid; grid-template-columns: 1fr 1fr; gap: 1.1rem 1.2rem;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding: clamp(22px,3.2vw,32px); margin-top: clamp(8px,1.5vw,12px);
}
.form-row{ display:flex; flex-direction:column; gap:.4rem; }
.form-row[hidden]{ display:none; }
.form-row-full{ grid-column: 1 / -1; }
.form-row label{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft);
}
.form-row input, .form-row select, .form-row textarea{
  font-family:"Karla", sans-serif; font-size:.95rem; color:var(--ink);
  background:var(--page-bg); border:1px solid var(--line); border-radius:8px;
  padding:.65em .8em; resize:vertical;
}
/* Flèche dessinée plutôt que native : Safari ignore sinon le fond, la
   bordure arrondie et les marges intérieures d'un <select>. */
.form-row select{
  -webkit-appearance:none; appearance:none; padding-right:2.1em;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--ink-soft) 50%),
    linear-gradient(135deg, var(--ink-soft) 50%, transparent 50%);
  background-position: calc(100% - 17px) 55%, calc(100% - 12px) 55%;
  background-size:5px 5px; background-repeat:no-repeat;
}
.form-row input:focus, .form-row select:focus, .form-row textarea:focus{
  outline:2px solid var(--water); outline-offset:1px; border-color:var(--water);
}
.contact-form button{ grid-column: 1 / -1; width:fit-content; }

.etiquettes{
  position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:.4rem;
  background:var(--page-bg); border:1px solid var(--line); border-radius:8px;
  padding:.4em .5em; cursor:text;
}
.etiquettes:focus-within{ outline:2px solid var(--water); outline-offset:1px; border-color:var(--water); }
.etiquettes-liste{ display:contents; list-style:none; margin:0; padding:0; }
.etiquette{
  display:inline-flex; align-items:center; gap:.35rem;
  font-family:"JetBrains Mono", monospace; font-size:.78rem; font-weight:600; color:var(--water-deep);
  background:var(--surface-2); border:1px solid var(--line); border-radius:6px;
  padding:.2em .25em .2em .6em; cursor:default;
}
.etiquette small{
  font-weight:400; font-size:.66rem; letter-spacing:.04em; text-transform:uppercase;
  color:var(--ink-soft); border-left:1px solid var(--line); padding-left:.35rem;
}
.etiquette-nouvelle{ border-style:dashed; border-color:var(--water); }
.contact-form .etiquette-retirer{
  grid-column:auto; width:1.4rem; height:1.4rem; display:inline-grid; place-items:center;
  border:0; border-radius:4px; background:none; color:var(--ink-soft);
  font-size:1rem; line-height:1; cursor:pointer; padding:0;
}
.contact-form .etiquette-retirer:hover, .contact-form .etiquette-retirer:focus-visible{ background:var(--line); color:var(--ink); }
.form-row .etiquettes input{
  flex:1 1 8rem; min-width:8rem; border:0; background:none; padding:.3em .3em; outline:none;
}
.form-row .etiquettes input:focus{ outline:none; }
.etiquettes-suggestions{
  position:absolute; z-index:20; left:-1px; right:-1px; top:calc(100% + 4px);
  list-style:none; margin:0; padding:.3rem; max-height:15rem; overflow-y:auto;
  background:var(--surface); border:1px solid var(--line); border-radius:8px;
  box-shadow:0 10px 24px rgba(0,0,0,.12);
}
.etiquettes-suggestions [role="option"]{
  padding:.5em .7em; border-radius:6px; cursor:pointer; font-size:.92rem; color:var(--ink);
}
.etiquettes-suggestions [role="option"]:hover,
.etiquettes-suggestions [aria-selected="true"]{ background:var(--surface-2); color:var(--water-deep); }
.etiquettes-suggestions .etiquettes-creer{ font-style:italic; color:var(--water-deep); border-top:1px dashed var(--line); margin-top:.2rem; }
.etiquettes-suggestions .etiquettes-creer:first-child{ border-top:0; margin-top:0; }
.etiquettes-aide{ font-size:.82rem; color:var(--ink-faint); margin:0; }
.verification-question{
  display:block; margin-top:.35rem;
  font-family:"Karla", sans-serif; font-size:.95rem; letter-spacing:0;
  text-transform:none; color:var(--ink);
}
.form-row-trap{
  position:absolute; left:-9999px; top:-9999px;
  width:1px; height:1px; overflow:hidden;
}
.form-actions{ grid-column: 1 / -1; display:flex; flex-wrap:wrap; gap:.8rem; align-items:center; }
.form-actions-right{ display:flex; flex-wrap:wrap; gap:.8rem; margin-left:auto; }
.form-note{ margin-top:.9rem; font-size:.82rem; color:var(--ink-faint); font-style: italic;}
.form-note a{ color:var(--water-deep); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
/* Bouton d'une action secondaire dans une note (ex. « Générer un nouveau token »,
   membre/membres.php) : même apparence qu'un lien de .form-note. */
.form-note .btn-lien{ padding:0; border:0; background:none; font:inherit; font-style:normal; color:var(--water-deep); font-weight:600; text-decoration:underline; text-underline-offset:2px; cursor:pointer; }
.checkbox-group{ display:flex; flex-direction:column; gap:.5rem; }
.checkbox-item{
  display:flex; align-items:center; gap:.55em; font-family:"Karla", sans-serif;
  font-size:.92rem; color:var(--ink); text-transform:none; letter-spacing:normal;
}
.checkbox-item input{ width:1.05em; height:1.05em; accent-color:var(--water-deep); }
.checkbox-item-danger{ color:#b3261e; }
.checkbox-item-danger input{ accent-color:#b3261e; }
.avatar-picker{ display:flex; flex-wrap:wrap; gap:.7rem; }
.avatar-picker-option{
  display:flex; flex-direction:column; align-items:center; gap:.5rem;
  width:96px; padding:.9rem .5rem; border:1px solid var(--line); border-radius:var(--radius);
  cursor:pointer; text-align:center; transition: border-color .15s ease, background .15s ease;
}
.avatar-picker-option:hover{ border-color:var(--water); background:var(--surface-2); }
.avatar-picker-option input{ position:absolute; opacity:0; width:0; height:0; }
.avatar-picker-icon{
  display:flex; align-items:center; justify-content:center;
  width:2.6em; height:2.6em; border-radius:999px;
  background:var(--surface-2);
  transition: background .15s ease, box-shadow .15s ease;
}
.avatar-picker-icon svg{ width:24px; height:24px; }
.avatar-picker-label{ font-size:.84rem; color:var(--ink-soft); }
.avatar-picker-option:has(input:checked){ border-color:var(--water-deep); background:var(--surface-2); }
.avatar-picker-option:has(input:checked) .avatar-picker-icon{ background:var(--bg); box-shadow: inset 0 0 0 2px var(--water-deep); }
.avatar-picker-option:has(input:checked) .avatar-picker-label{ color:var(--ink); font-weight:700; }
.avatar-picker-option:has(input:focus-visible){ outline:2px solid var(--water); outline-offset:2px; }
.photo-gallery{
  display:flex; flex-wrap:wrap; gap:.9rem; margin-top:.6rem;
}
.photo-card{
  position:relative; width:150px; border:1px solid var(--line); border-radius:10px;
  background:var(--surface); overflow:hidden; cursor:grab;
  transition: opacity .15s ease, box-shadow .15s ease;
}
.photo-card.is-dragging{ opacity:.4; }
.photo-card.is-new{ border-style:dashed; border-color:var(--water); }
.photo-card.is-marked-for-deletion{ opacity:.45; }
.photo-card.is-marked-for-deletion .photo-card-preview{ filter:grayscale(1); }
.photo-card.is-unused{ box-shadow: inset 0 0 0 2px var(--wheat-deep); }
.photo-card-preview{ display:block; width:100%; height:110px; object-fit:cover; background:var(--surface-2); }
.photo-card-badge{
  position:absolute; top:.4rem; left:.4rem; padding:.15em .55em; border-radius:999px;
  font-family:"JetBrains Mono", monospace; font-size:.62rem; letter-spacing:.04em; text-transform:uppercase;
  background:var(--water-deep); color:#fff;
}
.photo-card-badge-unused{
  position:absolute; top:.4rem; right:.4rem; padding:.15em .55em; border-radius:999px;
  font-family:"JetBrains Mono", monospace; font-size:.62rem; letter-spacing:.04em; text-transform:uppercase;
  background:var(--wheat-deep); color:#fff;
}
.photo-card-actions{
  display:flex; flex-wrap:wrap; align-items:center; gap:.2rem; padding:.4rem;
  border-top:1px solid var(--line); background:var(--surface-2);
}
.photo-role-btn{
  display:inline-flex; align-items:center; justify-content:center; width:1.9em; height:1.9em;
  padding:0; border:1px solid transparent; border-radius:6px; background:transparent;
  color:var(--ink-faint); cursor:pointer;
}
.photo-role-btn svg{ width:14px; height:14px; display:block; }
.photo-role-btn:hover:not(:disabled){ background:var(--surface); color:var(--ink); }
.photo-role-btn.is-active{ background:var(--water); color:var(--water-deep); border-color:var(--water-deep); }
.photo-role-btn:disabled{ opacity:.35; cursor:default; }
.photo-role-btn-danger:hover:not(:disabled){ background:#fbe9e7; color:#b3261e; }
.photo-card-sep{ width:1px; align-self:stretch; background:var(--line); margin:.1rem .1rem; }
.photo-add-tile{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.4rem;
  width:150px; height:152px; border:1px dashed var(--line); border-radius:10px;
  background:transparent; color:var(--ink-faint); cursor:pointer; font-family:"Karla", sans-serif; font-size:.8rem;
}
.photo-add-tile:hover{ border-color:var(--water-deep); color:var(--water-deep); background:var(--surface-2); }
.photo-add-tile svg{ width:20px; height:20px; }

.actu-detail-fin.is-mosaique{ --h:170px; gap:clamp(6px,1vw,10px); }
@media (max-width:520px){ .actu-detail-fin.is-mosaique{ --h:110px; } }
.actu-detail-fin.is-mosaique::after{ content:""; flex:1000000 1 0; }
.actu-detail-fin.is-mosaique.is-justifie::after{ display:none; }
.actu-detail-fin.is-mosaique .lb-trigger{
  flex:calc(var(--r) * 100) 1 calc(var(--r) * var(--h)); width:auto; max-width:none;
  aspect-ratio:var(--r); overflow:hidden;
}
.actu-detail-fin.is-mosaique .lb-trigger::after{ display:none; }
.actu-detail-fin.is-mosaique .actu-detail-image-fin{
  width:100%; height:100%; max-width:none; object-fit:cover; background:var(--surface-2);
  transition:transform .35s ease, filter .2s ease;
}
@media (hover:hover){
  .actu-detail-fin.is-mosaique .lb-trigger:hover .actu-detail-image-fin{ transform:scale(1.04); filter:brightness(1.06); }
}

.photos-fin-affichage{ min-width:0; margin:0; padding:0; border:0; display:flex; flex-direction:row; flex-wrap:wrap; gap:.7rem; }
.photos-fin-affichage legend{
  width:100%; padding:0; margin-bottom:.4rem;
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft);
}
.form-row .photos-fin-option{
  flex:1 1 240px; display:flex; align-items:center; gap:.9rem; padding:.8rem .9rem;
  border:1px solid var(--line); border-radius:var(--radius); cursor:pointer;
  font-family:"Karla", sans-serif; font-size:.88rem; line-height:1.4;
  text-transform:none; letter-spacing:normal; color:var(--ink-soft);
  transition:border-color .15s ease, background .15s ease;
}
.photos-fin-option:hover{ border-color:var(--water); background:var(--surface-2); }
.form-row .photos-fin-option input{ position:absolute; opacity:0; width:0; height:0; padding:0; border:0; }
.photos-fin-option strong{ display:block; color:var(--ink); font-size:.95rem; }
.photos-fin-option:has(input:checked){ border-color:var(--water-deep); background:var(--surface-2); box-shadow:inset 0 0 0 1px var(--water-deep); }
.photos-fin-option:has(input:focus-visible){ outline:2px solid var(--water); outline-offset:2px; }
.photos-fin-apercu{ flex:none; display:grid; gap:3px; width:64px; padding:4px; border-radius:6px; background:var(--bg); box-shadow:inset 0 0 0 1px var(--line); }
.photos-fin-apercu i{ display:block; border-radius:2px; background:var(--water); opacity:.55; }
.photos-fin-option:has(input:checked) .photos-fin-apercu i{ background:var(--water-deep); opacity:1; }
.photos-fin-apercu-grand{ grid-template-columns:1fr; }
.photos-fin-apercu-grand i{ height:18px; }
.photos-fin-apercu-miniatures{ grid-template-columns:repeat(3,1fr); }
.photos-fin-apercu-miniatures i{ aspect-ratio:1; }
.photos-fin-apercu-mosaique{ grid-template-columns:repeat(6,1fr); }
.photos-fin-apercu-mosaique i{ height:14px; }
.photos-fin-apercu-mosaique i:nth-child(1){ grid-column:span 4; }
.photos-fin-apercu-mosaique i:nth-child(2){ grid-column:span 2; }
.photos-fin-apercu-mosaique i:nth-child(3){ grid-column:span 2; }
.photos-fin-apercu-mosaique i:nth-child(4){ grid-column:span 2; }
.photos-fin-apercu-mosaique i:nth-child(5){ grid-column:span 2; }

.editor{ border:1px solid var(--line); border-radius:8px; background:var(--page-bg); overflow:hidden; }
.editor:focus-within{ outline:2px solid var(--water); outline-offset:1px; border-color:var(--water); }
.editor-toolbar{ display:flex; flex-wrap:wrap; gap:.3rem; padding:.5rem; background:var(--surface-2); border-bottom:1px solid var(--line); }
.editor-btn{
  font-family:"Karla", sans-serif; font-size:.82rem; font-weight:700; color:var(--ink-soft);
  background:var(--surface); border:1px solid var(--line); border-radius:6px;
  padding:.35em .65em; cursor:pointer; line-height:1;
}
.editor-btn:hover{ background:var(--page-bg); color:var(--ink); }
.editor-btn.is-active{ background:var(--water); color:var(--water-deep); border-color:var(--water-deep); }
.editor-btn-group{ display:flex; gap:.3rem; padding-right:.5rem; margin-right:.2rem; border-right:1px solid var(--line); }
.editor-btn-group:last-of-type{ border-right:none; margin-right:0; padding-right:0; }
.editor-btn-icon{ display:inline-flex; align-items:center; justify-content:center; width:2.1em; padding:.35em; }
.editor-btn-icon svg{ width:15px; height:15px; display:block; }
.editor-surface{
  position:relative; min-height:220px; padding:.75em .9em; font-family:"Karla", sans-serif; font-size:.95rem;
  color:var(--ink); line-height:1.6;
}
.editor-surface:focus{ outline:none; }
.editor-surface p{ margin:0 0 1em; }
.editor-surface p:last-child{ margin-bottom:0; }
.editor-surface ul, .editor-surface ol{ margin:0 0 1em; padding-left:1.4em; }
.editor-surface blockquote{ margin:0 0 1em; padding-left:1em; border-left:3px solid var(--line); color:var(--ink-faint); font-style:italic; }
.editor-surface a{ color:var(--water-deep); text-decoration:underline; }
.editor-surface.is-empty::before{
  content: attr(data-placeholder); position:absolute; top:.75em; left:.9em;
  color:var(--ink-faint); pointer-events:none;
}

.contact-layout{
  display:grid; grid-template-columns: minmax(0, 5fr) minmax(0, 3fr);
  gap: clamp(20px,3vw,32px); align-items:start;
}
.contact-layout .contact-form{ margin-top:0; }
.contact-grid{ display:grid; grid-template-columns: 1fr; gap: .9rem; }
.contact-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding: clamp(20px,2.6vw,24px); display:flex; flex-direction:column; gap:.5rem; }
.contact-card{ display:grid; grid-template-columns: 22px 1fr; column-gap:.8rem; row-gap:.35rem; }
.contact-card > *{ grid-column:2; }
.contact-card > svg{ grid-column:1; grid-row:1; align-self:center; width:22px; height:22px; color:var(--water-deep); }
.contact-card h3{ font-size:1rem; }
.contact-card a{ text-decoration:none; color:var(--ink-soft); font-size:.92rem; }
.contact-card a:hover{ color:var(--water-deep); }
.contact-card p{ color:var(--ink-soft); font-size:.92rem; }
.contact-card a.contact-card-lien{ margin-top:auto; color:var(--water-deep); font-weight:700; }
.contact-card a.contact-card-lien:hover{ text-decoration:underline; text-underline-offset:3px; }
.contact-grid.plan-grid{ grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.plan-grid .contact-card{ display:flex; flex-direction:column; gap:.4rem; }
.plan-grid .contact-card h3{ margin-bottom:.2rem; }
.contact-card-club{
  background: color-mix(in srgb, var(--meadow) 8%, var(--surface));
  border-color: color-mix(in srgb, var(--meadow) 35%, var(--line));
}
.contact-card-club > svg, .contact-card-club a.contact-card-lien{ color:var(--meadow-deep); }
.phone-link{ display:inline-flex; align-items:center; gap:.4em; }
.phone-link svg{ width:15px; height:15px; flex:none; }

.partners{ padding-block: clamp(28px, 4.5vw, 44px); text-align:center; clear: both; }
.partners-eyebrow{ text-align:center; }
.partners-row{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:center;
  gap: clamp(24px, 4vw, 48px);
  margin-top: 1.3rem;
}
.partner-logo{
  height:90px; width:auto; max-width:240px; object-fit:contain;
  filter:grayscale(1) opacity(.7); transition:filter .2s ease;
}
.partner-logo:hover{ filter:none; }

footer{ background:var(--surface); border-top:1px solid var(--line); padding-block: 28px; }
.footer-inner{ display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; font-size:.84rem; color:var(--ink-faint); }
.footer-inner .wordmark{ font-size:.9rem; }
.footer-inner a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }
.footer-inner a:hover{ color:var(--ink); }

.cookie-banner{
  position:fixed; left:0; right:0; bottom:0; z-index:60;
  background:var(--surface); border-top:1px solid var(--line); box-shadow:var(--shadow);
  padding-block: 16px;
  padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
}
.cookie-banner-inner{
  display:flex; align-items:center; justify-content:space-between; gap:1.2rem; flex-wrap:wrap;
}
.cookie-banner p{ margin:0; font-size:.86rem; color:var(--ink-soft); max-width:70ch; }
.cookie-banner a{ color:var(--water-deep); text-decoration:underline; text-underline-offset:2px; }
.cookie-banner .btn{ flex-shrink:0; }
.socials{ display:flex; align-items:center; gap:.9rem; }
.socials-label{ font-size:.84rem; color:var(--ink-faint); }
.socials a{ display:inline-flex; align-items:center; color:var(--ink-faint); text-decoration:none; }
.socials a:hover{ color:var(--water-deep); }
.socials svg{ width:18px; height:18px; display:block; }
.footer-menu{ background:var(--footer-band); }
.footer-menu-inner{
  display:flex; align-items:center; gap:1.5rem; flex-wrap:wrap;
  padding-block: clamp(28px,4vw,40px);
}
.footer-menu-wordmark{ color:#fff; font-size:.9rem; }
.footer-logo{ width:180px; height:auto; color:#fff; opacity:.85; flex-shrink:0; align-self:flex-end; }
.footer-menu-cols{
  display:flex; justify-content:center; gap: clamp(2.4rem, 6vw, 4.5rem);
  flex:1 1 auto;
}
.footer-menu-col{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.65rem; }
.footer-menu-col a{ color:rgba(255,255,255,.82); text-decoration:none; font-size:.94rem; }
.footer-menu-col a:hover{ color:#fff; text-decoration:underline; }

.actu-list{ display:flex; flex-direction:column; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom: clamp(26px,4vw,36px); }
.actu-card{
  display:grid; grid-template-columns: 140px 1fr; gap: clamp(16px,2.4vw,24px);
  background:var(--surface); padding: clamp(18px,2.4vw,24px); text-decoration:none; color:inherit;
}
.actu-card:hover, .actu-card:focus-visible{ background:var(--surface-2); }
.actu-card.is-masquee{ background: color-mix(in srgb, var(--wheat) 10%, var(--surface)); }
.actu-card.is-masquee:hover, .actu-card.is-masquee:focus-visible{ background: color-mix(in srgb, var(--wheat) 18%, var(--surface)); }
.actu-card.is-a-la-une{ background: color-mix(in srgb, var(--water) 10%, var(--surface)); }
.actu-card.is-a-la-une:hover, .actu-card.is-a-la-une:focus-visible{ background: color-mix(in srgb, var(--water) 18%, var(--surface)); }
.actu-card-image{ width:140px; height:auto; display:block; object-fit:contain; border-radius:8px; background:var(--surface-2); }
.actu-card-body{ display:flex; flex-direction:column; justify-content:center; min-width:0; }
.actu-card-body h3{ font-size:1.08rem; margin-bottom:.35rem; }
.actu-card-meta{ font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.05em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:.5rem; }
.actu-card-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:.75rem; margin-bottom:.5rem; }
.actu-card-top h3{ margin-bottom:0; flex:1 1 auto; min-width:0; overflow-wrap:anywhere; }
.actu-card-excerpt{ color:var(--ink-soft); font-size:.92rem; }
.actu-vedette{
  display:grid; grid-template-columns: minmax(0, 11fr) minmax(0, 9fr); overflow:hidden;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow); text-decoration:none; color:inherit;
  margin-bottom: clamp(18px,2.6vw,24px);
  transition: border-color .15s ease, transform .15s ease;
}
.actu-vedette:hover, .actu-vedette:focus-visible{ border-color:var(--water); transform: translateY(-2px); }
.actu-vedette.is-a-la-une{ border-color: color-mix(in srgb, var(--water) 45%, var(--line)); }
.actu-vedette-media{ position:relative; display:block; background:var(--surface-2); min-height:300px; }
.actu-vedette-media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; }
.actu-vedette-media.is-remplie img{ object-fit:cover; }
.actu-vedette-body{
  display:flex; flex-direction:column; justify-content:center; gap:.2rem; min-width:0;
  padding: clamp(22px,3.2vw,36px);
}
.actu-vedette-body h2{ font-size: clamp(1.3rem, 2.3vw, 1.7rem); line-height:1.2; letter-spacing:-.01em; margin-bottom:.5rem; }
.actu-vedette-excerpt{ color:var(--ink-soft); font-size:.97rem; line-height:1.6; }
.actu-vedette-lire{ margin-top:1rem; color:var(--water-deep); font-weight:700; font-size:.92rem; }
.actu-vedette:hover .actu-vedette-lire{ text-decoration:underline; text-underline-offset:3px; }
.actu-empty{ padding: clamp(24px,3vw,32px); text-align:center; color:var(--ink-faint); background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }

.err-visual{ max-width: 672px; margin: 0 auto clamp(20px,3vw,28px); }
.err-visual svg{ width:100%; height:auto; display:block; }
.err-back{ text-align:center; margin-bottom: clamp(32px,5vw,56px); }

.actu-grid{
  display:grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  gap: clamp(14px,2vw,20px);
}
.actu-tile{
  position:relative; display:flex; flex-direction:column; overflow:hidden;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:var(--shadow);
  transition: border-color .15s ease, transform .15s ease;
}
.actu-tile:hover, .actu-tile:focus-within{ border-color:var(--water); transform: translateY(-2px); }
.actu-tile.is-a-la-une{ border-color: color-mix(in srgb, var(--water) 45%, var(--line)); }
.actu-tile-image{
  display:block; width:100%; aspect-ratio: 16 / 10; object-fit:contain;
  background:var(--surface-2); border-bottom:1px solid var(--line-soft);
}
.actu-tile-image.is-generic{ object-fit:cover; }
.actu-tile-body{ display:flex; flex-direction:column; gap:.55rem; flex:1; padding: clamp(18px,2.4vw,22px); }
.actu-tile-meta{
  display:flex; align-items:center; gap:.6rem; flex-wrap:wrap;
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.05em; color:var(--ink-faint); text-transform:uppercase;
}
.actu-tile-body h3{ font-size:1.1rem; line-height:1.3; }
.actu-tile-body h3 a{ color:inherit; text-decoration:none; }
.actu-tile-body h3 a::after{ content:""; position:absolute; inset:0; border-radius:inherit; }
.actu-tile-body h3 a:focus-visible{ outline:none; }
.actu-tile:has(h3 a:focus-visible){ outline:2px solid var(--water-deep); outline-offset:2px; }
.actu-tile-excerpt{ color:var(--ink-soft); font-size:.92rem; }
.actu-tile-more{ margin-top:auto; padding-top:.3rem; font-size:.88rem; font-weight:700; color:var(--water-deep); }
.actu-tile:hover .actu-tile-more{ text-decoration:underline; }

.pagination{ display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-top: clamp(20px,3vw,28px); }
.pagination-link{ color:var(--water-deep); text-decoration:none; font-weight:700; font-size:.92rem; }
.pagination-link:hover{ text-decoration:underline; }
.pagination-disabled{ color:var(--ink-faint); font-weight:700; font-size:.92rem; }
.pagination-status{
  font-family:"JetBrains Mono", monospace; font-size:.78rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--ink-faint);
}

.actu-detail-image{ width:100%; max-height:420px; object-fit:cover; border-radius:var(--radius); margin-bottom: clamp(20px,3vw,28px); }
.actu-detail-body{ color:var(--ink-soft); font-size:1.02rem; line-height:1.7; margin-bottom: clamp(26px,4vw,36px); }
.actu-detail-body p{ margin:0 0 1em; }
.actu-detail-body p:last-child{ margin-bottom:0; }
.actu-detail-body ul, .actu-detail-body ol{ margin:0 0 1em; padding-left:1.4em; }
.actu-detail-body li{ margin-bottom:.3em; }
.actu-detail-body h3, .actu-detail-body h4{ color:var(--ink); margin:1.3em 0 .5em; }
.actu-detail-body blockquote{ margin:0 0 1em; padding-left:1em; border-left:3px solid var(--line); color:var(--ink-faint); font-style:italic; }
.actu-detail-body a{ color:var(--water-deep); text-decoration:underline; }
.actu-detail-body a .cal-arrow{
  width:14px; height:14px; color:currentColor;
  display:inline-block; vertical-align:-2px; margin-left:.25rem;
}
.actu-partage{
  clear: both;
  display:flex; flex-wrap:wrap; align-items:center; gap:.5rem;
  padding-top: clamp(18px,2.6vw,24px); border-top:1px solid var(--line);
  margin: clamp(26px,4vw,36px) 0 clamp(20px,3vw,28px);
}
.actu-partage-label{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--ink-faint); margin-right:.3rem;
}
.actu-partage-lien{
  font:inherit; font-size:.86rem; font-weight:700; color:var(--ink); text-decoration:none; cursor:pointer;
  background:var(--surface); border:1px solid var(--line); border-radius:999px; padding:.45em 1em;
  transition: border-color .15s ease;
}
.actu-partage-lien:hover, .actu-partage-lien:focus-visible{ border-color:var(--ink); }
.actu-voisines{
  display:grid; grid-template-columns: 1fr 1fr; gap: clamp(12px,2vw,18px);
  margin-bottom: clamp(26px,4vw,36px);
}
.actu-voisine{
  display:flex; flex-direction:column; gap:.35rem; text-decoration:none; color:inherit;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding: clamp(16px,2.2vw,20px) clamp(18px,2.6vw,24px);
  transition: border-color .15s ease;
}
.actu-voisine:hover, .actu-voisine:focus-visible{ border-color:var(--water); }
.actu-voisine.is-ancienne{ grid-column:2; text-align:right; }
.actu-voisine-sens{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--water-deep);
}
.actu-voisine-titre{ font-weight:700; line-height:1.35; }

.evenement-infos{
  display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap:1px;
  background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
  margin:0 0 clamp(20px,3vw,26px);
}
.evenement-info{ background:var(--surface); padding: clamp(16px,2.2vw,20px) clamp(18px,2.6vw,24px); }
.evenement-info dt{
  font-family:"JetBrains Mono", monospace; font-size:.7rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--water-deep); margin-bottom:.35rem;
}
.evenement-info dd{
  margin:0; color:var(--ink); font-weight:700; font-size:1.02rem;
  display:flex; flex-direction:column; align-items:flex-start; gap:.3rem;
}
.evenement-info-note{ color:var(--ink-faint); font-weight:400; font-size:.86rem; }
.evenement-info-lien{
  color:var(--water-deep); font-weight:400; font-size:.88rem;
  text-decoration:underline; text-underline-offset:3px;
}
.evenement-info-lien .cal-arrow, .evenement-actions .cal-arrow{
  width:14px; height:14px; color:currentColor; display:inline-block; vertical-align:-2px; margin-left:.25rem;
}
.evenement-actions{ display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom: clamp(26px,4vw,36px); }
.btn-icon{ width:18px; height:18px; flex:none; }
.evenement-a-venir{ margin-bottom: clamp(10px,2vw,16px); }
.evenement-a-venir .cal-subhead{ margin-top: clamp(10px,2vw,16px); }
.evenement-a-venir-tout{
  margin-left:auto; color:var(--water-deep); font-weight:700; font-size:.9rem; text-decoration:none;
}
.evenement-a-venir-tout:hover{ text-decoration:underline; text-underline-offset:3px; }
.actu-inline-image{
  max-width:45%; height:auto; border-radius:var(--radius); margin-bottom:1em;
}
.actu-inline-image.align-left{ float:left; margin-right:1.4em; }
.actu-inline-image.align-right{ float:right; margin-left:1.4em; }
.actu-detail-fin{ display:flex; flex-wrap:wrap; align-items:flex-start; gap:clamp(12px,2vw,18px); margin-top: clamp(20px,3vw,28px); }
.actu-detail-image-fin{ display:block; width:auto; max-width:100%; height:auto; border-radius:var(--radius); }
.actu-detail-fin.is-miniatures{
  --cols:4; --gap:clamp(8px,1.4vw,12px);
  justify-content:center; gap:var(--gap);
}
@media (max-width:800px){ .actu-detail-fin.is-miniatures{ --cols:3; } }
@media (max-width:520px){ .actu-detail-fin.is-miniatures{ --cols:2; } }
.actu-detail-fin.is-miniatures .lb-trigger{
  flex:0 0 calc((100% - (var(--cols) - 1) * var(--gap)) / var(--cols)); width:auto; overflow:hidden;
}
.actu-detail-fin.is-miniatures .lb-trigger::after{ display:none; }
.actu-detail-fin.is-miniatures .actu-detail-image-fin{
  width:100%; aspect-ratio:4/3; object-fit:cover; background:var(--surface-2);
  transition:transform .35s ease, filter .2s ease;
}
@media (hover:hover){
  .actu-detail-fin.is-miniatures .lb-trigger:hover .actu-detail-image-fin{ transform:scale(1.05); filter:brightness(1.06); }
}

.lb-trigger{
  position:relative; display:block; width:fit-content; max-width:100%; margin:0; padding:0;
  border:0; background:none; font:inherit; color:inherit; cursor:default;
  border-radius:var(--radius);
}
.lb-trigger img{ display:block; }
html.lb-pret .lb-trigger{ cursor:zoom-in; }
.lb-trigger::after{
  content:none; position:absolute; right:12px; bottom:12px;
  padding:.4em .8em .4em 2em; border-radius:999px;
  background:rgba(14,26,23,.72) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7'/%3E%3C/svg%3E") no-repeat .65em center / 1em;
  color:#fff; font-size:.78rem; font-weight:700; letter-spacing:.02em;
  opacity:0; transform:translateY(4px); transition:opacity .15s, transform .15s;
  pointer-events:none;
}
html.lb-pret .lb-trigger::after{ content:"Agrandir"; }
.lb-trigger:hover::after, .lb-trigger:focus-visible::after{ opacity:1; transform:none; }
.lb-trigger:focus-visible{ outline:3px solid var(--water); outline-offset:3px; }
@media (hover:none){ .lb-trigger::after{ opacity:1; transform:none; } }

.lb{
  width:100%; height:100%; max-width:none; max-height:none; margin:0; padding:0;
  border:0; background:rgba(8,14,12,.94); color:#fff; overflow:hidden;
}
.lb[open]{ display:flex; align-items:center; justify-content:center; }
.lb::backdrop{ background:rgba(8,14,12,.94); }
.lb-fig{ margin:0; display:flex; flex-direction:column; align-items:center; gap:12px; max-width:100%; }
.lb-img{
  display:block; width:auto; height:auto;
  max-width:calc(100vw - 24px); max-height:calc(100dvh - 92px);
  object-fit:contain; border-radius:6px; background:#111;
  box-shadow:0 20px 60px -20px rgba(0,0,0,.8);
}
.lb-cap{
  max-width:min(720px, calc(100vw - 32px)); text-align:center;
  font-size:.9rem; line-height:1.4; color:rgba(255,255,255,.85);
}
.lb-count{
  font-family:"JetBrains Mono", monospace; font-size:.75rem; letter-spacing:.06em;
  color:rgba(255,255,255,.6); margin-right:.6em;
}
.lb-btn{
  position:absolute; display:grid; place-items:center;
  width:46px; height:46px; padding:0; border:0; border-radius:50%;
  background:rgba(255,255,255,.12); color:#fff; font-size:0; cursor:pointer;
  transition:background .15s;
}
.lb-btn:hover{ background:rgba(255,255,255,.26); }
.lb-btn:focus-visible{ outline:3px solid #fff; outline-offset:2px; }
.lb-btn svg{ width:22px; height:22px; }
.lb-close{ top:14px; right:14px; }
.lb-prev, .lb-next{ top:50%; transform:translateY(-50%); }
.lb-prev{ left:14px; }
.lb-next{ right:14px; }
.lb[data-seul] .lb-prev, .lb[data-seul] .lb-next{ display:none; }
html.lb-ouverte{ overflow:hidden; }

@media (max-width:640px){
  .lb-prev, .lb-next{ top:auto; bottom:14px; transform:none; }
  .lb-prev{ left:14px; } .lb-next{ right:14px; }
  .lb-img{ max-height:calc(100dvh - 150px); }
}
@media (prefers-reduced-motion:no-preference){
  .lb[open] .lb-img{ animation:lb-in .18s ease-out; }
  @keyframes lb-in{ from{ opacity:0; transform:scale(.98); } }
}
.actu-video-embed{
  display:block; margin:1.4em auto; width:100%; max-width:640px;
  aspect-ratio:16/9; border:0; border-radius:var(--radius);
}

.form-narrow{ grid-template-columns: 1fr; max-width:420px; }
/* Intertitre entre deux formulaires d'une même page (ex. « Changer mon mot de
   passe », membre/profil.php). */
.form-section-title{ font-size:1.2rem; margin:clamp(32px,5vw,48px) 0 1rem; }
.membre-actu-title-link{ color:inherit; text-decoration:none; }
.membre-actu-title-link:hover{ color:var(--water-deep); text-decoration:underline; }
.membre-actu-actions{ display:flex; align-items:center; gap:.35rem; flex:none; font-size:.72rem; height:1.6em; }
.membre-actu-actions a, .membre-actu-actions button{
  display:inline-flex; align-items:center; justify-content:center;
  width:1.6em; height:1.6em; padding:0; margin:0; border:none; border-radius:5px;
  background:none; color:var(--ink-faint); cursor:pointer; text-decoration:none;
  transition: background .15s ease, color .15s ease;
}
.membre-actu-actions a svg, .membre-actu-actions button svg{ width:14px; height:14px; display:block; }
.membre-actu-actions a:hover, .membre-actu-actions button:hover{ background:var(--surface-2); color:var(--water-deep); }
.membre-actu-actions form{ display:contents; }
.membre-actu-actions button:disabled{ color:var(--ink-faint); cursor:not-allowed; opacity:.5; }
.membre-actu-actions button:disabled:hover{ background:none; color:var(--ink-faint); }
.membre-actu-actions button.membre-actu-danger{ color:#b3261e; }
.membre-actu-actions button.membre-actu-danger:hover{ background:var(--surface-2); color:#b3261e; }
.membre-actu-actions button.membre-actu-danger:disabled{
  color:var(--ink-faint); cursor:not-allowed; opacity:.5;
}
.membre-actu-actions button.membre-actu-danger:disabled:hover{ background:none; color:var(--ink-faint); }
.actu-badge-masquee{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--wheat-deep); background:var(--surface-2); border:1px solid var(--line); border-radius:999px;
  padding:.15em .6em; margin-left:.5em; vertical-align:middle;
}
.demande-badge-a-traiter{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--water-deep); background:var(--surface-2); border:1px solid var(--water); border-radius:999px;
  padding:.15em .6em; margin-left:.5em;
}
.demande-badge-repondue{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--meadow-deep); background:var(--surface-2); border:1px solid var(--meadow-deep); border-radius:999px;
  padding:.15em .6em; margin-left:.5em;
}
.demande-badge-sans-reponse{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--ink-soft); background:var(--surface-2); border:1px solid var(--line); border-radius:999px;
  padding:.15em .6em; margin-left:.5em;
}
.demande-reponse{ border-left:3px solid var(--meadow-deep); padding-left:1rem; margin:1rem 0; }
.demande-origine{
  border-left-color:var(--water-deep); background:color-mix(in srgb, var(--water) 10%, var(--surface));
  border-radius:0 8px 8px 0; padding:.9rem 1.1rem; margin-top:0;
}
.demande-origine .demande-reponse-meta a{ color:var(--water-deep); text-transform:none; letter-spacing:0; }
.demande-origine .actu-detail-body{ color:var(--ink); }
.demande-reponse .actu-detail-body{ margin-bottom:0; }
.demande-reponse-meta{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-soft); margin-bottom:.4rem;
}
.actu-badge-a-la-une{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--water-deep); background:var(--surface-2); border:1px solid var(--water); border-radius:999px;
  padding:.15em .6em; margin-left:.5em; vertical-align:middle;
}
.actu-badge-programmee{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--meadow-deep); background:var(--surface-2); border:1px solid var(--meadow); border-radius:999px;
  padding:.15em .6em; margin-left:.5em; vertical-align:middle;
  display:inline-flex; align-items:center; gap:.3em;
}
.actu-badge-programmee svg{ width:12px; height:12px; flex-shrink:0; }
.membre-badge-role{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  border:1px solid var(--line); border-radius:999px; padding:.15em .6em; margin-left:.5em;
  color:var(--ink-soft); background:var(--surface-2);
}
.membre-badge-role-administrateur{ color:var(--water-deep); border-color:var(--water); }
.membre-badge-role-gestionnaire{ color:var(--wheat-deep); border-color:var(--wheat-deep); }
.form-alert{
  background:var(--surface-2); border:1px solid var(--line); border-left:3px solid var(--wheat-deep);
  border-radius:8px; padding:.8rem 1rem; font-size:.9rem; color:var(--ink-soft); margin-bottom:1.2rem;
}
.form-alert-success{ border-left-color:var(--meadow-deep); }
.suppr-options{ display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,320px), 1fr)); gap:clamp(14px,2vw,20px); margin-top:clamp(16px,2.5vw,24px); }
.suppr-option{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:clamp(18px,2.5vw,26px); display:flex; flex-direction:column; gap:.9rem; align-items:flex-start; }
.suppr-option h2{ font-size:1.15rem; margin:0; }
.suppr-option p{ color:var(--ink-soft); font-size:.92rem; margin:0; }
.suppr-option .contact-form{ display:flex; flex-direction:column; gap:.9rem; align-items:flex-start; width:100%; padding:0; background:none; border:0; box-shadow:none; }
.suppr-option .btn.membre-actu-danger{ color:#b3261e; border-color:#b3261e; }
.membre-nav-label{ position:relative; }
.membre-nav-badge{
  position:absolute; top:-12px; right:-15px;
  min-width:17px; height:20px; padding:0 5px; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center; line-height:1;
  background:#b3261e; color:#fff; border-radius:999px; border:2px solid var(--surface);
  font-family:"JetBrains Mono", monospace; font-size:10px; font-weight:700;
}
/* Espace membre connecté : menu poussé à droite, au plus près du profil et
   de la déconnexion ; laisse la place aux pastilles au-dessus des libellés. */
.is-membre-connecte .nav-inner > nav{ margin-left:auto; }
.is-membre-connecte .nav-links{ gap: clamp(18px, 2.6vw, 30px); }
.is-membre-connecte .mobile-menu-links .membre-nav-badge{ position:relative; top:-1px; right:auto; margin-left:.5em; vertical-align:middle; }
.nav-membre{ position:relative; display:flex; align-items:center; padding-block:4px; }
.nav-membre-avatar{
  display:inline-flex; align-items:center; padding:.15em; margin:0; border:none; border-radius:999px;
  background:none; cursor:pointer; transition: box-shadow .15s ease;
}
.nav-membre-avatar:hover, .nav-membre-avatar[aria-expanded="true"]{ box-shadow: 0 0 0 2px var(--line); }
.nav-membre-avatar.active{ box-shadow: 0 0 0 2px var(--water); }
.nav-membre .membre-avatar{ display:inline-flex; width:2.3em; height:2.3em; }
.nav-membre .membre-avatar-icon{ width:23px; height:23px; }
.nav-membre-menu{
  position:absolute; top:calc(100% + 6px); right:0; z-index:50;
  min-width:210px; padding:.35rem;
  background:var(--surface); border:1px solid var(--line); border-top:none; border-radius:0 0 var(--radius) var(--radius);
  box-shadow:var(--shadow);
}
.nav-membre-menu[hidden]{ display:none; }
.nav-membre-nom{
  margin:0 0 .35rem; padding:.55rem .75rem .65rem; border-bottom:1px solid var(--line-soft);
  font-weight:700; color:var(--ink); font-size:.92rem;
}
.nav-membre-menu form{ margin:0; }
.nav-membre-menu a, .nav-membre-menu button{
  display:block; width:100%; box-sizing:border-box; padding:.55rem .75rem; border:none; border-radius:8px;
  background:none; text-align:left; font:inherit; font-size:.9rem; color:var(--ink-soft);
  text-decoration:none; cursor:pointer;
}
.nav-membre-menu a:hover, .nav-membre-menu a:focus-visible,
.nav-membre-menu button:hover, .nav-membre-menu button:focus-visible{ background:var(--surface-2); color:var(--ink); }
.nav-membre-menu a.active{ color:var(--water-deep); font-weight:600; }
.membre-avatar{
  display:none; align-items:center; justify-content:center; flex:none;
  width:1.9em; height:1.9em; border-radius:999px;
  background:var(--surface-2);
}
.membre-avatar-icon{ width:19px; height:19px; display:block; }
.membre-avatar-icon-nageur{ color:var(--water); }
.membre-avatar-icon-cycliste{ color:var(--meadow); }
.membre-avatar-icon-coureur{ color:var(--wheat); }
.membre-avatar-static{ display:flex; width:2.4em; height:2.4em; }
.membre-avatar-static .membre-avatar-icon{ width:22px; height:22px; }
.membre-cal-list{ display:flex; flex-direction:column; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom: clamp(26px,4vw,36px); }
.membre-cal-item{
  display:flex; align-items:center; gap:1rem; flex-wrap:wrap;
  background:var(--surface); padding: .9rem clamp(18px,2.4vw,24px);
}
.membre-cal-item.is-masquee{ background: color-mix(in srgb, var(--wheat) 10%, var(--surface)); }
.membre-cal-item.is-nouvelle{ background: color-mix(in srgb, var(--water) 10%, var(--surface)); }
.membre-cal-item .cal-date{ flex:none; width:96px; }
.membre-cal-main{ flex:1 1 240px; min-width:0; }
.membre-cal-main h3{ font-size:.98rem; margin:0 0 .2rem; }
.membre-cal-main p{ color:var(--ink-soft); font-size:.84rem; margin:0; }
.membre-cal-type-group{ display:flex; align-items:center; gap:.4rem; flex:none; }
.membre-cal-type{
  font-family:"JetBrains Mono", monospace; font-size:.68rem; letter-spacing:.05em; text-transform:uppercase;
  color:var(--water-deep); background:var(--surface-2); border:1px solid var(--line); border-radius:999px;
  padding:.15em .6em; flex:none;
}
.sync-form{ margin:0; }
.club-sync-form{ margin:0 0 clamp(16px,2vw,24px); }
.club-licencies{ margin:0 0 clamp(16px,2vw,24px); }
.evenement-type{ display:inline-flex; align-items:center; gap:.4rem; }
.evenement-type .cal-type-icon{ width:16px; height:16px; }
.stats-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 1.1rem; margin-top: clamp(24px,4vw,32px); }
.stat-card{
  position:relative;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding: clamp(20px,2.6vw,24px); display:flex; flex-direction:column; gap:.3rem;
  border-top:3px solid var(--stat-color, var(--water-deep));
  color:inherit; text-decoration:none;
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.stat-card::after{
  content:"→"; position:absolute; top:clamp(16px,2.2vw,20px); right:clamp(18px,2.4vw,22px);
  font-size:1.1rem; line-height:1; color:var(--stat-color, var(--water-deep));
  opacity:0; transform:translateX(-4px); transition: opacity .18s ease, transform .18s ease;
}
.stat-card:hover, .stat-card:focus-visible{
  box-shadow:var(--shadow); transform:translateY(-2px);
  border-color: color-mix(in srgb, var(--stat-color) 45%, var(--line));
}
.stat-card:hover::after, .stat-card:focus-visible::after{ opacity:1; transform:none; }
.stat-card:focus-visible{ outline:2px solid var(--water); outline-offset:2px; }
@media (prefers-reduced-motion: reduce){
  .stat-card, .stat-card::after{ transition:none; }
  .stat-card:hover, .stat-card:focus-visible{ transform:none; }
}
.stat-card .num{ font-family:"JetBrains Mono", monospace; font-weight:700; font-size:2.4rem; color:var(--stat-color, var(--water-deep)); font-variant-numeric:tabular-nums; }
.stat-card .num-label{ color:var(--ink-soft); font-size:.92rem; }
.stat-pills{ display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.35rem; }
.stat-pill{
  font-family:"JetBrains Mono", monospace; font-size:.66rem; letter-spacing:.05em; text-transform:uppercase;
  border-radius:999px; padding:.2em .65em; border:1px solid var(--pill-color, var(--line));
  color:var(--pill-color, var(--ink-soft));
  background: color-mix(in srgb, var(--pill-color, var(--ink-faint)) 9%, var(--surface));
}
.stat-pill-masquee{ --pill-color: var(--wheat-deep); }
.stat-pill-programmee, .stat-pill-a-venir{ --pill-color: var(--meadow-deep); }
.stat-pill-en-avant{ --pill-color: var(--water-deep); }
.stat-pill-non-lue{
  --pill-color: var(--water-deep);
  background:var(--water-deep); color:var(--surface); font-weight:700;
}
.stat-card-actualites{ --stat-color: var(--water-deep); }
.stat-card-evenements{ --stat-color: var(--meadow-deep); }
.stat-card-clubs{ --stat-color: var(--water); }
.stat-card-demandes{ --stat-color: var(--wheat-deep); }
.settings-panel{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  margin-top: clamp(30px,4.5vw,42px); overflow:hidden;
}
.settings-summary{
  display:flex; align-items:center; gap:.85rem; cursor:pointer; list-style:none;
  padding: clamp(16px,2.2vw,20px) clamp(20px,2.8vw,28px);
  transition: background .15s ease;
}
.settings-summary::-webkit-details-marker{ display:none; }
.settings-summary:hover{ background:var(--surface-2); }
.settings-summary:focus-visible{ outline:2px solid var(--water); outline-offset:-2px; border-radius:var(--radius); }
.settings-summary-icon{ width:22px; height:22px; flex:none; color:var(--water-deep); }
.settings-summary-text{ display:flex; align-items:baseline; gap:.7rem; flex-wrap:wrap; flex:1; min-width:0; }
.settings-summary-text h2{ font-size:1.2rem; margin:0; }
.settings-summary-text span{ color:var(--ink-faint); font-size:.86rem; }
.settings-summary-chevron{
  width:20px; height:20px; flex:none; color:var(--ink-faint);
  transition: transform .2s ease, color .15s ease;
}
.settings-summary:hover .settings-summary-chevron{ color:var(--water-deep); }
.settings-panel[open] .settings-summary-chevron{ transform:rotate(180deg); }
.settings-form{
  border-top:1px solid var(--line);
  padding: clamp(6px,1vw,10px) clamp(20px,2.8vw,28px) clamp(20px,2.8vw,28px);
}
.settings-form .form-alert{ margin:1rem 0 0; }
.settings-group{
  display:grid; grid-template-columns: minmax(0,1fr) minmax(0,340px);
  gap: .8rem clamp(28px,5vw,64px); align-items:start;
  padding: clamp(18px,2.6vw,24px) 0;
}
.settings-group + .settings-group{ border-top:1px solid var(--line-soft); }
.settings-group-intro h3{ font-size:1rem; margin:0 0 .3rem; }
.settings-group-intro p{ color:var(--ink-soft); font-size:.88rem; margin:0; max-width:48ch; }
.settings-group-fields{ display:flex; flex-direction:column; gap:.6rem; }
.settings-group-fields .form-note{ margin-top:.1rem; }
.settings-form .form-row{
  flex-direction:row; align-items:center; justify-content:space-between; gap:1rem;
}
.settings-form .form-row label{
  flex:1 1 auto; font-family:"Karla", sans-serif; font-size:.95rem; letter-spacing:normal;
  text-transform:none; color:var(--ink);
}
.settings-form .form-row input{ flex:none; width:76px; text-align:center; }
.settings-form .form-row input#licencies_nb{ width:96px; }
.settings-form .form-row select{ flex:none; width:auto; }
.settings-form .form-row input,
.settings-form .form-row select{ box-sizing:border-box; height:2.6rem; line-height:1.2; }
.settings-inline{ display:flex; align-items:center; gap:.5rem; flex:none; }
.settings-form .form-actions{
  border-top:1px solid var(--line-soft); padding-top: clamp(18px,2.6vw,24px);
}
.settings-saved{
  display:inline-flex; align-items:center; gap:.4rem; margin:0;
  color:var(--meadow-deep); font-weight:600; font-size:.9rem;
}
.settings-saved svg{ width:18px; height:18px; }
.settings-range{ margin:0 0 0 auto; font-size:.82rem; color:var(--ink-faint); font-style:italic; }

.journal-panel{ margin-top: clamp(16px,2.4vw,22px); }
.journal-body{
  border-top:1px solid var(--line);
  padding: clamp(14px,2vw,18px) clamp(20px,2.8vw,28px) clamp(20px,2.8vw,28px);
}
.journal-filtres{ display:flex; flex-wrap:wrap; gap:.4rem; }
.journal-filtres a{
  font-size:.86rem; text-decoration:none; color:var(--ink-soft);
  border:1px solid var(--line); border-radius:999px; padding:.3em .9em;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.journal-filtres a:hover{ background:var(--surface-2); color:var(--ink); }
.journal-filtres a.active{ background:var(--water-deep); border-color:var(--water-deep); color:var(--surface); }
.journal-jour{
  font-family:"JetBrains Mono", monospace; font-size:.72rem; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-faint); margin:1.4rem 0 .3rem;
}
.journal-jour::first-letter{ text-transform:uppercase; }
.journal-liste{ list-style:none; margin:0; padding:0; }
.journal-entree{
  display:grid; grid-template-columns: 3.2rem minmax(0,11rem) 7.5rem minmax(0,1fr);
  gap:.3rem 1rem; align-items:baseline;
  padding:.55rem 0; border-top:1px solid var(--line-soft); font-size:.92rem;
}
.journal-heure{ font-family:"JetBrains Mono", monospace; font-size:.8rem; color:var(--ink-faint); font-variant-numeric:tabular-nums; }
.journal-membre{ font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.journal-action .stat-pill{ white-space:nowrap; }
.journal-message{ color:var(--ink); overflow-wrap:anywhere; }
.journal-message a{ color:var(--water-deep); }
.journal-details{ color:var(--ink-soft); }
.journal-action-ajout, .journal-action-affichage, .journal-action-activation, .journal-action-reponse{ --pill-color: var(--meadow-deep); }
.journal-action-modification, .journal-action-parametres, .journal-action-synchronisation{ --pill-color: var(--water-deep); }
.journal-action-masquage, .journal-action-desactivation{ --pill-color: var(--wheat-deep); }
.journal-action-suppression{ --pill-color:#b3261e; }
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .journal-action-suppression{ --pill-color:#F2958D; }
}
:root[data-theme="dark"] .journal-action-suppression{ --pill-color:#F2958D; }
.journal-vide{ color:var(--ink-faint); margin:1.2rem 0 0; }
.journal-panel .pagination{ margin-top:1.2rem; }
.journal-note{ margin:1rem 0 0; font-size:.82rem; color:var(--ink-faint); font-style:italic; }
@media (max-width: 640px){
  .journal-entree{ grid-template-columns: auto minmax(0,1fr) auto; }
  .journal-message{ grid-column: 1 / -1; }
}

@media (max-width: 900px){
  .reseau-body{ grid-template-columns:1fr; grid-template-areas: "intro" "figure" "clubs"; grid-template-rows:auto; }
  .reseau-figure{ position:static; max-width:520px; width:100%; justify-self:center; }
}
@media (max-width: 900px){
  .nav-links{ display:none; }
  .nav-toggle{ display:inline-flex; }
  .is-membre-connecte .nav-inner > nav{ display:none; }
  .is-membre-connecte .nav-membre{ margin-left:auto; }
  .is-membre-connecte .nav-inner{ gap:.6rem .4rem; }
  .contact-layout{ grid-template-columns:1fr; }
  .contact-grid{ grid-template-columns: repeat(2, 1fr); }
  .stats-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px){
  .pillars{ grid-template-columns:1fr; }
  .mission-intro{ grid-template-columns:1fr; }
  .programs-photo{ aspect-ratio: 16 / 9; }
  .course{ grid-template-columns:1fr; }
  .transition{ flex-direction:row; justify-content:center; }
  .leg::before{ display:none; }
  .leg{ padding-left: clamp(20px, 2.6vw, 26px); }
  .discipline-tabs{
    --tabs-gutter: clamp(20px, 5vw, 56px);
    display:flex; overflow-x:auto; scrollbar-width:none;
    margin-inline: calc(-1 * var(--tabs-gutter)); padding: 3px var(--tabs-gutter);
    scroll-padding-inline: var(--tabs-gutter);
  }
  .discipline-tabs::-webkit-scrollbar{ display:none; }
  .discipline-tab{ flex:none; min-width:104px; }
  .discipline-tab-label{ white-space:nowrap; }
  .contact-grid{ grid-template-columns:1fr; }
  .stats-grid{ grid-template-columns:1fr; }
  .settings-group{ grid-template-columns:1fr; }
  .settings-range{ margin-left:0; flex-basis:100%; }
  .contact-form{ grid-template-columns:1fr; }
  .programs{ grid-template-columns:1fr; }
  .cal-item{ grid-template-columns:1fr; row-gap:.5rem; }
  .cta-band{ flex-direction:column; align-items:flex-start; }
  .actu-card{ grid-template-columns:1fr; }
  .actu-vedette{ grid-template-columns:1fr; }
  .actu-voisines{ grid-template-columns:1fr; }
  .actu-voisine.is-ancienne{ grid-column:auto; }
  .actu-vedette-media{ min-height:0; aspect-ratio: 16 / 10; }
  .actu-card-image{ width:100%; height:auto; }
  .actu-inline-image{ float:none; max-width:100%; margin-left:0; margin-right:0; }
}
@media (max-width: 900px){
  .footer-menu-inner{ flex-direction:column; align-items:center; text-align:center; gap:1.6rem; }
  .footer-menu-cols{ flex-direction:column; align-items:center; gap:1.6rem; }
  .footer-logo{ align-self:center; }
}

@media (max-width: 480px){
  .clubs-list{ grid-template-columns:1fr; }
  .footer-logo{ width:140px; }
  .cal-archive summary::after{ width:100%; margin-left:0; margin-top:.2rem; }
}

@media (max-width: 760px){
  .club-carte-edition{ grid-template-columns:1fr; }
  .club-carte-zone{ max-width:420px; width:100%; justify-self:center; }
}
