/*
 * Il vestito delle pagine pubbliche.
 *
 * Chi le legge è in piedi, con una mano sola, su una connessione da sala
 * ristorante. Perciò: un font di sistema (nessun caricamento), tocchi da 44px
 * (la misura sotto la quale si sbaglia bersaglio), e il colore del locale che
 * entra da UNA variabile — il resto lo eredita.
 *
 * `prefers-color-scheme` è rispettato invece di imporre un tema: questa non è
 * un'app in cui si vive, è una pagina che si apre per trenta secondi, e
 * combattere con le impostazioni del telefono di chi la apre è una battaglia
 * che non serve a niente.
 */
.ul-pub{
	--ul-ink:#241f21; --ul-sfondo:#fff; --ul-tenue:#6b6468;
	--ul-bordo:rgba(36,31,33,.14); --ul-accento:#F21F4A; --ul-ok:#1e7a45; --ul-ko:#b32d2e;
	/* Il raggio degli angoli è una variabile e non venti numeri sparsi: chi
	   vuole una pagina spigolosa o una tutta tonda cambia questo, e la pagina
	   resta coerente. Chi non tocca niente vede quello che vedeva prima. */
	--ul-raggio:14px;
	font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
	color:var(--ul-ink); max-width:640px; margin:0 auto; padding:16px;
}
@media (prefers-color-scheme: dark){
	.ul-pub{ --ul-ink:#f2f0f1; --ul-sfondo:#15141a; --ul-tenue:#a29ba0;
		--ul-bordo:rgba(255,255,255,.16); --ul-ok:#6fd39b; --ul-ko:#ff8a95; }
}
.ul-box{ background:var(--ul-sfondo); border:1px solid var(--ul-bordo); border-radius:var(--ul-raggio); padding:18px; }
.ul-pub h2{ margin:0 0 4px; font-size:22px; line-height:1.25; }
.ul-pub h3.ul-cat{ margin:18px 0 6px; font-size:15px; text-transform:uppercase; letter-spacing:.04em; color:var(--ul-tenue); }
.ul-muted{ color:var(--ul-tenue); font-size:14px; }

.ul-campo{ display:block; margin:12px 0; font-size:14px; color:var(--ul-tenue); }
.ul-campo input,.ul-campo select,.ul-campo textarea{
	display:block; width:100%; box-sizing:border-box; margin-top:4px; padding:11px 12px;
	font:inherit; color:var(--ul-ink); background:transparent;
	border:1px solid var(--ul-bordo); border-radius:calc(var(--ul-raggio) - 4px); min-height:44px;
}
.ul-campo input:focus,.ul-campo select:focus,.ul-campo textarea:focus{
	outline:2px solid var(--ul-accento); outline-offset:1px; border-color:transparent;
}

/* Gli orari: bersagli grossi, perché si toccano col pollice camminando. */
.ul-slot{ display:flex; flex-wrap:wrap; gap:8px; margin:14px 0; }
.ul-ora{
	min-width:74px; min-height:44px; padding:10px 14px; font:inherit; font-variant-numeric:tabular-nums;
	color:var(--ul-ink); background:transparent; border:1px solid var(--ul-bordo);
	border-radius:10px; cursor:pointer;
}
.ul-ora:hover{ border-color:var(--ul-accento); }
.ul-ora.ul-sel{ background:var(--ul-accento); border-color:var(--ul-accento); color:#fff; font-weight:600; }
/* Un orario pieno resta VISIBILE e barrato: toglierlo farebbe credere che il
   locale non apra a quell'ora, che è un'altra informazione. */
.ul-ora.ul-pieno{ opacity:.42; text-decoration:line-through; cursor:not-allowed; }

.ul-btn{
	display:inline-block; min-height:44px; padding:12px 18px; margin-top:10px;
	font:inherit; font-weight:600; color:#fff; background:var(--ul-accento);
	border:0; border-radius:10px; cursor:pointer;
}
.ul-btn:disabled{ opacity:.55; cursor:wait; }
.ul-consenso{ display:flex; gap:9px; align-items:flex-start; margin:14px 0; font-size:13.5px; color:var(--ul-tenue); }
.ul-consenso input{ margin-top:3px; width:20px; height:20px; flex:0 0 auto; }
.ul-esito{ margin:10px 0 0; font-size:14.5px; min-height:1.4em; }
.ul-esito.ul-ok{ color:var(--ul-ok); }
.ul-esito.ul-ko{ color:var(--ul-ko); }
.ul-avviso{ margin:10px 0; padding:10px 12px; border-left:3px solid var(--ul-accento);
	background:color-mix(in srgb, var(--ul-accento) 8%, transparent); font-size:14px; border-radius:0 8px 8px 0; }

.ul-voci{ list-style:none; margin:0; padding:0; }
.ul-voce{ padding:11px 0; border-bottom:1px solid var(--ul-bordo); }
.ul-voce-t{ display:flex; justify-content:space-between; gap:10px; align-items:baseline; }
.ul-voce.ul-finito{ opacity:.55; }
.ul-tag{ font-size:12px; padding:2px 8px; border:1px solid var(--ul-bordo); border-radius:99px; color:var(--ul-tenue); white-space:nowrap; }
.ul-attr{ margin:5px 0 0; font-size:12.5px; color:var(--ul-tenue); }
.ul-attr span{ margin-right:10px; }
.ul-prezzo{ margin-top:4px; font-weight:600; font-variant-numeric:tabular-nums; }

.ul-tessera .ul-nome{ font-size:17px; margin:4px 0 10px; }
.ul-saldo{ font-size:34px; line-height:1.1; margin:8px 0 2px; font-variant-numeric:tabular-nums; }
.ul-saldo strong{ color:var(--ul-accento); }
.ul-qr{ margin:18px 0 6px; padding:18px; text-align:center; border:1px dashed var(--ul-bordo); border-radius:12px; }
.ul-qr code{ font-size:22px; letter-spacing:.16em; font-weight:600; }

@media print{
	/* La tessera si stampa: succede, e stampare i bottoni è uno spreco di
	   inchiostro su una cosa che nessuno può premere. */
	.ul-btn,.ul-slot,.ul-consenso{ display:none !important; }
	.ul-pub{ max-width:none; }
}

/* La galleria: scorre in orizzontale, non impila.
   Chi guarda è in piedi con una mano sola, e una colonna di dodici immagini
   spinge il prezzo fuori dallo schermo. */
.ul-foto{ display:flex; gap:8px; overflow-x:auto; margin:10px 0; padding-bottom:4px;
	scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; }
.ul-foto-i{ flex:0 0 auto; width:min(78vw,260px); height:170px; object-fit:cover;
	border-radius:10px; scroll-snap-align:start; background:#f2f2f2; }
.ul-foto::-webkit-scrollbar{ height:6px; }
.ul-foto::-webkit-scrollbar-thumb{ background:#d8d8d8; border-radius:3px; }

/* Il QR: quadrato, centrato, e non più largo di quanto serva a inquadrarlo.
   Un codice che occupa tutto lo schermo di un telefono costringe ad
   allontanarlo per metterlo a fuoco. */
.ul-qr{ max-width:220px; margin:14px auto 6px; text-align:center; }
.ul-qr svg{ display:block; width:100%; height:auto; }
.ul-qr code{ font-size:15px; letter-spacing:2px; }

/* Il percorso: la barra dice a colpo d'occhio quanto manca, che è il numero
   che fa tornare la gente. */
.ul-barra{ height:8px; background:#eee; border-radius:4px; overflow:hidden; margin:8px 0 4px; }
.ul-barra span{ display:block; height:100%; background:var(--ul-colore,#241f21); transition:width .3s; }
.ul-tappe{ list-style:none; padding:0; margin:10px 0; }
.ul-tappa{ padding:10px 0; border-bottom:1px solid #eee; }
.ul-tappa label{ display:flex; gap:10px; align-items:flex-start; cursor:pointer; }
.ul-tappa input{ width:20px; height:20px; flex:0 0 auto; margin-top:2px; }
.ul-fatta-si strong{ text-decoration:line-through; opacity:.6; }
.ul-tappa-img{ max-width:100%; border-radius:8px; margin-top:8px; }

/* Le stelle: grandi, perché si toccano col pollice. */
.ul-stelle{ display:flex; gap:6px; justify-content:center; margin:12px 0; }
.ul-stella{ font-size:38px; line-height:1; background:none; border:0; padding:0 2px; cursor:pointer;
	color:#d8d8d8; transition:color .15s; }
.ul-stella.ul-on{ color:#f3b21b; }

/* ── I reparti, dove una struttura fa più mestieri ──────────────────────
   Collegamenti e non un menu a tendina: ogni reparto ha un indirizzo suo, da
   mettere su un QR. Vedi il capitolo in `class-ul-pubblico.php`. */
.ul-reparti { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.ul-reparti .ul-rep {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 7px 14px; border-radius: 999px;
	border: 1px solid currentColor; opacity: .6;
	font-size: 14px; font-weight: 600; text-decoration: none; color: inherit;
}
.ul-reparti .ul-rep:hover { opacity: .85; }
.ul-reparti .ul-rep.attivo {
	background: var(--ul-accento); border-color: var(--ul-accento);
	color: #fff; opacity: 1;
}

/* L'Hub usa la stessa tavolozza del locale, ma una gerarchia propria. Le
   informazioni urgenti stanno prima e gli approfondimenti scorrono in
   orizzontale: sul telefono questo evita una parete di riquadri tutti uguali. */
.ul-hub{ display:grid; gap:28px; padding-bottom:92px; }
.ul-hub-testata{ min-height:min(68dvh,580px); display:flex; flex-direction:column; justify-content:flex-end; padding:clamp(24px,7vw,52px); margin:-16px -16px 0; color:#f8f8f6; background:linear-gradient(150deg,color-mix(in srgb,var(--ul-accento) 88%,#15242a) 0%,rgba(23,35,42,.84) 62%,rgba(23,35,42,.62) 100%),var(--ul-copertina,linear-gradient(150deg,color-mix(in srgb,var(--ul-accento) 88%,#15242a),#17232a)); background-size:cover; background-position:center; border-radius:0 0 34px 34px; }
.ul-hub-marca{ margin:0 0 auto; font-size:13px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.ul-hub-testata h1{ max-width:11ch; margin:36px 0 10px; font-size:clamp(40px,11vw,68px); line-height:.96; letter-spacing:-.055em; }
.ul-hub-testata>p:last-of-type{ max-width:34ch; margin:0; color:rgba(255,255,255,.82); }
.ul-hub-date{ display:flex; gap:28px; margin-top:28px; }
.ul-hub-date span{ font-size:12px; color:rgba(255,255,255,.7); }
.ul-hub-date strong{ display:block; margin-top:2px; font-size:19px; color:#fff; }
.ul-hub-nav{ position:sticky; top:10px; z-index:2; display:flex; gap:4px; overflow:auto; padding:5px; background:color-mix(in srgb,var(--ul-sfondo) 88%,transparent); border:1px solid var(--ul-bordo); border-radius:16px; backdrop-filter:blur(14px); }
.ul-hub-nav a{ flex:1 0 auto; min-height:42px; display:grid; place-items:center; padding:0 14px; border-radius:11px; color:var(--ul-ink); text-decoration:none; font-size:13px; font-weight:650; }
.ul-hub-nav a:active{ transform:translateY(1px); }
.ul-hub-sezione h2{ margin:0 0 16px; font-size:28px; letter-spacing:-.035em; }
.ul-essenziali{ display:grid; grid-template-columns:1.35fr .65fr; gap:10px; }
.ul-essenziali article{ min-height:126px; padding:18px; background:color-mix(in srgb,var(--ul-accento) 8%,var(--ul-sfondo)); border-radius:18px; }
.ul-essenziali article:nth-child(3n+2){ background:color-mix(in srgb,var(--ul-accento) 16%,var(--ul-sfondo)); }
.ul-essenziali span,.ul-storia span,.ul-itinerari span{ color:var(--ul-tenue); font-size:12px; text-transform:uppercase; letter-spacing:.07em; }
.ul-essenziali h3{ margin:20px 0 5px; font-size:18px; overflow-wrap:anywhere; }
.ul-essenziali a,.ul-essenziali button,.ul-storia a,.ul-itinerari a{ color:var(--ul-accento); background:none; border:0; padding:0; font:inherit; font-weight:700; text-decoration:none; cursor:pointer; }
.ul-meteo{ display:grid; grid-template-columns:.65fr 1.35fr; gap:18px; padding:22px; color:#eef4f3; background:#1c3438; border-radius:20px; }
.ul-meteo>div:first-child>span{ display:block; font-size:12px; opacity:.7; }
.ul-meteo>div:first-child>strong{ display:block; font-size:52px; line-height:1; letter-spacing:-.06em; }
.ul-meteo p{ margin:5px 0 0; font-size:12px; opacity:.72; }
.ul-meteo-giorni{ display:flex; gap:10px; overflow:auto; align-items:center; }
.ul-meteo-giorni span{ min-width:52px; text-align:center; }
.ul-meteo-giorni small,.ul-meteo-giorni strong,.ul-meteo-giorni em{ display:block; font-style:normal; }
.ul-meteo-giorni small,.ul-meteo-giorni em{ opacity:.65; }
.ul-storie{ display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding:0 2px 10px; }
.ul-storia{ flex:0 0 min(82vw,390px); overflow:hidden; scroll-snap-align:start; background:var(--ul-sfondo); border:1px solid var(--ul-bordo); border-radius:20px; }
.ul-storia img{ width:100%; height:210px; object-fit:cover; }
.ul-storia .wp-video,.ul-proposte .wp-video{ width:100% !important; }
.ul-storia video,.ul-proposte video{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; }
.ul-storia div{ padding:20px; }
.ul-storia h3{ margin:6px 0; font-size:23px; }
.ul-storia p{ color:var(--ul-tenue); }
.ul-proposte{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.ul-proposte article{ overflow:hidden; background:var(--ul-sfondo); border:1px solid var(--ul-bordo); border-radius:18px; }
.ul-proposte img{ width:100%; aspect-ratio:4/3; object-fit:cover; }
.ul-proposte article>div{ padding:16px; }
.ul-proposte h3{ margin:0 0 6px; font-size:18px; }
.ul-proposte p{ color:var(--ul-tenue); font-size:14px; }
.ul-proposta-prezzo{ display:block; font-size:18px; }
.ul-proposte form{ display:flex; gap:7px; align-items:end; }
.ul-proposte input[type=number]{ width:58px; min-height:44px; padding:8px; color:var(--ul-ink); background:transparent; border:1px solid var(--ul-bordo); border-radius:10px; }
.ul-itinerari{ display:grid; gap:10px; }
.ul-itinerari article{ padding:22px; background:color-mix(in srgb,var(--ul-accento) 7%,var(--ul-sfondo)); border-radius:18px; }
.ul-itinerari h3{ margin:6px 0; font-size:22px; }
.ul-aiuto{ padding:24px; background:color-mix(in srgb,var(--ul-accento) 11%,var(--ul-sfondo)); border-radius:22px; }
.ul-aiuto label{ display:block; margin:12px 0; font-size:14px; font-weight:650; }
.ul-aiuto select,.ul-aiuto textarea{ display:block; width:100%; box-sizing:border-box; margin-top:6px; padding:12px; color:var(--ul-ink); background:var(--ul-sfondo); border:1px solid var(--ul-bordo); border-radius:11px; font:inherit; }
.ul-hub-esito{ position:sticky; top:68px; z-index:3; padding:14px; background:var(--ul-sfondo); border:1px solid currentColor; border-radius:14px; }
.ul-hub-vuoto{ min-height:70dvh; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:24px; }
.ul-hub-vuoto h2{ font-size:38px; letter-spacing:-.045em; }
.ul-hub-vuoto form{ display:grid; gap:10px; width:min(100%,420px); margin-top:18px; }
.ul-hub-vuoto input{ min-height:52px; padding:0 15px; color:var(--ul-ink); background:var(--ul-sfondo); border:1px solid var(--ul-bordo); border-radius:12px; font-family:inherit; font-size:18px; font-weight:700; line-height:1; letter-spacing:.08em; text-transform:uppercase; }
.ul-hub-lucchetto{ display:grid; place-items:center; width:52px; height:52px; color:#fff; background:var(--ul-accento); border-radius:16px; font-size:30px; }
.ul-hub-logo{ display:block; width:auto; max-width:min(220px,48vw); max-height:76px; object-fit:contain; object-position:left center; }

.ul-tv{ position:fixed; inset:0; z-index:999999; box-sizing:border-box; overflow:auto; min-height:100dvh; padding:4vw; color:var(--ul-tv-testo,#fff); background-color:var(--ul-tv-sfondo,#122428); background-image:linear-gradient(120deg,color-mix(in srgb,var(--ul-tv-sfondo,#122428) 94%,transparent),color-mix(in srgb,var(--ul-tv-sfondo,#122428) 72%,transparent)),var(--ul-tv-copertina,none); background-size:cover; background-attachment:fixed; font-size:clamp(18px,1.6vw,30px); }
.ul-tv header{ display:grid; grid-template-columns:1fr auto; align-items:start; min-height:30dvh; }
.ul-tv-marca{ grid-column:1; display:flex; align-items:center; gap:18px; }
.ul-tv header p{ margin:0; font-weight:700; }
.ul-tv .ul-hub-logo{ max-width:180px; max-height:64px; }
.ul-tv h1{ grid-column:1; max-width:12ch; margin:auto 0 0; font-size:clamp(58px,8vw,130px); line-height:.92; letter-spacing:-.06em; }
.ul-tv time{ grid-column:2; grid-row:1/3; font-size:clamp(42px,6vw,92px); letter-spacing:-.06em; }
.ul-tv .ul-hub-sezione{ margin-top:4vw; }
.ul-tv .ul-essenziali{ grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr)); }
.ul-tv .ul-essenziali article{ min-width:0; min-height:11vw; color:#152024; background:#f7f1e9; }
.ul-tv .ul-essenziali h3{ overflow-wrap:normal; word-break:normal; hyphens:none; font-size:clamp(22px,2vw,38px); }
.ul-tv .ul-essenziali span{ color:#5e6064; }
.ul-tv .ul-essenziali a,.ul-tv .ul-essenziali button{ color:#a83f00; }
.ul-tv-storie{ display:grid; grid-template-columns:2fr 1fr 1fr; gap:1vw; }
.ul-tv-storie article{ overflow:hidden; padding:1vw; color:#fff; background:color-mix(in srgb,var(--ul-tv-sfondo,#122428) 70%,#fff 12%); border-radius:18px; }
.ul-tv-storie article:first-child{ grid-row:span 2; }
.ul-tv-storie img{ width:100%; height:12vw; object-fit:cover; border-radius:12px; }
.ul-tv-storie article:first-child img{ height:22vw; }
.ul-tv footer{ margin-top:4vw; opacity:.7; }
.ul-tv-qr{ display:flex; align-items:center; gap:clamp(22px,3vw,56px); opacity:1 !important; }
.ul-qr-involucro{ position:relative; flex:0 0 min(var(--ul-qr-misura,260px),28vw); width:min(var(--ul-qr-misura,260px),28vw); }
.ul-tv .ul-qr{ box-sizing:border-box; width:100%; max-width:none; margin:0; padding:0; overflow:hidden; background:#fff; border:0; border-radius:14px; }
.ul-qr-logo{ position:absolute; left:50%; top:50%; width:20%; aspect-ratio:1; padding:3%; object-fit:contain; background:#fff; border-radius:12px; transform:translate(-50%,-50%); }
.ul-tv-qr>p{ max-width:28ch; font-size:clamp(20px,2vw,36px); }
.ul-tv--essenziale{ background-image:none; }
.ul-tv--fotografico{ background-image:linear-gradient(120deg,color-mix(in srgb,var(--ul-tv-sfondo,#122428) 88%,transparent),color-mix(in srgb,var(--ul-tv-sfondo,#122428) 58%,transparent)),var(--ul-tv-copertina,none); }
.ul-tv-accesso{ position:fixed; inset:0; z-index:999999; display:grid; place-items:center; box-sizing:border-box; min-height:100dvh; padding:24px; color:#f7f8f7; background:#122428; }
.ul-tv-accesso>div{ width:min(100%,520px); }
.ul-tv-accesso span{ display:grid; place-items:center; width:58px; height:58px; background:#f2a65a; border-radius:18px; font-size:34px; }
.ul-tv-accesso h1{ margin:24px 0 8px; font-size:clamp(42px,8vw,72px); line-height:.95; letter-spacing:-.055em; }
.ul-tv-accesso p{ color:rgba(255,255,255,.72); }
.ul-tv-accesso form{ display:grid; gap:10px; margin-top:28px; }
.ul-tv-accesso input{ min-height:56px; padding:0 16px; color:#152024; background:#fff; border:0; border-radius:13px; font-family:inherit; font-size:18px; font-weight:700; line-height:1.2; letter-spacing:.08em; text-transform:uppercase; }

@media(max-width:560px){
	.ul-essenziali,.ul-proposte{ grid-template-columns:1fr; }
	.ul-essenziali article{ min-height:104px; }
	.ul-meteo{ grid-template-columns:1fr; }
}
@media(prefers-reduced-motion:no-preference){
	.ul-hub>section{ animation:ul-hub-entra .45s both; animation-timeline:view(); animation-range:entry 0 entry 22%; }
	@keyframes ul-hub-entra{ from{ opacity:0; transform:translateY(16px) } to{ opacity:1; transform:none } }
}
@media(prefers-reduced-transparency:reduce){ .ul-hub-nav{ background:var(--ul-sfondo); backdrop-filter:none; } }

/* ── Il portale pubblico ─────────────────────────────────────────────────
 * Esce dalla colonna stretta dello shortcode perché è una pagina completa,
 * ma non tocca il tema attorno: intestazioni e altri blocchi WordPress
 * restano proprietari del sito che ospita il plugin. */
.ul-sito{
	position:fixed; inset:0; z-index:999999; width:100vw; min-height:100dvh; overflow-x:hidden; overflow-y:auto;
	color:var(--ul-sito-testo); background:var(--ul-sito-fondo);
	font-family:"Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
}
html.ul-portale-pagina,html.ul-portale-pagina body{ overflow:hidden !important; }
.ul-sito-frammento{position:relative;inset:auto;z-index:auto;width:100%;min-height:0;overflow:visible}.ul-sito-ricerca-autonoma{position:relative;min-height:150px;padding:30px;background:var(--ul-sito-testata)}.ul-sito-ricerca-autonoma .ul-sito-prenota{top:50%;bottom:auto;transform:translate(-50%,-50%)}
.ul-sito-elenco--2 .ul-sito-catalogo,.ul-sito-elenco--2 .ul-sito-servizi{grid-template-columns:repeat(2,minmax(0,1fr))}.ul-sito-elenco--3 .ul-sito-catalogo,.ul-sito-elenco--3 .ul-sito-servizi{grid-template-columns:repeat(3,minmax(0,1fr))}.ul-sito-elenco--4 .ul-sito-catalogo,.ul-sito-elenco--4 .ul-sito-servizi{grid-template-columns:repeat(4,minmax(0,1fr))}.ul-sito-formato--quadrato .ul-sito-scheda>img,.ul-sito-formato--quadrato .ul-sito-servizi article>img{aspect-ratio:1}.ul-sito-formato--verticale .ul-sito-scheda>img,.ul-sito-formato--verticale .ul-sito-servizi article>img{aspect-ratio:3/4}.ul-sito-formato--panoramico .ul-sito-scheda>img,.ul-sito-formato--panoramico .ul-sito-servizi article>img{aspect-ratio:16/10;object-fit:cover}@media(max-width:900px){.ul-sito-elenco--3 .ul-sito-catalogo,.ul-sito-elenco--3 .ul-sito-servizi,.ul-sito-elenco--4 .ul-sito-catalogo,.ul-sito-elenco--4 .ul-sito-servizi{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.ul-sito-elenco--2 .ul-sito-catalogo,.ul-sito-elenco--2 .ul-sito-servizi,.ul-sito-elenco--3 .ul-sito-catalogo,.ul-sito-elenco--3 .ul-sito-servizi,.ul-sito-elenco--4 .ul-sito-catalogo,.ul-sito-elenco--4 .ul-sito-servizi{grid-template-columns:1fr}}
.ul-sito.ul-sito--carica::after{ content:""; position:fixed; z-index:20; inset:0; pointer-events:none; background:var(--ul-sito-fondo); animation:ul-sito-cambio .28s ease both; }
@keyframes ul-sito-cambio{ from{ opacity:0 } 45%{ opacity:.55 } to{ opacity:0 } }
.ul-sito *{ box-sizing:border-box; }
.ul-sito-blocco--compatto>.ul-sito-sezione,.ul-sito-blocco--compatto>.ul-sito-storia{padding-top:60px;padding-bottom:60px}.ul-sito-blocco--compatto .ul-sito-sezione>header{margin-bottom:28px}.ul-sito-blocco--immersivo>.ul-sito-storia,.ul-sito-blocco--immersivo>.ul-sito-sezione{width:min(1540px,calc(100% - 32px))}.ul-sito-blocco--immersivo .ul-sito-storia figure{min-height:680px}.ul-sito-blocco--immersivo .ul-sito-storia figure img{height:680px}
.ul-sito img{ display:block; max-width:100%; }
.ul-sito a{ color:inherit; }
.ul-sito--moto-fluido::before{ content:""; position:fixed; z-index:0; inset:0; pointer-events:none; opacity:calc(var(--ul-sito-luce,.7) * .22); background:radial-gradient(700px circle at var(--ul-luce-x,50vw) var(--ul-luce-y,30vh),color-mix(in srgb,var(--ul-sito-accento) 48%,transparent),transparent 68%); mix-blend-mode:multiply; transition:opacity .25s ease; }
.ul-sito--moto-fluido>*{ position:relative; z-index:1; }
.ul-sito-testata{ min-height:74px; display:flex; align-items:center; gap:clamp(18px,3vw,46px); padding:12px max(24px,calc((100vw - 1400px)/2)); color:#fff; background:var(--ul-sito-testata); }
.ul-sito-marca{ flex:0 0 auto; display:flex; align-items:center; min-width:110px; font-size:26px; font-weight:800; letter-spacing:-.04em; text-decoration:none; }
.ul-sito-logo{ width:auto; max-width:150px; max-height:48px; object-fit:contain; object-position:left center; }
.ul-sito-testata nav{ display:flex; align-items:center; justify-content:center; gap:clamp(18px,2.6vw,38px); margin-left:auto; }
.ul-sito-testata nav a{ position:relative; padding:10px 0; font-size:14px; font-weight:650; text-decoration:none; white-space:nowrap; }
.ul-sito-testata nav a[aria-current=page]::after{ content:""; position:absolute; left:0; right:0; bottom:2px; height:2px; background:var(--ul-sito-accento); }
.ul-sito-cta,.ul-sito-bottone{ display:inline-flex; min-height:48px; align-items:center; justify-content:center; padding:0 22px; color:#fff !important; background:var(--ul-sito-accento); border:0; border-radius:calc(var(--ul-sito-raggio) * .55); font-weight:750; line-height:1.15; text-decoration:none; white-space:nowrap; }
.ul-sito--moto-fluido .ul-sito-cta,.ul-sito--moto-fluido .ul-sito-bottone,.ul-sito--moto-fluido .ul-sito-prenota button{ position:relative; isolation:isolate; overflow:hidden; transition:transform .24s ease,box-shadow .24s ease,filter .24s ease; }
.ul-sito--moto-fluido .ul-sito-cta::before,.ul-sito--moto-fluido .ul-sito-bottone::before,.ul-sito--moto-fluido .ul-sito-prenota button::before{ content:""; position:absolute; z-index:-1; width:180px; height:180px; left:var(--ul-tasto-x,50%); top:var(--ul-tasto-y,50%); opacity:0; border-radius:50%; background:radial-gradient(circle,rgba(255,255,255,.78),rgba(255,255,255,.18) 34%,transparent 68%); transform:translate(-50%,-50%) scale(.35); transition:opacity .25s ease,transform .4s cubic-bezier(.2,.8,.2,1); }
.ul-sito--moto-fluido .ul-sito-cta:hover,.ul-sito--moto-fluido .ul-sito-bottone:hover,.ul-sito--moto-fluido .ul-sito-prenota button:hover{ transform:translateY(-3px); box-shadow:0 14px 38px -12px color-mix(in srgb,var(--ul-sito-accento) 80%,transparent),0 0 28px -8px color-mix(in srgb,var(--ul-sito-accento) 80%,#fff); filter:saturate(1.12) brightness(1.04); }
.ul-sito--moto-fluido .ul-sito-cta:hover::before,.ul-sito--moto-fluido .ul-sito-bottone:hover::before,.ul-sito--moto-fluido .ul-sito-prenota button:hover::before{ opacity:calc(var(--ul-sito-luce,.7) * .72); transform:translate(-50%,-50%) scale(1); }
.ul-sito-menu{ display:none; width:46px; height:46px; padding:11px; background:transparent; border:1px solid rgba(255,255,255,.34); border-radius:10px; }
.ul-sito-menu>span:not(.screen-reader-text){ display:block; width:100%; height:2px; margin:4px 0; background:#fff; }
.ul-sito-hero{ position:relative; display:grid; grid-template-columns:minmax(340px,.86fr) 1.14fr; min-height:min(780px,calc(100dvh - 74px)); color:#fff; background:var(--ul-sito-testata); }
.ul-sito-hero-testo{ display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:clamp(64px,8vw,130px) clamp(30px,6vw,100px) clamp(150px,16vw,220px) max(30px,calc((100vw - 1400px)/2)); background:radial-gradient(circle at 18% 36%,rgba(255,255,255,.06),transparent 38%); }
.ul-sito-sovratitolo{ margin:0 0 20px; color:var(--ul-sito-accento); font-size:12px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.ul-sito-hero h1{ max-width:9ch; margin:0; font-size:clamp(64px,8.4vw,138px); line-height:.84; letter-spacing:-.075em; }
.ul-sito-hero-testo>p:not(.ul-sito-sovratitolo){ max-width:34ch; margin:26px 0; color:rgba(255,255,255,.78); font-size:clamp(18px,1.5vw,24px); }
.ul-sito-hero-media{ min-width:0; overflow:hidden; }
.ul-sito-hero-media img{ width:100%; height:100%; object-fit:cover; }
.ul-sito-media-vuoto{ display:grid; place-items:center; width:100%; min-height:280px; padding:30px; color:color-mix(in srgb,var(--ul-sito-testo) 55%,transparent); background:color-mix(in srgb,var(--ul-sito-testo) 5%,var(--ul-sito-fondo)); text-align:center; }
.ul-sito-hero .ul-sito-media-vuoto{ height:100%; color:rgba(255,255,255,.7); background:color-mix(in srgb,var(--ul-sito-testata) 84%,#fff); }
.ul-sito-prenota{ position:absolute; z-index:2; left:50%; bottom:42px; width:min(1280px,calc(100% - 48px)); display:grid; grid-template-columns:1.15fr .5fr .72fr .5fr auto; align-items:end; gap:0; padding:18px; color:#fff; background:color-mix(in srgb,var(--ul-sito-testata) 88%,transparent); border:1px solid rgba(255,255,255,.18); border-radius:var(--ul-sito-raggio); backdrop-filter:blur(18px); transform:translateX(-50%); }
.ul-sito-prenota label{ padding:0 18px; color:rgba(255,255,255,.66); font-size:12px; }
.ul-sito-prenota input{ display:block; width:100%; min-height:40px; padding:4px 0; color:#fff; background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.25); font:inherit; font-weight:700; }
.ul-sito-prenota label small{display:block;margin-top:3px;color:rgba(255,255,255,.56);font-size:11px}.ul-sito-partenza{display:grid;gap:7px;min-height:54px;padding:0 18px;color:rgba(255,255,255,.66);font-size:12px}.ul-sito-partenza strong{color:#fff;font-size:15px}
.ul-sito-prenota button{ min-height:52px; padding:0 24px; color:#fff; background:var(--ul-sito-accento); border:0; border-radius:calc(var(--ul-sito-raggio) * .55); font:inherit; font-weight:800; white-space:nowrap; }
.ul-sito-storia{ width:min(1320px,calc(100% - 48px)); display:grid; grid-template-columns:.82fr 1.18fr; align-items:center; gap:clamp(40px,8vw,130px); margin:0 auto; padding:clamp(90px,12vw,180px) 0; }
.ul-sito-storia>div{ padding-left:clamp(0px,3vw,50px); }
.ul-sito-storia h1,.ul-sito-storia h2,.ul-sito-sezione h1,.ul-sito-sezione h2,.ul-sito-finale h2{ margin:0; font-size:clamp(46px,6vw,92px); line-height:.96; letter-spacing:-.06em; }
.ul-sito-storia>div>p:not(.ul-sito-sovratitolo){ max-width:46ch; margin:26px 0; color:color-mix(in srgb,var(--ul-sito-testo) 70%,transparent); font-size:18px; }
.ul-sito-storia figure{ position:relative; min-height:560px; margin:0; }
.ul-sito-storia figure::before{ content:""; position:absolute; left:-13%; top:14%; width:42%; height:72%; background:var(--ul-sito-accento); opacity:.92; }
.ul-sito-storia figure img,.ul-sito-storia figure .ul-sito-media-vuoto{ position:relative; width:100%; height:560px; object-fit:cover; border-radius:var(--ul-sito-raggio); }
.ul-sito-link{ display:inline-block; color:var(--ul-sito-testo); font-weight:800; text-decoration-color:var(--ul-sito-accento); text-decoration-thickness:3px; text-underline-offset:6px; }
.ul-sito-sezione{ width:min(1400px,calc(100% - 48px)); margin:0 auto; padding:clamp(80px,10vw,150px) 0; }
.ul-sito--catalogo>.ul-sito-sezione,.ul-sito--servizi>.ul-sito-sezione{ min-height:70dvh; }
.ul-sito-sezione>header{ max-width:760px; margin-bottom:52px; }
.ul-sito-sezione>header>p:last-child{ max-width:52ch; margin:24px 0 0; color:color-mix(in srgb,var(--ul-sito-testo) 68%,transparent); font-size:18px; }
.ul-sito-catalogo{ display:grid; grid-template-columns:repeat(12,1fr); gap:18px; }
.ul-sito-scheda{ grid-column:span 3; min-width:0; overflow:hidden; background:color-mix(in srgb,var(--ul-sito-fondo) 92%,#fff); border-radius:var(--ul-sito-raggio); box-shadow:0 24px 70px -56px var(--ul-sito-testo); }
.ul-sito--moto-fluido .ul-sito-scheda,.ul-sito--moto-fluido .ul-sito-servizi article{ position:relative; transform:perspective(900px) rotateX(var(--ul-ruota-x,0deg)) rotateY(var(--ul-ruota-y,0deg)) translateY(var(--ul-solleva,0px)); transform-style:preserve-3d; transition:transform .18s ease-out,box-shadow .3s ease; will-change:transform; }
.ul-sito--moto-fluido .ul-sito-scheda::after,.ul-sito--moto-fluido .ul-sito-servizi article::after{ content:""; position:absolute; inset:0; pointer-events:none; opacity:0; border-radius:inherit; background:radial-gradient(420px circle at var(--ul-carta-x,50%) var(--ul-carta-y,50%),color-mix(in srgb,var(--ul-sito-accento) 25%,#fff),transparent 52%); mix-blend-mode:soft-light; transition:opacity .25s ease; }
.ul-sito--moto-fluido .ul-sito-scheda.ul-sito-carta--attiva,.ul-sito--moto-fluido .ul-sito-servizi article.ul-sito-carta--attiva{ --ul-solleva:-7px; box-shadow:0 34px 70px -34px color-mix(in srgb,var(--ul-sito-testo) 55%,transparent),0 0 36px -24px var(--ul-sito-accento); }
.ul-sito--moto-fluido .ul-sito-scheda.ul-sito-carta--attiva::after,.ul-sito--moto-fluido .ul-sito-servizi article.ul-sito-carta--attiva::after{ opacity:calc(var(--ul-sito-luce,.7) * .72); }
.ul-sito-scheda:nth-child(5n+1),.ul-sito-scheda:nth-child(5n+4){ grid-column:span 6; }
.ul-sito-scheda img,.ul-sito-scheda>.ul-sito-media-vuoto{ width:100%; aspect-ratio:1.18; min-height:0; object-fit:cover; }
.ul-sito-scheda>div{ padding:22px; }
.ul-sito-scheda h3,.ul-sito-servizi h3{ margin:0 0 7px; font-size:22px; letter-spacing:-.035em; }
.ul-sito-scheda p,.ul-sito-servizi p{ display:-webkit-box; overflow:hidden; color:color-mix(in srgb,var(--ul-sito-testo) 65%,transparent); -webkit-line-clamp:3; -webkit-box-orient:vertical; }
.ul-sito-scheda strong{ display:block; margin:14px 0 8px; }
.ul-sito-scheda a{ color:var(--ul-sito-accento); font-weight:800; text-decoration:none; }
.ul-sito-servizi{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.ul-sito-servizi article{ min-width:0; overflow:hidden; background:color-mix(in srgb,var(--ul-sito-fondo) 92%,#fff); border-radius:var(--ul-sito-raggio); }
.ul-sito-servizi article:nth-child(6n+1),.ul-sito-servizi article:nth-child(6n+6){ grid-column:span 2; }
.ul-sito-servizi img,.ul-sito-servizi video{ width:100%; aspect-ratio:1.45; object-fit:cover; }
.ul-sito-servizi article>div{ padding:22px; }
.ul-sito-bottone--bordo{ margin-top:36px; color:var(--ul-sito-testo) !important; background:transparent; border:1px solid var(--ul-sito-testo); }
.ul-sito-vuoto{ padding:40px; border:1px solid color-mix(in srgb,var(--ul-sito-testo) 15%,transparent); border-radius:var(--ul-sito-raggio); }
.ul-sito-finale{ width:min(1400px,calc(100% - 48px)); margin:30px auto; padding:clamp(64px,9vw,130px); color:#fff; background:var(--ul-sito-testata); border-radius:var(--ul-sito-raggio); }
.ul-sito-finale p{ max-width:48ch; margin:22px 0 30px; color:rgba(255,255,255,.72); font-size:18px; }
.ul-sito-piede{ width:min(1400px,calc(100% - 48px)); display:grid; grid-template-columns:1fr auto auto; gap:28px; margin:0 auto; padding:40px 0 56px; border-top:1px solid color-mix(in srgb,var(--ul-sito-testo) 18%,transparent); }

@media(max-width:900px){
	.ul-sito-testata{ padding:12px 20px; }
	.ul-sito-testata nav{ position:absolute; z-index:8; left:16px; right:16px; top:68px; display:none; align-items:stretch; padding:14px; color:#fff; background:var(--ul-sito-testata); border:1px solid rgba(255,255,255,.2); border-radius:14px; }
	.ul-sito-testata nav.ul-sito-nav--aperta{ display:grid; }
	.ul-sito-menu{ display:block; margin-left:auto; }
	.ul-sito-testata>.ul-sito-cta{ display:none; }
	.ul-sito-hero{ grid-template-columns:1fr; min-height:auto; }
	.ul-sito-hero-testo{ min-height:62dvh; padding:70px 24px 150px; }
	.ul-sito-hero h1{ font-size:clamp(58px,18vw,98px); }
	.ul-sito-hero-media{ height:54dvh; }
	.ul-sito-prenota{ bottom:24px; grid-template-columns:1fr 1fr; }
	.ul-sito-partenza{align-self:end}.ul-sito-prenota button{ grid-column:1/-1; margin-top:14px; }
	.ul-sito-storia{ grid-template-columns:1fr; }
	.ul-sito-storia figure{ min-height:380px; }
	.ul-sito-storia figure img,.ul-sito-storia figure .ul-sito-media-vuoto{ height:420px; }
	.ul-sito-scheda,.ul-sito-scheda:nth-child(n){ grid-column:span 6; }
	.ul-sito-servizi{ grid-template-columns:1fr 1fr; }
	.ul-sito-servizi article:nth-child(n){ grid-column:auto; }
}
@media(max-width:560px){
	.ul-sito-hero-media{ height:42dvh; }
	.ul-sito-prenota{ width:calc(100% - 28px); padding:14px; }
	.ul-sito-prenota label{ padding:0 8px; }
	.ul-sito-storia,.ul-sito-sezione,.ul-sito-finale,.ul-sito-piede{ width:calc(100% - 32px); }
	.ul-sito-storia{ padding:78px 0; }
	.ul-sito-storia figure,.ul-sito-storia figure img,.ul-sito-storia figure .ul-sito-media-vuoto{ min-height:0; height:330px; }
	.ul-sito-catalogo{ display:block; }
	.ul-sito-scheda{ margin-bottom:18px; }
	.ul-sito-servizi{ grid-template-columns:1fr; }
	.ul-sito-finale{ padding:54px 24px; }
	.ul-sito-piede{ grid-template-columns:1fr; gap:12px; }
}
@media(prefers-reduced-motion:no-preference){
	.ul-sito--moto-sobrio .ul-sito-rivela,.ul-sito--moto-fluido .ul-sito-rivela{ opacity:0; transform:translateY(22px); transition:opacity .6s ease,transform .6s ease; }
	.ul-sito--moto-fluido .ul-sito-rivela{ transform:translateY(34px); transition-duration:.8s; }
	.ul-sito--moto-fluido .ul-sito-rivela{ transition-delay:var(--ul-ritardo,0ms); }
	.ul-sito .ul-sito-rivela.ul-sito-rivela--visibile{ opacity:1; transform:none; }
	.ul-sito--moto-fluido .ul-sito-hero-media img{ animation:ul-sito-copertina 1.15s cubic-bezier(.2,.7,.2,1) both; }
	@keyframes ul-sito-copertina{ from{ opacity:.35; transform:scale(1.06) } to{ opacity:1; transform:none } }
}
@media(hover:none),(pointer:coarse){ .ul-sito--moto-fluido::before,.ul-sito--moto-fluido .ul-sito-scheda::after,.ul-sito--moto-fluido .ul-sito-servizi article::after{ display:none; } }
@media(prefers-reduced-motion:reduce){ .ul-sito::before{ display:none !important; } .ul-sito *{ scroll-behavior:auto !important; animation:none !important; transition:none !important; transform:none !important; } }
@media(prefers-reduced-transparency:reduce){ .ul-sito-prenota{ background:var(--ul-sito-testata); backdrop-filter:none; } }
