/* Justice Wedding Galleries */
html.jewg-lock, html.jewg-lock body { overflow: hidden; }

/* Linked thumbnails / cover grid */
a.jewg-trigger, .jewg-cover__link { position: relative; display: block; overflow: hidden; cursor: zoom-in; }
a.jewg-trigger img, .jewg-cover__img { transition: transform .5s ease, filter .3s ease; display: block; }
a.jewg-trigger:hover img, a.jewg-trigger:focus-visible img,
.jewg-cover__link:hover img, .jewg-cover__link:focus-visible img { transform: scale(1.04); filter: brightness(.85); }
a.jewg-trigger::after {
	content: "View gallery"; position: absolute; left: 50%; bottom: 14px; transform: translate(-50%, 6px);
	background: rgba(15,20,30,.78); color: #fff; font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
	padding: 7px 14px; border-radius: 999px; opacity: 0; transition: opacity .25s, transform .25s; pointer-events: none; white-space: nowrap;
}
a.jewg-trigger:hover::after, a.jewg-trigger:focus-visible::after { opacity: 1; transform: translate(-50%, 0); }

.jewg-grid { display: grid; grid-template-columns: repeat(var(--jewg-cols, 3), minmax(0, 1fr)); gap: 24px; margin: 0 0 2em; }
.jewg-grid--single { grid-template-columns: minmax(0, 1fr); max-width: 520px; }
.jewg-cover { margin: 0; }
.jewg-cover__link { border-radius: 12px; aspect-ratio: 4 / 5; }
.jewg-cover__img { width: 100%; height: 100%; object-fit: cover; }
.jewg-cover__count {
	position: absolute; right: 12px; bottom: 12px; background: rgba(15,20,30,.72); color: #fff;
	font-size: 11px; letter-spacing: .1em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px;
}
.jewg-cover__title { margin-top: .7em; text-align: center; font-size: 1.05rem; letter-spacing: .04em; }
@media (max-width: 900px) { .jewg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } }
@media (max-width: 520px) { .jewg-grid { grid-template-columns: minmax(0, 1fr); } }

/* Overlay */
.jewg-overlay {
	position: fixed; inset: 0; z-index: 999999; display: flex; flex-direction: column;
	background: rgba(10, 12, 18, .96); color: #f4f1ea; opacity: 0; transition: opacity .25s ease;
	-webkit-tap-highlight-color: transparent;
}
.jewg-overlay[hidden] { display: none; }
.jewg-overlay.is-open { opacity: 1; }
.jewg-overlay button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
.jewg-overlay button:focus-visible { outline: 2px solid #d4b46a; outline-offset: 3px; }

.jewg-top { display: flex; align-items: center; gap: 16px; padding: 14px 20px; flex: 0 0 auto; }
.jewg-title { flex: 1; font-size: 1rem; letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jewg-counter { font-size: .85rem; opacity: .75; font-variant-numeric: tabular-nums; }
.jewg-close { width: 44px; height: 44px; font-size: 34px !important; line-height: 1; border-radius: 50%; transition: background .2s; }
.jewg-close:hover { background: rgba(255,255,255,.12) !important; }

.jewg-stage { position: relative; flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 0 72px; }
.jewg-figure { margin: 0; max-width: 100%; max-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; height: 100%; }
.jewg-img { max-width: 100%; max-height: calc(100% - 8px); width: auto; height: auto; object-fit: contain; border-radius: 4px; box-shadow: 0 20px 60px rgba(0,0,0,.5); transition: opacity .25s ease; user-select: none; }
.jewg-overlay.is-loading .jewg-img { opacity: .25; }
.jewg-caption { margin-top: 10px; font-size: .9rem; opacity: .85; text-align: center; max-width: 60ch; }
.jewg-spinner { position: absolute; top: 50%; left: 50%; width: 36px; height: 36px; margin: -18px 0 0 -18px; border: 3px solid rgba(255,255,255,.2); border-top-color: #d4b46a; border-radius: 50%; animation: jewg-spin .8s linear infinite; opacity: 0; pointer-events: none; }
.jewg-overlay.is-loading .jewg-spinner { opacity: 1; }
@keyframes jewg-spin { to { transform: rotate(360deg); } }

.jewg-nav {
	position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50% !important;
	background: rgba(255,255,255,.1) !important; display: flex; align-items: center; justify-content: center; transition: background .2s;
}
.jewg-nav:hover { background: rgba(255,255,255,.22) !important; }
.jewg-nav svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.jewg-prev { left: 12px; }
.jewg-next { right: 12px; }

.jewg-thumbs {
	flex: 0 0 auto; display: flex; gap: 8px; padding: 12px 20px 18px; overflow-x: auto; justify-content: safe center;
	scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.3) transparent;
}
.jewg-thumb { flex: 0 0 auto; width: 72px; height: 72px; border-radius: 6px !important; overflow: hidden; opacity: .5; transition: opacity .2s, outline-color .2s; outline: 2px solid transparent; outline-offset: 2px; }
.jewg-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.jewg-thumb:hover { opacity: .85; }
.jewg-thumb.is-active { opacity: 1; outline-color: #d4b46a; }

.jewg-overlay.is-single .jewg-nav, .jewg-overlay.is-single .jewg-thumbs { display: none; }

@media (max-width: 700px) {
	.jewg-top { padding: 10px 12px; }
	.jewg-stage { padding: 0 8px; }
	.jewg-nav { width: 42px; height: 42px; background: rgba(0,0,0,.45) !important; }
	.jewg-prev { left: 6px; } .jewg-next { right: 6px; }
	.jewg-thumb { width: 56px; height: 56px; }
	.jewg-thumbs { padding: 10px 12px 14px; justify-content: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
	.jewg-overlay, .jewg-img, a.jewg-trigger img, .jewg-cover__img { transition: none; }
}


/* Cover grids built from core Gallery blocks whose images link to #gallery-ID */
.wp-block-gallery:has(a[href*="#gallery-"]) {
	display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	gap: 28px 24px !important; margin: 1.5em 0 2.5em !important;
}
.wp-block-gallery.columns-2:has(a[href*="#gallery-"]) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image {
	width: auto !important; max-width: none !important; margin: 0 !important; flex: none !important;
	display: flex !important; flex-direction: column !important; height: auto !important;
}
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image a.jewg-trigger { border-radius: 12px; flex: none !important; height: auto !important; }
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image img {
	width: 100% !important; height: auto !important; aspect-ratio: 4 / 5; object-fit: cover !important; border-radius: 12px;
}
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image figcaption {
	position: static !important; background: none !important; color: inherit !important; max-height: none !important;
	padding: 0 !important; margin: .75em 0 0 !important; text-align: center; font-size: .8rem !important;
	letter-spacing: .14em; text-transform: uppercase; line-height: 1.5; overflow: visible !important;
}
@media (max-width: 900px) {
	.wp-block-gallery:has(a[href*="#gallery-"]) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 20px 16px !important; }
}
@media (max-width: 520px) {
	.wp-block-gallery:has(a[href*="#gallery-"]), .wp-block-gallery.columns-2:has(a[href*="#gallery-"]) { grid-template-columns: minmax(0, 1fr) !important; }
}

.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image { overflow: visible !important; }
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image figcaption { text-shadow: none !important; -webkit-mask-image: none !important; mask-image: none !important; backdrop-filter: none !important; opacity: 1 !important; color: #0d1b2a !important; }
.wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image::before, .wp-block-gallery:has(a[href*="#gallery-"]) > figure.wp-block-image figcaption::before { display: none !important; content: none !important; }


/* Front-page gallery cards (theme masonry) */
.jewg-front-item { display: block; color: inherit; text-decoration: none; }
.jewg-front-item::after { display: none !important; }
.jewg-front-item .jewg-front-cap {
	position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 28px 16px 14px;
	background: linear-gradient(to top, rgba(10,14,22,.82), rgba(10,14,22,0)); color: #fff; pointer-events: none;
}
.jewg-front-item .jewg-front-title { display: block; font-size: .85rem; letter-spacing: .14em; text-transform: uppercase; line-height: 1.35; }
.jewg-front-item .jewg-front-count { display: block; font-size: .72rem; letter-spacing: .1em; opacity: .8; margin-top: 3px; text-transform: uppercase; }
