/* Projexo Studio v19 — options de section, uniquement sur les pages de site. */
.tenant-site .studio-responsive-section.studio-section-has-bg > section {
    background: var(--studio-section-bg);
}
.tenant-site .studio-responsive-section.studio-section-has-image > section {
    background-image: linear-gradient(rgba(0, 0, 0, var(--studio-section-overlay, .45)), rgba(0, 0, 0, var(--studio-section-overlay, .45))), var(--studio-section-image);
    background-position: center, var(--studio-section-position, center);
    background-size: cover;
    background-repeat: no-repeat;
}
/* Le texte des cartes et des blocs possédant leur propre couleur reste prioritaire. */
.tenant-site .studio-responsive-section.studio-section-has-fg > section {
    color: var(--studio-section-fg);
}
.tenant-site .studio-responsive-section.studio-section-has-fg > section :where(p, blockquote, .section-kicker) {
    color: var(--studio-section-fg);
}
.tenant-site .studio-responsive-section.studio-section-has-heading > section :where(h1, h2, h3) {
    color: var(--studio-section-heading);
}
.tenant-site .studio-responsive-section.studio-section-has-fg > section .site-builder-block.studio-block-has-text :where(p, blockquote),
.tenant-site .studio-responsive-section.studio-section-has-heading > section .site-builder-block.studio-block-has-text :where(h2, h3) {
    color: var(--studio-block-text) !important;
}
/* En l'absence de personnalisation, on éclaircit uniquement les zones éditoriales sur les photos. */
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section:not(.site-builder-section) > :where(p, .section-kicker),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section.site-hero .site-hero-copy :where(p, .section-kicker),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section.site-image-text > div:first-child :where(p, .section-kicker),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section.site-booking > div:first-child :where(p, .section-kicker),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section .site-section-intro :where(p, .section-kicker) {
    color: #fff;
}
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section:not(.site-builder-section) > :where(h1, h2, h3),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section.site-hero .site-hero-copy :where(h1, h2),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section.site-image-text > div:first-child :where(h1, h2),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section.site-booking > div:first-child :where(h1, h2),
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section .site-section-intro :where(h1, h2) {
    color: #fff;
}
/* Les tailles définies sur un bloc priment sur la taille de sa section. */
.tenant-site .studio-responsive-section.studio-section-heading-small > section:not(.site-builder-section) :where(h1, h2, h3),
.tenant-site .studio-responsive-section.studio-section-heading-small > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(1.5rem, 2.7vw, 2rem); }
.tenant-site .studio-responsive-section.studio-section-heading-large > section:not(.site-builder-section) :where(h1, h2, h3),
.tenant-site .studio-responsive-section.studio-section-heading-large > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(2.4rem, 4vw, 3.5rem); }
.tenant-site .studio-responsive-section.studio-section-heading-xl > section:not(.site-builder-section) :where(h1, h2, h3),
.tenant-site .studio-responsive-section.studio-section-heading-xl > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(2.8rem, 5vw, 4.6rem); }
.tenant-site .studio-responsive-section.studio-section-body-small > section:not(.site-builder-section) :where(p),
.tenant-site .studio-responsive-section.studio-section-body-small > section .site-builder-block.studio-block-body-default > p { font-size: .89rem; }
.tenant-site .studio-responsive-section.studio-section-body-large > section:not(.site-builder-section) :where(p),
.tenant-site .studio-responsive-section.studio-section-body-large > section .site-builder-block.studio-block-body-default > p { font-size: 1.16rem; }

.tenant-site .site-builder-section .site-builder-block { container-type: inline-size; }
.tenant-site .studio-responsive-section.studio-section-heading-small > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(1.35rem, 10cqi, 2rem); overflow-wrap: anywhere; }
.tenant-site .studio-responsive-section.studio-section-heading-large > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(1.65rem, 11cqi, 3.5rem); overflow-wrap: anywhere; }
.tenant-site .studio-responsive-section.studio-section-heading-xl > section .site-builder-block.studio-block-heading-default h2 { font-size: clamp(1.75rem, 12cqi, 4.6rem); overflow-wrap: anywhere; }

/* Studio v20 — un bloc peut révéler l'image de fond de sa section. */
.tenant-site .site-builder-block.studio-block-transparent {
    background: transparent !important;
}
.tenant-site .site-builder-block.site-builder-pricing.studio-block-transparent:not(.studio-block-shadow-soft):not(.studio-block-shadow-medium):not(.studio-block-shadow-strong),
.tenant-site .site-builder-block.site-builder-testimonial.studio-block-transparent:not(.studio-block-shadow-soft):not(.studio-block-shadow-medium):not(.studio-block-shadow-strong) {
    box-shadow: none;
}
.tenant-site .site-builder-block.site-builder-form.studio-block-transparent .site-studio-form,
.tenant-site .site-builder-block.site-builder-cms_list.studio-block-transparent .site-studio-cms-grid article {
    background: transparent;
    box-shadow: none;
}
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-fg) > section .site-builder-block.studio-block-transparent:not(.studio-block-has-text) :is(p, blockquote, blockquote footer, .section-kicker) {
    color: #fff;
    text-shadow: 0 1px 3px rgba(0, 0, 0, .6);
}
.tenant-site .studio-responsive-section.studio-section-has-image:not(.studio-section-has-heading) > section .site-builder-block.studio-block-transparent:not(.studio-block-has-text) :is(h2, h3) {
    color: #fff;
    text-shadow: 0 1px 3px rgba(0, 0, 0, .6);
}

/* ===== Typographie et boutons du thème (Studio : modes simple et pro) =====
   Les variables sont produites par App\Support\SiteTypography à partir d'une liste blanche. */
.tenant-site.site-typography { font-family: var(--site-font-body, inherit); }
.tenant-site.site-typography :is(h1, h2, h3, h4),
.tenant-site.site-typography .site-brand { font-family: var(--site-font-heading, inherit); }
.tenant-site.has-heading-weight :is(h1, h2, h3, h4) { font-weight: var(--site-heading-weight); }
.tenant-site.has-heading-tracking :is(h1, h2, h3, h4),
.tenant-site.has-heading-tracking .site-brand { letter-spacing: var(--site-heading-tracking); }
.tenant-site.has-heading-uppercase :is(h1, h2, h3) { text-transform: uppercase; }
.tenant-site.has-line-height,
.tenant-site.has-line-height :is(p, li, blockquote, dd) { line-height: var(--site-line-height); }
.tenant-site.has-button-radius :is(.site-cta, .site-book-link) { border-radius: var(--site-button-radius); }
.tenant-site.has-button-text :is(.site-cta:not(.soft), .site-book-link) { color: var(--site-button-text); }
.tenant-site.has-button-text .site-cta-section .site-cta:not(.soft) { color: var(--ink); }

/* Images optimisées : les attributs width/height réservent la place (pas de saut de mise en page).
   :where() garde une spécificité nulle : toute hauteur définie ailleurs (couverture, ratio) reste prioritaire. */
:where(.tenant-site img[width][height]) { height: auto; }

/* ===== Calendrier de réservation intégré et catalogue de services (éléments du Studio) ===== */
.site-booking-widget { display: grid; gap: 1rem; }
.site-booking-widget h2 { margin: 0; }
.site-booking-toolbar { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .55rem .7rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 12%, transparent); border-radius: var(--studio-site-radius, 14px); background: color-mix(in srgb, var(--surface, #fff) 92%, var(--brand, #078b98)); }
.site-booking-toolbar strong { font-size: .95rem; text-align: center; }
.site-booking-nav { display: grid; width: 2.4rem; height: 2.4rem; place-items: center; border-radius: 999px; color: var(--ink, #14213d); background: var(--surface, #fff); font-size: 1.4rem; line-height: 1; text-decoration: none; box-shadow: 0 1px 4px rgba(20, 33, 61, .12); }
.site-booking-nav[aria-disabled="true"] { opacity: .35; pointer-events: none; }
.site-booking-filters { display: flex; flex-wrap: wrap; gap: .4rem; }
.site-booking-filters[hidden] { display: none; }
.site-booking-chip { padding: .4rem .8rem; border: 1px solid color-mix(in srgb, var(--brand, #078b98) 35%, transparent); border-radius: 999px; color: var(--ink, #14213d); background: transparent; font: inherit; font-size: .85rem; cursor: pointer; }
.site-booking-chip.is-active { color: var(--site-button-text, #fff); background: var(--brand, #078b98); border-color: var(--brand, #078b98); }
.site-booking-days { display: grid; gap: 1rem; }
.site-booking-view-week .site-booking-days { grid-template-columns: repeat(auto-fill, minmax(11.5rem, 1fr)); align-items: start; }
.site-booking-day h3 { margin: 0 0 .45rem; font-size: .9rem; text-transform: capitalize; }
.site-booking-day ul { display: grid; gap: .45rem; margin: 0; padding: 0; list-style: none; }
.site-booking-slot { display: grid; grid-template-columns: auto 1fr; gap: .15rem .7rem; padding: .7rem .8rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 12%, transparent); border-radius: calc(var(--studio-site-radius, 14px) * .7); color: var(--ink, #14213d); background: var(--surface, #fff); text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease; }
.site-booking-slot:hover, .site-booking-slot:focus-visible { border-color: var(--brand, #078b98); box-shadow: 0 4px 14px color-mix(in srgb, var(--brand, #078b98) 18%, transparent); outline: none; }
.site-booking-slot.is-selected { border-color: var(--brand, #078b98); box-shadow: inset 0 0 0 2px var(--brand, #078b98); }
.site-booking-slot b { grid-row: span 2; align-self: center; color: var(--brand, #078b98); font-size: .95rem; white-space: nowrap; }
.site-booking-slot span { display: grid; min-width: 0; }
.site-booking-slot strong { overflow: hidden; font-size: .95rem; text-overflow: ellipsis; white-space: nowrap; }
.site-booking-slot small { color: color-mix(in srgb, var(--ink, #14213d) 65%, transparent); font-size: .78rem; }
.site-booking-slot em { grid-column: 2; color: color-mix(in srgb, var(--ink, #14213d) 72%, transparent); font-size: .78rem; font-style: normal; }
.site-booking-slot.is-full em { color: #9a5b00; }
.site-booking-empty { margin: 0; padding: 1.2rem; border: 1px dashed color-mix(in srgb, var(--ink, #14213d) 20%, transparent); border-radius: var(--studio-site-radius, 14px); text-align: center; }
.site-booking-widget.is-loading .site-booking-days { opacity: .5; pointer-events: none; }
.site-booking-form { display: grid; gap: .8rem; padding: 1.1rem; border: 1px solid color-mix(in srgb, var(--brand, #078b98) 35%, transparent); border-radius: var(--studio-site-radius, 14px); background: color-mix(in srgb, var(--surface, #fff) 94%, var(--brand, #078b98)); }
.site-booking-form[hidden], .site-booking-fields[hidden] { display: none; }
.site-booking-choice { margin: 0; font-weight: 700; }
.site-booking-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
.site-booking-fields label { display: grid; gap: .3rem; font-size: .85rem; font-weight: 600; }
.site-booking-fields input { width: 100%; padding: .65rem .75rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 22%, transparent); border-radius: 8px; color: var(--ink, #14213d); background: #fff; font: inherit; }
.site-booking-fields input:focus { border-color: var(--brand, #078b98); outline: 2px solid color-mix(in srgb, var(--brand, #078b98) 30%, transparent); }
.site-booking-pass small { font-weight: 400; }
.site-booking-note { margin: 0; font-size: .85rem; }
.site-booking-note:empty, .site-booking-status:empty { display: none; }
.site-booking-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.site-booking-cancel { padding: .6rem .3rem; border: 0; color: var(--ink, #14213d); background: none; font: inherit; text-decoration: underline; cursor: pointer; }
.site-booking-status { margin: 0; padding: .7rem .8rem; border-radius: 8px; background: color-mix(in srgb, var(--surface, #fff) 85%, var(--ink, #14213d)); }
.site-booking-status.is-success { color: #14532d; background: #e7f6ec; }
.site-booking-status.is-error { color: #8a1c23; background: #fdecee; }
.site-booking-confirmation { color: inherit; font-weight: 700; }
@media (max-width: 640px) { .site-booking-fields { grid-template-columns: 1fr; } }

.site-services-catalog { display: grid; gap: 1rem; }
.site-services-catalog h2 { margin: 0; }
.site-services-grid { display: grid; grid-template-columns: repeat(var(--site-services-cols, 3), minmax(0, 1fr)); gap: 1rem; }
.site-services-cols-2 { --site-services-cols: 2; }
.site-services-cols-3 { --site-services-cols: 3; }
.site-services-cols-4 { --site-services-cols: 4; }
.site-service-card { display: flex; flex-direction: column; gap: .5rem; padding: 1.2rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 12%, transparent); border-radius: var(--studio-site-radius, 14px); background: var(--surface, #fff); }
.site-service-card h3 { margin: 0; }
.site-service-card p { margin: 0; }
.site-service-type { align-self: flex-start; padding: .15rem .55rem; border-radius: 999px; color: var(--brand, #078b98); background: color-mix(in srgb, var(--brand, #078b98) 12%, transparent); font-size: .75rem; font-weight: 700; }
.site-service-meta { display: flex; flex-wrap: wrap; gap: .3rem .9rem; margin: 0; padding: 0; color: color-mix(in srgb, var(--ink, #14213d) 70%, transparent); font-size: .85rem; list-style: none; }
.site-service-foot { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; margin-top: auto; padding-top: .6rem; }
.site-service-foot strong { font-size: 1.1rem; }
.site-service-foot small { flex-basis: 100%; order: 3; color: color-mix(in srgb, var(--ink, #14213d) 65%, transparent); }
.site-service-foot .site-cta { margin-left: auto; }
@media (max-width: 900px) { .site-services-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .site-services-grid { grid-template-columns: 1fr; } }
.site-booking-pass[hidden] { display: none; }

/* ===== Équipe, lieux et forfaits (éléments du Studio) ===== */
.site-directory { display: grid; gap: 1rem; }
.site-directory h2 { margin: 0; }
.site-directory-grid { display: grid; grid-template-columns: repeat(var(--site-directory-cols, 3), minmax(0, 1fr)); gap: 1rem; }
.site-directory-cols-2 { --site-directory-cols: 2; }
.site-directory-cols-3 { --site-directory-cols: 3; }
.site-directory-cols-4 { --site-directory-cols: 4; }
.site-team-card, .site-location-card, .site-pass-card { display: flex; flex-direction: column; gap: .45rem; padding: 1.2rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 12%, transparent); border-radius: var(--studio-site-radius, 14px); background: var(--surface, #fff); }
.site-team-card { align-items: center; text-align: center; }
.site-team-card h3, .site-location-card h3, .site-pass-card h3 { margin: 0; }
.site-team-card p, .site-location-card p, .site-pass-card p { margin: 0; }
.site-team-photo, .site-team-initials { width: 7.5rem; height: 7.5rem; margin-bottom: .4rem; border-radius: 50%; object-fit: cover; }
.site-team-initials { display: grid; place-items: center; color: #fff; background: var(--site-team-color, var(--brand, #078b98)); font-size: 2rem; font-weight: 800; letter-spacing: .02em; }
.site-team-role { color: var(--brand, #078b98); font-weight: 700; }
.site-location-card address { display: grid; font-style: normal; }
.site-location-virtual { color: var(--brand, #078b98); font-weight: 700; }
.site-location-hours { display: grid; gap: .15rem; margin: .3rem 0 0; font-size: .9rem; }
.site-location-hours div { display: flex; justify-content: space-between; gap: 1rem; padding: .15rem 0; border-bottom: 1px dashed color-mix(in srgb, var(--ink, #14213d) 12%, transparent); }
.site-location-hours dt { font-weight: 600; }
.site-location-hours dd { margin: 0; }
.site-location-note { color: color-mix(in srgb, var(--ink, #14213d) 70%, transparent); font-size: .9rem; }
.site-location-card .site-inline-link { margin-top: auto; }
@media (max-width: 900px) { .site-directory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .site-directory-grid { grid-template-columns: 1fr; } }

/* ===== Demande de confidentialité (Loi 25) ===== */
.site-privacy { display: grid; gap: .9rem; }
.site-privacy h2 { margin: 0; }
.site-privacy-officer { margin: 0; padding: .7rem .9rem; border-left: 3px solid var(--brand, #078b98); background: color-mix(in srgb, var(--surface, #fff) 92%, var(--brand, #078b98)); }
.site-privacy-form { display: grid; gap: .8rem; }
.site-privacy-wide { grid-column: 1 / -1; }
.site-privacy-form select, .site-privacy-form textarea { width: 100%; padding: .65rem .75rem; border: 1px solid color-mix(in srgb, var(--ink, #14213d) 22%, transparent); border-radius: 8px; color: var(--ink, #14213d); background: #fff; font: inherit; }
.site-privacy-consent { display: flex; align-items: flex-start; gap: .55rem; font-size: .9rem; }
.site-privacy-consent input { margin-top: .25rem; }
.site-privacy-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.site-privacy-form .site-cta { justify-self: start; }

/* ===== Politique de confidentialité générée ===== */
.site-policy { display: grid; gap: .8rem; max-width: 52rem; }
.site-policy h2 { margin: 0; }
.site-policy-updated, .site-privacy-law { margin: 0; color: color-mix(in srgb, var(--ink, #14213d) 65%, transparent); font-size: .9rem; }
.site-policy-part { display: grid; gap: .45rem; }
.site-policy-part h3 { margin: .6rem 0 0; }
.site-policy-part p, .site-policy-part ul { margin: 0; }
.site-policy-part ul { display: grid; gap: .3rem; padding-left: 1.2rem; }
