/* Fiche détaillée d'un hébergement (panneau « En savoir plus »).
   Feuille autonome : le partiel front/product-detail-panel.php la charge
   lui-même, pour fonctionner sur toute page (disponibilités, panier…).
   Les couleurs ont un repli : availability.css n'est pas toujours chargé. */

/* ── Fiche détaillée « En savoir plus » ─────────────────────────────────────── */
/* Tiroir latéral à droite sur grand écran, plein écran sur mobile. Le contenu
   vient d'eSeason (description, visuels, critères saisis par le camping). */
/* ⚠️ Le site n'impose pas box-sizing globalement. Sans cette remise à zéro, le
   panneau (height:100% + padding vertical) mesure « écran + 68 px » : le bas du
   conteneur de défilement passe SOUS le bord de l'écran, et la fin du contenu —
   le lien vers la page de l'hébergement — devient inatteignable. */
.pdetail,
.pdetail * { box-sizing: border-box; }

.pdetail {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    justify-content: flex-end;
}

/* ⚠️ Indispensable : l'attribut « hidden » vaut display:none dans la feuille du
   NAVIGATEUR, donc n'importe quelle règle d'auteur posant un display le neutralise.
   Sans cette remise à zéro, le panneau (display:flex) et les blocs masqués
   (specs/tags/lien, en flex ou inline-block) s'affichent dès le chargement. */
.pdetail[hidden],
.pdetail [hidden] { display: none !important; }

.pdetail__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(44, 44, 44, .55);
    opacity: 0;
    transition: opacity .28s ease;
}

/* ── Ouverture / fermeture ───────────────────────────────────────────────────
   L'état fermé est posé sur les éléments eux-mêmes ; la classe .pdetail--open,
   ajoutée par le JS À LA FRAME SUIVANTE (le panneau doit d'abord être affiché
   pour que la transition ait un point de départ), joue l'entrée. */
.pdetail--open .pdetail__backdrop { opacity: 1; }
.pdetail--open .pdetail__panel    { transform: none; }

body.pdetail-open { overflow: hidden; }

.pdetail__panel {
    position: relative;
    width: 100%;
    max-width: 620px;
    height: 100%;
    overflow-y: auto;
    background: var(--bg-card, #fff);
    padding: 28px 34px 40px;
    box-shadow: -4px 0 24px rgba(0, 0, 0, .18);
    /* Glisse depuis le bord droit. Courbe décélérée : départ franc, arrivée douce. */
    transform: translateX(100%);
    transition: transform .34s cubic-bezier(.22, .61, .36, 1);
    will-change: transform;
}

.pdetail__close {
    position: absolute;
    top: 14px;
    left: 16px;
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 50%;
    background: var(--teal, #2A9D8F);
    color: #fff;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
}

.pdetail__close:hover { background: var(--teal-dark, #207A6E); }

.pdetail__title {
    margin: 8px 0 20px;
    padding: 0 40px;
    font-family: "open_sansbold";
    font-size: 21px;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
    color: var(--orange, #E8802A);
}

/* ── Galerie ─────────────────────────────────────────────────────────────── */
.pdetail__gallery {
    position: relative;
    margin-bottom: 18px;
    background: #f3f3f3;
    border-radius: 8px;
    overflow: hidden;   /* masque les visuels hors cadre : c'est la fenêtre du carrousel */
}

/* Les visuels sont côte à côte sur un rail, déplacé d'un cran par le JS. */
.pdetail__track {
    display: flex;
    transition: transform .38s cubic-bezier(.25, .46, .45, .94);
    will-change: transform;
}

/* Bouclage dernier → premier : le rail revient sans animation, faire défiler
   toute la galerie à l'envers serait long et désagréable. */
.pdetail__track--instant { transition: none; }

/* Hauteur fixe volontaire : sur un rail flex, un visuel portrait imposerait sa
   hauteur à tous les autres et laisserait des bandes vides. */
.pdetail__slide {
    flex: 0 0 100%;
    width: 100%;
    height: 420px;
    display: block;
    object-fit: cover;
    user-select: none;
}

.pdetail__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, .85);
    color: var(--text-dark, #2C2C2C);
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
}

.pdetail__nav                    { transition: background .15s ease, transform .12s ease; }
.pdetail__nav:hover              { background: #fff; }
.pdetail__nav:active             { transform: translateY(-50%) scale(.92); }
.pdetail__nav--prev              { left: 10px; }
.pdetail__nav--next              { right: 10px; }

.pdetail__counter {
    position: absolute;
    right: 12px;
    bottom: 10px;
    padding: 3px 9px;
    border-radius: 10px;
    background: rgba(44, 44, 44, .65);
    color: #fff;
    font-family: "open_sanslight";
    font-size: 12px;
}

/* ── Caractéristiques et critères ────────────────────────────────────────── */
.pdetail__specs,
.pdetail__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 14px;
}

.pdetail__spec {
    padding: 5px 11px;
    border: 1px solid var(--tag-border, #ccc);
    border-radius: var(--radius-tag, 4px);
    background: var(--tag-bg, #fff);
    font-family: "open_sanslight";
    font-size: 13px;
    color: var(--text-dark, #2C2C2C);
}

.pdetail__tag {
    padding: 5px 11px;
    border: 1px solid var(--orange, #E8802A);
    border-radius: var(--radius-tag, 4px);
    font-family: "open_sanslight";
    font-size: 12px;
    text-transform: uppercase;
    color: var(--orange, #E8802A);
}

/* ── Description ─────────────────────────────────────────────────────────── */
.pdetail__text {
    font-family: "open_sanslight";
    font-size: 14px;
    line-height: 1.65;
    color: var(--text-mid, #555);
}

.pdetail__text p { margin: 0 0 12px; }

.pdetail__page {
    display: inline-block;
    margin-top: 10px;
    font-family: "open_sansbold";
    font-size: 13px;
    color: var(--teal, #2A9D8F);
    text-decoration: underline;
}

@media (max-width: 680px) {
    .pdetail__panel { max-width: 100%; padding: 24px 18px 34px; }
    .pdetail__title { padding: 0 44px; font-size: 18px; }
    .pdetail__slide { height: 260px; }
}

/* ── Mouvement réduit ────────────────────────────────────────────────────────
   Réglage système « réduire les animations » : on garde l'état final, sans
   transition (utile aussi aux personnes sensibles au mouvement). */
@media (prefers-reduced-motion: reduce) {
    .pdetail__panel,
    .pdetail__backdrop,
    .pdetail__track,
    .pdetail__nav {
        transition: none !important;
    }
    .pdetail__panel    { transform: none; }
    .pdetail__backdrop { opacity: 1; }
}
