/**
 * MinucciCal — Frontend
 *
 * Blindage anti-Elementor (règle absolue du projet) :
 *  - classe racine doublée (.mcal-funnel.mcal-funnel) → spécificité 0-2-0 minimum
 *  - !important sur les propriétés qu'Elementor écrase (background, color,
 *    font, padding, border, display)
 *  - variables CSS scopées à la racine, surchargées en inline par le PHP
 *  - CSS enqueué avec dépendance elementor-frontend → après lui dans la cascade
 *
 * Échelle z-index documentée :
 *  10    contenu (cartes, écrans)
 *  100   navigation (bouton retour)
 *  (la popup Calendly native gère son propre overlay au-dessus de tout)
 */

/* ===================== Racine + variables scopées ===================== */

.mcal-funnel.mcal-funnel {
    /* Couleurs personnalisables (surchargées en inline depuis l'admin) */
    --mcal-card-bg: #C59D3F;
    --mcal-title: #FFFFFF;
    --mcal-subtitle: #F1E4C3;
    --mcal-accent: #1D1D1F;
    /* Réglages internes */
    --mcal-radius-card: 16px;
    --mcal-radius-media: 10px;
    /* Courbe organique commune aux micro-interactions (quintic ease-out) */
    --mcal-ease: cubic-bezier(0.22, 1, 0.36, 1);

    display: block !important;
    margin: 0 !important;
    padding: 8px 0 !important;
    font-family: inherit;
    line-height: 1.4;
}

.mcal-funnel.mcal-funnel,
.mcal-funnel.mcal-funnel * {
    box-sizing: border-box !important;
}

/* ===================== Écrans de choix ===================== */

.mcal-funnel.mcal-funnel .mcal-screens {
    position: relative;
    /* Les transitions d'écran (ressort, cascade) sont pilotées par le JS :
       aucune animation CSS ici, elles écraseraient les styles inline */
}

.mcal-funnel.mcal-funnel .mcal-screen {
    display: none !important;
}

.mcal-funnel.mcal-funnel .mcal-screen.mcal-is-active {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: stretch !important;
    gap: 32px !important;
}

/* ===================== Carte de choix ===================== */

/* Reset complet : neutralise les styles boutons d'Elementor / du thème */
.mcal-funnel.mcal-funnel .mcal-choice-card {
    -webkit-appearance: none !important;
    appearance: none !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    flex: 0 1 300px;
    width: 100% !important;
    max-width: 320px !important;
    margin: 0 !important;
    padding: 20px 20px 32px !important;
    background: var(--mcal-card-bg) !important; /* Elementor force un background sur button */
    color: var(--mcal-title) !important;
    border: 0 !important;
    border-radius: var(--mcal-radius-card) !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.10) !important;
    font-family: inherit !important; /* Elementor force une font-family sur button */
    text-align: center !important;
    text-decoration: none !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    white-space: normal !important; /* thèmes/Elementor forcent nowrap sur button */
    cursor: pointer;
    position: relative;
    z-index: 10;
    transition: transform 260ms var(--mcal-ease), box-shadow 260ms var(--mcal-ease);
}

.mcal-funnel.mcal-funnel .mcal-choice-card:hover {
    background: var(--mcal-card-bg) !important; /* Elementor change le fond des boutons au hover */
    color: var(--mcal-title) !important;
    transform: translateY(-4px);
    box-shadow: 0 14px 30px rgba(0, 0, 0, 0.20) !important;
}

/* Feedback < 100 ms : l'appui répond immédiatement, avant toute requête */
.mcal-funnel.mcal-funnel .mcal-choice-card:active {
    transform: translateY(-1px) scale(0.985);
    transition-duration: 80ms;
}

.mcal-funnel.mcal-funnel .mcal-choice-card:focus {
    outline: none;
}

.mcal-funnel.mcal-funnel .mcal-choice-card:focus-visible {
    outline: 3px solid var(--mcal-accent) !important;
    outline-offset: 3px;
}

/* Chargement Calendly en cours (premier clic : le script se charge) */
.mcal-funnel.mcal-funnel .mcal-choice-card.mcal-is-busy {
    cursor: progress;
    opacity: 0.75;
}

/* Média (photo) — formats : paysage (défaut), portrait, carré, rond */
.mcal-funnel.mcal-funnel .mcal-choice-media {
    display: block !important;
    width: 100% !important;
    aspect-ratio: 4 / 3;
    overflow: hidden !important;
    border-radius: var(--mcal-radius-media) !important;
}

.mcal-funnel.mcal-funnel .mcal-choice-media.mcal-media-portrait {
    aspect-ratio: 3 / 4;
}

.mcal-funnel.mcal-funnel .mcal-choice-media.mcal-media-square {
    aspect-ratio: 1 / 1;
}

.mcal-funnel.mcal-funnel .mcal-choice-media.mcal-media-circle {
    width: 200px !important;
    height: 200px !important;
    aspect-ratio: 1 / 1;
    margin: 8px auto 0 !important;
    border-radius: 50% !important;
}

.mcal-funnel.mcal-funnel .mcal-choice-img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    object-fit: cover !important;
    /* Cadrage biaisé vers le haut : ne coupe jamais le front sur un portrait */
    object-position: 50% 25% !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important; /* le rayon est porté par le conteneur média */
    filter: grayscale(0);
    /* Zoom lent et feutré au survol — transform uniquement, jamais width/height */
    transition: transform 600ms var(--mcal-ease);
}

.mcal-funnel.mcal-funnel .mcal-choice-card:hover .mcal-choice-img {
    transform: scale(1.05);
}

/* Textes.
   width:100% obligatoire : en flex colonne avec align-items, un span prend
   sa largeur max-content et déborde de la carte au lieu de replier. */
.mcal-funnel.mcal-funnel .mcal-choice-title {
    display: block !important;
    width: 100% !important;
    margin: 24px 0 0 !important;
    padding: 0 !important;
    font-size: 22px !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    color: var(--mcal-title) !important;
    letter-spacing: 0.4px !important;
    white-space: normal !important;
    overflow-wrap: break-word;
}

.mcal-funnel.mcal-funnel .mcal-choice-subtitle {
    display: block !important;
    width: 100% !important;
    margin: 12px 0 0 !important;
    padding: 0 !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.45 !important;
    color: var(--mcal-subtitle) !important;
    white-space: normal !important;
    overflow-wrap: break-word;
}

/* ===================== Bouton retour ===================== */

.mcal-funnel.mcal-funnel .mcal-nav {
    display: flex !important;
    justify-content: center !important;
    margin: 32px 0 0 !important;
    position: relative;
    z-index: 100;
}

.mcal-funnel.mcal-funnel .mcal-back-btn {
    -webkit-appearance: none !important;
    appearance: none !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 0 !important;
    padding: 8px 16px !important;
    background: transparent !important; /* Elementor force un fond sur button */
    border: 0 !important;
    border-radius: 24px !important;
    font-family: inherit !important;
    font-size: 17px !important;
    font-weight: 600 !important;
    color: var(--mcal-accent) !important;
    text-transform: none !important;
    cursor: pointer;
    transition: transform 260ms var(--mcal-ease);
    /* Apparition discrète quand on descend dans l'entonnoir */
    animation: mcal-back-in 350ms var(--mcal-ease);
}

@keyframes mcal-back-in {
    from {
        opacity: 0;
        transform: translateX(8px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.mcal-funnel.mcal-funnel .mcal-back-btn:hover {
    background: transparent !important;
    color: var(--mcal-accent) !important;
    transform: translateX(-4px);
}

.mcal-funnel.mcal-funnel .mcal-back-btn:focus-visible {
    outline: 3px solid var(--mcal-accent) !important;
    outline-offset: 3px;
}

.mcal-funnel.mcal-funnel .mcal-back-btn[hidden] {
    display: none !important;
    animation: none;
}

/* Pas d'espace mort sous le premier écran quand le retour est masqué */
.mcal-funnel.mcal-funnel .mcal-nav:has(.mcal-back-btn[hidden]) {
    display: none !important;
}

.mcal-funnel.mcal-funnel .mcal-back-icon {
    display: inline-flex !important;
    color: var(--mcal-accent);
}

/* ===================== Style « Doré » ===================== */
/* Charte type Rudelle & Le Bigot : fond crème côté site, cartes blanches,
   encre noire, accents bronze, sous-titres en capitales espacées,
   filet doré au-dessus du titre. Texte aligné à gauche comme les cartes
   « équipe » de la charte. */

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-card {
    align-items: flex-start !important;
    padding: 12px 12px 28px !important;
    border-radius: 6px !important;
    box-shadow: 0 10px 30px rgba(30, 20, 10, 0.08) !important;
    text-align: left !important;
}

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-card:hover {
    box-shadow: 0 18px 44px rgba(30, 20, 10, 0.14) !important;
}

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-media {
    border-radius: 3px !important;
}

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-media.mcal-media-circle {
    margin: 8px auto 0 !important; /* le portrait rond reste centré */
    border-radius: 50% !important;
}

/* Filet bronze au-dessus du titre, comme au-dessus des noms de la charte.
   Retrait horizontal en padding (pas en margin) : compatible width:100%. */
.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-title {
    margin: 20px 0 0 !important;
    padding: 0 12px !important;
    font-size: 20px !important;
    letter-spacing: 0.2px !important;
}

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-title::before {
    content: '';
    display: block;
    width: 36px;
    height: 2px;
    background: var(--mcal-accent);
    margin: 0 0 14px;
}

.mcal-funnel.mcal-funnel.mcal-style-dore .mcal-choice-subtitle {
    margin: 8px 0 0 !important;
    padding: 0 12px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 1.5px !important;
    text-transform: uppercase !important;
}

/* La prise de rendez-vous s'ouvre dans la popup NATIVE Calendly
   (Calendly.initPopupWidget + widget.css officiel, chargés par frontend.js) :
   aucune modale maison, aucun style à maintenir ici. */

/* ===================== Responsive ===================== */

@media (max-width: 767px) {
    .mcal-funnel.mcal-funnel .mcal-screen.mcal-is-active {
        gap: 20px !important;
    }

    .mcal-funnel.mcal-funnel .mcal-choice-card {
        flex-basis: 100%;
        max-width: 340px !important;
    }
}

/* ===================== Accessibilité — mouvement réduit ===================== */

@media (prefers-reduced-motion: reduce) {
    .mcal-funnel.mcal-funnel .mcal-back-btn {
        animation: none;
    }

    .mcal-funnel.mcal-funnel .mcal-choice-card,
    .mcal-funnel.mcal-funnel .mcal-choice-img,
    .mcal-funnel.mcal-funnel .mcal-back-btn {
        transition: none;
    }

    .mcal-funnel.mcal-funnel .mcal-choice-card:hover .mcal-choice-img {
        transform: none;
    }
}
