/* ==========================================================================
   INDICE DEL FILE  (css/lustile.css)
   --------------------------------------------------------------------------
   Il file è scritto in logica MOBILE-FIRST: le regole "base" valgono per lo
   schermo più piccolo, poi una scala crescente di media query le adatta.

   Scala dei breakpoint usata (nessuna eccezione oltre a quelle elencate):

        base           0 - 479px     ogni componente è definito qui per primo
        480px          mobile grande / phablet
        576px          tablet verticale
        768px          tablet orizzontale
        992px          desktop piccolo
        1200px         desktop
        1400px         desktop ampio
        2001px         schermi ultra-wide
        orientamento   altezza ridotta (telefono in orizzontale)
        @media print   stampa

   NOTA: i breakpoint sono numeri letterali perché le media query non
   accettano variabili CSS. Le uniche eccezioni alla scala sono le query di
   un singolo componente (dropdown iOS, tablet in orizzontale, ecc.),
   documentate accanto al componente stesso.

   SEZIONI  (l'ordine è quello reale del file, dall'alto verso il basso)
     1.  FONT FACES .................... font locali e fallback
     2.  DESIGN TOKENS ................. :root, unica fonte di colori, spazi,
                                         raggi, ombre, transizioni, z-index
     3.  RESET / BODY / TYPOGRAPHY ..... basi del documento (3, 3a, 3b)
     4.  PAGE WRAPPER .................. contenitore e header
     5.  MENU TOGGLE ................... hamburger mobile
     6.  SIDE MENU ..................... navigazione laterale
     7.  LANG SELECTOR ................. selettore lingua
     8.  BOOKING MODAL ................. modale di prenotazione cliente
         8a  group selector mobile-first
         8b  group selector tablet (>= 576px)
         8c  group selector desktop (>= 992px)
         8d  dropdown panel (la lista che si apre)
         8e  dropdown personalizzati per iOS
     9.  HERO SECTION .................. apertura della home
     10. SERVIZI ....................... lista servizi
     11. PREZZI E ORARI ................ listino e orari (11a tablet/desktop)
     12. STORIA ........................ sezione storia e mosaico foto
     13. MAPPA ......................... sedi, mappa, marker Google
         13a map lock overlay
     14. PRODOTTI ...................... vetrina prodotti
     15. NEWSLETTER MODAL .............. iscrizione newsletter
     16. ANDROID / SAMSUNG ............. correzioni specifiche
     17. MEDIA QUERIES MOBILE-FIRST .... scala crescente dei breakpoint
     18. OVERRIDE STAMPA E SAFARI ...... @media print (18) e webkit (18a)
     19. APPENDICE — BOOKING MEMORY .... modale salvataggio + banner bentornato
         19a group toggle button (step 1)

   Ogni sezione è delimitata da un banner su tre righe, con numero e nome
   della sezione al centro.
   ========================================================================== */

/* ==============================================================================
   1. FONT FACES — font locali e fallback
   =========================================================================== */

@font-face {
    font-family: 'Oswald-Light';
    src: url('font/Oswald-Light.ttf') format('truetype'),
         url('https://fonts.googleapis.com/css2?family=Oswald:wght@300&display=swap') format('truetype');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Moderat-Regular';
    src: url('font/Moderat-Regular.ttf') format('truetype');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

/* ==============================================================================
   2. DESIGN TOKENS  — unica fonte di colori, spazi, raggi, ombre, transizioni, z-index
   Nota: alcune variabili completano una scala (tipografia, z-index, raggi) o sono
   legacy documentata; restano definite come fonte unica per gli usi futuri.
   =========================================================================== */
:root {
    /* ---------------------------------------------------------------------
       1) COLORI BRAND
       --------------------------------------------------------------------- */
    --primary-black: #181818;
    --primary-white: #f4ede9;
    --primary-color: #323030;
    --secondary-color: #434343;
    --white-pure: #ffffff;

    /* ---------------------------------------------------------------------
       2) NEUTRI E SUPERFICI
       --------------------------------------------------------------------- */
    --gray-light: #f5f5f5;
    --gray-dark: #2f2f2f;
    --gray-medium: #4c4c4c;
    --gray-soft: #e0e0e0;
    --surface-light: #f9f9f9;
    --bg: #f5f5f5;
    --dark: #1a1a1a;
    --wire: #1a1a1a;
    --text-dark: #000000;
    --text-light: #fff5cb;
    --accent-muted: #5c5c5c;

    /* ---------------------------------------------------------------------
       3) ACCENTI E COLORI DI STATO
       --------------------------------------------------------------------- */
    --red: #bd3200;
    --accent-warm: #ffae00;
    --accent-warm-solid: #ff9800;
    --resume: #ff7524;
    --accent-soft: #00f2ff;
    --accent-cyan-soft: #00e1ff5e;
    --accent-success: #6aff00;

    /* Accenti in formato RGB (per rgba() dinamici) */
    --accent-warm-rgb: rgba(255, 174, 0, 0.181);
    --accent-success-rgb: 106, 255, 0;
    --accent-soft-rgb: 0, 225, 255;

    /* ---------------------------------------------------------------------
       4) SUPERFICI SOMMARIO / SFUMATURE / OMBRE INTERNE
       --------------------------------------------------------------------- */
    --summary-bg: var(--primary-white);
    --summary-border: var(--primary-black);
    --summary-accent: var(--accent-soft);
    --accent-warm-trans: #2a2a2878;
    --accent-cold-trans: #ffffff78;
    --inner-shadow-light: inset 0 100px 7px rgba(255, 255, 255, 0.146);
    --inner-shadow-dark: inset 0 4px 15px rgba(255, 255, 255, 0.15);
    --inner-gradient-light: linear-gradient(to bottom, var(--accent-cyan-soft), transparent 50%);
    --inner-gradient: linear-gradient(to left, var(--accent-cyan-soft) 10%, #8400ff5e 100%, transparent 100%, transparent 100%);

    /* ---------------------------------------------------------------------
       5) TIPOGRAFIA
       --------------------------------------------------------------------- */
    --font-fallback: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-main: 'Moderat-Regular', var(--font-fallback);
    --font-sec: 'Oswald-Light';

    /* Scala fluida: cresce con il breakpoint tramite --text-base-size */
    --text-base-size: 0.75rem;
    --text-scale-ratio: 1.25;
    --text-xxs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio));
    --text-xs: calc(var(--text-base-size) / var(--text-scale-ratio));
    --text-sm: calc(var(--text-base-size));
    --text-md: calc(var(--text-sm) * var(--text-scale-ratio));
    --text-lg: calc(var(--text-md) * var(--text-scale-ratio));
    --text-xl: calc(var(--text-lg) * var(--text-scale-ratio));
    --text-xxl: calc(var(--text-xl) * var(--text-scale-ratio));
    --text-xxxl: calc(var(--text-xxl) * var(--text-scale-ratio));

    /* Scala fissa (micro-testi di UI: badge, etichette, note) — in rem così
       segue le preferenze di dimensione del testo del dispositivo */
    --fs-2xs: 0.5rem;
    --fs-xxs: 0.625rem;
    --fs-xs: 0.6875rem;
    --fs-sm: 0.75rem;
    --fs-md: 0.8125rem;
    --fs-base: 0.875rem;
    --fs-lg: 1rem;

    /* Titoli: valori base mobile, poi ridefiniti in modo crescente dai
       breakpoint (vedi la sezione "MEDIA QUERIES – MOBILE FIRST") */
    --title-giant: 2.8rem;
    --title-md: 2.2rem;
    --title-sm: 1.8rem;

    /* ---------------------------------------------------------------------
       6) SPAZIATURE (scala basata su --space-unit)
       --------------------------------------------------------------------- */
    --space-unit: 0.75rem;
    --space-xxs: calc(0.25 * var(--space-unit));
    --space-xs: calc(0.5 * var(--space-unit));
    --space-sm: calc(0.75 * var(--space-unit));
    --space-md: calc(1.25 * var(--space-unit));
    --space-lg: calc(2 * var(--space-unit));
    --space-xl: calc(3.25 * var(--space-unit));
    --space-xxl: calc(5.25 * var(--space-unit));
    --internal-spacing: var(--space-xl);

    /* ---------------------------------------------------------------------
       7) RAGGI DI BORDO (il numero indica il valore in px)
       --------------------------------------------------------------------- */
    --radius-1: 1px;
    --radius-2: 2px;
    --radius-3: 3px;
    --radius-4: 4px;
    --radius-6: 6px;
    --radius-8: 8px;
    --radius-10: 10px;
    --radius-12: 12px;
    --radius-16: 16px;
    --radius-18: 18px;
    --radius-20: 20px;
    --radius-24: 24px;
    --radius-30: 30px;
    --radius-40: 40px;
    --radius-50: 50px;
    --radius-100: 100px;
    --radius-999: 999px;
    --radius-circle: 50%;

    /* ---------------------------------------------------------------------
       8) OMBRE
       --------------------------------------------------------------------- */
    --shadow-card: 0 4px 12px rgba(24, 24, 24, 0.25);
    --shadow-card-strong: 0 4px 15px rgba(24, 24, 24, 0.3);
    --shadow-soft: 0 4px 12px rgba(0, 0, 0, 0.1);
    --shadow-soft-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
    --shadow-elevated: 0 6px 20px rgba(0, 0, 0, 0.2);
    --shadow-hard: 3px 4px rgb(10 10 10 / 38%);
    --shadow-modal: 0 25px 50px rgba(0, 0, 0, 0.5);

    /* ---------------------------------------------------------------------
       9) TRANSIZIONI
       --------------------------------------------------------------------- */
    --transition: 0.6s cubic-bezier(0.23, 1, 0.32, 1);
    --t-all: all 0.3s ease;
    --t-all-fast: all 0.2s ease;
    --t-fade: opacity 0.3s ease;
    --t-fade-slow: opacity 0.4s ease;
    --t-fade-visibility: opacity 0.4s ease, visibility 0.4s ease;
    --t-border-bg: border-color 0.2s ease, background 0.2s ease;
    --t-transform: transform 0.3s ease;

    /* ---------------------------------------------------------------------
       10) LIVELLI Z-INDEX (dal più basso al più alto)
       --------------------------------------------------------------------- */
    --z-index-dropdown: 1000;
    --z-index-sticky: 1020;
    --z-index-fixed: 1030;
    --z-index-modal-backdrop: 1040;
    --z-index-modal: 1050;
    --z-index-popover: 1060;
    --z-index-tooltip: 1070;
    --z-index-toast: 1080;
    --z-index-max: 9999; /* legacy: superato dai livelli di sistema qui sotto */
    --z-index-menu-overlay: 999;
    --z-index-above-dropdown: 1001;
    --z-index-system-overlay: 10000;
    --z-index-system-alert: 30000;
    --z-index-modal-top: 999999;
    --z-index-ultimate: 2147483647;

    /* ---------------------------------------------------------------------
       11) LAYOUT E MISURE
       --------------------------------------------------------------------- */
    --menu-width: 270px;
    --menu-width-tablet: 250px;
    --menu-width-mobile: 50vw;
    --header-height-mobile: 3.5rem;
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-right: env(safe-area-inset-right, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --safe-left: env(safe-area-inset-left, 0px);
}

/* ==============================================================================
   3. RESET
   =========================================================================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

*::-webkit-scrollbar {
    display: none;
}

html {
    -webkit-text-size-adjust: 100%;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

/* ==============================================================================
   3a. BODY
   =========================================================================== */
body {
    font-family: var(--font-main);
    overflow-x: hidden;
    overflow-y: scroll;
    scrollbar-width: none;
    -ms-overflow-style: none;
    font-size: var(--text-sm);
    line-height: 1.5;
    min-height: 100dvh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    background: var(--primary-white);
}

body::-webkit-scrollbar {
    display: none;
}

/* ==============================================================================
   3b. TYPOGRAPHY
   =========================================================================== */
.h1-small {
    font-size: var(--title-sm);
    letter-spacing: -1.5px;
    line-height: 1.1;
    color: var(--primary-black);
}

.h1-medium {
    font-size: var(--title-md);
    letter-spacing: -1px;
    line-height: 1.1;
    color: var(--primary-black);
}

.h1-large {
    font-size: var(--title-giant);
    letter-spacing: -0.02em;
    line-height: 0.9;
    color: var(--primary-black);
    text-shadow: 1px 3px 5px rgb(255 255 255 / 36%);
}

.h1-small, .h1-medium, .h1-large {
    text-transform: uppercase;
    margin-bottom: var(--space-md);
    text-align: center;
}

h2, .h2 {
    font-size: var(--text-xxl);
    line-height: 1.15;
    margin-bottom: var(--space-lg);
    letter-spacing: -0.02em;
}

h3, .h3 {
    font-size: var(--text-xl);
    line-height: 1.2;
    margin-bottom: var(--space-md);
    text-transform: uppercase;
}

h4, .h4 {
    font-size: var(--text-lg);
    line-height: 1.3;
    margin-bottom: var(--space-sm);
}

p, .p {
    font-family: var(--font-sec);
    font-size: var(--text-sm);
    line-height: 1.5;
    margin-bottom: var(--space-md);
}

a, .button {
    color: var(--accent-warm);
    background: none;
    transition: background 0.6s, color 0.6s;
    text-decoration: none;
}

a:hover, .button:hover {
    color: var(--accent-warm);
    text-decoration: underline;
}

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

/* ==============================================================================
   4. PAGE WRAPPER
   =========================================================================== */
.page-wrapper {
    transition: transform var(--transition);
    background: var(--primary-white);
    will-change: transform;
}

main {
    transition: margin-left 0.5s cubic-bezier(0.4, 0, 0.2, 1), filter 0.4s ease, opacity 0.4s ease;
    min-height: 100dvh;
    position: relative;
    z-index: 10;
    width: auto;
    overflow-x: hidden;
    background: inherit;
    pointer-events: auto;
}

body.language-changing main {
    filter: brightness(0.6) blur(1px);
    opacity: 0.8;
}

.hero-image-back,
.service-image img,
.product-image-container {
    transform: translateZ(0);
    backface-visibility: hidden;
    perspective: 1000px;
}

body.menu-open {
    overflow: hidden;
    height: 100dvh; 
}

body.menu-open .page-wrapper {
    transform: translateX(var(--menu-width-mobile));
}

body.menu-open .pwa-install-wdg {
    transform: translateX(var(--menu-width-mobile));
}

/* ==============================================================================
   5. MENU TOGGLE — mobile base
   =========================================================================== */
.menu-toggle {
    position: fixed;
    top: 0.8rem;
    left: 0.8rem;
    z-index: var(--z-index-above-dropdown);
    width: 32px;
    height: 32px;
    background: transparent;
    border: 1px solid var(--wire);
    cursor: pointer;
    transition: transform var(--transition), border-color var(--transition), background var(--transition);
    will-change: transform;
    transform: translateZ(0);
    display: flex;
    align-items: center;
    justify-content: center;
}

body.menu-open .menu-toggle {
    transform: translateX(75vw) rotate(180deg);
    border-color: transparent;
}

.menu-toggle .plus {
    position: relative;
    width: 14px;
    height: 14px;
}

.menu-toggle .plus span {
    position: absolute;
    background: var(--wire);
    transition: var(--t-all);
}

.menu-toggle .plus span:nth-child(1) {
    width: 14px;
    height: 1px;
    top: 50%;
    left: 0;
}

.menu-toggle .plus span:nth-child(2) {
    width: 1px;
    height: 14px;
    left: 50%;
    top: 0;
}

body.menu-open .menu-toggle .plus span:nth-child(1) {
    transform: rotate(45deg);
    background: var(--primary-black);
}

body.menu-open .menu-toggle .plus span:nth-child(2) {
    transform: rotate(45deg);
    background: var(--primary-black);
}

/* ==============================================================================
   6. SIDE MENU — mobile base
   =========================================================================== */
.side-menu {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--menu-width-mobile);
    height: 100dvh;
    padding-top: var(--safe-top);
    padding-bottom: var(--safe-bottom);
    background: var(--primary-white);
    z-index: var(--z-index-dropdown);
    transform: translateX(calc(-1 * var(--menu-width-mobile)));
    transition: transform var(--transition);
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--wire);
}

body.menu-open .side-menu {
    transform: translateX(0);
}

.side-menu .menu-inner {
    padding: var(--space-xxl) var(--space-xs);
    display: flex;
    flex-direction: column;
    height: 100%;
    background: linear-gradient(to top, rgba(39, 38, 38, 0.419), transparent);
}

.side-menu .logo {
    width: 150px;
    margin-bottom: 2rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid rgba(0,0,0,0.1);
}

.side-menu nav a {
    display: flex;
    align-items: center;
    gap: 1rem;
    color: var(--dark);
    text-decoration: none;
    font-family: var(--font-sec);
    font-size: 1.8rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid rgba(0,0,0,0.05);
    transition: var(--t-all);
    opacity: 0;
    transform: translateX(-20px);
}

body.menu-open .side-menu nav a {
    opacity: 1;
    transform: translateX(0);
}

body.menu-open .side-menu nav a:nth-child(1) { transition-delay: 0.15s; }
body.menu-open .side-menu nav a:nth-child(2) { transition-delay: 0.2s; }
body.menu-open .side-menu nav a:nth-child(3) { transition-delay: 0.25s; }

.side-menu nav a .num {
    font-size: 0.65rem;
    opacity: 0.4;
}

.side-menu nav a .arrow {
    margin-left: auto;
    opacity: 0;
    transform: translateX(-10px);
    transition: var(--t-all-fast);
}

.side-menu nav a:hover {
    padding-left: 0.5rem;
}

.side-menu nav a:hover .arrow {
    opacity: 1;
    transform: translateX(0);
}

.side-menu .book-btn {
    margin-top: auto;
    padding: var(--space-sm);
    background: var(--accent-warm);
    color: var(--dark);
    border: 3px solid var(--primary-black);
    font-size: var(--text-md);
    font-weight: bold;
    cursor: pointer;
    transition: var(--t-all-fast);
    opacity: 0;
}

body.menu-open .side-menu .book-btn {
    opacity: 1;
    transition-delay: 0.35s;
}

.side-menu .book-btn:hover {
    background: var(--primary-black);
    color: var(--primary-white);
}

.side-menu .cookie-settings-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 7px 10px;
    background: transparent;
    color: var(--primary-black);
    border: 1.5px solid rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-8);
    font-family: var(--font-main);
    font-size: var(--text-xs);
    font-weight: 500;
    letter-spacing: 0.03em;
    cursor: pointer;
    transition: var(--t-all);
    opacity: 0;
    transform: translateX(-20px);
    -webkit-tap-highlight-color: transparent;
}

body.menu-open .side-menu .cookie-settings-btn {
    opacity: 1;
    transform: translateX(0);
    transition-delay: 0.28s;
}

.side-menu .cookie-settings-btn svg {
    flex-shrink: 0;
    transition: var(--t-transform);
}

.side-menu .cookie-settings-btn:hover {
    background: rgba(24, 24, 24, 0.04);
    border-color: var(--primary-black);
}

.side-menu .cookie-settings-btn:hover svg {
    transform: rotate(15deg);
}

.side-menu .cookie-settings-btn:active {
    transform: scale(0.97);
    background: rgba(24, 24, 24, 0.08);
}

.menu-overlay {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,0.1);
    z-index: var(--z-index-menu-overlay);
    opacity: 0;
    visibility: hidden;
    transition: all var(--transition);
}

body.menu-open .menu-overlay {
    opacity: 1;
    visibility: visible;
}

.page-content {
    position: relative; 
    z-index: 1;
} 

.cookie-banner {
    position: fixed;
    inset: 0;
    z-index: var(--z-index-toast, 1080);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 20px;
    opacity: 0;
    visibility: hidden;
    transition: var(--t-fade-visibility);
}

.cookie-banner.show {
    opacity: 1;
    visibility: visible;
}

.cookie-banner-overlay {
    position: absolute;
    inset: 0;
    background: rgba(24, 24, 24, 0.75);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.cookie-banner-content {
    position: relative;
    z-index: 1;
    background: var(--primary-white);
    border: 1px solid var(--primary-black);
    padding: 24px 20px 20px;
    width: 100%;
    max-width: 440px;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
    transform: translateY(20px);
    transition: transform 0.4s cubic-bezier(0.32, 0.72, 0, 1);
}

.cookie-banner.show .cookie-banner-content {
    transform: translateY(0);
}

.cookie-banner-header {
    margin-bottom: 12px;
}

.cookie-banner-header h3 {
    font-family: var(--font-sec);
    font-size: var(--text-md);
    font-weight: 600;
    color: var(--primary-black);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0;
}

.cookie-banner-body {
    margin-bottom: 20px;
}

.cookie-banner-body p {
    font-family: var(--font-main);
    font-size: var(--text-sm);
    line-height: 1.5;
    color: var(--secondary-color);
    margin: 0;
}

.cookie-banner-body p strong {
    color: var(--primary-black);
    font-weight: 600;
}

.cookie-banner-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}

.cookie-btn {
    width: 100%;
    padding: 12px 20px;
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 600;
    cursor: pointer;
    transition: var(--t-all-fast);
    text-align: center;
}

.cookie-btn-accept {
    background: var(--primary-black);
    color: var(--primary-white);
    border: 2px solid var(--primary-black);
}

.cookie-btn-accept:hover {
    background: var(--secondary-color);
    border-color: var(--secondary-color);
}

.cookie-btn-reject {
    background: var(--primary-white);
    color: var(--primary-black);
    border: 2px solid var(--primary-black);
    font-weight: 600;
}

.cookie-btn-reject:hover {
    background: var(--primary-black);
    color: var(--primary-white);
}

.cookie-banner-links {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
}

.cookie-link {
    font-family: var(--font-main);
    font-size: var(--text-xs);
    color: var(--accent-muted);
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color 0.2s ease;
}

.cookie-link:hover {
    color: var(--primary-black);
    text-decoration: underline;
}

#languageChangeOverlay {
    pointer-events: none;
}

#languageChangeOverlay.show {
    pointer-events: auto;
}


.language-change-overlay {
    z-index: var(--z-index-system-overlay);
    background: rgba(24, 24, 24, 0.95);
}

.language-suggestion-popup {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: var(--z-index-system-alert);
    visibility: hidden;
    opacity: 0;
    pointer-events: none; 
    transition: visibility 0.3s ease, opacity 0.3s ease;
}

.language-suggestion-popup.show {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
}

.language-suggestion-popup .popup-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.19);
    backdrop-filter: blur(2px);
}

.language-suggestion-popup .popup-container {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    max-width: 450px;
    background: #1e1e1e;
    box-shadow: var(--shadow-modal);
    overflow: hidden;
    padding: 16px;
}

.language-suggestion-popup .popup-title {
    color: var(--primary-white);
    font-size: var(--title-md); 
    font-family: var(--font-sec);
    margin: 0 0 12px 0;
    text-align: center;
}

.language-suggestion-popup .popup-message {
    color: var(--primary-white);
    font-size: 0.9rem; 
    line-height: 1.5;
    margin: 0 0 20px 0; 
    text-align: center;
}

.language-suggestion-popup .popup-buttons {
    display: flex;
    gap: 10px; 
    justify-content: center;
    flex-wrap: wrap;
}

.language-suggestion-popup .popup-btn {
    padding: 10px 20px; 
    border-radius: var(--radius-40);
    font-size: 0.85rem; 
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    border: none;
    background: rgba(255, 255, 255, 0.1);
    color: var(--primary-white);
}

.language-suggestion-popup .popup-btn:hover {
    transform: translateY(-1px);
    background: rgba(255, 255, 255, 0.2);
}

/* ==============================================================================
   7. LANG SELECTOR — mobile base
   =========================================================================== */
.lang-selector-v3 {
    position: absolute;
    top: max(20px, calc(6px + var(--safe-top)));
    right: max(30px, calc(6px + var(--safe-right)));
    z-index: var(--z-index-modal);
}

.lang-selector-v3 .lang-globe-btn {
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: white;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: var(--radius-circle);
    cursor: pointer;
    transition: var(--t-all);
}

.lang-selector-v3 .lang-globe-btn:hover {
    background: rgba(0, 0, 0, 0.9);
    border-color: var(--accent-soft);
    color: var(--accent-soft);
    transform: rotate(15deg);
}

.lang-selector-v3 .lang-globe-menu {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    background: rgba(0, 0, 0, 0.9);
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: var(--radius-12);
    padding: 8px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: var(--t-all);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
}

.lang-selector-v3 .lang-globe-menu.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.lang-selector-v3 .lang-item {
    background: transparent;
    color: rgba(255, 255, 255, 0.7);
    border: none;
    padding: 10px 20px;
    border-radius: var(--radius-8);
    font-family: var(--font-main);
    font-size: 0.85rem;
    font-weight: 500;
    letter-spacing: 1px;
    cursor: pointer;
    transition: var(--t-all-fast);
    text-align: center;
}

.lang-selector-v3 .lang-item:hover {
    background: rgba(255, 255, 255, 0.1);
    color: white;
}

.lang-selector-v3 .lang-item.active {
    background: var(--accent-soft);
    color: black;
    font-weight: 600;
}

.booking-widget {
    display: none !important;
}

.booking-button {
    background-color: var(--accent-warm);
    color: var(--primary-black);
    border: none;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-50);
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: bold;
    cursor: pointer;
    transition: var(--t-all);
    box-shadow: 0 4px 15px rgba(255, 174, 0, 0.3);
}

.booking-button:hover {
    background-color: var(--accent-soft);
    color: var(--primary-white);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(0, 225, 255, 0.4);
}

/* ==============================================================================
   8. BOOKING MODAL — mobile base (bottom sheet)
   =========================================================================== */

.booking-modal {
    position: fixed;
    z-index: var(--z-index-modal, 1050);
    border-radius: var(--radius-24) var(--radius-24) 0 0;
    bottom: 0;
    left: 0;
    right: 0;
    top: auto;
    transform: translateY(100%);
    max-height: 85dvh;
    width: 100%;
    min-height: auto;
    margin: 0 auto;
    background: var(--primary-white);
    color: var(--primary-black);
    font-family: var(--font-main);
    overflow: visible;
    clip-path: inset(0 round 24px 24px 0 0);
    /* la home bar di iOS non deve coprire il contenuto del bottom sheet */
    padding-bottom: var(--safe-bottom);
    opacity: 0;
    visibility: hidden;
    transition: transform 0.4s cubic-bezier(0.32, 0.72, 0, 1),
                opacity 0.3s ease,
                visibility 0.3s ease;
}

.booking-modal.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.booking-modal.dragging {
    transition: none !important;
    user-select: none;
    -webkit-user-select: none;
}

/* Modal Drag Handle - visibile solo su mobile */
.booking-modal .modal-drag-handle {
    display: flex;
    justify-content: center;
    padding: 12px 0 4px;
    cursor: grab;
}

.booking-modal .modal-drag-handle-bar {
    width: 150px;
    height: 4px;
    background:var(--accent-warm-trans);
    border-radius: var(--radius-10);
}

/* Header */
.booking-modal .modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: calc(var(--space-sm) + 14px) var(--space-sm) var(--space-sm);
    border-bottom: 1px solid rgba(24, 24, 24, 0.08);
    cursor: default;
    position: relative;
}

.booking-modal .modal-title {
    font-size: calc(var(--text-md) * 0.9);
    font-weight: 500;
    margin: 0;
    letter-spacing: -0.02em;
}

.booking-modal .modal-subtitle {
    font-size: var(--text-xs);
    opacity: 0.6;
    margin: 4px 0 0 0;
}

/* Close Button - visibile su mobile */
.booking-modal .modal-close {
    display: flex;
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    cursor: pointer;
    border-radius: var(--radius-8);
    transition: background 0.2s ease;
    position: relative;
    top: var(--space-sm);
    right: var(--space-sm);
}

.booking-modal .modal-close:hover {
    background: rgba(24, 24, 24, 0.06);
}

.booking-modal .modal-close::before,
.booking-modal .modal-close::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 1.5px;
    background: var(--primary-black);
    border-radius: var(--radius-1);
}

.booking-modal .modal-close::before {
    transform: rotate(45deg);
}

.booking-modal .modal-close::after {
    transform: rotate(-45deg);
}

/* Content Area */
.booking-modal .modal-content {
    padding: var(--space-sm);
    height: 100%;
    max-height: calc(100dvh - 60px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* Step Navigation */
.booking-modal .step-nav {
    display: flex;
    gap: 12px;
    margin-top: var(--space-lg);
    padding-top: var(--space-md);
    border-top: 1px solid rgba(24, 24, 24, 0.08);
}

.booking-modal .step-nav button {
    flex: 1;
    padding: 14px 20px;
    min-height: 35px;
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 500;
    border: none;
    border-radius: var(--radius-10);
    cursor: pointer;
    transition: var(--t-all-fast);
    background: var(--primary-black);
    color: var(--primary-white);
}

.booking-modal .step-nav button:first-child {
    background: transparent;
    color: var(--primary-black);
    border: 1.5px solid rgba(24, 24, 24, 0.15);
}

.booking-modal .step-nav button:first-child:hover {
    background: rgba(24, 24, 24, 0.04);
    border-color: rgba(24, 24, 24, 0.3);
}

.booking-modal .step-nav button:last-child:hover {
    box-shadow: var(--shadow-card);
    transform: translateY(-1px);
}

.booking-modal .step-nav button:active {
    transform: scale(0.98);
}

/* Submit Button */
.booking-modal #submitBooking {
    background: var(--primary-black);
    color: var(--primary-white);
    font-weight: 600;
    letter-spacing: 0.5px;
}

.booking-modal #submitBooking:hover {
    box-shadow: var(--shadow-card-strong);
}

/* Form Elements */
.booking-modal .form-group {
    margin-bottom: var(--space-md);
}

.booking-modal .form-group:last-child {
    margin-bottom: 0;
}

.booking-modal .step-content-scrollable > .form-group {
    margin-top: var(--space-xs);
    border-top: 1px solid rgba(24, 24, 24, 0.1);
    padding-top: var(--space-sm);
}

.booking-modal label {
    display: block;
    font-size: var(--text-xs);
    font-weight: 500;
    margin-bottom: var(--space-xs);
    letter-spacing: 0.02em;
    text-transform: uppercase;
    opacity: 0.7;
}

.booking-modal input[type="text"],
.booking-modal input[type="email"],
.booking-modal input[type="tel"],
.booking-modal input[type="date"],
.booking-modal input[type="time"],
.booking-modal select,
.booking-modal textarea {
    width: 100%;
    padding: var(--space-sm);
    font-family: var(--font-main);
    font-size: var(--text-md);
    color: var(--primary-black);
    background: transparent;
    border: 1.5px solid rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-10);
    outline: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    -webkit-appearance: none;
    appearance: none;
}

.booking-modal input::placeholder,
.booking-modal textarea::placeholder {
    color: var(--primary-black);
    opacity: 0.4;
}

.booking-modal input:focus,
.booking-modal select:focus,
.booking-modal textarea:focus {
    border-color: var(--primary-black);
    box-shadow: 0 0 0 3px rgba(24, 24, 24, 0.06);
}

/* Select Arrow */
.booking-modal .select-wrapper {
    position: relative;
}

.booking-modal .select-wrapper::after {
    content: '';
    position: absolute;
    right: 16px;
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
    width: 7px;
    height: 7px;
    border-right: 1.5px solid var(--primary-black);
    border-bottom: 1.5px solid var(--primary-black);
    pointer-events: none;
    opacity: 0.5;
}

.booking-modal select {
    padding-right: 44px;
    cursor: pointer;
}

.booking-modal textarea {
    resize: vertical;
    min-height: 80px;
}

/* Salone Options */
.booking-modal .salone-options {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: var(--space-md);
}

.booking-modal .salone-option {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px;
    background: transparent;
    border: 1.5px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-12);
    cursor: pointer;
    transition: var(--t-all-fast);
    text-align: left;
    position: relative;
    min-height: 35px;
}

.booking-modal .salone-option:hover {
    border-color: var(--primary-black);
    background: rgba(24, 24, 24, 0.04);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.booking-modal .salone-option.selected {
    border-color: var(--primary-black);
    background: rgba(24, 24, 24, 0.08);
    border-width: 2px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.booking-modal .salone-icon {
    width: 60px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(24, 24, 24, 0.05);
    border-radius: var(--radius-10);
    flex-shrink: 0;
}

.booking-modal .salone-icon-img {
    width: 60px;
    height: 60px;
    object-fit: contain;
}

.booking-modal .salone-info {
    flex: 1;
    min-width: 0;
}

.booking-modal .salone-info h4 {
    font-size: var(--text-md);
    font-weight: bold;
    margin: 0 0 4px 0;
}

.booking-modal .salone-info p {
    font-size: var(--text-sm);
    opacity: 0.6;
    margin: 0;
    line-height: 1.4;
}

.booking-modal .salone-check {
    width: 24px;
    height: 24px;
    display: none;
    align-items: center;
    justify-content: center;
    background: var(--primary-black);
    color: white;
    border-radius: var(--radius-circle);
    font-size: var(--fs-base);
    font-weight: bold;
    flex-shrink: 0;
}

.booking-modal .salone-option.selected .salone-check {
    display: flex;
}

.booking-modal .salone-option.selected .salone-check::after {
    content: '✓';
}

/* Selection Cards */
.booking-modal .selection-grid {
    display: grid;
    gap: 12px;
}

.booking-modal .selection-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px;
    background: transparent;
    border: 1.5px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-12);
    cursor: pointer;
    transition: var(--t-border-bg);
    text-align: left;
    min-height: 35px;
}

.booking-modal .selection-card:hover {
    border-color: rgba(24, 24, 24, 0.25);
    background: rgba(24, 24, 24, 0.02);
}

.booking-modal .selection-card.selected {
    border-color: var(--primary-black);
    background: rgba(24, 24, 24, 0.04);
}

.booking-modal .selection-card-icon {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(24, 24, 24, 0.05);
    border-radius: var(--radius-10);
    flex-shrink: 0;
}

.booking-modal .selection-card-content {
    flex: 1;
    min-width: 0;
}

.booking-modal .selection-card-title {
    font-size: var(--text-sm);
    font-weight: 500;
    margin: 0;
}

.booking-modal .selection-card-subtitle {
    font-size: var(--text-xs);
    opacity: 0.6;
    margin: 2px 0 0 0;
}

.custom-select-group {
    padding: 8px 16px;
    background-color: var(--primary-white);
    font-weight: bold;
    font-size: var(--text-md);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-dark);
    border: 1px var(--primary-color);
    border-bottom: 1px solid rgba(24, 24, 24, 0.1);
}

.custom-select-group:first-of-type {
    border-top: none;
}

.booking-modal .time-slots-section {
    margin-top: var(--space-md);
}

.booking-modal .time-slots-label {
    font-size: var(--text-xs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    opacity: 0.5;
    margin-bottom: var(--space-sm);
}

.booking-modal .time-slots-grid {
    display: grid;
    grid-template-columns: 1fr; 
    gap: 6px;
}

.booking-modal .time-slot {
    padding: 12px 8px;
    min-height: 35px;
    font-family: var(--font-main);
    font-size: var(--text-xs);
    text-align: center;
    background: transparent;
    border: 1.5px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-8);
    cursor: pointer;
    transition: var(--t-all-fast);
}

.booking-modal .time-slot:hover {
    border-color: rgba(24, 24, 24, 0.3);
}

.booking-modal .time-slot.selected {
    background: var(--primary-black);
    color: var(--primary-white);
    border-color: var(--primary-black);
}

.booking-modal .time-slot:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.time-slot-checkboxes {
    display: flex;
    gap: var(--space-md);
    justify-content: center;
    margin: var(--space-md) 0;
}

.time-slot-checkboxes input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

.time-slot-checkboxes .checkbox-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-xs) var(--space-md);
    background-color: var(--primary-white);
    border: 2px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-50);
    cursor: pointer;
    font-weight: 500;
    transition: var(--t-all-fast);
    user-select: none;
    text-align: center;
    min-width: 100px;
    color: var(--primary-black);
}

.time-slot-checkboxes .checkbox-label:hover {
    background-color: var(--primary-white);
    border-color: var(--accent-muted);
    color: var(--primary-black);
}

.time-slot-checkboxes .checkbox-label.selected {
    background-color: var(--accent-success, #6aff00);
    border-color: var(--accent-warm-trans, #2a2a2878);
    color: var(--primary-black);
    box-shadow: 0 4px 10px rgba(50, 50, 50, 0.3);
}

.time-slot-checkboxes .checkbox-label.selected:hover {
    background-color: var(--accent-success, #6aff00);
    border-color: var(--primary-black);
}

.time-slot-checkboxes .checkmark {
    display: none;
}

/* Calendar */
.booking-modal .calendar-trigger {
    position: relative;
    width: 100%;
}

.booking-modal .calendar-trigger input {
    cursor: pointer;
    padding-right: 44px;
}

.booking-modal .calendar-trigger::after {
    content: '';
    position: absolute;
    right: 16px;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23181818' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.booking-modal .calendar-trigger:hover::after {
    opacity: 0.8;
}

.booking-modal .calendar-dropdown {
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    margin-top: 0;
    border-radius: var(--radius-12);
    background: transparent;
    transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.25s ease,
                margin-top 0.25s ease;
}

.booking-modal .calendar-dropdown.open {
    max-height: 550px;
    opacity: 1;
    margin-top: var(--space-sm);
}

.booking-modal .calendar-inner {
    border: 1.5px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-12);
    padding: var(--space-sm);
    background: var(--primary-white);
    position: relative;
}

/* Calendario aperto: overlay a schermo intero, sempre interamente visibile
   e senza dover scrollare, su qualsiasi dispositivo */
.booking-modal .calendar-dropdown.calendar-floating {
    position: fixed;
    inset: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    /* 16px di respiro + le aree di sicurezza del dispositivo (notch, home bar) */
    padding: calc(16px + var(--safe-top)) calc(16px + var(--safe-right))
             calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left));
    margin-top: 0;
    border-radius: 0;
    max-height: none;
    opacity: 1;
    background: rgba(24, 24, 24, 0.45);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    overscroll-behavior: contain;
}

.booking-modal .calendar-dropdown.calendar-floating .calendar-inner {
    /* la larghezza è limitata anche dall'altezza disponibile (6 righe + testata),
       sottraendo le aree di sicurezza del dispositivo */
    width: min(92vw, 380px, max(200px, calc(7 * ((100vh - 170px - var(--safe-top) - var(--safe-bottom)) / 6) + 39px)));
    width: min(92vw, 380px, max(200px, calc(7 * ((100dvh - 170px - var(--safe-top) - var(--safe-bottom)) / 6) + 39px)));
    max-height: 100%;
    box-shadow: 0 18px 50px rgba(24, 24, 24, 0.3);
}

.booking-modal .calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid rgba(24, 24, 24, 0.06);
}

.booking-modal .calendar-title {
    font-size: var(--text-sm);
    font-weight: 500;
    letter-spacing: -0.01em;
    margin: 0;
}

.booking-modal .calendar-nav {
    display: flex;
    gap: 4px;
}

.booking-modal .calendar-nav-btn {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-8);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease;
    padding: 0;
}

.booking-modal .calendar-nav-btn:hover {
    background: rgba(24, 24, 24, 0.04);
    border-color: rgba(24, 24, 24, 0.2);
}

.booking-modal .calendar-nav-btn:active {
    transform: scale(0.95);
}

.booking-modal .calendar-nav-btn svg {
    width: 14px;
    height: 14px;
    stroke: var(--primary-black);
    stroke-width: 2;
    fill: none;
}

.booking-modal .calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-bottom: var(--space-xs);
}

.booking-modal .calendar-weekday {
    font-size: var(--fs-xxs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: center;
    padding: 4px 0;
    opacity: 0.4;
}

.booking-modal .calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.booking-modal .calendar-day {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--text-xs);
    font-weight: 400;
    background: transparent;
    border: none;
    border-radius: var(--radius-8);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
    padding: 0;
    min-height: 20px;
    gap: var(--space-xxs);
}

.booking-modal .calendar-day:hover:not(.disabled):not(.other-month) {
    background: rgba(24, 24, 24, 0.06);
}

.booking-modal .calendar-day:active:not(.disabled):not(.other-month) {
    transform: scale(0.92);
}

.booking-modal .calendar-day.other-month {
    opacity: 0.25;
    cursor: default;
}

.booking-modal .calendar-day.today {
    font-weight: 600;
    position: relative;
}

.booking-modal .calendar-day.today::after {
    content: '';
    position: absolute;
    bottom: 2px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    background: var(--primary-black);
    border-radius: var(--radius-circle);
    opacity: 0.4;
}

.booking-modal .calendar-day.selected {
    background: var(--primary-black);
    color: var(--primary-white);
    font-weight: 500;
}

.booking-modal .calendar-day.selected::after {
    display: none;
}

.booking-modal .calendar-day.disabled,
.booking-modal .calendar-day.closed {
    opacity: 0.25;
    cursor: not-allowed;
    text-decoration: line-through;
}

.booking-modal .calendar-day.disabled:hover,
.booking-modal .calendar-day.closed:hover {
    background: transparent;
    transform: none;
}

.booking-modal .calendar-day.closed-special {
    opacity: 0.35;
    position: relative;
    color: var(--red);
}

.booking-modal .calendar-day.closed-special::before {
    content: '';
    position: absolute;
    inset: 4px;
    border-radius: var(--radius-6);
    pointer-events: none;
}

.booking-modal .calendar-day.fully-booked {
    opacity: 0.4;
    cursor: pointer;
    text-decoration: none;
    position: relative;
}

.booking-modal .calendar-day.closed:active::after,
.booking-modal .calendar-day.fully-booked:active::after,
.booking-modal .calendar-day.closed:focus::after,
.booking-modal .calendar-day.fully-booked:focus::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: 110%;
    left: 50%;
    transform: translateX(-50%);
    background: var(--accent-warm);
    color: var(--text-dark);
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-4);
    font-size: var(--text-sm);
    white-space: nowrap;
    z-index: 10;
    pointer-events: none;
    opacity: 1;
}

.booking-modal .calendar-day.closed:active,
.booking-modal .calendar-day.fully-booked:active {
    opacity: 0.9;
    background: rgba(0, 0, 0, 0.15);
    transform: scale(1.05);
}

/* ═══ NON DISPONIBILE PER SERVIZIO — sbarra sul numero ═══ */
.booking-modal .calendar-day.service-unavailable {
    opacity: 0.45;
    cursor: not-allowed;
    text-decoration: none;
    position: relative;
    background: transparent;
}
.booking-modal .calendar-day.service-unavailable::after {
    content: '';
    position: absolute;
    left: 22%;
    right: 22%;
    top: 50%;
    height: 2px;
    background: currentColor;
    border-radius: var(--radius-2);
    pointer-events: none;
    transform: translateY(-50%);
}
.booking-modal .calendar-day.service-unavailable:hover,
.booking-modal .calendar-day.service-unavailable:active {
    background: transparent;
    transform: none;
    opacity: 0.45;
}

.booking-modal .calendar-day.service-unavailable::after {
    /* nasconde il tooltip di fully-booked se presente */
    content: '';
}

.booking-modal .calendar-footer {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-top: var(--space-sm);
    padding-top: var(--space-sm);
    border-top: 1px solid rgba(24, 24, 24, 0.06);
}

.booking-modal .calendar-legend {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: var(--text-xxs);
    opacity: 0.5;
}

.booking-modal .calendar-legend-dot {
    width: 6px;
    height: 6px;
    border-radius: var(--radius-circle);
    background: var(--primary-black);
}

.booking-modal .calendar-legend-dot.closed {
    opacity: 0.3;
}

/* ===== CARICAMENTO CALENDARIO ===== */
.calendar-container {
    position: relative;
    min-height: 280px;
}

.calendar-loading-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.88);
    backdrop-filter: blur(2px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 10;
    border-radius: var(--radius-8);
    animation: fadeInLoading 0.25s ease;
}

.calendar-loading-overlay .spinner {
    width: 36px;
    height: 36px;
    border: 3px solid var(--gray-soft);
    border-top-color: #2c3e50;
    border-radius: var(--radius-circle);
    animation: spinLoading 0.7s linear infinite;
    margin-bottom: 12px;
}

.calendar-loading-overlay p {
    margin: 0;
    font-size: var(--fs-base);
    color: #555;
    font-weight: 500;
}

@keyframes spinLoading {
    to { transform: rotate(360deg); }
}

@keyframes fadeInLoading {
    from { opacity: 0; }
    to { opacity: 1; }
}

.calendar-loading .calendar-day:not(.other-month) {
    cursor: default;
    opacity: 0.7;
    pointer-events: none;
}

.calendar-day:not(.other-month):not(.disabled) {
    cursor: pointer;
}

/* Buttons */
.booking-modal .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 16px 24px;
    min-height: 35px;
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 500;
    border: none;
    border-radius: var(--radius-10);
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.booking-modal .btn:active {
    transform: scale(0.98);
}

.booking-modal .btn-primary {
    background: var(--primary-black);
    color: var(--primary-white);
}

.booking-modal .btn-primary:hover {
    box-shadow: var(--shadow-card);
}

.booking-modal .btn-primary:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

.booking-modal .btn-secondary {
    background: transparent;
    color: var(--primary-black);
    border: 1.5px solid rgba(24, 24, 24, 0.15);
}

.booking-modal .btn-secondary:hover {
    background: rgba(24, 24, 24, 0.04);
}

.booking-modal .modal-nav {
    display: flex;
    gap: 12px;
    margin-top: var(--space-lg);
}

.booking-modal .modal-nav .btn {
    flex: 1;
}

.booking-modal .modal-nav .btn-back {
    flex: 0 0 auto;
    width: 48px;
    padding: 16px;
}

.booking-step#step5 .step-content-scrollable {
    padding: var(--space-xxs);
    max-height: calc(80dvh - 180px);
    overflow-y: auto;
}

.booking-step#step5 .booking-summary {
    display: grid;
    grid-template-columns: repeat(2, 1fr);  
    gap: var(--space-sm);
    width: 100%;
}

.booking-step#step5 .summary-item {
    width: 100% !important;
    background: var(--summary-bg, var(--white-pure));
    border: 1px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-12);
    padding: var(--space-sm);
    overflow: hidden;
    box-sizing: border-box;
    margin: 0;
    grid-column: span 1;  
}

.booking-step#step5 .summary-item:nth-child(1) {
    grid-column: 1 / 2;
    grid-row: 1;
}

.booking-step#step5 .summary-item:nth-child(2) {
    grid-column: 2 / 3;
    grid-row: 1;
}

.booking-step#step5 .summary-item:nth-child(3) {
    grid-column: 1 / 2;
    grid-row: 2;
}

.booking-step#step5 .summary-item:nth-child(4) {
    grid-column: 2 / 3;
    grid-row: 2;
}

.booking-step#step5 .summary-item:nth-child(n+5),
.booking-step#step5 .form-group {
    grid-column: 1 / -1;  
    width: 100%;
}

.booking-step#step5 .summary-item-full {
    grid-column: span 1;
}

.booking-step#step5 .summary-item-highlight {
    background: var(--accent-success);
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
    border: none;
}

.booking-step#step5 .summary-item-highlight > .summary-icon-text > div > strong {
    color: var(--primary-black);
    font-size: var(--text-sm);
    border-bottom: 1px dashed rgba(24,24,24,0.2);
    padding-bottom: 6px;
    margin-bottom: 12px;
}

.booking-step#step5 .summary-icon-text {
    display: flex;
    align-items: center; 
    justify-content: center;
    gap: 16px;
    width: 100%;
    max-width: 100%;
}

.booking-step#step5 .summary-icon-text > div {
    flex: 1;
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.booking-step#step5 .summary-icon-text strong {
    display: block;
    font-size: var(--text-xs, 0.85rem);
    font-weight: 500;
    color: rgba(24, 24, 24, 0.6);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.booking-step#step5 .summary-icon-text > div > div {
    font-size: var(--text-sm, 1rem);
    line-height: 1.5;
    color: var(--primary-black, #181818);
    margin-bottom: 4px;
}

.booking-step#step5 .salone-container {
    margin: 4px 0 8px 0;
}

.booking-step#step5 .summary-item-highlight .salone-badge {
    display: inline-block;
    background: var(--primary-black);
    color: var(--primary-white);
    padding: 4px 12px;
    border-radius: var(--radius-20);
    font-size: var(--text-xs);
    font-weight: bold;
    text-transform: uppercase;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.booking-step#step5 .appointment-section {
    width: 100%;
    margin: 8px 0 0 0;
}

.booking-step#step5 .appointment-row {
    display: flex;
    align-items: center;
    width: 100%;
}

.booking-step#step5 .summary-item-highlight .appointment-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-radius: var(--radius-16);
    border: 1px solid rgba(24, 24, 24, 0.311);
}

.booking-step#step5 .datetime-container {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    flex: 2;
    min-width: 0;
    max-width: 100%;
}

.booking-step#step5 .date-stack {
    background: transparent;
    border: 1px solid rgba(24, 24, 24, 0.271);
    padding: var(--space-xxs);
    border-radius: var(--radius-12);
    min-width: 80px;  
    max-width: 120px;  
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 0 1 auto;
}


.booking-step#step5 .summary-item-highlight .date-stack {
    background: transparent;
    border: 1px solid rgba(24, 24, 24, 0.16);
    padding: var(--space-xxs);
    border-radius: var(--radius-12);
    min-width: 100px;
}

.booking-step#step5 .day-name {
    font-size: var(--text-xs, 0.8rem);
    color: rgba(24, 24, 24, 0.5);
    text-transform: uppercase;
    font-weight: 500;
}

.booking-step#step5 .day-number {
    font-size: var(--text-sm, 1rem);
    font-weight: 600;
    color: var(--primary-black, #181818);
}

.booking-step#step5 .time-display {
    font-size: var(--text-sm);
    font-weight: bold;
    background: var(--primary-black);
    color: var(--primary-white);
    padding: var(--space-xxs);
    border-radius: var(--radius-40);
    box-shadow: 0 4px 8px rgba(0,0,0,0.1);
    line-height: 1;
    white-space: nowrap;
    min-width: 0;
    max-width: 100%;
    flex-shrink: 0;
    text-align: center;
}


.booking-step#step5 .form-group {
    margin-top: var(--space-xs);
    width: 100%;
}

.booking-step#step5 .form-group label {
    display: block;
    font-size: var(--text-xs, 0.85rem);
    font-weight: 500;
    margin-bottom: 8px;
    color: rgba(24, 24, 24, 0.6);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.booking-step#step5 .form-group textarea {
    width: 100%;
    padding: 14px 16px;
    border: 1px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-10);
    font-family: inherit;
    font-size: var(--text-sm, 0.95rem);
    resize: vertical;
    min-height: 90px;
    box-sizing: border-box;
    background: var(--primary-white);
    transition: border-color 0.2s;
}

.booking-step#step5 .form-group textarea:focus {
    outline: none;
    border-color: var(--primary-black, #181818);
    box-shadow: 0 0 0 3px rgba(24, 24, 24, 0.05);
}

/* Confirmation - Step 6 */
.booking-step#step6 .confirmation-step {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 250px;
    padding: var(--space-md);
}

.booking-step#step6 .confirmation-container {
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
}

.booking-step#step6 .confirmation-logo {
    width: 300px;
    height: 200px;
    margin: 0 auto;
    display: block;
    object-fit: contain;
}

.booking-step#step6 .confirmation-content {
    text-align: center;
    background: var(--accent-success);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: var(--space-sm) var(--space-md);
}

.booking-step#step6 .confirmation-content h3 {
    font-size: var(--text-xxl);
    background: var(--primary-black);
    font-weight: bold;
    width: fit-content;
    border-radius: var(--radius-2);
    text-transform: uppercase;
    margin: var(--space-xxs) 0 var(--space-xs);
    color: var(--primary-white);
}

.booking-step#step6 .confirmation-content p {
    font-size: var(--text-sm, 1rem);
    color: rgba(24, 24, 24, 0.7);
    margin: var(--space-xs) 0;
    line-height: 1.5;
}

.booking-step#step6 .confirmation-content p:first-of-type {
    font-weight: 500;
    color: var(--primary-black);
}

/* Error Message */
.booking-modal .error-message {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: rgba(189, 50, 0, 0.08);
    color: var(--red);
    border-radius: var(--radius-10);
    font-size: var(--text-xs);
    margin-bottom: var(--space-md);
}

.field-error {
    color: var(--red);
}

.booking-modal .slot-just-taken {
    box-shadow: 0 0 0 2px var(--red);
    border-radius: var(--radius-8);
    transition: box-shadow 0.3s ease;
}

.temp-message {
    position: fixed;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    z-index: var(--z-index-ultimate);
    max-width: 90vw;
    width: max-content;
    padding: 14px 20px;
    border-radius: var(--radius-10);
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 500;
    text-align: center;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
    animation: tempMsgIn 0.3s ease;
    touch-action: pan-y;
    user-select: none;
    cursor: grab;
    will-change: transform, opacity;
}

@keyframes tempMsgIn {
    from { opacity: 0; transform: translateX(-50%) translateY(-10px); }
    to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

.temp-message.swiping {
    animation: none;
    transition: none;
    cursor: grabbing;
}

.temp-message.swipe-out {
    transition: transform 0.25s ease, opacity 0.25s ease;
    opacity: 0;
}

.temp-message.fade-out {
    transition: var(--t-fade);
    opacity: 0;
}

.temp-message-info    { background: var(--primary-black); color: var(--primary-white); }
.temp-message-success { background: var(--accent-success); color: var(--primary-black); }
.temp-message-warning { background: var(--accent-warm);    color: var(--primary-black); }
.temp-message-error   { background: var(--red);            color: var(--primary-white); }

@media (max-width: 480px) {
    .temp-message {
        top: 12px;
        padding: 12px 16px;
        font-size: var(--text-xs);
        max-width: calc(100vw - 24px);
    }
}

.period-availability-message {
    background-color: var(--accent-warm);
    text-align: center;
    padding: var(--space-xxs);
    border-radius: var(--radius-2);
    width: fit-content;
}

/* ==============================================================================
   8a. GROUP SELECTOR — mobile-first compatto
   =========================================================================== */

.group-selector {
    background: rgba(24, 24, 24, 0.03);
    padding: 10px 12px;
    border-radius: var(--radius-12);
    border: 1.5px solid rgba(24, 24, 24, 0.08);
    margin-bottom: 10px;
    transition: background 0.25s ease, border-color 0.25s ease;
}

.group-selector:focus-within {
    background: rgba(24, 24, 24, 0.05);
    border-color: rgba(24, 24, 24, 0.2);
}

/* Label compatta in alto */
.group-selector > label {
    display: block;
    font-size: var(--fs-xxs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: rgba(24, 24, 24, 0.5);
    margin: 0 0 6px 2px;
    padding: 0;
}

/* Riga: select a sinistra + bottone a destra */
.group-selector .group-selector-row {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 8px;
    align-items: stretch;
    margin-top: 0;
}

/* Wrapper select — fisso e compatto */
.group-selector .group-size-select-wrapper {
    position: relative;
    min-width: 0;
    max-width: 56px;
    z-index: 20;
}

/* Select nativo (nascosto, gestisce il valore) */
.group-selector .group-size-select {
    position: absolute;
    opacity: 0;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: -1;
}

.group-size-select-wrapper .custom-select-wrapper {
    position: relative;
    width: 100%;
    height: 100%;
    margin-bottom: 0;  
}

/* Trigger: numero + freccia, quadrato compatto */
.group-size-select-wrapper .custom-select-trigger {
    width: 100%;
    height: 100%;
    min-height: 44px;
    padding: 8px 10px;
    border: 1.5px solid rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-10);
    font-family: var(--font-main);
    font-size: var(--text-md);
    font-weight: 600;
    background: var(--primary-white);
    color: var(--primary-black);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    transition: var(--t-border-bg);
    -webkit-tap-highlight-color: transparent;
}

.group-size-select-wrapper .custom-select-trigger:hover {
    border-color: rgba(24, 24, 24, 0.3);
}

.group-size-select-wrapper .custom-select-trigger.open {
    border-color: var(--primary-black);
    background: rgba(24, 24, 24, 0.04);
}

.group-size-select-wrapper .custom-select-trigger::after {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-left: 6px;
    border-right: 1.5px solid var(--primary-black);
    border-bottom: 1.5px solid var(--primary-black);
    background-image: none; 
    background-repeat: no-repeat; 
    transform: rotate(45deg) translateY(-2px);
    opacity: 0.5;
    transition: transform 0.2s ease;
    flex-shrink: 0;
}

.group-size-select-wrapper .custom-select-trigger.open::after {
    background-image: none;  
    transform: rotate(-135deg) translateY(-2px);
}

/* Rimuovi la freccia duplicata sul wrapper */
.group-size-select-wrapper::after {
    content: none;
}

/* Dropdown assoluto — non spinge il contenuto sotto */
.group-size-select-wrapper .custom-select-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    min-width: 60px;
    background: var(--primary-white);
    border: 1.5px solid rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-10);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    z-index: var(--z-index-popover);
    overflow: hidden;
    display: none;
    animation: groupDropdownIn 0.18s ease;
}

.group-size-select-wrapper .custom-select-dropdown.show {
    display: block;
}

@keyframes groupDropdownIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.group-size-select-wrapper .custom-select-option {
    padding: 10px 14px;
    text-align: center;
    font-family: var(--font-main);
    font-size: var(--text-md);
    font-weight: 500;
    color: var(--primary-black);
    cursor: pointer;
    border-bottom: 1px solid rgba(24, 24, 24, 0.05);
    transition: background 0.15s ease;
}

.group-size-select-wrapper .custom-select-option:last-child {
    border-bottom: none;
}

.group-size-select-wrapper .custom-select-option:hover,
.group-size-select-wrapper .custom-select-option:active {
    background: rgba(24, 24, 24, 0.06);
}

.group-size-select-wrapper .custom-select-option.selected {
    background: var(--primary-black);
    color: var(--primary-white);
    font-weight: 600;
}

/* Bottone "Prenota gruppo" — full-width della colonna destra */
.group-selector .btn-primary {
    padding: 10px 14px;
    min-height: 44px;
    background: var(--primary-black);
    color: var(--primary-white);
    border: none;
    border-radius: var(--radius-10);
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
    white-space: nowrap;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    -webkit-tap-highlight-color: transparent;
}

.group-selector .btn-primary:hover {
    background: var(--secondary-color);
    box-shadow: 0 4px 12px rgba(24, 24, 24, 0.15);
}

.group-selector .btn-primary:active {
    transform: scale(0.97);
    box-shadow: none;
}

.group-selector .group-selector-hint {
    display: block;
    margin: 8px 0 0 2px;
    font-size: var(--fs-xs);
    line-height: 1.3;
    color: rgba(24, 24, 24, 0.45);
    font-weight: 400;
}

.group-selector-content {
    max-height: 0 !important;
    opacity: 0 !important;
    overflow: hidden !important;
    transition: max-height 0.4s ease, opacity 0.3s ease, margin-top 0.3s ease;
    margin-top: 0 !important;
}

.group-selector-content.open {
    max-height: 500px !important;
    opacity: 1 !important;
    margin-top: var(--space-sm) !important;
    overflow: visible !important;
    transition:
        max-height 0.4s ease,
        opacity 0.3s ease,
        margin-top 0.3s ease,
        overflow 0s linear 0.4s;
}

/* Loading State */
.booking-modal .loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-xl);
}

.booking-modal .loading-spinner {
    width: 24px;
    height: 24px;
    border: 2px solid rgba(24, 24, 24, 0.1);
    border-top-color: var(--primary-black);
    border-radius: var(--radius-circle);
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

/* Success State */
.booking-modal .success-state {
    text-align: center;
    padding: var(--space-xl) var(--space-lg);
}

.booking-modal .success-title {
    font-size: var(--text-lg);
    font-weight: 500;
    margin: 0 0 var(--space-xs);
}

.booking-modal .success-message {
    font-size: var(--text-sm);
    opacity: 0.7;
    margin: 0;
}

/* Utility Classes */
.booking-modal .visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.booking-modal .fade-in {
    animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Scrollbar Styling */
.booking-modal .modal-content::-webkit-scrollbar {
    width: 6px;
}

.booking-modal .modal-content::-webkit-scrollbar-track {
    background: transparent;
}

.booking-modal .modal-content::-webkit-scrollbar-thumb {
    background: rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-3);
}

.booking-modal .modal-content::-webkit-scrollbar-thumb:hover {
    background: rgba(24, 24, 24, 0.25);
}

.modal-backdrop-custom {
    transition: var(--t-fade);
}
/* ==============================================================================
   8d. DROPDOWN PANEL — la lista che si apre
   =========================================================================== */

/* STILE DEL DROPDOWN PANEL - SOLO QUESTO */
.booking-modal select option {
    background-color: var(--primary-white);
    color: var(--primary-black);
    font-size: var(--text-sm, 0.95rem);
    padding: 12px 16px;
    min-height: 44px;
}

.booking-modal select option:hover {
    background-color: var(--bg);
}

.booking-modal select option:checked {
    background-color: var(--primary-black);
    color: var(--primary-white);
    font-weight: 500;
}

.booking-modal select option:disabled {
    color: rgba(24, 24, 24, 0.2);
    background-color: var(--surface-light);
}

/* Stili per i gruppi di opzioni (mattina/pomeriggio) */
.booking-modal select optgroup {
    font-weight: 600;
    color: var(--primary-black);
    background-color: var(--surface-light);
    font-size: var(--text-xs, 0.85rem);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 8px 16px;
}

.booking-modal select optgroup option {
    padding-left: 24px;
    font-weight: normal;
    text-transform: none;
    letter-spacing: normal;
}

/* Firefox specific */
@-moz-document url-prefix() {
    .booking-modal select option {
        background-color: var(--primary-white);
        color: var(--primary-black);
    }
    
    .booking-modal select option:checked {
        background-color: var(--primary-black) !important;
        color: var(--primary-white) !important;
    }
}

/* Per dispositivi Samsung/Android */
.android-device .booking-modal select option:checked {
    background-color: var(--primary-black);
    color: var(--primary-white);
}

/* ==============================================================================
   8e. DROPDOWN PERSONALIZZATI PER iOS
   =========================================================================== */

.custom-select-wrapper {
    position: relative;
    width: 100%;
    margin-bottom: 16px;
}

.custom-select-trigger {
    width: 100%;
    padding: var(--space-sm);
    border: 1px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-10);
    font-family: inherit;
    font-size: var(--text-sm, 0.95rem);
    background-color: var(--primary-white);
    color: var(--primary-black);
    cursor: pointer;
    position: relative;
    z-index: 1;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.custom-select-trigger::after {
    content: '';
    width: 16px;
    height: 16px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='rgba(24,24,24,0.5)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    transition: transform 0.2s;
}

.custom-select-trigger.open::after {
    transform: rotate(180deg);
}

.custom-select-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background-color: var(--primary-white);
    border: 1px solid rgba(24, 24, 24, 0.1);
    border-radius: var(--radius-10);
    box-shadow: var(--shadow-soft);
    z-index: var(--z-index-modal);
    max-height: 300px;
    overflow-y: auto;
    display: none;
}

.custom-select-dropdown.show {
    display: block;
}

.custom-select-option {
    padding: 14px 16px;
    cursor: pointer;
    font-size: var(--text-sm, 0.95rem);
    color: var(--primary-black);
    border-bottom: 1px solid rgba(24, 24, 24, 0.05);
    transition: background-color 0.2s;
}

.custom-select-option:last-child {
    border-bottom: none;
}

.custom-select-option:hover {
    background-color: var(--accent-muted)
}

.custom-select-option.selected {
    background-color: transparent;
    border: 2px solid var(--primary-color);
    font-weight: 500;
    border-radius: var(--radius-10);
}

.custom-select-option.disabled {
    opacity: 0.5;
    color: var(--resume);
    cursor: not-allowed;
    background-color: var(--accent-muted);
    border-radius: var(--radius-10);
}

/* .custom-select-group: definizione unica nella sezione BOOKING MODAL (GROUP SELECTOR) */

.custom-select-option.grouped {
    padding-left: 32px;
}

.custom-select-wrapper select {
    position: absolute;
    opacity: 0;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    pointer-events: none; 
    z-index: -1;
}
/* ==============================================================================
   9. HERO SECTION — mobile base
   =========================================================================== */
.hero {
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    position: relative;
    background: var(--primary-white);
    overflow: hidden;
}
/* ========== HERO CONTAINER ========== */
.hero-container {
    display: grid;
    grid-template-columns: 1fr;
    flex: 1;
    min-height: 0;
}

.hero-image-side {
    position: relative;
    overflow: hidden;
    min-height: 40dvh;
    order: 1;
}

.hero-image-main {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.hero-content-side {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-lg);
    background: var(--primary-white);
    order: 2;
}

/* ========== SEDI ========== */
.hero-sedi {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-xs);
    margin-bottom: var(--space-md);
    text-align: center;
}

.sedi-label {
    font-family: var(--font-sec);
    font-size: clamp(1rem, 3vw, 1.5rem);
    color: var(--primary-black);
    font-weight: 300;
    letter-spacing: 0.15em;
    text-transform: uppercase;
}

.sedi-locations {
    font-family: var(--font-main);
    font-size: var(--text-xs);
    color: var(--accent-muted);
    letter-spacing: 0.15em;
}

/* ========== LOGO ========== */
.hero-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 90%;
    gap: clamp(8px, 3vw, 24px);
}

.hero-logo img {
    width: 40%;
    max-width: 200px;
    height: auto;
}

.vertical-bar {
    display: inline-block;
    width: 2px;
    height: clamp(30px, 8vw, 60px);
    background-color: var(--primary-black);
    flex-shrink: 0;
}

.scroll-indicator {
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    z-index: 10;
}

.arrow-down {
    display: block;
    width: 18px;
    height: 18px;
    border-right: 2px solid var(--primary-black);
    border-bottom: 2px solid var(--primary-black);
    transform: rotate(45deg);
    animation: bounce 2s infinite;
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% { transform: rotate(45deg) translateY(0); }
    40% { transform: rotate(45deg) translateY(-10px); }
    60% { transform: rotate(45deg) translateY(-5px); }
}

/* ==============================================================================
   10. SERVIZI — mobile base
   =========================================================================== */
.services-section {
    padding: var(--space-xl) 0;
    background: var(--primary-white);
}

.section-content {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--space-xs) var(--space-md);
}

.section-header {
    text-align: center;
    margin-bottom: var(--space-xl);
}

.services-vertical-wrapper {
    position: relative;
    height: 400px;
    max-width: 100vw;
    margin: 0 auto;
    overflow: hidden;
}

.services-fade-top,
.services-fade-bottom {
    position: absolute;
    left: 0;
    right: 0;
    height: 60px;
    z-index: 10;
    pointer-events: none;
}

.services-fade-top {
    top: 0;
    background: linear-gradient(to bottom, var(--primary-white) 0%, transparent 100%);
}

.services-fade-bottom {
    bottom: 0;
    background: linear-gradient(to top, var(--primary-white) 0%, transparent 100%);
}

.services-scroll-container {
    height: 100%;
    overflow: hidden;
}

.services-scroll-track {
    display: flex;
    flex-direction: column;
    animation: scrollVertical 30s linear infinite;
    will-change: transform;
}

@keyframes scrollVertical {
    0% { transform: translateY(0); }
    100% { transform: translateY(-50%); }
}

.services-scroll-track:hover {
    animation-play-state: paused;
}

.service-item {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: var(--space-xs);
    padding: var(--space-xs) var(--space-sm);
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    transition: var(--t-all);
}

.service-item.service-salon-title {
    background: var(--primary-black);
    padding: var(--space-sm) var(--space-md);
    border-left: none;
    border-bottom: none;
    border-radius: var(--radius-50);
    margin-bottom: var(--space-xxs);
    transform: none !important;
}

.service-item.service-salon-title:hover {
    background: var(--primary-black);
    transform: none;
}

.service-item.service-salon-title span {
    font-size: var(--text-lg);
    font-weight: 700;
    letter-spacing: 0.15em;
    color: var(--primary-white);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}

.custom-select-option.service-special {
    background-color: var(--primary-color) !important;
    color: var(--accent-success) !important;
    border: 1px solid var(--primary-white) !important;
    font-weight: bold;
}

select option.service-special {
    background-color: var(--primary-color);
    color: var(--accent-success);
    border: 1px solid var(--primary-white);
    font-weight: bold;
}

.service-item:hover {
    background: rgba(0, 0, 0, 0.02);
    transform: translateX(10px);
}

.service-icon-img {
    width: 30px;
    height: 30px;
    object-fit: contain;
    flex-shrink: 0;
}

.service-item span {
    font-family: var(--font-sec);
    font-size: calc(var(--text-md) * 0.9);
    color: var(--primary-black);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ==============================================================================
   11. PREZZI E ORARI — mobile base
   =========================================================================== */
.pricing-hours-section {
    padding: var(--space-xl) 0;
    background: var(--primary-white);
}

/* Gli orari arrivano dal lato admin: il 12/24h si accende/spegne con .hidden */
.pricing-hours-section .hidden {
    display: none !important;
}

.priceHours-title {
    text-align: center;
    margin-bottom: var(--space-lg);
}

/* Una card per salone (Taviano / Mancaversa) */
.salon-hours-card {
    position: relative;
    max-width: 1000px;
    margin: 0 auto var(--space-md);
    padding: var(--space-lg) var(--space-md);
    background: var(--primary-white);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--radius-18);
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.05);
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.salon-hours-card:last-of-type {
    margin-bottom: 0;
}

.salon-hours-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    margin-bottom: var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.salon-hours-name {
    font-family: var(--font-sec);
    font-size: var(--text-lg);
    line-height: 1.1;
    color: var(--primary-black);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 0;
}

.salon-hours-place {
    font-family: var(--font-main);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--accent-muted);
    background: rgba(0, 0, 0, 0.05);
    padding: 3px 10px;
    border-radius: var(--radius-999);
}

.dual-column-grid.spacious {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-md);
    max-width: 1000px;
    margin: 0 auto;
    padding: 0;
}

/* La card gestisce già i suoi margini interni */
.salon-hours-card .pricing-column,
.salon-hours-card .hours-column {
    padding: 0;
}

.column-title {
    font-family: var(--font-sec);
    font-size: var(--text-md);
    line-height: 1.2;
    color: var(--primary-black);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: var(--space-sm);
    padding-bottom: var(--space-xs);
    border-bottom: 2px solid var(--primary-black);
}

.price-list.spacious,
.hours-list.spacious {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Righe compatte per entrambe le colonne (vale a ogni larghezza) */
.pricing-hours-section .price-list.spacious li,
.pricing-hours-section .hours-list.spacious li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-xs) 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    font-family: var(--font-main);
    font-size: var(--text-sm);
}

.pricing-hours-section .price-list.spacious li:last-child,
.pricing-hours-section .hours-list.spacious li:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.price-amount {
    font-family: var(--font-sec);
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--primary-black);
    background: var(--accent-warm);
    padding: 0 var(--space-xs);
    white-space: nowrap;
}

/* Orari: giorno a sinistra, fascia oraria a destra sulla stessa riga */
.salon-hours-card .hours-row {
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: var(--space-sm);
    row-gap: 2px;
    border-bottom-style: dashed;
}

.salon-hours-card .hours-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.days-group {
    font-weight: 600;
    color: var(--primary-black);
}

.hours-time {
    font-family: var(--font-sec);
    font-size: var(--text-sm);
    color: var(--accent-muted);
    margin-left: auto;
    text-align: right;
}

.hours-row.closed .days-group {
    color: var(--accent-muted);
    font-weight: 500;
}

.closed-label {
    font-family: var(--font-sec);
    font-size: var(--text-xs);
    color: var(--red);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-left: auto;
}

/* ==============================================================================
   11a. PREZZI E ORARI — tablet e desktop
   =========================================================================== */
@media screen and (min-width: 768px) {
    .salon-hours-card {
        padding: var(--space-xl) var(--space-lg);
    }

    .salon-hours-header {
        justify-content: flex-start;
        padding-left: var(--space-xxs);
        gap: var(--space-sm);
    }

    .salon-hours-name {
        font-size: var(--text-xl);
    }

    /* Le due colonne (prezzi | orari) riempiono la card */
    .pricing-hours-section .dual-column-grid.spacious {
        max-width: 100%;
        gap: var(--space-lg);
    }

    .pricing-hours-section .column-title {
        margin-bottom: var(--space-sm);
    }
}

/* ==============================================================================
   12. STORIA — mobile base
   =========================================================================== */
.history-staff {
    padding: var(--space-lg) 0;
    background: var(--secondary-color);
    overflow: hidden;
}

.gallery-mosaic-title {
    text-align: center;
    padding: var(--space-xl) var(--space-md) var(--space-lg);
    position: relative;
    z-index: 1;
}

.gallery-mosaic-title .title-solid {
    font-family: var(--font-sec, 'Oswald-Light', 'Impact', 'Arial Black', sans-serif);
    font-size: clamp(2.5rem, 8vw, 5rem);
    font-weight: 800;
    color: var(--accent-success);
    text-transform: uppercase;
    letter-spacing: -0.03em;
    line-height: 0.9;
    display: block;
}
/*
.gallery-mosaic-title .title-outline {
    font-family: var(--font-sec, 'Oswald-Light', 'Impact', 'Arial Black', sans-serif);
    font-size: clamp(1.5rem, 5vw, 3rem);
    text-decoration: underline;
    font-weight: 700;
    color: var(--primary-white);
    text-transform: uppercase;
    letter-spacing: 0.15em;
    display: block;
    margin-top: -5px;
    transition: all 0.6s cubic-bezier(0.3, 0, 0.2, 1);
}

.gallery-mosaic-title .title-outline:hover {
    color: var(--text-dark);
    background: var(--accent-success);
    padding: var(--space-md);
}
*/
.gallery-mosaic-title a {
    position: relative;
    display: inline-block;
    text-decoration: none;
    color: inherit;
    padding: 0;
    border-radius: var(--radius-4);
    transition: padding 0.6s cubic-bezier(0.3, 0, 0.2, 1);
}

.gallery-mosaic-title a::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--accent-success);
    border-radius: var(--radius-4);
    transform: scaleX(0.85);
    opacity: 0;
    z-index: -1;
    transition: transform 0.6s cubic-bezier(0.3, 0, 0.2, 1),
                opacity 0.6s cubic-bezier(0.3, 0, 0.2, 1);
}

.gallery-mosaic-title a:hover {
    padding: var(--space-sm) var(--space-xxl);
}

.gallery-mosaic-title a:hover::before {
    transform: scaleX(1);
    opacity: 1;
}

.gallery-mosaic-title .title-outline {
    font-family: var(--font-sec, 'Oswald-Light', 'Impact', 'Arial Black', sans-serif);
    font-size: clamp(1.5rem, 5vw, 3rem);
    text-decoration: underline;
    font-weight: 700;
    color: var(--primary-white);
    text-transform: uppercase;
    letter-spacing: 0.15em;
    display: block;
    margin-top: -5px;
    transition: color 0.6s cubic-bezier(0.3, 0, 0.2, 1);
}

.gallery-mosaic-title a:hover .title-outline {
    color: var(--text-dark);
}

/* Galleria Foto Curva - Mobile base */
.gallery-curved-wrapper {
    position: relative;
    height: 500px;
    perspective: 1000px;
    overflow: hidden;
    cursor: grab;
}

.gallery-curved-wrapper:active {
    cursor: grabbing;
}

.gallery-curved-track {
    display: flex;
    gap: 30px;
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    animation: slideGallery 20s linear infinite;
    padding: 0 50px;
    transition: transform 0.3s ease-out;
}

@keyframes slideGallery {
    0% { transform: translateY(-50%) translateX(0); }
    100% { transform: translateY(-50%) translateX(-50%); }
}

.gallery-curved-track:hover {
    animation-play-state: paused;
}

.gallery-photo {
    flex-shrink: 0;
    width: 250px;
    height: 300px;
    position: relative;
    transform-style: preserve-3d;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease;
    outline-offset: 3px;
    background: transparent;
    will-change: transform, opacity;
    box-shadow: 15px 15px 25px rgba(0, 0, 0, 0.458);
}

.gallery-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
    user-select: none;
}

/* Effetto prospettiva curva - Mobile base */
.gallery-photo:nth-child(1) { transform: rotateY(2deg) translateZ(-10px) scale(0.98); }
.gallery-photo:nth-child(2) { transform: rotateY(1deg) translateZ(-5px) scale(0.99); }
.gallery-photo:nth-child(3) { transform: rotateY(0.5deg) translateZ(-2px) scale(0.995); }
.gallery-photo:nth-child(4) { transform: rotateY(0deg) translateZ(0) scale(1); }
.gallery-photo:nth-child(5) { transform: rotateY(0deg) translateZ(2px) scale(1.005); }
.gallery-photo:nth-child(6) { transform: rotateY(0deg) translateZ(0) scale(1); }
.gallery-photo:nth-child(7) { transform: rotateY(-0.5deg) translateZ(-2px) scale(0.995); }
.gallery-photo:nth-child(8) { transform: rotateY(-1deg) translateZ(-5px) scale(0.99); }
.gallery-photo:nth-child(9) { transform: rotateY(-2deg) translateZ(-10px) scale(0.98); }
.gallery-photo:nth-child(10) { transform: rotateY(-3deg) translateZ(-15px) scale(0.97); }

/* ==============================================================================
   13. MAPPA — mobile base
   =========================================================================== */
.location {
    padding: var(--space-xl) 0;
    background: var(--primary-white);
}

.map-title {
    text-align: center;
    margin-bottom: var(--space-xl);
}

.location-cards-switch {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: stretch;
    gap: var(--space-sm);
    margin-bottom: var(--space-xl);
    padding: 0 var(--space-md);
    flex-wrap: nowrap;
}

.location-card {
    width: 160px;
    aspect-ratio: 1;
    padding: var(--space-xs);
    background: var(--primary-white);
    border: 2px solid rgba(0, 0, 0, 0.1);
    cursor: pointer;
    border-radius: var(--radius-circle);
    transition: var(--t-all);
    display: flex;
    align-items: center;
    justify-content: center;
}

.location-card:hover {
    border-color: var(--accent-muted);
    transform: translateY(-5px);
}

.location-card.active {
    border-color: var(--primary-black);
    background: var(--primary-black);
}

.location-card.active .location-card-logo {
    filter: brightness(0) invert(1);
}

.location-card.active .location-card-address {
    color: var(--primary-white);
}

.location-card-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;   
    gap: var(--space-xs);
    text-align: center;        
    width: 100%;               
}

.location-card-logo {
    width: 150%;
    height: auto;
    transition: filter 0.3s ease;
}

.location-card-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-xs);
}

.location-card-address {
    font-family: var(--font-main);
    font-size: var(--text-xs);
    color: var(--accent-muted);
    text-align: center;
    transition: color 0.3s ease;
}

.map-container {
    width: 100%;
    max-width: 100%;
    margin: 0;
    min-height: 400px;
    background: var(--gray-light);
    border: 1px solid rgba(0, 0, 0, 0.1);
    display: flex;
    align-items: center;
    justify-content: center;
}

.map-loading {
    font-family: var(--font-main);
    color: var(--accent-muted);
}

#custom-map {
    width: 100%;
    min-height: 450px;
    overflow: hidden;
    position: relative;
    cursor: default;
}

#custom-map:active {
    cursor: default;
}

/* ==============================================================================
   13a. MAP LOCK OVERLAY
   =========================================================================== */
.map-lock-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    touch-action: manipulation;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    z-index: var(--z-index-dropdown);
    cursor: default;
}

.map-lock-overlay.visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto !important;
}

.map-lock-overlay:active .map-lock-message {
    transform: scale(0.95);
    transition: transform 0.1s ease;
}

.map-lock-message {
    background: var(--accent-cold-trans);
    color: var(--primary-black);
    padding: var(--space-md);
    width: 100vw;
    font-size: var(--text-sm);
    font-weight: 500;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
    border: 2px solid var(--accent-warm-trans, #2a2a2878);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    text-transform: uppercase;
    letter-spacing: 1px;
    pointer-events: none;
    user-select: none;
    text-align: center;
}

.marker-locked {
    pointer-events: none !important;
    opacity: 0.6;
    filter: grayscale(0.5);
}

#custom-map[data-locked="true"] {
    pointer-events: none;
}

#custom-map[data-locked="false"] {
    pointer-events: auto !important;
}

#custom-map[data-locked="false"] .gm-style,
#custom-map[data-locked="false"] .gm-style * {
    pointer-events: auto !important;
}

#custom-map[data-locked="true"] .gm-style,
#custom-map[data-locked="true"] .gm-style * {
    pointer-events: none !important;
}

.gm-control-active, 
.gm-style-mtc, 
.gm-svpc {
    display: none !important;
}

.gm-style-mot {
    color: var(--primary-white);
    font-family: var(--font-sec);
}

.gm-style .gm-style-iw-c {
    border-radius: var(--radius-20) !important;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.625);
    padding: 0 !important;
}

.gm-style-iw-c {
    max-width: none !important;
}

.gm-style-iw-chr {
    padding: 0 !important;
    display: none !important;
}

.gm-style-iw-d {
    padding: 0 !important;
    overflow: hidden !important; 
    max-height: none !important;
}

.gm-ui-hover-effect {
    display: none !important;
    visibility: hidden !important;
}

.map-container.loading {
    opacity: 0.7;
    pointer-events: none;
}

.custom-marker {
    width: 50px;
    height: 50px;
    border-radius: var(--radius-circle);
    display: flex !important; 
    align-items: center !important;
    justify-content: center !important;
    box-shadow: 0 4px 15px rgba(0,0,0,0.4);
    cursor: pointer;
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    border: 3px solid white;
    overflow: hidden;
    background: white;
}

.custom-marker:hover {
    transform: scale(1.15);
    box-shadow: 0 6px 20px rgba(0,0,0,0.5);
}

.custom-marker img {
    width: 70% !important;
    height: 70% !important;
    object-fit: contain !important;
    display: block !important;
    pointer-events: none;
    opacity: 1;
    visibility: visible;
}

.salon-marker {
    width: 90px !important;
    height: 90px !important;
    background: var(--accent-soft);
    border-color: var(--primary-black);
}

.salon-marker img {
    width: 200% !important;
    height: 150% !important;
    padding: 8px; 
    box-sizing: border-box;
}

.salon-marker img,
.parking-marker img {
    opacity: 1 !important;
    visibility: visible !important;
}

[class*="advanced-marker"] .custom-marker {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
}

[class*="advanced-marker"] .custom-marker img {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.parking-marker {
    width: 45px !important;
    height: 45px !important;
    background: var(--accent-warm);
    border-color: var(--primary-black);
}

.parking-marker img {
    filter: brightness(0) invert(1);
}

.custom-marker.loaded {
    opacity: 1;
}

.custom-marker.error {
    background: #ff4444;
    border-color: #cc0000;
}

[class*="advanced-marker"] > div {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.gm-style .custom-marker {
    display: flex !important;
    visibility: visible !important;
}


/* Container principale dei crediti */
.gmnoprint.gm-style-cc,
.gm-style-cc,
[class*="gm-style-cc"] {
    opacity: 1 !important;
    background: transparent !important;
    display: flex !important;           
    align-items: center !important;      
    justify-content: center !important;  
}

/* Sempre nascosto: non fa parte del gruppo qui sopra */
.gmnoscreen {
    display: none !important;
}

/* Testo principale "Map data ©2026 Google" */
.gmnoprint .gm-style-cc span,
.gmnoscreen div,
.gm-style-cc span:not([style*="display: none"]) {
display: none;
}

/* Link "Terms" e "Report a map error" */
.gm-style-cc a {
    color: #0066cc !important;
    background: rgba(255, 255, 255, 0.95) !important;
    font-size: var(--fs-sm) !important;
    font-weight: 500 !important;
    padding: 2px 6px !important;
    border-radius: var(--radius-4) !important;
    text-decoration: none !important;
    box-shadow: var(--shadow-soft-sm) !important;
    display: inline-flex !important;      
    align-items: center !important;       
    justify-content: center !important;   
}

.gm-style-cc a:hover {
    text-decoration: underline !important;
    background: var(--white-pure) !important;
}

/* Bottone "Keyboard shortcuts" */
.gm-style-cc button[aria-label="Keyboard shortcuts"] {
    color: #333333 !important;
    background: rgba(255, 255, 255, 0.95) !important;
    font-size: var(--fs-sm) !important;
    padding: 2px 6px !important;
    border-radius: var(--radius-4) !important;
}

/* Sfondo bianco semitrasparente per tutti i crediti */
.gmnoprint > div[style*="background-color"],
.gm-style-cc > div[style*="background-color"] {
    background: transparent !important;
}

.gm-style-cc > div,
.gmnoprint > div {
    display: flex !important;            
    align-items: center !important;      
    justify-content: center !important;  
    text-align: center !important;   
    background: white;    
}

/* Rimuove eventuali elementi che creano confusione */
.gmnoprint > div[style*="opacity: 0.7"] {
    opacity: 1 !important;
    background: transparent !important;
}

/* Sistema la scala della mappa se presente */
.gm-style-cc[aria-label*="Map Scale"] {
    background: rgba(255, 255, 255, 0.95) !important;
    padding: 2px 6px !important;
    border-radius: var(--radius-4) !important;
}

/* Container del logo Google */
div[style*="z-index: 1000000"][style*="position: absolute"][style*="left: 0px"][style*="bottom: 0px"] {
    background: rgba(255, 255, 255, 0.95) !important;
    padding: 2px 4px !important;
    border-radius: var(--radius-4) !important;
    box-shadow: var(--shadow-soft-sm) !important;
    margin: 5px !important;
    backdrop-filter: blur(2px) !important;
    display: flex !important;             
    align-items: center !important;       
    justify-content: center !important;   
}

div[style*="z-index: 1000000"] a {
    display: flex !important;             
    align-items: center !important;       
    justify-content: center !important;   
}

/* Logo SVG stesso */
div[style*="z-index: 1000000"] img[alt="Google"],
div[style*="z-index: 1000000"] svg {
    opacity: 1 !important;
    filter: brightness(1) contrast(1.2) !important;  
    background: transparent !important;
    display: block !important;
    margin: 0 auto !important;
}

/* Hover effect per indicare che è cliccabile */
div[style*="z-index: 1000000"]:hover {
    background: var(--white-pure) !important;
    transform: scale(1.02);
    transition: var(--t-all-fast);
}

/* Versione alternativa con bordo sottile */
div[style*="z-index: 1000000"] {
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
}

.map-infowindow {
    width: 100%;
    min-width: 200px;
    max-width: 280px;
    height: auto; 
    min-height: 250px; 
    font-family: var(--font-main);
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
    border-radius: var(--radius-16);
    background: var(--primary-white);
    display: flex;
    flex-direction: column;
}

.map-warning {
    text-decoration: none;
    margin-top: 0.5rem;
    font-size: var(--fs-sm);
    font-weight: 600;
    letter-spacing: 0.3px;
    padding: 4px 4px;
    border-radius: var(--radius-6);
    display: inline-block;
}

.map-warning a::after {
    content: '';
    position: absolute;
    width: 0;
    height: 1px;
    bottom: 0;
    left: 50%;
    background-color: var(--accent-soft);
    transition: var(--t-all);
    transform: translateX(-50%);
}

.map-warning a:hover::after {
    width: 100%;
}

.map-infowindow-header {
    padding: 18px 20px;
    color: white;
    border-bottom: 2px solid rgba(0, 0, 0, 0.1);
    border-radius: var(--radius-16) var(--radius-16) 0 0;
    flex-shrink: 0;
}

@supports (-webkit-touch-callout: none) {
    .map-lock-overlay {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        user-select: none;
    }
    
    .map-lock-message {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        user-select: none;
    }
}

.salon-infowindow .map-infowindow-header {
    background: linear-gradient(135deg, var(--primary-black) 0%, rgba(0, 0, 0, 0.85) 100%);
    border-bottom-color: var(--accent-soft);
}

.parking-infowindow .map-infowindow-header {
    background: linear-gradient(135deg, var(--primary-black) 0%, rgba(0, 0, 0, 0.85) 100%);
    border-bottom-color: var(--accent-warm);
}

.map-infowindow-header h3 {
    margin: 0 0 6px 0;
    font-size: var(--fs-lg);
    font-weight: 800;
    letter-spacing: 0.5px;
    text-transform: uppercase;
}

.salon-infowindow .map-infowindow-header h3 {
    color: var(--accent-soft);
}

.parking-infowindow .map-infowindow-header h3 {
    color: var(--accent-warm);
}

.map-infowindow-header p {
    margin: 0;
    font-size: var(--fs-xs);
    font-weight: 500;
    letter-spacing: 0.3px;
    opacity: 0.95;
}

.map-infowindow-content {
    background: var(--primary-white);
    flex: 1;
    display: flex;
    align-items: center;
    padding: 10px 10px;
    flex-shrink: 0;
}

.map-infowindow-content p {
    margin: 0;
    color: var(--text-dark);
    font-size: var(--fs-base);
    font-weight: 600;
}

.map-infowindow-content span {
    display: block;
    color: var(--primary-black);
    font-size: var(--fs-lg);
    font-weight: 700;
    margin-top: 4px;
}

.map-infowindow-icon {
    width: 40px;
    height: 40px;
    border-radius: var(--radius-12);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 14px;
    flex-shrink: 0;
    border: 2px solid var(--primary-black);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
    transition: var(--t-transform);
}

.map-infowindow-icon:hover {
    transform: scale(1.05);
}

.salon-infowindow .map-infowindow-icon {
    background: var(--accent-soft);
}

.parking-infowindow .map-infowindow-icon {
    background: var(--accent-warm);
}

.map-infowindow-footer {
    background: var(--primary-white);
    text-align: right;
    border-radius: 0 0 var(--radius-16) var(--radius-16);
    border-top: 1px solid rgba(0, 0, 0, 0.05);
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    flex-shrink: 0;
    padding: 10px 10px;
}

.map-infowindow-button {
    display: inline-flex;
    align-items: center;
    padding: 10px 18px;
    border-radius: var(--radius-20);
    font-size: var(--fs-md);
    font-weight: 700;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    border: 2px solid var(--primary-black);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    margin: 0 auto;
}

.map-infowindow-button::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    border-radius: var(--radius-circle);
    background: rgba(0, 0, 0, 0.1);
    transform: translate(-50%, -50%);
    transition: width 0.6s, height 0.6s;
}

.map-infowindow-button:hover::before {
    width: 300px;
    height: 300px;
}

.salon-infowindow .map-infowindow-button {
    background: var(--accent-soft);
    color: var(--primary-black);
}

.salon-infowindow .map-infowindow-button:hover {
    color: var(--primary-white) !important;
    background: var(--primary-black);
    border-color: var(--accent-soft);
    transform: translateY(-2px);
    box-shadow: var(--shadow-elevated);
}

.parking-infowindow .map-infowindow-button {
    background: var(--accent-warm);
    color: var(--primary-black);
}

.parking-infowindow .map-infowindow-button:hover {
    color: var(--primary-white) !important;
    background: var(--primary-black);
    border-color: var(--accent-warm);
    transform: translateY(-2px);
    box-shadow: var(--shadow-elevated);
}

.map-infowindow-icon svg {
    width: 20px;
    height: 20px;
    stroke: var(--primary-black);
    stroke-width: 2.5;
    fill: none;
}

.map-infowindow-button svg {
    width: 16px;
    height: 16px;
    stroke: currentColor;
    stroke-width: 2.5;
    fill: none;
    margin-left: 8px;
    transition: var(--t-transform);
    position: relative;
    z-index: 1;
}

.map-infowindow-button:hover svg {
    transform: translateX(4px);
}

.map-fallback {
    padding: 2rem;
    text-align: center;
    background: var(--primary-white);
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.map-fallback h3 {
    color: var(--text-dark);
    margin-bottom: 1rem;
    font-size: 1.5rem;
}

.map-fallback p {
    color: var(--secondary-color);
    margin-bottom: 1.5rem;
    max-width: 300px;
}

.map-directions {
    display: inline-block;
    padding: 12px 24px;
    background: var(--accent-warm);
    color: var(--primary-black);
    text-decoration: none;
    border-radius: var(--radius-30);
    font-weight: 600;
    transition: var(--t-all);
}

.map-directions:hover {
    background: var(--accent-soft);
    transform: translateY(-2px);
    box-shadow: var(--shadow-soft);
}

.offline-map {
    width: 100%;
    height: 400px;
    background: #f0f0f0;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.static-map {
    width: 300px;
    height: 300px;
    background: var(--gray-soft);
    position: relative;
    border: 1px solid var(--primary-white);
}

.map-center-marker {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px;
    height: 12px;
    background: #ff0000;
    border-radius: var(--radius-circle);
    transform: translate(-50%, -50%);
}

.parking-spot {
    position: absolute;
    width: 8px;
    height: 8px;
    background: #00aaff;
    border-radius: var(--radius-circle);
    border: 1px solid var(--primary-white);
}

.offline-map-content {
    text-align: center;
    padding: var(--space-md);
    color: var(--text-dark);
}

.retry-button {
    background: var(--accent-warm);
    color: var(--primary-black);
    border: none;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-4);
    cursor: pointer;
    margin: var(--space-sm) 0;
    font-family: var(--font-main);
}

.external-map-link {
    display: inline-block;
    padding: var(--space-sm) var(--space-md);
    background: var(--primary-white);
    color: var(--primary-black);
    border-radius: var(--radius-4);
    text-decoration: none;
    margin: var(--space-xs);
    border: 1px solid var(--primary-black);
}

.parking-infowindow:not(.has-ztl),
.salon-infowindow {
    min-height: 200px; 
}

.parking-infowindow.has-ztl .map-infowindow-content {
    padding: 15px 20px;
    flex-shrink: 0;
}

.parking-infowindow.has-ztl .map-infowindow-footer {
    padding: 15px 20px;
    flex-shrink: 0;
}

.parking-infowindow.has-ztl {
    min-height: 250px; 
}

.map-transition {
    animation: mapFade 0.3s ease;
}

@keyframes mapFade {
    0% { opacity: 0.5; }
    100% { opacity: 1; }
}

.offline-location-select {
    width: 100%;
    max-width: 300px;
    padding: 10px;
    margin: 0 auto 20px auto;
    border: 1px solid #ddd;
    border-radius: var(--radius-8);
    font-size: var(--text-md);
    cursor: pointer;
    font-family: var(--font-main);
    display: block;
}

.offline-location-select:focus {
    outline: none;
    border-color: var(--accent-soft);
}

.map-warning a {
    position: relative;
    color: var(--accent-warm-solid);
    font-size: var(--text-sm);
    text-decoration: none;
    border-bottom: 1px dashed var(--accent-warm-solid);
    transition: var(--t-all);
}

.map-warning a:hover {
    color: var(--accent-soft);
    background: transparent !important;
    opacity: 0.8;
}

/* ==============================================================================
   14. PRODOTTI — mobile base
   =========================================================================== */
.product-preview {
    padding: var(--space-xl) 0;
    background: var(--accent-muted);
}

.product-preview__info {
    text-align: center;
    margin: var(--space-xl);
    padding: 0 var(--space-lg);
}

.product-preview__link {
    display: inline-block;
    font-family: var(--font-sec);
    font-size: var(--text-lg);
    font-weight: bold;
    color: var(--primary-white);
    background: var(--primary-black);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-top: var(--space-md);
    padding: var(--space-xs);
    border-radius: var(--radius-10);
    border-bottom: 1px solid var(--primary-white);
    transition: var(--t-all);
    text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.218);
}

.product-preview__link:hover {
    color: var(--accent-warm);
    border-color: var(--accent-warm);
    text-decoration: none;
}

.product-preview__scroll-wrapper {
    overflow: hidden;
    width: 100%;
}

.product-preview__grid {
    display: flex;
    gap: var(--space-sm);
    padding: var(--space-xl);
    animation: slideProducts 15s linear infinite;
    width: max-content;
}

@keyframes slideProducts {
    0% { transform: translateX(-50%); }
    100% { transform: translateX(0); }
}

.product-preview__grid:hover {
    animation-play-state: paused;
}

.product-card.slim {
    flex-shrink: 0;
    width: 200px;
    height: 350px;
    padding: var(--space-lg);
    background: #8d8d8d;
    border-radius: var(--radius-100);
    text-align: center;
    transition: var(--t-all);
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.556);
}

.product-card.slim:hover {
    transform: translateY(-10px);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.303);
}

.product-image-container {
    position: relative;
    width: 100%;
    height: 280px;
    margin-bottom: var(--space-md);
    overflow: hidden;
    border-radius: var(--radius-100);
}

.product-image,
.product-image-hover {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.product-image-hover {
    opacity: 0;
}

.product-card.slim:hover .product-image {
    opacity: 0;
    transform: scale(1.05);
}

.product-card.slim:hover .product-image-hover {
    opacity: 1;
    transform: scale(1);
}

.product-name {
    font-family: var(--font-sec);
    font-size: calc(var(--text-md) * 0.9);
    font-weight: bold;
    color: var(--text-dark);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ==============================================================================
   15. NEWSLETTER MODAL — mobile base
   =========================================================================== */
.newsletter-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: var(--z-index-modal);
    display: none;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: var(--t-fade-visibility);
    /* 20px di respiro + aree di sicurezza del dispositivo */
    padding: calc(20px + var(--safe-top)) calc(20px + var(--safe-right))
             calc(20px + var(--safe-bottom)) calc(20px + var(--safe-left));
}

.newsletter-modal.show {
    display: flex;
    opacity: 1;
    visibility: visible;
}

.newsletter-modal-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.newsletter-modal-content {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 550px; 
    min-height: 450px; 
    background: transparent;
    overflow: hidden;
    box-shadow: 0 25px 80px rgba(0, 0, 0, 0.5);
    transform: scale(0.9);
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.newsletter-modal.show .newsletter-modal-content {
    transform: scale(1);
}

.newsletter-logo-bg {
    position: relative;
    width: 100%;
    height: 300px; 
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--primary-black) 0%, var(--accent-muted) 50%, var(--primary-black) 100%);
    overflow: hidden;
}

.newsletter-logo-bg::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: radial-gradient(circle at center, rgba(0, 225, 255, 0.1) 0%, transparent 70%);
    z-index: 1;
}

.newsletter-logo-bg img {
    width: 55%; 
    height: auto;
    max-height: 180px;
    object-fit: contain;
    opacity: 0.9;
    filter: brightness(1.2) drop-shadow(0 0 20px rgba(255, 255, 255, 0.6));
    transform: scale(1.05);
    transition: all 0.5s ease;
    z-index: 2;
    position: relative;
}

.newsletter-popup-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    width: 90%;
    max-width: 500px;
    z-index: 3;
}

.newsletter-popup-title {
    color: var(--text-light);
    font-size: calc(2* var(--text-lg)); 
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 1rem 0 0.8rem; 
    text-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);
    background: var(--text-light);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    line-height: 1.2;
}

.newsletter-popup-subtitle {
    color: var(--text-light);
    font-size: 1rem; 
    margin-bottom: 1rem; 
    line-height: 1.6;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    font-weight: 300;
    padding: 0 1rem;
}

.newsletter-popup-form {
    display: flex;
    flex-direction: column;
    gap: 1rem; 
    padding: 0 0.5rem; 
    margin-top: 1rem; 
}

.newsletter-popup-form input {
    padding: 0.8rem 0.5rem; 
    border: 1px solid var(--accent-warm);
    background: rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(15px);
    color: white;
    font-size: 1.1rem;
    border-radius: var(--radius-100);
    font-family: var(--font-main);
    transition: var(--t-all);
    width: 100%;
}

.newsletter-popup-form input::placeholder {
    color: var(--text-light);
    font-weight: 300;
}

.newsletter-popup-form input:focus {
    outline: none;
    border-color: var(--accent-soft);
}

.newsletter-popup-form button {
    padding: 0.8rem 1rem; 
    margin: 1rem 0 1.5rem; 
    background-color: var(--primary-white);
    color: var(--primary-black);
    border: none;
    font-size: 1.1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    cursor: pointer;
    font-family: var(--font-main);
    transition: var(--t-all);
    position: relative;
    overflow: hidden;
    box-shadow: 0 6px 20px rgba(255, 255, 255, 0.3);
}

.newsletter-popup-form button:hover {
    box-shadow: 0 8px 25px rgba(255, 255, 255, 0.4);
}

.newsletter-popup-form button::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
    transition: left 0.5s ease;
}

.newsletter-popup-form button:hover::before {
    left: 100%;
}

.privacy-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 5px; 
    margin: 1rem 0; 
    text-align: left;
    padding: 0 0.5rem;
}

.privacy-checkbox input[type="checkbox"] {
    margin-top: 3px; 
    flex-shrink: 0;
    width: 18px;
    height: 18px;
}

.privacy-checkbox label {
    font-size: 0.85rem; 
    color: rgba(255, 255, 255, 0.95);
    line-height: 1.5; 
    cursor: pointer;
    font-weight: 300;
}

.privacy-checkbox a {
    color: var(--accent-soft);
    text-decoration: underline;
    font-weight: 400;
}

.privacy-checkbox a:hover {
    color: var(--accent-warm);
}

.newsletter-message {
    padding: 12px;
    margin: 10px 0;
    border-radius: var(--radius-6);
    text-align: center;
    font-weight: 500;
}

.newsletter-message-success {
    background: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}

.newsletter-message-error {
    background: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}

.footer-new {
    background: var(--primary-black);
    padding: var(--space-xxl) var(--space-lg) 0;
    text-align: center;
    overflow: hidden;
}

.footer-logo-large {
    max-width: 160px;
    margin: 0 auto var(--space-lg);
}

.footer-logo-large img {
    width: 100%;
    height: auto;
    filter: brightness(0) invert(1);
}

.footer-social-links {
    display: flex;
    justify-content: center;
    gap: var(--space-sm);
    margin-bottom: var(--space-xl);
    flex-wrap: wrap;
}

.footer-social-links .divider {
    color: var(--primary-white); 
    opacity: 0.5; 
    margin: 0 var(--space-xxs); 
}

.social-link {
    font-family: var(--font-sec);
    font-size: calc(var(--text-xs) * 0.9);
    color: var(--primary-white);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    transition: var(--t-all);
    text-decoration: none;
}

.social-link:hover {
    color: var(--accent-warm);
    text-decoration: none;
}

.footer-cookie-link {
    text-align: center;
    margin-bottom: var(--space-lg);
}

.footer-cookie-link .cookie-settings-btn {
    background: transparent;
    border: 1px solid var(--primary-white);
    color: var(--primary-white);
    padding: 8px 16px;
    border-radius: var(--radius-6);
    font-family: var(--font-main);
    font-size: var(--text-xs);
    cursor: pointer;
    transition: background 0.3s, color 0.3s;
}

.footer-cookie-link .cookie-settings-btn:hover {
    background: var(--primary-white);
    color: var(--primary-black);
}

.footer-newsletter-btn {
    font-family: var(--font-sec);
    font-size: calc(var(--text-sm) * 0.9);
    color: var(--primary-black);
    background: var(--accent-warm);
    border: none;
    padding: var(--space-xxs) var(--space-sm);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    cursor: pointer;
    transition: var(--t-all);
    margin-bottom: var(--space-xl);
}

.footer-newsletter-btn:hover {
    background: var(--primary-white);
    transform: scale(1.05);
}

.footer-marquee {
    width: 100%;
    overflow: hidden;
    background: var(--primary-black);
    padding: var(--space-md) 0;
    border-top: 1px solid var(--accent-muted);
}

.footer-marquee-track {
    display: flex;
    animation: marqueeScroll 15s linear infinite;
    white-space: nowrap;
    width: max-content;
    transform: translateZ(0);
    backface-visibility: hidden;
    -webkit-font-smoothing: antialiased;
}

.footer-marquee-track span {
    font-family: var(--font-sec);
    font-size: calc(var(--text-sm) * 0.9);
    color: var(--primary-white);
    text-transform: uppercase;
    letter-spacing: 0.2em;
    padding: 0 var(--space-md);
    flex-shrink: 0;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.footer-marquee .dividerDot {
    font-size: var(--text-md);                  
}

@keyframes marqueeScroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

/* ==============================================================================
   16. ANDROID / SAMSUNG — correzioni specifiche
   =========================================================================== */
.android-device .booking-modal .modal-content {
    -webkit-overflow-scrolling: touch !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
}

.android-device .form-group.has-select {
    position: relative;
}

.android-device .booking-modal.dropdown-open .modal-content {
    overflow: visible !important;
    position: relative;
    z-index: var(--z-index-popover);
}

.android-device .booking-modal.dropdown-open .booking-step {
    overflow: visible !important;
}

.android-device .booking-modal .form-group {
    overflow: visible !important;
}


/* ==============================================================================
   17. MEDIA QUERIES — MOBILE FIRST (scala crescente)
   =========================================================================== */

/* Dispositivi Fold (fino a 280px) */
@media screen and (max-width: 320px) {
    :root {
        --title-giant: 2rem;
        --title-md: 1.6rem;
        --title-sm: 1.3rem;
        --text-base-size: 0.65rem;
        --space-unit: 0.65rem;
    }

    .language-suggestion-popup .popup-container {
        width: 95%;
        padding: 12px;
    }
    
    .language-suggestion-popup .popup-title {
        font-size: var(--title-sm);
        margin-bottom: 8px;
    }
    
    .language-suggestion-popup .popup-message {
        font-size: 0.75rem;
        margin-bottom: 16px;
    }
    
    .language-suggestion-popup .popup-buttons {
        gap: 8px;
    }
    
    .language-suggestion-popup .popup-btn {
        padding: 8px 16px;
        font-size: 0.75rem;
    }

    .menu-toggle {
        width: 24px;
        height: 24px;
        top: 0.5rem;
        left: 0.5rem;
    }

    .menu-toggle .plus {
        width: 10px;
        height: 10px;
    }

    .side-menu .logo {
        width: 100px;
    }

    .side-menu nav a {
        font-size: 1.2rem;
    }

    .booking-modal {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 100% !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        top: auto !important;
        border-radius: var(--radius-20) var(--radius-20) 0 0 !important;
        max-height: 90dvh !important;
        min-height: auto !important;
        transform: translateY(100%);
    }

    .booking-modal.show {
        transform: translateY(0) !important;
    }

    .booking-modal .modal-content {
        padding: var(--space-xs) !important;
        max-height: calc(90dvh - 50px) !important;
    }
    
    .booking-modal .modal-drag-handle {
        display: flex !important;
    }

    .booking-step .step-header {
        padding: var(--space-xs) 0 !important;
    }

    .booking-step .step-title {
        font-size: var(--text-md) !important;
    }

    .booking-step .step-subtitle {
        font-size: var(--text-xs) !important;
    }

    .salone-option {
        padding: 8px !important;
        gap: 8px !important;
    }

    .salone-icon-img {
        width: 40px !important;
        height: 40px !important;
    }

    .salone-info h4 {
        font-size: var(--text-xs) !important;
    }

    .salone-info p {
        font-size: 0.6rem !important;
    }

    .form-group {
        margin-bottom: var(--space-xs) !important;
    }

    .form-group label {
        font-size: 0.6rem !important;
        margin-bottom: 2px !important;
    }

    input[type="text"],
    input[type="email"],
    input[type="tel"],
    select,
    textarea {
        padding: 8px 10px !important;
        font-size: 0.7rem !important;
    }

    .step-nav {
        gap: 6px !important;
        padding: var(--space-xs) 0 !important;
    }

    .step-nav button {
        padding: 8px 12px !important;
        min-height: 28px !important;
        font-size: 0.7rem !important;
    }

    /* REGOLE ESISTENTI PER TIME SLOTS - MANTENUTE */
    .booking-modal .time-slots-grid {
        grid-template-columns: 1fr;
    }

    .time-slot-checkboxes {
        gap: var(--space-xs) !important;
    }

    .checkbox-label {
        padding: 4px 8px !important;
        min-width: 60px !important;
        font-size: 0.65rem !important;
    }

    /* REGOLE ESISTENTI PER CALENDARIO - MANTENUTE */
    .booking-modal .calendar-day {
        min-height: 14px;
        font-size: 0.6rem;
    }

    .calendar-day {
        min-height: 16px !important;
    }

    /* Summary step adjustments */
    .summary-item {
        padding: var(--space-xs) !important;
    }

    .summary-icon-text {
        gap: 8px !important;
    }

    .summary-icon-text strong {
        font-size: 0.6rem !important;
    }

    .summary-icon-text > div > div {
        font-size: 0.7rem !important;
    }

    .date-stack {
        min-width: 70px !important;
        padding: 2px !important;
    }

    .day-name {
        font-size: 0.6rem !important;
    }

    .day-number {
        font-size: 0.7rem !important;
    }

    .time-display {
        font-size: 0.7rem !important;
        padding: 2px 6px !important;
    }

    .booking-step#step5 .datetime-container {
        gap: var(--space-xxs);
    }

    .service-icon-img {
        width: 20px;
        height: 20px;
    }

    .service-item span {
        font-size: 0.7rem;
    }

    .gallery-photo {
        width: 150px;
        height: 200px;
    }

    .product-card.slim {
        width: 140px;
        height: 240px;
    }

    .product-image-container {
        height: 180px;
    }

    .footer-logo-large {
        max-width: 120px;
    }

    .social-link {
        font-size: 0.6rem;
    }

    .footer-newsletter-btn {
        font-size: 0.7rem;
        padding: 0.3rem 0.8rem;
    }

    .footer-marquee-track span {
        font-size: 0.7rem;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--text-xxs) !important;
        padding: var(--space-xxs)!important;
    }

    .gm-style-cc a {
        font-size: var(--fs-2xs) !important;
        padding: 1px 3px !important;
    }

    .gm-style-cc button[aria-label="Keyboard shortcuts"] {
        font-size: var(--fs-2xs) !important;
        padding: 1px 3px !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 50px !important;
    }
}

@media screen and (max-width: 600px) and (max-height: 280px) {
    .booking-modal {
        width: 70% !important;
        max-width: 70% !important;
        min-width: 70% !important;
        max-height: 100dvh !important;
        border-radius: 0 !important;
    }
    
    .booking-modal .modal-content {
        max-height: calc(100dvh - 30px) !important;
    }
    
    .booking-modal .step-header {
        padding: 2px 0 !important;
    }
    
    .booking-modal .step-content-scrollable {
        max-height: calc(100dvh - 100px) !important;
    }
    
    .modal-drag-handle {
        display: none !important;
    }
}

@media screen and (orientation: landscape) and (max-height: 500px) and (max-width: 950px) {
    :root {
        --title-giant: 2.6rem;
        --title-md: 2rem;
        --title-sm: 1.6rem;
        --space-unit: 0.7rem;
    }

    .hero {
        min-height: inherit;
    }

    .hero-container {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto;
    }

    .hero-image-side {
        min-height: 100dvh;
        order: 1;
    }

    .hero-content-side {
        order: 2;
        padding: var(--space-md);
    }

    .sedi-label {
        font-size: 1.4rem;
    }

    .hero-logo {
        max-width: 70%;
    }

    .scroll-indicator {
        display: none;
    }

    .side-menu {
        width: 45vw;
    }

    body.menu-open .page-wrapper,
    body.menu-open .pwa-install-wdg {
        transform: translateX(45vw);
    }

    body.menu-open .menu-toggle {
        transform: translateX(50vw) rotate(180deg);
    }

    .side-menu .logo {
        width: 100px;
        margin-bottom: var(--space-sm);
        padding-bottom: var(--space-sm);
    }

    .side-menu .menu-inner {
        padding: var(--space-md);
    }

    .side-menu nav a {
        font-size: 1.3rem;
        padding: 0.3rem 0;
    }

    .side-menu .book-btn {
        padding: var(--space-xxs);
        font-size: var(--text-sm);
    }

    .side-menu .cookie-settings-btn {
        padding: 7px 10px;
        font-size: var(--fs-xxs);
        margin-bottom: 6px;
    }

    .booking-modal {
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        max-height: 100dvh !important;
        min-height: 100dvh !important;
        border-radius: 0 !important;
        transform: translateY(100%) !important;
    }

    .booking-modal.show {
        transform: translateY(0) !important;
    }

    .booking-modal .modal-drag-handle {
        display: none !important;
    }

    .booking-modal .modal-content {
        padding: var(--space-sm);
        max-height: calc(100dvh - 50px) !important;
    }

    .booking-modal .modal-header {
        padding: var(--space-xs) var(--space-sm) var(--space-xs);
    }

    .booking-step#step5 .step-content-scrollable {
        max-height: calc(100dvh - 130px);
    }

    .services-vertical-wrapper {
        height: 220px;
    }

    .services-fade-top,
    .services-fade-bottom {
        height: 35px;
    }

    .gallery-curved-wrapper {
        height: 320px;
    }

    .gallery-photo {
        width: 180px;
        height: 220px;
    }

    .location-cards-switch {
        margin-bottom: var(--space-md);
    }

    .location-card {
        width: 100px;
    }

    #custom-map {
        min-height: 320px;
    }

    .product-card.slim {
        width: 180px;
        height: 260px;
    }

    .product-image-container {
        height: 180px;
    }

    .salon-hours-card {
        padding: var(--space-md) var(--space-sm);
    }

    .footer-new {
        padding: var(--space-xl) var(--space-md) 0;
    }
}

@media screen and (min-width: 480px) {
    :root {
        --text-base-size: 0.78rem;
        --space-unit: 0.78rem;
        --title-giant: 3.1rem;
        --title-md: 2.5rem;
        --title-sm: 2rem;
    }

    .menu-toggle {
        width: 34px;
        height: 34px;
    }

    .side-menu .logo {
        width: 135px;
    }

    .side-menu nav a {
        font-size: 2rem;
    }

    .booking-modal .time-slots-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .booking-modal .modal-content {
        padding: var(--space-sm);
    }

    .group-selector .group-selector-row {
        grid-template-columns: 58px 1fr;
        gap: 9px;
    }

    .group-selector .group-size-select-wrapper {
        max-width: 58px;
    }

    .hero-image-side {
        min-height: 45dvh;
    }

    .hero-logo {
        max-width: 80%;
    }

    .services-vertical-wrapper {
        height: 340px;
    }

    .service-icon-img {
        width: 32px;
        height: 32px;
    }

    .gallery-curved-wrapper {
        height: 380px;
    }

    .gallery-photo {
        width: 180px;
        height: 260px;
    }

    .location-card {
        width: 145px;
    }

    #custom-map {
        min-height: 420px;
    }

    .product-card.slim {
        width: 230px;
        height: 360px;
    }

    .product-image-container {
        height: 280px;
    }

    .footer-logo-large {
        max-width: 180px;
    }
}

@media screen and (min-width: 576px) {
    :root {
        --text-base-size: 0.8rem;
        --space-unit: 0.8rem;
        --title-giant: 3.5rem;
        --title-md: 2.8rem;
        --title-sm: 2.2rem;
    }

    .side-menu {
        width: var(--menu-width-tablet);
    }

    body.menu-open .page-wrapper {
        transform: translateX(var(--menu-width-tablet));
    }

    body.menu-open .pwa-install-wdg {
        transform: translateX(var(--menu-width-tablet));
    }

    body.menu-open .menu-toggle {
        transform: translateX(calc(var(--menu-width-tablet)*1.1)) rotate(180deg);
    }

    .menu-toggle {
        top: 1rem;
        left: 1rem;
        width: 36px;
        height: 36px;
    }

    .menu-toggle .plus {
        width: 16px;
        height: 16px;
    }

    .menu-toggle .plus span:nth-child(1) {
        width: 16px;
    }

    .menu-toggle .plus span:nth-child(2) {
        height: 16px;
    }

    .side-menu .logo {
        width: 180px;
    }

    .side-menu nav a {
        font-size: 2.2rem;
        padding: 0.6rem 0;
    }

    .side-menu .cookie-settings-btn {
        padding: 11px 16px;
        font-size: var(--text-sm);
        gap: 10px;
    }
    
    .side-menu .cookie-settings-btn svg {
        width: 18px;
        height: 18px;
    }

    .cookie-banner {
        align-items: center;
    }

    .cookie-banner-content {
        padding: 28px 24px 24px;
    }

    .cookie-banner-actions {
        flex-direction: row;
        gap: 10px;
    }

    .cookie-btn {
        flex: 1;
    }

    .language-suggestion-popup .popup-container {
        padding: 20px;
    }
    
    .language-suggestion-popup .popup-title {
        font-size: var(--title-md);
    }
    
    .language-suggestion-popup .popup-message {
        font-size: 0.95rem;
        margin-bottom: 24px;
    }
    
    .language-suggestion-popup .popup-buttons {
        gap: 12px;
    }
    
    .language-suggestion-popup .popup-btn {
        padding: 10px 20px;
        font-size: 0.9rem;
    }

    .lang-selector-v3 .lang-globe-btn {
        width: 38px;
        height: 38px;
    }

    .booking-modal .modal-content {
        padding: var(--space-sm);
    }

    /* Booking Modal */
    .booking-modal .time-slots-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .booking-modal .summary-item {
        grid-column: span 1 !important;
    }

    .booking-step#step5 .datetime-container {
        gap: var(--space-xxs);
    }

    .group-selector {
        padding: 12px 14px;
    }

    .group-selector .group-selector-row {
        grid-template-columns: 60px 1fr;
        gap: 10px;
    }

    .group-selector .group-size-select-wrapper {
        max-width: 60px;
    }

    .group-size-select-wrapper .custom-select-trigger {
        padding: 10px 12px;
        font-size: var(--text-md);   
    }

    .group-selector .btn-primary {
        font-size: var(--text-md);
        padding: 12px 20px;
    }

    .group-selector .group-selector-hint {
        font-size: var(--text-xs);
        margin-top: 10px;
    }

    /* Services */
    .services-vertical-wrapper {
        height: 300px;
    }

    .service-item {
        padding: var(--space-sm) var(--space-md);
        gap: var(--space-md);
    }

    .service-icon-img {
        width: 35px;
        height: 35px;
    }

    .service-item span {
        font-size: var(--text-xs);
    }

    /* Pricing */
    .dual-column-grid.spacious {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-md);
    }

    .pricing-column,
    .hours-column {
        padding: var(--space-md);
    }

    .column-title {
        font-size: var(--text-lg);
        margin-bottom: var(--space-lg);
    }

    .price-list.spacious li,
    .hours-list.spacious li {
        padding: var(--space-sm) 0;
        font-size: var(--text-sm);
    }

    .price-amount {
        font-size: var(--text-md);
        padding: var(--space-xxs) var(--space-xs);
    }

    .open-link {
        font-size: var(--text-md);
        padding: var(--space-xs) var(--space-md);
    }

    /* Gallery */
    .gallery-curved-wrapper {
        height: 300px;
    }

    .gallery-photo {
        width: 120px;
        height: 220px;
    }

    .gallery-photo:nth-child(1) { transform: rotateY(3deg) translateZ(-15px) scale(0.97); }
    .gallery-photo:nth-child(2) { transform: rotateY(2deg) translateZ(-8px) scale(0.98); }
    .gallery-photo:nth-child(3) { transform: rotateY(1deg) translateZ(-3px) scale(0.99); }
    .gallery-photo:nth-child(4) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(5) { transform: rotateY(0deg) translateZ(3px) scale(1.01); }
    .gallery-photo:nth-child(6) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(7) { transform: rotateY(-1deg) translateZ(-3px) scale(0.99); }
    .gallery-photo:nth-child(8) { transform: rotateY(-2deg) translateZ(-8px) scale(0.98); }
    .gallery-photo:nth-child(9) { transform: rotateY(-3deg) translateZ(-15px) scale(0.97); }
    .gallery-photo:nth-child(10) { transform: rotateY(-5deg) translateZ(-20px) scale(0.96); }

    .location-card-name {
        font-size: var(--text-sm);
    }

    #custom-map {
        min-height: 400px;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--fs-xs) !important;
        padding: 2px 5px !important;
    }

    .gm-style-cc a {
        font-size: var(--fs-xs) !important;
        padding: 2px 5px !important;
    }

    .gm-style-cc button[aria-label="Keyboard shortcuts"] {
        font-size: var(--fs-xs) !important;
        padding: 2px 5px !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 70px !important;
    }
    /* Products */
    .product-preview__grid {
        gap: var(--space-md);
    }

    .product-card.slim {
        width: 300px;
        height: 200px;
    }

    .product-image-container {
        height: 150px;
    }

    .product-name {
        font-size: var(--text-sm);
    }

    /* Footer */
    .footer-logo-large {
        max-width: 200px;
    }

    .footer-social-links {
        gap: var(--space-sm);
    }

    .social-link {
        font-size: var(--text-xs);
    }

    .footer-newsletter-btn {
        font-size: var(--text-sm);
        padding: var(--space-xxs) var(--space-md);
    }

    .footer-marquee-track span {
        font-size: var(--text-sm);
    }
}

@media screen and (min-width: 768px) {
    :root {
        --text-base-size: 0.85rem;
        --space-unit: 0.85rem;
        --title-giant: 4rem;
        --title-md: 3.2rem;
        --title-sm: 2.5rem;
    }

    body.menu-open .page-wrapper {
        transform: translateX(var(--menu-width-tablet));
    }

    body.menu-open .pwa-install-wdg {
        transform: translateX(var(--menu-width-tablet));
    }

    .menu-toggle {
        top: 1.2rem;
        left: 1.2rem;
        width: 40px;
        height: 40px;
    }

    .side-menu .menu-inner {
        padding: var(--text-lg) var(--space-sm);
    }

    .side-menu .logo {
        width: 150px;
        margin-bottom: 2rem;
    }

    .side-menu nav a {
        font-size: var(--title-md);
        padding: var(--space-xxs) 0;
    }

    .side-menu .cookie-settings-btn {
        padding: 12px 18px;
        font-size: var(--text-sm);
        border-radius: var(--radius-10);
    }

    .cookie-banner-content {
        padding: 32px 28px 28px;
        max-width: 460px;
    }

    .cookie-banner-header h3 {
        font-size: var(--text-lg);
    }

    .cookie-banner-body p {
        font-size: var(--text-md);
    }

    .cookie-btn {
        font-size: var(--text-md);
        padding: 14px 24px;
    }

    .cookie-link {
        font-size: var(--text-sm);
    }

    .language-suggestion-popup .popup-container {
        max-width: 480px;
        padding: 28px;
    }
    
    .language-suggestion-popup .popup-title {
        font-size: var(--title-md);
        margin-bottom: 16px;
    }
    
    .language-suggestion-popup .popup-message {
        font-size: 1rem;
        margin-bottom: 28px;
    }
    
    .language-suggestion-popup .popup-buttons {
        gap: 16px;
    }
    
    .language-suggestion-popup .popup-btn {
        padding: 12px 28px;
        font-size: 0.95rem;
    }
    
    .language-suggestion-popup .popup-btn:hover {
        transform: translateY(-2px);
        background: rgba(255, 255, 255, 0.2);
    }

    .booking-modal {
        top: 50% !important;
        left: 50% !important;
        bottom: auto !important;
        right: auto !important;
        transform: translate(-50%, -50%) scale(0.9) !important;
        border-radius: var(--radius-20) !important;
        max-height: 90dvh !important;
    }
    
    .booking-modal.show {
        transform: translate(-50%, -50%) scale(1) !important;
    }
    
    .booking-modal .modal-drag-handle {
        display: none !important;
    }

    .booking-modal .modal-content {
        padding: var(--space-md);
    }

    .booking-step#step5 .datetime-container {
        gap: 14px;
    }

    /* Hero */
    .hero-container {
        grid-template-columns: 1fr;
    }

    .hero-logo {
        max-width: 65%;
    }

    .sedi-label {
        font-size: 2rem;
    }

    .sedi-locations {
        font-size: var(--text-md);
    }

    /* Services */
    .services-vertical-wrapper {
        height: 350px;
    }

    .service-icon-img {
        width: 40px;
        height: 40px;
    }

    .service-item span {
        font-size: var(--text-lg);
    }

    .section-header h2 {
        font-size: var(--title-sm);
    }

    .title-corner {
        font-size: var(--title-sm);
    }

    .history-content-wrapper {
        margin: 0 auto var(--space-lg);
    }

    /* Gallery */
    .gallery-curved-wrapper {
        height: 650px;
    }

    .gallery-photo {
        width: 350px;
        height: 400px;
    }

    .gallery-photo:nth-child(1) { transform: rotateY(5deg) translateZ(-20px) scale(0.96); }
    .gallery-photo:nth-child(2) { transform: rotateY(3deg) translateZ(-10px) scale(0.98); }
    .gallery-photo:nth-child(3) { transform: rotateY(1deg) translateZ(-3px) scale(0.99); }
    .gallery-photo:nth-child(4) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(5) { transform: rotateY(0deg) translateZ(5px) scale(1.02); }
    .gallery-photo:nth-child(6) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(7) { transform: rotateY(-1deg) translateZ(-3px) scale(0.99); }
    .gallery-photo:nth-child(8) { transform: rotateY(-3deg) translateZ(-10px) scale(0.98); }
    .gallery-photo:nth-child(9) { transform: rotateY(-5deg) translateZ(-20px) scale(0.96); }
    .gallery-photo:nth-child(10) { transform: rotateY(-8deg) translateZ(-30px) scale(0.94); }


    #custom-map {
        min-height: 500px;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
        line-height: 16px !important;
    }

    .gm-style-cc a {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
    }

    .gm-style-cc button[aria-label="Keyboard shortcuts"] {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 80px !important;
    }

    /* Products */
    .product-card.slim {
        width: 250px;
        height: 450px;
    }

    .product-image-container {
        height: 350px;
    }

    .product-name {
        font-size: var(--text-sm);
    }

    /* Footer */
    .footer-logo-large {
        max-width: 240px;
    }

    .footer-social-links {
        gap: var(--space-md);
    }

    .social-link {
        font-size: var(--text-sm);
    }

    .footer-newsletter-btn {
        font-size: var(--text-md);
        padding: var(--space-xs) var(--space-lg);
    }

    .footer-marquee-track span {
        font-size: var(--text-md);
    }
}

/* Desktop (992px e superiori) */
@media screen and (min-width: 992px) {
    :root {
        --text-base-size: 0.9rem;
        --space-unit: 0.9rem;
        --title-giant: 5rem;
        --title-md: 4rem;
        --title-sm: 3rem;
        --menu-width: 280px;
    }

    body.menu-open .page-wrapper {
        transform: translateX(var(--menu-width));
    }

    body.menu-open .pwa-install-wdg {
        transform: translateX(var(--menu-width));
    }

    .menu-toggle {
        top: 1.5rem;
        left: 1.5rem;
        width: 42px;
        height: 42px;
    }

    .side-menu {
        width: var(--menu-width);
    }

    body.menu-open .menu-toggle {
        transform: translateX(calc(var(--menu-width) * 1.1)) rotate(180deg);
    }

    .side-menu .logo {
        width: 180px;
    }

    .side-menu nav a {
        font-size: 2.5rem;
        padding: 1rem 0;
    }

    .side-menu .cookie-settings-btn {
        padding: 13px 20px;
        font-size: var(--text-md);
        gap: 12px;
        border-radius: var(--radius-12);
    }
    
    .side-menu .cookie-settings-btn svg {
        width: 20px;
        height: 20px;
    }

    .language-suggestion-popup .popup-container {
        max-width: 500px;
        padding: 32px;
    }
    
    .language-suggestion-popup .popup-title {
        font-size: var(--title-giant);
        margin-bottom: 20px;
    }
    
    .language-suggestion-popup .popup-message {
        font-size: 1.05rem;
        margin-bottom: 32px;
    }
    
    .language-suggestion-popup .popup-btn {
        padding: 12px 32px;
        font-size: 1rem;
    }

    .booking-modal {
        transform: translate(-50%, -50%) scale(0.95) !important;
        box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;
    }

    .booking-modal .modal-content {
        padding: var(--space-md);
    }

    .booking-step#step5 .datetime-container {
        gap: 16px;
    }
    .booking-modal .success-state {
        padding: var(--space-xl) var(--space-lg);
    }

    .booking-modal .success-title {
        font-size: var(--text-xl);
        margin: 0 0 var(--space-md);
    }

    .booking-modal .success-message {
        font-size: var(--text-lg);
    }

    .group-selector .group-selector-row {
        grid-template-columns: 64px 1fr;
    }

    .group-selector .group-size-select-wrapper {
        max-width: 64px;
    }

    .group-selector .btn-primary:hover {
        transform: translateY(-1px);
    }

    /* Hero */
    .hero-container {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
    }

    .hero-content-side {
        padding: var(--space-lg);
    }

    .hero-logo {
        max-width: 450px;
    }

    .sedi-label {
        font-size: 2.5rem;
    }

    .scroll-indicator {
        bottom: 20px;
    }

    /* Services */
    .services-vertical-wrapper {
        height: 400px;
    }

    .service-item {
        padding: var(--space-md) var(--space-lg);
    }

    .service-icon-img {
        width: 50px;
        height: 50px;
    }

    .service-item span {
        font-size: var(--text-md);
    }

    /* Pricing */
    .dual-column-grid.spacious {
        gap: var(--space-lg);
        max-width: 600px;
    }

    .pricing-column,
    .hours-column {
        padding: var(--space-lg);
    }

    .price-list.spacious li,
    .hours-list.spacious li {
        padding: var(--space-md) 0;
    }

    .history-content-wrapper {
        max-width: 600px;
    }

    .gallery-curved-wrapper {
        height: 600px;
    }

    .gallery-photo {
        width: 250px;
        height: 350px;
    }

    .gallery-photo:nth-child(1) { transform: rotateY(8deg) translateZ(-30px) scale(0.94); }
    .gallery-photo:nth-child(2) { transform: rotateY(4deg) translateZ(-15px) scale(0.97); }
    .gallery-photo:nth-child(3) { transform: rotateY(2deg) translateZ(-5px) scale(0.98); }
    .gallery-photo:nth-child(4) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(5) { transform: rotateY(0deg) translateZ(8px) scale(1.03); }
    .gallery-photo:nth-child(6) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(7) { transform: rotateY(-2deg) translateZ(-5px) scale(0.98); }
    .gallery-photo:nth-child(8) { transform: rotateY(-4deg) translateZ(-15px) scale(0.97); }
    .gallery-photo:nth-child(9) { transform: rotateY(-8deg) translateZ(-30px) scale(0.94); }
    .gallery-photo:nth-child(10) { transform: rotateY(-12deg) translateZ(-50px) scale(0.9); }

    #custom-map {
        min-height: 600px;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
        border-radius: var(--radius-4) !important;
    }

    .gm-style-cc a {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
        border-radius: var(--radius-4) !important;
    }

    .gm-style-cc button[aria-label="Keyboard shortcuts"] {
        font-size: var(--fs-sm) !important;
        padding: 2px 6px !important;
        border-radius: var(--radius-4) !important;
    }

    .gm-style-cc[aria-label*="Map Scale"] {
        padding: 2px 6px !important;
        border-radius: var(--radius-4) !important;
    }

    div[style*="z-index: 1000000"][style*="position: absolute"][style*="left: 0px"][style*="bottom: 0px"] {
        padding: 2px 4px !important;
        border-radius: var(--radius-4) !important;
        margin: 5px !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 80px !important;
    }

    /* Products */
    .product-preview {
        padding: var(--space-xxl) 0;
    }

    .product-card.slim {
        width: 350px;
        height: 550px;
    }

    .product-image-container {
        height: 470px;
    }

    /* Footer */
    .footer-logo-large {
        max-width: 280px;
    }

    .footer-social-links {
        gap: var(--space-xl);
    }

    .footer-newsletter-btn {
        font-size: var(--text-lg);
        padding: var(--space-sm) var(--space-xl);
    }
}

/* Desktop Large (1200px e superiori) */
@media screen and (min-width: 1200px) {
    :root {
        --text-base-size: 0.95rem;
        --space-unit: 0.95rem;
        --title-giant: 6rem;
        --title-md: 4.5rem;
        --title-sm: 3.5rem;
    }

    .booking-modal .modal-content {
        padding: var(--space-lg);
    }

    .booking-step#step5 .datetime-container {
        gap: 18px;
    }

    .language-suggestion-popup .popup-container {
        max-width: 520px;
        padding: 36px;
    }
    
    .language-suggestion-popup .popup-title {
        font-size: var(--title-giant);
    }
    
    .language-suggestion-popup .popup-message {
        font-size: 1.1rem;
    }
    
    .language-suggestion-popup .popup-btn {
        padding: 14px 36px;
        font-size: 1.05rem;
    }

    .hero-container {
        grid-template-columns: 1fr 1fr;
    }

    .hero-content-side {
        padding: var(--space-xl);
    }

    .hero-logo {
        max-width: 50%;
    }

    .sedi-label {
        font-size: 3rem;
    }

    .service-item span {
        font-size: var(--text-lg);
    }

    .gallery-photo {
        width: 250px;
        height: 350px;
    }

    .gallery-photo:nth-child(1) { transform: rotateY(10deg) translateZ(-40px) scale(0.92); }
    .gallery-photo:nth-child(2) { transform: rotateY(5deg) translateZ(-20px) scale(0.96); }
    .gallery-photo:nth-child(3) { transform: rotateY(2deg) translateZ(-5px) scale(0.98); }
    .gallery-photo:nth-child(4) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(5) { transform: rotateY(0deg) translateZ(10px) scale(1.05); }
    .gallery-photo:nth-child(6) { transform: rotateY(0deg) translateZ(0) scale(1); }
    .gallery-photo:nth-child(7) { transform: rotateY(-2deg) translateZ(-5px) scale(0.98); }
    .gallery-photo:nth-child(8) { transform: rotateY(-5deg) translateZ(-20px) scale(0.96); }
    .gallery-photo:nth-child(9) { transform: rotateY(-10deg) translateZ(-40px) scale(0.92); }
    .gallery-photo:nth-child(10) { transform: rotateY(-15deg) translateZ(-60px) scale(0.88); }

    .product-card.slim {
        width: 350px;
        height: 550px;
    }

    .product-image-container {
        height: 470px;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--fs-sm) !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 90px !important;
    }
}

/* Desktop Extra Large (1400px e superiori) */
@media screen and (min-width: 1400px) {
    :root {
        --title-giant: 7rem;
        --title-md: 5rem;
        --title-sm: 3.8rem;
    }

    .booking-modal .modal-content {
        padding: var(--space-lg);
    }

    .booking-step#step5 .datetime-container {
        gap: 20px;
    }

    .section-content {
        max-width: 1000px;
    }

    .gallery-curved-wrapper {
        height: 800px;
    }

    .gallery-photo {
        width: 400px;
        height: 500px;
    }

    .dual-column-grid.spacious {
        max-width: 900px;
        gap: var(--space-xl);
    }
}

/* Schermi molto larghi (2001px e superiori) */
@media screen and (min-width: 2001px) {
    :root {
        --title-giant: 12rem;
        --title-md: 8rem;
        --title-sm: 6rem;
        --text-base-size: 1.2rem;
        --space-unit: 1.3rem;
    }

    .booking-modal .modal-content {
        padding: var(--space-lg);
    }

    .section-content {
        max-width: 1600px;
    }

    .hero-container {
        grid-template-columns: 1.3fr 0.7fr;
    }

    .hero-logo {
        max-width: 600px;
    }

    .gallery-photo {
        width: 400px;
        height: 500px;
    }

    .product-card.slim {
        width: 350px;
    }

    .product-image-container {
        height: 380px;
    }
    .gmnoprint .gm-style-cc span,
    .gmnoscreen div,
    .gm-style-cc span:not([style*="display: none"]) {
        font-size: var(--fs-base) !important;
        padding: 4px 8px !important;
    }

    .gm-style-cc a {
        font-size: var(--fs-base) !important;
        padding: 4px 8px !important;
    }

    .gm-style-cc button[aria-label="Keyboard shortcuts"] {
        font-size: var(--fs-base) !important;
        padding: 4px 8px !important;
    }

    div[style*="z-index: 1000000"] img[alt="Google"],
    div[style*="z-index: 1000000"] svg {
        max-width: 100px !important;
    }
}

@media screen and (min-width: 1200px) and (min-height: 1081px) {
    .hero { min-height: 100dvh; }
    .services-vertical-wrapper { height: 400px; }
    .gallery-curved-wrapper { height: 750px; }
    .gallery-photo { width: 400px; height: 500px; }
    #custom-map { min-height: 800px; }
    .product-preview__grid { padding: var(--space-xl) 0; }
    .footer-new { padding: var(--space-xxl) var(--space-lg) 0; }
}

@media screen and (min-width: 800px) and (max-width: 1400px) and (max-height: 800px) {
    :root {
        --title-giant: 4rem;
        --title-md: 3.2rem;
        --title-sm: 2.5rem;
        --text-base-size: 0.9rem;
    }

    body.menu-open .page-wrapper {
        transform: translateX(250px);
    }

    .side-menu {
        width: var(--menu-width-tablet);
    }

    .side-menu .menu-inner {
        padding: var(--space-md);
    }

    .side-menu .logo {
        width: 150px;
    }

    .side-menu nav a {
        font-size: var(--text-sm);
        padding: var(--space-sm) 0;
    }

    .side-menu .book-btn {
        padding: var(--space-xxs);
    }

    /* Booking Modal - versione centrata per Nest Hub */
    .booking-modal {
        left: 50% !important;
        top: 50% !important;
        bottom: auto !important;
        right: auto !important;
        transform: translate(-50%, -50%) scale(0.9) !important;
        border-radius: var(--radius-24);
    }

    .booking-modal.show {
        transform: translate(-50%, -50%) scale(1) !important;
    }

    .booking-modal .modal-drag-handle {
        display: none;
    }

    /* Hero */
    .hero-container {
        grid-template-columns: 1fr 1fr;
    }

    .hero-logo {
        max-width: 220px;
    }

    .sedi-label {
        font-size: 2.2rem;
    }

    .services-section {
        padding: var(--space-xxl) 0;
    }

    .services-vertical-wrapper {
        height: 300px;
    }

    .service-item span {
        font-size: var(--text-lg);
    }

    .h1-small {
        font-size: var(--title-giant);
    }

    .gallery-curved-wrapper {
        height: 650px !important;
    }

    .gallery-photo {
        width: 250px;
        height: 350px;
    }

    .location-card-logo {
        width: 120px;
    }

    #custom-map {
        min-height: 350px;
    }

    .product-preview {
        padding: var(--space-xs) 0;
    }

    .product-preview__grid {
        gap: var(--space-xs);
    }

    .product-card.slim {
        width: 200px;
        height: 300px;
    }

    .product-image-container {
        height: 220px;
    }

    .footer-logo-large {
        max-width: 220px;
    }
}

/* Touch devices - rimuove hover problematici */
@media (hover: none) and (pointer: coarse) {
    .booking-modal .modal-drag-handle {
        height: 36px; 
    }

    .booking-modal .modal-drag-handle-bar {
        height: 5px;
    }

    .map-lock-overlay {
        cursor: pointer; 
    }
    
    .map-lock-message {
        font-size: var(--text-xs); 
        padding: var(--space-sm);
        text-align: center;
        line-height: 1.4;
    }
    
    .map-lock-overlay::after {
        content: '';
        position: absolute;
        top: -10px;
        left: -10px;
        right: -10px;
        bottom: -10px;
        background: transparent;
        pointer-events: none;
    }
    
    .map-lock-overlay:hover {
        background: rgba(0, 0, 0, 0.4); 
    }

    .service-item:hover,
    .product-card.slim:hover,
    .location-card:hover,
    .gallery-curved-track:hover,
    .product-preview__grid:hover,
    .services-scroll-track:hover {
        animation-play-state: running;
        transform: none;
    }

    .product-card.slim:hover .product-image {
        opacity: 1;
    }

    .product-card.slim:hover .product-image-hover {
        opacity: 0;
    }
}

/* Orientamento portrait su display larghi */
@media screen and (orientation: portrait) and (min-width: 800px) and (max-height: 1000px) {
    .hero-container {
        grid-template-columns: 1fr;
        grid-template-rows: 40dvh auto;
    }

    .dual-column-grid.spacious {
        grid-template-columns: 1fr 1fr;
    }
}

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

    .services-scroll-track,
    .gallery-curved-track,
    .product-preview__grid,
    .footer-marquee-track,
    .arrow-down {
        animation: none !important;
    }

    .arrow-down {
        transform: rotate(45deg);
    }

    .services-scroll-container {
        overflow-y: auto;
    }

    .gallery-curved-wrapper,
    .product-preview__scroll-wrapper,
    .footer-marquee {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Stampa */
/* ==============================================================================
   18. OVERRIDE STAMPA
   =========================================================================== */

@media print {
    .menu-toggle,
    .side-menu,
    .menu-overlay,
    .lang-selector-v3,
    .booking-modal,
    .newsletter-modal,
    .scroll-indicator,
    .footer-newsletter-btn,
    .footer-social-links,
    .footer-marquee {
        display: none !important;
    }

    body {
        background: white;
        color: black;
    }

    .page-wrapper {
        transform: none !important;
    }

    a {
        color: black !important;
        text-decoration: underline;
    }

    .hero {
        min-height: auto;
    }

    .gallery-curved-track {
        animation: none;
        position: relative;
        flex-wrap: wrap;
        justify-content: center;
    }

    .product-preview__grid {
        animation: none;
        flex-wrap: wrap;
        justify-content: center;
    }

    .gmnoprint.gm-style-cc,
    .gm-style-cc,
    .gmnoscreen,
    [class*="gm-style-cc"],
    div[style*="z-index: 1000000"] {
        display: none !important;
    }
}


/* Fix specifici solo per Safari - mantiene l'effetto originale */
/* ==============================================================================
   18a. OVERRIDE SAFARI / WEBKIT
   =========================================================================== */

@media not all and (min-resolution:.001dpcm) {
    @supports (-webkit-appearance:none) {
        .gallery-photo {
            /* Queste proprietà riducono il flickering senza alterare l'effetto visivo */
            -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
        }
        
        .gallery-curved-track {
            /* Forza hardware acceleration su Safari */
            -webkit-transform: translateZ(0);
            transform: translateZ(0);
        }
    }
}

/* ==============================================================================
   19. APPENDICE — BOOKING MEMORY (modal salvataggio + banner bentornato)
   =========================================================================== */

/* ─── Overlay + Modal "Vuoi salvare?" ─── */
.bm-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.78);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: var(--z-index-modal-top);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: bmFadeIn 0.22s ease;
}

.bm-modal {
    background: #3a553c;
    color: var(--primary-white, #f4ede9);
    border: 1px solid rgba(106, 255, 0, 0.35);
    border-radius: var(--radius-16);
    padding: 28px 26px;
    max-width: 460px;
    width: 92%;
    text-align: center;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
    font-family: var(--font-main, -apple-system, sans-serif);
    animation: bmSlideUp 0.28s cubic-bezier(.25,.46,.45,.94);
}

.bm-logo {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    min-height: 130px;
}
.bm-logo img {
    height: 180px;
    width: auto;
    max-width: 100%;
    object-fit: contain;
    filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.65))
            drop-shadow(0 0 20px rgba(255, 255, 255, 0.4));
}
.bm-salon-name {
    font-family: var(--font-sec, 'Oswald-light', sans-serif);
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(244, 237, 233, 0.55);
}

.bm-title {
    margin: 0 0 10px;
    font-size: 1.15rem;
    font-weight: 600;
    color: black;
    letter-spacing: 0.01em;
}

.bm-preview {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: var(--radius-10);
    padding: 12px 14px;
    margin-bottom: 16px;
    text-align: left;
    font-size: 0.82rem;
}
.bm-preview-name { font-weight: 600; color: var(--primary-white, #f4ede9); }
.bm-preview-contacts { color: rgba(244, 237, 233, 0.55); margin-top: 4px; font-size: 0.78rem; }

.bm-actions { display: flex; gap: 10px; }

.bm-btn {
    flex: 1;
    padding: 12px;
    border-radius: var(--radius-10);
    font-size: 0.85rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: var(--t-all-fast);
    border: 1px solid transparent;
}
.bm-btn-primary {
    background: var(--accent-success, #6aff00);
    color: var(--primary-black, #181818);
    border-color: var(--accent-success, #6aff00);
}
.bm-btn-primary:hover {
    background: #5ce600;
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(106, 255, 0, 0.28);
}
.bm-btn-secondary {
    background: transparent;
    color: rgba(244, 237, 233, 0.75);
    border-color: rgba(255, 255, 255, 0.15);
}
.bm-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.06);
    color: var(--primary-white, #f4ede9);
}

/* ─── Banner "Bentornato" (dentro step3) ─── */
.welcome-back-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    margin-bottom: 14px;
    background: rgba(0, 0, 0, 0.18);
    border: 1px solid black;
    border-radius: var(--radius-10);
    font-family: var(--font-main, -apple-system, sans-serif);
    font-size: 0.8rem;
    color: rgba(244, 237, 233, 0.85);
    animation: bmFadeIn 0.3s ease;
}

.wbb-logo {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgb(0 0 0);
    box-shadow: var(--shadow-hard);
    border-radius: var(--radius-8);
    overflow: hidden;
}
.wbb-logo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    filter: invert(1);
}

.wbb-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.wbb-body strong {
    color: black;
    font-weight: 600;
    font-size: 0.85rem;
}
.wbb-body span {
    color: #484848;
    text-shadow: 1px 0px #0000007a;
    font-size: 0.75rem;
    line-height: 1.35;
}

.wbb-forget {
    flex-shrink: 0;
    background: rgba(255, 119, 0, 0.5);
    border: 1px solid rgba(154, 72, 0, 0.67);
    color: var(--red, #bd4c00);
    padding: 6px 10px;
    border-radius: var(--radius-8);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    cursor: pointer;
    font-family: inherit;
    transition: var(--t-all-fast);
    box-shadow: var(--shadow-hard);
}
.wbb-forget:hover {
    background: rgba(189, 50, 0, 0.15);
    border-color: var(--red, #bd3200);
}

@keyframes bmFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes bmSlideUp {
    from { opacity: 0; transform: translateY(20px) scale(0.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 480px) {
    .bm-modal { padding: 22px 18px; max-width: 96%; }
    .bm-logo img { height: 150px; }
    .bm-logo { min-height: 100px; }
    .welcome-back-banner { flex-wrap: wrap; }
    .wbb-forget { width: 100%; text-align: center; }
}

/* ==============================================================================
   19a. GROUP TOGGLE BUTTON — step 1
   =========================================================================== */

.booking-modal .group-toggle-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-sm);
    width: 100%;
    padding: 12px 16px;
    min-height: 44px;
    background: transparent;
    color: var(--primary-black);
    border: 1.5px solid rgba(24, 24, 24, 0.15);
    border-radius: var(--radius-12);
    font-family: var(--font-main);
    font-size: var(--text-sm);
    font-weight: 500;
    letter-spacing: 0.02em;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.25s ease,
                background 0.25s ease,
                transform 0.15s ease,
                border-radius 0.25s ease;
    -webkit-tap-highlight-color: transparent;
    -webkit-appearance: none;
    appearance: none;
}

.booking-modal .group-toggle-btn:hover {
    border-color: rgba(24, 24, 24, 0.35);
    background: rgba(24, 24, 24, 0.03);
}

.booking-modal .group-toggle-btn:active {
    transform: scale(0.98);
    background: rgba(24, 24, 24, 0.06);
}

.booking-modal .group-toggle-btn:focus-visible {
    outline: none;
    border-color: var(--primary-black);
    box-shadow: 0 0 0 3px rgba(24, 24, 24, 0.08);
}

.booking-modal .group-toggle-btn.open {
    border-color: var(--primary-black);
    background: rgba(24, 24, 24, 0.05);
    border-bottom-left-radius: 4px;
    border-bottom-right-radius: 4px;
}

.booking-modal .group-toggle-label {
    flex: 1;
    min-width: 0;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.booking-modal .group-toggle-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    font-size: var(--fs-xxs);
    line-height: 1;
    color: rgba(24, 24, 24, 0.55);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                color 0.25s ease;
    flex-shrink: 0;
    transform-origin: center;
}

.booking-modal .group-toggle-btn:hover .group-toggle-icon {
    color: var(--primary-black);
}

.booking-modal .group-toggle-btn.open .group-toggle-icon {
    transform: rotate(180deg);
    color: var(--primary-black);
}

@media (hover: none) and (pointer: coarse) {
    .booking-modal .group-toggle-btn:hover {
        border-color: rgba(24, 24, 24, 0.15);
        background: transparent;
    }
    .booking-modal .group-toggle-btn:active {
        border-color: rgba(24, 24, 24, 0.35);
        background: rgba(24, 24, 24, 0.06);
    }
}