/* Decor Box – Wedding Themes */

.dbw-themes {
	--dbw-cols: 3;
	--dbw-per-view: 3;
	--dbw-gap: 28px;
	--dbw-ratio: 1 / 1.414;
	--dbw-mat: 14px;
	--dbw-mat-line: rgba(127,148,115,.28);
	--dbw-img-radius: 3px;
	--dbw-overlay: rgba(47,58,42,.28);
	--dbw-swatch: 22px;
	--dbw-swatch-ring: #FFFFFF;
	--dbw-btn: #5E6B52;
	--dbw-btn-hover: #2F3A2A;
	--dbw-dot: rgba(127,148,115,.3);
	--dbw-dot-active: #7F9473;
	--dbw-ease: cubic-bezier(.22,.61,.36,1);

	position: relative;
	isolation: isolate;
	padding: 96px 24px 100px;
}

.dbw-themes__inner {
	position: relative;
	max-width: 1180px;
	margin: 0 auto;
}

.dbw-themes .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ---------- Header ---------- */

.dbw-themes__header {
	margin-bottom: 52px;
	text-align: center;
}

.dbw-themes__ornament {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin-bottom: 20px;
	color: #C9BFA4;
}

.dbw-themes__ornament-line {
	display: block;
	width: 120px;
	max-width: 24vw;
	height: 1px;
	background: linear-gradient(to right, transparent, #D8D2C2, transparent);
}

.dbw-themes__ornament-mark { display: inline-flex; font-size: 26px; line-height: 1; }
.dbw-themes__ornament-mark svg { width: 1em; height: 1em; fill: currentColor; }

.dbw-themes__eyebrow {
	margin-bottom: 12px;
	color: #7F9473;
}

.dbw-themes__heading {
	margin: 0 0 12px;
	color: #676258;
}

.dbw-themes__sub {
	max-width: 640px;
	margin: 0 auto;
	color: #707070;
}

/* ---------- Grid ---------- */

.dbw-themes--grid .dbw-themes__track {
	display: grid;
	grid-template-columns: repeat(var(--dbw-cols), minmax(0, 1fr));
	gap: var(--dbw-gap);
	align-items: stretch;
}

/* ---------- Carousel ----------
 * Native horizontal scrolling with snap points, so touch swiping works
 * everywhere. The padding and matching negative margin stop card shadows
 * and the hover lift from being clipped by the scroll container.
 */

.dbw-themes--carousel .dbw-themes__viewport {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	overscroll-behavior-x: contain;
	padding: 14px 6px 46px;
	margin: -14px -6px -46px;
	scroll-padding-inline: 6px;
}

.dbw-themes--carousel .dbw-themes__viewport::-webkit-scrollbar { display: none; }
.dbw-themes--carousel .dbw-themes__viewport:focus-visible { outline: 2px solid #A8B99A; outline-offset: 4px; }
.dbw-themes--carousel .dbw-themes__viewport.is-dragging { scroll-snap-type: none; scroll-behavior: auto; cursor: grabbing; }

.dbw-themes--carousel .dbw-themes__track {
	display: flex;
	gap: var(--dbw-gap);
}

.dbw-themes--carousel .dbw-themes__card {
	flex: 0 0 calc((100% - var(--dbw-gap) * (var(--dbw-per-view) - 1)) / var(--dbw-per-view));
	scroll-snap-align: start;
}

/* ---------- Card ---------- */

.dbw-themes__card {
	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	overflow: hidden;
	border: 1px solid rgba(201,191,164,.45);
	border-radius: 6px;
	background-image: linear-gradient(175deg, #FFFFFF, #F5F2EA);
	box-shadow: 0 16px 40px -22px rgba(74,70,57,.22);
	transition:
		opacity .9s var(--dbw-ease) var(--dbw-delay, 0ms),
		transform .9s var(--dbw-ease) var(--dbw-delay, 0ms),
		translate .5s var(--dbw-ease),
		box-shadow .5s ease,
		border-color .5s ease;
}

.dbw-themes-lift-yes .dbw-themes__card:hover { translate: 0 -6px; }

.dbw-themes__media,
.dbw-themes__body {
	position: relative;
	z-index: 1;
}

/* ---------- Moodboard image ---------- */

.dbw-themes__media {
	padding: var(--dbw-mat) var(--dbw-mat) 0;
}

.dbw-themes__img-link {
	position: relative;
	display: block;
	color: inherit;
	text-decoration: none;
	outline: none;
}

.dbw-themes__img-wrap {
	position: relative;
	display: block;
	overflow: hidden;
	aspect-ratio: var(--dbw-ratio);
	border-radius: var(--dbw-img-radius);
	background: #EEEAE0;
	box-shadow:
		0 0 0 1px var(--dbw-mat-line),
		0 12px 26px -18px rgba(74,70,57,.5);
}

.dbw-themes__img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	transition: scale 1.4s var(--dbw-ease);
}

.dbw-themes-zoom-yes .dbw-themes__card:hover .dbw-themes__img { scale: 1.04; }

a.dbw-themes__img-link { cursor: zoom-in; }

a.dbw-themes__img-link .dbw-themes__img-wrap::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--dbw-overlay);
	opacity: 0;
	transition: opacity .5s ease;
	pointer-events: none;
}

.dbw-themes__zoom {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 11px 18px;
	border-radius: 100px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.6px;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
	color: #2F3A2A;
	background-color: rgba(251,249,244,.94);
	box-shadow: 0 10px 24px -12px rgba(47,58,42,.5);
	opacity: 0;
	transform: translate(-50%, -30%);
	transition: opacity .45s ease, transform .5s var(--dbw-ease);
	pointer-events: none;
}

.dbw-themes__zoom-icon { display: inline-flex; font-size: 11px; }
.dbw-themes__zoom-icon svg { width: 1em; height: 1em; fill: currentColor; }

.dbw-themes__card:hover a.dbw-themes__img-link .dbw-themes__img-wrap::after,
a.dbw-themes__img-link:focus-visible .dbw-themes__img-wrap::after { opacity: 1; }

.dbw-themes__card:hover .dbw-themes__zoom,
a.dbw-themes__img-link:focus-visible .dbw-themes__zoom {
	opacity: 1;
	transform: translate(-50%, -50%);
}

/* Touch screens have no hover, so the label would never show: keep it hidden */
@media (hover: none) {
	.dbw-themes__zoom { display: none; }
}

.dbw-themes__badge {
	position: absolute;
	top: calc(var(--dbw-mat) + 14px);
	left: calc(var(--dbw-mat) + 14px);
	z-index: 3;
	padding: 7px 14px;
	border-radius: 100px;
	line-height: 1;
	color: #FFFFFF;
	background-image: linear-gradient(135deg, #A8B99A, #7F9473);
	box-shadow: 0 8px 18px -10px rgba(47,58,42,.6);
}

/* ---------- Text ---------- */

.dbw-themes__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	align-items: flex-start;
	padding: 24px 28px 30px;
}

.dbw-themes-align-center .dbw-themes__body {
	align-items: center;
	text-align: center;
}

.dbw-themes__tagline {
	margin-bottom: 10px;
	color: #7F9473;
}

.dbw-themes__title {
	margin: 0 0 10px;
	color: #676258;
}

.dbw-themes__text {
	flex: 1 0 auto;
	margin: 0;
	color: #707070;
}

/* ---------- Palette ---------- */

.dbw-themes__palette {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-top: 20px;
}

.dbw-themes__palette-label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: #8A8474;
}

.dbw-themes__swatches {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.dbw-themes__swatch {
	position: relative;
	display: block;
	width: var(--dbw-swatch);
	height: var(--dbw-swatch);
	border-radius: 50%;
	background: var(--dbw-c);
	box-shadow:
		0 0 0 2px var(--dbw-swatch-ring),
		0 0 0 3px rgba(74,70,57,.12);
	transition: translate .35s var(--dbw-ease), margin .45s var(--dbw-ease);
}

.dbw-themes__swatch:hover { translate: 0 -3px; }

.dbw-themes-swatch-square .dbw-themes__swatch { border-radius: 6px; }

/* Overlapping circles fan out when the card is hovered */
.dbw-themes-swatch-overlap .dbw-themes__swatches { gap: 0; }
.dbw-themes-swatch-overlap .dbw-themes__swatch + .dbw-themes__swatch { margin-left: calc(var(--dbw-swatch) * -.3); }
.dbw-themes-swatch-overlap .dbw-themes__card:hover .dbw-themes__swatch + .dbw-themes__swatch { margin-left: 4px; }

/* Joined strip */
.dbw-themes-swatch-strip .dbw-themes__swatches {
	gap: 0;
	overflow: hidden;
	border-radius: 100px;
	box-shadow: 0 0 0 1px rgba(74,70,57,.12);
}
.dbw-themes-swatch-strip .dbw-themes__swatch {
	width: calc(var(--dbw-swatch) * 1.5);
	height: calc(var(--dbw-swatch) * .75);
	border-radius: 0;
	box-shadow: none;
}
.dbw-themes-swatch-strip .dbw-themes__swatch:hover { translate: none; }

/* ---------- Button ---------- */

.dbw-themes__foot { margin-top: 22px; }

.dbw-themes__btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	line-height: 1;
	color: var(--dbw-btn);
	text-decoration: none;
	transition: color .3s ease, background-color .3s ease, border-color .3s ease, translate .3s ease, background-size .45s var(--dbw-ease);
}

.dbw-themes__btn:hover,
.dbw-themes__btn:focus-visible { color: var(--dbw-btn-hover); }

.dbw-themes__btn-icon { display: inline-flex; font-size: .95em; transition: translate .35s var(--dbw-ease); }
.dbw-themes__btn-icon svg { width: 1em; height: 1em; fill: currentColor; }
.dbw-themes__card:hover .dbw-themes__btn-icon { translate: 4px 0; }

/* Link: underline that draws across on hover */
.dbw-themes-btn-link .dbw-themes__btn {
	padding-bottom: 6px;
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 32% 1px;
}
.dbw-themes-btn-link .dbw-themes__card:hover .dbw-themes__btn { background-size: 100% 1px; }

.dbw-themes-btn-outline .dbw-themes__btn {
	padding: 13px 20px;
	border: 1px solid var(--dbw-btn);
	border-radius: 2px;
}
.dbw-themes-btn-outline .dbw-themes__btn:hover {
	color: #FFFFFF;
	background-color: var(--dbw-btn);
}

.dbw-themes-btn-solid .dbw-themes__btn {
	padding: 14px 22px;
	border-radius: 2px;
	color: #FFFFFF;
	background-image: linear-gradient(135deg, #A8B99A, #7F9473);
	box-shadow: 0 12px 24px -14px rgba(94,107,82,.8);
}
.dbw-themes-btn-solid .dbw-themes__btn:hover { color: #FFFFFF; translate: 0 -2px; }

/* ---------- Carousel navigation ---------- */

.dbw-themes__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	margin-top: 36px;
}

.dbw-themes.is-static .dbw-themes__nav { display: none; }

.dbw-themes__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 1px solid rgba(127,148,115,.35);
	border-radius: 50%;
	color: #5E6B52;
	background-color: #FFFFFF;
	box-shadow: 0 8px 20px -12px rgba(74,70,57,.4);
	cursor: pointer;
	transition: background-color .3s ease, color .3s ease, opacity .3s ease, translate .3s ease;
}

.dbw-themes__arrow svg { width: 18px; height: 18px; }
.dbw-themes__arrow:disabled { opacity: .35; cursor: default; box-shadow: none; }
.dbw-themes__arrow--prev:hover:not(:disabled) { translate: -2px 0; }
.dbw-themes__arrow--next:hover:not(:disabled) { translate: 2px 0; }

.dbw-themes__dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.dbw-themes__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 100px;
	background: var(--dbw-dot);
	cursor: pointer;
	transition: width .4s var(--dbw-ease), background-color .3s ease;
}

.dbw-themes__dot.is-active {
	width: 26px;
	background: var(--dbw-dot-active);
}

/* ---------- Reveal on scroll ----------
 * Cards are hidden only once JS has added .is-ready.
 */

.dbw-themes-reveal-yes .dbw-themes.is-ready .dbw-themes__card:not(.is-inview) {
	opacity: 0;
	transform: translateY(28px);
}

@media (prefers-reduced-motion: reduce) {
	.dbw-themes *,
	.dbw-themes *::before,
	.dbw-themes *::after {
		transition-duration: .001ms !important;
		transition-delay: 0ms !important;
	}
	.dbw-themes--carousel .dbw-themes__viewport { scroll-behavior: auto; }
}

/* ---------- Small screens ---------- */

@media (max-width: 767px) {
	.dbw-themes__nav { gap: 12px; margin-top: 28px; }
	.dbw-themes__arrow { width: 40px; height: 40px; }
	.dbw-themes__badge { top: calc(var(--dbw-mat) + 10px); left: calc(var(--dbw-mat) + 10px); }
}
