/* Splash di apertura "Lime booking × D.R.M." — "La porta D.R.M." (proposta 05b di SplashLab/drm, scelta
   dall'utente il 30/09/2026).

   E' la schermata di caricamento di OGNI apertura del sito: html.lb-splash-on la accende lo script in
   <head> di index.html, splash.js la guida:
     .lb-play    intro: Lime booking si strizza e il succo diventa il logo, la ×, il telaio della porta si
                 disegna, sull'anta blu si monta il logo D.R.M. bianco, arrivano le chiavi con il portachiavi
                 lime, la chiave entra e gira (tempi sotto, ms dall'avvio)
     .lb-rest    intro ferma: splash.js prepara l'uscita
     .lb-exit    uscita (tempi in splash.js): l'anta cede e si apre verso l'interno, nel vano si vede il sito,
                 poi il vano si porta al centro e si allarga fino a coprire lo schermo. ECCEZIONE voluta
                 dall'utente: il sito si apre dalla PORTA, non dal lime
     .lb-portal  uscita con Web Animations; senza, e' una dissolvenza
     .lb-reduced movimento ridotto: porta chiusa col logo e chiavi nella toppa in dissolvenza, pausa, via
   Tutto quello che si muove e' transform o opacity (fuori dal thread principale, occupato dall'avvio di
   Blazor), una animazione per elemento. I pezzi di Lime booking li monta splash/layers/layers.js, quelli
   del logo D.R.M. splash/pezzi/pezzi-mount.js. */

.lb-splash {
    display: none;
}

html.lb-splash-on,
html.lb-splash-on body {
    overflow: hidden;
}

html.lb-splash-on .lb-splash {
    --sp-paper: #ffffff;                          /* il bianco del sito */
    --sp-x-ink: #14b8a6;                          /* la ×: il teal dell'accento, un tono piu' pieno sul bianco */
    --k-brass: #c89a3f;                           /* la chiave: ottone */
    --k-brass-d: #a37826;
    --k-steel: #97a0b4;                           /* l'anello */
    --k-steel-2: #6e7a96;                         /* la seconda chiave: acciaio */
    --d-frame: #29388e;                           /* il telaio: il blu del logo */
    display: block;
    position: fixed;
    inset: 0;
    z-index: 9999;
    overflow: hidden;
    background-color: var(--sp-paper);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    forced-color-adjust: none;
}
/* in .lb-play il fondo e' .sp-bg, che l'uscita toglie quando l'anta chiusa copre il foro del muro */
html.lb-splash-on .lb-splash.lb-play { background-color: transparent; }

/* finche' immagini e pezzi non sono pronti si vede solo il fondo (copre gia' la pagina) */
.lb-splash:not(.lb-play) > :not(.sp-bg) { visibility: hidden; }

.lb-splash img { display: block; max-width: none; margin: 0; padding: 0; border: 0; pointer-events: none; user-select: none; -webkit-user-drag: none; }
.lb-splash svg { max-width: none; }

.sp-bg {
    position: absolute;
    inset: 0;
    background-color: var(--sp-paper);
}

/* ── impaginazione: in colonna su ogni schermo ──────────── */
.sp-lockup {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 16px 16px 24px;
    box-sizing: border-box;
}

.sp-lime-slot { position: relative; z-index: 2; flex: none; width: clamp(200px, 19vw, 280px); }
.sp-lime { width: 100%; }
.sp-slice-in { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
.sp-lime .sp-wrap-trails { clip-path: inset(-12% -12% -12% 0); transform-origin: 0 50%; }

.sp-mid {
    position: relative;
    z-index: 2;
    flex: none;
    width: 44px;
    height: clamp(62px, 8vh, 84px);
}

/* la ×: due tratti; ogni tratto scorre fuori dal suo binario (ritaglio fermo) */
.sp-x {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 26px;
    height: 26px;
    margin: -13px 0 0 -13px;
    --sp-xw: 2.4px;
}
.sp-x-arm {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 34px;
    height: var(--sp-xw);
    margin: calc(var(--sp-xw) / -2) 0 0 -17px;
    overflow: hidden;
    border-radius: 99px;
}
.sp-x-a { transform: rotate(45deg); }
.sp-x-b { transform: rotate(135deg); }
.sp-x-arm b {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 99px;
    background: var(--sp-x-ink);
}

/* ── la porta: slot sull'altezza, stage di 210x398 px scalato (statico) ──
   vano (= anta = foro nel muro): x 10–200, y 8–392 */
.sp-door-slot {
    position: relative;
    z-index: 1;
    flex: none;
    height: clamp(240px, 50vh, 470px);
    aspect-ratio: 210 / 398;
}
/* il portale: tutto quello che entra con lo zoom finale (muro col foro, telaio, anta, chiavi) */
.sp-portal { position: absolute; left: 0; top: 0; width: 100%; height: 100%; transform-origin: 0 0; }
.sp-door-stage { position: absolute; left: 0; top: 0; width: 210px; height: 398px; transform-origin: 0 0; }
.sp-door-stage > *, .d-leaf-in > *, .k * { position: absolute; display: block; }
.sp-door-stage svg { overflow: visible; }

/* il muro: il fondo bianco con il foro della porta (bordo enorme, nessuna maschera); livello suo */
.d-wall {
    left: 10px; top: 8px; width: 190px; height: 384px;
    box-sizing: content-box;
    border: 160vmax solid var(--sp-paper);
    margin: -160vmax 0 0 -160vmax;
    will-change: transform;
}

/* l'anta: gira sui cardini (a sinistra) verso l'interno; la prospettiva e' del contenitore (ferma) */
.d-persp, .k-persp { left: 10px; top: 8px; width: 190px; height: 384px; perspective: 640px; perspective-origin: 50% 50%; }
.d-leaf, .k-door { position: absolute; left: 0; top: 0; width: 190px; height: 384px; transform-origin: 0 50%; }
.d-leaf-in { position: absolute; left: 0; top: 0; width: 190px; height: 384px; }
.d-face, .d-hw { left: 0; top: 0; width: 190px; height: 384px; }
/* il logo nella specchiatura alta */
.d-logo { left: 20px; top: 57.6px; width: 150px; }
/* l'anta presa di taglio si scurisce: copia ferma, solo opacita' */
.d-shade {
    position: absolute; left: 0; top: 0; width: 190px; height: 384px;
    background: linear-gradient(90deg, rgba(8, 16, 54, .26), rgba(8, 16, 54, .72));
    opacity: 0;
}

/* il telaio: sopra l'anta, ne copre i bordi (e il bordo del foro) di 1 px */
.d-line { background: var(--d-frame); }
.d-jamb-l { left: 2px; top: 0; width: 9px; height: 392px; transform-origin: 50% 100%; }
.d-jamb-r { left: 199px; top: 0; width: 9px; height: 392px; transform-origin: 50% 100%; }
.d-lintel { left: 2px; top: 0; width: 206px; height: 9px; }
.d-sill { left: 0; top: 391px; width: 210px; height: 6px; border-radius: .8px; }

/* ── le chiavi (px dell'anta; origine = la toppa, ingrandite 1,2) ─────── */
.k { position: absolute; left: 183px; top: 230px; width: 0; height: 0; transform-origin: 0 0; transform: scale(1.2); }
.k-turn { left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; transform: rotate(90deg); }
/* il ritaglio fermo: a sinistra della toppa la lama non si vede (e' dentro la serratura) */
.k-clip { left: 0; top: -120px; width: 190px; height: 240px; overflow: hidden; }
.k-in { width: 0; height: 0; }
.k-in-a { left: 0; top: 120px; }
.k-in-b { left: 0; top: 0; }
.k-main { left: -22px; top: -11px; width: 51px; height: 22px; }
/* l'anello e' appeso al foro della chiave: contro-giro (resta dritto) e dondolio */
.k-hang { left: 21.6px; top: 0; width: 0; height: 0; transform-origin: 0 0; transform: rotate(-90deg); }
.k-swing { left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; }
.k-ring { left: -9px; top: -2px; width: 18px; height: 18px; }
.k-key2-at { left: -2.6px; top: 13.6px; width: 0; height: 0; transform-origin: 0 0; transform: rotate(9deg); }
.k-key2 { left: -8px; top: -5px; width: 16px; height: 36px; }
.k-fob-at { left: 3.4px; top: 13.25px; width: 0; height: 0; transform-origin: 0 0; transform: rotate(-11deg); }
.k-fob { left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; }
.k-fob svg { left: -9px; top: -1px; width: 18px; height: 23px; }

/* ── telefono: stessa colonna, misure strette ──────────── */
@media (max-width: 767.98px) {
    .sp-lime-slot { width: min(54vw, 230px); }
    .sp-mid { height: clamp(60px, 8.5vh, 84px); }
    .sp-door-slot { height: clamp(240px, 50vh, 440px); }
    .sp-x { width: 23px; height: 23px; margin: -11.5px 0 0 -11.5px; --sp-xw: 2.2px; }
    .sp-x-arm { width: 30px; margin-left: -15px; }
}

/* ══ SEQUENZA (intro: solo transform e opacity) ══════════ */

/* 1 · Lime booking (tempi della 06) */
.lb-play .sp-slice-in { animation: sp-squeeze 532ms linear 28ms both; }
.lb-play .sp-lime .sp-drips { animation: sp-juice 308ms linear 350ms both; }
.lb-play .sp-lime .sp-wrap-word .sp-letter {
    animation: sp-pop 322ms linear both;
    animation-delay: calc(378ms + var(--sp-i) * 38.5ms);
}
.lb-play .sp-lime .sp-wrap-word .sp-letter[data-part$="-dot"] {
    animation: sp-dot 252ms cubic-bezier(.34, 1.7, .5, 1) 504ms both;
}
.lb-play .sp-lime .sp-wrap-booking .sp-letter {
    animation: sp-surface 266ms cubic-bezier(.22, 1, .36, 1) both;
    animation-delay: calc(448ms + var(--sp-i) * 21ms);
}
.lb-play .sp-lime .sp-wrap-booking .sp-letter[data-part$="-dot"] {
    animation: sp-dot 224ms cubic-bezier(.34, 1.7, .5, 1) 581ms both;
}

/* 2 · la × */
.lb-play .sp-x { animation: sp-x-in 360ms cubic-bezier(.22, 1, .36, 1) 600ms both; }
.lb-play .sp-x-a b { animation: sp-stroke 150ms cubic-bezier(.55, 0, .25, 1) 615ms both; }
.lb-play .sp-x-b b { animation: sp-stroke 150ms cubic-bezier(.55, 0, .25, 1) 685ms both; }

/* 3 · il telaio si disegna; l'anta compare */
.lb-play .d-sill { animation: d-cresce-x 300ms cubic-bezier(.3, .8, .25, 1) 720ms both; }
.lb-play .d-jamb-l,
.lb-play .d-jamb-r { animation: d-cresce-y 300ms cubic-bezier(.3, .8, .25, 1) 780ms both; }
.lb-play .d-lintel { animation: d-cresce-x 220ms cubic-bezier(.3, .8, .25, 1) 990ms both; }
.lb-play .d-leaf-in { animation: sp-appear 170ms ease-out 880ms both; }

/* 4 · il logo D.R.M. bianco sull'anta (come nella 05): le lettere salgono, la croce con la R, le
   falde si chiudono sul colmo, comignolo e gronde crescono, la riga si allarga, la dicitura sale */
.lb-play .dp[data-pezzo="D"] { animation: dp-sale-D 440ms cubic-bezier(.2, .8, .3, 1) 900ms both; }
.lb-play .dp[data-pezzo="punto-D"] { animation: dp-sale-p 440ms cubic-bezier(.2, .8, .3, 1) 936ms both; }
.lb-play .dp[data-pezzo="R"] { animation: dp-sale-R 440ms cubic-bezier(.2, .8, .3, 1) 972ms both; }
.lb-play .dp[data-pezzo="croce"] { animation: dp-sale-croce 440ms cubic-bezier(.2, .8, .3, 1) 972ms both; }
.lb-play .dp[data-pezzo="punto-R"] { animation: dp-sale-p 440ms cubic-bezier(.2, .8, .3, 1) 1008ms both; }
.lb-play .dp[data-pezzo="M"] { animation: dp-sale-M 440ms cubic-bezier(.2, .8, .3, 1) 1044ms both; }
.lb-play .dp[data-pezzo="punto-M"] { animation: dp-sale-p 440ms cubic-bezier(.2, .8, .3, 1) 1080ms both; }
.lb-play .dp-falda-sx { animation: dp-falda-sx 440ms cubic-bezier(.3, .8, .25, 1) 960ms both; }
.lb-play .dp-falda-dx { animation: dp-falda-dx 440ms cubic-bezier(.3, .8, .25, 1) 960ms both; }
.lb-play .dp-comignolo { animation: dp-cresce-y 260ms cubic-bezier(.3, .7, .3, 1) 1310ms both; }
.lb-play .dp-gronda-sx,
.lb-play .dp-gronda-dx { animation: dp-cresce-x 240ms cubic-bezier(.3, .7, .3, 1) 1330ms both; }
.lb-play .dp-riga { animation: dp-cresce-x 400ms cubic-bezier(.3, .8, .25, 1) 1100ms both; }
.lb-play .dp-servizi { animation: dp-sale-dic 360ms cubic-bezier(.2, .8, .3, 1) 1190ms both; }
.lb-play .dp-immobiliari { animation: dp-sale-dic 360ms cubic-bezier(.2, .8, .3, 1) 1240ms both; }

/* 5 · le chiavi (percorso, giro, dondolii: gli stessi della 05, generati da pendoli smorzati) */
@keyframes k-in { 0% { transform: translate(70px, -72px); opacity: 0; } 2.632% { transform: translate(65.75px, -57.79px); opacity: 0.229; } 5.263% { transform: translate(61.303px, -45.082px); opacity: 0.417; } 7.895% { transform: translate(56.799px, -34.207px); opacity: 0.574; } 10.526% { transform: translate(52.407px, -25.341px); opacity: 0.704; } 13.158% { transform: translate(48.288px, -18.434px); opacity: 0.809; } 15.789% { transform: translate(44.548px, -13.246px); opacity: 0.891; } 18.421% { transform: translate(41.232px, -9.444px); opacity: 0.95; } 21.053% { transform: translate(38.336px, -6.698px); opacity: 0.986; } 23.684% { transform: translate(35.827px, -4.729px); opacity: 1; } 26.316% { transform: translate(33.661px, -3.323px); opacity: 1; } 28.947% { transform: translate(31.795px, -2.32px); opacity: 1; } 31.579% { transform: translate(30.187px, -1.607px); opacity: 1; } 34.211% { transform: translate(28.803px, -1.101px); opacity: 1; } 36.842% { transform: translate(27.611px, -0.744px); opacity: 1; } 39.474% { transform: translate(26.586px, -0.495px); opacity: 1; } 42.105% { transform: translate(25.707px, -0.322px); opacity: 1; } 44.737% { transform: translate(24.956px, -0.204px); opacity: 1; } 47.368% { transform: translate(24.318px, -0.125px); opacity: 1; } 50% { transform: translate(23.779px, -0.073px); opacity: 1; } 52.632% { transform: translate(23.328px, -0.041px); opacity: 1; } 55.263% { transform: translate(22.957px, -0.021px); opacity: 1; } 57.895% { transform: translate(22.657px, -0.01px); opacity: 1; } 60.526% { transform: translate(22.42px, -0.004px); opacity: 1; } 63.158% { transform: translate(22.242px, -0.001px); opacity: 1; } 65.789% { transform: translate(22.116px, 0px); opacity: 1; } 68.421% { transform: translate(22.037px, 0px); opacity: 1; } 71.053% { transform: translate(22.003px, 0px); opacity: 1; } 73.684% { transform: translate(21.884px, 0px); opacity: 1; } 76.316% { transform: translate(21.104px, 0px); opacity: 1; } 78.947% { transform: translate(19.197px, 0px); opacity: 1; } 81.579% { transform: translate(15.518px, 0px); opacity: 1; } 84.211% { transform: translate(10.396px, 0px); opacity: 1; } 86.842% { transform: translate(6.089px, 0px); opacity: 1; } 89.474% { transform: translate(3.314px, 0px); opacity: 1; } 92.105% { transform: translate(1.623px, 0px); opacity: 1; } 94.737% { transform: translate(0.641px, 0px); opacity: 1; } 97.368% { transform: translate(0.145px, 0px); opacity: 1; } 100% { transform: translate(0px, 0px); opacity: 1; } }
@keyframes k-turn { 0% { transform: rotate(0deg); animation-timing-function: cubic-bezier(.5, 0, .25, 1); } 72% { transform: rotate(95deg); animation-timing-function: cubic-bezier(.4, 0, .5, 1); } 100% { transform: rotate(90deg); } }
@keyframes k-hang { 0% { transform: rotate(0deg); animation-timing-function: cubic-bezier(.5, 0, .25, 1); } 72% { transform: rotate(-95deg); animation-timing-function: cubic-bezier(.4, 0, .5, 1); } 100% { transform: rotate(-90deg); } }
@keyframes k-swing { 0% { transform: rotate(0deg); } 0.992% { transform: rotate(-0.146deg); } 1.983% { transform: rotate(-0.451deg); } 2.975% { transform: rotate(-0.681deg); } 3.967% { transform: rotate(-0.606deg); } 4.959% { transform: rotate(-0.1deg); } 5.95% { transform: rotate(0.831deg); } 6.942% { transform: rotate(2.089deg); } 7.934% { transform: rotate(3.543deg); } 8.926% { transform: rotate(5.066deg); } 9.917% { transform: rotate(6.545deg); } 10.909% { transform: rotate(7.89deg); } 11.901% { transform: rotate(9.034deg); } 12.893% { transform: rotate(9.929deg); } 13.884% { transform: rotate(10.543deg); } 14.876% { transform: rotate(10.865deg); } 15.868% { transform: rotate(10.893deg); } 16.86% { transform: rotate(10.641deg); } 17.851% { transform: rotate(10.131deg); } 18.843% { transform: rotate(9.393deg); } 19.835% { transform: rotate(8.466deg); } 20.826% { transform: rotate(7.389deg); } 21.818% { transform: rotate(6.206deg); } 22.81% { transform: rotate(4.945deg); } 23.802% { transform: rotate(3.137deg); } 24.793% { transform: rotate(0.235deg); } 25.785% { transform: rotate(-4.347deg); } 26.777% { transform: rotate(-9.39deg); } 27.769% { transform: rotate(-12.259deg); } 28.76% { transform: rotate(-13.115deg); } 29.752% { transform: rotate(-12.642deg); } 30.744% { transform: rotate(-11.27deg); } 31.736% { transform: rotate(-9.3deg); } 32.727% { transform: rotate(-7.126deg); } 33.719% { transform: rotate(-4.898deg); } 34.711% { transform: rotate(-2.714deg); } 35.702% { transform: rotate(-0.697deg); } 36.694% { transform: rotate(0.902deg); } 37.686% { transform: rotate(1.306deg); } 38.678% { transform: rotate(-0.577deg); } 39.669% { transform: rotate(-2.98deg); } 40.661% { transform: rotate(-3.925deg); } 41.653% { transform: rotate(-3.523deg); } 42.645% { transform: rotate(-2.246deg); } 43.636% { transform: rotate(-0.457deg); } 44.628% { transform: rotate(1.585deg); } 45.62% { transform: rotate(3.693deg); } 46.612% { transform: rotate(5.762deg); } 47.603% { transform: rotate(7.781deg); } 48.595% { transform: rotate(9.446deg); } 49.587% { transform: rotate(10.423deg); } 50.579% { transform: rotate(10.735deg); } 51.57% { transform: rotate(10.596deg); } 52.562% { transform: rotate(10.111deg); } 53.554% { transform: rotate(9.328deg); } 54.545% { transform: rotate(8.298deg); } 55.537% { transform: rotate(7.076deg); } 56.529% { transform: rotate(5.721deg); } 57.521% { transform: rotate(4.29deg); } 58.512% { transform: rotate(2.837deg); } 59.504% { transform: rotate(1.414deg); } 60.496% { transform: rotate(0.066deg); } 61.488% { transform: rotate(-1.167deg); } 62.479% { transform: rotate(-2.254deg); } 63.471% { transform: rotate(-3.171deg); } 64.463% { transform: rotate(-3.9deg); } 65.455% { transform: rotate(-4.435deg); } 66.446% { transform: rotate(-4.773deg); } 67.438% { transform: rotate(-4.92deg); } 68.43% { transform: rotate(-4.887deg); } 69.421% { transform: rotate(-4.692deg); } 70.413% { transform: rotate(-4.355deg); } 71.405% { transform: rotate(-3.9deg); } 72.397% { transform: rotate(-3.352deg); } 73.388% { transform: rotate(-2.738deg); } 74.38% { transform: rotate(-2.084deg); } 75.372% { transform: rotate(-1.416deg); } 76.364% { transform: rotate(-0.758deg); } 77.355% { transform: rotate(-0.132deg); } 78.347% { transform: rotate(0.445deg); } 79.339% { transform: rotate(0.954deg); } 80.331% { transform: rotate(1.368deg); } 81.322% { transform: rotate(1.67deg); } 82.314% { transform: rotate(1.852deg); } 83.306% { transform: rotate(1.917deg); } 84.298% { transform: rotate(1.876deg); } 85.289% { transform: rotate(1.745deg); } 86.281% { transform: rotate(1.547deg); } 87.273% { transform: rotate(1.306deg); } 88.264% { transform: rotate(1.047deg); } 89.256% { transform: rotate(0.792deg); } 90.248% { transform: rotate(0.559deg); } 91.24% { transform: rotate(0.36deg); } 92.231% { transform: rotate(0.203deg); } 93.223% { transform: rotate(0.09deg); } 94.215% { transform: rotate(0.018deg); } 95.207% { transform: rotate(-0.019deg); } 96.198% { transform: rotate(-0.03deg); } 97.19% { transform: rotate(-0.025deg); } 98.182% { transform: rotate(-0.014deg); } 99.174% { transform: rotate(-0.003deg); } 100% { transform: rotate(0deg); } }
@keyframes k-fob { 0% { transform: rotate(0deg); } 0.992% { transform: rotate(0.015deg); } 1.983% { transform: rotate(0.031deg); } 2.975% { transform: rotate(0.036deg); } 3.967% { transform: rotate(0.024deg); } 4.959% { transform: rotate(-0.007deg); } 5.95% { transform: rotate(-0.052deg); } 6.942% { transform: rotate(-0.109deg); } 7.934% { transform: rotate(-0.178deg); } 8.926% { transform: rotate(-0.262deg); } 9.917% { transform: rotate(-0.364deg); } 10.909% { transform: rotate(-0.488deg); } 11.901% { transform: rotate(-0.636deg); } 12.893% { transform: rotate(-0.809deg); } 13.884% { transform: rotate(-1.003deg); } 14.876% { transform: rotate(-1.214deg); } 15.868% { transform: rotate(-1.435deg); } 16.86% { transform: rotate(-1.657deg); } 17.851% { transform: rotate(-1.868deg); } 18.843% { transform: rotate(-2.059deg); } 19.835% { transform: rotate(-2.217deg); } 20.826% { transform: rotate(-2.332deg); } 21.818% { transform: rotate(-2.395deg); } 22.81% { transform: rotate(-2.396deg); } 23.802% { transform: rotate(-2.291deg); } 24.793% { transform: rotate(-2.058deg); } 25.785% { transform: rotate(-1.674deg); } 26.777% { transform: rotate(-1.286deg); } 27.769% { transform: rotate(-0.961deg); } 28.76% { transform: rotate(-0.609deg); } 29.752% { transform: rotate(-0.196deg); } 30.744% { transform: rotate(0.273deg); } 31.736% { transform: rotate(0.775deg); } 32.727% { transform: rotate(1.283deg); } 33.719% { transform: rotate(1.753deg); } 34.711% { transform: rotate(2.157deg); } 35.702% { transform: rotate(2.492deg); } 36.694% { transform: rotate(2.776deg); } 37.686% { transform: rotate(3.082deg); } 38.678% { transform: rotate(3.369deg); } 39.669% { transform: rotate(3.286deg); } 40.661% { transform: rotate(2.866deg); } 41.653% { transform: rotate(2.283deg); } 42.645% { transform: rotate(1.635deg); } 43.636% { transform: rotate(0.974deg); } 44.628% { transform: rotate(0.327deg); } 45.62% { transform: rotate(-0.284deg); } 46.612% { transform: rotate(-0.853deg); } 47.603% { transform: rotate(-1.372deg); } 48.595% { transform: rotate(-1.817deg); } 49.587% { transform: rotate(-2.18deg); } 50.579% { transform: rotate(-2.47deg); } 51.57% { transform: rotate(-2.699deg); } 52.562% { transform: rotate(-2.863deg); } 53.554% { transform: rotate(-2.958deg); } 54.545% { transform: rotate(-2.984deg); } 55.537% { transform: rotate(-2.939deg); } 56.529% { transform: rotate(-2.825deg); } 57.521% { transform: rotate(-2.644deg); } 58.512% { transform: rotate(-2.401deg); } 59.504% { transform: rotate(-2.101deg); } 60.496% { transform: rotate(-1.753deg); } 61.488% { transform: rotate(-1.366deg); } 62.479% { transform: rotate(-0.952deg); } 63.471% { transform: rotate(-0.524deg); } 64.463% { transform: rotate(-0.094deg); } 65.455% { transform: rotate(0.325deg); } 66.446% { transform: rotate(0.719deg); } 67.438% { transform: rotate(1.077deg); } 68.43% { transform: rotate(1.387deg); } 69.421% { transform: rotate(1.64deg); } 70.413% { transform: rotate(1.829deg); } 71.405% { transform: rotate(1.949deg); } 72.397% { transform: rotate(1.998deg); } 73.388% { transform: rotate(1.977deg); } 74.38% { transform: rotate(1.889deg); } 75.372% { transform: rotate(1.74deg); } 76.364% { transform: rotate(1.536deg); } 77.355% { transform: rotate(1.288deg); } 78.347% { transform: rotate(1.008deg); } 79.339% { transform: rotate(0.703deg); } 80.331% { transform: rotate(0.387deg); } 81.322% { transform: rotate(0.082deg); } 82.314% { transform: rotate(-0.193deg); } 83.306% { transform: rotate(-0.423deg); } 84.298% { transform: rotate(-0.596deg); } 85.289% { transform: rotate(-0.707deg); } 86.281% { transform: rotate(-0.758deg); } 87.273% { transform: rotate(-0.752deg); } 88.264% { transform: rotate(-0.701deg); } 89.256% { transform: rotate(-0.615deg); } 90.248% { transform: rotate(-0.51deg); } 91.24% { transform: rotate(-0.397deg); } 92.231% { transform: rotate(-0.288deg); } 93.223% { transform: rotate(-0.192deg); } 94.215% { transform: rotate(-0.115deg); } 95.207% { transform: rotate(-0.059deg); } 96.198% { transform: rotate(-0.024deg); } 97.19% { transform: rotate(-0.005deg); } 98.182% { transform: rotate(0.001deg); } 99.174% { transform: rotate(0.001deg); } 100% { transform: rotate(0deg); } }
.lb-play .k-swing { animation: k-swing 1210ms linear 1300ms both; }
.lb-play .k-fob { animation: k-fob 1210ms linear 1300ms both; }
.lb-play .k-in { animation: k-in 380ms linear 1300ms both; }
.lb-play .k-turn { animation: k-turn 200ms linear 1710ms both; }
.lb-play .k-hang { animation: k-hang 200ms linear 1710ms both; }

/* ── keyframes ─────────────────────────────────────────── */
@keyframes sp-appear { from { opacity: 0; } to { opacity: 1; } }

@keyframes sp-squeeze {
    0% { transform: scale(.5); opacity: 0; animation-timing-function: cubic-bezier(.2, .7, .3, 1); }
    26% { transform: scale(1.02); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); }
    37% { transform: scale(1); opacity: 1; animation-timing-function: cubic-bezier(.5, 0, .3, 1); }
    54% { transform: scale(.9, 1.06); opacity: 1; animation-timing-function: linear; }
    58% { transform: scale(.9, 1.06); opacity: 1; animation-timing-function: cubic-bezier(.15, .85, .3, 1); }
    67% { transform: scale(1.04, .975); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); }
    81% { transform: scale(1, 1.01); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); }
    100% { transform: none; opacity: 1; }
}
@keyframes sp-juice {
    0% { transform: translateX(-160px); opacity: 0; animation-timing-function: step-end; }
    1% { transform: translateX(-160px); opacity: 1; animation-timing-function: cubic-bezier(.16, .84, .3, 1); }
    100% { transform: none; opacity: 1; }
}
@keyframes sp-pop {
    0% { transform: translateY(80px) scale(.72); opacity: 0; animation-timing-function: cubic-bezier(.25, .8, .4, 1); }
    30% { opacity: 1; }
    62% { transform: translateY(-12px) scale(1.03); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); }
    100% { transform: none; opacity: 1; }
}
@keyframes sp-dot {
    from { transform: scale(0); opacity: 0; }
    30% { opacity: 1; }
    to { transform: none; opacity: 1; }
}
@keyframes sp-surface {
    from { transform: translateY(60px); opacity: 0; }
    to { transform: none; opacity: 1; }
}
@keyframes sp-x-in {
    0% { opacity: 0; transform: rotate(-30deg) scale(.8); }
    30% { opacity: 1; }
    100% { opacity: 1; transform: none; }
}
@keyframes sp-stroke { from { transform: translateX(-101%); } to { transform: none; } }

/* il logo D.R.M.: 56 px del logo = 23,2 % della D, 19,9 % della R, 52 % della croce, 20,5 % della M,
   ~120 % dei punti */
@keyframes dp-sale-D { from { transform: translateY(23.2%); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-sale-R { from { transform: translateY(19.9%); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-sale-croce { from { transform: translateY(52%); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-sale-M { from { transform: translateY(20.5%); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-sale-p { from { transform: translateY(120%); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-falda-sx { from { transform: rotate(27.5deg); opacity: 0; } 22% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-falda-dx { from { transform: rotate(-32.5deg); opacity: 0; } 22% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes dp-cresce-y { from { transform: scaleY(0); } to { transform: none; } }
@keyframes dp-cresce-x { from { transform: scaleX(0); } to { transform: none; } }
@keyframes dp-sale-dic { from { transform: translateY(60%); opacity: 0; } 40% { opacity: 1; } to { transform: none; opacity: 1; } }

@keyframes d-cresce-x { from { transform: scaleX(0); } to { transform: none; } }
@keyframes d-cresce-y { from { transform: scaleY(0); } to { transform: none; } }

/* ══ MOVIMENTO RIDOTTO: dissolvenza, pausa, dissolvenza (porta chiusa, chiavi nella toppa) ══ */
.lb-reduced * { animation: none !important; }
.lb-reduced.lb-play .sp-lockup { animation: sp-appear 300ms ease-out both !important; }

/* i trattini del succo di Lime booking (dalla geometria del logo, come nella demo; px del logo sorgente) */
@keyframes sp-squirt-1 { 0% { transform: translate(-132.4px, 96.0px) scale(.15, .55); opacity: 0; animation-timing-function: cubic-bezier(.12, .8, .3, 1); } 14% { opacity: 1; } 58% { transform: translate(13.2px, -9.6px) scale(1.12, .88); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); } 100% { transform: none; opacity: 1; } }
@keyframes sp-squirt-2 { 0% { transform: translate(-211.4px, 46.5px) scale(.15, .55); opacity: 0; animation-timing-function: cubic-bezier(.12, .8, .3, 1); } 14% { opacity: 1; } 58% { transform: translate(21.1px, -4.7px) scale(1.12, .88); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); } 100% { transform: none; opacity: 1; } }
@keyframes sp-squirt-3 { 0% { transform: translate(-168.9px, -30.0px) scale(.15, .55); opacity: 0; animation-timing-function: cubic-bezier(.12, .8, .3, 1); } 14% { opacity: 1; } 58% { transform: translate(16.9px, 3.0px) scale(1.12, .88); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); } 100% { transform: none; opacity: 1; } }
@keyframes sp-squirt-4 { 0% { transform: translate(-136.9px, -111.0px) scale(.15, .55); opacity: 0; animation-timing-function: cubic-bezier(.12, .8, .3, 1); } 14% { opacity: 1; } 58% { transform: translate(13.7px, 11.1px) scale(1.12, .88); opacity: 1; animation-timing-function: cubic-bezier(.45, 0, .55, 1); } 100% { transform: none; opacity: 1; } }
.lb-play .sp-lime [data-part="dash-1"] { animation: sp-squirt-1 350ms linear 346ms both; }
.lb-play .sp-lime [data-part="dash-2"] { animation: sp-squirt-2 350ms linear 368ms both; }
.lb-play .sp-lime [data-part="dash-3"] { animation: sp-squirt-3 350ms linear 388ms both; }
.lb-play .sp-lime [data-part="dash-4"] { animation: sp-squirt-4 350ms linear 410ms both; }

/* senza Web Animations (niente porta che si apre) e con il movimento ridotto: dissolvenza */
.lb-exit:not(.lb-portal) { animation: lb-x-fade 400ms ease-in-out 80ms forwards; }
.lb-reduced.lb-exit { animation: lb-x-fade 340ms ease-in-out forwards; }
@keyframes lb-x-fade { to { opacity: 0; } }

