/* Ajustements communs ordinateur, tablette et téléphone. */
section[id] { scroll-margin-top: calc(var(--header-height) + 20px); }
.container > *, .contact-layout > *, .contact-form > *, .laine-grid > *, .parc-layout > *, .apropos-grid > * { min-width: 0; }
video { display: block; width: 100%; max-width: 100%; }
.portrait-frame .caption { max-width: calc(100% - 20px); white-space: normal; text-align: center; }
.carousel-container { min-width: 0; touch-action: pan-y pinch-zoom; }
.carousel-track .parrain-card { flex: 0 0 calc((100% - 36px) / 3); min-width: 0; }
.carousel-btn { width: 44px; height: 44px; padding: 0; line-height: 1; flex-shrink: 0; }
.carousel-btn.prev { left: -20px; }
.carousel-btn.next { right: -20px; }
.carousel-btn svg { display: block; width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.carousel-btn:focus-visible, .carousel-dots .dot:focus-visible { outline: 2px solid var(--paper); outline-offset: 3px; }
.carousel-dots { gap: 2px; flex-wrap: wrap; }
.carousel-dots .dot { width: 24px; height: 24px; padding: 0; border: 0; display: grid; place-items: center; }
.carousel-dots .dot::before { content: ''; width: 7px; height: 7px; border: 1px solid var(--gold-soft); border-radius: 50%; }
.carousel-dots .dot.active { background: transparent; transform: none; }
.carousel-dots .dot.active::before { background: var(--blood-bright); border-color: var(--gold-bright); }
.newsletter-popup { width: min(400px, calc(100vw - 32px)); max-width: 400px; max-height: calc(100dvh - 32px); overflow-y: auto; }
.booking-popup { width: min(420px, calc(100vw - 32px)); max-width: 420px; max-height: calc(100dvh - 32px); overflow-y: auto; }
.contact-honeypot { display: none; }
.newsletter-input-label { display: block; text-align: left; font-size: 13px; color: var(--paper-dim); }
.newsletter-provider-form { display: block; width: 100%; height: 480px; border: 0; margin-top: 20px; }
.nl-submit:disabled, .nl-form input:disabled { opacity: .6; cursor: default; }
.booking-request-note { font-size: 12px; color: var(--paper-dim); text-align: center; margin-top: 12px; }
.booking-field textarea { display: block; width: 100%; min-height: 100px; resize: vertical; background: rgba(17,13,12,.5); color: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; font: 16px var(--body); }
.booking-field textarea:focus { outline: 1px solid var(--gold-bright); }
.contact-email-fallback { grid-column: 1 / -1; color: var(--paper-dim); font-size: 13px; overflow-wrap: anywhere; }
.contact-email-fallback a { color: var(--gold-bright); }
.photo-zoomable { cursor: zoom-in; }
.photo-zoomable:focus-visible { outline: 2px solid var(--gold-bright); outline-offset: 3px; }
.lightbox-overlay { padding: 24px; }
.lightbox-overlay img { max-width: 94vw; max-height: 88dvh; border-radius: 0; }
.lightbox-close { display: grid; place-items: center; width: 44px; height: 44px; right: 12px; top: 8px; z-index: 1; }
.float-booking { max-width: calc(100vw - 32px); white-space: normal; text-align: center; }
.footer-grid a { overflow-wrap: anywhere; }
@media (max-width: 900px) {
    .carousel-track .parrain-card { flex-basis: calc((100% - 18px) / 2); }
    .carousel-btn.prev { left: -16px; }
    .carousel-btn.next { right: -16px; }
    nav:not(.open) { visibility: hidden; pointer-events: none; }
    nav.open { visibility: visible; pointer-events: auto; }
    nav a { min-height: 44px; display: flex; align-items: center; }
    .form-field input, .form-field textarea, .booking-field input, .nl-form input { font-size: 16px; min-width: 0; }
    .contact-form textarea { min-height: 110px; }
}
@media (max-width: 680px) {
    .logo-text { display: none; }
    .carousel-track .parrain-card { flex-basis: 100%; }
    .hero-actions .shop-primary, .shop-products-banner .shop-primary { width: 100%; }
    .float-booking { right: 16px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); font-size: 10px; padding: 13px 16px; }
    footer { padding-bottom: calc(90px + env(safe-area-inset-bottom, 0px)); }
    .google-reviews-action .btn-primary, .podcast-content .btn-primary { max-width: 100%; text-align: center; }
}
@media (prefers-reduced-motion: reduce) {
    .plantes-track { animation: none; }
    .carousel-track { transition: none; }
}
