/* =========================================================
   FS Photo Gallery Widget Styles
   BEM prefix: fs-pg
   Low specificity, token-based design with safe fallbacks.
   Scoped under .fs-pg to prevent theme button reset leaks.
   All tokens mapped from reference/fs-global-css.css.
   ========================================================= */

.fs-pg {
	--fs-pg-radius: 1rem;
	--fs-pg-columns: 4;
	--fs-pg-cols: 4;
	--fs-pg-gap: clamp(.75rem, .5rem + .8vw, 2rem);
	box-sizing: border-box;
	position: relative;
	width: 100%;
}

.fs-pg *,
.fs-pg *::before,
.fs-pg *::after {
	box-sizing: inherit;
}

/* Screen reader announcement */
.fs-pg__sr-status {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Empty placeholder in editor */
.fs-pg__empty-notice {
	padding: 2.5rem 1.5rem;
	text-align: center;
	background: var(--bg-secondary, #F5ECEF);
	border: 1px dashed var(--line, #EBE6E1);
	border-radius: var(--fs-pg-radius, 1rem);
	color: var(--body-text, #5B5B60);
	font-family: var(--font-body, 'DM Sans', sans-serif);
	font-size: 1rem;
}

/* ---------- Filter Bar ---------- */
.fs-pg__filters-wrap {
	position: relative;
	width: 100%;
	padding: .8rem 0;
	margin-bottom: clamp(1.2rem, 1rem + 1vw, 2.5rem);
	transition: top .2s ease;
}

.fs-pg__filters-wrap--sticky {
	position: sticky;
	top: var(--fs-header-h, 0px);
	z-index: 12;
	background: color-mix(in srgb, var(--bg-primary, #FAF8F5) 94%, transparent);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}

.fs-pg__filters {
	display: flex;
	align-items: center;
	gap: .5rem;
	list-style: none;
	padding: 4px;
	margin: -4px;
	overflow-x: auto;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
	flex-wrap: nowrap;
}

.fs-pg__filters::-webkit-scrollbar {
	display: none;
}

/* Filter buttons - scoped under .fs-pg to override theme resets */
.fs-pg .fs-pg__filter {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	font-family: var(--font-heading, 'Barlow Condensed', sans-serif);
	font-weight: 600;
	font-size: clamp(0.8438rem, 0.8012rem + 0.1818vw, 1.2375rem);
	letter-spacing: .1em;
	text-transform: uppercase;
	line-height: 1;
	color: var(--heading, #2E2E30);
	background: var(--white, #FFFFFF);
	background-color: var(--white, #FFFFFF);
	border: 1px solid var(--line, #EBE6E1);
	border-radius: 999px;
	padding: .65em 1.25em;
	cursor: pointer;
	white-space: nowrap;
	flex-shrink: 0;
	text-decoration: none;
	box-shadow: none;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.fs-pg .fs-pg__filter:hover {
	background: var(--white, #FFFFFF);
	background-color: var(--white, #FFFFFF);
	color: var(--heading, #2E2E30);
	border-color: var(--brand-primary, #D6336F);
	border-radius: 999px;
	box-shadow: none;
	text-decoration: none;
}

.fs-pg .fs-pg__filter:focus {
	background: var(--white, #FFFFFF);
	background-color: var(--white, #FFFFFF);
	color: var(--heading, #2E2E30);
	border-color: var(--brand-primary, #D6336F);
	border-radius: 999px;
	box-shadow: none;
	text-decoration: none;
}

.fs-pg .fs-pg__filter:focus:not(:focus-visible) {
	outline: none;
	box-shadow: none;
	border-color: var(--line, #EBE6E1);
}

.fs-pg .fs-pg__filter:focus-visible {
	outline: 2px solid var(--brand-primary, #D6336F);
	outline-offset: 2px;
	border-color: var(--brand-primary, #D6336F);
}

/* Active filter state */
.fs-pg .fs-pg__filter--active,
.fs-pg .fs-pg__filter[aria-pressed="true"] {
	background: var(--heading, #2E2E30);
	background-color: var(--heading, #2E2E30);
	color: var(--white, #FFFFFF);
	border-color: var(--heading, #2E2E30);
	border-radius: 999px;
	box-shadow: none;
}

/* Active filter on hover and focus stays dark with white text */
.fs-pg .fs-pg__filter--active:hover,
.fs-pg .fs-pg__filter[aria-pressed="true"]:hover,
.fs-pg .fs-pg__filter--active:focus,
.fs-pg .fs-pg__filter[aria-pressed="true"]:focus {
	background: var(--heading, #2E2E30);
	background-color: var(--heading, #2E2E30);
	color: var(--white, #FFFFFF);
	border-color: var(--heading, #2E2E30);
	border-radius: 999px;
	box-shadow: none;
	text-decoration: none;
}

.fs-pg .fs-pg__filter--active:focus:not(:focus-visible),
.fs-pg .fs-pg__filter[aria-pressed="true"]:focus:not(:focus-visible) {
	outline: none;
	box-shadow: none;
}

.fs-pg .fs-pg__filter--active:focus-visible,
.fs-pg .fs-pg__filter[aria-pressed="true"]:focus-visible {
	outline: 2px solid var(--brand-primary, #D6336F);
	outline-offset: 2px;
}

.fs-pg .fs-pg__count {
	font-family: var(--font-body, 'DM Sans', sans-serif);
	font-weight: 500;
	letter-spacing: 0;
	font-size: .82em;
	color: var(--body-text, #5B5B60);
	transition: color .2s ease;
}

.fs-pg .fs-pg__filter:hover .fs-pg__count {
	color: var(--body-text, #5B5B60);
}

.fs-pg .fs-pg__filter--active .fs-pg__count,
.fs-pg .fs-pg__filter[aria-pressed="true"] .fs-pg__count,
.fs-pg .fs-pg__filter--active:hover .fs-pg__count,
.fs-pg .fs-pg__filter[aria-pressed="true"]:hover .fs-pg__count {
	color: var(--accent-soft, #F9A8C6);
}

/* ---------- Grid & Masonry Layouts ---------- */
.fs-pg__grid {
	width: 100%;
}

/* Fixed Aspect Ratio Grid */
.fs-pg__grid--grid {
	display: grid;
	grid-template-columns: repeat(var(--fs-pg-cols, var(--fs-pg-columns, 4)), minmax(0, 1fr));
	gap: var(--fs-pg-gap, clamp(.75rem, .5rem + .8vw, 2rem));
}

/* Masonry Layout */
/* Fallback: standard grid with normal gap so nothing overlaps before JS runs */
.fs-pg__grid--masonry {
	display: grid;
	grid-template-columns: repeat(var(--fs-pg-cols, var(--fs-pg-columns, 4)), minmax(0, 1fr));
	gap: var(--fs-pg-gap, clamp(.75rem, .5rem + .8vw, 2rem));
}

.fs-pg__grid--masonry .fs-pg__img-wrap {
	height: auto;
}

.fs-pg__grid--masonry .fs-pg__img {
	width: 100%;
	height: auto;
	display: block;
}

/* When JS masonry is active: CSS Grid with small auto-rows unit & row-gap 0 */
.fs-pg__grid--masonry.fs-pg__grid--masonry-ready {
	grid-auto-rows: 4px;
	grid-auto-flow: row dense;
	row-gap: 0;
	column-gap: var(--fs-pg-gap, clamp(.75rem, .5rem + .8vw, 2rem));
}

.fs-pg__grid--masonry.fs-pg__grid--masonry-ready .fs-pg__item {
	align-self: start;
	margin-bottom: var(--fs-pg-gap, clamp(.75rem, .5rem + .8vw, 2rem));
	display: block;
	width: 100%;
}

/* ---------- Gallery Item ---------- */
.fs-pg__item {
	position: relative;
	border-radius: var(--fs-pg-radius, 1rem);
	overflow: hidden;
	border: 0;
	padding: 0;
	background: linear-gradient(135deg, var(--bg-secondary, #F5ECEF), #E7C3D1);
	transition: opacity .35s ease, transform .35s ease;
}

.fs-pg__item--hidden {
	display: none !important;
}

.fs-pg__item-link {
	display: block;
	width: 100%;
	height: 100%;
	text-decoration: none;
	color: inherit;
	cursor: zoom-in;
	position: relative;
}

.fs-pg__item-link:focus-visible {
	outline: 3px solid var(--brand-primary, #D6336F);
	outline-offset: 3px;
}

.fs-pg__img-wrap {
	display: block;
	width: 100%;
	height: 100%;
	position: relative;
	overflow: hidden;
}

/* Aspect ratio modifiers for Grid layout */
.fs-pg--ratio-1-1 .fs-pg__img-wrap {
	aspect-ratio: 1 / 1;
}

.fs-pg--ratio-4-3 .fs-pg__img-wrap {
	aspect-ratio: 4 / 3;
}

.fs-pg--ratio-3-4 .fs-pg__img-wrap {
	aspect-ratio: 3 / 4;
}

.fs-pg--ratio-16-9 .fs-pg__img-wrap {
	aspect-ratio: 16 / 9;
}

.fs-pg--ratio-original .fs-pg__img-wrap {
	aspect-ratio: auto;
}

.fs-pg__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	color: transparent;
	transition: transform .6s ease;
}

/* Overlay & Caption */
.fs-pg__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 55%, rgba(46, 46, 48, .75));
	opacity: 0;
	transition: opacity .3s ease;
	pointer-events: none;
}

.fs-pg__caption {
	position: absolute;
	left: 1rem;
	right: 1rem;
	bottom: .9rem;
	z-index: 1;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: .6rem;
	color: var(--white, #FFFFFF);
	text-align: left;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .3s ease, transform .3s ease;
	pointer-events: none;
}

.fs-pg__caption-title {
	font-family: var(--font-heading, 'Barlow Condensed', sans-serif);
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	font-size: clamp(0.875rem, 0.8479rem + 0.1154vw, 1.125rem);
	line-height: 1.2;
}

.fs-pg__zoom-icon {
	flex: none;
	width: 2.2rem;
	height: 2.2rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, .2);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	display: grid;
	place-items: center;
	color: var(--white, #FFFFFF);
}

.fs-pg__zoom-icon svg {
	width: 1rem;
	height: 1rem;
}

/* ---------- Hover Effect Options ---------- */
/* Zoom effect */
.fs-pg--hover-zoom .fs-pg__item:hover .fs-pg__img,
.fs-pg--hover-zoom .fs-pg__item:focus-within .fs-pg__img {
	transform: scale(1.05);
}

/* Overlay effect (includes zoom + reveals caption & overlay) */
.fs-pg--hover-overlay .fs-pg__item:hover .fs-pg__img,
.fs-pg--hover-overlay .fs-pg__item:focus-within .fs-pg__img {
	transform: scale(1.05);
}

.fs-pg--hover-overlay .fs-pg__item:hover .fs-pg__overlay,
.fs-pg--hover-overlay .fs-pg__item:focus-within .fs-pg__overlay,
.fs-pg--hover-overlay .fs-pg__item:hover .fs-pg__caption,
.fs-pg--hover-overlay .fs-pg__item:focus-within .fs-pg__caption {
	opacity: 1;
	transform: none;
}

/* ---------- Load More ---------- */
.fs-pg__more {
	text-align: center;
	margin-top: clamp(1.5rem, 1rem + 1.5vw, 3.5rem);
}

.fs-pg .fs-pg__more-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5em;
	font-family: var(--font-heading, 'Barlow Condensed', sans-serif);
	font-weight: 600;
	font-size: clamp(0.9375rem, 0.8902rem + 0.2020vw, 1.375rem);
	text-transform: uppercase;
	letter-spacing: .1em;
	line-height: 1;
	padding: 1em 2.2em;
	border-radius: 999px;
	text-decoration: none;
	cursor: pointer;
	border: 1.5px solid var(--heading, #2E2E30);
	background: transparent;
	background-color: transparent;
	color: var(--heading, #2E2E30);
	white-space: nowrap;
	box-shadow: none;
	transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease;
}

.fs-pg .fs-pg__more-btn:hover {
	background: var(--heading, #2E2E30);
	background-color: var(--heading, #2E2E30);
	color: var(--white, #FFFFFF);
	border-color: var(--heading, #2E2E30);
	border-radius: 999px;
	box-shadow: none;
	text-decoration: none;
}

.fs-pg .fs-pg__more-btn:focus {
	background: transparent;
	background-color: transparent;
	color: var(--heading, #2E2E30);
	border-color: var(--heading, #2E2E30);
	border-radius: 999px;
	box-shadow: none;
	text-decoration: none;
}

.fs-pg .fs-pg__more-btn:focus:not(:focus-visible) {
	outline: none;
	box-shadow: none;
}

.fs-pg .fs-pg__more-btn:focus-visible {
	background: var(--heading, #2E2E30);
	background-color: var(--heading, #2E2E30);
	color: var(--white, #FFFFFF);
	border-color: var(--heading, #2E2E30);
	border-radius: 999px;
	box-shadow: none;
	outline: 2px solid var(--brand-primary, #D6336F);
	outline-offset: 3px;
	text-decoration: none;
}

.fs-pg__more-btn--hidden {
	display: none !important;
}

/* ---------- Responsive Breakpoints ---------- */
@media (max-width: 1024px) {
	.fs-pg {
		--fs-pg-columns: 3;
		--fs-pg-cols: 3;
	}
}

@media (max-width: 767px) {
	.fs-pg {
		--fs-pg-columns: 2;
		--fs-pg-cols: 2;
	}

	/* Keep caption and overlay visible on touch devices if preferred */
	.fs-pg--hover-overlay .fs-pg__caption {
		opacity: 1;
		transform: none;
	}

	.fs-pg--hover-overlay .fs-pg__overlay {
		opacity: .85;
	}
}

/* ---------- Reduced Motion ---------- */
@media (prefers-reduced-motion: reduce) {
	.fs-pg .fs-pg__filter,
	.fs-pg__item,
	.fs-pg__img,
	.fs-pg__overlay,
	.fs-pg__caption,
	.fs-pg .fs-pg__more-btn {
		transition: none !important;
		animation: none !important;
	}

	.fs-pg__item:hover .fs-pg__img,
	.fs-pg__item:focus-within .fs-pg__img {
		transform: none !important;
	}
}
