/* =============================================================
   Sonia Orriger — Pages piliers
   L'en-tête reprend la carte de la page d'accueil : même forme
   organique, même bandeau manuscrit, même univers de couleur.
   ============================================================= */

.pilier-page { display: block; }

/* ── En-tête coloré ─────────────────────────────────────────── */
.pilier-page__entete {
    position: relative;
    overflow-x: clip;      /* le fond déborde volontairement de la gouttière */
    padding-block: clamp(3rem, 7vw, 5rem) clamp(3rem, 6vw, 4.5rem);
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
}

.pilier-page__fond {
    position: absolute;
    inset: 0 calc(-1 * var(--gouttiere)) 0 calc(-1 * var(--gouttiere));
    z-index: 0;
    pointer-events: none;
}

.pilier-page__fond .svg-carte-fond { width: 100%; height: 100%; }

.pilier-page__contenu {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: var(--largeur-texte);
    margin-inline: auto;
    padding-inline: var(--gouttiere);
    text-align: center;
}

/* ── Bandeau manuscrit ──────────────────────────────────────── */
.pilier-page__bandeau {
    position: relative;
    margin-bottom: var(--e-lg);
    padding: .9rem 2.5rem 1.1rem;
}

.pilier-page__bandeau-forme {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.pilier-page__bandeau-forme .svg-bandeau { width: 100%; height: 100%; }

.pilier-page__bandeau-texte {
    position: relative;
    z-index: 1;
    display: block;
    font-family: var(--f-brosse);
    font-size: var(--t-bandeau);
    font-style: italic;
    line-height: 1.1;
    color: var(--c-blanc);
}

/* ── Titres ─────────────────────────────────────────────────── */
.pilier-page__titre {
    margin-bottom: var(--e-sm);
    font-family: var(--f-condense);
    font-size: clamp(2rem, 4.4vw, 3.2rem);
    font-weight: var(--g-gras);
    line-height: 1.05;
    color: var(--c-encre);
}

.pilier-page__sous-titre {
    margin-bottom: var(--e-lg);
    font-family: var(--f-condense);
    font-size: clamp(1rem, 1.8vw, 1.25rem);
    font-weight: var(--g-demi);
    letter-spacing: var(--l-moyen);
    line-height: 1.3;
    text-transform: uppercase;
    color: var(--c-encre-doux);
}

.pilier-page__chapo {
    max-width: 34rem;
    font-size: clamp(1.05rem, 1.8vw, 1.3rem);
    line-height: 1.6;
    color: var(--c-encre);
}

/* ── Corps de page ──────────────────────────────────────────── */
.pilier-page__corps { padding-block: 0 clamp(2rem, 5vw, 3.5rem); }

/* ── Portes (pages piliers) ─────────────────────────────────── */
.portes { padding-block: clamp(1.5rem, 4vw, 3rem); }

.portes__liste {
    display: grid;
    gap: var(--e-xl);
}

@media (min-width: 768px) {
    .portes__liste { grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }

    /* Titres, textes et actions de toutes les portes partagent les mêmes lignes
       (subgrid) : les boutons restent alignés, que la porte ait un texte et
       trois liens ou un titre seul. Sélecteurs renforcés : les règles de base
       de .porte, déclarées plus bas, l'emporteraient sinon. */
    .portes__liste > .porte {
        display: grid;
        grid-row: span 4;
        grid-template-rows: subgrid;
        row-gap: var(--e-md);
        align-content: start;
    }

    .porte > .porte__titre   { grid-row: 1; }
    .porte > .porte__format  { grid-row: 2; }
    .porte > .porte__texte   { grid-row: 3; }
    .porte > .porte__actions { grid-row: 4; margin-top: 0; }
}

.porte {
    display: flex;
    flex-direction: column;
    gap: var(--e-md);
    padding: clamp(1.5rem, 3vw, 2.25rem);
    background-color: var(--u-fond, var(--c-gris-clair));
    border-radius: var(--r-lg);
}

.porte__titre {
    font-family: var(--f-condense);
    font-size: clamp(1.4rem, 2.2vw, 1.75rem);
    font-weight: var(--g-gras);
    line-height: 1.15;
}

/* Mention manuscrite du format, surlignée au pinceau (maquette du 29/09) */
.porte__format {
    position: relative;
    justify-self: start;
    align-self: start;
    margin-top: calc(-1 * var(--e-xs));
    padding: .15em .7em .35em;
    font-family: var(--f-brosse);
    font-size: clamp(1.05rem, 1.5vw, 1.2rem);
    line-height: 1.2;
    color: var(--u-bouton, var(--c-encre));
    background: var(--u-fond-haut, var(--c-gris-clair));
    border-radius: 40% 55% 45% 60% / 60% 45% 55% 40%;
    transform: rotate(-2.5deg);
    transform-origin: left center;
}

.porte__format .svg-soulignement {
    position: absolute;
    left: .6em;
    bottom: -.2em;
    width: 55%;
    height: .5em;
    color: var(--u-bouton, var(--c-encre));
}

.porte__texte {
    font-size: var(--t-base);
    line-height: 1.6;
    color: var(--c-encre-doux);
}

/* Les actions restent en bas de chaque porte : alignées d'une porte à l'autre */
.porte__actions {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--e-sm);
    margin-top: auto;
    padding-top: var(--e-sm);
}

.porte__actions .btn--pilier { margin-bottom: var(--e-xs); }

.porte__lien {
    display: inline-flex;
    align-items: center;
    gap: var(--e-sm);
    min-height: 44px;              /* zone tactile */
    font-weight: var(--g-demi);
    color: var(--u-bouton, var(--c-encre));
    text-decoration: none;
}

.porte__lien .svg-fleche {
    width: 28px;
    height: 12px;
    flex: none;
    transition: transform var(--t-base);
}

.porte__lien:hover span,
.porte__lien:focus-visible span { text-decoration: underline; text-underline-offset: 3px; }

.porte__lien:hover .svg-fleche { transform: translateX(3px); }

/* ── Bouton de réservation sous l'en-tête (pages d'offre) ────── */
.offre-reservation {
    display: flex;
    justify-content: center;
    padding-inline: var(--gouttiere);
    margin-top: calc(-1 * clamp(1rem, 3vw, 2rem));
    margin-bottom: clamp(2rem, 5vw, 3rem);
}

.offre-reservation .btn,
.encart__bouton,
.pilier-invitation .btn {
    max-width: 100%;
    text-wrap: balance;
}

/* ── Propositions côte à côte (pages d'offre) ───────────────── */
.encarts { padding-block: clamp(1.5rem, 4vw, 3rem); }

.encarts__liste {
    display: grid;
    gap: var(--e-xl);
}

@media (min-width: 768px) {
    .encarts__liste { grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }

    /* Titres de longueurs très différentes : subgrid garde les boutons alignés */
    .encarts__liste > .encart {
        display: grid;
        grid-row: span 5;
        grid-template-rows: subgrid;
        row-gap: var(--e-sm);
        align-content: start;
    }

    .encart > .encart__titre      { grid-row: 1; }
    .encart > .encart__sous-titre { grid-row: 2; }
    .encart > .encart__texte      { grid-row: 3; }
    .encart > .encart__lien       { grid-row: 4; }
    .encart > .encart__bouton     { grid-row: 5; margin-top: var(--e-md); }
}

.encart {
    display: flex;
    flex-direction: column;
    gap: var(--e-sm);
    padding: clamp(1.5rem, 3vw, 2.5rem);
    background-color: var(--u-fond, var(--c-gris-clair));
    border-radius: var(--r-lg);
}

.encart__titre {
    font-family: var(--f-condense);
    font-size: clamp(1.4rem, 2.2vw, 1.8rem);
    font-weight: var(--g-gras);
    line-height: 1.15;
}

.encart__sous-titre {
    font-size: var(--t-petit);
    font-style: italic;
    color: var(--c-encre-doux);
}

.encart__texte {
    margin-top: var(--e-sm);
    line-height: 1.7;
}

.encart__bouton {
    align-self: flex-start;
    margin-top: auto;
}

.encart__texte + .encart__bouton,
.encart__sous-titre + .encart__bouton { margin-top: var(--e-lg); }

/* ── Actualités (pages d'offre) ─────────────────────────────── */
.actualites { padding-block: clamp(2rem, 5vw, 3.5rem); }

.actualites__titre {
    margin-bottom: var(--e-xl);
    font-family: var(--f-condense);
    font-size: var(--t-titre-2);
    letter-spacing: var(--l-moyen);
    text-transform: uppercase;
    text-align: center;
}

.actualites__tout {
    margin-top: var(--e-xl);
    text-align: center;
}

.actualites__vide {
    text-align: center;
    color: var(--c-encre-doux);
}

/* ── Invitation ─────────────────────────────────────────────── */
.pilier-invitation {
    padding-block: clamp(2.5rem, 6vw, 4rem);
    text-align: center;
}

.pilier-invitation__titre {
    margin-bottom: var(--e-md);
    font-family: var(--f-condense);
    font-size: var(--t-titre-2);
    letter-spacing: var(--l-moyen);
    text-transform: uppercase;
}

.pilier-invitation__texte {
    max-width: 30rem;
    margin-inline: auto;
    margin-bottom: var(--e-xl);
    color: var(--c-encre-doux);
}

/* Un ou deux boutons (bloc commun : appel + kinésiologie), côte à côte s'ils tiennent */
.pilier-invitation__boutons {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--e-md);
}

/* ── En-tête encadré de photos (maquettes de Sonia, 29/09) ──── */
/* Téléphone : panneau coloré, puis les photos côte à côte dessous. */
.pilier-page__entete--photos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-block: 0;
    margin-bottom: clamp(1rem, 3vw, 2rem);
}

.pilier-page__entete--photos .pilier-page__fond {
    /* Positionné en absolu : sans ligne de fin explicite, il descendrait
       jusqu'en bas de l'en-tête et recouvrirait les photos */
    grid-column: 1 / -1;
    grid-row: 1 / 2;
    inset: 0;
    background-color: var(--u-fond);
}

.pilier-page__entete--photos .pilier-page__contenu {
    grid-column: 1 / -1;
    grid-row: 1;
    padding-block: clamp(2.5rem, 6vw, 3.5rem);
}

.pilier-page__photo {
    grid-row: 2;
    margin: 0;
    aspect-ratio: 4 / 3;
    min-height: 0;          /* sinon la hauteur de l'image l'emporte sur le format */
    overflow: hidden;
}

/* Une seule photo : toute la largeur */
.pilier-page__entete--photos:not(.a-photo-gauche) .pilier-page__photo,
.pilier-page__entete--photos:not(.a-photo-droite) .pilier-page__photo {
    grid-column: 1 / -1;
    aspect-ratio: 16 / 9;
}

.pilier-page__photo img,
.pilier-invitation__photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.pilier-page__reservation {
    margin-top: var(--e-lg);
    max-width: 100%;
    text-wrap: balance;
}

/* Ordinateur : photo | panneau | photo, sur une même ligne */
@media (min-width: 900px) {
    .pilier-page__entete--photos {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.45fr) minmax(0, 1fr);
        min-height: clamp(24rem, 34vw, 30rem);
    }

    /* Lignes de fin explicites : le fond est positionné en absolu, et une
       fin « auto » l'étendrait jusqu'au bord, par-dessus la photo de droite */
    .pilier-page__entete--photos .pilier-page__fond,
    .pilier-page__entete--photos .pilier-page__contenu { grid-column: 2 / 3; }

    /* Sans photo d'un côté, le panneau s'étend jusqu'au bord */
    .pilier-page__entete--photos:not(.a-photo-gauche) .pilier-page__fond,
    .pilier-page__entete--photos:not(.a-photo-gauche) .pilier-page__contenu { grid-column: 1 / 3; }
    .pilier-page__entete--photos:not(.a-photo-droite) .pilier-page__fond,
    .pilier-page__entete--photos:not(.a-photo-droite) .pilier-page__contenu { grid-column: 2 / 4; }

    .pilier-page__entete--photos .pilier-page__contenu {
        justify-content: center;
        max-width: none;
    }

    .pilier-page__photo,
    .pilier-page__entete--photos:not(.a-photo-gauche) .pilier-page__photo,
    .pilier-page__entete--photos:not(.a-photo-droite) .pilier-page__photo {
        grid-row: 1;
        aspect-ratio: auto;
    }

    .pilier-page__entete--photos .pilier-page__photo.pilier-page__photo--gauche { grid-column: 1; }
    .pilier-page__entete--photos .pilier-page__photo.pilier-page__photo--droite { grid-column: 3; }
}

/* ── Invitation encadrée de photos (pages d'offre) ──────────── */
/* Téléphone : photo, texte, photo, les unes sous les autres. */
.pilier-invitation--photos {
    display: flex;
    flex-direction: column;
    gap: clamp(2rem, 5vw, 3rem);
    padding-block: clamp(1rem, 3vw, 2rem) clamp(2.5rem, 6vw, 4rem);
}

.pilier-invitation__photo {
    margin: 0;
    aspect-ratio: 4 / 3;
    min-height: 0;
    overflow: hidden;
}

/* Ordinateur : photos et texte côte à côte, photos jusqu'au bord de l'écran */
@media (min-width: 900px) {
    .pilier-invitation--photos {
        display: grid;
        align-items: center;
        column-gap: clamp(2rem, 4vw, 4rem);
    }

    /* Une photo : photo | texte (ou texte | photo) */
    .pilier-invitation--photos.a-photo-gauche { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); }
    .pilier-invitation--photos.a-photo-droite { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); }

    /* Deux photos : le texte au centre */
    .pilier-invitation--photos.a-photo-gauche.a-photo-droite {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr);
        column-gap: clamp(1.5rem, 3vw, 3rem);
    }

    .pilier-invitation__photo {
        align-self: stretch;
        aspect-ratio: auto;
        min-height: 26rem;
    }

    /* Avec deux photos, celle de droite est plus courte et centrée : le
       décalage de la maquette « Accompagnement individuel » */
    .a-photo-gauche.a-photo-droite .pilier-invitation__photo--droite {
        align-self: center;
        aspect-ratio: 1;
        min-height: 0;
    }

    .pilier-invitation--photos .pilier-invitation__contenu {
        padding-inline: 0;
    }

    .pilier-invitation--photos.a-photo-gauche:not(.a-photo-droite) .pilier-invitation__contenu { padding-right: var(--gouttiere); }
    .pilier-invitation--photos.a-photo-droite:not(.a-photo-gauche) .pilier-invitation__contenu { padding-left: var(--gouttiere); }
}
