/**
 * Veridian Marketing | Joshua One Project Masonry
 * Front-end styles
 */

.vjopm-single {
	padding: 40px 0 60px;
}

.vjopm-container {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 20px;
}

.vjopm-header {
	margin-bottom: 24px;
}

.vjopm-breadcrumb {
	margin-top: 10px;
	font-size: 14px;
	line-height: 1.4;
}

.vjopm-breadcrumb__link {
	color: #375EAB;
	text-decoration: none;
}

.vjopm-breadcrumb__link:hover,
.vjopm-breadcrumb__link:focus {
	text-decoration: underline;
}

.vjopm-breadcrumb__link:focus {
	outline: 2px solid #375EAB;
	outline-offset: 3px;
}

.vjopm-breadcrumb__sep {
	margin: 0 8px;
	color: rgba(0, 0, 0, 0.35);
}

.vjopm-breadcrumb__current {
	color: rgba(0, 0, 0, 0.7);
}

.vjopm-grid {
	position: relative;
}

.vjopm-sizer,
.vjopm-item {
	width: 100%;
}

@media (min-width: 700px) {
	.vjopm-sizer,
	.vjopm-item {
		/* 2 columns with a 20px gutter */
		width: calc((100% - 20px) / 2);
	}
}

@media (min-width: 1024px) {
	.vjopm-sizer,
	.vjopm-item {
		/* 3 columns with a 24px gutter */
		width: calc((100% - 48px) / 3);
	}
}

@media (min-width: 1280px) {
	.vjopm-sizer,
	.vjopm-item {
		/* 3 columns with a wider 32px gutter (more breathing room on large screens) */
		width: calc((100% - 64px) / 3);
	}
}

/* Gutter sizing for Masonry (horizontal space between columns) */
.vjopm-gutter-sizer {
	width: 16px;
	height: 0;
}

@media (min-width: 700px) {
	.vjopm-gutter-sizer {
		width: 20px;
	}
}

@media (min-width: 1024px) {
	.vjopm-gutter-sizer {
		width: 24px;
	}
}

@media (min-width: 1280px) {
	.vjopm-gutter-sizer {
		width: 32px;
	}
}

/* Vertical spacing is controlled by margins (Masonry accounts for margins in item size) */
.vjopm-item {
	/* Reset default figure margins (some themes add 40px left/right by default) */
	margin: 0 0 16px;
}

@media (min-width: 700px) {
	.vjopm-item {
		margin-bottom: 20px;
	}
}

@media (min-width: 1024px) {
	.vjopm-item {
		margin-bottom: 24px;
	}
}

@media (min-width: 1280px) {
	.vjopm-item {
		margin-bottom: 32px;
	}
}

.vjopm-link {
	display: block;
	position: relative;
	overflow: hidden;
	border-radius: 6px;
	transform: translateZ(0);
}

.vjopm-link:focus {
	outline: 2px solid #375EAB;
	outline-offset: 3px;
}

.vjopm-img {
	display: block;
	width: 100%;
	height: auto;
	transform: scale(1);
	transition: transform 250ms ease;
}

.vjopm-link:hover .vjopm-img,
.vjopm-link:focus .vjopm-img {
	transform: scale(1.06);
}

/* Lightbox */
body.vjopm-no-scroll {
	overflow: hidden;
}

.vjopm-lightbox {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 999999;
	align-items: center;
	justify-content: center;
	/* Lightbox navigation tuning */
	--vjopm-nav-offset: clamp(18px, 4vw, 70px);
	--vjopm-nav-size: clamp(48px, 5vw, 64px);
	--vjopm-nav-font-size: clamp(28px, 3vw, 40px);
}

.vjopm-lightbox.is-open {
	display: flex;
}

.vjopm-lightbox__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.9);
}

.vjopm-lightbox__dialog {
	position: relative;
	max-width: 92vw;
	max-height: 90vh;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: auto;
}

.vjopm-lightbox__content {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
}

.vjopm-lightbox__img {
	max-width: 92vw;
	max-height: 86vh;
	width: auto;
	height: auto;
	display: block;
	border-radius: 6px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
}

.vjopm-lightbox__close,
.vjopm-lightbox__prev,
.vjopm-lightbox__next {
	position: absolute;
	z-index: 2;
	border: none;
	cursor: pointer;
	color: #fff;
	background: rgba(0, 0, 0, 0.35);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	width: 44px;
	height: 44px;
	border-radius: 999px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 24px;
	line-height: 1;
	transition: background 150ms ease, transform 150ms ease;
}


/* Keep the close button's subtle affordance, but do NOT move nav arrows on hover */
.vjopm-lightbox__close:hover {
	background: rgba(55, 94, 171, 0.9); /* accent */
	transform: scale(1.03);
}

.vjopm-lightbox__prev:hover,
.vjopm-lightbox__next:hover {
	background: rgba(55, 94, 171, 0.9); /* accent */
	/* Explicitly preserve centering transform (some themes add button:hover transforms). */
	transform: translateY(-50%);
}

.vjopm-lightbox__close:focus,
.vjopm-lightbox__prev:focus,
.vjopm-lightbox__next:focus {
	outline: 2px solid #375EAB;
	outline-offset: 3px;
}

.vjopm-lightbox__close {
	/* Keep controls inside the dialog bounds to avoid being clipped by theme CSS */
	top: 10px;
	right: 10px;
}

.vjopm-lightbox__prev {
	/* Anchor to the viewport (not the image) so placement is consistent for portrait/landscape */
	position: fixed;
	left: var(--vjopm-nav-offset);
	top: 50%;
	transform: translateY(-50%);
	width: var(--vjopm-nav-size);
	height: var(--vjopm-nav-size);
	font-size: var(--vjopm-nav-font-size);
	/* Avoid "jump" effects from theme hover styles */
	transition: background 150ms ease;
}

.vjopm-lightbox__next {
	/* Anchor to the viewport (not the image) so placement is consistent for portrait/landscape */
	position: fixed;
	right: var(--vjopm-nav-offset);
	top: 50%;
	transform: translateY(-50%);
	width: var(--vjopm-nav-size);
	height: var(--vjopm-nav-size);
	font-size: var(--vjopm-nav-font-size);
	/* Avoid "jump" effects from theme hover styles */
	transition: background 150ms ease;
}

@media (max-width: 540px) {
	.vjopm-lightbox {
		/* Keep arrows comfortably inboard on narrow screens */
		--vjopm-nav-offset: 14px;
		--vjopm-nav-size: 52px;
		--vjopm-nav-font-size: 34px;
	}
	.vjopm-lightbox__close {
		right: 6px;
		top: 6px;
	}
}

.vjopm-lightbox__counter {
	position: absolute;
	right: 10px;
	bottom: 10px;
	font-size: 12px;
	line-height: 1;
	color: #fff;
	background: rgba(0, 0, 0, 0.45);
	padding: 6px 10px;
	border-radius: 999px;
	user-select: none;
}

.vjopm-empty {
	margin-top: 20px;
	opacity: 0.75;
}
