:root {
    --wine-red: #7a0d16;
    --wine-red-dark: #651018;
    --wine-red-soft: #9a3940;
    --paper: #f3f0ea;
    --paper-soft: #f8f5ef;
    --ink: #2d2523;
    --muted: #6b5d58;
    --gold: #c4a05b;
    --white: #fff;
    --font-display: 'Cormorant Garamond', Georgia, serif;
    --font-body: 'Cormorant Garamond', Georgia, serif;
    --footer-height: 72px;
    --header-height: 92px;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    min-height: 100%;
}

body {
    min-height: 100%;
    margin: 0;
    overflow-x: hidden;
    font-size: 20px;
    color: var(--ink);
    font-family: var(--font-body);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

img {
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
}

button,
a {
    -webkit-tap-highlight-color: transparent;
}

button:focus-visible,
a:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 4px;
}

/* ============================================================
   HEADER / NAVIGATION
   ============================================================ */
.site-header {
    position: relative;
    z-index: 300;
}

.wine-nav-top {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 300;
    width: 55%;
    padding: 31px 54px 24px;
    text-align: right;
    pointer-events: none;
}

.wine-nav-top .menu-list {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(24px, 3vw, 44px);
    margin: 0;
    padding: 0;
    list-style: none;
    pointer-events: auto;
}

.wine-nav-top .menu-list ul {
    position: absolute;
    min-width: 180px;
    margin: 0;
    padding: 12px;
    background: rgba(248, 245, 239, 0.98);
    box-shadow: 0 12px 35px rgba(35, 18, 18, 0.12);
    list-style: none;
    visibility: hidden;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 180ms ease, transform 180ms ease, visibility 180ms ease;
}

.wine-nav-top .menu-list li:hover > ul,
.wine-nav-top .menu-list li:focus-within > ul {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
}

.wine-nav-top .menu-list a {
    position: relative;
    display: inline-block;
    padding: 3px 0 7px;
    color: var(--wine-red);
    font-family: var(--font-display);
font-weight: 500;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
}

.wine-nav-top .menu-list a::after {
    content: '';
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 220ms ease;
}

.wine-nav-top .menu-list a:hover::after,
.wine-nav-top .menu-list .current-menu-item > a::after,
.wine-nav-top .menu-list .current-menu-ancestor > a::after {
    transform: scaleX(1);
}

/* ============================================================
   LOGO
   ============================================================ */
.site-logo {
    display: inline-block;
    line-height: 0;
    text-decoration: none;
}

.site-logo img {
    display: block;
    width: auto;
    max-width: 116px;
    max-height: 98px;
    object-fit: contain;
}

/* ============================================================
   SINGLE WINE / DOMAINE — STRUCTURE
   ============================================================ */
.wine-single,
.wine-layout,
.domaine-single,
.domaine-layout {
    width: 100%;
    min-height: 100vh;
}

.wine-layout {
    display: flex;
}

.domaine-layout {
    margin: 0;
}

.wine-left,
.wine-right {
    transition: opacity 180ms ease;
}

.wine-left.is-loading,
.wine-right.is-loading {
    opacity: 0.42;
    pointer-events: none;
}

.wine-left {
    position: sticky;
    top: 0;
    flex: 0 0 50%;
    width: 50%;
    max-width: 50%;
    height: 100vh;
    align-self: flex-start;
    overflow: hidden;
    background-image: var(--wine-background);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    color: var(--white);
}



.wine-brand-top,
.domaine-brand-top {
    position: absolute;
    top: 24px;
    left: 56px;
    z-index: 10;
}

.wine-brand-top .site-logo img,
.domaine-brand-top .site-logo img {
    max-width: 180px;
    max-height: 180px;
}

/* ============================================================
   SINGLE WINE — TIMELINE
   ============================================================ */

body.single-wine {
    position: relative;
    min-height: 100vh;
    background-color: #24130f;
    background-image: var(--wine-page-background, url('../images/bg04.png'));
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
}

body.single-wine::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    background:
        linear-gradient(
            180deg,
            rgba(24, 10, 5, 0.29),
            rgba(18, 5, 4, 0.42)
        ),
        linear-gradient(
            90deg,
            rgba(20, 6, 5, 0.18),
            transparent 45%,
            rgba(20, 6, 5, 0.12)
        );
    pointer-events: none;
}

body.single-wine .site-header,
body.single-wine .wine-footer {
    position: relative;
    z-index: 9;
}

.wine-timeline {
    position: absolute;
    top: 22%;
    bottom: calc(var(--footer-height) + 13%);
    right: 0px;
    z-index: 12;
    width: 24px;
}

.tl-line {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 1px;
    background: rgba(255, 255, 255, 0.62);
    transform: translateX(-50%);
}

.tl-dot {
    position: absolute;
    left: 50%;
    width: 8px;
    height: 8px;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.75);
    border-radius: 50%;
    background: var(--wine-red);
    box-shadow: 0 0 0 2px rgba(196, 160, 91, 0.28);
    cursor: pointer;
    transform: translate(-50%, -50%);
    transition: width 160ms ease, height 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

.tl-dot:hover,
.tl-dot.is-active {
    width: 12px;
    height: 12px;
    background: var(--wine-red);
    box-shadow: 0 0 0 3px rgba(196, 160, 91, 0.7);
}

.tl-arrow {
    position: absolute;
    left: 50%;
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--gold);
    cursor: pointer;
    transform: translateX(-50%);
}

.tl-arrow--up {
    top: -30px;
}

.tl-arrow--down {
    bottom: -30px;
}

.tl-arrow:disabled {
    opacity: 0.26;
    cursor: default;
}

/* ============================================================
   SINGLE WINE — BOUTEILLE ET TITRE
   ============================================================ */
.wine-bottle-wrap {
    position: absolute;
    inset: 70px 7% calc(var(--footer-height) + 36px) 12%;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.wine-bottle-img {
    display: block;
    width: auto;
    max-width: 52%;
    max-height: 64vh;
    object-fit: contain;
    filter: drop-shadow(0 28px 36px rgba(0, 0, 0, 0.52));
    transform-origin: bottom center;
}

.wine-bottle-swiper {
    width: 100%;
    height: 100%;
    pointer-events: auto;
}

.wine-bottle-swiper .swiper-wrapper,
.wine-bottle-swiper .swiper-slide {
    height: 100%;
}

.wine-bottle-swiper .swiper-slide {
    display: flex;
    align-items: center;
    justify-content: center;
}

.wine-bottle-swiper .swiper-pagination {
    bottom: 6px;
}

.wine-bottle-swiper .swiper-pagination-bullet {
    background: rgba(255, 255, 255, 0.9);
}

.wine-big-title,
.domaine-big-title {
    position: absolute;
    right: 34px;
    bottom: calc(var(--footer-height) + 24px);
    left: 87px;
    z-index: 15;
    max-width: 62%;
    color: var(--white);
    text-shadow: 0 2px 18px rgba(0, 0, 0, 0.42);
}

.wine-big-title__eyebrow,
.domaine-big-title__eyebrow {
    margin: 0 0 4px;
    font-family: var(--font-display);
    font-style: italic;
    letter-spacing: 0.04em;
}

.wine-big-title h1,
.domaine-big-title h1 {
    margin: 0;
    color: inherit;
    font-family: var(--font-display);
    font-weight: 400;
    line-height: 0.9;
    letter-spacing: -0.015em;
}

/* ============================================================
   SINGLE WINE — PANNEAU DROIT
   ============================================================ */
.wine-right {
    flex: 0 0 50%;
    width: 50%;
    z-index: 2;
    max-width: 50%;
}

.wine-right,
.domaine-right {
    min-height: 100vh;
    padding: 105px clamp(48px, 6vw, 92px) calc(var(--footer-height) + 48px);
    overflow-y: auto;
    background: url('../images/bg04.png') no-repeat top left;
    background-size: cover;
}

.wine-right-inner,
.domaine-right-inner {
    position: relative;
    width: 100%;
    max-width: 570px;
    margin: 0 auto;
}

.wine-switch-link {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    min-height: 26px;
    margin: 0 0 32px auto;
    color: var(--wine-red);
    font-family: var(--font-display);
text-decoration: none;
}

.wine-switch-link:hover {
    color: var(--wine-red-dark);
}

.wine-meta-tags {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    margin: 0 0 18px;
}

.meta-tag {
    display: block;
    min-height: 28px;
    padding: 6px 5px 7px;
    border-top: 1px solid rgba(122, 13, 22, 0.48);
    border-bottom: 1px solid rgba(122, 13, 22, 0.48);
    color: var(--wine-red);
    font-family: var(--font-display);
line-height: 1.05;
    text-align: center;
}

.wine-grape {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 32px;
    color: var(--wine-red);
    font-family: var(--font-display);
}

.wine-grape__icon {
    display: inline-flex;
    gap: 0;
}

.wine-grape__icon i:nth-child(2) {
    transform: translateY(5px);
}

.wine-description {
    margin-bottom: 26px;
    color: var(--ink);
    font-family: var(--font-body);
line-height: 1.18;
}

.wine-description p {
    margin: 0 0 1rem;
}

.wine-description p:last-child {
    margin-bottom: 0;
}

.wine-specs {
    gap: 7px 28px;

    color: var(--wine-red);
}

.spec-row {
    margin: 0;
}

.spec-row p {
    margin: 0;
}

.spec-row dt {
    font-weight: 500;
}

.spec-row dd {
    font-weight: 400;
    text-align: right;
}

.wine-extra-content {
    margin: 32px 0 22px;
    border-top: 1px solid rgba(122, 13, 22, 0.23);
}

.wine-extra-block {
    padding: 18px 0 0;
}

.wine-extra-block h2 {
    margin: 0 0 6px;
    color: var(--wine-red);
    font-family: var(--font-display);
font-weight: 500;
}

.wine-extra-block p {
    margin: 0;
    font-family: var(--font-display);
line-height: 1.35;
}

.wine-map-link {
    display: flex;
    justify-content: flex-end;
    margin-top: 30px;
}

.wine-map-link a,
.wine-archive-map a {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    color: var(--wine-red);
    font-family: var(--font-display);
text-decoration: none;
}

.map-pin {
    position: relative;
    display: inline-grid;
    width: 40px;
    height: 30px;
    place-items: center;
    color: var(--wine-red);
}

.map-pin::before,
.map-pin::after {
    display: none;
}

.map-pin::before {
    left: 1px;
}

.map-pin::after {
    right: 1px;
}

.map-pin i {
    position: relative;
    z-index: 2;
}


/* ============================================================
   PAGE DOMAINE — FOND GLOBAL ET STRUCTURE
   ============================================================ */

body.domaine-page {
    position: relative;
    min-height: 100vh;
    background-color: #24130f;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
}

body.domaine-page::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    background:
        linear-gradient(
            180deg,
            rgba(24, 10, 5, 0.20),
            rgba(18, 5, 4, 0.34)
        ),
        linear-gradient(
            90deg,
            rgba(20, 6, 5, 0.14),
            transparent 48%,
            rgba(20, 6, 5, 0.08)
        );
    pointer-events: none;
}

body.domaine-page .site-header,
body.domaine-page .wine-footer {
    position: relative;
    z-index: 9;
}

.domaine-single {
    position: relative;
    z-index: 1;
    background: transparent;
}

.domaine-left {
    position: sticky;
    top: 0;
    height: 100vh;
    align-self: flex-start;
    overflow: hidden;
    background: transparent;
    color: var(--white);
}

.domaine-left-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(
            180deg,
            rgba(15, 6, 4, 0.06),
            rgba(15, 6, 4, 0.24)
        );
    pointer-events: none;
}

.domaine-brand-top,
.domaine-timeline,
.domaine-big-title {
    position: absolute;
}

.domaine-right {
    position: relative;
    z-index: 2;
}

.domaine-right-inner {
    display: flex;
    min-height: calc(100vh - 105px - var(--footer-height) - 48px);
    align-items: center;
}

/* ============================================================
   PAGE DOMAINE — TIMELINE
   ============================================================ */

.domaine-timeline {
    top: 22%;
    right: 0;
    bottom: calc(var(--footer-height) + 13%);
    z-index: 12;
    width: min(300px, 48%);
    padding-right: 18px;
}

.domaine-timeline__list {
    position: relative;
    display: flex;
    width: 100%;
    height: 100%;
    flex-direction: column;
    justify-content: space-between;
    margin: 0;
    padding: 0;
    list-style: none;
}

.domaine-timeline__list::before {
    content: '';
    position: absolute;
    top: 0;
    right: 5px;
    bottom: 0;
    width: 1px;
    background: rgba(255, 255, 255, 0.62);
}

.domaine-timeline__item {
    position: relative;
    z-index: 1;
}

.domaine-timeline__button {
    display: flex;
    width: 100%;
    align-items: center;
    flex-direction: row-reverse;
    justify-content: flex-start;
    gap: 12px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--white);
    font-family: var(--font-display);
    text-align: right;
    cursor: pointer;
    opacity: 0.62;
    transition:
        opacity 180ms ease,
        color 180ms ease;
}

.domaine-timeline__button:hover,
.domaine-timeline__button:focus-visible,
.domaine-timeline__item.is-active .domaine-timeline__button {
    color: var(--white);
    opacity: 1;
}

.domaine-timeline__marker {
    display: block;
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border: 1px solid rgba(255, 255, 255, 0.75);
    border-radius: 50%;
    background: var(--wine-red);
    box-shadow: 0 0 0 2px rgba(196, 160, 91, 0.28);
    transition:
        width 160ms ease,
        height 160ms ease,
        flex-basis 160ms ease,
        box-shadow 160ms ease;
}

.domaine-timeline__item.is-active .domaine-timeline__marker,
.domaine-timeline__button:hover .domaine-timeline__marker,
.domaine-timeline__button:focus-visible .domaine-timeline__marker {
    width: 12px;
    height: 12px;
    flex-basis: 12px;
    box-shadow: 0 0 0 3px rgba(196, 160, 91, 0.7);
}

.domaine-timeline__label {
    display: block;
    max-width: 210px;
    line-height: 1.1;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.42);
}

/* ============================================================
   PAGE DOMAINE — CONTENU
   ============================================================ */

.domaine-sections {
    width: 100%;
}

.domaine-section {
    width: 100%;
}

.domaine-section[hidden] {
    display: none !important;
}

.domaine-section.is-active {
    animation: domaine-section-in 420ms cubic-bezier(0.22, 1, 0.36, 1);
}

.domaine-section__content {
    color: var(--ink);
    font-family: var(--font-body);
    line-height: 1.45;
}

.domaine-section__content > :first-child {
    margin-top: 0;
}

.domaine-section__content > :last-child {
    margin-bottom: 0;
}

.domaine-section__content h2,
.domaine-section__content h3,
.domaine-section__content h4 {
    color: var(--wine-red);
    font-family: var(--font-display);
    font-weight: 500;
}

.domaine-section__content a {
    color: var(--wine-red);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

.domaine-section__content img {
    height: auto;
    border-radius: 2px;
}

@keyframes domaine-section-in {
    from {
        opacity: 0;
        transform: translateY(12px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ============================================================
   ARCHIVE / TAXONOMIE WINE_COLOR
   ============================================================ */
.wine-archive-page {
    width: 100%;
    min-height: 100vh;
    padding-bottom: var(--footer-height);
    background: url(../images/bg04.png);
    background-size: cover;
}

.wine-archive-side {
    position: fixed;
    inset: 0 auto var(--footer-height) 0;
    z-index: 20;
    width: 132px;
    pointer-events: none;
}

.wine-archive-side__image {


}


.wine-archive-side__logo {
    position: absolute;
    top: 24px;
    left: 84px;
    z-index: 5;
    width: 82px;
    transform: translateX(-50%);
    pointer-events: auto;
}

.wine-archive-side__logo .site-logo img {
    width: 78px;
    max-height: 74px;
}

/* Ascenseur de page : indépendant de la timeline du single wine. */
.page-elevator {
    --scroll-progress: 0;
    --elevator-y: 0px;
    position: absolute;
    top: 18%;
    bottom: 8%;
    left: 72px;
    z-index: 5;
    width: 26px;
}

.page-elevator__track {
    position: relative;
    width: 100%;
    height: 100%;
}

.page-elevator__track::before,
.page-elevator__progress {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 1px;
    transform: translateX(-50%);
    transform-origin: top center;
}

.page-elevator__track::before {
    background: rgba(196, 160, 91, 0.58);
}

.page-elevator__progress {
    background: var(--gold);
    transform: translateX(-50%) scaleY(var(--scroll-progress));
}

.page-elevator__marker,
.page-elevator__dot {
    display: block;
    width: 8px;
    height: 8px;
    border: 1px solid rgba(196, 160, 91, 0.9);
    border-radius: 50%;
    background: var(--wine-red);
    box-shadow: 0 0 0 2px rgba(248, 245, 239, 0.72);
}

.page-elevator__marker {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
}

.page-elevator__marker--start {
    top: 0;
}

.page-elevator__marker--end {
    top: 100%;
}

.page-elevator__thumb {
    position: absolute;
    top: 0;
    left: 50%;
    display: flex;
    width: 20px;
    height: 44px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    transform: translate3d(-50%, var(--elevator-y), 0);
    will-change: transform;
}

.page-elevator__dot {
    width: 10px;
    height: 10px;
    box-shadow: 0 0 0 3px rgba(248, 245, 239, 0.9);
}

.page-elevator__chevron {
    display: block;
    width: 7px;
    height: 7px;
    border-top: 2px solid var(--gold);
    border-left: 2px solid var(--gold);
}

.page-elevator__chevron--up {
    transform: rotate(45deg);
}

.page-elevator__chevron--down {
    transform: rotate(225deg);
}

.page-elevator.is-static .page-elevator__thumb {
    top: 50%;
    transform: translate3d(-50%, -50%, 0);
}

.wine-archive-content {
    position: relative;
    width: 100%;
    min-height: calc(100vh - var(--footer-height));
    padding: 56px clamp(42px, 6vw, 86px) 34px clamp(146px, 15vw, 190px);
}

.wine-archive-heading {
    position: relative;
    min-height: 58px;
    margin-bottom: 2px;
}

.wine-archive-heading h1 {
    margin: 0;
    color: var(--wine-red);
    font-family: var(--font-display);
font-weight: 500;
    line-height: 1;
    text-align: center;
}

.wine-archive-switch {
    position: absolute;
    top: 2px;
    right: 0;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--wine-red);
    font-family: var(--font-display);
text-decoration: none;
}

.wine-archive-grid-container {
    width: 100%;
}

.wine-grid {
    --bs-gutter-x: clamp(18px, 3.2vw, 52px);
    --bs-gutter-y: clamp(18px, 2.8vh, 28px);
    align-items: stretch;
}

.wine-grid__item {
    display: flex;
}

.wine-card {
    width: 100%;
    min-width: 0;
}

.wine-card__link {
    display: flex;
    height: 100%;
    flex-direction: column;
    align-items: center;
    color: var(--wine-red);
    text-decoration: none;
}
.wine-card figure {
    height: 400px;
}
.wine-card__visual {
    display: flex;
    width: 100%;
    height: clamp(162px, 24vh, 215px);
    align-items: flex-end;
    justify-content: center;
    margin: 0 0 8px;
}

.wine-card__bottle {
    width: auto;
    height: 100%;
    object-fit: contain;
    filter: drop-shadow(0 12px 13px rgba(70, 45, 18, 0.18));
    transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

.wine-card__link:hover .wine-card__bottle,
.wine-card__link:focus-visible .wine-card__bottle {
    transform: translateY(-6px);
}

.wine-card__placeholder {
    display: block;
    width: 45px;
    height: 150px;
    border-radius: 18px 18px 8px 8px;
    background: linear-gradient(90deg, rgba(122, 13, 22, 0.16), rgba(122, 13, 22, 0.05));
}

.wine-card__title {
    margin: 0;
    color: inherit;
    font-family: var(--font-display);
    font-weight: 400;
    line-height: 1;
    text-align: center;
    text-wrap: balance;
}

.wine-archive-map {
    display: flex;
    justify-content: flex-end;
    margin-top: 18px;
}

.wine-archive-empty {
    margin: 90px auto;
    color: var(--wine-red);
    font-family: var(--font-display);
text-align: center;
}

/* ============================================================
   FOOTER
   ============================================================ */
.wine-footer {

    right: 0;
    bottom: 0;
    left: 0;
    z-index: 400;
    min-height: var(--footer-height);
    padding: 9px 52px;
    background: var(--wine-red);
    color: rgba(255, 255, 255, 0.94);
    font-family: var(--font-display);
}

.wine-footer a {
    color: inherit;
    text-decoration: none;
}

.footer-infos p,
.footer-brand p,
.footer-legal p {
    margin: 0;
}

.footer-infos {
}

.footer-infos .copyright,
.legal-txt,
.warning {
    margin-top: 2px;
}

.footer-label {
line-height: 1;
}

.footer-name {
line-height: 1;
}

.socials a {
    margin-left: 14px;
}

.socials a:hover {
    color: var(--gold);
}

/* ============================================================
   MENU MOBILE
   ============================================================ */
.mobile-topbar {
    display: none;
}

.mobile-menu-toggle {
    display: flex;
    width: 34px;
    height: 28px;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: 5px;
    padding: 0;
    border: 0;
    background: transparent;
}

.mobile-menu-toggle span {
    display: block;
    height: 1px;
    background: var(--wine-red);
}

.mobile-menu-toggle span:nth-child(1),
.mobile-menu-toggle span:nth-child(3) {
    width: 26px;
}

.mobile-menu-toggle span:nth-child(2) {
    width: 18px;
}

.wine-sidebar {
    width: min(86vw, 390px) !important;
    border: 0 !important;

}

.sidebar-logo img {
    width: 92px;
    max-height: 80px;
    object-fit: contain;
}

.sidebar-menu-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
    text-align: center;
}

.sidebar-menu-list ul {
    margin: 7px 0 0;
    padding: 0;
    list-style: none;
}

.sidebar-menu-list a {
    color: var(--wine-red);
    font-family: var(--font-display);
text-decoration: none;
}

.sidebar-menu-list ul a {
}

.sidebar-deco {
    width: 46px;
    height: 1px;
    margin-right: auto;
    margin-left: auto;
    background: var(--gold);
}

/* ============================================================
   FALLBACK GENERIQUE
   ============================================================ */
.generic-page-shell {
    min-height: 100vh;
    padding: 130px 24px calc(var(--footer-height) + 60px);
}

.generic-page-inner {
    width: min(100%, 980px);
    margin: 0 auto;
}

.generic-entry {
    margin-bottom: 44px;
}

.generic-entry__title {
    margin: 0 0 12px;
    color: var(--wine-red);
    font-family: var(--font-display);
}

.generic-entry__title a {
    text-decoration: none;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1199px) {
    .wine-right,
    .domaine-right {
        padding-right: 48px;
        padding-left: 48px;
    }

    .wine-archive-content {
        padding-left: 150px;
    }
}

@media (max-width: 991px) {
    :root {
        --footer-height: 0px;
        --header-height: 64px;
    }

    .wine-nav-top {
        display: none !important;
    }

    .mobile-topbar {
        position: fixed;
        top: 0;
        right: 0;
        left: 0;
        z-index: 350;
        display: flex;
        height: var(--header-height);
        align-items: center;
        justify-content: space-between;
        padding: 8px 20px;
        border-bottom: 1px solid rgba(122, 13, 22, 0.08);
        background: rgba(243, 240, 234, 0.96);
        backdrop-filter: blur(10px);
    }

    .topbar-logo img {
        width: auto;
        max-width: 72px;
        max-height: 48px;
        object-fit: contain;
    }

    .wine-layout {
        display: block;
    }

    .wine-left,
    .wine-right {
        width: 100%;
        max-width: 100%;
    }

    .wine-left,
    .domaine-left {
        position: relative;
        height: min(720px, 74vh);
        min-height: 570px;
    }

    .wine-brand-top,
    .domaine-brand-top {
        top: 84px;
        left: 34px;
    }

    .wine-brand-top .site-logo img,
    .domaine-brand-top .site-logo img {
        max-width: 82px;
        max-height: 70px;
    }

    .wine-timeline {
        top: 31%;
        bottom: 18%;
        left: 34px;
    }

    .wine-bottle-wrap {
        inset: 78px 7% 60px 9%;
    }

    .wine-bottle-img {
        max-width: 42%;
        max-height: 54vh;
    }

    .wine-big-title,
    .domaine-big-title {
        bottom: 32px;
        left: 66px;
        max-width: 72%;
    }

    body.domaine-page {
        background-position: center top;
        background-attachment: scroll;
    }

    .domaine-timeline {
        top: 31%;
        right: 18px;
        bottom: 18%;
        width: min(270px, 58%);
        padding-right: 0;
    }

    .wine-right,
    .domaine-right {
        min-height: auto;
        padding: 80px 34px 74px;
        overflow: visible;
        background: url('../images/bg04.png') no-repeat top right;
        background-size: cover;
    }

    .wine-right-inner,
    .domaine-right-inner {
        max-width: 680px;
    }

    .domaine-right-inner {
        min-height: auto;
        align-items: flex-start;
    }

    .wine-archive-page {
        display: block;
        padding-bottom: 0;
    }

    .wine-archive-side {
        display: none;
    }

    .wine-archive-content {
        min-height: 100vh;
        margin-left: 0;
        padding: calc(var(--header-height) + 40px) 36px 70px;
    }

    .wine-footer {
        position: relative;
        min-height: auto;
        padding: 22px 28px;
        text-align: center;
    }

    .footer-contact {
        justify-content: center;
    }

    .footer-legal {
        text-align: center !important;
    }

    .socials a:first-child {
        margin-left: 0;
    }
}

@media (max-width: 767px) {
    .wine-meta-tags {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .wine-specs {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .wine-archive-heading {
        display: flex;
        min-height: 92px;
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        gap: 18px;
    }

    .wine-archive-switch {
        position: static;
    }
}

@media (max-width: 575px) {
    .wine-left,
    .domaine-left {
        height: 68vh;
        min-height: 500px;
    }

    .wine-brand-top,
    .domaine-brand-top {
        top: 76px;
        left: 22px;
    }

    .wine-timeline {
        top: 34%;
        bottom: 20%;
        left: 22px;
    }

    .wine-bottle-wrap {
        inset: 72px 4% 55px 12%;
    }

    .wine-bottle-img {
        max-width: 52%;
        max-height: 48vh;
    }

    .wine-big-title,
    .domaine-big-title {
        right: 20px;
        bottom: 28px;
        left: 50px;
        max-width: 78%;
    }

    .wine-big-title h1,
    .domaine-big-title h1 {
    }

    .domaine-timeline {
        right: 12px;
        width: min(235px, 62%);
    }

    .domaine-timeline__label {
        max-width: 170px;
    }

    .wine-right,
    .domaine-right {
        background: url('../images/bg04.png') no-repeat top right;
        background-size: cover;
        padding: 62px 20px 62px;
    }

    .wine-switch-link {
        margin-bottom: 26px;
    }

    .wine-description {
line-height: 1.28;
    }

    .spec-row {
        grid-template-columns: 1fr auto;
    }

    .wine-archive-content {
        padding: calc(var(--header-height) + 32px) 20px 60px;
    }



    .wine-card__title {
}

    .wine-footer {
        padding: 24px 20px;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* Le logo source est blanc : sur les fonds papier mobiles, on le teinte en bordeaux. */
.topbar-logo img,
.sidebar-logo img {
    filter: brightness(0) saturate(100%) invert(12%) sepia(47%) saturate(3831%) hue-rotate(336deg) brightness(79%) contrast(103%);
}

/* ============================================================
   HOMEPAGE — HERO SWIPER
   ============================================================ */
.home-page {
    background: #1d0f0c;
}

.home-main,
.home-hero {
    width: 100%;
    min-height: 100svh;
}

.home-hero {
    position: relative;
    height: 100svh;
    min-height: 650px;
    overflow: hidden;
    background: #24130f;
    color: var(--white);
}

.site-header--home {
    position: absolute;
    inset: 0 0 auto;
    z-index: 500;
    height: 0;
}

.home-header-brand {
    position: absolute;
    top: 30px;
    left: 58px;
    z-index: 510;
}

.home-header-brand .site-logo img {
    max-width: 98px;
    max-height: 88px;
    filter: drop-shadow(0 3px 12px rgba(0, 0, 0, 0.24));
}

.home-nav-top {
    width: auto;
    min-width: 46%;
    padding-top: 39px;
}

.home-page .home-nav-top .menu-list a {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.28);
}

.home-hero-swiper,
.home-hero-swiper .swiper-wrapper,
.home-hero__slide,
.home-hero__media,
.home-hero__media picture {
    width: 100%;
    height: 100%;
}

.home-hero-swiper {
    position: absolute;
    inset: 0;
    z-index: 1;
}

.home-hero__slide {
    overflow: hidden;
    background: #24130f;
    will-change: transform, opacity;
}

.home-hero__media {
    overflow: hidden;
    clip-path: inset(0 5% 0 0);
    transform: translateZ(0);
    transition: clip-path 1700ms cubic-bezier(0.22, 1, 0.36, 1);
    will-change: clip-path;
}

.home-hero__slide.swiper-slide-active .home-hero__media {
    clip-path: inset(0 0 0 0);
}

.home-hero__media picture {
    display: block;
}

.home-hero__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    transform: scale(1.085);
    transition: transform 7200ms cubic-bezier(0.18, 0.78, 0.24, 1);
    will-change: transform;
}

.home-hero__slide.swiper-slide-active .home-hero__image {
    transform: scale(1.015);
}

.home-hero__veil {
    position: absolute;
    inset: 0;
    z-index: 5;
    background:
        linear-gradient(180deg, rgba(22, 10, 7, 0.30) 0%, rgba(18, 7, 5, 0.09) 28%, rgba(24, 8, 6, 0.18) 62%, rgba(28, 7, 7, 0.40) 100%),
        linear-gradient(90deg, rgba(14, 6, 4, 0.14), transparent 34%, transparent 68%, rgba(15, 6, 4, 0.12));
    pointer-events: none;
}

.home-hero__brand {
    position: absolute;
    top: 45.5%;
    left: 50%;
    z-index: 20;
    width: clamp(180px, 16vw, 260px);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.home-hero__brand img {
    display: block;
    width: 100%;
    height: auto;
    filter: drop-shadow(0 4px 20px rgba(0, 0, 0, 0.24));
}

.home-intro-panel {
    position: absolute;
    right: 50%;
    bottom: calc(var(--footer-height) + 18px);
    z-index: 30;
    display: grid;
    width: min(76vw, 1080px);
    min-height: 118px;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    align-items: center;
    padding: 24px 30px;
    background:
        linear-gradient(rgba(249, 247, 242, 0.975), rgba(249, 247, 242, 0.975)),
        url('../images/bg.png') center / 760px auto repeat;
    color: var(--wine-red-dark);
    clip-path: polygon(
        0.5% 2%, 7% 0.8%, 15% 1.7%, 25% 0.4%, 36% 1.4%, 47% 0.5%, 58% 1.5%, 70% 0.3%, 82% 1.4%, 94% 0.5%, 99.6% 1.8%,
        99.5% 98%, 92% 99.2%, 81% 98.2%, 70% 99.4%, 58% 98.4%, 46% 99.5%, 34% 98.1%, 22% 99.4%, 11% 98.3%, 0.4% 99%
    );
    box-shadow: 0 14px 35px rgba(35, 12, 8, 0.22);
    transform: translateX(50%);
}

.home-intro-panel__content {
    max-width: 900px;
    margin: 0 auto;
    font-family: var(--font-display);
font-weight: 500;
    line-height: 1.2;
    text-align: center;
}

.home-intro-panel__content p {
    margin: 0;
}

.home-intro-panel__content p + p {
    margin-top: 14px;
}

.home-intro-panel__ornament {
    position: relative;
    display: block;
    width: 28px;
    height: 36px;
    justify-self: center;
}

.home-intro-panel__ornament i {
    position: absolute;
    display: block;
    width: 5px;
    height: 10px;
    border-radius: 60% 40% 65% 35%;
    background: var(--wine-red);
    transform: rotate(15deg);
}

.home-intro-panel__ornament i:nth-child(1) {
    top: 2px;
    left: 5px;
}

.home-intro-panel__ornament i:nth-child(2) {
    top: 14px;
    left: 12px;
    transform: rotate(-14deg);
}

.home-intro-panel__ornament i:nth-child(3) {
    top: 5px;
    right: 3px;
    height: 7px;
    transform: rotate(28deg);
}

.home-intro-panel__ornament--right {
    transform: rotate(180deg);
}

/* Le footer desktop reste au-dessus du hero, comme sur la maquette. */
.home-page .wine-footer {
    box-shadow: 0 -1px 0 rgba(255, 255, 255, 0.06);
}

@media (max-width: 1199px) {
    .home-header-brand {
        left: 38px;
    }

    .home-nav-top {
        padding-right: 38px;
    }

    .home-intro-panel {
        width: min(82vw, 1020px);
    }
}

@media (max-width: 991px) {
    .home-main,
    .home-hero {
        min-height: 100svh;
    }

    .home-hero {
        height: 100svh;
        min-height: 620px;
    }

    .home-page .mobile-topbar {
        background: linear-gradient(180deg, rgba(18, 8, 6, 0.44), rgba(18, 8, 6, 0));
        border-bottom: 0;
        backdrop-filter: none;
    }

    .home-page .topbar-logo img {
        filter: none;
    }

    .home-page .mobile-menu-toggle span {
        background: var(--white);
        box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
    }

    .home-hero__brand {
        top: 43%;
        width: clamp(175px, 28vw, 230px);
    }

    .home-intro-panel {
        bottom: 24px;
        width: min(88vw, 780px);
        min-height: 132px;
        grid-template-columns: 34px minmax(0, 1fr) 34px;
        padding: 25px 22px;
    }

    .home-intro-panel__content {
}
}

@media (max-width: 767px) {
    .home-hero {
        min-height: 680px;
    }

    .home-hero__media {
        clip-path: inset(0 3% 0 0);
    }

    .home-hero__brand {
        top: 39%;
        width: clamp(155px, 42vw, 205px);
    }

    .home-intro-panel {
        bottom: 18px;
        width: calc(100% - 30px);
        min-height: 178px;
        grid-template-columns: 26px minmax(0, 1fr) 26px;
        padding: 24px 12px;
    }

    .home-intro-panel__content {
line-height: 1.18;
    }

    .home-intro-panel__content p + p {
        margin-top: 10px;
    }

    .home-intro-panel__ornament {
        transform: scale(0.82);
    }

    .home-intro-panel__ornament--right {
        transform: rotate(180deg) scale(0.82);
    }
}

@media (max-width: 575px) {
    .home-hero {
        min-height: 640px;
    }

    .home-hero__brand {
        top: 36%;
        width: 170px;
    }

    .home-intro-panel {
        bottom: 14px;
        min-height: 190px;
        padding-top: 22px;
        padding-bottom: 22px;
    }

    .home-intro-panel__content {
}
}

@media (prefers-reduced-motion: reduce) {
    .home-hero__media,
    .home-hero__image {
        clip-path: none !important;
        transform: none !important;
        transition: none !important;
    }
}


@media (min-width: 992px) {
    .wine-left,
    .domaine-left {
        position: sticky !important;
        top: 0;
        height: 100vh;
        align-self: flex-start;
        overflow: hidden;
    }
}

.wine-tabs {
    margin-top: 2rem;
}

.wine-tabs__nav {
    flex-wrap: nowrap;
    gap: 2rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

.wine-tabs__nav .nav-item {
    flex: 0 0 auto;
}

.wine-tabs__nav .nav-link {
    position: relative;
    padding: 0 0 0.85rem;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: inherit;
    font-size: 0.9rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    white-space: nowrap;
    opacity: 0.5;
    transition: opacity 0.25s ease;
}

.wine-tabs__nav .nav-link::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: -1px;
    left: 0;
    height: 2px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.3s ease;
}

.wine-tabs__nav .nav-link:hover,
.wine-tabs__nav .nav-link:focus,
.wine-tabs__nav .nav-link.active {
    border: 0;
    background: transparent;
    color: inherit;
    opacity: 1;
}

.wine-tabs__nav .nav-link.active::after {
    transform: scaleX(1);
}

.wine-tabs__nav .nav-link:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 4px;
    box-shadow: none;
}

.wine-tabs__content {
    padding-top: 2rem;
}

.wine-tabs__text {
    line-height: 1.75;
}

.wine-tabs__text > :last-child {
    margin-bottom: 0;
}

@media (max-width: 767.98px) {
    .wine-tabs__nav {
        gap: 1.5rem;
        overflow-x: auto;
        scrollbar-width: none;
    }

    .wine-tabs__nav::-webkit-scrollbar {
        display: none;
    }

    .wine-tabs__nav .nav-link {
        font-size: 0.82rem;
    }

    .wine-tabs__content {
        padding-top: 1.5rem;
    }
}


/* ============================================================
   SINGLE WINE — CARTE SVG / LEAFLET
   ============================================================ */

.wine-map-trigger {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--wine-red);
    font-family: var(--font-display);
    text-decoration: none;
    cursor: pointer;
}

.wine-map-trigger:hover,
.wine-map-trigger:focus-visible {
    color: var(--wine-red-dark);
}


/* ============================================================
   PANNEAU CARTE
   ============================================================ */

.wine-map-panel {
    position: absolute;
    inset: 0;
    z-index: 50;
    overflow: hidden;

    background:
        var(--paper)
        url('../images/bg.png')
        center / 760px auto repeat;

    opacity: 0;
    visibility: hidden;
    transform: translateX(-3%);

    transition:
        opacity 280ms ease,
        transform 420ms cubic-bezier(0.22, 1, 0.36, 1),
        visibility 280ms ease;
}

.wine-map-panel[hidden] {
    display: none !important;
}

.wine-map-panel.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
}


/* ============================================================
   BOUTON FERMETURE
   ============================================================ */

.wine-map-panel__close {
    position: absolute;
    top: 26px;
    right: 28px;
    z-index: 1000;

    display: inline-grid;
    width: 42px;
    height: 42px;
    place-items: center;

    padding: 0;

    border: 1px solid rgba(122, 13, 22, 0.25);
    border-radius: 50%;

    background: rgba(248, 245, 239, 0.92);

    color: var(--wine-red);
    text-decoration: none;

    backdrop-filter: blur(8px);
}

.wine-map-panel__close:hover,
.wine-map-panel__close:focus-visible {
    border-color: var(--wine-red);
    color: var(--wine-red-dark);
}


/* ============================================================
   CONTENEUR LEAFLET
   ============================================================ */

.wine-svg-map,
.wine-svg-map.leaflet-container {
    width: 100%;
    height: 100%;
    min-height: 100%;

    background: transparent;
}

.wine-svg-map .leaflet-container {
    background: transparent;
}


/* ============================================================
   PANE LEAFLET / SVG
   ============================================================ */

.wine-svg-map .leaflet-pane,
.wine-svg-map .leaflet-overlay-pane,
.wine-svg-map .leaflet-zoom-animated {
    transform-origin: center center;
}


/*
 * Important :
 * ne pas ajouter ici :
 *
 * transform: translateZ(0);
 * backface-visibility: hidden;
 * filter;
 *
 * Cela peut dégrader le rendu du SVG.
 */
.wine-svg-map .wine-domain-svg {
    overflow: visible;

    shape-rendering: geometricPrecision;
    text-rendering: geometricPrecision;
}


/*
 * SVG réellement injecté dans l'overlay Leaflet.
 */
.wine-svg-map .leaflet-overlay-pane svg {
    shape-rendering: geometricPrecision;
    text-rendering: geometricPrecision;
}


/* ============================================================
   CONTRÔLES LEAFLET
   ============================================================ */

.wine-svg-map .leaflet-control-zoom {
    margin-top: 24px;
    margin-left: 24px;

    border: 0;
    box-shadow: 0 4px 18px rgba(50, 24, 20, 0.15);
}

.wine-svg-map .leaflet-control-zoom a {
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;

    border: 0;
    border-bottom: 1px solid rgba(122, 13, 22, 0.12);

    background: rgba(248, 245, 239, 0.94);

    color: var(--wine-red);
    text-decoration: none;
}

.wine-svg-map .leaflet-control-zoom a:last-child {
    border-bottom: 0;
}

.wine-svg-map .leaflet-control-zoom a:hover,
.wine-svg-map .leaflet-control-zoom a:focus-visible {
    background: var(--paper-soft);
    color: var(--wine-red-dark);
}


/* ============================================================
   MASQUAGE ATTRIBUTION
   ============================================================ */

.wine-svg-map .leaflet-control-attribution {
    display: none;
}


/* ============================================================
   PARCELLE ACTIVE
   ============================================================ */

.wine-svg-map .is-wine-location-active {
    animation:
        wine-location-pulse
        1.5s
        ease-in-out
        infinite;

    transform-box: fill-box;
    transform-origin: center;
}


/*
 * La classe peut être appliquée directement :
 * - sur un path
 * - sur un polygon
 * - sur un rect
 * - ou sur les enfants d'un groupe <g>
 */
.wine-svg-map path.is-wine-location-active,
.wine-svg-map polygon.is-wine-location-active,
.wine-svg-map polyline.is-wine-location-active,
.wine-svg-map rect.is-wine-location-active,
.wine-svg-map circle.is-wine-location-active,
.wine-svg-map ellipse.is-wine-location-active,
.wine-svg-map line.is-wine-location-active {
    stroke: var(--wine-red) !important;
    stroke-width: 4px !important;

    vector-effect: non-scaling-stroke;

    opacity: 1;
}


/* ============================================================
   ANIMATION DE LA PARCELLE
   ============================================================ */

@keyframes wine-location-pulse {

    0%,
    100% {
        opacity: 1;
        stroke-opacity: 1;
        fill-opacity: 1;
    }

    50% {
        opacity: 0.42;
        stroke-opacity: 0.72;
        fill-opacity: 0.65;
    }
}


/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 991px) {

    .wine-map-panel {
        min-height: inherit;
    }

    .wine-map-panel__close {
        top: 78px;
        right: 18px;
    }

    .wine-svg-map .leaflet-control-zoom {
        margin-top: 84px;
        margin-left: 18px;
    }
}


/* ============================================================
   RÉDUCTION DES ANIMATIONS
   ============================================================ */

@media (prefers-reduced-motion: reduce) {

    .wine-map-panel {
        transition: none;
    }

    .wine-svg-map .is-wine-location-active {
        animation: none;
    }
}
/* ============================================================
   PAGE DOMAINE — GALERIES / SWIPER
   ============================================================ */

.domaine-galleries {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    background: #24130f;
}

.domaine-gallery {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.domaine-gallery[hidden] {
    display: none !important;
}

.domaine-gallery.is-active {
    display: block;
    animation: domaine-gallery-in 650ms cubic-bezier(0.22, 1, 0.36, 1);
}

.domaine-gallery-swiper,
.domaine-gallery-swiper .swiper-wrapper,
.domaine-gallery-swiper .swiper-slide,
.domaine-gallery__fallback {
    width: 100%;
    height: 100%;
}

.domaine-gallery-swiper,
.domaine-gallery__fallback {
    position: absolute;
    inset: 0;
}

.domaine-gallery-swiper .swiper-slide {
    overflow: hidden;
}

.domaine-gallery-swiper .swiper-slide img,
.domaine-gallery__fallback img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.domaine-gallery-swiper .swiper-slide img {
    transform: scale(1.015);
    transition: transform 7s ease;
}

.domaine-gallery-swiper .swiper-slide-active img {
    transform: scale(1.055);
}

.domaine-left-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(
            180deg,
            rgba(15, 6, 4, 0.04),
            rgba(15, 6, 4, 0.22)
        ),
        linear-gradient(
            90deg,
            rgba(15, 6, 4, 0.12),
            transparent 55%
        );
}

.domaine-brand-top,
.domaine-timeline,
.domaine-big-title {
    z-index: 10;
}

@keyframes domaine-gallery-in {
    from {
        opacity: 0;
        transform: scale(1.012);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .domaine-gallery.is-active {
        animation: none;
    }

    .domaine-gallery-swiper .swiper-slide img,
    .domaine-gallery-swiper .swiper-slide-active img {
        transform: none;
        transition: none;
    }
}

/* ============================================================
   V1.5 — SÉLECTEUR DE LANGUE
   ============================================================ */

.wine-nav-top__inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 22px;
    pointer-events: auto;
}

.site-language-switcher {
    font-family: var(--font-body);
    line-height: 1;
}

.site-language-switcher .paginup-language-switcher ul {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-language-switcher .paginup-language-switcher li {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}

.site-language-switcher .paginup-language-switcher li + li::before {
    content: '/';
    opacity: 0.52;
}

.site-language-switcher .paginup-language-switcher a,
.site-language-switcher .paginup-language-switcher span {
    color: var(--wine-red);
    font-weight: 500;
    letter-spacing: 0.08em;
    text-decoration: none;
    text-transform: uppercase;
}

.site-language-switcher .paginup-language-switcher li.is-current a,
.site-language-switcher .paginup-language-switcher li.is-current span {
    color: var(--gold);
}

.site-language-switcher .paginup-language-switcher a:hover,
.site-language-switcher .paginup-language-switcher a:focus-visible {
    color: var(--wine-red-dark);
}

.home-page .site-language-switcher--desktop .paginup-language-switcher a,
.home-page .site-language-switcher--desktop .paginup-language-switcher span {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 12px rgba(0, 0, 0, 0.28);
}

.home-page .site-language-switcher--desktop .paginup-language-switcher li.is-current a,
.home-page .site-language-switcher--desktop .paginup-language-switcher li.is-current span,
.home-page .site-language-switcher--desktop .paginup-language-switcher a:hover,
.home-page .site-language-switcher--desktop .paginup-language-switcher a:focus-visible {
    color: var(--gold);
}

.site-language-switcher--mobile {
    display: flex;
    justify-content: center;
}

.site-language-switcher--mobile .paginup-language-switcher a,
.site-language-switcher--mobile .paginup-language-switcher span {
    font-family: var(--font-display);
}

/* ============================================================
   V1.5 — LABELS ET CERTIFICATIONS
   ============================================================ */

.site-certifications {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
}

.site-certifications__logo {
    display: block;
    width: auto;
    max-width: 112px;
    max-height: 58px;
    object-fit: contain;
}

.site-certifications--home-intro {
    margin-top: 16px;
}

.site-certifications--home-intro .site-certifications__logo {
    max-width: 98px;
    max-height: 46px;
}

.site-certifications--footer {
    margin-top: 7px;
    gap: 12px;
}

.site-certifications--footer .site-certifications__logo {
    max-width: 76px;
    max-height: 34px;
    filter: brightness(0) invert(1);
}

.site-certifications--home-mobile {
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid rgba(122, 13, 22, 0.14);
}

/* ============================================================
   V1.5 — HOMEPAGE : PRÉSENTATION DESKTOP
   ============================================================ */

.home-intro-panel__center {
    min-width: 0;
}

/* ============================================================
   V1.5 — HOMEPAGE MOBILE : BOUTONS ET OFFCANVAS
   ============================================================ */

.home-mobile-actions {
    position: absolute;
    right: 16px;
    bottom: calc(18px + env(safe-area-inset-bottom));
    left: 16px;
    z-index: 55;
    display: flex;
    align-items: stretch;
    justify-content: center;
    gap: 10px;
}

.home-mobile-action {
    display: inline-flex;
    min-width: 0;
    flex: 1 1 0;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 46px;
    padding: 10px 15px;
    border: 1px solid rgba(255, 255, 255, 0.62);
    border-radius: 999px;
    background: rgba(63, 17, 20, 0.78);
    color: var(--white);
    font-family: var(--font-display);
    line-height: 1;
    text-align: center;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.2);
    backdrop-filter: blur(10px);
    box-shadow: 0 8px 26px rgba(25, 8, 7, 0.22);
}

.home-mobile-action:hover,
.home-mobile-action:focus-visible {
    border-color: var(--gold);
    background: rgba(81, 21, 26, 0.94);
    color: var(--white);
}

.home-mobile-action__count {
    display: inline-grid;
    min-width: 20px;
    height: 20px;
    place-items: center;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--gold);
    color: var(--wine-red-dark);
    font-family: var(--font-body);
    line-height: 1;
}

.home-mobile-panel {
    height: auto !important;
    max-height: min(78dvh, 720px);
    border: 0 !important;
    border-radius: 24px 24px 0 0;
    background:
        linear-gradient(rgba(249, 247, 242, 0.985), rgba(249, 247, 242, 0.985)),
        url('../images/bg.png') center / 760px auto repeat;
    color: var(--wine-red-dark);
    box-shadow: 0 -18px 50px rgba(28, 8, 7, 0.26);
}

.home-mobile-panel__header {
    padding: 20px 22px 10px;
    border-bottom: 1px solid rgba(122, 13, 22, 0.1);
}

.home-mobile-panel__title {
    color: var(--wine-red);
    font-family: var(--font-display);
    font-weight: 500;
}

.home-mobile-panel__body {
    padding: 22px 22px calc(26px + env(safe-area-inset-bottom));
    overflow-y: auto;
}

.home-mobile-intro {
    font-family: var(--font-display);
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
}

.home-mobile-intro > :first-child {
    margin-top: 0;
}

.home-mobile-intro > :last-child {
    margin-bottom: 0;
}

.home-mobile-intro p + p {
    margin-top: 14px;
}

/* Le plugin rend une seule actualité. Elle est déplacée dans cet hôte sur mobile. */
.home-alert-mobile-host .paginup-home-alert {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    color: var(--wine-red-dark, #51151a);
}

.home-alert-mobile-host .paginup-home-alert__swiper {
    overflow: hidden;
}

.home-alert-mobile-host .paginup-home-alert__slide {
    min-height: 0;
    padding: 8px 4px 16px;
    border-left: 0;
    background: transparent;
    box-shadow: none;
    clip-path: none;
}

.home-alert-mobile-host .paginup-home-alert__close {
    top: 0;
    right: 0;
}

.home-alert-mobile-host .paginup-home-alert__pagination {
    justify-content: center;
    margin-top: 8px;
    padding-right: 0;
}

.home-alert-mobile-host .paginup-home-alert__pagination .swiper-pagination-bullet {
    background: rgba(122, 13, 22, 0.3);
}

.home-alert-mobile-host .paginup-home-alert__pagination .swiper-pagination-bullet-active {
    background: var(--wine-red, #7a0d16);
}

@media (min-width: 992px) {
    .home-mobile-actions,
    .home-mobile-panel {
        display: none !important;
    }
}

@media (max-width: 991px) {
    /* Le texte et l'encart d'actualité ne recouvrent plus le logo central. */
    .home-intro-panel--desktop,
    .home-alert-slot {
        display: none !important;
    }

    .home-hero__brand {
        top: 45%;
    }
}

@media (max-width: 575px) {
    .home-mobile-actions {
        right: 12px;
        bottom: calc(14px + env(safe-area-inset-bottom));
        left: 12px;
        gap: 8px;
    }

    .home-mobile-action {
        min-height: 44px;
        padding-right: 11px;
        padding-left: 11px;
    }

    .home-mobile-panel__header,
    .home-mobile-panel__body {
        padding-right: 18px;
        padding-left: 18px;
    }

    .site-certifications--home-mobile .site-certifications__logo {
        max-width: 94px;
        max-height: 48px;
    }
}


/* ============================================================
   V1.5.2 — AJUSTEMENTS HEADER, MOBILE, ARCHIVES ET SINGLE WINE
   ============================================================ */

/* La homepage ne présente plus de logo dans le header. */
.home-page .mobile-topbar--home {
    justify-content: flex-end;
}

/* Prise en compte de la barre d’administration WordPress. */
body.admin-bar .site-header--home {
    top: 32px;
}

/* Logo mobile plus lisible sur les pages intérieures. */
@media (max-width: 991px) {
    :root {
        --header-height: 76px;
    }

    .topbar-logo img {
        max-width: 104px;
        max-height: 58px;
    }

    .sidebar-logo img {
        width: 118px;
        max-height: 104px;
    }

    body.admin-bar .mobile-topbar {
        top: 32px;
    }

    body.admin-bar .wine-sidebar {
        top: 32px;
        bottom: auto;
        height: calc(100dvh - 32px);
    }
}

@media (max-width: 782px) {
    body.admin-bar .site-header--home {
        top: 46px;
    }

    body.admin-bar .mobile-topbar {
        top: 46px;
    }

    body.admin-bar .wine-sidebar {
        top: 46px;
        height: calc(100dvh - 46px);
    }
}

/* Burger animé : le même bouton ouvre et ferme le menu. */
.mobile-menu-toggle {
    position: relative;
    z-index: 12030;
    pointer-events: auto;
}

.mobile-menu-toggle span {
    transform-origin: center;
    transition:
        width 220ms ease,
        opacity 180ms ease,
        transform 240ms cubic-bezier(0.22, 1, 0.36, 1);
}

.mobile-menu-toggle.is-open span:nth-child(1) {
    width: 28px;
    transform: translateY(6px) rotate(45deg);
}

.mobile-menu-toggle.is-open span:nth-child(2) {
    width: 28px;
    opacity: 0;
    transform: scaleX(0);
}

.mobile-menu-toggle.is-open span:nth-child(3) {
    width: 28px;
    transform: translateY(-6px) rotate(-45deg);
}

/* Le menu et son fond passent devant tous les éléments du thème. */
@media (max-width: 991px) {
    .mobile-topbar {
        z-index: 12020;
        pointer-events: none;
    }

    .mobile-topbar .topbar-logo,
    .mobile-topbar .mobile-menu-toggle {
        pointer-events: auto;
    }

    .wine-sidebar,
    .home-mobile-panel {
        --bs-offcanvas-zindex: 12000;
        z-index: 12000 !important;
    }

    .offcanvas-backdrop {
        --bs-backdrop-zindex: 11990;
        z-index: 11990 !important;
    }
}

/* Homepage mobile : logo central plus grand. */
@media (max-width: 991px) {
    .home-hero__brand {
        top: 32%;
        width: clamp(210px, 48vw, 280px);
    }
}

@media (max-width: 575px) {
    .home-hero__brand {
        top: 29%;
        width: 220px;
    }
}

/* Homepage mobile : actions visibles dès l’arrivée, sobres et rectangulaires. */
@media (max-width: 991px) {
    .home-mobile-actions {
        right: 18px;
        bottom: calc(96px + env(safe-area-inset-bottom));
        left: 18px;
        gap: 8px;
    }

    .home-mobile-action {
        min-height: 48px;
        gap: 6px;
        padding: 11px 16px;
        border-radius: 0;
        background: rgba(81, 21, 26, 0.9);
        backdrop-filter: blur(8px);
    }

    .home-mobile-action__count {
        border-radius: 0;
    }
}

@media (max-width: 575px) {
    .home-mobile-actions {
        right: 12px;
        bottom: calc(84px + env(safe-area-inset-bottom));
        left: 12px;
    }
}

/* Archives vins : logo bordeaux sur desktop. */
@media (min-width: 992px) {
    .wine-archive-side__logo .site-logo img {
        filter: brightness(0) saturate(100%) invert(12%) sepia(47%) saturate(3831%) hue-rotate(336deg) brightness(79%) contrast(103%);
    }
}

/* Archives vins : respiration supérieure et titre mieux dégagé. */
@media (min-width: 992px) {
    .wine-archive-content {
        padding-top: 120px;
    }

    .wine-archive-heading {
        min-height: 76px;
        margin-bottom: 44px;
        padding-right: 18px;
        padding-left: 18px;
    }

    .wine-archive-heading h1 {
        line-height: 1.08;
    }
}

@media (max-width: 991px) {
    .wine-archive-content {
        padding-top: calc(var(--header-height) + 56px);
    }

    .wine-archive-heading {
        margin-bottom: 34px;
    }
}

/* Single wine : overlay plus léger sur l’ensemble et plus lisible en bas. */
body.single-wine::before {
    background:
        linear-gradient(
            180deg,
            rgba(24, 10, 5, 0.08),
            rgba(18, 5, 4, 0.18)
        ),
        linear-gradient(
            90deg,
            rgba(20, 6, 5, 0.08),
            transparent 58%,
            rgba(20, 6, 5, 0.06)
        );
}

.wine-left-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    background:
        linear-gradient(
            180deg,
            rgba(18, 5, 4, 0.02) 0%,
            rgba(18, 5, 4, 0.05) 42%,
            rgba(18, 5, 4, 0.22) 67%,
            rgba(18, 5, 4, 0.58) 100%
        ),
        linear-gradient(
            90deg,
            rgba(18, 5, 4, 0.16),
            transparent 52%
        );
    pointer-events: none;
}

/* Single wine : timeline regroupée dans la partie basse, hors du titre. */
.wine-timeline {
    top: auto;
    right: 28px;
    bottom: calc(var(--footer-height) + 170px);
    left: auto;
    width: 24px;
    height: clamp(220px, 32vh, 340px);
}

@media (max-width: 991px) {
    .wine-timeline {
        top: auto;
        right: auto;
        bottom: 172px;
        left: 28px;
        height: clamp(210px, 36vh, 300px);
    }
}

@media (max-width: 575px) {
    .wine-timeline {
        bottom: 158px;
        left: 20px;
        height: clamp(190px, 34vh, 260px);
    }
}

/* ============================================================
   V1.5.3 — ARCHIVES, SINGLE WINE, LABELS ET RESPONSIVE
   ============================================================ */

/*
 * Archive vins : logo de même dimension que sur la page Domaine.
 * Le centrage dans la bande latérale est conservé.
 */
@media (min-width: 992px) {
    .wine-archive-side__logo {
        width: 180px;
    }

    .wine-archive-side__logo .site-logo img {
        display: block;
        width: auto;
        max-width: 180px;
        max-height: 180px;
        object-fit: contain;
    }
}

/*
 * Single wine : même proportion 5 / 7 que la page Domaine.
 */
@media (min-width: 992px) {
    .wine-left {
        flex: 0 0 auto;
        width: 41.66666667%;
        max-width: 41.66666667%;
    }

    .wine-right {
        flex: 0 0 auto;
        width: 58.33333333%;
        max-width: 58.33333333%;
    }
}

/*
 * Timeline Domaine : axe rapproché des marqueurs.
 */
.domaine-timeline__list::before {
    right: 5px;
}

/*
 * Labels HVE et Vigneron Indépendant.
 */
.site-certifications--home-intro {
    margin-top: 22px;
}

.site-certifications--footer {
    margin-top: 9px;
}

.site-certifications--footer .site-certifications__logo {
    max-width: 72px;
    max-height: 38px;
}

/*
 * Single wine mobile :
 * - visuel gauche sur 80 % de la hauteur d’écran ;
 * - overlay global limité à la même hauteur ;
 * - bouteille limitée à 58 % de la hauteur d’écran.
 */
@media (max-width: 991px) {
    .wine-left {
        height: 80vh;
        min-height: 0;
    }

    body.single-wine::before {
        position: absolute;
        top: 0;
        right: 0;
        bottom: auto;
        left: 0;
        width: 100%;
        height: 80vh;
    }

    .wine-bottle-img {
        max-height: 58vh;
    }
}

@supports (height: 80dvh) {
    @media (max-width: 991px) {
        .wine-left {
            height: 80dvh;
        }

        body.single-wine::before {
            height: 80dvh;
        }

        .wine-bottle-img {
            max-height: 58dvh;
        }
    }
}


/* ============================================================
   V1.5.4 — LOGO ARCHIVES, OFFCANVAS ET LABELS INTÉGRÉS
   ============================================================ */

/*
 * Archives vins : même positionnement que le logo de la page Domaine.
 * La couleur bordeaux définie pour les archives reste inchangée.
 */
@media (min-width: 992px) {
    .wine-archive-side__logo {
        top: 24px;
        left: 56px;
        width: auto;
        transform: none;
    }

    .wine-archive-side__logo .site-logo img {
        display: block;
        width: auto;
        max-width: 180px;
        max-height: 180px;
        object-fit: contain;
    }
}

/*
 * Le header ne doit plus enfermer l'offcanvas dans son contexte d'empilement.
 * Le menu et son backdrop passent devant le header, tout en restant sous la
 * barre d'administration WordPress. Quand le menu principal est ouvert, seule
 * la croix du burger reste visible au-dessus du panneau.
 */
@media (max-width: 991px) {
    .site-header {
        position: static;
        z-index: auto;
    }

    .mobile-topbar {
        z-index: 1040;
    }

    .wine-sidebar,
    .home-mobile-panel {
        --bs-offcanvas-zindex: 20000;
        z-index: 20000 !important;
    }

    .offcanvas-backdrop {
        --bs-backdrop-zindex: 19990;
        z-index: 19990 !important;
    }

    body.mobile-menu-open .mobile-topbar {
        z-index: 20010;
        border-bottom-color: transparent;
        background: transparent;
        box-shadow: none;
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
    }

    body.mobile-menu-open .mobile-topbar .topbar-logo {
        visibility: hidden;
        opacity: 0;
        pointer-events: none;
    }

    body.mobile-menu-open .mobile-menu-toggle {
        z-index: 20020;
    }
}

/* Les PNG livrés avec le thème sont les fichiers de référence. */
.site-certifications__logo--logo-hve,
.site-certifications__logo--logo-vif {
    object-fit: contain;
}

/* ============================================================
   V1.5.5 — CONTACT, NAVIGATION, ACTIONS ET ASCENSEUR NATIF
   ============================================================ */

/*
 * Le sélecteur de langue est placé au-dessus du menu principal,
 * dans un format plus discret. La classe Bootstrap `.small` reste
 * appliquée dans le template.
 */
@media (min-width: 992px) {
    .wine-nav-top {
        padding-top: 20px;
        padding-bottom: 18px;
    }

    .wine-nav-top__inner {
        display: flex;
        width: 100%;
        align-items: flex-end;
        flex-direction: column;
        justify-content: flex-start;
        gap: 7px;
    }

    .site-language-switcher--desktop {
        min-height: 14px;
        margin-right: 1px;
        font-family: var(--font-body);
        line-height: 1;
    }

    .site-language-switcher--desktop .paginup-language-switcher ul,
    .site-language-switcher--desktop .paginup-language-switcher li {
        gap: 6px;
    }
}

.site-language-switcher--mobile {
    order: -1;
    font-family: var(--font-body);
}

/*
 * Ascenseur natif : fin, bordeaux et doré. Les navigateurs mobiles
 * conservent leur comportement natif de défilement tactile.
 */
@media (min-width: 992px) {
    html {
        scrollbar-width: thin;
        scrollbar-color: var(--wine-red) rgba(196, 160, 91, 0.24);
    }

    html::-webkit-scrollbar {
        width: 8px;
    }

    html::-webkit-scrollbar-track {
        background: rgba(196, 160, 91, 0.22);
    }

    html::-webkit-scrollbar-thumb {
        border: 1px solid var(--gold);
        border-radius: 0;
        background: var(--wine-red);
    }

    html::-webkit-scrollbar-thumb:hover {
        background: var(--wine-red-dark);
    }
}

/*
 * Actions du single wine : bouton PDF fourni par le plugin et accès carte.
 */
.wine-single-actions {
    margin-top: 30px;
}

.wine-single-actions .wine-map-link {
    margin-top: 0;
}

.wine-single-actions .wine-pdf-download,
.wine-single-actions .wine-map-trigger {
    color: var(--wine-red);
    font-family: var(--font-display);
    text-decoration: none;
}

.wine-single-actions .wine-pdf-download:hover,
.wine-single-actions .wine-pdf-download:focus-visible,
.wine-single-actions .wine-map-trigger:hover,
.wine-single-actions .wine-map-trigger:focus-visible {
    color: var(--wine-red-dark);
    text-decoration: none;
}

/* ============================================================
   PAGE CONTACT
   ============================================================ */

body.contact-page {
    position: relative;
    min-height: 100vh;
    background-color: #24130f;
    background-image: var(--contact-page-background, url('../images/bg02.png'));
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
}

body.contact-page::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    background:
        linear-gradient(
            180deg,
            rgba(24, 10, 5, 0.16),
            rgba(18, 5, 4, 0.38)
        ),
        linear-gradient(
            90deg,
            rgba(20, 6, 5, 0.18),
            transparent 48%,
            rgba(20, 6, 5, 0.08)
        );
    pointer-events: none;
}

body.contact-page .site-header,
body.contact-page .wine-footer {
    position: relative;
    z-index: 9;
}

.contact-single {
    position: relative;
    z-index: 1;
    width: 100%;
    min-height: 100vh;
    background: transparent;
}

.contact-layout {
    width: 100%;
    margin: 0;
}

.contact-left {
    position: sticky;
    top: 0;
    height: 100vh;
    align-self: flex-start;
    overflow: hidden;
    background: transparent;
}

.contact-left::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(
            180deg,
            rgba(15, 6, 4, 0.04),
            rgba(15, 6, 4, 0.30)
        );
    pointer-events: none;
}

.contact-brand-top {
    position: absolute;
    top: 24px;
    left: 56px;
    z-index: 10;
}

.contact-brand-top .site-logo img {
    display: block;
    width: auto;
    max-width: 180px;
    max-height: 180px;
    object-fit: contain;
}

.contact-big-title {
    position: absolute;
    right: 34px;
    bottom: calc(var(--footer-height) + 24px);
    left: 87px;
    z-index: 15;
    max-width: 70%;
    color: var(--white);
    text-shadow: 0 2px 18px rgba(0, 0, 0, 0.42);
}

.contact-big-title__eyebrow {
    margin: 0 0 4px;
    font-family: var(--font-display);
    font-style: italic;
    letter-spacing: 0.04em;
}

.contact-big-title h1 {
    margin: 0;
    color: inherit;
    font-family: var(--font-display);
    font-weight: 400;
    line-height: 0.9;
    letter-spacing: -0.015em;
}

.contact-right {
    position: relative;
    z-index: 2;
    min-height: 100vh;
    padding: 105px clamp(48px, 6vw, 92px) calc(var(--footer-height) + 48px);
    background: url('../images/bg04.png') no-repeat top left;
    background-size: cover;
}

.contact-right-inner {
    position: relative;
    width: 100%;
    max-width: 650px;
    margin: 0 auto;
}

.contact-intro {
    margin-bottom: 38px;
    color: var(--ink);
    line-height: 1.35;
}

.contact-intro__content > :last-child {
    margin-bottom: 0;
}

.contact-form {
    padding-top: 34px;
    border-top: 1px solid rgba(122, 13, 22, 0.24);
}

.contact-form .wpforms-container {
    margin: 0;
}

.contact-form .wpforms-field-label,
.contact-form .wpforms-field-sublabel {
    color: var(--wine-red);
    font-family: var(--font-display);
    font-weight: 500;
}

.contact-form input[type='text'],
.contact-form input[type='email'],
.contact-form input[type='tel'],
.contact-form input[type='url'],
.contact-form input[type='number'],
.contact-form select,
.contact-form textarea {
    border: 1px solid rgba(122, 13, 22, 0.28) !important;
    border-radius: 0 !important;
    background: rgba(255, 255, 255, 0.52) !important;
    color: var(--ink) !important;
    box-shadow: none !important;
}

.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
    border-color: var(--gold) !important;
    box-shadow: 0 0 0 2px rgba(196, 160, 91, 0.16) !important;
}

.contact-form button[type='submit'],
.contact-form .wpforms-submit {
    min-height: 44px;
    padding: 10px 24px !important;
    border: 1px solid var(--wine-red) !important;
    border-radius: 0 !important;
    background: var(--wine-red) !important;
    color: var(--white) !important;
    font-family: var(--font-display) !important;
    transition: background 180ms ease, border-color 180ms ease;
}

.contact-form button[type='submit']:hover,
.contact-form button[type='submit']:focus-visible,
.contact-form .wpforms-submit:hover,
.contact-form .wpforms-submit:focus-visible {
    border-color: var(--wine-red-dark) !important;
    background: var(--wine-red-dark) !important;
}

.contact-form__missing {
    margin: 0;
    color: var(--wine-red);
}

@media (max-width: 991px) {
    body.contact-page {
        background-position: center top;
        background-attachment: scroll;
    }

    .contact-layout {
        display: block;
    }

    .contact-left,
    .contact-right {
        width: 100%;
        max-width: 100%;
    }

    .contact-left {
        position: relative;
        height: min(680px, 72vh);
        min-height: 520px;
    }

    .contact-brand-top {
        top: 84px;
        left: 34px;
    }

    .contact-brand-top .site-logo img {
        max-width: 112px;
        max-height: 96px;
    }

    .contact-big-title {
        right: 28px;
        bottom: 34px;
        left: 66px;
        max-width: 74%;
    }

    .contact-right {
        min-height: auto;
        padding: 80px 34px 74px;
    }

    .contact-right-inner {
        max-width: 680px;
    }
}

@media (max-width: 575px) {
    .contact-left {
        height: 64vh;
        min-height: 480px;
    }

    .contact-brand-top {
        top: 76px;
        left: 22px;
    }

    .contact-big-title {
        right: 20px;
        bottom: 28px;
        left: 50px;
        max-width: 80%;
    }

    .contact-right {
        padding: 62px 20px;
    }

    .contact-intro {
        margin-bottom: 30px;
    }

    .contact-form {
        padding-top: 28px;
    }

    .wine-single-actions {
        align-items: flex-start !important;
        justify-content: flex-start !important;
        flex-direction: column;
    }
}

/* ============================================================
   V1.5.6 — HEADER MOBILE TRANSPARENT ET OFFCANVAS PRIORITAIRE
   ============================================================ */

/*
 * Le header mobile est désormais superposé au visuel, sans bandeau papier,
 * comme sur la homepage. Le logo et le burger restent lisibles grâce à une
 * ombre discrète, sans ajouter de fond sous la navigation.
 */
@media (max-width: 991px) {
    .mobile-topbar,
    .home-page .mobile-topbar {
        position: fixed;
        top: 0;
        right: 0;
        left: 0;
        z-index: 1050;
        border: 0;
        background: transparent;
        box-shadow: none;
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
    }

    /* Logo blanc sur les pages illustrées. */
    .topbar-logo img {
        filter:
            brightness(0)
            invert(1)
            drop-shadow(0 2px 7px rgba(0, 0, 0, 0.32));
    }

    .mobile-menu-toggle span {
        background: var(--white);
        box-shadow: 0 1px 6px rgba(0, 0, 0, 0.28);
    }

    /*
     * Archives des vins : fond papier clair, logo et burger bordeaux.
     * Les deux formes d'archives WordPress sont prises en compte.
     */
    body.tax-wine_color .topbar-logo img,
    body.post-type-archive-wine .topbar-logo img {
        filter:
            brightness(0)
            saturate(100%)
            invert(12%)
            sepia(47%)
            saturate(3831%)
            hue-rotate(336deg)
            brightness(79%)
            contrast(103%);
    }

    body.tax-wine_color .mobile-menu-toggle span,
    body.post-type-archive-wine .mobile-menu-toggle span {
        background: var(--wine-red);
        box-shadow: none;
    }

    /* Le logo du panneau reste bordeaux sur fond papier. */
    .sidebar-logo img {
        filter:
            brightness(0)
            saturate(100%)
            invert(12%)
            sepia(47%)
            saturate(3831%)
            hue-rotate(336deg)
            brightness(79%)
            contrast(103%);
    }

    /*
     * Le panneau est rendu hors du header et crée son propre plan opaque.
     * Isolation empêche les titres et overlays du hero de passer au-dessus.
     */
    .wine-sidebar {
        --bs-offcanvas-zindex: 30000;
        position: fixed !important;
        top: 0;
        right: 0;
        bottom: 0;
        z-index: 30000 !important;
        isolation: isolate;
        background-color: #fff;
        background-image: url('../images/bg04.png');
        background-position: top left;
        background-repeat: no-repeat;
        background-size: cover;
        opacity: 1;
    }

    .offcanvas-backdrop {
        --bs-backdrop-zindex: 29990;
        z-index: 29990 !important;
    }

    /* Le burger animé reste disponible pour fermer le menu. */
    body.mobile-menu-open .mobile-topbar {
        z-index: 30010;
        background: transparent;
    }

    body.mobile-menu-open .mobile-menu-toggle {
        z-index: 30020;
    }

    body.mobile-menu-open .mobile-menu-toggle span {
        background: var(--wine-red);
        box-shadow: none;
    }

    /*
     * Sécurité supplémentaire pendant les transitions Bootstrap : les titres
     * de hero ne peuvent jamais traverser le panneau, même avec un ancien
     * contexte d'empilement conservé par le navigateur.
     */
    body.mobile-menu-open .wine-big-title,
    body.mobile-menu-open .domaine-big-title,
    body.mobile-menu-open .contact-big-title,
    body.mobile-menu-open .wine-bottle-wrap,
    body.mobile-menu-open .wine-left-overlay {
        visibility: hidden;
    }
}

/* Barre d'administration WordPress sur tablette et mobile. */
@media (max-width: 991px) {
    body.admin-bar .mobile-topbar,
    body.admin-bar .wine-sidebar {
        top: 32px;
    }

    body.admin-bar .wine-sidebar {
        bottom: auto;
        height: calc(100dvh - 32px);
    }

    body.admin-bar .offcanvas-backdrop {
        top: 32px;
    }
}

@media (max-width: 782px) {
    body.admin-bar .mobile-topbar,
    body.admin-bar .wine-sidebar {
        top: 46px;
    }

    body.admin-bar .wine-sidebar {
        height: calc(100dvh - 46px);
    }

    body.admin-bar .offcanvas-backdrop {
        top: 46px;
    }
}


/* ============================================================
   V1.5.7 — TYPOGRAPHIE UNIQUE ET CONTENUS BILINGUES
   ============================================================ */

/* Tous les éléments d’interface utilisent désormais la police du site. */
.site-language-switcher,
.site-language-switcher .paginup-language-switcher,
.site-language-switcher .paginup-language-switcher a,
.site-language-switcher .paginup-language-switcher span,
.wine-footer {
    font-family: var(--font-body);
}

/* Bootstrap `.small` pilote la taille du sélecteur et du pied de page. */
.site-language-switcher.small,
.wine-footer.small {
    font-size: 0.875em;
}

/* ============================================================
   VERSION 1.5.8 — INTRODUCTION DES ARCHIVES BILINGUES
   ============================================================ */

.wine-archive-intro {
    max-width: 760px;
    margin: 1.5rem auto 0;
    text-align: center;
}

.wine-archive-intro > :last-child {
    margin-bottom: 0;
}


/* ============================================================
   VERSION 1.5.9 — CORRECTIFS SINGLE WINE ET LABELS
   ============================================================ */

/*
 * Le logo VIF contient son propre cartouche blanc et ses couleurs officielles.
 * Il ne doit pas recevoir le filtre monochrome utilisé pour le logo HVE.
 */
.site-certifications--footer .site-certifications__logo--logo-hve {
    filter: brightness(0) invert(1);
}

.site-certifications--footer .site-certifications__logo--logo-vif {
    max-width: 62px;
    max-height: 42px;
    filter: none;
}

/*
 * Le bouton carte utilise une icône compacte, sans réserve artificielle
 * de 40 px entre le texte et le pictogramme.
 */
.wine-map-trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.wine-map-trigger .map-pin {
    width: auto;
    height: auto;
    margin: 0;
    place-items: center;
}

/*
 * La timeline de navigation des fiches vins est de nouveau affichée.
 * Elle reste distincte de l'ascenseur natif du navigateur.
 */
.wine-left .wine-timeline {
    display: block;
}

/* ============================================================
   V1.5.10 — VIDÉOS YOUTUBE EN ARRIÈRE-PLAN
   ============================================================ */

/*
 * Le slider / l'image de fond restent chargés derrière la vidéo et servent de
 * fallback si le champ correspondant au breakpoint est vide, si JavaScript est
 * désactivé ou si l'utilisateur demande une réduction des animations.
 */
.docwine-youtube-background {
    position: absolute;
    inset: 0;
    overflow: hidden;
    background: transparent;
    opacity: 0;
    pointer-events: none;
    transition: opacity 320ms ease;
}

.docwine-youtube-background.is-active.is-loaded {
    opacity: 1;
}

.docwine-youtube-background__frame {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100vw;
    height: 56.25vw;
    min-width: 177.77777778vh;
    min-height: 100vh;
    border: 0;
    transform: translate(-50%, -50%) scale(1.02);
    transform-origin: center;
    pointer-events: none;
}

/* Homepage : la vidéo passe devant le Swiper mais sous le voile et le contenu. */
.home-hero__youtube {
    z-index: 2;
}

/*
 * Single wine : remplace visuellement wine_background_image. Le fond image du
 * body reste présent derrière comme solution de secours.
 */
.wine-background-video {
    position: fixed;
    inset: 0;
    z-index: 0;
}

body.single-wine::before {
    z-index: 1;
}

body.single-wine .wine-single {
    position: relative;
    z-index: 2;
}

body.single-wine .site-header,
body.single-wine .wine-footer {
    z-index: 10;
}

@media (max-width: 991px) {
    /* La partie visuelle mobile du single reste cadrée sur les 80dvh définis. */
    .wine-background-video {
        height: 80vh;
        bottom: auto;
    }

    .wine-background-video .docwine-youtube-background__frame {
        min-height: 80vh;
        min-width: 142.22222222vh;
    }
}

@supports (height: 80dvh) {
    @media (max-width: 991px) {
        .wine-background-video {
            height: 80dvh;
        }

        .wine-background-video .docwine-youtube-background__frame {
            min-height: 80dvh;
            min-width: 142.22222222dvh;
        }
    }
}

@media (prefers-reduced-motion: reduce) {
    .docwine-youtube-background {
        display: none !important;
    }
}



/* ============================================================
   V1.5.11 — SINGLE WINE MOBILE : VIDÉO PLEIN CADRE
   ============================================================ */

/*
 * Sur mobile, certaines vidéos YouTube présentent des bandes latérales liées
 * au cadrage du player. On agrandit légèrement le player dans sa fenêtre de
 * 80vh afin de conserver un fond bord à bord. Le conteneur masque le surplus.
 */
@media (max-width: 991.98px) {
    body.single-wine .wine-background-video {
        overflow: hidden;
    }

    body.single-wine .wine-background-video .docwine-youtube-background__frame {
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%) scale(1.22);
        transform-origin: center center;
    }
}


/* ============================================================
   V1.5.13 — SINGLE WINE : VIDÉO CADRÉE DANS LA COLONNE GAUCHE
   ============================================================ */

/*
 * La vidéo du single ne doit jamais être positionnée par rapport au viewport :
 * elle appartient à `.wine-left` (5/12 sur desktop, 100 % sur mobile).
 * Le player reste volontairement surdimensionné pour simuler `background-size: cover`.
 */
body.single-wine .wine-left {
    isolation: isolate;
    overflow: hidden;
}

body.single-wine .wine-left .wine-background-video {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

body.single-wine .wine-left .wine-background-video .docwine-youtube-background__frame {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(1.02);
    transform-origin: center center;
}

/* L'overlay doit rester au-dessus de la vidéo, puis la bouteille et les textes. */
body.single-wine .wine-left-overlay {
    z-index: 2;
}

@media (max-width: 991.98px) {
    body.single-wine .wine-left .wine-background-video {
        height: 100%;
    }

    body.single-wine .wine-left .wine-background-video .docwine-youtube-background__frame {
        transform: translate(-50%, -50%) scale(1.22);
    }
}


/* ============================================================
   V1.5.14 — SINGLE WINE DESKTOP : SUPPRESSION DES BANDES NOIRES
   ============================================================ */

/*
 * Certaines vidéos YouTube verticales sont affichées par le player avec des
 * bandes latérales. Comme la vidéo sert uniquement de fond décoratif, on
 * agrandit le player sur desktop afin que la zone vidéo utile couvre toute la
 * colonne gauche. Le surplus est naturellement rogné par `.wine-left`.
 */
@media (min-width: 992px) {
    body.single-wine .wine-left .wine-background-video .docwine-youtube-background__frame {
        transform: translate(-50%, -50%) scale(1.42);
        transform-origin: center center;
    }
}

/* ============================================================
   V1.5.15 — HOMEPAGE SANS LOGO / SINGLE WINE VIDÉO PLEIN CADRE
   ============================================================ */

/*
 * Le logo est désormais intégré directement dans la vidéo de homepage.
 * Le bloc `.home-hero__brand` a été retiré du template pour éviter tout doublon.
 */

/*
 * Lorsqu'une vidéo YouTube est active sur un single wine, son conteneur devient
 * opaque. Le `wine_background_image` reste chargé comme fallback, mais il ne
 * peut plus transparaître sur les bords une fois le player actif.
 */
body.single-wine .wine-left .wine-background-video.is-active {
    background: #120806;
}

/*
 * Zoom légèrement renforcé sur desktop pour recadrer les éventuelles bandes
 * latérales ajoutées par YouTube et couvrir totalement `.wine-left`.
 */
@media (min-width: 992px) {
    body.single-wine .wine-left .wine-background-video .docwine-youtube-background__frame {
        transform: translate(-50%, -50%) scale(1.55);
        transform-origin: center center;
    }
}

/*
 * Même sécurité sur mobile : le fond image ne doit jamais réapparaître aux
 * extrémités pendant la lecture de la vidéo.
 */
@media (max-width: 991.98px) {
    body.single-wine .wine-left .wine-background-video.is-active {
        background: #120806;
    }
}


/* ============================================================
   V1.5.16 — CONTACT : VIDÉO YOUTUBE EN ARRIÈRE-PLAN
   ============================================================ */

/*
 * Les champs ACF youtube_desktop / youtube_mobile de la page Contact
 * remplacent visuellement l’image mise en avant dans la colonne gauche.
 * L’image de la page reste chargée derrière comme fallback.
 */
body.contact-page .contact-left {
    isolation: isolate;
}

body.contact-page .contact-background-video {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #120806;
}

body.contact-page .contact-background-video .docwine-youtube-background__frame {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(1.12);
    transform-origin: center center;
}

body.contact-page .contact-left::after {
    z-index: 2;
}

body.contact-page .contact-brand-top,
body.contact-page .contact-big-title {
    z-index: 3;
}

/*
 * Sur mobile, le hero Contact est moins haut que le viewport.
 * Un léger zoom supplémentaire évite les bandes latérales du player.
 */
@media (max-width: 991.98px) {
    body.contact-page .contact-background-video .docwine-youtube-background__frame {
        transform: translate(-50%, -50%) scale(1.24);
    }
}

@media (prefers-reduced-motion: reduce) {
    body.contact-page .contact-background-video {
        display: none !important;
    }
}
