:root {

    --vdp-screen-height: 100vh;
    --vdp-navbar-height: calc(60px + env(safe-area-inset-bottom, 0px));
    --vdp-safe-top: env(safe-area-inset-top, 0px);
    --vdp-topbar-height: 24px;
    --vdp-header-lift: 0px;

    --vdp-workspace-height: calc(
        var(--vdp-screen-height)
        - var(--vdp-navbar-height)
        - var(--vdp-topbar-height)
        - var(--vdp-safe-top)
);

    --vdp-theme-guest: #FFFFFF;
    --vdp-theme-myvdp: #E5E5E5;

}

/*
 * Rete di sicurezza: finché il CSS specifico di una pagina
 * (generato da Elementor, diverso per ogni pagina e non
 * precaricato dal service worker) non ha finito di caricare,
 * immagini e icone SVG non devono mai superare la larghezza
 * del loro contenitore. Senza questa regola, nel primissimo
 * istante di caricamento possono apparire alla loro dimensione
 * reale (spesso enorme) prima che lo stile corretto arrivi.
 * Questa regola non sostituisce lo stile vero di ogni immagine,
 * la protegge solo nel breve istante prima che arrivi.
 */
img,
svg {
    max-width: 100%;
    height: auto;
}

@supports (height: 100dvh) {

    :root {

        --vdp-screen-height: 100dvh;

    }

}



@media (min-width: 1025px){

    :root {

        --vdp-topbar-height: 40px;

    }

}

.vdp-top-bar{

    position: fixed;

    top: 0;

    left: 0;

    right: 0;

    height: var(--vdp-topbar-height);

    z-index: 999999;

    pointer-events: none;

}

.vdp-status-bar{

    width:100%;

    height:100%;

}

body.vdp-app-screen,
body.vdp-scroll-screen {

    padding-top: calc(var(--vdp-topbar-height) + var(--vdp-safe-top));

    /*
     * Comportamento da app: niente ingrandimento da doppio tocco
     * (quello che scattava per errore sbagliando un tocco). La
     * pinch a due dita è bloccata a parte, dal viewport e da
     * no-link.js, perché iOS ignora il solo viewport.
     */
    touch-action: manipulation;

}

/*
 * v24.20: "manipulation" lascia ancora la pinch a due dita (iOS recente
 * ignora il blocco da JavaScript). "pan-x pan-y" permette solo di scorrere:
 * nessun ingrandimento, ne' con le dita ne' con il doppio tocco.
 */
html:has(body.vdp-app-screen),
html:has(body.vdp-scroll-screen),
body.vdp-app-screen,
body.vdp-scroll-screen {

    touch-action: pan-x pan-y;

}

/*
 * Solo le pagine scorrevoli hanno bisogno di questo: la navbar
 * in basso è sempre position:fixed sopra a tutto, quindi quando
 * la pagina scorre davvero fino in fondo, l'ultimo contenuto
 * (es. lo skyline) andrebbe a finire nascosto dietro di lei.
 * Le pagine a schermo fisso (vdp-app-screen) non ne hanno
 * bisogno: lì il contenuto non supera mai lo schermo.
 */
body.vdp-scroll-screen {

    padding-bottom: var(--vdp-navbar-height);

}

body.vdp-guest .vdp-top-bar {

    background: var(--vdp-theme-guest);

}

.vdp-back-button {

    position: fixed;
    top: calc(var(--vdp-topbar-height) + var(--vdp-safe-top) + 9px);
    left: 16px;
    z-index: 999998;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;

}

.vdp-back-button-icon {

    display: block;
    width: 36px;
    height: 36px;

}

@media (max-width: 767px) {

    .vdp-back-button {
        top: calc(var(--vdp-topbar-height) + var(--vdp-safe-top) + 1px);
    }

    .vdp-back-button-icon {
        width: 40px;
        height: 40px;
    }

}

body.vdp-myvdp .vdp-top-bar {

    background: var(--vdp-theme-myvdp);

}

body.vdp-guest {

    background: var(--vdp-theme-guest);

}

body.vdp-myvdp {

    background: var(--vdp-theme-myvdp);

}

.vdp-workspace{

    display: flex;

    flex-direction: column;

    box-sizing: border-box;

    width: 100%;

    margin-top: calc(-1 * var(--vdp-header-lift)) !important;

    height: calc(var(--vdp-workspace-height) + var(--vdp-header-lift)) !important;

    min-height: calc(var(--vdp-workspace-height) + var(--vdp-header-lift)) !important;

    max-height: calc(var(--vdp-workspace-height) + var(--vdp-header-lift)) !important;

    flex: 0 0 calc(var(--vdp-workspace-height) + var(--vdp-header-lift)) !important;

}

body.vdp-app-screen .vdp-workspace{

	overflow: hidden;

}

body.vdp-scroll-screen .vdp-workspace{

	overflow-y: auto;
	overflow-x: hidden;
	-webkit-overflow-scrolling: touch;

}

/*
 * Per "tirare su" l'header (facendolo comparire sopra la
 * barra colorata, senza sballare il calcolo dell'altezza):
 * su qualunque contenitore, in Elementor → Avanzate →
 * Classi CSS aggiungi "vdp-above-topbar", POI nel Custom
 * CSS dello stesso contenitore scrivi:
 *
 * selector { --vdp-header-lift: 30px; }
 *
 * Cambia solo quel numero (30px) — non serve toccare
 * margini o altezze a mano, si aggiustano da soli insieme.
 * Puoi scrivere un valore diverso per mobile/tablet nella
 * stessa casella, usando le schede Desktop/Tablet/Mobile
 * di Elementor.
 */
.vdp-above-topbar{

	position: relative;
	z-index: 1000000;

}

/*
 * Blocco "ruota il telefono": su iOS/Android non è possibile
 * forzare davvero l'orientamento di una PWA, quindi copriamo
 * il contenuto con un messaggio a schermo intero quando il
 * telefono è ruotato in orizzontale. Soglia 1000px per
 * escludere i tablet (che restano utilizzabili in orizzontale
 * normalmente) e coprire anche i telefoni più larghi.
 */
/*
 * Blocco "ruota il telefono": su iOS/Android non è possibile
 * forzare davvero l'orientamento di una PWA, quindi copriamo
 * il contenuto con una schermata a schermo intero (logo +
 * messaggio) quando il dispositivo è ruotato in orizzontale.
 * Soglia 1000px per escludere i tablet (che restano
 * utilizzabili in orizzontale normalmente).
 */
.vdp-rotate-screen {

	display: none;

}

@media (orientation: landscape) and (max-width: 1000px) {

	body.vdp-app-screen .vdp-rotate-screen,
	body.vdp-scroll-screen .vdp-rotate-screen {

		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		position: fixed;
		inset: 0;
		z-index: 999999;
		background: #FFFFFF;
		padding: 30px;
		text-align: center;

	}

}

.vdp-rotate-brand {

	display: flex;
	align-items: flex-start;
	gap: 45px;

}

.vdp-rotate-logo img {

	width: 60px !important;
	height: 60px !important;
	max-width: 60px !important;
	flex-shrink: 0;
	display: block;

}

.vdp-rotate-text {

	display: flex;
	flex-direction: column;
	align-items: center;

}

.vdp-rotate-name {

	font-family: 'Oswald', sans-serif;
	font-weight: 600;
	font-size: 25px;
	color: #666666;
	white-space: nowrap;

}

.vdp-rotate-divider {

	width: 130%;
	height: 1px;
	background: #C1552E;
	margin: 3px 0;

}

.vdp-rotate-luxury {

	font-family: 'Cormorant Garamond', serif;
	font-weight: 600;
	font-size: 24px;
	letter-spacing: 6px;
	color: #999999;
	white-space: nowrap;

}

.vdp-rotate-rapallo {

	font-family: 'Oswald', sans-serif;
	font-size: 11px;
	letter-spacing: 12px;
	color: #999999;
	white-space: nowrap;

}

.vdp-rotate-message {

	margin-top: 34px;
	margin-left: 27px !important;
	margin-right: 0 !important;
	width: fit-content !important;
	max-width: 90% !important;
	font-family: 'Oswald', sans-serif;
	font-size: 19px;
	line-height: 1.5;
	color: #999999;
	text-align: center;

}

/*
 * Skyline appoggiato in fondo.
 *
 * Basta la classe "vdp-skyline" sul contenitore Elementor che
 * ospita l'illustrazione: il suo contenitore padre viene reso
 * alto quanto lo spazio utile della schermata, e lo skyline
 * spinto in fondo. Se il contenuto sopra è lungo, tutto scorre
 * normalmente e lo skyline resta in coda.
 */
.vdp-skyline {
    margin-top: auto;
}

body.vdp-scroll-screen .elementor > .e-con:has(> .vdp-skyline),
body.vdp-app-screen .elementor > .e-con:has(> .vdp-skyline),
body.vdp-scroll-screen .e-con:has(> .vdp-skyline),
body.vdp-app-screen .e-con:has(> .vdp-skyline) {
    display: flex;
    flex-direction: column;
    min-height: var(--vdp-workspace-height);
}

/*
 * Pagina Disponibilità (app VdP Admin): la fascia in alto, sotto
 * ora e batteria, ha il colore che si vede ai bordi dello sfondo
 * Elementor (#D59A88 con l'immagine sopra = #D0A494).
 */
body.vdp-disponibilita,
body.vdp-disponibilita .vdp-top-bar {
    background: #D0A494;
}
