/* VSGYM Élan 1.3.2 — presentation layer, derived only from 1.2.53.
 * Editor and front end share these rules. No dependency or editorial changes.
 */
:root {
  --vsg-wide:1280px;
  --vsg-gutter:clamp(1.125rem,3.5vw,3rem);
  --vsg-gap:clamp(1rem,1.8vw,1.5rem);
  --vsg-section-space:clamp(3rem,6vw,5.5rem);
  --vsg-font-body:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;
  --vsg-font-display:"Bebas Neue","Arial Narrow",Impact,sans-serif;
  --vsg-focus:#000;
}
body {font-family:var(--vsg-font-body);line-height:1.65;}
body :where(h1,h2,h3,h4) {font-family:var(--vsg-font-display);font-weight:400;line-height:1.08;}
body :where(h1,h2,h3,h4,p,li,figure,details,.wp-block-column) {min-width:0;}
body :where(main p,main li) {overflow-wrap:break-word;}
body :where(main h1,main h2,main h3) {overflow-wrap:break-word;hyphens:manual;}
body .wp-block-post-content :where(.wp-block-columns,.wp-block-group) {min-width:0;}
body :is(a,button,input,textarea,select,summary,[tabindex]):focus-visible {
  outline:2px solid #000!important;
  outline-offset:3px!important;
  box-shadow:0 0 0 5px #fff!important;
}
body :where(button,summary,select) {touch-action:manipulation;}
body .wp-block-button__link,
body .vsgym-button-link,
body .vsgym-pdf-link a {min-height:44px;max-width:100%;white-space:normal;line-height:1.35;}
body .wp-block-buttons {gap:.75rem;}
body .vsgym-btn a,
body .vsgym-btn button {display:inline-flex;align-items:center;justify-content:center;}
body .vsgym-section {padding-block:var(--vsg-section-space);}
body .vsgym-section-tight {padding-block:clamp(2.5rem,4.5vw,4rem);}
body .vsgym-lead {line-height:1.65;}
body :where(.vsgym-info-panel,.vsgym-step,.vsgym-member) {min-width:0;}
body .vsgym-quick-link strong,
body .vsgym-schedule-details summary,
body .vsgym-footer-grid h3 {font-family:var(--vsg-font-display);font-weight:400;}

/* Compact mastheads retain all words, with a consistent reading width. */
body .vsgym-page-intro {padding-block:clamp(3.25rem,6vw,5.5rem);}
body .vsgym-page-intro h1 {max-width:22ch;line-height:1.04;letter-spacing:0;}
body .vsgym-page-intro p {line-height:1.6;}

/* Existing Installations blocks use the same frame as the other club pages.
 * Override Gutenberg's automatic centring without rewriting saved blocks.
 */
body :is(.vsgym-inst-hero,.vsgym-inst-intro,.vsgym-inst-venues,.vsgym-inst-next) {
  width:100%;max-width:none;margin-block:0;
  padding-block:var(--vsg-section-space);
  padding-inline:max(var(--vsg-gutter),calc((100% - var(--vsg-wide)) / 2));
}
body :is(.vsgym-inst-hero,.vsgym-inst-intro,.vsgym-inst-venues,.vsgym-inst-next) > * {
  margin-inline:0!important;
}
body .vsgym-inst-hero {
  background:#08131a;border-bottom:0;
  padding-block:clamp(3.25rem,6vw,5.5rem);
}
body .vsgym-inst-hero::after {
  content:"";position:absolute;bottom:0;left:0;
  height:8px;width:25vw;max-width:310px;background:var(--vsg-blue);
}
body .vsgym-inst-hero .wp-block-heading {
  font-size:clamp(3.1rem,8vw,7.5rem);max-width:22ch;
  line-height:1.04;letter-spacing:0;margin:0 0 1rem;
}
body .vsgym-inst-kicker {
  font-size:.75rem;color:var(--vsg-blue-dark);margin:0 0 1rem;
}
body .vsgym-inst-hero :is(.vsgym-inst-kicker,.vsgym-inst-lead) {
  font-size:clamp(1.05rem,2vw,1.25rem);line-height:1.6;
  max-width:55ch;color:#d6e8f0!important;
}
body .vsgym-inst-hero .vsgym-inst-lead {margin-block:0;}
body :is(.vsgym-inst-intro,.vsgym-inst-venues,.vsgym-inst-next) > .wp-block-heading {
  font-size:clamp(2.1rem,4vw,3.6rem);line-height:1.08;margin:0 0 1.3rem;
}
body :is(.vsgym-inst-intro,.vsgym-inst-venues,.vsgym-inst-next) > p:not(.vsgym-inst-kicker):not(.vsgym-inst-actions) {
  line-height:1.65;margin-block:0;max-width:72ch;
}
body .vsgym-inst-venues {background:var(--vsg-surface);}
body .vsgym-inst-gallery {width:100%;max-width:none;gap:var(--vsg-gap);}
body .vsgym-inst-venues-grid {gap:var(--vsg-gap);}
body .vsgym-inst-venues-grid .vsgym-inst-venue > :not(.vsgym-inst-venue-photo) {
  margin-inline:clamp(1.25rem,2.8vw,2.4rem)!important;
  max-width:none;
}
body .vsgym-inst-venues-grid .vsgym-inst-venue h3 {font-weight:400;}
body .vsgym-inst-next {background:#08131a;}
body .vsgym-inst-actions {max-width:none;gap:.75rem;}
body .vsgym-inst-actions a {
  display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:1rem 1.4rem;
  font-size:.83rem;line-height:1.35;letter-spacing:.045em;
}

body .vsgym-hero h1 {font-weight:400;line-height:.99;letter-spacing:.005em;}
body .vsgym-hero-mark img {filter:none;}
body .vsgym-header-brand img {object-fit:contain;}
body .vsgym-header .wp-block-navigation a {line-height:1.3;}
body .vsgym-header .wp-block-navigation .vsgym-nav-cta > a[aria-current="page"] {background:#009eff;color:#000;border-color:#009eff;}
body .vsgym-header .wp-block-navigation .vsgym-nav-cta > a[aria-current="page"]:is(:hover,:focus-visible) {background:#000;color:#fff;border-color:#000;}
body .vsgym-main-nav .wp-block-navigation-submenu__toggle {min-width:44px;}
body .vsgym-main-nav .wp-block-navigation__submenu-container {max-width:min(25rem,calc(100vw - 2rem));}

/* Six fully clickable cards: independent text and illustration columns.
 * Intrinsic artwork is contained; no image masking, cropping or recolouring.
 */
body .vsgym-discipline-grid {gap:var(--vsg-gap);align-items:stretch;}
body .vsgym-discipline-grid > .vsgym-discipline-card:has(.vsgym-wilo-card-art) {
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
  grid-template-rows:auto auto minmax(170px,1fr) auto;
  gap:.65rem .75rem;
  align-content:start;
  padding:clamp(1.25rem,2.1vw,1.8rem);
  min-height:385px;
  border:1px solid #cfe2eb;
  border-top:4px solid #009eff;
  background:linear-gradient(150deg,#f4f9fc,#eaf5fb);
  box-shadow:0 5px 18px rgb(0 35 55 / .035);
  overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease,background .2s ease;
}
body .vsgym-discipline-grid > .vsgym-discipline-card:has(.vsgym-wilo-card-art)::after {display:none;}
body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > h3 {
  grid-column:1/-1;grid-row:1;align-self:start;
  margin:0!important;font-size:clamp(2rem,3vw,2.65rem);font-weight:400;line-height:1.05;
}
body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > .vsgym-discipline-fullname {
  grid-column:1/-1;grid-row:2;
  min-height:2.8em;max-width:100%;margin:0!important;
  font-size:1rem;line-height:1.4;font-weight:650;color:#24475b;
}
body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > p:not(.vsgym-kicker):not(.vsgym-discipline-fullname):not(:last-child) {
  grid-column:1;grid-row:3;align-self:center;
  max-width:100%;margin:0!important;line-height:1.6;font-size:1rem;
}
body .vsgym-discipline-card > .vsgym-wilo-card-art {
  position:relative!important;inset:auto!important;
  grid-column:2;grid-row:3;align-self:stretch;justify-self:stretch;
  width:100%;height:100%;min-height:170px;max-width:none;
  display:flex;align-items:center;justify-content:center;
  margin:0!important;pointer-events:none;z-index:1;
}
body .vsgym-discipline-card .vsgym-wilo-card-art img {
  display:block;width:100%;height:100%;max-height:215px;
  object-fit:contain;object-position:center;
  filter:none;mask-image:none;-webkit-mask-image:none;
}
body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > p:last-child {
  grid-column:1/-1;grid-row:4;align-self:end;
  max-width:100%;margin:0!important;padding-top:.65rem;
  border-top:1px solid #cbdfe9;
}
body .vsgym-discipline-card:has(.vsgym-wilo-card-art) .vsgym-discipline-card__cta {
  display:inline-flex;min-height:32px;align-items:center;padding:0;
  font-size:.95rem;line-height:1.4;white-space:normal;color:#005c88;
}
@media(hover:hover) and (pointer:fine) {
  body .vsgym-discipline-grid > .vsgym-discipline-card:has(.vsgym-wilo-card-art):hover {
    transform:translateY(-3px);box-shadow:0 12px 26px rgb(0 35 55 / .10);background:#e6f3fb;
  }
}
body .vsgym-discipline-card > .vsgym-wilo-card-art {transform:none!important;}
body .vsgym-wilo-feature__image {padding:1rem .75rem;align-self:center;}
body .vsgym-wilo-feature__image img {object-fit:contain;object-position:center;filter:none;mask-image:none;-webkit-mask-image:none;}
body .vsgym-wilo-feature--teamgym .vsgym-wilo-feature__image img {width:100%;}

/* The existing adult-practices list remains a 2-by-2 grid when it has four items. */
body.vsgym-page-adultes .vsgym-apparatus-list {grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--vsg-gap);}
body.vsgym-page-adultes .vsgym-apparatus-list li {height:auto;min-height:190px;}
body .vsgym-team-grid {gap:var(--vsg-gap);}
body .vsgym-team-grid .vsgym-member {padding:1.75rem 1.35rem;text-align:center;}
body .vsgym-team-grid .vsgym-member h3 {font-size:clamp(1.6rem,2.3vw,2rem);line-height:1.15;}
body .vsgym-member-role {line-height:1.55;}
body .vsgym-staff__members {grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));}
body .vsgym-staff__members .vsgym-staff__person {min-height:96px;gap:.6rem;}
body .vsgym-staff__members .vsgym-staff__person-info strong {font-size:.95rem!important;line-height:1.35!important;}
body .vsgym-staff__person-info span {color:#405e70;font-size:.85rem;line-height:1.45;}
body .vsgym-staff__judge-col .vsgym-staff__person-info span {color:#bce6fa;}
body .vsgym-staff__label {color:#405d6e;}

/* Documents, schedules and existing native/editor/plugin fields. */
body .wp-block-table {max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;}
body .wp-block-table table {border-collapse:collapse;}
body .wp-block-table :is(td,th) {padding:.85rem 1rem;line-height:1.5;}
body .wp-block-file {display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;}
body .wp-block-file a {overflow-wrap:anywhere;}
body .wp-block-file__button {min-height:44px;display:inline-flex;align-items:center;padding:.65rem 1rem;}
body .vsgym-schedule-details {scroll-margin-top:7rem;}
body .vsgym-schedule-details summary {min-height:56px;line-height:1.2;}
body .vsgym-pdf-link a {overflow-wrap:break-word;}
body .wp-block-post-content :where(input:not([type=checkbox]):not([type=radio]),select,textarea) {max-width:100%;font:inherit;}
body .wp-block-post-content :where(input:not([type=checkbox]):not([type=radio]),select) {min-height:44px;}
body .wp-block-post-content textarea {min-height:160px;}
body .wp-block-post-content :where(input:not([type]),input[type=text],input[type=email],input[type=tel],input[type=url],input[type=search],textarea,select) {
  width:100%;min-width:0;padding:.75rem .85rem;border:1px solid #9fb8c7;border-radius:0;background:#fff;color:#15212b;
}

/* Every original logo remains reachable. Hover alone never stops the track. */
body .vsgym-logo-strip__intro {gap:.6rem 1.5rem;}
body .vsgym-logo-strip__link:hover img {filter:none;}
body .vsgym-logo-strip__mask:focus-within {mask-image:none;-webkit-mask-image:none;overflow:visible;}
body .vsgym-logo-strip__mask:focus-within .vsgym-logo-strip__track {animation:none;transform:none;width:100%;will-change:auto;}
body .vsgym-logo-strip__mask:focus-within .vsgym-logo-strip__group {width:100%;white-space:normal;flex-wrap:wrap;justify-content:center;gap:1rem; padding:6px var(--vsg-gutter);}
body .vsgym-logo-strip__mask:focus-within .vsgym-logo-strip__group[aria-hidden=true],
body .vsgym-logo-strip__mask:focus-within .vsgym-logo-strip__item[aria-hidden=true] {display:none;}
body .vsgym-footer-grid {gap:clamp(1.5rem,3vw,3.5rem);grid-template-columns:1.5fr repeat(3,minmax(0,1fr));}
body .vsgym-footer-grid > * {min-width:0;}
body .vsgym-footer-grid h3 {font-size:1.65rem;letter-spacing:.02em;}
body .vsgym-footer-grid a:not(.vsgym-social-link) {display:inline-block;min-height:32px;padding-block:.25rem;}
body .vsgym-footer-grid li {margin:.15rem 0;}
body .vsgym-footer-grid p {max-width:29ch;line-height:1.6;}
body .vsgym-footer-base {font-size:.875rem;line-height:1.5;margin-top:2.75rem;}
body .vsgym-social-link {border-radius:0;}

@media(max-width:1180px) {
  body .vsgym-header .wp-block-navigation__responsive-container.is-menu-open {
    max-height:100vh;max-height:100dvh;overscroll-behavior:contain;
    padding-bottom:max(1.5rem,env(safe-area-inset-bottom))!important;
  }
  body .vsgym-header .wp-block-navigation__submenu-container {max-width:100%;}
}
@media(max-width:1000px) {
  body .vsgym-discipline-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:800px) {
  body .vsgym-footer-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:750px) {
  body .vsgym-inst-hero .wp-block-heading {font-size:clamp(2.15rem,7.3vw,3.75rem);}
  body .vsgym-discipline-grid {grid-template-columns:minmax(0,1fr);}
  body .vsgym-discipline-grid > .vsgym-discipline-card:has(.vsgym-wilo-card-art) {min-height:0;grid-template-rows:auto auto minmax(165px,1fr) auto;}
  body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > .vsgym-discipline-fullname {min-height:0;}
  body .vsgym-discipline-card .vsgym-wilo-card-art img {max-height:195px;}
  body .vsgym-wilo-feature__image {height:270px;padding-block:.75rem 1.25rem;}
  body.vsgym-page-adultes .vsgym-apparatus-list {grid-template-columns:minmax(0,1fr);}
  body .vsgym-staff__members {grid-template-columns:repeat(auto-fit,minmax(min(100%,165px),1fr));}
}
@media(max-width:480px) {
  body .vsgym-page-intro h1 {font-size:clamp(2.25rem,9.5vw,3.4rem);}
  body .vsgym-inst-hero .wp-block-heading {font-size:clamp(2.25rem,9.5vw,3.4rem);}
  body .vsgym-discipline-grid > .vsgym-discipline-card:has(.vsgym-wilo-card-art) {padding:1.25rem;gap:.65rem;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);}
  body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > h3 {font-size:2.25rem;}
  body .vsgym-discipline-card:has(.vsgym-wilo-card-art) > p:not(.vsgym-kicker):not(.vsgym-discipline-fullname):not(:last-child) {font-size:1rem;line-height:1.5;}
  body .vsgym-footer-grid {grid-template-columns:minmax(0,1fr);gap:2rem;}
  body .vsgym-footer-grid p {max-width:35ch;}
  body .vsgym-staff__members {grid-template-columns:minmax(0,1fr);}
  body .vsgym-staff__members .vsgym-staff__person {min-height:78px;}
  body .vsgym-wilo-feature__image {height:245px;}
  body .vsgym-logo-strip__intro {align-items:center;}
  body .vsgym-logo-strip__text {flex:1 1 140px;}
}
@media(prefers-reduced-motion:no-preference) {
  html.vsgym-motion-enabled [data-vsgym-reveal] {
    opacity:1;translate:0 0;
    /* Explicit priority also covers cards with more specific hover rules. */
    transition:
      opacity .5s ease var(--vsgym-delay,0ms),
      translate .55s cubic-bezier(.16,1,.3,1) var(--vsgym-delay,0ms),
      background-color .2s ease,border-color .2s ease,
      box-shadow .2s ease,transform .2s ease!important;
  }
  html.vsgym-motion-enabled [data-vsgym-reveal]:not(.vsgym-in-view):not(:focus-within) {
    opacity:0;translate:0 var(--vsgym-reveal-offset,18px);
    transition-delay:0ms!important;
  }
  html.vsgym-motion-enabled [data-vsgym-reveal]:focus-within,
  html.vsgym-motion-enabled [data-vsgym-reveal]:focus-visible {
    opacity:1;translate:0 0;transition:none!important;
  }
}
@media(prefers-reduced-motion:reduce) {
  body .vsgym-logo-strip__group {padding:6px var(--vsg-gutter);}
  body .vsgym-logo-strip__track {animation:none!important;will-change:auto;}
  body .vsgym-discipline-card {transform:none!important;}
}
@media(forced-colors:active) {
  body :is(a,button,input,textarea,select,summary,[tabindex]):focus-visible {outline:3px solid Highlight!important;box-shadow:none!important;}
  body :where(.vsgym-discipline-card,.vsgym-member,.vsgym-info-panel) {border:1px solid CanvasText;}
}
@media print {
  body .vsgym-sticky-root {position:static;}
  body .vsgym-logo-strip__mask {mask-image:none;-webkit-mask-image:none;}
  body .vsgym-logo-strip__track {animation:none;transform:none;width:100%;}
  body .vsgym-logo-strip__group {flex-wrap:wrap;justify-content:center;}
  body .vsgym-logo-strip__group[aria-hidden=true],body .vsgym-logo-strip__item[aria-hidden=true] {display:none;}
  body [data-vsgym-reveal] {opacity:1!important;translate:none!important;}
  html.vsgym-motion-enabled [data-vsgym-reveal] {opacity:1!important;translate:none!important;transition:none!important;}
  body :where(.vsgym-discipline-card,.vsgym-member,.vsgym-info-panel) {break-inside:avoid;}
}

/* 1.4.22 — navigation au premier appui sur écrans tactiles.
 * Les effets de survol qui déplacent les liens sont réservés aux souris.
 * Les animations non interactives des autres sections restent intactes. */
a.vsgym-quick-link,
a.vsgym-discipline-card--linked,
a.vsgym-photo-highlights__card,
.vsgym-btn a,
.vsgym-header .wp-block-navigation a {touch-action:manipulation;}
@media (hover: none), (pointer: coarse) {
  body:is(.home,.front-page) a.vsgym-quick-link,
  body:is(.home,.front-page) a.vsgym-discipline-card--linked,
  body:is(.home,.front-page) a.vsgym-photo-highlights__card {
    transition: none!important;
  }
  body:is(.home,.front-page) a.vsgym-quick-link:hover,
  body:is(.home,.front-page) a.vsgym-discipline-card--linked:hover,
  body:is(.home,.front-page) a.vsgym-photo-highlights__card:hover,
  body .vsgym-btn a:hover {
    transform: none!important;
  }
  body:is(.home,.front-page) a.vsgym-quick-link:hover::after,
  body:is(.home,.front-page) a.vsgym-photo-highlights__card:hover .vsgym-photo-highlights__arrow {
    transform: none!important;
  }
}
/* Crédit lisible et discret en bas du visuel, sans bloquer les liens du hero. */
body:is(.home,.front-page) .vsgym-hero .vsgym-hero-photo-credit {
  pointer-events:none;
  max-width:calc(100% - 36px);
  color:#fff;
}


/* VSGYM Élan 1.4.23 — accueil : cartes photographiques de même format.
 * Les trois cartes doivent présenter la même largeur et la même hauteur,
 * sans aucune déformation des photos et sans modifier les autres galeries.
 * 901 px et plus : trois colonnes égales.
 * 751–900 px : deux colonnes égales, troisième carte centrée et de même taille.
 * 750 px et moins : une colonne, trois cartes de même taille.
 */
body:is(.home,.front-page) .vsgym-photo-highlights__grid {
  --vsgym-photo-card-gap: clamp(.8rem, 1.4vw, 1.2rem);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--vsgym-photo-card-gap);
  align-items: stretch;
}
body:is(.home,.front-page) a.vsgym-photo-highlights__card {
  width: 100%;
  box-sizing: border-box;
}
@media (min-width: 751px) and (max-width: 900px) {
  body:is(.home,.front-page) .vsgym-photo-highlights__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body:is(.home,.front-page) a.vsgym-photo-highlights__card:last-child {
    grid-column: 1 / -1;
    justify-self: center;
    width: calc((100% - var(--vsgym-photo-card-gap)) / 2);
    height: 315px;
  }
}
@media (max-width: 750px) {
  body:is(.home,.front-page) .vsgym-photo-highlights__grid {
    grid-template-columns: minmax(0, 1fr);
  }
  body:is(.home,.front-page) a.vsgym-photo-highlights__card:last-child {
    grid-column: auto;
    justify-self: stretch;
    width: 100%;
  }
}
