/* ==========================================================================
   Infinity Blocks — stili principali
   Le variabili (--kb-*) arrivano dalle opzioni del Personalizza (inc/dynamic-css.php).
   ========================================================================== */

/* ---------- Reset essenziale ---------- */
*,
*::before,
*::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: 90px;
	background: var(--kb-bg);
}
body {
	margin: 0;
	background: var(--kb-bg);
	color: var(--kb-text);
	font-family: var(--kb-font-body);
	font-size: var(--kb-fs);
	line-height: 1.7;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}
body.kb-lock { overflow: hidden; }
img, video, svg, iframe { max-width: 100%; }
img { height: auto; display: block; }
a { color: var(--kb-accent); text-decoration: none; transition: color .3s, opacity .3s; }
a:hover { opacity: .75; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
::selection { background: var(--kb-accent); color: var(--kb-bg); }
:focus-visible { outline: 1px solid var(--kb-accent); outline-offset: 4px; }

h1, h2, h3, h4, h5, h6 {
	color: var(--kb-heading);
	line-height: 1.15;
	margin: 0 0 .6em;
	font-weight: 600;
}
h1, h2 { font-family: var(--kb-headings); font-weight: 400; }
h3, h4, h5, h6 { font-family: var(--kb-font-body); letter-spacing: .02em; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.kb-skip:focus {
	clip: auto; width: auto; height: auto;
	z-index: 1000; top: 10px; left: 10px;
	padding: 10px 16px; background: var(--kb-accent); color: var(--kb-bg);
}

/* ---------- Contenitori ---------- */
.kb-container {
	width: 100%;
	max-width: calc(var(--kb-container) + 2 * var(--kb-gutter));
	margin: 0 auto;
	padding: 0 var(--kb-gutter);
}
.kb-container--content { max-width: calc(var(--kb-content) + 2 * var(--kb-gutter)); }
:root {
	--kb-gutter: clamp(20px, 5vw, 64px);
	--kb-sec-pad: clamp(80px, 13vw, 180px);
	--kb-ease: cubic-bezier(.22, .61, .21, 1);
	--kb-logo-h: var(--kb-logo-d);
}
@media (max-width: 767px) {
	:root { --kb-logo-h: var(--kb-logo-m); }
}

/* ---------- Preloader ---------- */
.kb-preloader {
	position: fixed; inset: 0; z-index: 9999;
	background: var(--kb-bg);
	display: grid; place-items: center;
	transition: opacity .8s var(--kb-ease), visibility .8s;
}
.kb-preloader__logo { opacity: 0; animation: kb-pl-in .9s var(--kb-ease) .1s forwards; }
.kb-loaded .kb-preloader__logo { animation: kb-pl-out .35s ease forwards; }
.kb-plogo__text { font-family: var(--kb-font-display); font-size: clamp(40px, 8vw, 72px); color: var(--kb-heading); }
.kb-plogo__img { max-height: 90px; width: auto; }
.kb-loaded .kb-preloader { opacity: 0; visibility: hidden; transition-delay: .25s; }
.no-js .kb-preloader { display: none; }
@keyframes kb-pl-in { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
@keyframes kb-pl-out { from { opacity: 1; } to { opacity: 0; transform: scale(1.02); } }

/* ==========================================================================
   Header
   ========================================================================== */
.kb-header {
	position: absolute;
	top: 0; left: 0; right: 0;
	z-index: 100;
	padding: var(--kb-header-pad) 0;
	padding-top: calc(var(--kb-header-pad) + env(safe-area-inset-top, 0px));
	background: rgba(var(--kb-bg-rgb), .96);
	transition: padding .45s var(--kb-ease), background .45s, transform .45s var(--kb-ease), box-shadow .45s;
}
.kb-sticky .kb-header { position: fixed; }
.admin-bar .kb-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .kb-header { top: 46px; } .admin-bar.kb-scrolled .kb-header { top: 0; } }

/* Trasparente sopra l'hero, con sfumatura per leggibilità del menu. */
.kb-header-over .kb-header {
	background: linear-gradient(to bottom, rgba(0,0,0,.55), rgba(0,0,0,0));
}
.kb-shrink.kb-scrolled .kb-header {
	padding-top: calc(max(10px, var(--kb-header-pad) * .4) + env(safe-area-inset-top, 0px));
	padding-bottom: max(10px, calc(var(--kb-header-pad) * .4));
	background: rgba(var(--kb-bg-rgb), .92);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
	box-shadow: 0 1px 0 var(--kb-line);
}
.kb-sticky.kb-scrolled .kb-header { background: rgba(var(--kb-bg-rgb), .92); }
.kb-sticky.kb-hide-header .kb-header { transform: translateY(-110%); }

.kb-header__inner {
	max-width: calc(var(--kb-container) + 2 * var(--kb-gutter));
	margin: 0 auto;
	padding: 0 var(--kb-gutter);
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 28px;
}

/* Logo */
.kb-logo { display: inline-flex; align-items: center; color: var(--kb-heading); line-height: 1; }
.kb-logo:hover { opacity: 1; }
.kb-logo__img {
	height: var(--kb-logo-h);
	width: auto;
	flex: none; /* Safari: un'immagine (soprattutto SVG) in un contenitore flex non deve stringersi a 0 */
	min-width: 1px; object-fit: contain;
	max-width: 70vw;
	transition: height .45s var(--kb-ease);
}
.kb-logo__text {
	font-family: var(--kb-font-display);
	font-size: calc(var(--kb-logo-h) * .82);
	white-space: nowrap;
	transition: font-size .45s var(--kb-ease);
}
.kb-shrink.kb-scrolled .kb-header .kb-logo__img { height: calc(var(--kb-logo-h) * .75); }
.kb-shrink.kb-scrolled .kb-header .kb-logo__text { font-size: calc(var(--kb-logo-h) * .62); }

/* Menu desktop */
.kb-nav { justify-self: end; }
.kb-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 38px; align-items: center; }
.kb-menu li { position: relative; }
.kb-menu a {
	display: inline-block;
	position: relative;
	padding: 8px 0;
	color: var(--kb-accent);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: var(--kb-menu-ls);
	text-shadow: 0 1px 12px rgba(0,0,0,.5);
}
.kb-menu-upper .kb-menu a { text-transform: uppercase; }
.kb-menu > li > a::after {
	content: '';
	position: absolute; left: 0; right: 0; bottom: 2px;
	height: 1px; background: currentColor;
	transform: scaleX(0); transform-origin: right;
	transition: transform .5s var(--kb-ease);
}
.kb-menu > li > a:hover { opacity: 1; }
.kb-menu > li > a:hover::after,
.kb-menu > .current-menu-item > a::after,
.kb-menu > .current-menu-ancestor > a::after { transform: scaleX(1); transform-origin: left; }

/* Sottomenu */
.kb-menu .sub-menu {
	list-style: none; margin: 0; padding: 14px 0;
	position: absolute; top: 100%; left: -22px; min-width: 220px;
	background: rgba(var(--kb-bg-rgb), .96);
	border: 1px solid var(--kb-line);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	opacity: 0; visibility: hidden; transform: translateY(10px);
	transition: opacity .3s, transform .3s var(--kb-ease), visibility .3s;
}
.kb-menu .sub-menu .sub-menu { top: -15px; left: 100%; }
.kb-menu li:hover > .sub-menu,
.kb-menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.kb-menu .sub-menu a { display: block; padding: 8px 22px; font-size: 13px; font-weight: 400; }

/* Strumenti header */
.kb-header__tools { display: flex; align-items: center; gap: 18px; justify-self: end; }
.kb-iconbtn {
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; color: var(--kb-accent);
	transition: opacity .3s, transform .3s;
}
.kb-iconbtn:hover { opacity: .7; }
.kb-iconbtn .kb-icon { width: 22px; height: 22px; }
.kb-icon { width: 1em; height: 1em; flex: none; }

/* Hamburger */
.kb-burger {
	display: none;
	width: 44px; height: 44px;
	flex-direction: column; align-items: flex-end; justify-content: center; gap: 7px;
}
.kb-burger span { display: block; height: 1.5px; background: var(--kb-accent); transition: transform .45s var(--kb-ease), width .45s var(--kb-ease); }
.kb-burger span:first-child { width: 30px; }
.kb-burger span:last-child { width: 20px; }
.kb-burger:hover span:last-child { width: 30px; }
.kb-menu-open .kb-burger span:first-child { transform: translateY(4.25px) rotate(45deg); width: 26px; }
.kb-menu-open .kb-burger span:last-child { transform: translateY(-4.25px) rotate(-45deg); width: 26px; }

/* Layout: logo a destra */
.kb-header--logo-right .kb-header__inner { grid-template-columns: 1fr auto auto; }
.kb-header--logo-right .kb-nav--main { order: 0; justify-self: start; }
.kb-header--logo-right .kb-header__brand { order: 1; }
.kb-header--logo-right .kb-header__tools { order: 2; }

/* Layout: logo al centro con menu diviso */
.kb-header--logo-center .kb-header__inner { grid-template-columns: 1fr auto 1fr; }
.kb-header--logo-center .kb-nav--left { justify-self: start; }
.kb-header--logo-center .kb-header__brand { justify-self: center; }
.kb-header--logo-center .kb-nav--main { justify-self: end; display: flex; }
.kb-header--logo-center .kb-header__inner { position: relative; }
.kb-header--logo-center .kb-header__tools { position: absolute; right: var(--kb-gutter); top: 50%; transform: translateY(-50%); }
.kb-header--logo-center .kb-nav--main { padding-right: 60px; }

/* Layout: impilato */
.kb-header--stacked .kb-header__inner { grid-template-columns: 1fr; justify-items: center; gap: 14px; position: relative; }
.kb-header--stacked .kb-nav--main { justify-self: center; }
.kb-header--stacked .kb-header__tools { position: absolute; right: var(--kb-gutter); top: 0; }

/* Layout: minimal (hamburger sempre) */
.kb-header--minimal .kb-header__inner { grid-template-columns: 1fr auto; }
.kb-header--minimal .kb-burger { display: inline-flex; }

/* Social header */
.kb-header__social { gap: 14px; }
.kb-header__social svg { width: 16px; height: 16px; }

/* ==========================================================================
   Menu mobile / overlay
   ========================================================================== */
.kb-mmenu {
	position: fixed; inset: 0; z-index: 300;
	visibility: hidden; pointer-events: none;
}
.kb-mmenu.is-open { visibility: visible; pointer-events: auto; }
.kb-mmenu__bg {
	position: absolute; inset: 0;
	background: rgba(0,0,0,.6);
	opacity: 0; transition: opacity .5s;
}
.kb-mmenu.is-open .kb-mmenu__bg { opacity: 1; }
.kb-mmenu__panel {
	position: absolute; inset: 0;
	display: flex; flex-direction: column;
	background: var(--kb-bg);
	padding: calc(20px + env(safe-area-inset-top, 0px)) var(--kb-gutter) calc(28px + env(safe-area-inset-bottom, 0px));
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	clip-path: inset(0 0 100% 0);
	transition: clip-path .75s var(--kb-ease);
}
.kb-mmenu.is-open .kb-mmenu__panel { clip-path: inset(0 0 0 0); }
.kb-mmenu--drawer .kb-mmenu__panel {
	left: auto; width: min(420px, 88vw);
	clip-path: none; transform: translateX(100%);
	transition: transform .6s var(--kb-ease);
	border-left: 1px solid var(--kb-line);
}
.kb-mmenu--drawer .kb-mmenu.is-open .kb-mmenu__panel { transform: none; }

.kb-mmenu__top { display: flex; align-items: center; justify-content: space-between; min-height: 56px; }
.kb-mmenu__top .kb-logo__img { height: var(--kb-logo-m); }
.kb-mmenu__top .kb-logo__text { font-size: calc(var(--kb-logo-m) * .82); }
.kb-mmenu__nav { flex: 1; display: flex; align-items: center; padding: 6vh 0; }
.kb-mmenu__list { list-style: none; margin: 0; padding: 0; width: 100%; }
.kb-mmenu__list > li { overflow: hidden; border-bottom: 1px solid var(--kb-line); }
.kb-mmenu__list > li:first-child { border-top: 1px solid var(--kb-line); }
.kb-mmenu__list a {
	display: block;
	padding: .32em 0;
	color: var(--kb-heading);
	font-family: var(--kb-mmenu-font);
	font-size: clamp(34px, 9.5vw, 64px);
	line-height: 1.2;
	transform: translateY(105%);
	transition: transform .8s var(--kb-ease), opacity .3s;
}
.kb-mmenu.is-open .kb-mmenu__list a { transform: none; }
.kb-mmenu__list > li:nth-child(1) a { transition-delay: .15s; }
.kb-mmenu__list > li:nth-child(2) a { transition-delay: .2s; }
.kb-mmenu__list > li:nth-child(3) a { transition-delay: .25s; }
.kb-mmenu__list > li:nth-child(4) a { transition-delay: .3s; }
.kb-mmenu__list > li:nth-child(5) a { transition-delay: .35s; }
.kb-mmenu__list > li:nth-child(6) a { transition-delay: .4s; }
.kb-mmenu__list > li:nth-child(n+7) a { transition-delay: .45s; }
.kb-mmenu__list .sub-menu { list-style: none; margin: 0 0 14px; padding: 0 0 0 4px; display: none; }
.kb-mmenu__list .is-sub-open > .sub-menu { display: block; }
.kb-mmenu__list .sub-menu a {
	font-family: var(--kb-font-body);
	font-size: 15px; letter-spacing: .14em; text-transform: uppercase;
	padding: 10px 0; color: var(--kb-muted); transform: none;
}
.kb-mmenu__list .menu-item-has-children { position: relative; }
.kb-subtoggle {
	position: absolute; right: 0; top: .5em;
	width: 44px; height: 44px; display: grid; place-items: center; color: var(--kb-accent);
	transition: transform .4s var(--kb-ease);
}
.is-sub-open > .kb-subtoggle { transform: rotate(180deg); }
.kb-mmenu__foot { opacity: 0; transition: opacity .6s .5s; }
.kb-mmenu.is-open .kb-mmenu__foot { opacity: 1; }
.kb-mmenu--drawer .kb-mmenu__list a { font-size: clamp(30px, 8vw, 44px); }

/* ---------- Ricerca overlay ---------- */
.kb-search {
	position: fixed; inset: 0; z-index: 310;
	background: rgba(var(--kb-bg-rgb), .97);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	display: grid; place-items: center;
	opacity: 0; visibility: hidden; transition: opacity .4s, visibility .4s;
}
.kb-search.is-open { opacity: 1; visibility: visible; }
.kb-search__close { position: absolute; top: calc(24px + env(safe-area-inset-top, 0px)); right: var(--kb-gutter); }
.kb-search__inner { width: min(860px, 100% - 2 * var(--kb-gutter)); }
.kb-search .kb-searchform__input { font-family: var(--kb-font-display); font-size: clamp(34px, 7vw, 80px); padding: 10px 50px 10px 0; }

.kb-searchform { position: relative; display: flex; align-items: center; border-bottom: 1px solid var(--kb-accent); }
.kb-searchform__input {
	flex: 1; width: 100%;
	background: transparent; border: 0; outline: 0;
	color: var(--kb-heading); font: inherit; font-size: 18px; padding: 12px 44px 12px 0;
	border-radius: 0; -webkit-appearance: none; appearance: none;
}
.kb-searchform__input::placeholder { color: var(--kb-muted); opacity: .6; }
.kb-searchform__btn { position: absolute; right: 0; color: var(--kb-accent); width: 40px; height: 40px; display: grid; place-items: center; }
.kb-searchform__btn .kb-icon { width: 24px; height: 24px; }

/* ==========================================================================
   Parallax (livello immagine riutilizzabile)
   ========================================================================== */
.kb-parallax {
	position: absolute;
	inset: 0;
	overflow: hidden;
	pointer-events: none;
}
.kb-parallax picture,
.kb-parallax__img {
	position: absolute;
	left: 0; width: 100%;
	/* l'immagine è più alta del contenitore per avere margine di movimento */
	top: -15%; height: 130%;
}
.kb-parallax__img {
	object-fit: cover;
	will-change: transform;
	backface-visibility: hidden;
}
.kb-parallax picture .kb-parallax__img { top: 0; height: 100%; }

/* Grana pellicola */
.kb-grain .kb-hero__media::after,
.kb-grain .kb-bg--image::after,
.kb-grain .kb-bg--video::after,
.kb-grain .kb-phero--img::after {
	content: '';
	position: absolute; inset: -50%;
	z-index: 2; pointer-events: none;
	opacity: .09;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.kb-grain-anim .kb-hero__media::after,
.kb-grain-anim .kb-bg--image::after,
.kb-grain-anim .kb-bg--video::after,
.kb-grain-anim .kb-phero--img::after { animation: kb-grain 1.2s steps(6) infinite; }
@keyframes kb-grain {
	0% { transform: translate(0, 0); }
	20% { transform: translate(-4%, 3%); }
	40% { transform: translate(3%, -5%); }
	60% { transform: translate(-6%, -2%); }
	80% { transform: translate(5%, 4%); }
	100% { transform: translate(0, 0); }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.kb-hero {
	position: relative;
	min-height: calc(var(--kb-hero-h) * 1vh);
	min-height: calc(var(--kb-hero-h) * 1svh);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	isolation: isolate;
	background: #000;
	padding: calc(var(--kb-logo-h) + var(--kb-header-pad) * 2 + 20px) var(--kb-gutter) 110px;
}
.kb-hero__media { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.kb-hero__media .kb-parallax__img { transform-origin: 50% 40%; }
.kb-hero__video {
	position: absolute; inset: 0; width: 100%; height: 100%;
	object-fit: cover; opacity: 0; transition: opacity 1.2s;
}
.kb-hero__video.is-playing { opacity: 1; }
.kb-hero__overlay {
	position: absolute; inset: 0; z-index: 1;
	background: rgba(var(--kb-overlay-rgb), var(--kb-hero-overlay));
}
.kb-hero--vignette .kb-hero__overlay {
	background:
		radial-gradient(ellipse 75% 70% at 50% 45%, rgba(var(--kb-overlay-rgb), 0) 0%, rgba(var(--kb-overlay-rgb), .55) 70%, rgba(var(--kb-overlay-rgb), .9) 100%),
		rgba(var(--kb-overlay-rgb), var(--kb-hero-overlay));
}
/* sfumatura inferiore per fondere l'hero nella pagina */
.kb-hero::before {
	content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 30%;
	background: linear-gradient(to bottom, rgba(var(--kb-bg-rgb), 0), var(--kb-bg));
	z-index: 0; pointer-events: none;
}
.kb-hero--color { background: var(--kb-sec-bg); }
.kb-hero--color .kb-hero__overlay { display: none; }
.kb-hero--empty { background: radial-gradient(ellipse at 50% 30%, #1d1d1d 0%, var(--kb-bg) 70%); }

.kb-hero__content {
	position: relative; z-index: 3;
	flex: 1;
	display: flex; flex-direction: column;
	width: 100%;
	max-width: var(--kb-container);
	margin: 0 auto;
	will-change: transform, opacity;
}
.kb-hero--h-left .kb-hero__content { align-items: flex-start; text-align: left; }
.kb-hero--h-center .kb-hero__content { align-items: center; text-align: center; }
.kb-hero--h-right .kb-hero__content { align-items: flex-end; text-align: right; }
.kb-hero--v-top .kb-hero__content { justify-content: flex-start; }
.kb-hero--v-center .kb-hero__content { justify-content: center; }
.kb-hero--v-bottom .kb-hero__content { justify-content: flex-end; }

.kb-hero__title {
	margin: 0;
	font-family: var(--kb-font-display);
	font-weight: 400;
	font-size: var(--kb-hero-fs);
	line-height: .95;
	color: var(--kb-heading);
	text-shadow: 0 4px 40px rgba(0,0,0,.6);
	letter-spacing: -.01em;
}
.kb-hero__title--img img { width: var(--kb-hero-img-w); max-width: 88vw; filter: drop-shadow(0 6px 40px rgba(0,0,0,.6)); }
.kb-hero__sub {
	margin: 1.6em 0 0;
	font-size: 13px; letter-spacing: .5em; text-transform: uppercase;
	color: var(--kb-accent); text-shadow: 0 1px 12px rgba(0,0,0,.8);
}
.kb-hero__sub:empty { display: none; }
.kb-hero__btns { margin-top: 2.6em; }
.js .kb-reveal-on .kb-hero__btns.kb-reveal { transform: none; transition: none; }

.kb-hero__scroll {
	position: absolute; z-index: 3;
	left: 50%; bottom: calc(34px + env(safe-area-inset-bottom, 0px));
	transform: translateX(-50%);
	display: flex; flex-direction: column; align-items: center; gap: 4px;
	color: var(--kb-accent);
	font-size: 13px; font-weight: 600; letter-spacing: .45em; text-transform: uppercase;
	padding-left: .45em;
}
.kb-hero__scroll .kb-icon { width: 18px; height: 18px; animation: kb-bounce 2.2s var(--kb-ease) infinite; }
@keyframes kb-bounce { 0%, 100% { transform: translateY(0); opacity: 1; } 50% { transform: translateY(7px); opacity: .4; } }

/* Ingresso hero al caricamento */
.js .kb-hero__title,
.js .kb-hero__sub,
.js .kb-hero__btns,
.js .kb-hero__scroll span { opacity: 0; }
.js body:not(.kb-loaded) .kb-hero img.kb-parallax__img { opacity: 0; }
.kb-loaded .kb-hero__title { animation: kb-in-title 1.6s var(--kb-ease) .45s both; }
.kb-loaded .kb-hero__sub { animation: kb-in 1.2s var(--kb-ease) 1s both; }
.kb-loaded .kb-hero__btns { animation: kb-in 1.2s var(--kb-ease) 1.2s both; }
.kb-loaded .kb-hero__scroll span { animation: kb-in 1.2s var(--kb-ease) 1.5s both; }
/* solo l'immagine: il video compare da sé quando ha davvero un fotogramma pronto */
.kb-loaded .kb-hero img.kb-parallax__img { animation: kb-in-img 2.4s var(--kb-ease) .15s both; }
@keyframes kb-in-title { from { opacity: 0; filter: blur(12px); transform: scale(1.03); } to { opacity: 1; filter: blur(0); transform: none; } }
@keyframes kb-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes kb-in-img { from { opacity: 0; scale: 1.12; } to { opacity: 1; scale: 1; } }

@media (max-width: 767px) {
	.kb-hero {
		min-height: calc(var(--kb-hero-h-m) * 1vh);
		min-height: calc(var(--kb-hero-h-m) * 1svh);
		padding-bottom: 120px;
	}
	.kb-hero__title { font-size: var(--kb-hero-fs-m); line-height: 1; }
	.kb-hero .kb-parallax__img { object-position: var(--kb-hero-focus-m) 50%; }
	.kb-hero__sub { letter-spacing: .32em; font-size: 11px; }
}

/* ==========================================================================
   Sezioni
   ========================================================================== */
.kb-sec { position: relative; padding: var(--kb-sec-pad) 0; isolation: isolate; color: var(--kb-text); }
.kb-sec--tight { padding: clamp(50px, 8vw, 100px) 0 var(--kb-sec-pad); }
.kb-sec__body { position: relative; z-index: 1; width: 100%; }

/* Spaziatura */
.kb-space--compact { --kb-sec-pad: clamp(50px, 7vw, 90px); }
.kb-space--large { --kb-sec-pad: clamp(120px, 17vw, 240px); }

/* Altezza minima */
.kb-sec--tall {
	min-height: calc(var(--kb-min-h) * 1vh);
	min-height: calc(var(--kb-min-h) * 1svh);
	display: flex; flex-direction: column; justify-content: center;
}

/* Sfondi */
.kb-sec.kb-bg--none:nth-of-type(even) { background: var(--kb-surface); }
.kb-bg--color { background: var(--kb-sec-bg); }
.kb-bg--image, .kb-bg--video { overflow: hidden; background: #000; }
.kb-sec > .kb-parallax { z-index: -2; }
.kb-sec__overlay {
	position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: rgba(var(--kb-overlay-rgb), var(--kb-ov, .5));
}
.kb-bg-fade .kb-sec__overlay {
	background:
		linear-gradient(to bottom, var(--kb-page-bg) 0%, rgba(var(--kb-overlay-rgb), 0) 20%, rgba(var(--kb-overlay-rgb), 0) 80%, var(--kb-page-bg) 100%),
		rgba(var(--kb-overlay-rgb), var(--kb-ov, .5));
}
.kb-bg-fade.kb-bg--color {
	background: linear-gradient(to bottom, var(--kb-page-bg) 0%, var(--kb-sec-bg) 18%, var(--kb-sec-bg) 82%, var(--kb-page-bg) 100%);
}
.kb-bgvideo { opacity: 0; transition: opacity 1.6s ease; }
.kb-bgvideo.is-playing { opacity: 1; }

/* Testi scuri su sfondo chiaro */
.kb-scheme--light {
	--kb-text: #2b2b2b; --kb-heading: #0a0a0a; --kb-muted: #6b6b6b;
	--kb-accent: #0a0a0a; --kb-accent-rgb: 10,10,10;
	--kb-line: rgba(0,0,0,.14);
	--kb-bg: #ffffff; --kb-bg-rgb: 255,255,255; --kb-surface: #efefef;
}
.kb-scheme--light .kb-band__quote p,
.kb-scheme--light .kb-hero__title { text-shadow: none; }

.kb-sec__head { margin-bottom: clamp(40px, 6vw, 80px); }
.kb-head--center .kb-sec__head { text-align: center; }
.kb-head--left .kb-sec__head { text-align: left; }
.kb-head--center .kb-eyebrow::after { content: ''; width: 36px; height: 1px; background: var(--kb-accent); }
.kb-eyebrow {
	display: inline-flex; align-items: center; gap: 14px;
	font-family: var(--kb-font-ui);
	font-size: 12px; font-weight: 600; letter-spacing: .4em; text-transform: uppercase;
	color: var(--kb-muted);
	margin-bottom: 18px;
}
.kb-eyebrow::before { content: ''; width: 36px; height: 1px; background: var(--kb-accent); }
.kb-sec__title { font-size: min(var(--kb-t-title, clamp(44px, 7vw, 96px)), 14vw); line-height: 1; margin: 0; }
.kb-sec__more { margin-top: clamp(40px, 6vw, 70px); text-align: center; }
.kb-hint { color: var(--kb-muted); font-style: italic; }

/* ==========================================================================
   Pulsanti (fino a 3 per sezione, sempre centrati)
   ========================================================================== */
.kb-btns {
	display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
	gap: 16px 22px;
	width: 100%;
	margin-top: clamp(40px, 6vw, 70px);
	text-align: center;
}
.kb-btn {
	--kb-btn-fg: var(--kb-accent);
	display: inline-flex; align-items: center; justify-content: center; gap: 14px;
	min-height: 54px;
	padding: 16px 32px;
	border: 1px solid var(--kb-accent);
	color: var(--kb-btn-fg);
	font-family: var(--kb-font-ui);
	font-size: 12px; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; line-height: 1.2;
	position: relative; overflow: hidden; isolation: isolate;
	transition: color .5s var(--kb-ease), border-color .5s, box-shadow .6s var(--kb-ease), transform .5s var(--kb-ease), background .5s;
	-webkit-tap-highlight-color: transparent;
}
.kb-btn:hover { opacity: 1; }
.kb-btn .kb-icon { width: 18px; height: 18px; flex: none; transition: transform .5s var(--kb-ease); }
.kb-btn:hover .kb-icon--arrow { transform: translateX(6px); }
.kb-btn:hover .kb-icon--external { transform: translate(3px, -3px); }
.kb-btn:active { transform: scale(.97); }

/* Contorno: si riempie dal basso */
.kb-btn--outline::before {
	content: ''; position: absolute; inset: 0; z-index: -1;
	background: var(--kb-accent);
	transform: scaleY(0); transform-origin: bottom;
	transition: transform .55s var(--kb-ease);
}
.kb-btn--outline:hover { color: var(--kb-bg); }
.kb-btn--outline:hover::before { transform: scaleY(1); transform-origin: top; }

/* Pieno: riflesso di luce che attraversa il pulsante */
.kb-btn--solid { background: var(--kb-accent); color: var(--kb-bg); }
.kb-btn--solid::before {
	content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 60%; z-index: -1;
	background: linear-gradient(105deg, transparent 20%, rgba(var(--kb-bg-rgb), .28) 50%, transparent 80%);
	transform: translateX(-130%) skewX(-18deg);
	transition: transform .9s var(--kb-ease);
}
.kb-btn--solid:hover { transform: translateY(-3px); box-shadow: 0 14px 40px -12px rgba(var(--kb-accent-rgb), .55); }
.kb-btn--solid:hover::before { transform: translateX(260%) skewX(-18deg); }

/* Linea: testo con trattino che si allunga sotto */
.kb-btn--line { border-color: transparent; padding-left: 4px; padding-right: 4px; }
.kb-btn--line::before {
	content: ''; position: absolute; left: 4px; right: 4px; bottom: 10px; height: 1px;
	background: var(--kb-accent);
	transform: scaleX(.3); transform-origin: left;
	transition: transform .6s var(--kb-ease);
}
.kb-btn--line:hover::before { transform: scaleX(1); }

/* Bagliore: contorno sottile che si accende */
.kb-btn--glow { border-color: rgba(var(--kb-accent-rgb), .35); background: rgba(var(--kb-accent-rgb), .03); }
.kb-btn--glow:hover {
	border-color: var(--kb-accent);
	box-shadow: 0 0 0 1px var(--kb-accent), 0 0 34px rgba(var(--kb-accent-rgb), .35), inset 0 0 22px rgba(var(--kb-accent-rgb), .12);
	text-shadow: 0 0 14px rgba(var(--kb-accent-rgb), .7);
}

.kb-btn--small { min-height: 0; padding: 10px 18px; font-size: 11px; letter-spacing: .22em; }
.kb-btn--ghost { border-color: var(--kb-line); }

@media (max-width: 600px) {
	.kb-btns { flex-direction: column; gap: 12px; }
	.kb-btn { width: min(100%, 340px); padding: 16px 22px; letter-spacing: .24em; }
	.kb-btn--line { width: auto; }
}

/* ---------- Bio ---------- */
.kb-about__grid {
	display: grid; grid-template-columns: minmax(0, var(--kb-ab-c1, 5fr)) minmax(0, var(--kb-ab-c2, 6fr)); gap: clamp(40px, 7vw, 120px); align-items: center;
}
.kb-about--img-right .kb-about__grid { grid-template-columns: minmax(0, var(--kb-ab-c2, 6fr)) minmax(0, var(--kb-ab-c1, 5fr)); }
.kb-about__grid--noimg { grid-template-columns: minmax(0, 1fr) !important; }
.kb-about--img-right .kb-about__media { order: 2; }
.kb-about__media { margin: 0; }
.kb-about__media { display: flex; justify-content: center; }
/* Finestra foto/video: proporzioni e dimensioni scelte nel Personalizza
   (predefinito 1080 × 1520, alta al massimo l'85% dello schermo) */
.kb-about__frame {
	position: relative; overflow: hidden;
	aspect-ratio: var(--kb-ab-r, 1080 / 1520);
	width: var(--kb-ab-w, 100%);
	max-width: calc(var(--kb-ab-mh, 85) * 1vh * (var(--kb-ab-r, 1080 / 1520)));
	max-width: calc(var(--kb-ab-mh, 85) * 1svh * (var(--kb-ab-r, 1080 / 1520)));
	outline: 1px solid var(--kb-line); outline-offset: 16px;
}
.kb-about__frame .kb-parallax__img { top: 0; height: 100%; }
.kb-about__frame img.kb-parallax__img { filter: grayscale(.35) contrast(1.05); }
.kb-about__text { margin-bottom: 36px; font-size: 1.05em; }
.kb-about .kb-sec__head,
.kb-map .kb-sec__head { margin-bottom: 32px; }
@media (max-width: 860px) {
	.kb-about__grid, .kb-about--img-right .kb-about__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-about--img-right .kb-about__media { order: 0; }
	.kb-about__frame { outline-offset: 10px; width: 100%; max-width: min(100%, var(--kb-ab-wm, 460px)); }
}

/* ---------- Card articoli ---------- */
.kb-grid { display: grid; gap: clamp(28px, 4vw, 48px); }
.kb-grid--cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.kb-card { position: relative; }
.kb-card__media {
	display: block; position: relative; overflow: hidden;
	aspect-ratio: 4 / 5; background: var(--kb-surface);
}
.kb-card__media::after {
	content: ''; position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(0,0,0,.55), transparent 50%);
	opacity: .8; transition: opacity .6s;
}
.kb-card__media img {
	width: 100%; height: 100%; object-fit: cover;
	filter: grayscale(.6) brightness(.85);
	transform: scale(1.02);
	transition: transform 1.4s var(--kb-ease), filter 1s;
}
.kb-card:hover .kb-card__media img { transform: scale(1.08); filter: grayscale(0) brightness(1); }
.kb-card:hover .kb-card__media::after { opacity: .3; }
.kb-card__media:hover { opacity: 1; }
.kb-card__placeholder {
	position: absolute; inset: 0; display: grid; place-items: center;
	font-family: var(--kb-font-display); font-size: 140px; color: var(--kb-line);
}
.kb-card__body { padding-top: 22px; }
.kb-card__title { font-family: var(--kb-font-body); font-size: 1.24em; font-weight: 600; line-height: 1.3; margin: 8px 0 10px; letter-spacing: 0; }
.kb-card__title a { color: var(--kb-heading); background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .6s var(--kb-ease); }
.kb-card__title a:hover { opacity: 1; background-size: 100% 1px; }
.kb-card__excerpt { color: var(--kb-muted); font-size: .92em; margin: 0; }
.kb-meta { font-size: 11px; letter-spacing: .25em; text-transform: uppercase; color: var(--kb-muted); }
.kb-meta a { color: inherit; }
.kb-meta__sep { margin: 0 .8em; opacity: .5; }

/* Lista grande */
.kb-grid--list { grid-template-columns: 1fr; }
.kb-grid--list .kb-card { display: grid; grid-template-columns: 2fr 3fr; gap: clamp(24px, 4vw, 60px); align-items: center; border-bottom: 1px solid var(--kb-line); padding-bottom: clamp(28px, 4vw, 48px); }
.kb-grid--list .kb-card__media { aspect-ratio: 3 / 2; }
.kb-grid--list .kb-card__title { font-size: clamp(24px, 3vw, 36px); }
@media (max-width: 700px) { .kb-grid--list .kb-card { grid-template-columns: 1fr; } }

/* ---------- Banda parallax ---------- */
.kb-band__inner { position: relative; text-align: center; }
.kb-band__quote { margin: 0 auto; max-width: 1000px; padding: 0; border: 0; font-size: inherit; }
.kb-band__quote p {
	font-family: var(--kb-font-display);
	font-size: min(var(--kb-t-title, clamp(36px, 6.5vw, 92px)), 14vw);
	line-height: 1.08;
	color: var(--kb-heading);
	margin: 0 0 .5em;
	text-shadow: 0 4px 30px rgba(0,0,0,.6);
}
.kb-band__quote cite { font-style: normal; font-size: 12px; letter-spacing: .4em; text-transform: uppercase; color: var(--kb-accent); }
.kb-band__quote cite:empty { display: none; }

/* ---------- Video ---------- */
.kb-video__frame { position: relative; aspect-ratio: 16 / 9; background: #000; overflow: hidden; }
.kb-video__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.kb-video__play { position: absolute; inset: 0; width: 100%; display: grid; place-items: center; }
.kb-video__play img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(.5) brightness(.6); transition: filter .8s, transform 1.4s var(--kb-ease); }
.kb-video__play:hover img { filter: grayscale(0) brightness(.8); transform: scale(1.03); }
.kb-video__icon {
	position: relative; width: clamp(72px, 10vw, 110px); aspect-ratio: 1;
	border: 1px solid var(--kb-accent); border-radius: 50%;
	display: grid; place-items: center; color: var(--kb-accent);
	transition: transform .5s var(--kb-ease), background .5s, color .5s;
}
.kb-video__icon .kb-icon { width: 30%; height: 30%; margin-left: 6%; }
.kb-video__play:hover .kb-video__icon { transform: scale(1.1); background: var(--kb-accent); color: var(--kb-bg); }

/* ---------- Galleria ---------- */
.kb-gallery__list { list-style: none; margin: 0; padding: 0; }
.kb-gallery--masonry { columns: var(--kb-gcols) 260px; column-gap: 16px; }
.kb-gallery--masonry .kb-gallery__item { break-inside: avoid; margin-bottom: 16px; }
.kb-gallery--grid { display: grid; grid-template-columns: repeat(var(--kb-gcols), 1fr); gap: 12px; }
.kb-gallery--grid .kb-gallery__item a { aspect-ratio: 1; }
.kb-gallery--grid img { height: 100%; object-fit: cover; }
.kb-gallery__item a { display: block; overflow: hidden; position: relative; }
.kb-gallery__item img { width: 100%; filter: grayscale(.8) brightness(.8); transition: filter .8s, transform 1.4s var(--kb-ease); }
.kb-gallery__item a:hover { opacity: 1; }
.kb-gallery__item a:hover img { filter: none; transform: scale(1.05); }
@media (max-width: 700px) { .kb-gallery--grid { grid-template-columns: repeat(2, 1fr); gap: 6px; } }

.kb-gallery__track { overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding: 0 var(--kb-gutter); }
.kb-gallery__track::-webkit-scrollbar { display: none; }
.kb-gallery--slider { display: flex; gap: 16px; width: max-content; }
.kb-gallery--slider .kb-gallery__item { width: min(78vw, 560px); scroll-snap-align: center; }
.kb-gallery--slider .kb-gallery__item a { aspect-ratio: 4 / 5; }
.kb-gallery--slider img { height: 100%; object-fit: cover; }

/* Lightbox */
.kb-lb {
	position: fixed; inset: 0; z-index: 400; background: rgba(0,0,0,.95);
	display: grid; place-items: center; padding: 60px 16px;
	opacity: 0; transition: opacity .4s; cursor: zoom-out;
}
.kb-lb.is-open { opacity: 1; }
.kb-lb img { max-height: 100%; width: auto; object-fit: contain; }
.kb-lb__close { position: absolute; top: calc(18px + env(safe-area-inset-top, 0px)); right: 18px; }

/* ---------- Date ---------- */
.kb-events__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--kb-line); }
.kb-event {
	display: grid; grid-template-columns: 150px 1fr auto; gap: 24px; align-items: center;
	padding: 28px 0; border-bottom: 1px solid var(--kb-line);
	transition: background .4s, padding .5s var(--kb-ease);
}
.kb-event:hover { background: rgba(var(--kb-accent-rgb), .03); padding-left: 14px; padding-right: 14px; }
.kb-event.is-past > * { opacity: .4; }
.kb-event__date { display: flex; align-items: baseline; gap: 10px; color: var(--kb-heading); }
.kb-event__day { font-family: var(--kb-font-display); font-size: 52px; line-height: 1; }
.kb-event__month { font-size: 11px; letter-spacing: .25em; text-transform: uppercase; color: var(--kb-muted); }
.kb-event__place strong { display: block; color: var(--kb-heading); font-size: 1.18em; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.kb-event__place span { color: var(--kb-muted); }
.kb-event__tag { font-size: 11px; letter-spacing: .25em; text-transform: uppercase; color: var(--kb-muted); }
@media (max-width: 640px) {
	.kb-event { grid-template-columns: 1fr auto; gap: 8px 16px; }
	.kb-event__date { grid-column: 1 / -1; }
}

/* ---------- Contatti ---------- */
.kb-contact { text-align: center; }
.kb-contact__inner { position: relative; }
.kb-contact__mail {
	display: inline-block; margin: 10px 0 40px;
	font-size: clamp(20px, 4vw, 40px); font-weight: 300; color: var(--kb-heading);
	border-bottom: 1px solid var(--kb-line); padding-bottom: 6px;
	word-break: break-word;
}
.kb-contact__mail:hover { border-color: var(--kb-accent); opacity: 1; }
.kb-contact .kb-social { justify-content: center; }

/* ---------- Social ---------- */
.kb-social { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 20px; align-items: center; }
.kb-social a { display: grid; place-items: center; color: var(--kb-accent); transition: transform .4s var(--kb-ease), opacity .3s; }
.kb-social a:hover { transform: translateY(-3px); }
.kb-social svg { width: 20px; height: 20px; }
.kb-social--big { gap: 14px; }
.kb-social--big a { width: 54px; height: 54px; border: 1px solid var(--kb-line); border-radius: 50%; transition: border-color .4s, background .4s, color .4s, transform .4s var(--kb-ease); }
.kb-social--big a:hover { background: var(--kb-accent); color: var(--kb-bg); border-color: var(--kb-accent); opacity: 1; }

/* ==========================================================================
   Testate pagine / articoli
   ========================================================================== */
.kb-phero {
	position: relative; isolation: isolate; overflow: hidden;
	padding: calc(var(--kb-logo-h) + var(--kb-header-pad) * 2 + clamp(50px, 8vw, 110px)) 0 clamp(40px, 6vw, 70px);
	border-bottom: 1px solid var(--kb-line);
}
.kb-phero--img {
	min-height: calc(var(--kb-phero-h, 78) * 1vh);
	min-height: calc(var(--kb-phero-h, 78) * 1svh);
	display: flex; align-items: flex-end;
	border-bottom: 0; background: #000;
}
.kb-phero--color { background: var(--kb-sec-bg); }
.kb-phero--img .kb-parallax { z-index: -2; }
.kb-phero--img .kb-hero__overlay {
	z-index: -1;
	background:
		linear-gradient(to bottom, rgba(0,0,0,.45) 0%, rgba(0,0,0,.25) 40%, var(--kb-page-bg) 100%),
		rgba(var(--kb-overlay-rgb), var(--kb-phero-ov, 0));
}
.kb-phero--center-bottom .kb-phero__inner,
.kb-phero--center-center .kb-phero__inner { text-align: center; }
.kb-phero--center-bottom .kb-phero__sub,
.kb-phero--center-center .kb-phero__sub { margin-left: auto; margin-right: auto; }
.kb-phero--img.kb-phero--center-center { align-items: center; }
.kb-phero-spacer { height: calc(var(--kb-logo-h) + var(--kb-header-pad) * 2); }
.kb-phero__inner { position: relative; z-index: 3; }
.kb-phero__title { font-size: clamp(46px, 8vw, 120px); line-height: 1; margin: 12px 0 0; }
.kb-phero__sub { color: var(--kb-muted); margin-top: 18px; max-width: 700px; }

/* Layout con sidebar */
.kb-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 60px; }
.kb-layout > * { min-width: 0; }
.kb-prose, .kb-card__title, .kb-phero__title, .post-navigation a { overflow-wrap: anywhere; }
.kb-sidebar--right .kb-layout:has(.kb-layout__side) { grid-template-columns: minmax(0, 1fr) 300px; }
.kb-sidebar--left .kb-layout:has(.kb-layout__side) { grid-template-columns: 300px minmax(0, 1fr); }
.kb-sidebar--left .kb-layout__side { order: -1; }
@media (max-width: 960px) {
	.kb-sidebar--right .kb-layout:has(.kb-layout__side),
	.kb-sidebar--left .kb-layout:has(.kb-layout__side) { grid-template-columns: 1fr; }
	.kb-sidebar--left .kb-layout__side { order: 1; }
}
.single .kb-layout__main { max-width: var(--kb-content); margin: 0 auto; width: 100%; }
.kb-sidebar--right.single .kb-layout__main,
.kb-sidebar--left.single .kb-layout__main { max-width: none; }

/* ---------- Testo lungo ---------- */
:where(.kb-prose) > * + * { margin-top: 1.2em; }
:where(.kb-prose) p { margin-bottom: 0; }
:where(.kb-prose) > *:first-child { margin-top: 0; }
:where(.kb-prose) h2 { font-size: clamp(36px, 5vw, 60px); margin-top: 1.6em; }
:where(.kb-prose) h3 { font-size: 24px; margin-top: 1.8em; }
:where(.kb-prose) a:not([class]) { color: var(--kb-heading); border-bottom: 1px solid var(--kb-line); }
:where(.kb-prose) a:not([class]):hover { border-color: var(--kb-accent); opacity: 1; }
:where(.kb-prose) blockquote {
	margin: 2em 0; padding: 0 0 0 28px; border-left: 1px solid var(--kb-accent);
	font-size: 1.3em; color: var(--kb-heading); font-weight: 300;
}
:where(.kb-prose) img, :where(.kb-prose) figure { margin-left: 0; margin-right: 0; }
:where(.kb-prose) figcaption, .wp-element-caption { font-size: 12px; color: var(--kb-muted); letter-spacing: .1em; margin-top: 10px; text-align: center; }
:where(.kb-prose) ul, :where(.kb-prose) ol { padding-left: 1.2em; }
:where(.kb-prose) hr { border: 0; height: 1px; background: var(--kb-line); margin: 3em 0; }
:where(.kb-prose) table { width: 100%; border-collapse: collapse; }
:where(.kb-prose) th, :where(.kb-prose) td { border-bottom: 1px solid var(--kb-line); padding: 12px 8px; text-align: left; }
:where(.kb-prose) code, :where(.kb-prose) pre { background: var(--kb-surface); font-size: .9em; }
:where(.kb-prose) pre { padding: 20px; overflow-x: auto; }

/* Blocchi Gutenberg */
.kb-entry .alignwide { margin-left: calc((var(--kb-content) - min(var(--kb-container), 100vw - 2 * var(--kb-gutter))) / 2); margin-right: calc((var(--kb-content) - min(var(--kb-container), 100vw - 2 * var(--kb-gutter))) / 2); max-width: none; }
.kb-entry .alignfull { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: 100vw; width: 100vw; }
@media (max-width: 860px) { .kb-entry .alignwide { margin-left: 0; margin-right: 0; } }
.kb-entry--full { padding-top: calc(var(--kb-logo-h) + var(--kb-header-pad) * 2); }
.kb-entry--full > * { max-width: calc(var(--kb-content) + 2 * var(--kb-gutter)); margin-left: auto; margin-right: auto; padding-left: var(--kb-gutter); padding-right: var(--kb-gutter); }
.kb-entry--full > .alignwide { max-width: calc(var(--kb-container) + 2 * var(--kb-gutter)); }
.kb-entry--full > .alignfull { max-width: none; margin-left: 0; margin-right: 0; padding-left: 0; padding-right: 0; width: auto; }
.wp-block-button__link { border-radius: 0; background: var(--kb-accent); color: var(--kb-bg); font-size: 12px; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; padding: 16px 30px; }
.is-style-outline .wp-block-button__link { background: transparent; color: var(--kb-accent); border: 1px solid currentColor; }
.wp-block-cover { overflow: hidden; }
.has-kb-black-color { color: #050505; } .has-kb-black-background-color { background-color: #050505; }
.has-kb-surface-color { color: #111; } .has-kb-surface-background-color { background-color: #111; }
.has-kb-muted-color { color: #8a8a8a; } .has-kb-muted-background-color { background-color: #8a8a8a; }
.has-kb-white-color { color: #fff; } .has-kb-white-background-color { background-color: #fff; }
.sticky .kb-card__title::before { content: '★ '; }
.bypostauthor { display: block; }

.kb-entry__thumb { margin: 0 0 40px; }
.kb-entry__foot { margin-top: 60px; padding-top: 30px; border-top: 1px solid var(--kb-line); }
.kb-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 30px; }
.kb-tags a { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--kb-muted); border: 1px solid var(--kb-line); padding: 6px 12px; }
.post-navigation .nav-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.post-navigation .nav-links > div:only-child.nav-next { grid-column: 2; }
.post-navigation .nav-next { text-align: right; }
.post-navigation a { display: flex; flex-direction: column; color: var(--kb-heading); font-weight: 600; }
.post-navigation .nav-next a { align-items: flex-end; }
.post-navigation .kb-eyebrow { margin-bottom: 6px; }
.post-navigation .nav-next .kb-eyebrow { flex-direction: row-reverse; }

/* Paginazione */
.pagination { margin-top: 70px; }
.pagination .nav-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; }
.pagination .page-numbers { min-width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid var(--kb-line); color: var(--kb-text); font-size: 14px; }
.pagination .page-numbers.current, .pagination a.page-numbers:hover { background: var(--kb-accent); color: var(--kb-bg); border-color: var(--kb-accent); opacity: 1; }

/* Widget */
.widget { margin-bottom: 44px; font-size: .94em; }
.widget-title, .widget .wp-block-heading { font-family: var(--kb-font-body); font-size: 12px; font-weight: 600; letter-spacing: .35em; text-transform: uppercase; color: var(--kb-heading); margin-bottom: 20px; }
.widget ul { list-style: none; padding: 0; margin: 0; }
.widget li { padding: 8px 0; border-bottom: 1px solid var(--kb-line); }
.widget a { color: var(--kb-text); }

/* Commenti e form */
.kb-comments { margin-top: 80px; }
.kb-comments__title { font-size: 28px; }
.kb-comments__list { list-style: none; padding: 0; }
.kb-comments__list .children { list-style: none; padding-left: 28px; }
.comment-body { padding: 24px 0; border-bottom: 1px solid var(--kb-line); }
.comment-author img { border-radius: 50%; float: left; margin-right: 14px; filter: grayscale(1); }
.comment-metadata { font-size: 12px; color: var(--kb-muted); }
.comment-metadata a { color: inherit; }
input[type="text"], input[type="email"], input[type="url"], input[type="tel"], input[type="password"], input[type="number"], textarea, select {
	width: 100%; background: transparent; color: var(--kb-heading);
	border: 0; border-bottom: 1px solid var(--kb-line); border-radius: 0;
	padding: 12px 0; font: inherit; transition: border-color .3s;
	-webkit-appearance: none; appearance: none;
}
input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--kb-accent); }
label { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--kb-muted); }
input[type="submit"], button[type="submit"]:not(.kb-searchform__btn):not(.kb-btn) {
	border: 1px solid var(--kb-accent); background: transparent; color: var(--kb-accent);
	padding: 16px 32px; font-size: 12px; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; cursor: pointer;
	transition: background .4s, color .4s;
}
input[type="submit"]:hover, button[type="submit"]:not(.kb-searchform__btn):not(.kb-btn):hover { background: var(--kb-accent); color: var(--kb-bg); }

/* 404 */
.kb-404 { min-height: 100vh; min-height: 100svh; display: flex; align-items: center; padding: 140px 0 80px; text-align: center; }
.kb-404__code { font-family: var(--kb-font-display); font-size: clamp(120px, 30vw, 300px); line-height: .8; margin: 0; color: var(--kb-line); }
.kb-404 .kb-searchform { margin: 40px auto; max-width: 480px; }
.kb-empty { padding: 40px 0; }

/* ==========================================================================
   Footer
   ========================================================================== */
.kb-footer {
	padding: clamp(80px, 10vw, 140px) 0 calc(36px + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid var(--kb-line);
	text-align: center;
}
.kb-footer__brand { margin-bottom: 40px; }
.kb-logo--footer .kb-logo__text { font-size: var(--kb-flogo-d, clamp(56px, 12vw, 150px)); }
.kb-logo--footer .kb-logo__img { height: var(--kb-flogo-d, clamp(60px, 10vw, 130px)); width: auto; max-width: 92vw; object-fit: contain; }
@media (max-width: 767px) {
	.kb-logo--footer .kb-logo__text { font-size: var(--kb-flogo-m, clamp(56px, 12vw, 150px)); }
	.kb-logo--footer .kb-logo__img { height: var(--kb-flogo-m, clamp(60px, 10vw, 130px)); }
}
.kb-footer__social { justify-content: center; margin-bottom: 60px; }
.kb-footer__widgets {
	display: grid; grid-template-columns: repeat(var(--kb-cols, 3), 1fr); gap: 40px;
	text-align: left; padding: 60px 0; border-top: 1px solid var(--kb-line);
}
@media (max-width: 860px) { .kb-footer__widgets { grid-template-columns: 1fr; text-align: center; } }
.kb-footer__bottom {
	display: flex; flex-wrap: wrap; gap: 16px 30px; justify-content: space-between; align-items: center;
	padding-top: 30px; border-top: 1px solid var(--kb-line);
	font-size: 12px; letter-spacing: .15em; text-transform: uppercase; color: var(--kb-muted);
}
.kb-footer__copy { margin: 0; }
.kb-footer__menu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 24px; }
.kb-footer__menu a { color: var(--kb-muted); }
@media (max-width: 700px) { .kb-footer__bottom { justify-content: center; text-align: center; } }

.kb-totop {
	position: fixed; z-index: 90;
	right: calc(18px + env(safe-area-inset-right, 0px)); bottom: calc(18px + env(safe-area-inset-bottom, 0px));
	width: 46px; height: 46px; display: grid; place-items: center;
	border: 1px solid var(--kb-line); background: rgba(var(--kb-bg-rgb), .8);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	color: var(--kb-accent);
	opacity: 0; visibility: hidden; transform: translateY(12px);
	transition: opacity .4s, visibility .4s, transform .4s var(--kb-ease), border-color .3s;
}
.kb-totop .kb-icon { width: 20px; height: 20px; }
.kb-scrolled-far .kb-totop { opacity: 1; visibility: visible; transform: none; }
.kb-totop:hover { border-color: var(--kb-accent); opacity: 1; }

/* ==========================================================================
   Comparsa allo scroll
   ========================================================================== */
.js .kb-reveal-on .kb-reveal {
	opacity: 0;
	transform: translateY(40px);
	transition: opacity 1.2s var(--kb-ease), transform 1.2s var(--kb-ease);
	transition-delay: var(--kb-delay, 0s);
}
.js .kb-reveal-on .kb-reveal.is-in { opacity: 1; transform: none; }
.js .kb-reveal-on .kb-about__media.kb-reveal { transform: scale(.94); transition: opacity 1.6s var(--kb-ease), transform 1.8s var(--kb-ease); }
.js .kb-reveal-on .kb-about__media.kb-reveal.is-in { transform: none; }

/* Cursore personalizzato */
.kb-cursor {
	position: fixed; top: 0; left: 0; z-index: 9998;
	width: 34px; height: 34px; margin: -17px 0 0 -17px;
	border: 1px solid var(--kb-accent); border-radius: 50%;
	pointer-events: none; mix-blend-mode: difference;
	transition: width .3s, height .3s, margin .3s, opacity .3s;
	opacity: 0;
}
.kb-cursor.is-on { opacity: 1; }
.kb-cursor.is-hover { width: 70px; height: 70px; margin: -35px 0 0 -35px; background: var(--kb-accent); }
@media (hover: none), (pointer: coarse) { .kb-cursor { display: none; } }

/* Font di menu e pulsanti */
.kb-menu a, .kb-hero__sub, .kb-hero__scroll, .kb-meta, .kb-footer__bottom,
.kb-mmenu__list .sub-menu a, .kb-event__month, .kb-event__tag, .kb-tags a,
.pagination .page-numbers, .kb-band__quote cite, .widget-title { font-family: var(--kb-font-ui); }

/* ==========================================================================
   Opzioni della singola pagina
   ========================================================================== */
.kb-noheader .kb-phero { padding-top: clamp(60px, 10vw, 120px); }
.kb-noheader .kb-phero-spacer { height: 0; }
.kb-noheader .kb-hero { padding-top: 60px; }
.kb-noheader .kb-entry--full { padding-top: 0; }
.kb-nomenu .kb-nav, .kb-nomenu .kb-burger { display: none !important; }
.kb-cw--narrow { --kb-content: 620px; }
.kb-cw--wide { --kb-content: 1100px; }
.kb-cw--full { --kb-content: var(--kb-container); }
.kb-cw--wide.single .kb-layout__main, .kb-cw--full.single .kb-layout__main { max-width: var(--kb-content); }
.kb-footer--minimal .kb-footer { padding-top: 0; border-top: 0; }
.kb-footer--minimal .kb-footer__bottom { padding-bottom: 6px; }

/* ==========================================================================
   Mobile
   ========================================================================== */
@media (max-width: 767px) {
	.kb-header__tools { gap: 6px; }
	.kb-menu a { text-shadow: none; }
	.kb-sec__title { font-size: var(--kb-t-title-m, clamp(44px, 13vw, 70px)); }
	.kb-band__quote p { font-size: var(--kb-t-title-m, clamp(36px, 6.5vw, 92px)); }
	.kb-eyebrow { letter-spacing: .3em; font-size: 11px; }
	.kb-totop { width: 42px; height: 42px; }
	/* su touch niente hover: mostriamo le immagini a colori */
	.kb-card__media img, .kb-gallery__item img { filter: none; }
}

/* Accessibilità: riduci movimento */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	.js .kb-reveal-on .kb-reveal { opacity: 1; transform: none; }
	.kb-grain .kb-hero__media::after, .kb-grain .kb-bg--image::after, .kb-grain .kb-bg--video::after { display: none; }
}

/* ==========================================================================
   Dimensioni dei testi scelte per singola sezione (Personalizza → sezione → Dimensione dei testi)
   ========================================================================== */
[style*="--kb-t-text"] > .kb-sec__body { font-size: var(--kb-t-text, inherit); }
[style*="--kb-t-text"] .kb-contact__mail { font-size: 1.9em; }
[style*="--kb-t-label"] .kb-eyebrow,
[style*="--kb-t-label"] .kb-band__quote cite { font-size: var(--kb-t-label, 12px); }
[style*="--kb-t-btn"] .kb-btn { font-size: var(--kb-t-btn, 12px); }
.kb-hero[style*="--kb-t-sub"] .kb-hero__sub { font-size: var(--kb-t-sub, 13px); }
@media (max-width: 767px) {
	.kb-hero[style*="--kb-t-sub"] .kb-hero__sub { font-size: var(--kb-t-sub-m, 11px); }
}

/* ==========================================================================
   Sezioni inserite nelle pagine (shortcode [kb_section] / elemento WPBakery)
   ========================================================================== */
.kb-embed { position: relative; clear: both; }
.kb-embed + .kb-embed { margin-top: 0; }
.kb-embed--full {
	width: 100vw;
	max-width: 100vw;
	position: relative;
	left: 50%;
	margin-left: -50vw;
}
.kb-embed .kb-card__title a { border-bottom: 0; }
/* WPBakery: niente margine sotto l'elemento, le sezioni hanno già il loro respiro */
.wpb_wrapper > .kb-embed:last-child { margin-bottom: 0; }
.vc_row .kb-embed--full .kb-container { padding-left: var(--kb-gutter); padding-right: var(--kb-gutter); }
/* Pagine costruite con WPBakery nel template a larghezza piena: righe larghe quanto il contenitore */
.kb-entry--full > .vc_row,
.kb-entry--full > .vc_section,
.kb-entry--full > .wpb-content-wrapper { max-width: calc(var(--kb-container) + 2 * var(--kb-gutter)); }
.kb-entry--full > .wpb-content-wrapper > .vc_row { margin-left: 0; margin-right: 0; }
/* Nell'editor visuale di WPBakery le animazioni di comparsa restano spente */
.kb-no-anim .kb-reveal, .kb-no-anim .kb-hero__title, .kb-no-anim .kb-hero__sub,
.kb-no-anim .kb-hero__btns, .kb-no-anim .kb-hero__scroll span { opacity: 1 !important; transform: none !important; animation: none !important; filter: none !important; }
.kb-embed-missing { padding: 24px; border: 1px dashed var(--kb-line); color: var(--kb-muted); text-align: center; font-size: 14px; }
/* "Dentro la colonna": la sezione si adatta alla larghezza della colonna, non dello schermo */
.kb-embed--column { container-type: inline-size; }
.kb-embed--column .kb-sec__title,
.kb-embed--column .kb-band__quote p { font-size: min(var(--kb-t-title, clamp(40px, 9cqi, 96px)), 13cqi); }
@container (max-width: 860px) {
	.kb-about__grid, .kb-about--img-right .kb-about__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-about--img-right .kb-about__media { order: 0; }
	.kb-about__frame { width: 100%; max-width: min(100%, var(--kb-ab-wm, 460px)); }
}
@container (max-width: 640px) {
	.kb-event { grid-template-columns: 1fr auto; gap: 8px 16px; }
	.kb-event__date { grid-column: 1 / -1; }
}

/* Bio: video nella cornice della foto */
.kb-about__frame--video { background: #000; }
.kb-sound {
	position: absolute; right: 14px; bottom: 14px; z-index: 3;
	width: 44px; height: 44px; border-radius: 50%;
	display: grid; place-items: center;
	color: #fff; background: rgba(0,0,0,.45);
	border: 1px solid rgba(255,255,255,.35);
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	transition: background .3s, border-color .3s, transform .3s var(--kb-ease);
}
.kb-sound:hover { background: rgba(0,0,0,.7); border-color: #fff; transform: scale(1.06); }
.kb-sound .kb-sound__on, .kb-sound[aria-pressed="true"] .kb-sound__off { display: none; }
.kb-sound[aria-pressed="true"] .kb-sound__on { display: block; }

/* Hero con video: il video parte subito; l'immagine compare solo se il video non può partire */
.kb-hero__fallback { display: none; }
.no-js .kb-hero__fallback,
.kb-hero-novideo .kb-hero__fallback { display: block; }
.no-js .kb-hero__videowrap,
.kb-hero-novideo .kb-hero__videowrap { display: none; }
.kb-herovideo { background: #000; }

/* ---------- Map ---------- */
.kb-map__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(36px, 6vw, 100px); align-items: center; }
.kb-map--left .kb-map__grid { grid-template-columns: 7fr 5fr; }
.kb-map--left .kb-map__media { order: -1; }
.kb-map--center .kb-map__grid,
.kb-map__grid--solo { grid-template-columns: minmax(0, 1fr); }
.kb-map--center .kb-map__media { width: 100%; max-width: 1100px; margin-left: auto; margin-right: auto; }
.kb-map__text { font-size: 1.05em; margin-bottom: 36px; }
.kb-map__text:last-child { margin-bottom: 0; }
.kb-map__media { margin: 0; min-width: 0; }
.kb-map__frame {
	position: relative; height: var(--kb-map-h, 480px); overflow: hidden;
	background: #111; outline: 1px solid var(--kb-line); outline-offset: 12px;
}
.kb-map__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
/* stile scuro: la mappa di Google viene "invertita" per stare in tinta col sito */
.kb-map--dark .kb-map__frame iframe { filter: invert(.92) hue-rotate(180deg) grayscale(.25) contrast(.92) brightness(.95); }
.kb-map__open { margin-top: 22px; text-align: right; font-family: var(--kb-font-ui); font-size: 12px; letter-spacing: .25em; text-transform: uppercase; }
.kb-map--center .kb-map__open { text-align: center; }
.kb-map__open a { color: var(--kb-accent); display: inline-flex; align-items: center; gap: 8px; border: 0; }
.kb-map__open .kb-icon { width: 14px; height: 14px; }
.kb-map__empty { position: absolute; inset: 0; display: grid; place-items: center; padding: 24px; text-align: center; color: var(--kb-muted); margin: 0; }
.kb-map__consent {
	position: absolute; inset: 0; width: 100%;
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
	color: var(--kb-heading); text-align: center; padding: 24px;
	background: radial-gradient(ellipse at center, #1c1c1c, #0a0a0a 70%);
	transition: background .4s;
}
.kb-map__consent:hover { background: radial-gradient(ellipse at center, #262626, #0a0a0a 70%); }
.kb-map__pin { width: 64px; height: 64px; border: 1px solid var(--kb-line); border-radius: 50%; display: grid; place-items: center; }
.kb-map__consent-title { font-family: var(--kb-font-ui); font-size: 13px; font-weight: 600; letter-spacing: .3em; text-transform: uppercase; }
.kb-map__consent-note { font-size: 12px; color: var(--kb-muted); }
@media (max-width: 860px) {
	.kb-map__grid, .kb-map--left .kb-map__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-map--left .kb-map__media { order: 0; }
	.kb-map__frame { height: min(var(--kb-map-h, 480px), 62vh); outline-offset: 8px; }
}
@container (max-width: 860px) {
	.kb-map__grid, .kb-map--left .kb-map__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-map--left .kb-map__media { order: 0; }
}
.kb-map--center .kb-sec__head { text-align: center; }
.kb-map--center .kb-eyebrow::after { content: ''; width: 36px; height: 1px; background: var(--kb-accent); }
/* proporzioni fisse al posto dell'altezza; mai più alta dell'85% dello schermo */
.kb-map__frame.kb-map__frame--ratio {
	height: auto; aspect-ratio: var(--kb-map-r);
	max-width: calc(85svh * (var(--kb-map-r))); margin-left: auto; margin-right: auto;
}
/* mappa 30px più in basso, senza spostare il resto della sezione */
.kb-map__media { position: relative; top: 30px; }
.kb-map__grid { padding-bottom: 30px; }

/* ---------- Form ---------- */
.kb-formsec__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(36px, 6vw, 100px); align-items: start; }
.kb-formsec--left .kb-formsec__grid { grid-template-columns: 7fr 5fr; }
.kb-formsec--left .kb-formsec__wrap { order: -1; }
.kb-formsec--center .kb-formsec__grid,
.kb-formsec__grid--solo { grid-template-columns: minmax(0, 1fr); }
.kb-formsec--center .kb-formsec__wrap { width: 100%; max-width: 820px; margin: 0 auto; }
.kb-formsec--center .kb-sec__head { text-align: center; }
.kb-formsec--center .kb-eyebrow::after { content: ''; width: 36px; height: 1px; background: var(--kb-accent); }
.kb-formsec .kb-sec__head { margin-bottom: 32px; }
.kb-formsec__text { font-size: 1.05em; }
.kb-formsec__body, .kb-formsec__wrap { min-width: 0; }

.kb-form { position: relative; }
.kb-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 34px; }
.kb-form__field { margin: 0; position: relative; }
.kb-form__field--wide { grid-column: 1 / -1; }
.kb-form label {
	display: block; margin-bottom: 4px;
	font-family: var(--kb-font-ui); font-size: 11px; font-weight: 600;
	letter-spacing: .3em; text-transform: uppercase; color: var(--kb-muted);
	transition: color .3s;
}
.kb-form__field:focus-within label { color: var(--kb-heading); }
.kb-form input[type="text"], .kb-form input[type="email"], .kb-form input[type="tel"], .kb-form textarea {
	width: 100%; display: block;
	background: transparent; color: var(--kb-heading);
	border: 0; border-bottom: 1px solid var(--kb-line); border-radius: 0;
	padding: 12px 0 10px; font: inherit; font-size: 1.05em; line-height: 1.5;
	-webkit-appearance: none; appearance: none; box-shadow: none; outline: 0;
	transition: border-color .4s;
}
.kb-form textarea { resize: vertical; min-height: 150px; }
/* linea che si "accende" da sinistra quando scrivi */
.kb-form__field::after {
	content: ''; position: absolute; left: 0; right: 0; height: 1px; background: var(--kb-accent);
	transform: scaleX(0); transform-origin: left; transition: transform .6s var(--kb-ease);
	bottom: 24px;
}
.kb-form__field:focus-within::after { transform: scaleX(1); }
.kb-form__error { display: block; box-sizing: border-box; height: 24px; padding-top: 6px; line-height: 18px; font-size: 12px; letter-spacing: .04em; color: #ff6b6b; }
.kb-form__field.has-error input, .kb-form__field.has-error textarea { border-color: #ff6b6b; }

.kb-form__check { margin: 18px 0 0; }
.kb-form__check .kb-form__error { padding-left: 34px; }
.kb-form__check label {
	display: flex; align-items: flex-start; gap: 14px; cursor: pointer;
	font-family: var(--kb-font-body); font-size: .92em; letter-spacing: 0; text-transform: none; color: var(--kb-text); font-weight: 400;
}
.kb-form__check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.kb-form__box {
	flex: none; width: 20px; height: 20px; margin-top: 2px;
	border: 1px solid var(--kb-line); position: relative; transition: border-color .3s, background .3s;
}
.kb-form__box::after {
	content: ''; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px;
	border: solid var(--kb-bg); border-width: 0 2px 2px 0; transform: rotate(45deg) scale(0); transition: transform .25s var(--kb-ease);
}
.kb-form__check input:checked + .kb-form__box { background: var(--kb-accent); border-color: var(--kb-accent); }
.kb-form__check input:checked + .kb-form__box::after { transform: rotate(45deg) scale(1); }
.kb-form__check input:focus-visible + .kb-form__box { outline: 1px solid var(--kb-accent); outline-offset: 3px; }
.kb-form__check a { color: var(--kb-heading); border-bottom: 1px solid var(--kb-line); }
.kb-form__check.has-error .kb-form__box { border-color: #ff6b6b; }

.kb-form__actions { margin-top: 30px; display: flex; justify-content: flex-start; }
.kb-formsec--center .kb-form__actions { justify-content: center; }
.kb-form__submit { cursor: pointer; font: inherit; font-family: var(--kb-font-ui); font-size: 12px; }
.kb-form.is-busy .kb-form__submit { opacity: .55; pointer-events: none; }
.kb-form.is-busy .kb-form__submit .kb-icon { animation: kb-busy 1s linear infinite; }
@keyframes kb-busy { 50% { transform: translateX(6px); opacity: .3; } }
.kb-form__status { margin: 16px 0 0; min-height: 1.4em; font-size: .92em; color: var(--kb-muted); }
.kb-form__status.is-error { color: #ff6b6b; }
.kb-formsec--center .kb-form__status { text-align: center; }
.kb-form__trap { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Messaggio inviato */
.kb-form__done {
	display: none; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
	text-align: center; padding: clamp(40px, 6vw, 70px) 20px;
	border: 1px solid var(--kb-line);
}
.kb-form__done-icon { width: 64px; height: 64px; border: 1px solid var(--kb-accent); border-radius: 50%; display: grid; place-items: center; color: var(--kb-accent); }
.kb-form__done-text { margin: 0; color: var(--kb-heading); font-size: 1.1em; max-width: 460px; }
.kb-form.is-sent > :not(.kb-form__done) { display: none; }
.kb-form.is-sent .kb-form__done { display: flex; animation: kb-in .9s var(--kb-ease) both; }

@media (max-width: 860px) {
	.kb-formsec__grid, .kb-formsec--left .kb-formsec__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-formsec--left .kb-formsec__wrap { order: 0; }
}
@media (max-width: 600px) {
	.kb-form__grid { grid-template-columns: minmax(0, 1fr); gap: 22px; }
	.kb-form__actions .kb-btn { width: 100%; }
}
@container (max-width: 860px) {
	.kb-formsec__grid, .kb-formsec--left .kb-formsec__grid { grid-template-columns: minmax(0, 1fr); }
	.kb-formsec--left .kb-formsec__wrap { order: 0; }
}

/* ---------- Solo testo ---------- */
.kb-longtext__inner { max-width: calc(var(--kb-lt-w, 860px) + 2 * var(--kb-gutter)); }
.kb-longtext--narrow { --kb-lt-w: 680px; }
.kb-longtext--medium { --kb-lt-w: 880px; }
.kb-longtext--wide { --kb-lt-w: var(--kb-container); }
.kb-longtext .kb-sec__head { margin-bottom: 32px; }
.kb-longtext__body { font-size: 1.02em; }
.kb-longtext--align-justify .kb-longtext__body { text-align: justify; hyphens: auto; -webkit-hyphens: auto; }
.kb-longtext--align-center .kb-longtext__body,
.kb-longtext--align-center .kb-sec__head { text-align: center; }
.kb-longtext__body h2 { font-size: clamp(28px, 3.4vw, 44px); margin-top: 1.4em; scroll-margin-top: 110px; }
.kb-longtext__body h3 { font-size: 20px; margin-top: 1.6em; scroll-margin-top: 110px; letter-spacing: .02em; }
.kb-longtext__body h4 { font-size: 16px; margin-top: 1.4em; text-transform: uppercase; letter-spacing: .12em; }
.kb-longtext__body > :first-child { margin-top: 0; }
.kb-longtext__body ol, .kb-longtext__body ul { padding-left: 1.4em; }
.kb-longtext__body li + li { margin-top: .45em; }
.kb-longtext__body strong { color: var(--kb-heading); }
.kb-longtext__body table { font-size: .94em; }
.kb-longtext__body th { color: var(--kb-heading); font-family: var(--kb-font-ui); font-size: 12px; letter-spacing: .15em; text-transform: uppercase; }
@media (min-width: 900px) {
	.kb-longtext__body { column-count: var(--kb-lt-cols, 1); column-gap: clamp(36px, 4vw, 64px); }
	.kb-longtext__body h2, .kb-longtext__body h3, .kb-longtext__body table, .kb-longtext__body figure { break-inside: avoid; break-after: avoid; }
	.kb-longtext__body h2:first-child { margin-top: 0; }
}
/* tabelle larghe: scorrono in orizzontale su smartphone */
@media (max-width: 700px) {
	.kb-longtext__body table { display: block; overflow-x: auto; white-space: nowrap; }
}

/* Indice */
.kb-longtext__toc { margin: 0 0 clamp(36px, 5vw, 56px); padding: 24px 28px; border: 1px solid var(--kb-line); }
.kb-longtext__toc .kb-eyebrow { margin-bottom: 14px; }
.kb-longtext__toc ol { margin: 0; padding: 0; list-style: none; counter-reset: kbtoc; columns: 2 260px; column-gap: 40px; }
.kb-longtext__toc li { break-inside: avoid; padding: 5px 0; }
.kb-longtext__toc-l2 { counter-increment: kbtoc; }
.kb-longtext__toc-l2 a::before { content: counter(kbtoc, decimal-leading-zero) "  "; color: var(--kb-muted); font-family: var(--kb-font-ui); font-size: .8em; letter-spacing: .1em; }
.kb-longtext__toc-l3 { padding-left: 2.2em !important; font-size: .92em; }
.kb-longtext__toc a { color: var(--kb-text); border: 0; }
.kb-longtext__toc a:hover { color: var(--kb-heading); opacity: 1; }
.kb-longtext--align-center .kb-longtext__toc { text-align: left; }

/* "Leggi tutto" */
.kb-longtext__wrap.is-collapsible:not(.is-open) .kb-longtext__clip {
	max-height: var(--kb-lt-h, 600px); overflow: hidden;
	-webkit-mask-image: linear-gradient(to bottom, #000 65%, transparent);
	mask-image: linear-gradient(to bottom, #000 65%, transparent);
}
.kb-longtext__more { display: flex; justify-content: center; margin-top: 30px; }
.kb-longtext__toggle { cursor: pointer; font: inherit; font-family: var(--kb-font-ui); font-size: 12px; }
.kb-longtext__toggle .kb-icon { transition: transform .4s var(--kb-ease); }
.is-open .kb-longtext__toggle .kb-icon { transform: rotate(180deg); }

/* ---------- Programma ---------- */
.kb-prog .kb-sec__head { margin-bottom: 32px; }
.kb-prog__intro { max-width: 760px; margin-bottom: clamp(32px, 4vw, 48px); font-size: 1.05em; }
.kb-head--center .kb-prog__intro { margin-left: auto; margin-right: auto; text-align: center; }

/* Schede dei giorni */
.kb-prog__tabs {
	display: flex; gap: 0; margin-bottom: clamp(28px, 4vw, 44px);
	border-bottom: 1px solid var(--kb-line);
	overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.kb-prog__tabs::-webkit-scrollbar { display: none; }
.kb-prog__tab {
	flex: 0 0 auto; position: relative; cursor: pointer;
	display: flex; flex-direction: column; align-items: flex-start; gap: 4px;
	padding: 14px clamp(18px, 3vw, 34px) 16px 0; margin-right: clamp(18px, 3vw, 34px);
	color: var(--kb-muted); text-align: left; transition: color .3s;
}
.kb-prog__tab::after {
	content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--kb-accent);
	transform: scaleX(0); transform-origin: left; transition: transform .5s var(--kb-ease);
}
.kb-prog__tab[aria-selected="true"] { color: var(--kb-heading); }
.kb-prog__tab[aria-selected="true"]::after { transform: scaleX(1); }
.kb-prog__tab:hover { color: var(--kb-heading); }
.kb-prog__tab-label { font-family: var(--kb-font-display); font-size: clamp(24px, 3vw, 38px); line-height: 1.1; }
.kb-prog__tab-date { font-family: var(--kb-font-ui); font-size: 11px; letter-spacing: .25em; text-transform: uppercase; }
.kb-prog__tab.is-today .kb-prog__tab-date::after { content: ' • oggi'; color: var(--kb-heading); }
.kb-prog--tabs .kb-prog__day[role="tabpanel"] .kb-prog__dayname { display: none; }
.kb-prog__day[hidden] { display: none; }
.kb-prog__day:focus { outline: none; }

/* Colonne */
.kb-prog--columns .kb-prog__days { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(28px, 4vw, 56px); }
.kb-prog--list .kb-prog__day + .kb-prog__day { margin-top: clamp(48px, 7vw, 90px); }

/* Testata del giorno */
.kb-prog__dayhead { margin-bottom: 18px; }
.kb-prog__dayname { font-family: var(--kb-font-display); font-weight: 400; font-size: clamp(30px, 4vw, 52px); margin: 0; }
.kb-prog__daydate { display: block; margin-top: 6px; font-family: var(--kb-font-ui); font-size: 12px; letter-spacing: .25em; text-transform: uppercase; color: var(--kb-muted); }
.kb-prog__daynote { margin: 12px 0 0; color: var(--kb-text); font-size: .95em; }
.kb-prog--tabs .kb-prog__dayhead:not(:has(.kb-prog__daynote)) { display: none; }

/* Elenco appuntamenti */
.kb-prog__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--kb-line); }
.kb-prog__group {
	padding: 26px 0 10px; font-family: var(--kb-font-ui); font-size: 12px; font-weight: 600;
	letter-spacing: .32em; text-transform: uppercase; color: var(--kb-heading);
	display: flex; align-items: center; gap: 14px;
}
.kb-prog__group::before { content: ''; width: 28px; height: 1px; background: var(--kb-accent); }
.kb-prog__item {
	display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 0 clamp(16px, 3vw, 36px);
	padding: 20px 0; border-bottom: 1px solid var(--kb-line);
	position: relative; transition: background .4s, opacity .4s;
}
.kb-prog__item:hover { background: rgba(var(--kb-accent-rgb), .025); }
.kb-prog__time { font-family: var(--kb-font-ui); font-variant-numeric: tabular-nums; color: var(--kb-heading); line-height: 1.2; padding-top: 2px; }
.kb-prog__time time { display: block; font-size: 22px; font-weight: 600; letter-spacing: .02em; }
.kb-prog__end { display: block; font-size: 12px; color: var(--kb-muted); letter-spacing: .08em; margin-top: 4px; }
.kb-prog__end::before { content: '→ '; }
.kb-prog__time-txt { font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--kb-muted); }
.kb-prog__titlerow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.kb-prog__title { margin: 0; font-family: var(--kb-font-body); font-size: 1.15em; font-weight: 600; letter-spacing: .01em; color: var(--kb-heading); line-height: 1.3; }
.kb-prog__desc { margin-top: 6px; color: var(--kb-text); font-size: .95em; }
.kb-prog__desc a, .kb-prog__title a { color: var(--kb-heading); border-bottom: 1px solid var(--kb-line); }
.kb-prog__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin-top: 12px; font-family: var(--kb-font-ui); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--kb-muted); }
.kb-prog__place { display: inline-flex; align-items: center; gap: 6px; }
.kb-prog__tag { border: 1px solid var(--kb-line); padding: 4px 9px; color: var(--kb-heading); }
.kb-prog__link, .kb-prog__cal { display: inline-flex; align-items: center; gap: 6px; color: var(--kb-accent); }
.kb-prog__link .kb-icon { width: 13px; height: 13px; transition: transform .4s var(--kb-ease); }
.kb-prog__link:hover .kb-icon { transform: translateX(3px); }
.kb-prog__cal { color: var(--kb-muted); }
.kb-prog__cal:hover { color: var(--kb-heading); opacity: 1; }

/* In evidenza (headliner) */
.kb-prog__item.is-featured { background: linear-gradient(90deg, rgba(var(--kb-accent-rgb), .07), transparent 70%); }
.kb-prog__item.is-featured::before { content: ''; position: absolute; left: 0; top: -1px; bottom: -1px; width: 2px; background: var(--kb-accent); }
.kb-prog__item.is-featured .kb-prog__time { padding-left: 14px; }
.kb-prog__item.is-featured .kb-prog__title { font-family: var(--kb-font-display); font-weight: 400; font-size: clamp(26px, 2.6vw, 36px); line-height: 1.05; }

/* Giornata in corso */
.kb-prog__now {
	font-family: var(--kb-font-ui); font-size: 10px; font-weight: 600; letter-spacing: .25em; text-transform: uppercase;
	padding: 4px 9px 4px 20px; background: var(--kb-accent); color: var(--kb-bg); position: relative;
}
.kb-prog__now::before { content: ''; position: absolute; left: 8px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--kb-bg); animation: kb-pulse-dot 1.4s ease-in-out infinite; }
@keyframes kb-pulse-dot { 50% { opacity: .2; } }
.kb-prog__item.is-now { background: rgba(var(--kb-accent-rgb), .06); }
.kb-prog__item.is-past { opacity: .45; }

@media (max-width: 600px) {
	.kb-prog__item { grid-template-columns: 64px minmax(0, 1fr); padding: 16px 0; }
	.kb-prog__time time { font-size: 17px; }
	.kb-prog__item.is-featured .kb-prog__time { padding-left: 10px; }
	.kb-prog__meta { gap: 8px 14px; }
}
@container (max-width: 600px) {
	.kb-prog__item { grid-template-columns: 64px minmax(0, 1fr); }
}

/* ---------- Slider Logo ---------- */
.kb-logos .kb-sec__head { margin-bottom: clamp(28px, 4vw, 48px); }
.kb-logos__empty { text-align: center; color: var(--kb-muted); }
.kb-logos__slider {
	--pv: var(--kb-lpv, 5); --h: var(--kb-lh, 80px); --arrow: 48px;
	position: relative; width: var(--kb-lw, 100%); max-width: 100%; margin: 0 auto;
	display: flex; align-items: center; flex-wrap: wrap; gap: 0 clamp(8px, 1.5vw, 20px);
}
.kb-logos__viewport { flex: 1 1 0; min-width: 0; overflow: hidden; }
.kb-logos__track {
	--i: 0;
	list-style: none; margin: 0; padding: 0; display: flex;
	transform: translate3d(calc(var(--i) * -100% / var(--pv)), 0, 0);
	transition: transform .8s var(--kb-ease);
	touch-action: pan-y;
}
.kb-logos__track.is-jump { transition: none; }
.kb-logos__slide {
	flex: 0 0 calc(100% / var(--pv)); min-width: 0; margin: 0;
	padding: 0 calc(var(--kb-lgap, 48px) / 2);
	display: flex; align-items: center; justify-content: center;
}
.kb-logos__logo {
	display: flex; align-items: center; justify-content: center;
	width: 100%; height: var(--h); border: 0; color: inherit;
}
.kb-logos__img {
	display: block; width: auto; height: auto; max-width: 100%; max-height: 100%;
	object-fit: contain; -webkit-user-drag: none; user-select: none;
	transition: filter .4s ease, opacity .4s ease, transform .4s var(--kb-ease);
}
a.kb-logos__logo:hover .kb-logos__img, a.kb-logos__logo:focus-visible .kb-logos__img { transform: scale(1.05); }

/* Logo singolo o tutti visibili: fermi e centrati */
.kb-logos--static .kb-logos__track { justify-content: center; transform: none; transition: none; }
.kb-logos--static .kb-logos__arrow,
.kb-logos--static .kb-logos__dots { display: none; }
.kb-logos--static.kb-logos--single .kb-logos__slide { flex-basis: auto; width: min(100%, calc(var(--h) * 4)); }

/* Colore dei loghi */
.kb-logos--gray .kb-logos__img { filter: grayscale(1); opacity: .6; }
.kb-logos--gray .kb-logos__logo:hover .kb-logos__img { filter: none; opacity: 1; }
.kb-logos--white .kb-logos__img { filter: brightness(0) invert(1); opacity: .85; }
.kb-logos--black .kb-logos__img { filter: brightness(0); opacity: .85; }
.kb-logos--white .kb-logos__logo:hover .kb-logos__img,
.kb-logos--black .kb-logos__logo:hover .kb-logos__img { opacity: 1; }

/* Riquadro chiaro */
.kb-logos--tile .kb-logos__logo { background: #fff; padding: calc(var(--h) * .18); height: calc(var(--h) * 1.36); border-radius: 4px; }
.kb-logos--tile.kb-logos--white .kb-logos__img { filter: brightness(0); }

/* Frecce */
.kb-logos__arrow {
	flex: none; width: var(--arrow); height: var(--arrow); padding: 0; margin: 0;
	display: grid; place-items: center; cursor: pointer;
	background: transparent; color: var(--kb-heading); border: 0; border-radius: 0;
	transition: background-color .3s ease, color .3s ease, border-color .3s ease, transform .3s var(--kb-ease), opacity .3s ease;
}
.kb-logos__arrow svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.kb-logos__arrow--prev { order: -1; }
.kb-logos__arrow:focus-visible { outline: 2px solid var(--kb-heading); outline-offset: 3px; }
/* 1. Cerchio a contorno */
.kb-logos--arrows-circle .kb-logos__arrow { border: 1px solid var(--kb-line); border-radius: 50%; }
.kb-logos--arrows-circle .kb-logos__arrow:hover { background: var(--kb-heading); color: var(--kb-bg); border-color: var(--kb-heading); }
/* 2. Quadrato pieno */
.kb-logos--arrows-square .kb-logos__arrow { background: var(--kb-heading); color: var(--kb-bg); }
.kb-logos--arrows-square .kb-logos__arrow svg { stroke-width: 2.2; }
.kb-logos--arrows-square .kb-logos__arrow:hover { background: transparent; color: var(--kb-heading); box-shadow: inset 0 0 0 1px var(--kb-heading); }
/* 3. Freccia sottile, senza cornice */
.kb-logos--arrows-minimal { --arrow: 56px; }
.kb-logos--arrows-minimal .kb-logos__arrow { opacity: .55; }
.kb-logos--arrows-minimal .kb-logos__arrow svg { width: 34px; height: 34px; stroke-width: 1; }
.kb-logos--arrows-minimal .kb-logos__arrow:hover { opacity: 1; }
.kb-logos--arrows-minimal .kb-logos__arrow--prev:hover { transform: translateX(-4px); }
.kb-logos--arrows-minimal .kb-logos__arrow--next:hover { transform: translateX(4px); }

/* Pallini */
.kb-logos__dots { flex: 0 0 100%; display: flex; justify-content: center; flex-wrap: wrap; gap: 4px; margin-top: 28px; }
.kb-logos__dot { width: 22px; height: 22px; padding: 0; border: 0; background: none; cursor: pointer; display: grid; place-items: center; }
.kb-logos__dot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--kb-heading); opacity: .3; transition: opacity .3s ease, transform .3s ease; }
.kb-logos__dot.is-active::before { opacity: 1; transform: scale(1.35); }

@media (max-width: 767px) {
	.kb-logos__slider { --pv: var(--kb-lpv-m, 2); --h: var(--kb-lh-m, 56px); --arrow: 38px; gap: 0 6px; }
	.kb-logos--arrows-minimal { --arrow: 40px; }
	.kb-logos--arrows-minimal .kb-logos__arrow svg { width: 26px; height: 26px; }
	.kb-logos__slide { padding: 0 calc(var(--kb-lgap, 48px) / 4); }
}
@media (prefers-reduced-motion: reduce) {
	.kb-logos__track { transition-duration: .01s; }
}

/* ---------- Etichetta / titolo nascosti ----------
   Senza intestazione il contenuto parte dal bordo della sezione e resta centrato
   verticalmente: niente margini residui sopra o sotto. */
.kb-sec--notitle .kb-sec__head .kb-eyebrow { margin-bottom: 0; }
.kb-sec--nohead :is(.kb-about__body, .kb-map__body, .kb-formsec__body, .kb-longtext__inner, .kb-contact .kb-container) > :first-child { margin-top: 0; }
:is(.kb-about__body, .kb-map__body, .kb-formsec__body) > :last-child { margin-bottom: 0; }
.kb-sec--nohead .kb-formsec__grid { align-items: center; }

/* ---------- Cornice di foto/video (Bio) e mappa (Map) ----------
   Sottile staccata (predefinita), aderente al bordo con colore e spessore, oppure nessuna. */
.kb-frame--offset :is(.kb-about__frame, .kb-map__frame) { outline: var(--kb-fr-w, 1px) solid var(--kb-fr-c, var(--kb-line)); }
.kb-frame--tight :is(.kb-about__frame, .kb-map__frame) { outline: 0; box-shadow: 0 0 0 var(--kb-fr-w, 8px) var(--kb-fr-c, #fff); }
.kb-frame--none :is(.kb-about__frame, .kb-map__frame) { outline: 0; box-shadow: none; }
/* la cornice aderente sta all'esterno: lascia spazio perché non tocchi testo e bordi */
.kb-frame--tight .kb-about__media,
.kb-frame--tight .kb-map__media { padding: var(--kb-fr-w, 8px); }

/* ---------- FAQ ---------- */
.kb-faq { --kb-faq-acc: var(--kb-accent); }
.kb-faq__inner { max-width: calc(var(--kb-faq-w, 880px) + 2 * var(--kb-gutter)); }
.kb-faq--w-narrow { --kb-faq-w: 680px; }
.kb-faq--w-medium { --kb-faq-w: 880px; }
.kb-faq--w-wide { --kb-faq-w: var(--kb-container); }
.kb-faq .kb-sec__head { margin-bottom: 32px; }
.kb-faq__intro { margin-bottom: 40px; font-size: 1.05em; }
.kb-faq__group {
	margin: 56px 0 14px; font-family: var(--kb-font-ui); font-size: 12px; font-weight: 600;
	letter-spacing: .35em; text-transform: uppercase; color: var(--kb-muted);
}
.kb-faq__group:first-child { margin-top: 0; }

.kb-faq__item { margin: 0; }
.kb-faq__q {
	list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 24px;
	padding: 26px 0; color: var(--kb-heading);
	font-family: var(--kb-font-ui); font-weight: 600; font-size: clamp(16px, 1.5vw, 19px); line-height: 1.4;
	transition: color .3s ease;
	-webkit-tap-highlight-color: transparent;
}
.kb-faq__q::-webkit-details-marker { display: none; }
.kb-faq__q::marker { content: ''; }
.kb-faq--upper .kb-faq__qtext { text-transform: uppercase; letter-spacing: .06em; }
.kb-faq__q:hover, .kb-faq__item[open] > .kb-faq__q { color: var(--kb-faq-acc, var(--kb-accent)); }
.kb-faq__q:focus-visible { outline: 2px solid var(--kb-faq-acc, var(--kb-accent)); outline-offset: 4px; }
.kb-faq__qtext { flex: 1; min-width: 0; }

.kb-faq__icon { flex: none; width: 34px; height: 34px; display: grid; place-items: center; color: var(--kb-faq-acc, var(--kb-accent)); transition: transform .45s var(--kb-ease), background-color .3s ease, color .3s ease; }
.kb-faq__icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
/* più / meno: il trattino verticale ruota e sparisce */
.kb-faq__v { transform-origin: 12px 12px; transition: transform .45s var(--kb-ease), opacity .3s ease; }
.kb-faq__item[open] .kb-faq__v { transform: rotate(90deg); opacity: 0; }
/* freccia giù */
.kb-faq--icon-chevron .kb-faq__item[open] .kb-faq__icon { transform: rotate(180deg); }
/* freccia in un cerchio */
.kb-faq--icon-arrow .kb-faq__icon { width: 40px; height: 40px; border: 1px solid currentColor; border-radius: 50%; }
.kb-faq--icon-arrow .kb-faq__icon svg { width: 18px; height: 18px; }
.kb-faq--icon-arrow .kb-faq__item[open] .kb-faq__icon { transform: rotate(180deg); background: var(--kb-faq-acc, var(--kb-accent)); }
.kb-faq--icon-arrow .kb-faq__item[open] .kb-faq__icon svg { stroke: var(--kb-bg); }

.kb-faq__a { overflow: hidden; }
.kb-faq__a-inner { padding: 0 58px 30px 0; color: var(--kb-text); }
.kb-faq__a-inner > :first-child { margin-top: 0; }
.kb-faq__a-inner > :last-child { margin-bottom: 0; }

/* Stile 1: linee sottili */
.kb-faq--lines .kb-faq__item { border-bottom: 1px solid var(--kb-line); }
.kb-faq--lines .kb-faq__list > .kb-faq__item:first-child,
.kb-faq--lines .kb-faq__group + .kb-faq__item { border-top: 1px solid var(--kb-line); }
/* Stile 2: riquadri separati */
.kb-faq--boxes .kb-faq__item { border: 1px solid var(--kb-line); padding: 0 26px; margin-bottom: 12px; transition: border-color .3s ease; }
.kb-faq--boxes .kb-faq__item[open], .kb-faq--boxes .kb-faq__item:hover { border-color: var(--kb-faq-acc, var(--kb-accent)); }
.kb-faq--boxes .kb-faq__a-inner { padding-right: 0; }
/* Stile 3: riquadri pieni */
.kb-faq--bold .kb-faq__item { background: rgba(255,255,255,.045); padding: 0 26px; margin-bottom: 8px; box-shadow: inset 3px 0 0 transparent; transition: background-color .3s ease, box-shadow .3s ease; }
.kb-scheme--light.kb-faq--bold .kb-faq__item { background: rgba(0,0,0,.045); }
.kb-faq--bold .kb-faq__item:hover { background: rgba(255,255,255,.07); }
.kb-faq--bold .kb-faq__item[open] { box-shadow: inset 3px 0 0 var(--kb-faq-acc, var(--kb-accent)); background: rgba(255,255,255,.07); }
.kb-faq--bold .kb-faq__a-inner { padding-right: 0; }

/* Ricerca */
.kb-faq__search { position: relative; margin-bottom: 28px; }
.kb-faq__search .kb-icon { position: absolute; left: 18px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--kb-muted); pointer-events: none; }
.kb-faq__search input {
	width: 100%; padding: 16px 18px 16px 50px; font: inherit; font-size: 16px; color: var(--kb-heading);
	background: transparent; border: 1px solid var(--kb-line); border-radius: 0; -webkit-appearance: none; appearance: none;
	transition: border-color .3s ease;
}
.kb-faq__search input:focus { outline: 0; border-color: var(--kb-faq-acc, var(--kb-accent)); }
.kb-faq__none { color: var(--kb-muted); font-style: italic; margin: 18px 0 0; }
.kb-faq__item[hidden], .kb-faq__group[hidden] { display: none; }
.kb-faq mark { background: var(--kb-faq-acc, var(--kb-accent)); color: var(--kb-bg); padding: 0 2px; }

@media (max-width: 767px) {
	.kb-faq__q { padding: 20px 0; gap: 16px; }
	.kb-faq__a-inner { padding: 0 0 24px; }
	.kb-faq--boxes .kb-faq__item, .kb-faq--bold .kb-faq__item { padding: 0 18px; }
	.kb-faq__group { margin-top: 40px; }
}

/* Pagine che iniziano/finiscono con una sezione del tema: niente fascia vuota */
.kb-sec--tight.kb-sec--flush-top { padding-top: 0; }
.kb-sec--tight.kb-sec--flush-bottom { padding-bottom: 0; }
.kb-sec--flush-top .kb-entry > .kb-embed--full:first-child { margin-top: 0; }
.kb-sec--flush-bottom .kb-entry > .kb-embed--full:last-child { margin-bottom: 0; }
/* Sezioni dentro righe/colonne WPBakery o gruppi di blocchi: i contenitori non aggiungono spazio */
.kb-entry :is(.vc_row, .wpb_row, .vc_column_container, .vc_column-inner, .wpb_wrapper, .wp-block-group, .wp-block-group__inner-container):has(.kb-embed--full) {
	margin-top: 0 !important; margin-bottom: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important;
}
.kb-entry .wpb_wrapper > .kb-embed--full { margin-bottom: 0; }

/* ==========================================================================
   Fotogallery (tante foto)
   ========================================================================== */
.kb-photos .kb-sec__head { margin-bottom: 32px; }
.kb-photos__intro { margin-bottom: 40px; max-width: 760px; }
.kb-head--center .kb-photos__intro { margin-left: auto; margin-right: auto; text-align: center; }
.kb-photos__wrap { --pg: 8px; container-type: inline-size; }
.kb-photos--full .kb-photos__wrap { padding: 0 var(--pg); }
.kb-photos__list { list-style: none; margin: 0; padding: 0; }
.kb-photos__item { margin: 0; min-width: 0; position: relative; }
.kb-photos__item.is-more { display: none; }
.kb-photos__link { display: block; position: relative; overflow: hidden; height: 100%; background: #141414; border: 0; color: #fff; cursor: zoom-in; }
span.kb-photos__link { cursor: default; }
.kb-photos__img { display: block; width: 100%; height: 100%; object-fit: cover; }
.kb-photos__link:focus-visible { outline: 2px solid var(--kb-accent); outline-offset: 2px; }

/* 1. Griglia classica */
.kb-photos--grid .kb-photos__list { display: grid; grid-template-columns: repeat(var(--pc), minmax(0, 1fr)); gap: var(--pg); }
.kb-photos--grid .kb-photos__item { aspect-ratio: var(--pr); }

/* 2. Masonry: colonne, foto intere */
.kb-photos--masonry .kb-photos__list { columns: var(--pc); column-gap: var(--pg); }
.kb-photos--masonry .kb-photos__item { break-inside: avoid; margin-bottom: var(--pg); aspect-ratio: var(--r); }

/* 3. Righe giustificate: ogni riga ha la stessa altezza e riempie la larghezza */
.kb-photos--justified .kb-photos__list { display: flex; flex-wrap: wrap; gap: var(--pg); }
.kb-photos--justified .kb-photos__list::after { content: ''; flex-grow: 1000000; }
.kb-photos--justified .kb-photos__item { flex-grow: calc(var(--r) * 100); flex-basis: calc(var(--r) * var(--prh)); aspect-ratio: var(--r); }

/* 4. Mosaico: riquadri grandi e piccoli alternati */
.kb-photos--mosaic .kb-photos__list {
	display: grid; grid-template-columns: repeat(var(--pc), minmax(0, 1fr)); gap: var(--pg);
	grid-auto-rows: calc((100cqw - (var(--pc) - 1) * var(--pg)) / var(--pc));
	grid-auto-flow: dense;
}
.kb-photos--mosaic .kb-photos__item:nth-child(10n+1) { grid-column: span 2; grid-row: span 2; }
.kb-photos--mosaic .kb-photos__item:nth-child(10n+5) { grid-row: span 2; }
.kb-photos--mosaic .kb-photos__item:nth-child(10n+8) { grid-column: span 2; }

/* 5. Pellicola orizzontale */
.kb-photos--carousel .kb-photos__wrap { position: relative; }
.kb-photos__nav { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 18px; }
.kb-photos--full .kb-photos__nav { padding-right: var(--kb-gutter); }
.kb-photos__arrow {
	width: 48px; height: 48px; display: grid; place-items: center; padding: 0; cursor: pointer;
	border: 1px solid var(--kb-line); border-radius: 50%; background: transparent; color: var(--kb-heading);
	transition: background-color .3s ease, color .3s ease, border-color .3s ease, opacity .3s ease;
}
.kb-photos__arrow:hover { background: var(--kb-heading); color: var(--kb-bg); border-color: var(--kb-heading); }
.kb-photos__arrow:disabled { opacity: .3; pointer-events: none; }
.kb-photos__arrow svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.kb-photos--carousel .kb-photos__list {
	display: flex; gap: var(--pg); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
	overscroll-behavior-x: contain; scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.kb-photos--carousel .kb-photos__list::-webkit-scrollbar { display: none; }
.kb-photos--carousel .kb-photos__item { flex: none; height: calc(var(--prh) * 1.5); aspect-ratio: var(--r); max-width: 88vw; scroll-snap-align: start; }

/* 6. Nastri in movimento */
.kb-photos--marquee .kb-photos__wrap { overflow: hidden; }
.kb-photos__lane { overflow: hidden; margin-bottom: var(--pg); }
.kb-photos__lane:last-child { margin-bottom: 0; }
.kb-photos--marquee .kb-photos__list {
	display: flex; gap: var(--pg); width: max-content;
	animation: kb-photos-marquee calc(var(--n) * (11 - var(--pspeed)) * .7s) linear infinite;
}
.kb-photos__lane--rev .kb-photos__list { animation-direction: reverse; }
.kb-photos__lane:hover .kb-photos__list { animation-play-state: paused; }
.kb-photos--marquee .kb-photos__item { flex: none; height: var(--prh); aspect-ratio: var(--r); }
@keyframes kb-photos-marquee { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(calc(-50% - var(--pg) / 2), 0, 0); } }

/* Effetti al passaggio del mouse */
.kb-photos--hover-zoom .kb-photos__img { transition: transform 1.2s var(--kb-ease); }
.kb-photos--hover-zoom .kb-photos__link:hover .kb-photos__img { transform: scale(1.06); }
.kb-photos--hover-color .kb-photos__img { filter: grayscale(1); transition: filter .6s ease; }
.kb-photos--hover-color .kb-photos__link:hover .kb-photos__img { filter: none; }
.kb-photos--hover-dim .kb-photos__img { transition: opacity .4s ease; }
@media (hover: hover) {
	.kb-photos--hover-dim .kb-photos__list:hover .kb-photos__item:not(:hover) .kb-photos__img { opacity: .35; }
}
@media (hover: none) {
	.kb-photos--hover-color .kb-photos__img { filter: none; }
}

/* Didascalia */
.kb-photos__cap {
	position: absolute; left: 0; right: 0; bottom: 0; padding: 30px 14px 12px; font-size: 13px; line-height: 1.4;
	background: linear-gradient(to top, rgba(0,0,0,.75), transparent); color: #fff;
	opacity: 0; transform: translateY(6px); transition: opacity .35s ease, transform .35s ease; pointer-events: none;
}
.kb-photos__link:hover .kb-photos__cap, .kb-photos__link:focus-visible .kb-photos__cap { opacity: 1; transform: none; }

/* Comparsa mentre scorri */
.js .kb-photos--reveal:not(.kb-photos--marquee) .kb-photos__item { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--kb-ease), transform .8s var(--kb-ease); }
.js .kb-photos--reveal .kb-photos__item.is-in { opacity: 1; transform: none; }

/* Mostra altre */
.kb-photos__more { text-align: center; margin: clamp(30px, 4vw, 50px) 0 0; }
.kb-photos__left { font-style: normal; opacity: .55; margin-left: 4px; }
.kb-photos__left::before { content: '+'; }

@media (max-width: 767px) {
	.kb-photos__wrap { --pc: var(--pcm); }
	.kb-photos--justified .kb-photos__item { flex-basis: calc(var(--r) * var(--prh) * .55); }
	.kb-photos--carousel .kb-photos__item { height: calc(var(--prh) * 1.1); }
	.kb-photos--marquee .kb-photos__item { height: calc(var(--prh) * .6); }
	.kb-photos--mosaic .kb-photos__item:nth-child(10n+8) { grid-column: auto; }
	.kb-photos__arrow { width: 40px; height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
	.kb-photos--marquee .kb-photos__lane { overflow-x: auto; }
	.kb-photos--marquee .kb-photos__list { animation: none; }
	.kb-photos--marquee .kb-photos__item.is-clone { display: none; }
}

/* ---------- Visualizzatore a schermo intero ---------- */
.kb-plb {
	position: fixed; inset: 0; z-index: 400; background: rgba(0,0,0,.985); color: #fff;
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
	display: grid; grid-template-rows: auto 1fr auto; opacity: 0; transition: opacity .35s ease;
	touch-action: pan-y; user-select: none; -webkit-user-select: none;
}
.kb-plb.is-open { opacity: 1; }
.kb-plb__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px clamp(14px, 3vw, 28px); font-family: var(--kb-font-ui); font-size: 12px; letter-spacing: .25em; }
.kb-plb__tools { display: flex; gap: 8px; }
.kb-plb__btn {
	width: 46px; height: 46px; display: grid; place-items: center; padding: 0; cursor: pointer;
	background: rgba(255,255,255,.06); color: #fff; border: 1px solid rgba(255,255,255,.18); border-radius: 50%;
	transition: background-color .25s ease, color .25s ease;
}
.kb-plb__btn:hover { background: #fff; color: #000; }
.kb-plb__btn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.kb-plb__stage { position: relative; display: flex; align-items: center; justify-content: center; min-height: 0; padding: 0 clamp(8px, 7vw, 100px); }
.kb-plb__img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; transition: opacity .3s ease, transform .3s ease; }
.kb-plb__img.is-loading { opacity: .25; }
.kb-plb__nav { position: absolute; top: 50%; transform: translateY(-50%); }
.kb-plb__nav--prev { left: clamp(8px, 2vw, 28px); }
.kb-plb__nav--next { right: clamp(8px, 2vw, 28px); }
.kb-plb__cap { text-align: center; padding: 14px 20px 22px; font-size: 14px; color: rgba(255,255,255,.8); min-height: 24px; }
.kb-plb__spin { position: absolute; width: 34px; height: 34px; border: 2px solid rgba(255,255,255,.2); border-top-color: #fff; border-radius: 50%; animation: kb-spin .9s linear infinite; opacity: 0; transition: opacity .2s; pointer-events: none; }
@keyframes kb-spin { to { transform: rotate(360deg); } }
.kb-plb.is-loading .kb-plb__spin { opacity: 1; }
@media (max-width: 767px) {
	.kb-plb__stage { padding: 0; }
	.kb-plb__nav { width: 40px; height: 40px; background: rgba(0,0,0,.45); border-color: rgba(255,255,255,.3); }
	.kb-plb__nav--prev { left: 8px; } .kb-plb__nav--next { right: 8px; }
	.kb-plb__cap { padding: 14px 20px calc(22px + env(safe-area-inset-bottom)); }
}
