/*
 * Tema "pizboe" — Hotel PizBoè (Mazzin di Fassa).
 * Grafica ripresa dal sito attuale hotelpizboe.it (Flatsome): header scuro con logo centrato,
 * slider a tutto schermo, titoli maiuscoli, pulsanti rossi a pillola, blocchi foto/testo a bordo
 * pagina, footer nero a 3 colonne. Specifica: docs/client/design/home-spec.md.
 * Classi con prefisso pz- (tema cliente), caricato dopo il CSS del prodotto.
 *
 * Contrasti (WCAG 2.2 AA): bianco su rosso #e50404 4.83:1; su fondi scuri il testo rosso usa
 * #ff4d4d (6.05:1 su nero); su fondi chiari non bianchi il rosso usa #c40303 (#e50404 su
 * #f4f2ef e' solo 4.32:1). Focus a doppio colore, visibile anche sui pulsanti rossi.
 */

@font-face {
    font-family: 'Montserrat';
    src: url("fonts/Montserrat-Variable-TuwR0qG.woff2") format('woff2');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

:root {
    --pz-black: #0a0a0a;
    --pz-header-bg: rgba(22, 22, 22, 0.95);
    --pz-white: #ffffff;
    --pz-red: #e50404;
    --pz-red-dark: #c40303;
    --pz-red-on-dark: #ff4d4d;
    --pz-stone: #f4f2ef;
    --pz-grey: #595959;
    --pz-grey-on-dark: #d9d9d9;
    --pz-line: #e3e0db;
    --pz-whatsapp: #128c7e;
    --pz-font: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --pz-radius: 4px;
    --pz-pill: 99px;
    --pz-container: 1180px;
    --pz-header-h: 76px;
    --pz-nav-h: 48px;
}

/* === Base === */
.pz-body {
    margin: 0;
    font-family: var(--pz-font);
    font-size: 1rem;
    line-height: 1.65;
    color: var(--pz-black);
    background: var(--pz-white);
    -webkit-font-smoothing: antialiased;
}

.pz-body h1,
.pz-body h2,
.pz-body h3 {
    font-family: var(--pz-font);
    line-height: 1.2;
}

.pz-body a {
    color: inherit;
}

/* Focus a doppio colore: visibile su fondi chiari, scuri e sui pulsanti rossi */
.pz-body :focus-visible {
    outline: 3px solid var(--pz-black);
    outline-offset: 2px;
    box-shadow: 0 0 0 6px var(--pz-white);
}

.pz-header :focus-visible,
.pz-footer :focus-visible,
.pz-section--dark :focus-visible,
.pz-hero :focus-visible,
.pz-partner :focus-visible,
.pz-news :focus-visible,
.pz-lightbox :focus-visible,
.pz-mobile-menu :focus-visible {
    outline: 3px solid var(--pz-white);
    box-shadow: 0 0 0 6px var(--pz-black);
}

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

.pz-icon {
    flex-shrink: 0;
    vertical-align: middle;
}

.pz-container {
    width: 100%;
    max-width: var(--pz-container);
    margin-inline: auto;
    padding-inline: 1.25rem;
    box-sizing: border-box;
}

.pz-visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.pz-skip-link {
    position: absolute;
    left: 1rem;
    top: -100px;
    z-index: 1000;
    padding: 0.75rem 1rem;
    background: var(--pz-black);
    color: var(--pz-white);
    text-decoration: none;
}

.pz-skip-link:focus {
    top: 1rem;
}

/* === Tipografia ===
   Tre livelli: H1 700 con iniziale maiuscola anche sopra le foto (20/10/2026: il maiuscolo negli hero
   risultava ancora invadente), H2 700 con iniziale
   maiuscola, titoli di blocco e card 700 piu' piccoli. Maiuscolo spaziato solo per etichette
   (eyebrow, menu, bottoni, footer). Revisione design 19/10/2026: i titoli erano tutti 800 maiuscoli. */
.pz-h1 {
    font-size: clamp(1.8rem, 3.2vw, 2.5rem);
    font-weight: 700;
    margin: 0 0 0.5rem;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.15;
}

.pz-h2 {
    font-size: clamp(1.4rem, 2.4vw, 1.9rem);
    font-weight: 700;
    margin: 0 0 1rem;
    text-transform: none;
    letter-spacing: -0.005em;
    line-height: 1.2;
}

.pz-h2--display {
    font-size: clamp(1.8rem, 3.6vw, 2.6rem);
}

.pz-h3 {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 2rem 0 1rem;
}

.pz-lead {
    font-size: 1.125rem;
    color: var(--pz-grey);
    max-width: 60ch;
}

.pz-eyebrow {
    margin: 0 0 0.75rem;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.pz-link {
    font-weight: 700;
    color: var(--pz-red-dark);
    text-underline-offset: 4px;
}

.pz-section--dark .pz-link,
.pz-band--dark .pz-link {
    color: var(--pz-red-on-dark);
}

/* === Pulsanti: rossi a pillola, maiuscoli (min 44px, WCAG 2.5.8) === */
.pz-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 44px;
    padding: 0.7rem 1.6rem;
    border: 2px solid transparent;
    border-radius: var(--pz-pill);
    font: 700 0.9rem/1 var(--pz-font);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.pz-btn--sm {
    padding: 0.55rem 1.25rem;
    font-size: 0.82rem;
}

.pz-btn--lg {
    min-height: 52px;
    padding: 0.9rem 2.2rem;
    font-size: 1rem;
}

.pz-body .pz-btn--primary {
    background: var(--pz-red);
    border-color: var(--pz-red);
    color: var(--pz-white);
}

.pz-body .pz-btn--primary:hover {
    background: var(--pz-red-dark);
    border-color: var(--pz-red-dark);
}

.pz-body .pz-btn--outline {
    background: transparent;
    border-color: var(--pz-black);
    color: var(--pz-black);
}

.pz-body .pz-btn--outline:hover {
    background: var(--pz-black);
    color: var(--pz-white);
}

.pz-body .pz-btn--light {
    background: var(--pz-white);
    border-color: var(--pz-white);
    color: var(--pz-black);
}

.pz-body .pz-btn--light:hover {
    background: transparent;
    color: var(--pz-white);
}

/* Pulsanti secondari neri a pillola, come nel sito attuale: il rosso resta per prenotare */
.pz-body .pz-btn--dark {
    background: var(--pz-black);
    border-color: var(--pz-black);
    color: var(--pz-white);
}

.pz-body .pz-btn--dark:hover {
    background: #3a3a3a;
    border-color: #3a3a3a;
}

.pz-btn--block {
    width: 100%;
}

.pz-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    margin: 1.5rem 0 0;
}

.pz-actions--center {
    justify-content: center;
}

/* === Header: scuro, logo centrato, menu su seconda riga === */
.pz-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--pz-header-bg);
    color: var(--pz-white);
    transition: background-color 0.25s ease, box-shadow 0.25s ease;
}

/* Home: trasparente sopra lo slider, scuro allo scroll */
.pz-header--overlay {
    position: fixed;
    inset: 0 0 auto 0;
}

/* Miglioramento progressivo: trasparente sopra la foto solo se pizboe.js e' attivo (senza JS resta scuro) */
.pz-header--overlay.is-overlay-ready {
    background: linear-gradient(180deg, rgba(10, 10, 10, 0.65) 0%, rgba(10, 10, 10, 0) 100%);
}

.pz-header--overlay.is-overlay-ready.is-scrolled,
.pz-header--overlay.is-scrolled {
    background: var(--pz-header-bg);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}

.pz-header__bar {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    min-height: var(--pz-header-h);
    max-width: 1440px;
    margin-inline: auto;
    padding-inline: 1.5rem;
    box-sizing: border-box;
}

.pz-header__contacts,
.pz-header__social {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-header__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
}

.pz-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-width: 44px;
    min-height: 44px;
    color: var(--pz-white);
    text-decoration: none;
}

.pz-body .pz-icon-link {
    color: var(--pz-white);
}

.pz-icon-link:hover {
    color: var(--pz-red-on-dark);
}

.pz-header__phone {
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.03em;
}

.pz-brand {
    display: inline-flex;
    justify-self: center;
}

.pz-brand .pz-brand__logo {
    display: block;
    width: auto;
    height: 58px;
}

.pz-header__lang .t-lang-switcher {
    color: var(--pz-white);
}

.pz-header__lang button,
.pz-header__lang a {
    min-height: 44px;
    color: var(--pz-white);
}

.pz-header__toggle {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    padding: 10px;
    border: 0;
    background: transparent;
    cursor: pointer;
}

.pz-header__toggle span {
    display: block;
    height: 2px;
    background: var(--pz-white);
}

.pz-header__nav {
    border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.pz-nav__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0 0.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-nav__list a {
    display: inline-flex;
    align-items: center;
    min-height: var(--pz-nav-h);
    padding: 0 1rem;
    color: var(--pz-white);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-decoration: none;
    text-transform: uppercase;
}

.pz-body .pz-nav__list a {
    color: var(--pz-white);
}

.pz-nav__list a:hover,
.pz-body .pz-nav__list a[aria-current='page'] {
    color: var(--pz-red-on-dark);
}

.pz-nav__list a[aria-current='page'] {
    box-shadow: inset 0 -3px 0 var(--pz-red-on-dark);
}

/* Drawer mobile (controller gr-mobile-menu: classe is-open) */
.pz-mobile-menu {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 200;
    width: min(320px, 85vw);
    padding: 1.5rem;
    background: var(--pz-black);
    color: var(--pz-white);
    transform: translateX(-100%);
    transition: transform 0.2s ease;
    visibility: hidden;
    overflow-y: auto;
    box-sizing: border-box;
}

.pz-mobile-menu.is-open {
    transform: none;
    visibility: visible;
}

.pz-mobile-menu__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    margin: -0.5rem 0 0 -0.5rem;
    border: 0;
    background: transparent;
    color: var(--pz-white);
    cursor: pointer;
}

.pz-mobile-menu__list {
    margin: 1rem 0 1rem;
    padding: 0;
    list-style: none;
}

.pz-mobile-menu__list a,
.pz-mobile-menu__phone {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 48px;
    color: var(--pz-white);
    font-weight: 700;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-bottom: 1px solid #2a2a2a;
}

.pz-body .pz-mobile-menu__list a,
.pz-body .pz-mobile-menu__phone {
    color: var(--pz-white);
}

.pz-mobile-menu__phone {
    text-transform: none;
    font-weight: 600;
}

.pz-body .pz-mobile-menu__list a[aria-current='page'] {
    color: var(--pz-red-on-dark);
}

.pz-mobile-menu__lang {
    margin-top: 1.25rem;
}

.pz-mobile-backdrop {
    position: fixed;
    inset: 0;
    z-index: 150;
    background: rgba(10, 10, 10, 0.6);
}

.pz-mobile-backdrop.is-open {
    display: block;
}

/* === Hero con slider a tutto schermo === */
.pz-hero {
    position: relative;
    display: grid;
    /* Non tutto schermo: su desktop la barra di prenotazione sotto lo slider resta sopra la piega
   (verifica esterna 22/10/2026: hero piu' basso, il modulo si vede anche con il banner cookie aperto) */
    min-height: clamp(460px, 66svh, 660px);
    color: var(--pz-white);
    background: var(--pz-black);
    isolation: isolate;
    overflow: hidden;
}

.pz-slider,
.pz-slider__track {
    position: absolute;
    inset: 0;
    /* Contesto di sovrapposizione proprio: slide e velo restano sotto i controlli */
    z-index: 0;
}

.pz-slider {
    z-index: -1;
}

.pz-slider__slide {
    position: absolute;
    inset: 0;
    margin: 0;
    opacity: 0;
    transition: opacity 0.9s ease;
}

.pz-slider__slide.is-active {
    z-index: 2;
    opacity: 1;
}

/* La slide uscente resta piena sotto quella nuova finche' questa non e' comparsa: la dissolvenza
   non passa mai dal nero, anche se la foto nuova tarda a essere disegnata */
.pz-slider__slide.is-prev {
    z-index: 1;
    opacity: 1;
    transition: none;
}

.pz-slider__slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Velo come nel sito attuale (31%) + sfumature per header e testo */
.pz-slider__track::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        linear-gradient(180deg, rgba(10, 10, 10, 0.45) 0%, rgba(10, 10, 10, 0) 30%),
        linear-gradient(0deg, rgba(10, 10, 10, 0.7) 0%, rgba(10, 10, 10, 0) 55%),
        rgba(0, 0, 0, 0.31);
    pointer-events: none;
    /* Sopra le slide (z-index 1-2), per la leggibilita' del titolo */
    z-index: 3;
}

.pz-slider__controls {
    position: absolute;
    right: 1.5rem;
    bottom: 5.5rem;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.pz-slider__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: rgba(10, 10, 10, 0.55);
    color: var(--pz-white);
    cursor: pointer;
}

.pz-slider__btn:hover {
    background: var(--pz-red);
}

.pz-slider__dots {
    display: flex;
}

.pz-slider__dot {
    width: 28px;
    height: 44px;
    border: 0;
    background: transparent;
    cursor: pointer;
    position: relative;
}

.pz-slider__dot::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 11px;
    height: 11px;
    border: 2px solid var(--pz-white);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    box-sizing: border-box;
}

.pz-slider__dot[aria-current='true']::before {
    background: var(--pz-white);
}

/* Il contenuto sta sopra lo slider: lascia passare clic e hover ai controlli (pausa, frecce,
   puntini), tranne che sui suoi link */
.pz-hero__content {
    pointer-events: none;
    align-self: end;
    padding-block: calc(var(--pz-header-h) + var(--pz-nav-h) + 2rem) 7.5rem;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
}

.pz-hero__content a {
    pointer-events: auto;
}

.pz-hero__title {
    max-width: 18ch;
    margin: 0 0 1rem;
    font-size: clamp(1.9rem, 3.8vw, 3rem);
    font-weight: 700;
    letter-spacing: -0.005em;
    text-transform: none;
    color: var(--pz-white);
    line-height: 1.12;
}

.pz-hero__lead {
    max-width: 48ch;
    margin: 0 0 1.75rem;
    font-size: clamp(1.05rem, 1.6vw, 1.3rem);
}

/* === Barra di prenotazione ===
   Contenitore .pz-booking del tema; il form e' il componente BookingBar di gr-hospitality
   (classi gr-booking-bar*, stilate qui). */
.pz-booking {
    background: var(--pz-stone);
    padding-block: 1.25rem;
    scroll-margin-top: calc(var(--pz-header-h) + var(--pz-nav-h) + 16px);
}

.pz-booking .gr-booking-bar {
    display: block;
}

.pz-booking .gr-booking-bar__title {
    margin: 0 0 0.75rem;
    font-size: 1rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.pz-booking .gr-booking-bar__fields {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.75rem 1rem;
}

.pz-booking .gr-booking-bar__field {
    display: flex;
    flex: 1 1 180px;
    flex-direction: column;
    gap: 0.3rem;
}

.pz-booking .gr-booking-bar__field:has(select) {
    flex: 0 1 110px;
}

.pz-booking .gr-booking-bar__label {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.pz-booking .gr-booking-bar__input,
.pz-booking .gr-booking-bar__select {
    min-height: 46px;
    padding: 0.5rem 0.9rem;
    border: 1px solid #767676;
    border-radius: var(--pz-pill);
    background: var(--pz-white);
    font: 500 1rem var(--pz-font);
    color: var(--pz-black);
    box-sizing: border-box;
}

.pz-booking .gr-booking-bar__help {
    font-size: 0.8rem;
    color: var(--pz-grey);
}

.pz-booking .gr-booking-bar__error {
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.75rem;
    border-left: 4px solid var(--pz-red);
    background: var(--pz-white);
    font-weight: 600;
}

.pz-booking .gr-booking-bar__actions {
    display: flex;
    flex: 1 1 220px;
    flex-direction: column;
    gap: 0.3rem;
    align-self: flex-end;
}

.pz-booking .gr-booking-bar__submit {
    min-height: 46px;
    padding: 0.7rem 1.5rem;
    border: 2px solid var(--pz-red);
    border-radius: var(--pz-pill);
    background: var(--pz-red);
    color: var(--pz-white);
    font: 700 0.95rem/1 var(--pz-font);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
}

.pz-booking .gr-booking-bar__submit:hover {
    background: var(--pz-red-dark);
    border-color: var(--pz-red-dark);
}

.pz-booking .gr-booking-bar__note {
    font-size: 0.85rem;
    color: var(--pz-grey);
}

/* Variante sotto lo slider: pannello bianco che si sovrappone alla foto */
.pz-booking--hero {
    position: relative;
    z-index: 2;
    margin-top: -3.5rem;
    background: transparent;
    padding-block: 0;
}

.pz-booking--hero .gr-booking-bar {
    padding: 1.5rem 1.75rem;
    background: var(--pz-white);
    border-radius: 12px;
    box-shadow: 0 16px 48px rgba(10, 10, 10, 0.22);
}

/* Variante laterale nella scheda camera */
.pz-booking--aside {
    position: sticky;
    top: calc(var(--pz-header-h) + var(--pz-nav-h) + 16px);
    padding: 1.5rem;
    border-radius: 12px;
}

.pz-booking--aside .pz-container {
    padding: 0;
}

.pz-booking--aside .gr-booking-bar__field,
.pz-booking--aside .gr-booking-bar__field:has(select),
.pz-booking--aside .gr-booking-bar__actions {
    flex: 1 1 100%;
}

/* === Sezioni === */
.pz-section {
    padding-block: clamp(3.5rem, 7vw, 6rem);
}

.pz-section--tight-top {
    padding-top: 0;
}

.pz-section--dark {
    background: var(--pz-black);
    color: var(--pz-grey-on-dark);
}

.pz-section--dark .pz-h2,
.pz-section--dark h3 {
    color: var(--pz-white);
}

.pz-section__head {
    max-width: 760px;
    margin: 0 auto 2.5rem;
    text-align: center;
}

.pz-section__lead {
    margin: 0;
    font-size: 1.075rem;
    color: var(--pz-grey);
}

.pz-section--dark .pz-section__lead {
    color: var(--pz-grey-on-dark);
}

.pz-page-header {
    padding-block: 3rem 1.5rem;
    border-bottom: 1px solid var(--pz-line);
}

.pz-breadcrumb {
    margin: 0 0 0.75rem;
    font-size: 0.9rem;
}

.pz-breadcrumb a {
    color: var(--pz-grey);
}

/* Striscia di fiducia */
.pz-trust {
    padding-block: 2rem 1rem;
}

.pz-trust__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem 2rem;
    margin: 0 auto;
    padding-block: 0;
    list-style: none;
}

.pz-trust__item {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    font-size: 0.92rem;
    font-weight: 600;
}

.pz-trust__item .pz-icon {
    color: var(--pz-red-dark);
}

/* Intro "HOTEL PIZBOE" */
.pz-intro__inner {
    max-width: 860px;
    text-align: center;
}

.pz-intro__subtitle {
    margin: 0 0 1.25rem;
    font-size: clamp(1.15rem, 2vw, 1.45rem);
    font-weight: 600;
}

.pz-intro__text {
    margin: 0 auto 1.75rem;
    max-width: 70ch;
    font-size: 1.075rem;
}

/* Camere in home */
.pz-rooms {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-room-tile__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none;
    background: var(--pz-white);
    border: 1px solid var(--pz-line);
    border-radius: 8px;
    overflow: hidden;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.pz-room-tile__link:hover {
    box-shadow: 0 12px 32px rgba(10, 10, 10, 0.14);
    transform: translateY(-2px);
}

.pz-room-tile__media {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    background: var(--pz-stone);
}

.pz-room-tile__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Seconda foto al passaggio del mouse / focus, come nel sito attuale */
.pz-room-tile__alt {
    opacity: 0;
    transition: opacity 0.35s ease;
}

.pz-room-tile__link:hover .pz-room-tile__alt,
.pz-room-tile__link:focus-visible .pz-room-tile__alt {
    opacity: 1;
}

.pz-room-tile__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 0.3rem;
    padding: 1rem 1.1rem 1.2rem;
}

.pz-room-tile__name {
    font-size: 1.05rem;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.3;
}

.pz-room-tile__meta {
    font-size: 0.85rem;
    color: var(--pz-grey);
}

.pz-room-tile__more {
    margin-top: auto;
    padding-top: 0.5rem;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--pz-red-dark);
}

/* Prenotate direttamente */
.pz-direct {
    padding-block: clamp(2.5rem, 5vw, 3.5rem);
    background: var(--pz-stone);
}

.pz-direct__inner {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 2rem;
    align-items: center;
}

.pz-direct__inner p {
    margin: 0;
}

.pz-direct__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: flex-end;
}

/* Inverno / Estate */
.pz-seasons {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.75rem;
}

.pz-season {
    display: flex;
    flex-direction: column;
    background: var(--pz-black);
    color: var(--pz-grey-on-dark);
    border-radius: 8px;
    overflow: hidden;
}

.pz-season__image {
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
}

.pz-season__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    align-items: flex-start;
    padding: 1.75rem;
}

.pz-season__title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 1rem;
    color: var(--pz-white);
    font-size: clamp(1.15rem, 1.8vw, 1.4rem);
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
}

.pz-season__title .pz-icon {
    color: var(--pz-red-on-dark);
}

.pz-checklist {
    display: grid;
    gap: 0.6rem;
    margin: 0 0 1.5rem;
    padding: 0;
    list-style: none;
}

.pz-checklist li {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
}

.pz-checklist .pz-icon {
    margin-top: 0.2rem;
    color: var(--pz-red-on-dark);
}

/* Blocchi 50/50 a bordo pagina (Ristorante, Mare), come nel sito attuale */
.pz-band {
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-height: 425px;
}

.pz-band__image {
    width: 100%;
    height: 100%;
    min-height: 425px;
    object-fit: cover;
}

.pz-band__text {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(2rem, 6vw, 5rem);
    background: var(--pz-white);
}

.pz-band--reverse .pz-band__image {
    order: 2;
}

.pz-band--reverse .pz-band__text {
    background: var(--pz-stone);
}

.pz-band__text p {
    max-width: 60ch;
}

/* Servizi */
.pz-services {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2.5rem 2rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-service {
    text-align: center;
}

.pz-service__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 96px;
    height: 96px;
    margin-bottom: 1rem;
    border: 2px solid rgba(255, 255, 255, 0.25);
    border-radius: 50%;
    color: var(--pz-white);
}

.pz-service__icon img {
    width: 64px;
    height: auto;
}

.pz-service__title {
    margin: 0 0 0.5rem;
    font-size: 1.05rem;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.3;
}

.pz-service p {
    margin: 0;
    font-size: 0.95rem;
}

/* Banner QC Terme */
.pz-partner {
    padding-block: 2.25rem;
    background: var(--pz-black);
    color: var(--pz-grey-on-dark);
    border-top: 1px solid #1f1f1f;
}

.pz-partner__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 1.5rem 3rem;
    text-align: center;
}

.pz-partner__title {
    margin: 0 0 0.35rem;
    color: var(--pz-white);
    font-size: clamp(1.15rem, 1.8vw, 1.4rem);
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
}

.pz-partner p {
    margin: 0;
}

.pz-partner a {
    color: var(--pz-white);
    font-weight: 600;
}

/* Resta aggiornato (ex newsletter): foto con velo 50% */
.pz-news {
    position: relative;
    display: grid;
    min-height: 426px;
    place-items: center;
    color: var(--pz-white);
    isolation: isolate;
    overflow: hidden;
    text-align: center;
}

.pz-news__image {
    position: absolute;
    inset: 0;
    z-index: -2;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.pz-news::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: rgba(0, 0, 0, 0.55);
}

.pz-news__inner {
    max-width: 760px;
    padding-block: 3.5rem;
}

.pz-news .pz-h2 {
    color: var(--pz-white);
}

/* Gallery a tutta larghezza */
.pz-gallery-band {
    padding-bottom: 2.5rem;
}

.pz-gallery-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-gallery-grid__link {
    display: block;
    overflow: hidden;
}

.pz-gallery-grid__link img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.pz-gallery-grid__link:hover img {
    transform: scale(1.05);
}

.pz-gallery-band__more {
    margin-top: 1.75rem;
}

/* Lightbox */
.pz-lightbox {
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
    max-height: 100vh;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(10, 10, 10, 0.94);
    color: var(--pz-white);
}

.pz-lightbox::backdrop {
    background: rgba(10, 10, 10, 0.94);
}

.pz-lightbox__figure {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    height: 100%;
    margin: 0;
    padding: 4rem 4.5rem 2rem;
    box-sizing: border-box;
}

.pz-lightbox__figure img {
    max-width: 100%;
    max-height: calc(100vh - 9rem);
    object-fit: contain;
}

.pz-lightbox__btn {
    position: absolute;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    color: var(--pz-white);
    cursor: pointer;
}

.pz-lightbox__btn:hover {
    background: var(--pz-red);
}

.pz-lightbox__btn--close {
    top: 1rem;
    right: 1rem;
}

.pz-lightbox__btn--prev {
    top: 50%;
    left: 1rem;
    transform: translateY(-50%);
}

.pz-lightbox__btn--next {
    top: 50%;
    right: 1rem;
    transform: translateY(-50%);
}

/* Dove siamo */
.pz-where {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
    align-items: center;
    margin-top: 1rem;
}

.pz-where__title {
    margin: 0 0 1rem;
    font-size: clamp(1.15rem, 1.8vw, 1.4rem);
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
}

.pz-where__list {
    display: grid;
    gap: 0.75rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-where__list li {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
}

.pz-where__list .pz-icon {
    margin-top: 0.15rem;
    color: var(--pz-red-dark);
}

.pz-where__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 8px;
}

/* === Pagine camere (elenco e scheda) === */
.pz-room-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 2rem;
}

.pz-room-card {
    position: relative;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--pz-line);
    border-radius: 8px;
    overflow: hidden;
    transition: box-shadow 0.15s ease;
}

.pz-room-card:hover {
    box-shadow: 0 10px 30px rgba(10, 10, 10, 0.12);
}

.pz-room-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.pz-room-card__body {
    padding: 1.25rem 1.5rem 1.5rem;
}

.pz-room-card__title {
    margin: 0 0 0.25rem;
    font-size: 1.05rem;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.3;
}

.pz-room-card__title a {
    text-decoration: none;
}

/* Tutta la card e' cliccabile tramite il link del titolo */
.pz-room-card__title a::after {
    content: '';
    position: absolute;
    inset: 0;
}

.pz-room-card__meta {
    margin: 0 0 0.75rem;
    font-size: 0.85rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--pz-red-dark);
}

.pz-room-card__more {
    font-weight: 700;
    color: var(--pz-red-dark);
}

.pz-gallery__list {
    display: flex;
    gap: 0.5rem;
    margin: 0;
    padding: 0.5rem;
    list-style: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
}

.pz-gallery__item {
    flex: 0 0 min(80vw, 720px);
    scroll-snap-align: start;
}

.pz-gallery__item img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.pz-room {
    display: grid;
    grid-template-columns: 1.6fr 1fr;
    gap: 3rem;
    align-items: start;
}

.pz-prose {
    max-width: 70ch;
}

.pz-specs {
    margin: 0;
    border-top: 1px solid var(--pz-line);
}

.pz-specs__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--pz-line);
}

.pz-specs dt {
    font-weight: 700;
}

.pz-specs dd {
    margin: 0;
}

/* === Messaggi === */
.pz-flash {
    margin: 1rem 0 0;
    padding: 0.75rem 1rem;
    border-left: 4px solid var(--pz-black);
    background: var(--pz-stone);
}

.pz-flash--error {
    border-color: var(--pz-red);
}

/* === Footer nero a 3 colonne === */
.pz-footer {
    padding-top: 4rem;
    background: var(--pz-black);
    color: var(--pz-grey-on-dark);
    font-size: 0.95rem;
}

.pz-footer a {
    color: var(--pz-white);
}

.pz-footer__grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr 1fr;
    gap: 2.5rem;
}

.pz-footer .pz-footer__logo {
    display: block;
    width: 154px;
    margin-bottom: 1.25rem;
}

.pz-footer__address {
    display: grid;
    gap: 0.35rem;
    font-style: normal;
}

.pz-footer__line {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 32px;
    text-decoration: none;
}

.pz-footer__title {
    margin: 0 0 1rem;
    font-size: 0.85rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--pz-white);
}

.pz-footer__title--spaced {
    margin-top: 2rem;
}

.pz-footer__links,
.pz-footer__social {
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-footer__links a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    text-decoration: none;
}

.pz-footer__links a:hover,
.pz-footer__line:hover {
    text-decoration: underline;
}

.pz-footer__social {
    display: flex;
    gap: 0.5rem;
    margin-top: 1.25rem;
}

.pz-icon-link--round {
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 50%;
}

.pz-icon-link--round:hover {
    border-color: var(--pz-red-on-dark);
}

.pz-footer__partner img {
    display: block;
    width: 200px;
    height: auto;
}

.pz-footer__paypal {
    display: block;
    width: 150px;
    height: auto;
    border-radius: 6px;
}

.pz-footer__bottom {
    margin: 3rem 0 0;
    padding: 1.25rem;
    border-top: 1px solid #2a2a2a;
    text-align: center;
    font-size: 0.82rem;
}

/* === WhatsApp flottante (verde scuro: icona bianca a 4.1:1) === */
.pz-whatsapp {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 95;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--pz-whatsapp);
    color: var(--pz-white);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
}

.pz-body .pz-whatsapp {
    color: var(--pz-white);
}

.pz-whatsapp:hover {
    background: #0e6f64;
}

/* === Banner cookie del prodotto, adattato al tema ===
   Testo leggibile e "Solo necessari"/"Personalizza" con la stessa evidenza di
   "Accetta tutti": rifiutare deve essere facile quanto accettare (GDPR). */
.pz-body .gr-cookie-banner {
    background: var(--pz-white);
    color: var(--pz-black);
    border-top: 3px solid var(--pz-black);
    box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.2);
    padding: 1.1rem 1.25rem;
    font-family: var(--pz-font);
}

.pz-body .gr-cookie-banner p,
.pz-body .gr-cookie-banner-content,
.pz-body .gr-cookie-preferences,
.pz-body .gr-cookie-preferences-desc,
.pz-body .gr-cookie-option-info {
    color: var(--pz-black);
}

.pz-body .gr-cookie-preferences {
    background: var(--pz-white);
}

.pz-body .gr-cookie-banner a {
    color: var(--pz-red-dark);
    font-weight: 600;
}

.pz-body .gr-cookie-banner-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
}

.pz-body .gr-cookie-banner .gr-btn-primary,
.pz-body .gr-cookie-banner .gr-btn-outline {
    min-height: 44px;
    padding: 0.6rem 1.25rem;
    border: 2px solid var(--pz-black);
    border-radius: var(--pz-pill);
    font: 700 0.85rem/1 var(--pz-font);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    cursor: pointer;
}

.pz-body .gr-cookie-banner .gr-btn-primary {
    background: var(--pz-black);
    color: var(--pz-white);
}

.pz-body .gr-cookie-banner .gr-btn-outline {
    background: var(--pz-white);
    color: var(--pz-black);
}

.pz-body .gr-cookie-banner .gr-btn-outline:hover {
    background: var(--pz-stone);
}

/* === Barra fissa mobile === */
.pz-sticky-book {
    display: none;
}

/* === Responsive === */
@media (max-width: 1100px) {
    .pz-rooms {
        grid-template-columns: repeat(3, 1fr);
    }

    .pz-header__phone {
        display: none;
    }
}

@media (max-width: 960px) {
    .pz-header__bar {
        grid-template-columns: 44px 1fr auto;
        min-height: 64px;
        padding-inline: 0.75rem;
    }

    .pz-header__toggle {
        display: flex;
    }

    .pz-header__contacts,
    .pz-header__social,
    .pz-header__lang,
    .pz-header__nav {
        display: none;
    }

    .pz-brand .pz-brand__logo {
        height: 44px;
    }

    .pz-header__cta {
        padding-inline: 1rem;
    }

    .pz-hero {
        min-height: clamp(420px, 58svh, 560px);
    }

    .pz-hero__content {
        padding-block: calc(64px + 2rem) 7rem;
        text-align: center;
    }

    .pz-hero__title,
    .pz-hero__lead {
        margin-inline: auto;
    }

    .pz-slider__controls {
        right: 50%;
        bottom: 4.25rem;
        transform: translateX(50%);
    }

    .pz-hero .pz-btn--lg {
        display: none;
    }

    .pz-rooms {
        grid-template-columns: repeat(2, 1fr);
    }

    .pz-direct__inner,
    .pz-seasons,
    .pz-band,
    .pz-where,
    .pz-room {
        grid-template-columns: 1fr;
    }

    .pz-direct__actions {
        justify-content: flex-start;
    }

    .pz-band,
    .pz-band__image {
        min-height: 300px;
    }

    .pz-band--reverse .pz-band__image {
        order: 0;
    }

    .pz-services {
        grid-template-columns: repeat(2, 1fr);
    }

    .pz-gallery-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .pz-booking--aside {
        position: static;
    }

    .pz-footer__grid {
        grid-template-columns: 1fr;
    }

    .pz-sticky-book {
        position: fixed;
        inset: auto 0 0 0;
        z-index: 90;
        display: block;
        padding: 0.6rem 1rem calc(0.6rem + env(safe-area-inset-bottom));
        background: var(--pz-white);
        box-shadow: 0 -4px 16px rgba(10, 10, 10, 0.12);
        transition: transform 0.2s ease;
    }

    .pz-sticky-book.is-hidden,
    .pz-js .pz-sticky-book:not(.is-visible) {
        transform: translateY(110%);
        visibility: hidden;
    }

    /* WhatsApp piu' piccolo; sale sopra la barra fissa solo quando la barra e' visibile */
    .pz-whatsapp {
        width: 48px;
        height: 48px;
        right: 0.75rem;
        bottom: calc(0.75rem + env(safe-area-inset-bottom));
        transition: bottom 0.2s ease;
    }

    .pz-body.pz-has-sticky-book .pz-whatsapp {
        bottom: calc(76px + env(safe-area-inset-bottom));
    }

    /* Spazio per non coprire il footer con la barra fissa */
    .pz-body {
        padding-bottom: 72px;
    }
}

@media (max-width: 560px) {
    .pz-services {
        grid-template-columns: 1fr;
    }

    /* Camere: carosello orizzontale invece di 11 card in colonna */
    .pz-rooms {
        display: flex;
        gap: 0.9rem;
        margin-inline: -1.25rem;
        padding: 0.25rem 1.25rem 1rem;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: 1.25rem;
    }

    .pz-room-tile {
        flex: 0 0 80%;
        scroll-snap-align: start;
    }

    .pz-header__cta {
        min-height: 44px;
        padding: 0.5rem 0.9rem;
        font-size: 0.78rem;
    }

    .pz-brand .pz-brand__logo {
        height: 38px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .pz-body *,
    .pz-body *::before,
    .pz-body *::after {
        transition: none !important;
        scroll-behavior: auto !important;
    }
}

/* === Pagine interne: pagine CMS (pages/show) e Contatti === */
.pz-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--pz-grey);
}

.pz-breadcrumb li + li::before {
    content: "/";
    margin-right: 0.5rem;
    color: var(--pz-line);
}

.pz-section--page {
    padding-block: clamp(2.5rem, 5vw, 4rem);
}

.pz-prose--page {
    max-width: none;
    font-size: 1.05rem;
    line-height: 1.75;
}

/* Testo in colonna leggibile; le gallerie usano tutta la larghezza */
.pz-prose--page > :not(.gallery) {
    max-width: 78ch;
}

.pz-prose--page > :first-child {
    margin-top: 0;
}

.pz-prose--page h2 {
    margin: 2.5rem 0 0.75rem;
    font-size: clamp(1.25rem, 2vw, 1.5rem);
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
}

.pz-prose--page h2::after {
    content: "";
    display: block;
    width: 48px;
    height: 3px;
    margin-top: 0.6rem;
    background: var(--pz-red);
}

.pz-prose--page h3 {
    margin: 2rem 0 0.5rem;
    font-size: 1.2rem;
    font-weight: 700;
}

.pz-prose--page p,
.pz-prose--page ul,
.pz-prose--page ol {
    margin: 0 0 1.1rem;
}

.pz-prose--page ul,
.pz-prose--page ol {
    padding-left: 1.25rem;
}

.pz-prose--page a {
    color: var(--pz-red-dark);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.pz-prose--page img {
    max-width: 100%;
    height: auto;
    border-radius: var(--pz-radius);
}

.pz-prose--page figure {
    margin: 1.5rem 0;
}

/* Gallerie importate da WordPress (<div class="gallery"><figure><img>) */
.pz-prose--page .gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
    gap: 0.75rem;
    margin: 1.5rem 0;
}

.pz-prose--page .gallery figure {
    margin: 0;
}

.pz-prose--page .gallery img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
}

/* Contatti */
.pz-contact {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: clamp(2rem, 5vw, 4rem);
    align-items: start;
}

.pz-contact__info {
    padding: 2rem;
    background: var(--pz-stone);
    border-radius: var(--pz-radius);
}

.pz-contact__list {
    display: grid;
    gap: 1.1rem;
    margin: 1.25rem 0;
    padding: 0;
    list-style: none;
}

.pz-contact__list li {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
}

.pz-contact__list .pz-icon {
    flex: none;
    margin-top: 0.2rem;
    color: var(--pz-red);
}

.pz-contact__list a {
    color: var(--pz-black);
}

.pz-contact__hours {
    color: var(--pz-grey);
}

.pz-form > div {
    margin-bottom: 1.1rem;
}

.pz-form label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 600;
}

.pz-form input[type="text"],
.pz-form input[type="email"],
.pz-form input[type="tel"],
.pz-form select,
.pz-form textarea {
    width: 100%;
    min-height: 44px;
    padding: 0.65rem 0.85rem;
    font: inherit;
    color: var(--pz-black);
    background: var(--pz-white);
    border: 1px solid #8a8a8a;
    border-radius: var(--pz-radius);
}

.pz-form input:focus-visible,
.pz-form select:focus-visible,
.pz-form textarea:focus-visible {
    outline: 3px solid var(--pz-red);
    outline-offset: 1px;
}

.pz-form ul {
    margin: 0.35rem 0 0;
    padding: 0;
    list-style: none;
    color: var(--pz-red-dark);
    font-size: 0.95rem;
}

.pz-form__consent {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    align-items: flex-start;
}

.pz-form__consent input {
    width: 22px;
    height: 22px;
    margin-top: 0.15rem;
    accent-color: var(--pz-red);
}

.pz-form__consent label {
    flex: 1;
    margin: 0;
    font-weight: 400;
}

.pz-form__consent ul {
    flex-basis: 100%;
}

.pz-hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

@media (max-width: 860px) {
    .pz-contact {
        grid-template-columns: 1fr;
    }
}

/* ==========================================================================
   Pagine interne professionali (docs/client/design/inner-pages-spec.md)
   Hero fotografico, intro, punti forti, "In breve", sezioni testo/foto, gallerie con lightbox,
   "Continua a scoprire", CTA con prenotazione, contatti, elenco e scheda camera.
   Contrasti (WCAG 2.2 AA): testo bianco sull'hero >= 5,7:1 (velo scuro), rosso testo su chiaro #c40303
   (6,2:1 su bianco, 5,6:1 su #f4f2ef), su nero #ff4d4d. Zoom e scroll morbido spenti con
   prefers-reduced-motion (vedi in fondo).
   ========================================================================== */

/* Utility: titolo nascosto del form di prenotazione (come .gr-sr-only del prodotto) */
.gr-sr-only {
    position: absolute !important;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.pz-section--stone {
    background: var(--pz-stone);
}

.pz-eyebrow--red {
    color: var(--pz-red-dark);
}

.pz-h2--sm {
    font-size: clamp(1.35rem, 2.4vw, 1.75rem);
}

/* --- C1 Hero di pagina ---------------------------------------------------- */
.pz-page-hero {
    position: relative;
    display: grid;
    align-items: end;
    min-height: clamp(340px, 46vh, 500px);
    color: var(--pz-white);
    background: var(--pz-black);
    isolation: isolate;
    overflow: hidden;
}

.pz-page-hero--compact {
    min-height: clamp(300px, 42vh, 420px);
}

.pz-page-hero .pz-page-hero__image {
    position: absolute;
    inset: 0;
    z-index: -2;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
}

.pz-page-hero--pos-top .pz-page-hero__image {
    object-position: center top;
}

.pz-page-hero--pos-center .pz-page-hero__image {
    object-position: center center;
}

.pz-page-hero--pos-bottom .pz-page-hero__image {
    object-position: center bottom;
}

/* Velo: a sinistra (dove sta il testo) e in basso il nero e' almeno al 60-80%; i primi 125px sotto
   header e menu trasparenti sono scuriti a ~0,6 per le voci di menu (misure nella PR). */
.pz-page-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    /* Velo solo dove serve (verifica esterna 22/10/2026: la foto era quasi nera): scuro in alto
       dietro header e menu, quasi trasparente al centro, scuro in basso a sinistra dietro il titolo */
    background:
        linear-gradient(90deg, rgba(10, 10, 10, 0.5) 0, rgba(10, 10, 10, 0.15) 45%, rgba(10, 10, 10, 0) 70%),
        linear-gradient(180deg, rgba(10, 10, 10, 0.6) 0, rgba(10, 10, 10, 0.45) 125px, rgba(10, 10, 10, 0.12) 45%, rgba(10, 10, 10, 0.35) 70%, rgba(10, 10, 10, 0.7) 100%);
    pointer-events: none;
}

.pz-page-hero__content {
    padding-top: calc(var(--pz-header-h) + var(--pz-nav-h) + 1.5rem);
    padding-bottom: clamp(2rem, 5vw, 3.5rem);
}

.pz-body .pz-page-hero__title {
    margin: 0 0 0.5rem;
    color: var(--pz-white);
    font-size: clamp(1.6rem, 2.8vw, 2.25rem);
    font-weight: 700;
    letter-spacing: -0.005em;
    text-transform: none;
    text-shadow: 0 2px 14px rgba(0, 0, 0, 0.6);
    line-height: 1.15;
}

.pz-page-hero__lead {
    max-width: 52ch;
    margin: 0;
    font-size: clamp(1.05rem, 1.5vw, 1.25rem);
    text-shadow: 0 1px 10px rgba(0, 0, 0, 0.65);
}

.pz-page-hero__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 1rem 0 0;
    padding: 0;
    list-style: none;
}

.pz-badge {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0.2rem 0.9rem;
    border: 1px solid rgba(255, 255, 255, 0.85);
    border-radius: var(--pz-pill);
    background: rgba(10, 10, 10, 0.55);
    color: var(--pz-white);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

/* Breadcrumb: link alti almeno 24px (WCAG 2.5.8), anche fuori dall'hero */
.pz-breadcrumb a {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}

.pz-breadcrumb--on-photo {
    margin: 0 0 0.75rem;
    font-size: 0.875rem;
}

.pz-body .pz-breadcrumb--on-photo ol,
.pz-body .pz-breadcrumb--on-photo a {
    color: var(--pz-white);
}

.pz-breadcrumb--on-photo a {
    text-underline-offset: 3px;
}

.pz-breadcrumb--on-photo li {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}

.pz-breadcrumb--on-photo li + li::before {
    content: '\203A';
    content: '\203A' / '';
    margin-right: 0.5rem;
    color: var(--pz-white);
}

/* Focus chiaro sopra le foto scure */
.pz-page-hero :focus-visible {
    outline: 3px solid var(--pz-white);
    box-shadow: 0 0 0 6px var(--pz-black);
}

/* --- C2 Intro ------------------------------------------------------------- */
.pz-page-intro__inner {
    max-width: 760px;
    text-align: center;
}

.pz-page-intro__text {
    margin: 0;
    font-size: 1.125rem;
    line-height: 1.75;
    color: var(--pz-black);
}

.pz-page-intro--about {
    padding-block: clamp(2.5rem, 5vw, 4rem);
    background: var(--pz-stone);
}

/* --- C3 Punti forti ------------------------------------------------------- */
.pz-highlights {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2.5rem 1.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-highlight {
    flex: 0 1 calc(25% - 1.15rem);
    min-width: 200px;
    text-align: center;
}

.pz-highlight__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin-bottom: 1rem;
    border: 2px solid var(--pz-red);
    border-radius: 50%;
    color: var(--pz-black);
}

.pz-highlight__title {
    margin: 0 0 0.4rem;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.pz-highlight__text {
    margin: 0;
    font-size: 0.95rem;
    color: var(--pz-grey);
}

.pz-highlights--dark .pz-highlight__icon {
    border-color: var(--pz-red-on-dark);
    color: var(--pz-white);
}

.pz-highlights--dark .pz-highlight__title {
    color: var(--pz-white);
}

.pz-highlights--dark .pz-highlight__text {
    color: var(--pz-grey-on-dark);
}

/* --- C6 In breve ---------------------------------------------------------- */
.pz-facts {
    padding-block: 1rem;
    background: var(--pz-stone);
}

.pz-facts__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem 2.25rem;
    margin-block: 0;
    padding-block: 0;
    list-style: none;
}

.pz-facts__item {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
    color: var(--pz-black);
    font-size: 0.95rem;
    font-weight: 600;
}

.pz-facts__item .pz-icon {
    color: var(--pz-red-dark);
}

/* Impianti vicini (Inverno) */
.pz-lifts__inner {
    max-width: 860px;
    text-align: center;
}

.pz-lifts__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem 2rem;
    margin: 1.25rem 0;
    padding: 0;
    list-style: none;
}

.pz-lifts__list li {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
}

.pz-lifts__list .pz-icon {
    color: var(--pz-red-dark);
}

.pz-lifts__more {
    margin: 0;
}

/* --- C4 Sezioni testo/foto ------------------------------------------------ */
.pz-band > .pz-band__image {
    height: 100%;
    max-width: none;
}

.pz-band__text .pz-eyebrow {
    margin-bottom: 0.5rem;
}

.pz-band__text .pz-checklist .pz-icon {
    color: var(--pz-red-dark);
}

.pz-band__text .pz-link {
    color: var(--pz-red-dark);
}

/* Variante solo testo, quando manca una foto adatta */
.pz-band--text {
    grid-template-columns: 1fr;
    min-height: 0;
}

.pz-band--text .pz-band__text {
    align-items: center;
    background: var(--pz-stone);
    text-align: center;
}

.pz-band--text .pz-checklist {
    max-width: 62ch;
    text-align: left;
}

/* --- C5 Mini-gallery: sezioni con titolo, indice a chip -------------------- */
.pz-gallery-band--titled {
    padding-bottom: 1.5rem;
    scroll-margin-top: calc(var(--pz-header-h) + var(--pz-nav-h) + 16px);
}

.pz-gallery-band__title {
    margin-block: 2.5rem 1.25rem;
}

.pz-chips-wrap {
    padding-block: 1.75rem 0.5rem;
}

.pz-chips {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem;
    margin-block: 0;
    padding-block: 0;
    list-style: none;
}

.pz-chip {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0.5rem 1.25rem;
    border: 2px solid var(--pz-black);
    border-radius: var(--pz-pill);
    color: var(--pz-black);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-decoration: none;
    text-transform: uppercase;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.pz-body .pz-chip:hover {
    background: var(--pz-black);
    color: var(--pz-white);
}

/* --- C9 Continua a scoprire ----------------------------------------------- */
.pz-crosslinks__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-crosslink {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 44px;
    overflow: hidden;
    border: 1px solid var(--pz-line);
    border-radius: 8px;
    background: var(--pz-white);
    text-decoration: none;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.pz-crosslink:hover {
    box-shadow: 0 12px 32px rgba(10, 10, 10, 0.14);
    transform: translateY(-2px);
}

.pz-crosslink__media {
    display: block;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background: var(--pz-stone);
}

.pz-crosslink__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.pz-crosslink:hover .pz-crosslink__media img {
    transform: scale(1.05);
}

.pz-crosslink__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 0.4rem;
    padding: 1.1rem 1.25rem 1.3rem;
}

.pz-crosslink__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    line-height: 1.3;
}

.pz-crosslink__text {
    color: var(--pz-grey);
    font-size: 0.95rem;
}

.pz-crosslink__arrow {
    margin-top: auto;
    padding-top: 0.5rem;
    color: var(--pz-red-dark);
}

/* --- C8 CTA finale con prenotazione --------------------------------------- */
.pz-book-cta {
    padding-block: clamp(3rem, 6vw, 5rem);
    background: var(--pz-stone);
    scroll-margin-top: calc(var(--pz-header-h) + var(--pz-nav-h) + 16px);
}

.pz-book-cta__inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    grid-template-areas:
        'intro form'
        'contacts form';
    grid-template-rows: auto 1fr;
    gap: 1.5rem clamp(2rem, 5vw, 4rem);
    align-items: start;
}

.pz-book-cta--no-form .pz-book-cta__inner {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
        'intro'
        'contacts';
    justify-items: center;
    text-align: center;
}

.pz-book-cta__intro {
    grid-area: intro;
}

.pz-book-cta__text {
    margin: 0;
    max-width: 52ch;
    font-size: 1.075rem;
}

.pz-book-cta__form {
    grid-area: form;
}

.pz-book-cta__contacts-wrap {
    grid-area: contacts;
}

.pz-book-cta__contacts,
.pz-room__contacts {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1.5rem;
    margin: 0 0 0.5rem;
    padding: 0;
    list-style: none;
}

.pz-book-cta--no-form .pz-book-cta__contacts {
    justify-content: center;
}

.pz-contact-link {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
    color: var(--pz-black);
    font-weight: 700;
    text-decoration: none;
}

.pz-contact-link:hover span {
    text-decoration: underline;
    text-underline-offset: 4px;
}

.pz-contact-link .pz-icon {
    color: var(--pz-red-dark);
}

.pz-book-cta__hours {
    display: flex;
    align-items: center;
    justify-content: inherit;
    gap: 0.5rem;
    margin: 0;
    color: var(--pz-grey);
    font-size: 0.95rem;
}

/* Pannello bianco con i campi a due colonne (variante cta della barra) */
.pz-booking--cta {
    padding: 1.5rem;
    border: 1px solid var(--pz-line);
    border-radius: 12px;
    background: var(--pz-white);
}

.pz-booking--cta .pz-container {
    padding: 0;
}

.pz-booking--cta .gr-booking-bar__field,
.pz-booking--cta .gr-booking-bar__field:has(select) {
    flex: 1 1 calc(50% - 0.5rem);
}

.pz-booking--cta .gr-booking-bar__actions {
    flex: 1 1 100%;
}

/* Avviso senza JavaScript (errore di prenotazione) */
.pz-notice-wrap {
    padding-block: 1rem 0;
}

.pz-notice {
    margin: 0;
    padding: 0.75rem 1rem;
    border-left: 4px solid var(--pz-red);
    background: var(--pz-stone);
    font-weight: 600;
}

/* --- Contatti ------------------------------------------------------------- */
.pz-section--quick {
    padding-block: 2rem 1rem;
}

.pz-quick-contact {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-block: 0;
    padding-block: 0;
    list-style: none;
}

.pz-quick-contact__btn {
    width: 100%;
    min-height: 56px;
    font-size: 1rem;
}

.pz-error-summary {
    margin: 0 0 1.5rem;
    padding: 1rem 1.25rem;
    border: 2px solid var(--pz-red-dark);
    border-left-width: 6px;
    border-radius: var(--pz-radius);
    background: var(--pz-white);
}

.pz-error-summary__title {
    margin: 0 0 0.5rem;
    font-size: 1.05rem;
    font-weight: 800;
}

.pz-error-summary ul {
    margin: 0;
    padding-left: 1.25rem;
}

.pz-error-summary a {
    color: var(--pz-red-dark);
    font-weight: 600;
}

.pz-form [aria-invalid='true'] {
    border-color: var(--pz-red-dark);
    box-shadow: inset 0 0 0 1px var(--pz-red-dark);
}

/* --- Camere: elenco e scheda ---------------------------------------------- */
.pz-rooms--grid {
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

.pz-room-group .pz-h2 {
    margin-bottom: 1.5rem;
}

.pz-room-badge {
    position: absolute;
    top: 0.75rem;
    left: 0.75rem;
    z-index: 1;
    padding: 0.25rem 0.75rem;
    border-radius: var(--pz-pill);
    background: var(--pz-black);
    color: var(--pz-white);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.pz-room-tile__excerpt {
    color: var(--pz-grey);
    font-size: 0.9rem;
    line-height: 1.5;
}

.pz-room-tile__more {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.pz-room-gallery {
    padding-top: 0;
}

.pz-gallery-grid--room > li:first-child {
    grid-column: span 2;
    grid-row: span 2;
}

.pz-gallery-grid--room > li:first-child .pz-gallery-grid__link,
.pz-gallery-grid--room > li:first-child .pz-gallery-grid__link img {
    height: 100%;
}

.pz-gallery-grid--room > li:first-child .pz-gallery-grid__link img {
    aspect-ratio: auto;
}

.pz-gallery-grid--room > li:only-child {
    grid-column: 1 / -1;
    grid-row: auto;
}

.pz-gallery-grid--room > li:only-child .pz-gallery-grid__link img {
    aspect-ratio: 16 / 7;
}

.pz-room-gallery__all {
    display: none;
}

.pz-room__heading {
    margin-top: 2.25rem;
}

.pz-room__text .pz-prose h2 {
    margin: 0 0 0.75rem;
    font-size: clamp(1.25rem, 2vw, 1.5rem);
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
}

.pz-room__text .pz-prose h3 {
    margin: 1.75rem 0 0.5rem;
    font-size: 1.15rem;
    font-weight: 700;
}

.pz-room__text .pz-prose p {
    margin: 0 0 1.1rem;
    font-size: 1.05rem;
    line-height: 1.75;
}

.pz-room-features {
    display: grid;
    gap: 0.6rem;
    margin: 0 0 1rem;
    padding: 0;
    list-style: none;
}

.pz-room-features li {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
}

.pz-room-features .pz-icon {
    margin-top: 0.15rem;
    color: var(--pz-red-dark);
}

.pz-room__contacts {
    margin-top: 1rem;
}

/* --- Responsive pagine interne -------------------------------------------- */
@media (max-width: 1100px) {
    .pz-crosslinks__list {
        gap: 1rem;
    }
}

@media (max-width: 960px) {
    .pz-page-hero__content {
        padding-top: calc(64px + 1.5rem);
    }

    .pz-highlight {
        flex-basis: calc(50% - 0.75rem);
        min-width: 0;
    }

    .pz-crosslinks__list {
        grid-template-columns: 1fr;
    }

    .pz-book-cta__inner {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            'intro'
            'form'
            'contacts';
        grid-template-rows: auto;
    }

    .pz-gallery-grid--room > li:first-child {
        grid-column: 1 / -1;
        grid-row: auto;
    }

    .pz-gallery-grid--room > li:first-child .pz-gallery-grid__link img {
        aspect-ratio: 4 / 3;
    }

    .pz-gallery-grid--room > li:nth-child(n + 6) {
        display: none;
    }

    .pz-room-gallery__all {
        display: flex;
    }
}

@media (max-width: 700px) {
    .pz-quick-contact {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .pz-page-hero {
        min-height: max(280px, 40svh);
    }

    .pz-page-hero--compact {
        min-height: 260px;
    }

    .pz-facts__list {
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
    }

    .pz-highlight {
        flex-basis: 100%;
    }

    .pz-band > .pz-band__image {
        height: 260px;
        min-height: 260px;
    }

    .pz-band__text {
        padding: 1.5rem;
    }

    .pz-booking--cta {
        padding: 1rem;
    }

    .pz-booking--cta .gr-booking-bar__field,
    .pz-booking--cta .gr-booking-bar__field:has(select) {
        flex-basis: 100%;
    }

    /* Camere: l'elenco per capienza resta una colonna normale (il carosello e' solo della home) */
    .pz-rooms--grid {
        display: grid;
        gap: 1.25rem;
        margin-inline: 0;
        padding: 0;
        overflow: visible;
    }

    .pz-rooms--grid .pz-room-tile {
        flex: none;
    }
}

/* Selettore lingua e PRENOTA: target abbastanza grandi (WCAG 2.5.8) */
.pz-header__lang .t-lang-switcher__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    min-height: 44px;
    padding-inline: 0.35rem;
}

/* Movimento ridotto: niente zoom delle foto al passaggio del mouse, niente sollevamento delle card */
@media (prefers-reduced-motion: reduce) {
    .pz-gallery-grid__link:hover img,
    .pz-crosslink:hover .pz-crosslink__media img {
        transform: none;
    }

    .pz-crosslink:hover,
    .pz-room-tile__link:hover {
        transform: none;
    }
}

/* Gallerie: le colonne si adattano al numero di foto, nessuna riga resta con buchi */
/* Gallery a righe piene: le foto dell'ultima riga si allargano invece di lasciare celle vuote */
.pz-gallery-band .pz-gallery-grid {
    display: flex;
    flex-wrap: wrap;
}

/* Al massimo 4 foto per riga: 8 foto = 4 + 4, niente riga con una foto isolata (verifica esterna 19/10/2026) */
.pz-gallery-band .pz-gallery-grid > li {
    flex: 1 1 calc(25% - 1px);
    min-width: 220px;
}

.pz-gallery-band .pz-gallery-grid__link img {
    aspect-ratio: auto;
    height: clamp(170px, 19vw, 250px);
}

@media (max-width: 960px) {
    .pz-gallery-band .pz-gallery-grid > li {
        flex-basis: 40%;
    }
}

/* 8. frecce della lightbox nascoste con una sola foto */
.pz-lightbox__btn[hidden] {
    display: none;
}

/* 12. link isolati: target di almeno 24px (WCAG 2.5.8) */
.pz-lifts__more a,
.pz-partner a,
.pz-contact__list a,
.pz-band__text .pz-link,
.pz-footer__links a {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}

.pz-form__consent input {
    width: 24px;
    height: 24px;
}

.pz-lifts__shuttle {
    margin: 0 0 1rem;
}

/* --- Selettore lingua come form ------------------------------------------- */
/* Sulle pagine senza URL per lingua (login, pagine CMS) la lingua non attiva e' un
   <button> dentro un <form> POST: stesso aspetto del link, sulla stessa riga. */
.pz-header__lang .t-lang-switcher,
.pz-mobile-menu__lang .t-lang-switcher {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
}

.pz-header__lang .t-lang-switcher__form,
.pz-mobile-menu__lang .t-lang-switcher__form {
    display: inline-flex;
    margin: 0;
}

.pz-header__lang button.t-lang-switcher__item,
.pz-mobile-menu__lang button.t-lang-switcher__item {
    padding-block: 0;
    border: 0;
    background: transparent;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

/* --- Accesso staff (login, recupero password) ------------------------------ */
/* Template del prodotto (classi t-auth-*) stilati qui: restano allineati agli
   aggiornamenti del prodotto senza copiarli nel tema. */
.pz-body .t-auth-main {
    display: flex;
    justify-content: center;
    padding: clamp(2.5rem, 6vw, 5rem) 1rem;
    background: var(--pz-stone);
}

.pz-body .t-auth-card {
    width: 100%;
    max-width: 440px;
    padding: clamp(1.5rem, 4vw, 2.5rem);
    background: var(--pz-white);
    border: 1px solid var(--pz-line);
    border-radius: var(--pz-radius);
}

.pz-body .t-auth-card__title {
    margin: 0 0 0.35rem;
    font-size: 1.75rem;
    font-weight: 700;
    text-transform: none;
    letter-spacing: 0;
}

.pz-body .t-auth-card__subtitle {
    margin: 0 0 1.5rem;
    color: var(--pz-grey);
}

.pz-body .t-auth-alert {
    margin: 0 0 1.25rem;
    padding: 0.75rem 1rem;
    border-left: 4px solid var(--pz-grey);
    background: var(--pz-stone);
    font-weight: 600;
}

.pz-body .t-auth-alert--error {
    border-left-color: var(--pz-red-dark);
}

.pz-body .t-auth-alert--success {
    border-left-color: #1e7b3c;
}

.pz-body .t-auth-form__row {
    margin-bottom: 1.1rem;
}

.pz-body .t-form-label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 600;
}

.pz-body .t-form-control {
    box-sizing: border-box;
    width: 100%;
    min-height: 44px;
    padding: 0.65rem 0.85rem;
    font: inherit;
    color: var(--pz-black);
    background: var(--pz-white);
    border: 1px solid #8a8a8a;
    border-radius: var(--pz-radius);
}

.pz-body .t-form-control:focus-visible {
    outline: 3px solid var(--pz-red);
    outline-offset: 1px;
}

.pz-body .t-form-control[aria-invalid='true'] {
    border: 2px solid var(--pz-red-dark);
}

.pz-body .t-form-help {
    margin: 0.35rem 0 0;
    font-size: 0.875rem;
    color: var(--pz-grey);
}

.pz-body .t-auth-form__row--checkbox {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
}

.pz-body .t-auth-form__checkbox {
    width: 22px;
    height: 22px;
    margin: 0;
    accent-color: var(--pz-red);
}

.pz-body .t-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0.7rem 1.6rem;
    border: 2px solid var(--pz-red);
    border-radius: var(--pz-pill);
    background: var(--pz-red);
    color: var(--pz-white);
    font: 700 0.9rem/1 var(--pz-font);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
}

.pz-body .t-btn:hover {
    background: var(--pz-red-dark);
    border-color: var(--pz-red-dark);
}

.pz-body .t-btn:focus-visible {
    outline: 3px solid var(--pz-black);
    outline-offset: 2px;
}

.pz-body .t-auth-form__submit {
    width: 100%;
    margin-top: 0.5rem;
}

.pz-body .t-auth-card__links {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.95rem;
}

.pz-body .t-link {
    color: var(--pz-red-dark);
    font-weight: 600;
    text-underline-offset: 3px;
}

/* --- Recensioni Google (decisione 53) ------------------------------------- */
.pz-reviews__score {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem 0.75rem;
    margin: -1.5rem 0 2rem;
    font-weight: 600;
}

.pz-reviews__rating {
    font-size: 2.25rem;
    font-weight: 800;
    line-height: 1;
}

.pz-reviews__stars,
.pz-review__stars {
    display: inline-flex;
    gap: 2px;
    color: #b5b0a8;
}

.pz-reviews__stars .is-on,
.pz-review__stars .is-on {
    color: #b45309;
}

.pz-reviews__list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-review {
    display: flex;
    flex-direction: column;
    padding: 1.5rem;
    background: var(--pz-stone);
    border-radius: var(--pz-radius);
}

.pz-review__stars {
    margin: 0 0 0.75rem;
}

.pz-review__text {
    flex: 1;
    margin: 0;
}

.pz-review__text p {
    margin: 0;
}

.pz-review__meta {
    margin: 1rem 0 0;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--pz-grey);
}

.pz-review__meta a {
    color: var(--pz-black);
}

.pz-reviews__source {
    margin: 1.25rem 0 0;
    text-align: center;
    font-size: 0.875rem;
    color: var(--pz-grey);
}

/* --- Dintorni (decisione 54) ---------------------------------------------- */
.pz-poi-group {
    margin-top: 2.5rem;
}

.pz-poi-group__title {
    margin: 0 0 1.25rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--pz-red);
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.pz-poi-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-poi {
    display: flex;
    flex-direction: column;
    padding: 1.25rem;
    background: var(--pz-stone);
    border-radius: var(--pz-radius);
}

.pz-poi__name {
    margin: 0 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
}

.pz-poi__distance {
    margin: 0 0 0.6rem;
    font-weight: 600;
    color: var(--pz-red-dark);
}

.pz-poi__text {
    flex: 1;
    margin: 0 0 0.75rem;
    font-size: 0.95rem;
}

.pz-poi__links {
    margin: auto 0 0;
    font-size: 0.9rem;
}

.pz-poi__links a {
    display: inline-block;
    padding-block: 0.6rem;
}

.pz-poi__source {
    color: var(--pz-grey);
}

.pz-poi-note {
    margin: 2.5rem 0 0;
    font-size: 0.875rem;
    color: var(--pz-grey);
}

/* --- Card camera: link sul nome esteso a tutta la card, CTA prenotazione sopra ------------- */
.pz-room-tile__link {
    position: relative;
}

.pz-room-tile__title-link {
    color: inherit;
    text-decoration: none;
}

.pz-room-tile__title-link::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
}

.pz-room-tile__title-link:focus-visible {
    outline: none;
}

.pz-room-tile__link:has(.pz-room-tile__title-link:focus-visible) {
    outline: 3px solid var(--pz-red);
    outline-offset: 2px;
}

.pz-room-tile__link:focus-within .pz-room-tile__alt {
    opacity: 1;
}

.pz-room-tile__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 0.75rem;
    margin-top: auto;
    padding-top: 0.75rem;
}

.pz-room-tile__actions .pz-room-tile__more {
    margin-top: 0;
    padding-top: 0;
}

.pz-room-tile__cta {
    position: relative;
    z-index: 2;
}

/* Testi delle card leggibili (revisione design: minimo 16px per il corpo) */
.pz-room-tile__excerpt {
    font-size: 1rem;
    color: #4a4a4a;
}

.pz-room-tile__meta {
    font-size: 0.9rem;
}

/* Titoli su righe bilanciate: niente "IN VAL / DI FASSA" */
.pz-hero__title,
.pz-body .pz-page-hero__title,
.pz-h1,
.pz-h2,
.pz-room-tile__name,
.pz-crosslink__title {
    text-wrap: balance;
}

/* --- Galleria della scheda camera (desktop) ---------------------------------------------------
   Come nei portali alberghieri: allineata alla colonna del contenuto, foto grande a sinistra e 2x2 a
   destra con la stessa altezza complessiva, spazi uniformi, angoli arrotondati, "Vedi tutte le foto"
   sopra la galleria in basso a destra. Le foto oltre la quinta restano nel lightbox.
   Revisione 20/10/2026: la versione a tutta larghezza risultava sfalsata rispetto al contenuto. */
@media (min-width: 961px) {
    .pz-room-gallery .pz-gallery-grid-wrap {
        position: relative;
        max-width: var(--pz-container);
        margin: clamp(1.5rem, 3vw, 2.5rem) auto 0;
        padding-inline: 1rem;
    }

    .pz-gallery-grid--room {
        grid-template-columns: 2fr 1fr 1fr;
        grid-template-rows: repeat(2, clamp(170px, 15vw, 230px));
        grid-auto-rows: 0;
        gap: 8px;
        overflow: hidden;
        border-radius: 10px;
    }

    .pz-gallery-grid--room > li:first-child {
        grid-column: 1;
        grid-row: 1 / span 2;
    }

    .pz-gallery-grid--room .pz-gallery-grid__link,
    .pz-gallery-grid--room .pz-gallery-grid__link img {
        height: 100%;
        aspect-ratio: auto;
    }

    .pz-gallery-grid--room > li:nth-child(n + 6) {
        display: none;
    }

    /* Con meno di 5 foto: la grande occupa tutta la riga se e' sola, altrimenti le piccole si allungano */
    .pz-gallery-grid--room > li:only-child {
        grid-column: 1 / -1;
    }

    .pz-gallery-grid--room > li:nth-child(2):nth-last-child(1) {
        grid-column: 2 / -1;
        grid-row: 1 / span 2;
    }

    .pz-gallery-grid--room > li:nth-child(2):nth-last-child(2),
    .pz-gallery-grid--room > li:nth-child(3):nth-last-child(1) {
        grid-column: 2 / -1;
    }

    .pz-gallery-grid--room > li:nth-child(2):nth-last-child(3) {
        grid-column: 2 / -1;
    }

    .pz-room-gallery__all {
        position: absolute;
        right: calc(1rem + 14px);
        bottom: 14px;
        z-index: 1;
        display: none;
        margin: 0;
    }

    .pz-room-gallery:has(.pz-gallery-grid--room > li:nth-child(2)) .pz-room-gallery__all {
        display: flex;
    }

    .pz-room-gallery__all .pz-btn {
        background: var(--pz-white);
        border-color: var(--pz-white);
        color: var(--pz-black);
        box-shadow: 0 4px 16px rgba(10, 10, 10, 0.25);
    }

    .pz-room-gallery__all .pz-btn:hover {
        background: var(--pz-stone);
    }
}

/* --- Modalita' di pagamento sotto il modulo di prenotazione (decisione 58) --------------------- */
.pz-pay {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    margin-top: 0.9rem;
    padding: 0.75rem 1rem;
    background: var(--pz-white);
    border: 1px solid var(--pz-line);
    border-radius: var(--pz-radius);
}

.pz-pay__logo {
    flex: none;
    width: 75px;
    height: auto;
}

.pz-pay__text {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.45;
    color: var(--pz-black);
}

.pz-pay__note {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.8rem;
    color: var(--pz-grey);
}

.pz-booking--aside .pz-pay {
    align-items: flex-start;
}

/* --- Elenco camere: una griglia, colonne fisse, card uniformi, filtri per capienza --------------
   Revisione 20/10/2026: i gruppi separati da 2, 3 e 4 card avevano larghezze diverse e vuoti a destra. */
.pz-rooms-list .pz-rooms--grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.75rem);
    align-items: stretch;
}

.pz-rooms-list .pz-room-tile {
    display: flex;
    flex: none;
}

.pz-rooms-list .pz-room-tile[hidden] {
    display: none;
}

.pz-rooms-list .pz-room-tile__link {
    width: 100%;
}

/* Card uniformi senza vuoti: capienza subito sotto il nome, riassunto a fine frase (max 150 caratteri:
   la prima frase piu' lunga, in tedesco, ne ha 145) su max 4 righe, pulsanti allineati in fondo */
.pz-rooms-list .pz-room-tile__excerpt {
    display: -webkit-box;
    -webkit-line-clamp: 4;
    line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.pz-room-filter {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1.5rem;
    margin-bottom: clamp(1.25rem, 2.5vw, 2rem);
}

.pz-room-filter .pz-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-room-filter .pz-chip[aria-current='true'] {
    background: var(--pz-black);
    border-color: var(--pz-black);
    color: var(--pz-white);
}

.pz-room-filter__count {
    margin: 0;
    font-weight: 600;
    color: var(--pz-grey);
}

@media (max-width: 1100px) {
    .pz-rooms-list .pz-rooms--grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .pz-rooms-list .pz-rooms--grid {
        grid-template-columns: 1fr;
    }

    /* Filtri su piu' righe, tutti visibili: lo scorrimento orizzontale nascondeva le opzioni
       senza alcun segnale (verifica mobile 21/10/2026; Dintorni ha 10 filtri) */
    .pz-room-filter .pz-chips {
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    .pz-room-filter .pz-chip {
        padding-inline: 0.85rem;
        font-size: 0.75rem;
    }
}

/* --- Home: una card per tipo di soggiorno (gruppi di capienza), verso l'elenco filtrato ---------- */
.pz-stay-types {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(1rem, 2vw, 1.5rem);
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-body .pz-stay-type__link {
    position: relative;
    display: block;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    border-radius: 8px;
    background: var(--pz-black);
    color: var(--pz-white);
    text-decoration: none;
}

.pz-stay-type__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.pz-stay-type__link::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(0deg, rgba(10, 10, 10, 0.85) 0%, rgba(10, 10, 10, 0.35) 45%, rgba(10, 10, 10, 0) 70%);
}

.pz-stay-type__body {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 1.25rem;
}

.pz-stay-type__title {
    color: var(--pz-white);
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.2;
}

.pz-stay-type__meta {
    font-size: 0.95rem;
    color: var(--pz-grey-on-dark);
}

.pz-stay-type__more {
    margin-top: 0.5rem;
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--pz-red-on-dark);
}

.pz-stay-type__link:hover .pz-stay-type__img,
.pz-stay-type__link:focus-visible .pz-stay-type__img {
    transform: scale(1.04);
}

.pz-stay-type__link:focus-visible {
    outline: 3px solid var(--pz-red);
    outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
    .pz-stay-type__img {
        transition: none;
    }

    .pz-stay-type__link:hover .pz-stay-type__img,
    .pz-stay-type__link:focus-visible .pz-stay-type__img {
        transform: none;
    }
}

@media (max-width: 1000px) {
    .pz-stay-types {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .pz-stay-types {
        grid-template-columns: 1fr;
    }

    .pz-stay-type__link {
        aspect-ratio: 16 / 10;
    }
}

.pz-booking__kids {
    margin: 0.75rem 0 0;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--pz-black);
}

/* Pannello di prenotazione: modulo + nota bambini + pagamenti nella stessa card (home) */
.pz-booking--hero .gr-booking-bar {
    padding: 0;
    background: none;
    border-radius: 0;
    box-shadow: none;
}

.pz-booking--hero .pz-booking__panel {
    padding: 1.5rem 1.75rem;
    background: var(--pz-white);
    border-radius: 12px;
    box-shadow: 0 16px 48px rgba(10, 10, 10, 0.22);
}

.pz-booking__extras {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1.5rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--pz-line);
}

.pz-booking__extras .pz-booking__kids {
    flex: 1 1 280px;
    margin: 0;
}

.pz-booking__extras .pz-pay {
    flex: 1 1 380px;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
}

.pz-booking--aside .pz-booking__extras,
.pz-booking--cta .pz-booking__extras {
    display: block;
}

.pz-booking--aside .pz-booking__extras .pz-pay,
.pz-booking--cta .pz-booking__extras .pz-pay {
    margin-top: 0.9rem;
}

/* --- Bandierine nel selettore lingua (come il sito precedente) --------------- */
/* Bandiera accanto al codice, non al posto del codice: la bandiera indica un paese, il
   codice la lingua (e resta leggibile dagli screen reader). SVG inline, nessun file in piu'. */
.pz-header__lang .t-lang-switcher__item::before,
.pz-mobile-menu__lang .t-lang-switcher__item::before {
    content: "";
    display: inline-block;
    flex: none;
    width: 21px;
    height: 14px;
    margin-inline-end: 0.4rem;
    border-radius: 2px;
    background: center / cover no-repeat;
    box-shadow: 0 0 0 1px rgb(255 255 255 / 0.35);
}

.pz-header__lang .t-lang-switcher__item[hreflang="it"]::before,
.pz-mobile-menu__lang .t-lang-switcher__item[hreflang="it"]::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 2'%3E%3Cpath fill='%23009246' d='M0 0h1v2H0z'/%3E%3Cpath fill='%23fff' d='M1 0h1v2H1z'/%3E%3Cpath fill='%23ce2b37' d='M2 0h1v2H2z'/%3E%3C/svg%3E");
}

.pz-header__lang .t-lang-switcher__item[hreflang="en"]::before,
.pz-mobile-menu__lang .t-lang-switcher__item[hreflang="en"]::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 30'%3E%3CclipPath id='t'%3E%3Cpath d='M30 15h30v15zv15H0zH0V0zV0h30z'/%3E%3C/clipPath%3E%3Cpath fill='%23012169' d='M0 0v30h60V0z'/%3E%3Cpath stroke='%23fff' stroke-width='6' d='m0 0 60 30m0-30L0 30'/%3E%3Cpath stroke='%23c8102e' stroke-width='4' d='m0 0 60 30m0-30L0 30' clip-path='url(%23t)'/%3E%3Cpath stroke='%23fff' stroke-width='10' d='M30 0v30M0 15h60'/%3E%3Cpath stroke='%23c8102e' stroke-width='6' d='M30 0v30M0 15h60'/%3E%3C/svg%3E");
}

.pz-header__lang .t-lang-switcher__item[hreflang="de"]::before,
.pz-mobile-menu__lang .t-lang-switcher__item[hreflang="de"]::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 3'%3E%3Cpath d='M0 0h5v3H0z'/%3E%3Cpath fill='%23d00' d='M0 1h5v2H0z'/%3E%3Cpath fill='%23ffce00' d='M0 2h5v1H0z'/%3E%3C/svg%3E");
}

/* Con le bandiere la barra "/" e' superflua; la lingua attiva resta piena, le altre piu' leggere */
.pz-header__lang .t-lang-switcher__sep,
.pz-mobile-menu__lang .t-lang-switcher__sep {
    display: none;
}

.pz-header__lang .t-lang-switcher__item,
.pz-mobile-menu__lang .t-lang-switcher__item {
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-decoration: none;
}

.pz-header__lang a.t-lang-switcher__item,
.pz-header__lang button.t-lang-switcher__item,
.pz-mobile-menu__lang a.t-lang-switcher__item,
.pz-mobile-menu__lang button.t-lang-switcher__item {
    text-decoration: none;
    opacity: 0.8;
}

.pz-header__lang a.t-lang-switcher__item:hover,
.pz-header__lang button.t-lang-switcher__item:hover,
.pz-mobile-menu__lang a.t-lang-switcher__item:hover,
.pz-mobile-menu__lang button.t-lang-switcher__item:hover {
    opacity: 1;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.pz-header__lang .t-lang-switcher__item.is-active::before,
.pz-mobile-menu__lang .t-lang-switcher__item.is-active::before {
    box-shadow: 0 0 0 2px var(--pz-white);
}

/* --- Card "Non sapete quale scegliere?" in fondo alla griglia /camere ------- */
.pz-room-help__inner {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.75rem;
    height: 100%;
    padding: clamp(1.5rem, 3vw, 2.25rem);
    border-radius: 8px;
    background: var(--pz-black);
    color: var(--pz-white);
}

.pz-body .pz-room-help__title {
    color: var(--pz-white);
    margin: 0;
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.25;
    text-transform: none;
    letter-spacing: 0;
    text-wrap: balance;
}

.pz-room-help__text {
    margin: 0;
    line-height: 1.55;
    color: rgb(255 255 255 / 0.85);
}

.pz-room-help__contacts {
    display: grid;
    gap: 0.25rem;
    margin: 0.5rem 0 0;
    padding: 0;
    list-style: none;
}

.pz-body .pz-room-help__link {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
    font-weight: 700;
    color: var(--pz-white);
    text-decoration: none;
}

.pz-body .pz-room-help__link:hover span:first-of-type,
.pz-body .pz-room-help__link:focus-visible span:first-of-type {
    text-decoration: underline;
    text-underline-offset: 4px;
}

.pz-room-help__hours {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0;
    font-size: 0.85rem;
    color: rgb(255 255 255 / 0.75);
}


/* --- Revisione esterna 21/10/2026 ------------------------------------------- */
/* Testo di presentazione della home su telefono: allineato a sinistra, piu' facile da leggere */
@media (max-width: 640px) {
    .pz-intro__text {
        text-align: left;
    }

    /* Modulo di prenotazione su telefono: data a tutta larghezza, notti e adulti affiancati,
       pulsante a tutta larghezza (prima "Adulti" andava a capo da solo accanto al pulsante) */
    .pz-booking .gr-booking-bar__fields {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .pz-booking .gr-booking-bar__field:first-child,
    .pz-booking .gr-booking-bar__children,
    .pz-booking .gr-booking-bar__actions {
        grid-column: 1 / -1;
    }

    .pz-booking .gr-booking-bar__input,
    .pz-booking .gr-booking-bar__select,
    .pz-booking .gr-booking-bar__submit {
        width: 100%;
    }
}

/* Dintorni: filtri per categoria (stessi chip della pagina Camere) */
.pz-poi-group[hidden] {
    display: none;
}

/* Telefono nell'header su telefono (verifica esterna 21/10/2026: compariva solo nel menu) */
.pz-header__call {
    display: none;
}

@media (max-width: 960px) {
    .pz-body .pz-header__call {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 44px;
        min-height: 44px;
        color: var(--pz-white);
    }
}

/* Dintorni: "Fonte" secondaria rispetto a "Indicazioni stradali" */
.pz-poi__links .pz-poi__source {
    font-size: 0.8rem;
    color: var(--pz-grey);
}

/* Footer: "Preferenze cookie" e' un pulsante (apre il banner) con l'aspetto dei link vicini */
.pz-footer__linkbutton {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.pz-footer__linkbutton:hover {
    text-decoration: underline;
}

.pz-footer__linkbutton:focus-visible {
    outline: 2px solid var(--pz-white);
    outline-offset: 2px;
}

/* Banner cookie su telefono (verifica esterna 22/10/2026: copriva un terzo dello schermo):
   testo piu' piccolo, Rifiuta e Accetta affiancati con la stessa evidenza, Personalizza come
   collegamento sotto. Target tattili da 44px. */
@media (max-width: 640px) {
    .pz-body .gr-cookie-banner {
        padding: 0.6rem 0.8rem calc(0.6rem + env(safe-area-inset-bottom));
    }

    .pz-body .gr-cookie-banner-text {
        margin: 0 2rem 0.5rem 0;
        font-size: 0.75rem;
        line-height: 1.35;
    }

    .pz-body .gr-cookie-banner .gr-btn-primary {
        min-height: 44px;
    }

    .pz-body .gr-cookie-banner-actions .gr-btn-outline {
        min-height: 36px;
    }

    .pz-body .gr-cookie-banner-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0.5rem;
    }

    .pz-body .gr-cookie-banner .gr-btn-primary {
        width: 100%;
        padding-inline: 0.5rem;
    }

    .pz-body .gr-cookie-banner-actions .gr-btn-outline {
        grid-column: 1 / -1;
        justify-self: center;
        border: 0;
        background: transparent;
        text-decoration: underline;
        text-underline-offset: 3px;
        text-transform: none;
        letter-spacing: 0;
        font-weight: 600;
    }
}

/* --- Breadcrumb sotto l'hero (22/10/2026) -------------------------------------
   Striscia sottile tra la foto e il contenuto: sempre nello stesso punto, testo piccolo
   e grigio, cosi' non compete con il titolo. */
.pz-breadcrumb-bar {
    border-bottom: 1px solid var(--pz-line);
    background: var(--pz-white);
}

.pz-breadcrumb-bar .pz-breadcrumb {
    /* margin: 0 auto: la regola generale .pz-breadcrumb azzerava i margini laterali del contenitore */
    margin: 0 auto;
    padding-block: 0.45rem;
    font-size: 0.8125rem;
}

.pz-breadcrumb-bar .pz-breadcrumb ol {
    align-items: center;
}

.pz-breadcrumb-bar .pz-breadcrumb li + li::before {
    content: '\203A';
    content: '\203A' / '';
    margin-right: 0.5rem;
    color: var(--pz-grey);
}

.pz-breadcrumb-bar [aria-current="page"] {
    color: var(--pz-black);
    font-weight: 600;
}

/* --- Selettore lingua: solo bandierine (22/10/2026) ----------------------------
   Il codice IT/EN/DE non si vede piu'; resta nel nome accessibile (aria-label dei link,
   title e testo della lingua attiva) per gli screen reader. Target da 44px. */
.pz-header__lang .t-lang-switcher__item,
.pz-mobile-menu__lang .t-lang-switcher__item {
    min-width: 44px;
    justify-content: center;
    font-size: 0;
    letter-spacing: 0;
}

.pz-header__lang .t-lang-switcher__item::before,
.pz-mobile-menu__lang .t-lang-switcher__item::before {
    margin-inline-end: 0;
}
