/* Swim Data : styles minimaux. Avada garde la main sur la typographie ; seuls les bandeaux ont une couleur.
   Un seul HTML : au-dessus de 640 px un tableau, en dessous des fiches (aucun contenu dupliqué).
   Sélecteurs des cellules de prix en td.swim-amount : ils doivent l'emporter sur la règle
   générale « .swim-table td » (sinon le prix se colle à son libellé sur mobile). */
.swim-data .swim-price-list { margin: 0 0 1.75em; }
.swim-data .swim-list-name { font-weight: 700; margin: 0 0 .5em; }
.swim-data .swim-table { width: 100%; border-collapse: collapse; margin: 0 0 1.25em; }
.swim-data .swim-table caption { text-align: left; font-weight: 600; padding-bottom: .4em; }
.swim-data .swim-table th, .swim-data .swim-table td { padding: .45em .6em; border-bottom: 1px solid rgba(0,0,0,.08); text-align: left; vertical-align: top; }
.swim-data .swim-table td.swim-amount { white-space: nowrap; font-variant-numeric: tabular-nums; }
.swim-data .swim-eligibility { opacity: .8; }
.swim-data .swim-product-name { font-weight: 600; }
.swim-data .swim-conditions { list-style: none; margin: .2em 0 0; padding: 0; font-size: .85em; font-weight: 400; opacity: .75; }
.swim-data .swim-conditions li { margin: 0; }
/* condition propre à un seul prix : à droite sur ordinateur (comme en 0.2.0), à gauche en fiche mobile (plus bas) */
.swim-data .swim-table td.swim-amount .swim-cell-conditions { text-align: right; }
.swim-data .swim-badge { display: inline-block; margin-left: .35em; padding: .05em .45em; border-radius: 3px; font-size: .78em; white-space: normal;
  background: rgba(217,164,0,.14); border: 1px solid rgba(217,164,0,.45); }
.swim-data .swim-caveat { padding: .6em .8em; border-left: 3px solid #d9a400; background: rgba(217,164,0,.08); }
.swim-data .swim-verified { font-size: .85em; opacity: .7; }

@media (max-width: 640px) {
  .swim-data .swim-table, .swim-data .swim-table caption, .swim-data .swim-table tbody,
  .swim-data .swim-table tr, .swim-data .swim-table th, .swim-data .swim-table td { display: block; width: auto; }
  /* en-tête masqué visuellement mais conservé pour les lecteurs d'écran */
  .swim-data .swim-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  .swim-data .swim-table tbody tr { border: 1px solid rgba(0,0,0,.12); border-radius: 6px; margin: 0 0 .75em; padding: .5em .75em; }
  .swim-data .swim-table th, .swim-data .swim-table td { border: 0; padding: .2em 0; }
  .swim-data .swim-table td.swim-eligibility { padding-bottom: .35em; }
  /* libellé de colonne à gauche, prix à droite, toujours séparés */
  .swim-data .swim-table td.swim-amount { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline;
    gap: .25em .75em; white-space: normal; }
  .swim-data .swim-table td.swim-amount::before { content: attr(data-label); margin-right: .75em; opacity: .8; }
  .swim-data .swim-table td.swim-amount.swim-empty { display: none; }
  .swim-data .swim-table td.swim-amount .swim-cell-conditions { flex-basis: 100%; text-align: left; }
  .swim-data .swim-badge { margin-left: 0; }
}

/* ---- 0.3 : bandeaux, explications des tarifs, horaires ---------------------------------------- */
.swim-data { --swim-band: #03A1D1; --swim-band-text: #fff; --swim-band-soft: rgba(3,161,209,.07); --swim-band-ink: #026f91; }
/* Bandeaux : blanc gras agrandi sur #03A1D1 (contraste 3:1, admis pour les grands textes).
   Marges remises à zéro explicitement : les thèmes (Avada compris) en posent sur caption et figcaption. */
.swim-data .swim-table caption, .swim-data .swim-hours-title { margin: 0; caption-side: top;
  text-align: left; font-weight: 700; font-size: 1.15em; line-height: 1.3; padding: .45em .75em;
  background: var(--swim-band); color: var(--swim-band-text); border-radius: 4px 4px 0 0; }
.swim-data .swim-hours-sub { font-weight: 700; opacity: .9; }
.swim-data .swim-hours-sub::before { content: "· "; }
/* Explications des tarifs : bloc autonome, placé où Avada le veut */
.swim-data .swim-eligibility-help { margin: 0 0 1.25em; padding: .6em .9em; border-left: 3px solid var(--swim-band); background: var(--swim-band-soft); }
.swim-data .swim-elig { margin: 0 0 .5em; }
.swim-data .swim-elig:last-child { margin-bottom: 0; }
.swim-data .swim-elig dt { font-weight: 700; }
.swim-data .swim-elig dd { margin: .1em 0 0; }
.swim-data .swim-elig-scope { font-weight: 400; font-size: .85em; opacity: .75; margin-left: .35em; }
.swim-data .swim-elig-note { font-size: .9em; opacity: .85; }
/* Horaires : une ligne par jour, créneaux côte à côte, retour à la ligne seulement si la place manque */
/* Conteneurs neutres : aucune marge ni bordure héritée du thème au-dessus du bandeau */
.swim-data.swim-hours { margin: 0; padding: 0; }
.swim-data figure.swim-hours-block { margin: 0 0 1.5em; padding: 0; }
.swim-data.swim-hours > :first-child { margin-top: 0; }
.swim-data table.swim-hours-table { width: 100%; border-collapse: collapse; border-spacing: 0; border: 0; margin: 0; }
.swim-data .swim-hours-table th, .swim-data .swim-hours-table td { padding: .32em .6em; border-bottom: 1px solid rgba(0,0,0,.08); text-align: left; vertical-align: top; }
.swim-data .swim-hours-table th { width: 7.5em; font-weight: 600; white-space: nowrap; }
.swim-data .swim-day-short { display: none; }
.swim-data .swim-slot { display: inline-block; margin-right: 1.4em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.swim-data .swim-slot:last-child { margin-right: 0; }
.swim-data .swim-slot-details { font-size: .85em; opacity: .8; white-space: normal; }
.swim-data .swim-closed { opacity: .7; }
.swim-data .swim-unconfirmed { font-style: italic; opacity: .8; }
.swim-data .swim-dates { margin: .35em 0 0; font-size: .85em; }
.swim-data .swim-dates summary { cursor: pointer; color: var(--swim-band-ink); font-weight: 600; }
.swim-data .swim-dates p { margin: .3em 0 0; }
.swim-data .swim-hours-title { margin: 0; }
.swim-data .swim-practical, .swim-data .swim-exceptions { list-style: none; margin: 0; padding: 0; }
.swim-data .swim-practical > li, .swim-data .swim-exceptions > li { padding: .4em .1em; border-bottom: 1px solid rgba(0,0,0,.08); }
.swim-data .swim-reserved, .swim-data .swim-holiday-years { list-style: none; margin: .2em 0 0; padding: 0 0 0 1em; }
.swim-data .swim-exc-date { font-weight: 600; }
.swim-data .swim-card-fee { margin: -.6em 0 1.25em; padding: .5em .75em; background: var(--swim-band-soft); font-size: .95em; }
/* 0.5 : notices d'un type de produit, sous son tableau (même habillage que la phrase de création de carte) */
.swim-data .swim-kind-notes { margin: -.6em 0 1.25em; padding: .5em .75em; background: var(--swim-band-soft); font-size: .95em; }
.swim-data .swim-kind-notes .swim-notice + .swim-notice::before { content: " "; }
.swim-data .swim-notice-caveat { font-size: .85em; opacity: .75; white-space: nowrap; }
@media (max-width: 640px) {
  .swim-data .swim-hours-table { font-size: .94em; }
  .swim-data .swim-hours-table th, .swim-data .swim-hours-table td { padding: .3em .3em; }
  .swim-data .swim-hours-table th { width: 5.6em; }
  .swim-data .swim-slot { margin-right: .6em; }
}
@media (max-width: 400px) {
  .swim-data .swim-hours-table th { width: 3.1em; }
  .swim-data .swim-day-short { display: inline; }
  /* nom complet masqué à l'écran mais conservé pour les lecteurs d'écran */
  .swim-data .swim-day-full { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
}

/* ---- 0.4 : règlement [swim_rules] ------------------------------------------------------------ */
.swim-data.swim-rules { margin: 0; padding: 0; }
/* deux colonnes « autorisées / interdites » qui s'empilent d'elles-mêmes quand la place manque
   (téléphone ou colonne Avada étroite), sans hauteur fixe */
.swim-data .swim-rules-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(15em, 1fr)); gap: 0 1.5em; align-items: start; }
.swim-data figure.swim-rules-block { margin: 0 0 1.25em; padding: 0; min-width: 0; }
.swim-data .swim-rule-list { list-style: none; margin: 0; padding: .35em 0 0; }
.swim-data .swim-rule { display: flex; gap: .5em; align-items: baseline; padding: .28em .1em; border-bottom: 1px solid rgba(0,0,0,.06); }
.swim-data .swim-rule:last-child { border-bottom: 0; }
.swim-data .swim-ico { flex: 0 0 auto; width: 1em; height: 1em; position: relative; top: .15em; }
.swim-data .swim-ico-allowed { color: #1e8e3e; }
.swim-data .swim-ico-forbidden { color: #c62828; }
.swim-data .swim-ico-info { color: var(--swim-band-ink); }
.swim-data .swim-rules-note { margin: .4em 0 0; font-size: .85em; opacity: .8; }
.swim-data .swim-rules-foot { margin: 0 0 1em; font-size: .85em; opacity: .8; display: flex; flex-wrap: wrap; gap: .25em 1.25em; }
.swim-data .swim-rules-foot .swim-verified { opacity: 1; font-size: 1em; }
.swim-data .swim-rules-link { color: var(--swim-band-ink); }
