.rfg{position:relative;width:100%;box-sizing:border-box}
.rfg,.rfg *{box-sizing:border-box}
.rfg figure{margin:0;min-width:0}
.rfg .rfg-media-shell{position:relative;overflow:hidden;border:var(--rfg-border);border-radius:var(--rfg-radius);background:var(--rfg-bg);box-shadow:var(--rfg-shadow)}
.rfg .rfg-link{display:block;width:100%;height:100%;padding:0;margin:0;border:0;background:transparent;color:inherit;text-decoration:none;appearance:none;-webkit-appearance:none;box-shadow:none;font:inherit;line-height:0;text-align:initial}
.rfg .rfg-media{display:block;width:100%;height:var(--rfg-height);object-fit:var(--rfg-fit);border:0}
.rfg .rfg-caption{font-size:.9rem;line-height:1.4}
.rfg .rfg-caption--below{padding:9px 11px;background:var(--rfg-caption-bg);color:var(--rfg-caption-color);border-radius:0 0 var(--rfg-radius) var(--rfg-radius)}
.rfg .rfg-caption--overlay{position:absolute;left:0;right:0;bottom:0;padding:12px;background:linear-gradient(transparent,rgba(0,0,0,.82));color:#fff;pointer-events:none}
.rfg .rfg-comments{display:none}
.rfg .rfg-media{--rfg-media-scale:1;--rfg-media-rotate:0deg;transform:scale(var(--rfg-media-scale)) rotate(var(--rfg-media-rotate));transition:transform .45s ease,filter .35s ease}
.rfg .rfg-filter--zoom:hover .rfg-media{--rfg-media-scale:1.06}
.rfg .rfg-filter--rotate:hover .rfg-media{--rfg-media-rotate:2deg}
.rfg .rfg-filter--zoomrotate:hover .rfg-media{--rfg-media-scale:1.06;--rfg-media-rotate:2deg}
.rfg .rfg-filter--gray:hover .rfg-media{filter:grayscale(1)}
.rfg .rfg-caption--hidden{display:none}

/* Hover configurabile dal preset. Si compone con l'effetto per-item. */
.rfg.rfg-hover--zoom .rfg-media{--rfg-media-scale:1}
.rfg.rfg-hover--zoom:hover .rfg-media{--rfg-media-scale:1.06}
.rfg.rfg-hover--lift .rfg-media-shell,.rfg.rfg-hover--zoom-lift .rfg-media-shell{transition:transform .3s ease,box-shadow .3s ease}
.rfg.rfg-hover--lift:hover .rfg-media-shell,.rfg.rfg-hover--zoom-lift:hover .rfg-media-shell{transform:translateY(-5px);box-shadow:0 10px 24px rgba(15,23,42,.16)}
.rfg.rfg-hover--zoom-lift:hover .rfg-media{--rfg-media-scale:1.06}

/* GRID: tre colonne reali, ogni tessera occupa solo lo spazio della propria immagine. */
.rfg--grid .rfg-masonry-grid{
	display:flex;
	flex-wrap:wrap;
	align-items:flex-start;
	gap:var(--rfg-gap);
	width:100%;
}
.rfg--grid .rfg-item{
	position:relative;
	flex:0 0 calc((100% - (var(--rfg-cols) - 1) * var(--rfg-gap)) / var(--rfg-cols));
	width:calc((100% - (var(--rfg-cols) - 1) * var(--rfg-gap)) / var(--rfg-cols));
	min-width:0;
	margin:0;
	padding:0;
}
.rfg--grid .rfg-media-shell{
	width:100%;
	height:auto;
	overflow:hidden;
}
.rfg--grid .rfg-media{
	display:block;
	width:100% !important;
	height:auto !important;
	min-height:0;
	max-width:100%;
	object-fit:var(--rfg-fit);
}
.rfg--grid .rfg-media-shell img{display:block;width:100% !important;height:auto !important;object-fit:contain}
.rfg--grid .rfg-media-shell iframe{display:block;width:100%;aspect-ratio:16/9;height:auto!important}
.rfg--grid .rfg-caption--below{border-radius:0 0 var(--rfg-radius) var(--rfg-radius)}

/* MASONRY: cascading columns. Items have fixed column widths/spans and
   natural image-derived heights; no row justification and no stretching. */
.rfg--masonry .rfg-masonry-grid{
	position:relative;
	width:100%;
	min-height:20px;
}
.rfg--masonry .rfg-item{
	position:absolute;
	margin:0;
	padding:0;
	min-width:0;
}
.rfg--masonry .rfg-media-shell{
	width:100%;
	height:100%;
	min-height:0;
	overflow:hidden;
}
.rfg--masonry .rfg-media{
	display:block;
	width:100% !important;
	height:100% !important;
	min-height:0;
	max-width:100%;
	object-fit:contain;
}
.rfg--masonry .rfg-media-shell img{display:block;width:100% !important;height:100% !important;object-fit:contain}
.rfg--masonry .rfg-media-shell iframe{display:block;width:100%;height:100%!important;aspect-ratio:auto}

@media(max-width:900px){
	.rfg--grid .rfg-item{flex-basis:calc((100% - (min(2,var(--rfg-cols)) - 1) * var(--rfg-gap)) / min(2,var(--rfg-cols)));width:calc((100% - (min(2,var(--rfg-cols)) - 1) * var(--rfg-gap)) / min(2,var(--rfg-cols)))}
}
@media(max-width:600px){
	.rfg--grid .rfg-item{flex-basis:100%;width:100%}
}

/* Lightbox: i tre controlli sono sempre esterni all'immagine. */
body.rfg-lightbox-open{overflow:hidden}
.rfg-lightbox{
	position:fixed;inset:0;z-index:999999;
	display:flex;align-items:center;justify-content:center;
	padding:20px;
	background:rgba(5,10,20,.72);
	backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
	opacity:0;visibility:hidden;pointer-events:none;
	transition:opacity .25s ease,visibility .25s ease;
}
.rfg-lightbox.is-open{opacity:1;visibility:visible;pointer-events:auto}
.rfg-lightbox-backdrop{position:absolute;inset:0}
.rfg-lightbox-dialog{
	position:relative;z-index:2;
	width:min(96vw,1500px);height:min(94vh,1000px);
	display:flex;align-items:center;justify-content:center;outline:none;
}
.rfg-lightbox-stage{
	position:relative;width:100%;height:100%;
	display:flex;align-items:center;justify-content:center;
	padding:calc(var(--rfg-lightbox-offset) + 56px);
}
.rfg-lightbox-frame{
	position:relative;display:inline-flex;align-items:center;justify-content:center;
	max-width:100%;max-height:100%;
}
.rfg-lightbox-image{
	display:block;width:auto;height:auto;object-fit:contain;
	max-width:100%;max-height:calc(min(94vh,1000px) - 2 * (var(--rfg-lightbox-offset) + 56px));
	border-radius:10px;box-shadow:0 20px 70px rgba(0,0,0,.45);
	user-select:none;-webkit-user-drag:none;transition:opacity .15s ease;
}
.rfg-lightbox-caption{
	position:absolute;left:50%;bottom:calc(var(--rfg-lightbox-offset) * -1 - 8px);
	transform:translate(-50%,100%);
	max-width:min(90%,900px);padding:8px 14px;border-radius:8px;
	background:rgba(0,0,0,.68);color:#fff;font-size:14px;line-height:1.45;text-align:center;
}
.rfg-lightbox-close,.rfg-lightbox-prev,.rfg-lightbox-next{
	position:absolute;z-index:4;display:flex;align-items:center;justify-content:center;
	border:1px solid rgba(255,255,255,.22);background:rgba(17,24,39,.9);color:#fff;
	cursor:pointer;box-shadow:0 5px 20px rgba(0,0,0,.3);transition:background .2s ease,transform .2s ease;
}
.rfg-lightbox-close{
	top:calc((var(--rfg-lightbox-offset) + 44px) * -1);
	right:calc((var(--rfg-lightbox-offset) + 44px) * -1);
	width:44px;height:44px;border-radius:50%;font-size:27px;line-height:1
}
.rfg-lightbox-prev,.rfg-lightbox-next{
	top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;font-size:25px
}
.rfg-lightbox-prev{left:calc(var(--rfg-lightbox-offset) * -1 - 48px)}
.rfg-lightbox-next{right:calc(var(--rfg-lightbox-offset) * -1 - 48px)}
.rfg-lightbox-close:hover,.rfg-lightbox-prev:hover,.rfg-lightbox-next:hover{background:rgba(0,0,0,.98)}
.rfg-lightbox-counter{
	position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:4;
	padding:5px 10px;border-radius:999px;background:rgba(0,0,0,.58);color:#fff;font-size:13px;
}
.rfg-lightbox-loading{
	position:absolute;left:50%;top:50%;width:36px;height:36px;margin:-18px;
	border:3px solid rgba(255,255,255,.28);border-top-color:#fff;border-radius:50%;
	animation:rfgLightboxSpin .8s linear infinite
}
@keyframes rfgLightboxSpin{to{transform:rotate(360deg)}}
.rfg-lightbox.is-single .rfg-lightbox-prev,.rfg-lightbox.is-single .rfg-lightbox-next,.rfg-lightbox.is-single .rfg-lightbox-counter{display:none}
/* Mobile overrides are independent from desktop settings. */
@media(max-width:700px){
	.rfg{
		--rfg-cols:var(--rfg-m-cols);
		--rfg-gap:var(--rfg-m-gap);
		--rfg-border:var(--rfg-m-border);
		--rfg-radius:var(--rfg-m-radius);
		--rfg-shadow:var(--rfg-m-shadow);
		--rfg-bg:var(--rfg-m-bg);
		--rfg-height:var(--rfg-m-height);
		--rfg-fit:var(--rfg-m-fit);
		--rfg-caption-bg:var(--rfg-m-caption-bg);
		--rfg-caption-color:var(--rfg-m-caption-color);
		--rfg-lightbox-offset:var(--rfg-m-lightbox-offset);
	}
	/* Mobile mode can differ from desktop mode. */
	.rfg[data-mobile-mode="grid"] .rfg-masonry-grid{position:relative;width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--rfg-gap);min-height:0}
	.rfg[data-mobile-mode="grid"] .rfg-item{position:relative;left:auto!important;top:auto!important;width:calc((100% - (var(--rfg-cols) - 1) * var(--rfg-gap)) / var(--rfg-cols))!important;height:auto!important;flex:0 0 calc((100% - (var(--rfg-cols) - 1) * var(--rfg-gap)) / var(--rfg-cols));margin:0}
	.rfg[data-mobile-mode="grid"] .rfg-media-shell{height:auto!important;width:100%;overflow:hidden}
	.rfg[data-mobile-mode="grid"] .rfg-media{width:100%!important;height:auto!important;object-fit:var(--rfg-fit)}
	.rfg[data-mobile-mode="grid"] .rfg-media-shell img{width:100%!important;height:auto!important;object-fit:contain}
	.rfg[data-mobile-mode="masonry"] .rfg-masonry-grid{position:relative;display:block;width:100%;min-height:20px}
	.rfg[data-mobile-mode="masonry"] .rfg-item{position:absolute;margin:0;padding:0;min-width:0}
	.rfg[data-mobile-mode="masonry"] .rfg-media-shell{width:100%;height:100%;overflow:hidden}
	.rfg[data-mobile-mode="masonry"] .rfg-media{width:100%!important;height:100%!important;object-fit:contain}
	.rfg[data-mobile-mode="masonry"] .rfg-media-shell img{width:100%!important;height:100%!important;object-fit:contain}

	/* Mobile hover is a separate setting. */
	.rfg[data-mobile-hover="none"] .rfg-media-shell{transform:none!important;box-shadow:var(--rfg-shadow)!important}
	.rfg[data-mobile-hover="zoom"] .rfg-media{transform:scale(1)}
	.rfg[data-mobile-hover="zoom"] .rfg-media-shell:hover .rfg-media{transform:scale(1.06)}
	.rfg[data-mobile-hover="lift"] .rfg-media-shell,.rfg[data-mobile-hover="zoom-lift"] .rfg-media-shell{transition:transform .3s ease,box-shadow .3s ease}
	.rfg[data-mobile-hover="lift"] .rfg-media-shell:hover,.rfg[data-mobile-hover="zoom-lift"] .rfg-media-shell:hover{transform:translateY(-5px);box-shadow:0 10px 24px rgba(15,23,42,.16)}
	.rfg[data-mobile-hover="zoom-lift"] .rfg-media-shell:hover .rfg-media{transform:scale(1.06)}
	.rfg[data-mobile-hover="gray"] .rfg-media-shell:hover .rfg-media{filter:grayscale(1)}

	/* Mobile caption is independent from desktop caption. */
	.rfg[data-mobile-caption="hidden"] .rfg-caption{display:none!important}
	.rfg[data-mobile-caption="below"] .rfg-caption--overlay{display:none!important}
	.rfg[data-mobile-caption="overlay"] .rfg-caption--below{display:none!important}
	.rfg[data-mobile-caption="overlay"] .rfg-caption--overlay{display:block}

}

/* MOBILE (telefono, anche in orizzontale): nessun lightbox, immagine a schermo intero.
   Le regole si attivano con la classe .rfg-mobile-fullscreen impostata dal JS, cosi' restano valide
   anche dopo la rotazione (quando la larghezza supera 700px). Tablet e desktop non sono coinvolti. */
.rfg-lightbox.rfg-mobile-fullscreen{padding:0;background:#000;backdrop-filter:none;-webkit-backdrop-filter:none;touch-action:none;overflow:hidden;width:100%;height:100%}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-backdrop{display:none}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-dialog{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-stage{position:relative;width:100%;height:100%;padding:0}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-frame{position:static;display:block;width:100%;height:100%;max-width:none;max-height:none}
/* Immagine piu' piccola dello schermo: dimensione originale; piu' grande: fit senza perdere le proporzioni. */
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-image{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:0;box-shadow:none}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-close,
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-prev,
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-next{position:absolute;margin:0;background:rgba(17,24,39,.6);padding:0;line-height:1}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-close{
	width:var(--rfg-m-close-size,44px);height:var(--rfg-m-close-size,44px);
	top:var(--rfg-m-close-top,12px);right:var(--rfg-m-close-right,12px);left:auto;bottom:auto;transform:none;
	font-size:calc(var(--rfg-m-close-size,44px) * .6);
}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-prev,
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-next{
	width:var(--rfg-m-arrow-size,44px);height:var(--rfg-m-arrow-size,44px);
	top:var(--rfg-m-arrow-top,50%);bottom:auto;transform:translateY(-50%);
	font-size:calc(var(--rfg-m-arrow-size,44px) * .5);
}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-prev{left:var(--rfg-m-arrow-offset,12px);right:auto}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-next{right:var(--rfg-m-arrow-offset,12px);left:auto}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-counter{top:8px}
.rfg-lightbox.rfg-mobile-fullscreen .rfg-lightbox-caption{left:50%;bottom:8px;transform:translateX(-50%);font-size:12px;max-width:80%}
/* Telefono in verticale senza lock dell'orientamento: la vista viene ruotata di 90deg.
   Le dimensioni (--rfg-vw/--rfg-vh) sono scritte dal JS in pixel. */
.rfg-lightbox.rfg-mobile-fullscreen.rfg-rotated .rfg-lightbox-dialog{
	inset:auto;top:50%;left:50%;
	width:var(--rfg-vh,100vh);height:var(--rfg-vw,100vw);
	transform:translate(-50%,-50%) rotate(90deg);
}
.rfg-lightbox:fullscreen,.rfg-lightbox:-webkit-full-screen{background:#000}
@media(max-width:700px){
	.rfg[data-mobile-filter="none"] .rfg-media{transform:none!important;filter:none!important}
	.rfg[data-mobile-filter="zoom"] .rfg-media{transform:none!important;filter:none!important}
	.rfg[data-mobile-filter="zoom"] .rfg-media-shell:hover .rfg-media{transform:scale(1.06)!important}
	.rfg[data-mobile-filter="rotate"] .rfg-media{transform:none!important;filter:none!important}
	.rfg[data-mobile-filter="rotate"] .rfg-media-shell:hover .rfg-media{transform:rotate(2deg)!important}
	.rfg[data-mobile-filter="zoomrotate"] .rfg-media{transform:none!important;filter:none!important}
	.rfg[data-mobile-filter="zoomrotate"] .rfg-media-shell:hover .rfg-media{transform:scale(1.06) rotate(2deg)!important}
	.rfg[data-mobile-filter="gray"] .rfg-media{transform:none!important}
	.rfg[data-mobile-filter="gray"] .rfg-media-shell:hover .rfg-media{filter:grayscale(1)!important}
}
