.lamagna-gallery-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(10px, 1.2vw, 16px);
	max-width: 1240px;
	margin-inline: auto;
}

.lamagna-gallery-item {
	aspect-ratio: 4 / 3;
	min-height: 0;
	margin: 0 !important;
	overflow: hidden;
	position: relative;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	outline: 0 !important;
}

.lamagna-gallery-item::before,
.lamagna-gallery-item::after {
	content: none !important;
	display: none !important;
}

.lamagna-gallery-item__button {
	appearance: none;
	display: block;
	position: relative;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	overflow: hidden;
	background: transparent;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	outline: 0;
	cursor: zoom-in;
}

.lamagna-gallery-item__button::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 52%, rgba(79, 21, 31, .82));
	opacity: .1;
	pointer-events: none;
	transition: opacity .35s ease;
}

.lamagna-gallery-item img {
	display: block;
	width: 100%;
	height: 100%;
	margin: 0 !important;
	padding: 0 !important;
	object-fit: cover;
	object-position: center;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	outline: 0 !important;
	transition: filter .4s ease, transform .6s cubic-bezier(.2, .7, .2, 1);
}

.lamagna-gallery-item figcaption {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 2;
	margin: 0;
	padding: 44px 16px 14px;
	background: linear-gradient(180deg, transparent, rgba(79, 21, 31, .92));
	color: var(--lamagna-ivory, #f5f1e8);
	font: 600 .72rem/1.35 var(--lamagna-sans, Arial, sans-serif);
	letter-spacing: .06em;
	opacity: 0;
	pointer-events: none;
	text-transform: uppercase;
	transform: translateY(8px);
	transition: opacity .3s ease, transform .3s ease;
}

.lamagna-gallery-item__zoom {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 3;
	width: 38px;
	height: 38px;
	border: 1px solid rgba(245, 241, 232, .7);
	border-radius: 50%;
	background: rgba(79, 21, 31, .78);
	opacity: 0;
	pointer-events: none;
	transform: scale(.88);
	transition: opacity .3s ease, transform .3s ease;
}

.lamagna-gallery-item__zoom::before,
.lamagna-gallery-item__zoom::after {
	content: '';
	position: absolute;
	left: 50%;
	top: 50%;
	background: #fffdf8;
	transform: translate(-50%, -50%);
}

.lamagna-gallery-item__zoom::before { width: 15px; height: 1px; }
.lamagna-gallery-item__zoom::after { width: 1px; height: 15px; }

.lamagna-gallery-item:hover img,
.lamagna-gallery-item:focus-within img {
	filter: saturate(1.05) contrast(1.02);
	transform: scale(1.035);
}

.lamagna-gallery-item:hover .lamagna-gallery-item__button::after,
.lamagna-gallery-item:focus-within .lamagna-gallery-item__button::after { opacity: .7; }

.lamagna-gallery-item:hover figcaption,
.lamagna-gallery-item:focus-within figcaption,
.lamagna-gallery-item:hover .lamagna-gallery-item__zoom,
.lamagna-gallery-item:focus-within .lamagna-gallery-item__zoom {
	opacity: 1;
	transform: none;
}

.lamagna-gallery-item__button:focus-visible {
	outline: 3px solid var(--lamagna-gold, #a8852d);
	outline-offset: -5px;
}

html.lamagna-lightbox-open { overflow: hidden; }
.lamagna-gallery-lightbox[hidden] { display: none !important; }

.lamagna-gallery-lightbox {
	display: grid;
	position: fixed;
	inset: 0;
	z-index: 999999;
	align-items: center;
	justify-items: center;
	padding: clamp(18px, 4vw, 54px);
	background: rgba(25, 10, 13, .95);
}

.lamagna-gallery-lightbox__figure {
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto;
	max-width: min(1080px, calc(100vw - 150px));
	max-height: calc(100vh - 70px);
	margin: 0;
}

.lamagna-gallery-lightbox__image {
	display: block;
	max-width: 100%;
	max-height: calc(100vh - 135px);
	object-fit: contain;
	box-shadow: 0 22px 70px rgba(0, 0, 0, .42);
}

.lamagna-gallery-lightbox__caption {
	padding-top: 13px;
	color: var(--lamagna-ivory, #f5f1e8);
	font: 500 clamp(1.05rem, 2vw, 1.45rem)/1.25 var(--lamagna-serif, Georgia, serif);
	text-align: center;
}

.lamagna-gallery-lightbox__close,
.lamagna-gallery-lightbox__nav {
	display: flex;
	position: absolute;
	align-items: center;
	justify-content: center;
	background: rgba(79, 21, 31, .85);
	border: 1px solid rgba(168, 133, 45, .8);
	color: #fffdf8;
	cursor: pointer;
	font-family: Arial, sans-serif;
}

.lamagna-gallery-lightbox__close {
	top: 20px;
	right: 22px;
	width: 48px;
	height: 48px;
	font-size: 30px;
}

.lamagna-gallery-lightbox__nav {
	top: 50%;
	width: 54px;
	height: 54px;
	border-radius: 50%;
	font-size: 42px;
	transform: translateY(-50%);
}

.lamagna-gallery-lightbox__nav--prev { left: 22px; }
.lamagna-gallery-lightbox__nav--next { right: 22px; }

.lamagna-gallery-lightbox__close:hover,
.lamagna-gallery-lightbox__close:focus-visible,
.lamagna-gallery-lightbox__nav:hover,
.lamagna-gallery-lightbox__nav:focus-visible {
	background: var(--lamagna-gold, #a8852d);
	outline: 2px solid #fffdf8;
	outline-offset: 3px;
}

.lamagna-gallery-lightbox__counter {
	position: absolute;
	top: 27px;
	left: 22px;
	color: #fffdf8;
	font: 700 .72rem/1 var(--lamagna-sans, Arial, sans-serif);
	letter-spacing: .12em;
}

@media (max-width: 1050px) {
	.lamagna-gallery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
	.lamagna-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 430px) {
	.lamagna-gallery-grid { grid-template-columns: 1fr; gap: 12px; }
	.lamagna-gallery-item { aspect-ratio: 16 / 11; }
	.lamagna-gallery-item figcaption { opacity: 1; transform: none; }
	.lamagna-gallery-lightbox { padding: 60px 15px 76px; }
	.lamagna-gallery-lightbox__figure { max-width: 100%; }
	.lamagna-gallery-lightbox__nav { bottom: 13px; top: auto; transform: none; }
	.lamagna-gallery-lightbox__nav--prev { left: calc(50% - 66px); }
	.lamagna-gallery-lightbox__nav--next { right: calc(50% - 66px); }
}

@media (hover: none) {
	.lamagna-gallery-item figcaption { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.lamagna-gallery-item img,
	.lamagna-gallery-item figcaption,
	.lamagna-gallery-item__zoom { transition: none; }
}
