/* Olivia — couche « design system » chargée sur toutes les pages, après style.css.
   Jetons repris de tailwind.config.js (+ terracotta foncé pour le texte et les boutons,
   le terracotta d'origine #D07B53 n'atteint pas 4.5:1 sous du texte blanc). */

:root {
    --olv-terracotta: #D07B53;      /* accents décoratifs, grands titres manuscrits */
    --olv-terracotta-fonce: #A95A35;/* boutons, liens, texte d'accent (5:1 sur blanc) */
    --olv-beige: #D6BFAB;           /* filets, bordures de pastilles */
    --olv-creme: #FAF5F2;           /* fonds de tranche */
    --olv-blanc: #FFFFFF;
    --olv-texte: #505050;           /* texte courant */
    --olv-gris: #A7A9AC;            /* texte secondaire grand format uniquement */

    --olv-radius-pill: 999px;
    --olv-ombre-flottant: 0 6px 20px rgba(80, 80, 80, .22);
}

/* Texte réservé aux lecteurs d'écran */
.screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ---------- Menu : lien Accueil en icône maison ---------- */
.olv-nav-maison {
    display: inline-flex;
    align-items: center;
    color: var(--olv-texte);
    opacity: .7;
    transition: opacity .2s ease, color .2s ease;
}

.olv-nav-maison svg {
    width: 20px;
    height: 20px;
    display: block;
}

a:hover > .olv-nav-maison,
a:focus-visible > .olv-nav-maison,
.current-menu-item > a > .olv-nav-maison {
    opacity: 1;
    color: var(--olv-terracotta-fonce);
}

/* ---------- Bouton Contact flottant ---------- */
.olv-contact-flottant {
    position: fixed;
    right: calc(1.25rem + env(safe-area-inset-right, 0px));
    bottom: calc(5rem + env(safe-area-inset-bottom, 0px)); /* au-dessus de l'onglet cookies */
    z-index: 900; /* sous le bandeau cookies (Complianz) */
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    padding: .85rem 1.35rem .85rem 1.1rem;
    border-radius: var(--olv-radius-pill);
    background: var(--olv-terracotta-fonce);
    color: var(--olv-blanc);
    font-size: .8125rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    text-decoration: none;
    box-shadow: var(--olv-ombre-flottant);
    transition: background-color .25s ease, transform .25s ease, box-shadow .25s ease;
}

.olv-contact-flottant svg {
    width: 18px;
    height: 18px;
    flex: none;
}

.olv-contact-flottant:hover,
.olv-contact-flottant:focus-visible {
    background: var(--olv-texte);
    transform: translateY(-2px);
    box-shadow: 0 10px 26px rgba(80, 80, 80, .28);
}

.olv-contact-flottant:focus-visible {
    outline: 2px solid var(--olv-texte);
    outline-offset: 3px;
}

/* Petit écran : pastille ronde, icône seule */
@media (max-width: 639px) {
    .olv-contact-flottant {
        padding: 0;
        width: 3.25rem;
        height: 3.25rem;
        justify-content: center;
    }
    .olv-contact-flottant__libelle {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
    }
    .olv-contact-flottant svg {
        width: 22px;
        height: 22px;
    }
}

@media (prefers-reduced-motion: no-preference) {
    .olv-contact-flottant {
        animation: olv-flottant-in .6s .8s cubic-bezier(.2, .7, .2, 1) both;
    }
}

@keyframes olv-flottant-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: none; }
}

@media print {
    .olv-contact-flottant { display: none; }
}

/* ---------- Popin de coordonnées (bouton Contact flottant) ---------- */
.olv-popin {
    width: min(26rem, calc(100vw - 2rem));
    max-height: calc(100dvh - 2rem);
    margin: auto;
    padding: 0;
    border: 0;
    background: var(--olv-blanc);
    color: var(--olv-texte);
    box-shadow: 0 18px 50px rgba(40, 32, 28, .25);
    overflow: auto;
}

/* Sur mobile : panneau en bas de l'écran */
@media (max-width: 639px) {
    .olv-popin {
        width: 100%;
        max-width: none;
        margin: auto 0 0;
    }
    .olv-popin__boite { padding-bottom: calc(1.75rem + env(safe-area-inset-bottom, 0px)); }
}

.olv-popin::backdrop { background: rgba(40, 32, 28, .45); }

.olv-popin__boite {
    position: relative;
    padding: 2rem 1.75rem 1.75rem;
}

.olv-popin__fermer {
    position: absolute;
    top: .75rem;
    right: .75rem;
    display: grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 0;
    border-radius: var(--olv-radius-pill);
    background: transparent;
    color: var(--olv-texte);
    cursor: pointer;
}

.olv-popin__fermer svg { width: 20px; height: 20px; }
.olv-popin__fermer:hover,
.olv-popin__fermer:focus-visible { background: var(--olv-creme); outline: none; }

.olv-popin__titre {
    margin: 0;
    font-family: argent-cf, Georgia, serif;
    font-weight: 400;
    font-size: 1.75rem;
    line-height: 1.15;
}

.olv-popin__sous-titre { margin: .35rem 0 0; font-size: .875rem; line-height: 1.5; }

.olv-popin .olv-popin__filet { margin: 1rem 0 1.25rem; }

.olv-popin__liste {
    display: grid;
    gap: .25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.olv-popin__ligne {
    display: flex;
    align-items: center;
    gap: .9rem;
    padding: .6rem .5rem;
    margin: 0 -.5rem;
    color: var(--olv-texte);
    font-size: .9375rem;
    line-height: 1.4;
    text-decoration: none;
}

a.olv-popin__ligne:hover,
a.olv-popin__ligne:focus-visible { background: var(--olv-creme); outline: none; }

.olv-popin__ligne > svg {
    flex: none;
    width: 2.5rem;
    height: 2.5rem;
    padding: .6rem;
    border: 1px solid var(--olv-beige);
    border-radius: var(--olv-radius-pill);
    color: var(--olv-terracotta-fonce);
}

.olv-popin__label {
    display: block;
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--olv-terracotta-fonce);
}

.olv-popin .olv-popin__cta {
    display: block;
    margin-top: 1.25rem;
    text-align: center;
}

html.olv-popin-ouverte { overflow: hidden; }

@media (prefers-reduced-motion: no-preference) {
    .olv-popin[open] { animation: olv-popin-in .25s cubic-bezier(.2, .7, .2, 1); }
}

@keyframes olv-popin-in {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: none; }
}

/* ---------- Pied de page ---------- */
.olv-pied {
    background: var(--olv-texte);
    color: var(--olv-blanc);
    padding: 3rem max(1.25rem, env(safe-area-inset-left, 0px)) calc(1.5rem + env(safe-area-inset-bottom, 0px));
}

.olv-pied__inner {
    display: grid;
    gap: 2rem;
    max-width: 1020px;
    margin: 0 auto;
}

.olv-pied__haut {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem 2rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid rgba(255, 255, 255, .2);
}

.olv-pied__logo img { display: block; width: 140px; height: auto; }

/* Menu du pied de page : même logique que le menu principal */
.olv-pied .footer-menu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem 1.75rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-weight: 300;
}

.olv-pied .footer-menu li { padding: 0; }

.olv-pied .footer-menu a {
    color: var(--olv-blanc);
    font-size: .9375rem;
    font-weight: 300;
    text-decoration: none;
}

.olv-pied .footer-menu a:hover,
.olv-pied .footer-menu a:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

.olv-pied .footer-menu .current-menu-item > a { font-weight: 600; }

.olv-pied .olv-nav-maison { color: var(--olv-blanc); opacity: .85; }
.olv-pied a:hover > .olv-nav-maison,
.olv-pied .current-menu-item > a > .olv-nav-maison { color: var(--olv-blanc); opacity: 1; }

.olv-pied__milieu {
    display: grid;
    gap: 1.5rem 3rem;
    font-size: .875rem;
    line-height: 1.7;
}

@media (min-width: 768px) {
    .olv-pied__milieu { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) auto; align-items: start; }
}

.olv-pied__texte p { margin: 0 0 .5rem; }
.olv-pied__texte p:last-child { margin-bottom: 0; }

.olv-pied__reseaux { display: flex; gap: .5rem; }

.olv-pied__reseau {
    display: inline-grid;
    place-items: center;
    width: 2.5rem;
    height: 2.5rem;
    border: 1px solid rgba(255, 255, 255, .45);
    border-radius: var(--olv-radius-pill);
    color: var(--olv-blanc);
    transition: background-color .2s ease, border-color .2s ease;
}

.olv-pied__reseau svg { width: 18px; height: 18px; }

.olv-pied__reseau:hover,
.olv-pied__reseau:focus-visible { background: var(--olv-terracotta-fonce); border-color: var(--olv-terracotta-fonce); }

.olv-pied__bas {
    margin: 0;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, .2);
    font-size: .75rem;
    letter-spacing: .04em;
    opacity: .8;
}

.olv-pied a:focus-visible { outline: 2px solid var(--olv-blanc); outline-offset: 3px; }

/* ---------- Menu mobile (partials/header.php, assets/js/menu-mobile.js) ---------- */
.olv-burger {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    margin: 0 .25rem 0 0;
    padding: .55rem .9rem .55rem 1.05rem;
    border: 1px solid var(--olv-beige);
    border-radius: var(--olv-radius-pill);
    background: var(--olv-blanc);
    color: var(--olv-texte);
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    cursor: pointer;
    transition: border-color .2s ease, background-color .2s ease;
}

.olv-burger:hover { border-color: var(--olv-terracotta-fonce); }
.olv-burger:focus-visible { outline: 2px solid var(--olv-terracotta-fonce); outline-offset: 3px; }

.olv-burger__traits { display: grid; gap: 5px; width: 20px; }
.olv-burger__traits span { display: block; height: 1.5px; background: currentColor; border-radius: 2px; }
.olv-burger__traits span:last-child { width: 70%; justify-self: end; }

@media (min-width: 1024px) {
    .olv-burger, .olv-menu-mobile { display: none !important; }
}

/* Panneau plein écran */
.olv-menu-mobile {
    position: fixed;
    inset: 0;
    width: 100%;
    max-width: none;
    height: 100dvh;
    max-height: none;
    margin: 0;
    padding: 0 max(1.25rem, env(safe-area-inset-left, 0px)) calc(1.5rem + env(safe-area-inset-bottom, 0px));
    border: 0;
    background: var(--olv-creme);
    color: var(--olv-texte);
    overflow-y: auto;
    overscroll-behavior: contain;
}

.olv-menu-mobile[open] { display: flex; flex-direction: column; }
.olv-menu-mobile::backdrop { background: var(--olv-creme); }

.olv-menu-mobile__haut {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 4.5rem;
    padding-top: env(safe-area-inset-top, 0px);
}

.olv-menu-mobile__haut .custom-logo { max-width: 110px; height: auto; }

.olv-menu-mobile__fermer {
    display: grid;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 1px solid var(--olv-beige);
    border-radius: var(--olv-radius-pill);
    background: transparent;
    color: var(--olv-texte);
    cursor: pointer;
}

.olv-menu-mobile__fermer svg { width: 20px; height: 20px; }
.olv-menu-mobile__fermer:hover,
.olv-menu-mobile__fermer:focus-visible { border-color: var(--olv-terracotta-fonce); color: var(--olv-terracotta-fonce); outline: none; }

.olv-menu-mobile__nav { flex: 1; display: flex; align-items: center; padding: 1.5rem 0; }

.olv-menu-mobile__liste {
    width: 100%;
    margin: 0;
    padding: 0;
    list-style: none;
}

.olv-menu-mobile__liste > li { border-bottom: 1px solid var(--olv-beige); }
.olv-menu-mobile__liste > li:first-child { border-top: 1px solid var(--olv-beige); }

.olv-menu-mobile__liste a {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    padding: .95rem 0;
    color: var(--olv-texte);
    font-family: argent-cf, Georgia, serif;
    font-size: clamp(1.5rem, 1.2rem + 1.5vw, 2rem);
    font-weight: 400;
    line-height: 1.15;
    text-decoration: none;
}
.olv-menu-mobile__liste a::after {
    content: "→";
    margin-left: auto;
    font-family: 'Open Sans', sans-serif;
    font-size: 1.1rem;
    color: var(--olv-terracotta-fonce);
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .2s ease, transform .2s ease;
}

.olv-menu-mobile__liste a:hover::after,
.olv-menu-mobile__liste a:focus-visible::after,
.olv-menu-mobile__liste .current-menu-item > a::after { opacity: 1; transform: none; }

.olv-menu-mobile__liste a:focus-visible { outline: none; color: var(--olv-terracotta-fonce); }
.olv-menu-mobile__liste .current-menu-item > a { color: var(--olv-terracotta-fonce); }

/* Sous-menus éventuels */
.olv-menu-mobile__liste .sub-menu { margin: 0 0 .75rem 1rem; padding: 0; list-style: none; }
.olv-menu-mobile__liste .sub-menu a { padding: .35rem 0; font-size: 1.125rem; }

.olv-menu-mobile__bas { display: grid; gap: 1.1rem; }
.olv-menu-mobile .olv-menu-mobile__cta { display: block; text-align: center; }

.olv-menu-mobile__coord {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem 1.5rem;
    font-size: .875rem;
}

.olv-menu-mobile__coord a {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .4rem 0;
    color: var(--olv-texte);
    text-decoration: none;
}

.olv-menu-mobile__coord svg { width: 18px; height: 18px; color: var(--olv-terracotta-fonce); }
.olv-menu-mobile__coord a:hover span,
.olv-menu-mobile__coord a:focus-visible span { text-decoration: underline; text-underline-offset: 3px; }

/* Animations : panneau en fondu, liens en cascade */
@media (prefers-reduced-motion: no-preference) {
    .olv-menu-mobile[open] { animation: olv-menu-in .3s cubic-bezier(.2, .7, .2, 1); }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li { animation: olv-menu-lien .45s cubic-bezier(.2, .7, .2, 1) both; }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li:nth-child(2) { animation-delay: .04s; }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li:nth-child(3) { animation-delay: .08s; }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li:nth-child(4) { animation-delay: .12s; }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li:nth-child(5) { animation-delay: .16s; }
    .olv-menu-mobile[open] .olv-menu-mobile__liste > li:nth-child(n+6) { animation-delay: .2s; }
    .olv-menu-mobile--sortie { animation: olv-menu-out .2s ease forwards !important; }
}

@keyframes olv-menu-in   { from { opacity: 0; } to { opacity: 1; } }
@keyframes olv-menu-out  { to { opacity: 0; } }
@keyframes olv-menu-lien { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* ---------- Menu principal (ordinateur) : survol ---------- */
.olv-entete .menu-menu-principal-container li > a {
    position: relative;
    display: inline-block;
    padding: .35rem 0;
    color: var(--olv-texte);
    text-decoration: none;
    transition: color .25s ease;
}

/* Filet terracotta qui se déploie depuis le centre (sauf l'icône maison) */
.olv-entete .menu-menu-principal-container li > a:not(:has(.olv-nav-maison))::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: var(--olv-terracotta);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .3s cubic-bezier(.2, .7, .2, 1);
}

.olv-entete .menu-menu-principal-container li > a:hover,
.olv-entete .menu-menu-principal-container li > a:focus-visible { color: var(--olv-terracotta-fonce); }

.olv-entete .menu-menu-principal-container li > a:hover::after,
.olv-entete .menu-menu-principal-container li > a:focus-visible::after,
.olv-entete .menu-menu-principal-container .current-menu-item > a::after,
.olv-entete .menu-menu-principal-container .current-page-ancestor > a::after { transform: scaleX(1); }

.olv-entete .menu-menu-principal-container li > a:focus-visible { outline: none; }

@media (prefers-reduced-motion: reduce) {
    .olv-entete .menu-menu-principal-container li > a::after { transition: none; }
}
