.vjv-header--home {
    min-height: 280PX;
    max-height: max(360PX, 40vh);
}

    .vjv-header--home .vjv-header__content-area--home-actions {
        flex-direction: column;
        align-items: flex-start;
        gap: 14PX;
    }

    .vjv-header--home .vjv-header__actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 14PX;
    }

    .vjv-header--home .vjv-header__points-of-sale {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 9PX;
        background: #2d2d2d;
        color: white;
    }

    .vjv-header--home .vjv-header__points-of-sale:hover, .vjv-header--home .vjv-header__points-of-sale:focus {
            background: #404040;
            color: white !important;
        }

    .vjv-header--home .vjv-header__points-of-sale svg { width: 18PX; height: 20PX; flex-shrink: 0; }

    .vjv-header--home .vjv-header__points-of-sale-text {
        margin: 0;
        font-size: 13PX;
        line-height: 1.5;
    }

body.vjv-points-of-sale-open { overflow: hidden; }

.vjv-points-of-sale-dialog {
    box-sizing: border-box;
    width: min(1180PX, calc(100% - 64PX));
    max-width: none;
    max-height: calc(100dvh - 64PX);
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: 14PX;
    background: #f6f5f0;
    color: #2d2d2d;
    box-shadow: 0 32PX 120PX #0005;
    overscroll-behavior: contain;
}

.vjv-points-of-sale-dialog:not([open]) { display: none; }

.vjv-points-of-sale-dialog::backdrop { background: #1e252bcc; backdrop-filter: blur(5PX); }

.vjv-points-of-sale {
    --vjv-sale-ink: #2d2d2d;
    --vjv-sale-yellow: #fdc612;
    box-sizing: border-box;
    width: 100%;
    max-width: 1180PX;
    margin: 3rem auto;
    background: #f6f5f0;
    color: var(--vjv-sale-ink);
    font-size: 15PX;
    line-height: 1.65;
    text-align: left;
    scroll-margin-top: 100PX;
}

.vjv-points-of-sale, .vjv-points-of-sale * { box-sizing: border-box; }

.vjv-points-of-sale [hidden] { display: none !important; }

.vjv-points-of-sale--enhanced { margin: 0; }

.vjv-points-of-sale h2, .vjv-points-of-sale h3, .vjv-points-of-sale p { margin: 0; }

.vjv-points-of-sale .vjv-points-of-sale__header h2, .vjv-points-of-sale .vjv-points-of-sale__detail h3 { text-transform: none; line-height: 1.12; letter-spacing: -.035em; font-weight: 700; }

.vjv-points-of-sale button { font: inherit; cursor: pointer; text-transform: none; touch-action: manipulation; }

.vjv-points-of-sale button, .vjv-points-of-sale a { -webkit-tap-highlight-color: transparent; }

.vjv-points-of-sale button:focus-visible, .vjv-points-of-sale a:focus-visible { outline: 3PX solid #2481c5; outline-offset: 4PX; }

.vjv-points-of-sale a { text-underline-offset: 4PX; }

.vjv-points-of-sale__header {
        display: flex;
        justify-content: space-between;
        gap: 18PX;
        padding: 30PX 36PX 26PX;
    }

.vjv-points-of-sale__header > div > p:last-child { margin-top: 11PX; font-size: 13PX; color: #67675f; }

.vjv-points-of-sale .vjv-points-of-sale__header h2 { font-size: 33PX; }

.vjv-points-of-sale__eyebrow {
        font-size: 11PX;
        font-weight: 700;
        line-height: 1.5;
        text-transform: uppercase;
        letter-spacing: .17em;
        color: #68685d;
    }

.vjv-points-of-sale__header .vjv-points-of-sale__eyebrow { margin-bottom: 8PX; }

.vjv-points-of-sale button.vjv-points-of-sale__close {
        display: grid;
        place-items: center;
        width: 44PX;
        height: 44PX;
        flex: 0 0 44PX;
        padding: 0;
        border: 1PX solid #d7d7cd;
        border-radius: 50%;
        /* The existing voucher form styles force a dark background on focus. */
        background: transparent !important;
        color: var(--vjv-sale-ink) !important;
        font-size: 27PX;
        line-height: 1;
    }

.vjv-points-of-sale button.vjv-points-of-sale__close:hover { background: white !important; }

.vjv-points-of-sale__layout { padding: 0 18PX 18PX; }

.vjv-points-of-sale--enhanced .vjv-points-of-sale__layout { display: grid; grid-template-columns: 1.13fr 1fr; gap: 18PX; }

.vjv-points-of-sale__map {
        position: relative;
        min-width: 0;
        min-height: 420PX;
        aspect-ratio: 830 / 730;
        align-self: stretch;
        overflow: hidden;
        border-radius: 8PX;
        background: #2d3432;
    }

.vjv-points-of-sale__map-image { position: absolute; inset: 0; width: 100%; height: 100%; }

.vjv-points-of-sale__map-eyebrow { position: absolute; top: 24PX; left: 24PX; color: #fff9; font-size: 9PX; font-weight: 700; letter-spacing: .19em; text-transform: uppercase; }

.vjv-points-of-sale__legend { position: absolute; bottom: 20PX; left: 24PX; color: #c8d0c8; font-size: 10PX; display: flex; align-items: center; gap: 8PX; }

.vjv-points-of-sale__legend::before { content: ''; width: 6PX; height: 6PX; background: var(--vjv-sale-yellow); border-radius: 50%; }

.vjv-points-of-sale button.vjv-points-of-sale__pin {
        position: absolute;
        display: grid;
        place-items: center;
        width: 45PX;
        height: 45PX;
        padding: 0;
        border: 2PX solid #2d3432;
        border-radius: 50%;
        background: var(--vjv-sale-yellow) !important;
        color: #222 !important;
        font-size: 14PX;
        font-weight: 700;
        line-height: 1;
        transform: translate(-50%, -50%);
        box-shadow: 0 0 0 5PX #fdc61220;
    }

.vjv-points-of-sale button.vjv-points-of-sale__pin:hover, .vjv-points-of-sale button.vjv-points-of-sale__pin[aria-pressed='true'] { background: white !important; box-shadow: 0 0 0 7PX #fdc61255; }

/* Positions follow the expanded SVG viewBox (-70 -25 830 730). */

.vjv-points-of-sale button.vjv-points-of-sale__pin[data-vjv-point='tourisme'] { top: 24.7%; left: 80.4%; }

/* Grand-Rue 34 is about 140 m northeast of Grand-Rue 22.
           A fixed visual gap keeps these neighbouring addresses separately tappable. */

.vjv-points-of-sale button.vjv-points-of-sale__pin[data-vjv-point='kiosque'] { top: calc(66.3% - 12PX); left: calc(26.7% + 23PX); }

.vjv-points-of-sale button.vjv-points-of-sale__pin[data-vjv-point='cmv'] { top: calc(66.3% + 12PX); left: calc(26.7% - 23PX); }

.vjv-points-of-sale button.vjv-points-of-sale__pin[data-vjv-point='brassus'] { top: 84%; left: 16%; }

.vjv-points-of-sale__place { position: absolute; color: #f3f2e7; font-size: 12PX; font-weight: 700; }

.vjv-points-of-sale__place--pont { right: 32%; top: 15%; }

.vjv-points-of-sale__place--sentier { left: 26.7%; top: calc(66.3% - 57PX); transform: translateX(-50%); white-space: nowrap; }

.vjv-points-of-sale__place--brassus { left: calc(16% + 32PX); top: 84%; transform: translateY(-50%); white-space: nowrap; }

.vjv-points-of-sale__panel { min-width: 0; }

.vjv-points-of-sale--enhanced .vjv-points-of-sale__panel { display: flex; flex-direction: column; padding: 0 18PX 0 8PX; }

.vjv-points-of-sale__list { border-top: 1PX solid #deded7; margin-bottom: 19PX; }

.vjv-points-of-sale button.vjv-points-of-sale__choice {
        display: flex;
        align-items: center;
        gap: 14PX;
        width: 100%;
        padding: 13PX 10PX;
        border: 0;
        border-bottom: 1PX solid #deded7;
        border-radius: 0;
        background: transparent !important;
        color: var(--vjv-sale-ink) !important;
        text-align: left;
    }

.vjv-points-of-sale button.vjv-points-of-sale__choice:hover { background: #eeede6 !important; }

.vjv-points-of-sale button.vjv-points-of-sale__choice[aria-pressed='true'] { background: #ffed9b !important; }

.vjv-points-of-sale__number { width: 30PX; height: 30PX; border: 1PX solid #c7c7bb; border-radius: 50%; flex: 0 0 30PX; display: grid; place-items: center; font-size: 11PX; font-weight: 400; line-height: 1; }

.vjv-points-of-sale__choice[aria-pressed='true'] .vjv-points-of-sale__number { background: var(--vjv-sale-yellow); border-color: var(--vjv-sale-yellow); }

.vjv-points-of-sale__name { font-size: 13PX; font-weight: 700; line-height: 1.45; }

.vjv-points-of-sale__name small { display: block; font-size: 11PX; font-weight: 400; color: #707067; }

.vjv-points-of-sale__details { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230PX), 1fr)); gap: 18PX; }

.vjv-points-of-sale--enhanced .vjv-points-of-sale__details { display: flex; flex: 1; }

.vjv-points-of-sale__detail { flex: 1; min-width: 0; padding: 23PX 25PX; background: white; border: 1PX solid #e2e2d8; border-radius: 6PX; }

.vjv-points-of-sale__detail .vjv-points-of-sale__eyebrow { color: #68705e; font-size: 9PX; }

.vjv-points-of-sale .vjv-points-of-sale__detail h3 { font-size: 23PX; margin-top: 9PX; }

.vjv-points-of-sale__detail address { font-style: normal; font-size: 14PX; line-height: 1.6; margin: 16PX 0 20PX; }

.vjv-points-of-sale__detail-actions { display: flex; align-items: center; gap: 16PX; flex-wrap: wrap; }

.vjv-points-of-sale__directions { display: inline-flex; align-items: center; justify-content: center; gap: 9PX; padding: 10PX 19PX; border-radius: 50PX; background: var(--vjv-sale-yellow); color: var(--vjv-sale-ink); font-size: 12PX; font-weight: 700; line-height: 1.5; text-decoration: none; }

.vjv-points-of-sale__directions:hover { background: #efb800; color: var(--vjv-sale-ink); }

.vjv-points-of-sale__website { font-size: 11PX; color: var(--vjv-sale-ink); }

.vjv-points-of-sale p.vjv-points-of-sale__hint { margin-top: 17PX; font-size: 10PX; line-height: 1.65; color: #68705e; }

@media (max-width: 900px) {
    .vjv-points-of-sale-dialog { width: calc(100% - 30PX); max-height: calc(100dvh - 30PX); }
        .vjv-points-of-sale--enhanced .vjv-points-of-sale__layout { grid-template-columns: 1fr 1fr; }
        .vjv-points-of-sale .vjv-points-of-sale__header h2 { font-size: 26PX; }
        .vjv-points-of-sale--enhanced .vjv-points-of-sale__panel { padding-right: 0; }
        .vjv-points-of-sale__detail { padding: 19PX; }
        .vjv-points-of-sale__name { font-size: 11PX; }
}

@media (max-width: 640px) {
    .vjv-header--home {
        max-height: none;
    }
        .vjv-header--home .vjv-header__actions { gap: 10PX; }
        .vjv-header--home .vjv-header__action { padding: 11PX 17PX; font-size: 12PX; line-height: 1.5; }
        .vjv-header--home .vjv-header__points-of-sale-text { font-size: 11PX; }

    .vjv-points-of-sale-dialog { width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; }
        .vjv-points-of-sale__header { padding: 22PX 20PX 18PX; }
        .vjv-points-of-sale .vjv-points-of-sale__header h2 { font-size: 25PX; max-width: 260PX; }
        .vjv-points-of-sale__header .vjv-points-of-sale__eyebrow { font-size: 9PX; }
        .vjv-points-of-sale__header > div > p:last-child { font-size: 11PX; max-width: 290PX; margin-top: 8PX; }
        .vjv-points-of-sale__layout, .vjv-points-of-sale--enhanced .vjv-points-of-sale__layout { display: flex; flex-direction: column; padding: 0 16PX 20PX; gap: 15PX; }
        .vjv-points-of-sale__map { width: 100%; min-height: 340PX; aspect-ratio: 1; }
        .vjv-points-of-sale__map-eyebrow { top: 15PX; left: 15PX; font-size: 8PX; }
        .vjv-points-of-sale button.vjv-points-of-sale__pin { width: 44PX; height: 44PX; font-size: 12PX; }
        .vjv-points-of-sale__legend { bottom: 13PX; left: 15PX; font-size: 8PX; }
        .vjv-points-of-sale__place { font-size: 10PX; }
        .vjv-points-of-sale--enhanced .vjv-points-of-sale__panel { padding: 0; }
        .vjv-points-of-sale__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 0; gap: 6PX; margin-bottom: 12PX; }
        .vjv-points-of-sale button.vjv-points-of-sale__choice { min-width: 0; padding: 10PX 8PX; gap: 7PX; border: 1PX solid #d9dacc; border-radius: 5PX; }
        .vjv-points-of-sale__name { font-size: 10PX; line-height: 1.4; }
        .vjv-points-of-sale__name small { font-size: 9PX; }
        .vjv-points-of-sale__number { width: 23PX; height: 23PX; flex-basis: 23PX; font-size: 9PX; }
        .vjv-points-of-sale__details { grid-template-columns: 1fr; }
        .vjv-points-of-sale__detail { padding: 16PX 18PX; }
        .vjv-points-of-sale .vjv-points-of-sale__detail h3 { font-size: 21PX; margin-top: 6PX; }
        .vjv-points-of-sale__detail address { margin: 10PX 0 13PX; font-size: 12PX; }
        .vjv-points-of-sale p.vjv-points-of-sale__hint { font-size: 9PX; margin-top: 13PX; }
}

@media (prefers-reduced-motion: no-preference) {
    .vjv-points-of-sale__pin, .vjv-points-of-sale__choice { transition: background .18s ease, box-shadow .18s ease; }
}
