/* =============================================================
   Projects gallery + lightbox (template-parts/sections/projects-gallery.php).
   Loaded only on routes that render the gallery.
   The filter pills deliberately match the before/after filters in home.css.
   ============================================================= */

.dm-projects__head { text-align: center; max-width: 900px; margin-inline: auto; }
.dm-projects__text { margin-top: 14px; color: rgba(255, 255, 255, .8); font-size: clamp(15px, .94vw, 18px); line-height: 1.65; }

.dm-projects__filters {
	margin-top: 40px;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
}
.dm-projects__filter {
	min-width: 160px;
	min-height: var(--tab-height, 52px);
	padding: 10px 22px;
	border-radius: var(--radius-base);
	border: 1px solid rgba(255, 255, 255, .3);
	background: transparent;
	color: #fff;
	font-size: clamp(15px, 1.04vw, 20px);
	font-weight: var(--fw-medium);
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.dm-projects__filter:hover { border-color: var(--color-primary); }
.dm-projects__filter.is-active {
	background: rgba(255, 255, 255, .1);
	color: var(--color-primary);
	font-weight: var(--fw-semibold);
}

.dm-projects__grid {
	margin-top: 40px;
	list-style: none;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(16px, 1.6vw, 28px);
}

.dm-project-card[hidden] { display: none; }
.dm-project-card__figure { margin: 0; }
.dm-project-card__open {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	border-radius: var(--radius-card);
	overflow: hidden;
	cursor: pointer;
}
.dm-project-card__img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 400 / 376;
	object-fit: cover;
	transition: transform .3s ease, opacity .3s ease;
}
.dm-project-card__open:hover .dm-project-card__img { transform: scale(1.04); }
.dm-project-card__open:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 3px; }
.dm-project-card__caption { margin-top: 10px; font-size: 14px; color: rgba(255, 255, 255, .7); }

/* ---------- Lightbox ---------- */

.dm-lightbox {
	width: min(92vw, 900px);
	max-width: none;
	padding: 0;
	border: 0;
	background: none;
	color: #fff;
	overflow: visible;
}
.dm-lightbox::backdrop { background: rgba(0, 0, 0, .82); }
/* Three rows — close, image, counter — so nothing is positioned outside the
   dialog where it could land on top of the sticky header. */
.dm-lightbox__inner {
	position: relative;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	grid-template-rows: auto auto auto;
	align-items: center;
	gap: clamp(8px, 1.5vw, 20px);
}
.dm-lightbox__img {
	grid-column: 2;
	grid-row: 2;
	display: block;
	width: 100%;
	height: auto;
	max-height: 72vh;
	object-fit: contain;
	border-radius: var(--radius-card);
	background: var(--color-bg-card-alt, #1f1f1f);
}
.dm-lightbox__nav,
.dm-lightbox__close {
	width: 46px;
	height: 46px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .3);
	background: rgba(0, 0, 0, .5);
	color: #fff;
	cursor: pointer;
	transition: background-color .2s ease, border-color .2s ease, opacity .2s ease;
}
.dm-lightbox__nav:hover:not(:disabled),
.dm-lightbox__close:hover { background: var(--color-primary); border-color: var(--color-primary); }
.dm-lightbox__nav:disabled { opacity: .35; cursor: default; }
.dm-lightbox__icon { width: 20px; height: 20px; }
.dm-lightbox__close { grid-column: 3; grid-row: 1; justify-self: end; }
.dm-lightbox__nav--prev { grid-column: 1; grid-row: 2; }
.dm-lightbox__nav--next { grid-column: 3; grid-row: 2; }
.dm-lightbox__count {
	grid-column: 2;
	grid-row: 3;
	text-align: center;
	font-size: 15px;
	color: rgba(255, 255, 255, .75);
}

@media (max-width: 1024px) {
	.dm-projects__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 768px) {
	.dm-projects__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.dm-projects__filter { min-width: 0; flex: 1 1 calc(50% - 14px); font-size: 16px; }
	.dm-lightbox__inner { grid-template-columns: minmax(0, 1fr); }
	.dm-lightbox__close { grid-column: 1; grid-row: 1; }
	.dm-lightbox__img { grid-column: 1; grid-row: 2; }
	.dm-lightbox__count { grid-column: 1; grid-row: 3; }
	.dm-lightbox__nav { position: absolute; top: 55%; transform: translateY(-50%); }
	.dm-lightbox__nav--prev { left: 8px; }
	.dm-lightbox__nav--next { right: 8px; }
}

@media (max-width: 480px) {
	.dm-projects__grid { grid-template-columns: minmax(0, 1fr); }
}
