.bpg-categories {
	--bpg-columns: 3;
	--bpg-column-gap: 24px;
	--bpg-row-gap: 24px;
	--bpg-radius: 8px;
	--bpg-ratio: 4 / 3;
	--bpg-min-height: 200px;
	--bpg-overlay-opacity: .65;
	--bpg-hover-scale: 1.04;
	--bpg-duration: 300ms;
	--bpg-object-fit: cover;
	--bpg-object-position: center center;
	margin: 0;
	padding: 0;
	list-style: none;
}
.bpg-categories--grid { display: grid; grid-template-columns: repeat(var(--bpg-columns), minmax(0, 1fr)); gap: var(--bpg-row-gap) var(--bpg-column-gap); }
.bpg-categories--masonry { display: block; column-count: var(--bpg-columns); column-gap: var(--bpg-column-gap); }
.bpg-categories .bpg-category-item { margin: 0; padding: 0; min-width: 0; list-style: none; }
.bpg-categories--masonry .bpg-category-item { break-inside: avoid; margin-bottom: var(--bpg-row-gap); }
.bpg-categories .bpg-category-card { display: block; position: relative; overflow: hidden; isolation: isolate; border-radius: var(--bpg-radius); background: #20262d; text-decoration: none; color: #fff; transition: transform var(--bpg-duration) ease, box-shadow var(--bpg-duration) ease; }
.bpg-categories--grid .bpg-category-card { aspect-ratio: var(--bpg-ratio); min-height: var(--bpg-min-height); }
.bpg-categories .bpg-category-image { display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border: 0; object-position: var(--bpg-object-position); transition: transform var(--bpg-duration) ease; }
.bpg-categories--grid .bpg-category-image { position: absolute; inset: 0; height: 100%; object-fit: var(--bpg-object-fit); }
.bpg-categories--masonry .bpg-category-image { aspect-ratio: auto; object-fit: contain; }
.bpg-categories .bpg-category-placeholder { display: block; aspect-ratio: 4 / 3; background: linear-gradient(145deg, #374451, #161e27); }
.bpg-categories--grid .bpg-category-placeholder { position: absolute; inset: 0; }
.bpg-categories .bpg-category-overlay { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, transparent 35%, #000 100%); opacity: var(--bpg-overlay-opacity); transition: opacity var(--bpg-duration) ease; }
.bpg-categories .bpg-category-caption { position: absolute; inset-inline: 0; bottom: 0; padding: 24px; text-align: start; pointer-events: none; }
.bpg-categories .bpg-category-title { display: block; color: #fff; font-size: 1.15rem; font-weight: 500; line-height: 1.4; text-shadow: 0 1px 5px #000; transition: color var(--bpg-duration) ease; }
.bpg-categories .bpg-category-count { display: block; margin-top: 6px; color: #fff; font-size: .85rem; line-height: 1.5; text-shadow: 0 1px 5px #000; }
.bpg-categories--zoom .bpg-category-card:is(:hover, :focus-visible) .bpg-category-image { transform: scale(var(--bpg-hover-scale)); }
.bpg-categories--lift .bpg-category-card:is(:hover, :focus-visible) { transform: translateY(-3px); box-shadow: 0 8px 24px #0002; }
.bpg-categories .bpg-category-card:focus-visible { outline: 3px solid #2271b1; outline-offset: 3px; }
.bpg-empty-state { padding: 24px; color: #4b5563; }
@media (max-width: 1024px) { .bpg-categories { --bpg-columns: 2; } }
@media (max-width: 767px) { .bpg-categories { --bpg-columns: 1; } }
@media (prefers-reduced-motion: reduce) {
	.bpg-categories .bpg-category-card, .bpg-categories .bpg-category-image, .bpg-categories .bpg-category-overlay, .bpg-categories .bpg-category-title { transition: none; }
	.bpg-categories .bpg-category-card:is(:hover, :focus-visible), .bpg-categories .bpg-category-card:is(:hover, :focus-visible) .bpg-category-image { transform: none; }
}
.bpg-gallery { --bpg-photo-columns: 3; --bpg-photo-gap: 24px; --bpg-photo-radius: 6px; --bpg-photo-scale: 1.03; --bpg-photo-opacity: .65; }
.bpg-gallery .bpg-photo-list { margin: 0; padding: 0; list-style: none; }
.bpg-gallery .bpg-photo-list--masonry { direction: ltr; column-count: var(--bpg-photo-columns); column-gap: var(--bpg-photo-gap); }
.bpg-gallery:dir(rtl) .bpg-photo-list--masonry .bpg-photo-item { direction: rtl; }
.bpg-gallery .bpg-photo-list--positioned { position: relative; column-count: auto; }
.bpg-gallery .bpg-photo-list--positioned .bpg-photo-item { position: absolute; margin-bottom: 0; }
.bpg-gallery .bpg-photo-list--grid { display: grid; grid-template-columns: repeat(var(--bpg-photo-columns), minmax(0, 1fr)); gap: var(--bpg-photo-gap); align-items: start; }
.bpg-gallery .bpg-photo-item { margin: 0; padding: 0; min-width: 0; list-style: none; break-inside: avoid; }
.bpg-gallery .bpg-photo-list--masonry .bpg-photo-item { margin-bottom: var(--bpg-photo-gap); }
.bpg-gallery .bpg-photo-card { display: block; position: relative; overflow: hidden; isolation: isolate; border-radius: var(--bpg-photo-radius); background: #20262d; color: #fff; text-decoration: none; }
.bpg-gallery .bpg-photo-image { display: block; width: 100%; max-width: 100%; height: auto; margin: 0; border: 0; transition: transform 300ms ease; }
.bpg-gallery .bpg-photo-placeholder { display: block; aspect-ratio: 4 / 3; background: linear-gradient(145deg, #374451, #161e27); }
.bpg-gallery .bpg-photo-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, #000); opacity: var(--bpg-photo-opacity); transition: opacity 300ms ease; pointer-events: none; }
.bpg-gallery .bpg-photo-caption { position: absolute; bottom: 0; inset-inline: 0; padding: 20px; pointer-events: none; text-shadow: 0 1px 5px #000; }
.bpg-gallery .bpg-photo-title { display: block; color: #fff; font-size: 1.1rem; font-weight: 500; line-height: 1.4; }
.bpg-gallery .bpg-photo-category, .bpg-gallery .bpg-photo-price { display: block; color: #fff; margin-top: 6px; font-size: .85rem; line-height: 1.5; }
.bpg-gallery .bpg-photo-card:is(:hover, :focus-visible) .bpg-photo-image { transform: scale(var(--bpg-photo-scale)); }
.bpg-gallery .bpg-photo-card:is(:hover, :focus-visible) .bpg-photo-overlay { opacity: min(1, calc(var(--bpg-photo-opacity) + .1)); }
.bpg-gallery .bpg-photo-card:focus-visible, .bpg-gallery .bpg-load-more:focus-visible, .bpg-gallery .bpg-pagination a:focus-visible { outline: 3px solid #2271b1; outline-offset: 3px; }
.bpg-gallery .bpg-load-more { display: block; width: fit-content; margin: 24px auto 0; padding: 12px 24px; min-height: 44px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; color: #1f2937; font: inherit; text-decoration: none; cursor: pointer; }
.bpg-gallery .bpg-load-more:disabled { cursor: wait; opacity: .65; }
.bpg-gallery .bpg-load-more[hidden] { display: none; }
.bpg-gallery .bpg-load-fallback { display: block; padding: 12px; text-align: center; color: #1f2937; }
.bpg-gallery .bpg-load-fallback[hidden] { display: none; }
.bpg-gallery .bpg-load-fallback:focus-visible { outline: 3px solid #2271b1; outline-offset: 3px; }
.bpg-gallery .bpg-gallery-status { margin: 12px 0; text-align: center; font-size: .9rem; }
.bpg-gallery .bpg-pagination ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 24px 0; padding: 0; list-style: none; }
.bpg-gallery .bpg-pagination li { list-style: none; margin: 0; }
.bpg-gallery .bpg-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 4px 10px; border-radius: 4px; color: #1f2937; }
.bpg-gallery .bpg-pagination .current { background: #1f2937; color: #fff; }
@media (max-width: 1024px) { .bpg-gallery { --bpg-photo-columns: 2; } }
@media (max-width: 767px) { .bpg-gallery { --bpg-photo-columns: 1; } }
@media (prefers-reduced-motion: reduce) {
	.bpg-gallery .bpg-photo-image, .bpg-gallery .bpg-photo-overlay { transition: none; }
	.bpg-gallery .bpg-photo-card:is(:hover, :focus-visible) .bpg-photo-image { transform: none; }
}
