/* =========================================================================
   Prodecta — système de boutons.

   Un seul langage pour tous les boutons du site, dans l'esprit des
   meilleures interfaces du moment (Linear, Airbnb, Apple) : des aplats,
   pas de dégradé, pas de reflet ; un vert profond et calme pour l'action
   principale, un beige de la même famille que le fond crème pour les
   actions secondaires ; des angles arrondis à 12 px plutôt que des pilules ;
   une ombre à peine perceptible ; à l'appui, le bouton se contracte d'un
   souffle. Le luxe est dans la retenue.

   Ce fichier est chargé après les styles historiques et ne redéfinit que la
   forme, la matière et les états ; chaque bouton garde sa taille et sa place.
   ========================================================================= */

:root {
    --btn-r: 12px;
    --btn-r-sm: 10px;
    --btn-primary: #1B6B44;
    --btn-primary-hover: #175E3C;
    --btn-primary-active: #134F32;
    --btn-neutral: #EDE9E0;
    --btn-neutral-hover: #E6E1D6;
    --btn-neutral-active: #DED8CB;
    --btn-ink: #1A1A1A;
    --btn-ease: cubic-bezier(.22, 1, .36, 1);
}

/* ------------------------------------------------------ bouton principal */
body .btn-primary,
body .btn-call,
body .pr-btn,
body .nm-cta.rdv,
body .cb-next,
body .cb-boost-btn,
body .cm-btn-primary,
body .cm-btn-enter,
body .ctc-cta,
body .dash-poster-cta,
body .mobile-cta-bar .mcb-quote,
body .mobile-cta-bar.is-warm .mcb-rdv {
    border-radius: var(--btn-r);
    border: none;
    background: var(--btn-primary);
    color: #fff;
    font-weight: 600;
    letter-spacing: -.005em;
    filter: none;
    box-shadow: 0 1px 2px rgba(10, 30, 20, .14);
    transition:
        background .18s ease,
        transform .16s var(--btn-ease),
        box-shadow .18s ease;
}

body .btn-primary svg,
body .btn-call svg,
body .mobile-cta-bar .mcb-quote svg,
body .mobile-cta-bar.is-warm .mcb-rdv svg {
    stroke: #fff;
}

/* Le reflet balayant de .pr-btn n'a plus sa place. */
body .pr-btn::after {
    display: none;
}

@media (hover: hover) and (pointer: fine) {
    body .btn-primary:hover,
    body .btn-call:hover,
    body .pr-btn:hover,
    body .nm-cta.rdv:hover,
    body .cb-next:hover:not(:disabled),
    body .cb-boost-btn:hover,
    body .cm-btn-primary:hover,
    body .cm-btn-enter:hover,
    body .ctc-cta:hover,
    body .dash-poster-cta:hover,
    body .mobile-cta-bar .mcb-quote:hover,
    body .mobile-cta-bar.is-warm .mcb-rdv:hover {
        background: var(--btn-primary-hover);
        color: #fff;
        filter: none;
        opacity: 1;
        transform: translateY(-1px);
        box-shadow: 0 6px 14px -8px rgba(10, 30, 20, .35);
    }
}

body .btn-primary:active,
body .btn-call:active,
body .pr-btn:active,
body .nm-cta.rdv:active,
body .cb-next:active:not(:disabled),
body .cb-boost-btn:active,
body .cm-btn-primary:active,
body .cm-btn-enter:active,
body .ctc-cta:active,
body .dash-poster-cta:active,
body .mobile-cta-bar .mcb-quote:active,
body .mobile-cta-bar.is-warm .mcb-rdv:active {
    background: var(--btn-primary-active);
    transform: scale(.98);
    box-shadow: none;
    filter: none;
}

/* ---------------------------------------------------- bouton secondaire */
/* Beige mat, texte encre : présent sans jamais disputer l'attention au
   bouton principal. */
body .btn-quote,
body .dx-btn-alt,
body .cm-btn-ghost,
body .cm-btn-second,
body .tq-visit,
body .nm-cta:not(.rdv),
body .mobile-cta-bar .mcb-rdv,
body .mobile-cta-bar.is-warm .mcb-quote {
    border-radius: var(--btn-r);
    border: 1px solid rgba(26, 26, 26, .05);
    background: var(--btn-neutral);
    color: var(--btn-ink);
    font-weight: 600;
    letter-spacing: -.005em;
    box-shadow: none;
    transition:
        background .18s ease,
        transform .16s var(--btn-ease),
        color .18s ease;
}

body .btn-quote svg,
body .tq-visit svg,
body .mobile-cta-bar .mcb-rdv svg,
body .mobile-cta-bar.is-warm .mcb-quote svg {
    stroke: var(--btn-ink);
}

@media (hover: hover) and (pointer: fine) {
    body .btn-quote:hover,
    body .dx-btn-alt:hover,
    body .cm-btn-ghost:hover,
    body .cm-btn-second:hover,
    body .tq-visit:hover,
    body .nm-cta:not(.rdv):hover,
    body .mobile-cta-bar .mcb-rdv:hover,
    body .mobile-cta-bar.is-warm .mcb-quote:hover {
        background: var(--btn-neutral-hover);
        color: var(--btn-ink);
        border-color: rgba(26, 26, 26, .07);
        opacity: 1;
        transform: translateY(-1px);
        box-shadow: none;
    }

    body .btn-quote:hover svg,
    body .tq-visit:hover svg {
        stroke: var(--btn-ink);
    }
}

body .btn-quote:active,
body .dx-btn-alt:active,
body .cm-btn-ghost:active,
body .cm-btn-second:active,
body .tq-visit:active,
body .nm-cta:not(.rdv):active,
body .mobile-cta-bar .mcb-rdv:active,
body .mobile-cta-bar.is-warm .mcb-quote:active {
    background: var(--btn-neutral-active);
    transform: scale(.98);
}

/* ------------------------------------------------- petits boutons ronds */
/* Flèches de carrousel et commandes de carte : blancs, un filet, rien de plus. */
body .int-nav button,
body .cm-ctrl {
    border: 1px solid rgba(26, 26, 26, .08);
    background: #fff;
    color: var(--btn-ink);
    box-shadow: 0 1px 2px rgba(26, 26, 26, .06);
    transition:
        background .18s ease,
        transform .16s var(--btn-ease),
        border-color .18s ease;
}

@media (hover: hover) and (pointer: fine) {
    body .int-nav button:hover,
    body .cm-ctrl:hover {
        background: var(--btn-neutral);
        color: var(--btn-ink);
        border-color: rgba(26, 26, 26, .1);
        transform: translateY(-1px);
    }
}

body .int-nav button:active,
body .cm-ctrl:active {
    background: var(--btn-neutral-active);
    transform: scale(.96);
}

/* --------------------------------------- boutons posés sur des visuels */
body .cm-card-link,
body .dx-full,
body .cm-expand,
body .cm-map-gesture {
    border-radius: var(--btn-r-sm);
}

@media (hover: hover) and (pointer: fine) {
    /* « Entrer » sur une photo : le même vert profond, sans dégradé. */
    body .cm-card-link:hover {
        background: var(--btn-primary);
        color: #fff;
    }
}

/* ------------------------------------------------------------ clavier */
body .btn-primary:focus-visible,
body .btn-call:focus-visible,
body .btn-quote:focus-visible,
body .pr-btn:focus-visible,
body .dx-btn-alt:focus-visible,
body .tq-visit:focus-visible,
body .ctc-cta:focus-visible,
body .cb-next:focus-visible,
body .cb-boost-btn:focus-visible,
body .cm-btn-primary:focus-visible,
body .cm-btn-ghost:focus-visible,
body .cm-btn-enter:focus-visible,
body .int-nav button:focus-visible,
body .cm-ctrl:focus-visible {
    outline: 2px solid var(--btn-primary);
    outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
    body .btn-primary,
    body .btn-call,
    body .btn-quote,
    body .pr-btn,
    body .dx-btn-alt,
    body .tq-visit,
    body .ctc-cta,
    body .cb-next,
    body .cb-boost-btn,
    body .cm-btn-primary,
    body .cm-btn-ghost,
    body .cm-btn-enter,
    body .cm-btn-second,
    body .int-nav button,
    body .cm-ctrl {
        transition-duration: .01ms;
    }
}
