/* =========================================================================
   Designs By Nhyi — premium motion direction

   A restrained, editorial motion layer shared by every public template.
   It borrows the pacing of high-end portfolio sites—long visual breaths,
   decisive chapter changes and masked media—without copying their identity.
   ========================================================================= */

:root {
	/* Aliases into the shared motion tokens defined in main.css :root. */
	--dbn-motion-ease: var(--dbn-ease-drift, cubic-bezier(0.16, 1, 0.3, 1));
	--dbn-motion-slow: var(--dbn-dur-2xl, 1.2s);
	--dbn-motion-medium: var(--dbn-dur-xl, 0.85s);
	--dbn-page-progress: 0;
}

/* Cross-document navigation is progressive: unsupported browsers simply use
   a normal page load. */
@view-transition { navigation: auto; }
/* The outgoing page fades out ON TOP of a fully opaque incoming page (v1.24.15).
   Previously both root snapshots animated their opacity at once — old 1→0 over
   0.38s while new 0→1 over 0.55s — so for the whole transition the outgoing page
   was visible *through* the semi-transparent incoming one, and between 0.38s and
   0.55s neither layer was opaque. Combined with the UA's default
   `mix-blend-mode: plus-lighter` on root snapshots, that read as the previous page
   lingering behind the new one and then clearing. Only the incoming page's opacity
   ramp and the stacking order change here: the outgoing fade/scale, the incoming
   14px rise, both durations and both easings are exactly as before. */
::view-transition-old(root),
::view-transition-new(root) { mix-blend-mode: normal; }
/* The outgoing page holds full opacity and slides away, revealing the already
   opaque incoming page beneath it (v1.24.17). Nothing is translucent at any
   point, so the two pages can never be on screen together. The previous crossfade
   faded the outgoing page out *over* the incoming one, which by definition showed
   both at once — and because the outgoing page also scaled 0.992 while the
   incoming one rose 14px, the two were slightly misregistered during the blend.
   That misaligned double exposure was the remaining "ghost".
   Both pseudo-elements MUST declare an animation: the UA stylesheet applies its
   own fade-out/fade-in to these, and leaving the incoming one in place would
   reintroduce exactly the translucency this removes. `animation: none` on the
   incoming page keeps it static and fully opaque; the whole transition is the
   outgoing page leaving. Translate to a full -100% so it is off-screen at the
   moment the snapshots are discarded — a partial distance would visibly pop. */
::view-transition-old(root) { z-index: 1; animation: dbn-page-old 0.42s var(--dbn-motion-ease) both; }
::view-transition-new(root) { z-index: 0; animation: none; }
@keyframes dbn-page-old { to { transform: translateY(-100%); } }

/* Portfolio and collaboration navigation keeps real links and documents, but
   lets the selected artwork and title travel into their detail counterparts.
   view-transition-class is progressive: older supporting browsers retain the
   existing named-element morph and all other browsers use a normal load. */
::view-transition-group(.dbn-project-art) {
	z-index: 120;
	animation-duration: 0.92s;
	animation-timing-function: var(--dbn-motion-ease);
}
::view-transition-image-pair(.dbn-project-art) {
	isolation: isolate;
	overflow: clip;
	border-radius: clamp(14px,2vw,30px);
}
::view-transition-old(.dbn-project-art),
::view-transition-new(.dbn-project-art) {
	height: 100%;
	mix-blend-mode: normal;
	object-fit: cover;
}
::view-transition-old(.dbn-project-art) { animation: dbn-project-art-out 0.92s var(--dbn-motion-ease) both; }
::view-transition-new(.dbn-project-art) { animation: dbn-project-art-in 0.92s var(--dbn-motion-ease) both; }
::view-transition-group(.dbn-project-title) {
	z-index: 121;
	animation-duration: 0.78s;
	animation-timing-function: var(--dbn-motion-ease);
}
::view-transition-old(.dbn-project-title) { animation: dbn-project-title-out 0.46s ease both; }
::view-transition-new(.dbn-project-title) { animation: dbn-project-title-in 0.78s var(--dbn-motion-ease) both; }
@keyframes dbn-project-art-out { to { opacity: 0.12; filter: saturate(0.82) brightness(0.94); } }
@keyframes dbn-project-art-in { from { opacity: 0.18; filter: saturate(0.86) brightness(0.96); } }
@keyframes dbn-project-title-out { to { opacity: 0; transform: translateY(-0.18em); } }
@keyframes dbn-project-title-in { from { opacity: 0; transform: translateY(0.32em); } }

/* A short brand-colour curtain makes the first render feel composed instead
   of allowing individual assets to pop in independently. */
.dbn-js #dbn-main::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 96;
	pointer-events: none;
	background: var(--dbn-blue-deep);
	transform-origin: 50% 0;
	animation: dbn-curtain 0.5s 0s var(--dbn-motion-ease) both;
}
@keyframes dbn-curtain {
	0% { transform: scaleY(1); }
	100% { transform: scaleY(0); }
}
@supports (view-transition-name: root) {
	.dbn-js #dbn-main::before { display: none; }
}

/* Header: a thin scroll indicator and context-aware dark chapter treatment. */
.dbn-header {
	transition: color var(--dbn-dur-md) var(--dbn-motion-ease), background-color var(--dbn-dur-md) var(--dbn-motion-ease),
		border-color var(--dbn-dur-md) var(--dbn-motion-ease), box-shadow var(--dbn-dur-md) var(--dbn-motion-ease),
		transform var(--dbn-dur-lg) var(--dbn-motion-ease);
}
.dbn-header.is-auto-hidden { transform: translate3d(0,calc(-100% - 4px),0); }
.dbn-header-static .dbn-header.is-auto-hidden { transform: none; }
.dbn-menu-open .dbn-header,
.dbn-header:focus-within { transform: none; }
.dbn-header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
	background: var(--dbn-blue);
	transform: scaleX(var(--dbn-page-progress));
	transform-origin: left;
	will-change: transform;
}
.dbn-header.is-stuck {
	background: rgba(255,255,255,0.88);
	backdrop-filter: blur(18px) saturate(1.2);
	-webkit-backdrop-filter: blur(18px) saturate(1.2);
	box-shadow: 0 16px 50px -40px rgba(4,72,159,0.8);
}
.dbn-header.is-tone-dark {
	background: rgba(4,72,159,0.9);
	border-bottom-color: rgba(207,247,255,0.18);
}
.dbn-header.is-tone-dark::after { background: var(--dbn-sky); }
.dbn-header.is-tone-dark .dbn-header__title,
.dbn-header.is-tone-dark .dbn-menu a { color: var(--dbn-white); }
.dbn-header.is-tone-dark .dbn-menu a::after { background: var(--dbn-sky); }
.dbn-header.is-tone-dark .dbn-header__cta {
	--btn-bg: var(--dbn-sky);
	--btn-bd: var(--dbn-sky);
	--btn-fg: var(--dbn-blue-deep);
}
.dbn-header.is-tone-dark .dbn-burger__line,
.dbn-header.is-tone-dark .dbn-burger__box::before,
.dbn-header.is-tone-dark .dbn-burger__box::after { background: var(--dbn-white); }

/* Immersive openings and the homepage may place the header directly over
   authored media. The translucent scrim preserves the full-bleed image while
   the Site Identity logo renders white for reliable contrast. */
.dbn-header.is-over-hero {
	background: linear-gradient(180deg,rgba(1,24,54,0.64),rgba(1,24,54,0));
	border-bottom-color: transparent;
	box-shadow: none;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}
.dbn-header.is-over-hero .dbn-header__title,
.dbn-header.is-over-hero .dbn-menu a,
.dbn-header.is-over-hero .dbn-menu__toggle { color: var(--dbn-white); }
.dbn-header.is-over-hero .dbn-menu a::after,
.dbn-header.is-over-hero::after { background: var(--dbn-sky); }
.dbn-header.is-over-hero .dbn-menu .current-menu-item > a { color: var(--dbn-sky); }
.dbn-header.is-over-hero .dbn-header__cta {
	--btn-bg: var(--dbn-sky);
	--btn-bd: var(--dbn-sky);
	--btn-fg: var(--dbn-blue-deep);
}
.dbn-header.is-over-hero .dbn-burger__line,
.dbn-header.is-over-hero .dbn-burger__box::before,
.dbn-header.is-over-hero .dbn-burger__box::after { background: var(--dbn-white); }
.dbn-header.is-tone-dark .dbn-header__logo,
.dbn-header.is-over-hero .dbn-header__logo { filter: brightness(0) invert(1); }

/* These two owner-authored full-bleed heroes begin behind the transparent
   header. Without JavaScript the negative margin is absent and the ordinary
   solid header remains a safe progressive fallback. */
.dbn-js #dbn-main > .dbn-hero--immersive[data-dbn-header-cover] { margin-top: calc(-1 * var(--dbn-header-h)); }
@media (max-width: 1180px) {
	.dbn-js #dbn-main > .dbn-hero--immersive[data-dbn-header-cover] {
		height: max(680px,100svh);
		min-height: max(680px,100svh);
	}
}

/* Word-by-word typography entrances. Wrappers preserve accessible names set
   by motion.js and prevent glyphs from being clipped by line boxes. */
.dbn-motion-title .dbn-motion-word {
	display: inline-block;
	overflow: hidden;
	vertical-align: bottom;
	padding: 0 0.025em 0.09em;
	margin: 0 -0.025em -0.09em 0;
}
.dbn-motion-title .dbn-motion-word__inner {
	display: inline-block;
	opacity: 0;
	transform: translateY(112%) rotate(1.5deg);
	transition: transform var(--dbn-motion-slow) var(--dbn-motion-ease), opacity var(--dbn-dur-lg) ease;
	transition-delay: calc(var(--dbn-word-index, 0) * 55ms + 90ms);
}
.dbn-motion-title.is-motion-visible .dbn-motion-word__inner,
.dbn-hero__text.is-visible .dbn-motion-word__inner {
	opacity: 1;
	transform: translateY(0) rotate(0);
}

/* A richer reveal vocabulary than one repeated fade-up. */
.dbn-js .dbn-motion-reveal {
	opacity: 0;
	transform: translate3d(0, 34px, 0) scale(0.988);
	transition: opacity var(--dbn-motion-medium) ease,
		transform var(--dbn-motion-slow) var(--dbn-motion-ease);
	transition-delay: var(--dbn-motion-delay, 0ms);
}
.dbn-js .dbn-motion-reveal[data-dbn-motion-from="left"] { transform: translate3d(-44px, 0, 0); }
.dbn-js .dbn-motion-reveal[data-dbn-motion-from="right"] { transform: translate3d(44px, 0, 0); }
.dbn-js .dbn-motion-reveal.is-motion-visible {
	opacity: 1;
	transform: translate3d(0,0,0) scale(1);
}

/* Masked media reveals, followed by a very small scroll drift on desktop. */
.dbn-js .dbn-motion-media {
	--dbn-media-y: 0px;
	clip-path: inset(0 0 100% 0 round var(--dbn-radius));
	transition: clip-path var(--dbn-dur-2xl) var(--dbn-motion-ease);
	transition-delay: var(--dbn-motion-delay, 80ms);
}
.dbn-js .dbn-motion-media.is-motion-visible { clip-path: inset(0 0 0 0 round var(--dbn-radius)); }
.dbn-motion-media > .dbn-media,
.dbn-motion-media > .dbn-ph,
.dbn-motion-media > img,
.dbn-motion-media .dbn-media__img {
	transform: translate3d(0,var(--dbn-media-y),0) scale(1.045);
	transition: transform var(--dbn-dur-2xl) var(--dbn-motion-ease), filter var(--dbn-dur-2xl) var(--dbn-motion-ease);
}
.dbn-motion-media.is-motion-visible > .dbn-media,
.dbn-motion-media.is-motion-visible > .dbn-ph,
.dbn-motion-media.is-motion-visible > img { transform: translate3d(0,var(--dbn-media-y),0) scale(1); }

/* Interior-page heroes use the same visual logic as the reference's opening:
   framed monochrome material gains colour and scale as the visitor commits.
   .dbn-hero--natural opts a hero out (v1.15.1 — Weddings by DBN and The Nhyi
   Experience show their photography in full colour, filling the section). */
.dbn-hero:not(.dbn-xhero) { --dbn-hero-p: 0; overflow-x: clip; }
.dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible {
	transform: translate3d(0,calc(var(--dbn-hero-p) * -28px),0);
	opacity: calc(1 - (var(--dbn-hero-p) * 0.58));
	transition: opacity 0.12s linear, transform 0.12s linear;
}
.dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__media,
.dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__banner,
.dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__bg {
	filter: grayscale(calc(1 - var(--dbn-hero-p)));
	transform: translate3d(0,calc(var(--dbn-hero-p) * -18px),0)
		scale(calc(0.96 + (var(--dbn-hero-p) * 0.04)));
	transform-origin: center;
	transition: filter var(--dbn-dur-md) var(--dbn-ease);
}
.dbn-hero:not(.dbn-xhero) .dbn-hero__media,
.dbn-hero:not(.dbn-xhero) .dbn-hero__banner {
	border-radius: calc(28px * (1 - var(--dbn-hero-p)));
	overflow: hidden;
	box-shadow: 0 34px 90px -50px rgba(4,72,159,0.75);
}

@media (hover: hover) and (pointer: fine) {
	.dbn-hover-color .dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__media:hover,
	.dbn-hover-color .dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__banner:hover,
	.dbn-hover-color .dbn-hero:not(.dbn-xhero):not(.dbn-hero--natural) .dbn-hero__bg:hover { filter: grayscale(0); }
}

/* Site-owner motion levels: subtle keeps entrances; off makes all content static. */
.dbn-motion-subtle .dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible,
.dbn-motion-subtle .dbn-hero:not(.dbn-xhero) .dbn-hero__media,
.dbn-motion-subtle .dbn-hero:not(.dbn-xhero) .dbn-hero__banner,
.dbn-motion-subtle .dbn-hero:not(.dbn-xhero) .dbn-hero__bg,
.dbn-motion-subtle .dbn-motion-media > *,
.dbn-motion-subtle .dbn-motion-media .dbn-media__img { transform: none; filter: none; }
.dbn-motion-subtle .dbn-cta-band::after { transform: none; }
.dbn-motion-subtle .dbn-template-about .dbn-story::before,
.dbn-motion-subtle .dbn-template-about .dbn-philosophy::before,
.dbn-motion-subtle .dbn-template-services .dbn-unsure__media,
.dbn-motion-subtle .dbn-template-weddings-by-dbn .dbn-process-bg .dbn-media,
.dbn-motion-subtle .dbn-template-weddings-by-dbn .dbn-process-bg .dbn-ph,
.dbn-motion-subtle .dbn-template-nhyi-experience .dbn-why::before,
.dbn-motion-subtle .dbn-template-events-collaborations .dbn-spotlight__text,
.dbn-motion-subtle .dbn-template-foundri .dbn-collage__item,
.dbn-motion-subtle .dbn-cta-band__inner,
.dbn-motion-subtle .dbn-bigcta__inner { transform: none; }

.dbn-motion-off .dbn-js #dbn-main::before,
.dbn-motion-off #dbn-main::before { display: none; }
.dbn-motion-off .dbn-header::after { display: none; }
.dbn-motion-off .dbn-header,
.dbn-motion-subtle .dbn-header { transform: none; }
.dbn-motion-off .dbn-footer--directed .dbn-footer__motion-item,
.dbn-motion-subtle .dbn-footer--directed .dbn-footer__motion-item { opacity: 1; transform: none; transition: none; }
.dbn-motion-off .dbn-motion-title .dbn-motion-word__inner,
.dbn-js .dbn-motion-off .dbn-motion-reveal,
.dbn-js .dbn-motion-off .dbn-motion-media,
.dbn-motion-off .dbn-motion-media > *,
.dbn-motion-off .dbn-motion-media .dbn-media__img,
.dbn-motion-off .dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible,
.dbn-motion-off .dbn-hero:not(.dbn-xhero) .dbn-hero__media,
.dbn-motion-off .dbn-hero:not(.dbn-xhero) .dbn-hero__banner,
.dbn-motion-off .dbn-hero:not(.dbn-xhero) .dbn-hero__bg,
.dbn-motion-off .dbn-cta-band::after {
	opacity: 1; transform: none; filter: none; clip-path: none; transition: none; animation: none;
}
.dbn-motion-off .dbn-service-card--lg { position: relative; top: auto; min-height: 0; }
.dbn-motion-off .dbn-opening::before,
.dbn-motion-off .dbn-opening::after,
.dbn-motion-off .dbn-scene__rail { display: none; }
.dbn-motion-off .dbn-opening .dbn-eyebrow,
.dbn-motion-off .dbn-opening .dbn-hero__sub,
.dbn-motion-off .dbn-opening .dbn-project__lead,
.dbn-motion-off .dbn-opening .dbn-hero__actions,
.dbn-motion-off .dbn-opening .dbn-pill,
.dbn-motion-off .dbn-opening .dbn-breadcrumb,
.dbn-motion-off .dbn-opening .dbn-404__body,
.dbn-motion-off .dbn-opening .dbn-404__actions,
.dbn-motion-off .dbn-opening .dbn-search-form,
.dbn-motion-off .dbn-opening__media,
.dbn-motion-off .dbn-opening__media > *,
.dbn-motion-off .dbn-opening__media .dbn-media__img,
.dbn-motion-off .dbn-motion-copy,
.dbn-motion-off .dbn-portfolio-card__media,
.dbn-motion-off .dbn-collab-card__media,
.dbn-motion-off .dbn-foundri-card__media,
.dbn-motion-off .dbn-portfolio-card__meta,
.dbn-motion-off .dbn-collab-card__body,
.dbn-motion-off .dbn-foundri-card__body,
.dbn-motion-off .dbn-project__feature {
	opacity: 1; transform: none; filter: none; clip-path: none; transition: none; animation: none;
}
.dbn-motion-off .dbn-template-services .dbn-service-card--lg,
.dbn-motion-off .dbn-template-services .dbn-service-card--lg .dbn-service-card__body > *,
.dbn-motion-off .dbn-template-events-collaborations .dbn-collab-type,
.dbn-motion-off .dbn-template-foundri .dbn-collage__item,
.dbn-motion-off .dbn-cta-band__inner,
.dbn-motion-off .dbn-bigcta__inner { opacity: 1; transform: none; transition: none; }
html.dbn-motion-off::view-transition-old(root),
html.dbn-motion-off::view-transition-new(root),
html.dbn-motion-off::view-transition-group(.dbn-project-art),
html.dbn-motion-off::view-transition-old(.dbn-project-art),
html.dbn-motion-off::view-transition-new(.dbn-project-art),
html.dbn-motion-off::view-transition-group(.dbn-project-title),
html.dbn-motion-off::view-transition-old(.dbn-project-title),
html.dbn-motion-off::view-transition-new(.dbn-project-title),
html.dbn-save-data::view-transition-group(.dbn-project-art),
html.dbn-save-data::view-transition-old(.dbn-project-art),
html.dbn-save-data::view-transition-new(.dbn-project-art),
html.dbn-save-data::view-transition-group(.dbn-project-title),
html.dbn-save-data::view-transition-old(.dbn-project-title),
html.dbn-save-data::view-transition-new(.dbn-project-title) { animation: none; }

@media (min-width: 821px) {
	.dbn-hero--page,
	.dbn-hero--foundri { min-height: clamp(58vh, 70vh, 80vh); display: flex; align-items: center; }
	/* Contact leads with the form, so its hero stays compact. */
	.dbn-template-contact .dbn-hero--page { min-height: clamp(48vh, 56vh, 62vh); }
	.dbn-hero--portfolio { padding-top: clamp(4rem,8vh,7rem); }

	/* Services become deliberate full-height chapters, echoing the reference's
	   stacked service story while retaining DBN's imagery and copy. */
	.dbn-services-stack { counter-reset: dbn-service; gap: 2rem; padding-bottom: 10vh; }
	.dbn-service-card--lg {
		--dbn-stack-index: 0;
		counter-increment: dbn-service;
		position: sticky;
		top: calc(92px + (var(--dbn-stack-index) * 3px));
		min-height: calc(100svh - 116px);
		border-radius: clamp(18px,2.2vw,30px);
		box-shadow: var(--dbn-shadow-float);
		isolation: isolate;
	}
	.dbn-service-card--lg::after {
		content: attr(data-dbn-index);
		position: absolute;
		top: 1.2rem;
		right: 1.5rem;
		z-index: 3;
		font-family: var(--dbn-serif);
		font-size: clamp(2.5rem,5vw,5rem);
		line-height: 1;
		color: rgba(4,72,159,0.14);
	}
	.dbn-service-card--lg:nth-child(even) { background: var(--dbn-sky); }
	.dbn-service-card--lg:nth-child(3n) { background: var(--dbn-blue-deep); color: var(--dbn-white); }
	.dbn-service-card--lg:nth-child(3n) .dbn-service-card__title,
	.dbn-service-card--lg:nth-child(3n) .dbn-service-card__desc,
	.dbn-service-card--lg:nth-child(3n) .dbn-service-card__bestfor,
	.dbn-service-card--lg:nth-child(3n) .dbn-checklist li { color: var(--dbn-white); }
	.dbn-service-card--lg:nth-child(3n)::after { color: rgba(207,247,255,0.18); }
	.dbn-service-card--lg .dbn-service-card__media { overflow: hidden; }
	.dbn-service-card--lg .dbn-service-card__body { justify-content: center; }
	.dbn-service-card--lg .dbn-service-card__actions { margin-top: 1rem; padding-top: 0; }
	.dbn-service-card--lg .dbn-service-card__media > * {
		height: 100%;
		transition: transform var(--dbn-dur-2xl) var(--dbn-motion-ease), filter var(--dbn-dur-xl) ease;
	}
	.dbn-service-card--lg.is-stack-active .dbn-service-card__media > * { transform: scale(1.025); }
}

/* Process lines fill as the section is read. */
.dbn-process { --dbn-process-p: 0; position: relative; }
@media (min-width: 601px) {
	.dbn-process::after {
		content: "";
		position: absolute;
		left: 0;
		top: 0;
		width: 100%;
		height: 2px;
		background: var(--dbn-blue);
		transform: scaleX(var(--dbn-process-p));
		transform-origin: left;
	}
	.dbn-process__step { border-top-color: rgba(4,72,159,0.14); }
}
@media (max-width: 600px) {
	.dbn-process::after {
		content: "";
		position: absolute;
		left: 0;
		top: 0;
		width: 2px;
		height: 100%;
		background: var(--dbn-blue);
		transform: scaleY(var(--dbn-process-p));
		transform-origin: top;
	}
}

/* Cards feel tactile on pointer devices, but do not jump around on touch. */
@media (hover: hover) and (pointer: fine) {
	.dbn-pillar,
	.dbn-package-card,
	.dbn-testimonial-card,
	.dbn-foundri-card,
	.dbn-vendor-card.has-link,
	.dbn-collab-card,
	.dbn-quick-card {
		transition: transform var(--dbn-dur-lg) var(--dbn-motion-ease), box-shadow var(--dbn-dur-lg) var(--dbn-motion-ease),
			border-color var(--dbn-dur-md) ease;
	}
	.dbn-pillar:hover,
	.dbn-package-card:hover,
	.dbn-testimonial-card:hover,
	.dbn-foundri-card:hover,
	.dbn-vendor-card.has-link:hover,
	.dbn-collab-card:hover,
	.dbn-quick-card:hover {
		transform: translateY(-8px);
		border-color: rgba(11,73,160,0.36);
		box-shadow: var(--dbn-shadow-lift);
	}
	.dbn-portfolio-card__media .dbn-media__img,
	.dbn-portfolio-card__media .dbn-ph,
	.dbn-gallery-masonry__item .dbn-media__img,
	.dbn-gallery-masonry__item .dbn-ph { transition: transform var(--dbn-dur-xl) var(--dbn-motion-ease), filter var(--dbn-dur-lg) ease; }
	.dbn-portfolio-card:hover .dbn-media__img,
	.dbn-portfolio-card:hover .dbn-ph,
	.dbn-gallery-masonry__item:hover .dbn-media__img,
	.dbn-gallery-masonry__item:hover .dbn-ph { transform: scale(1.045); }
	.dbn-vendor-card.has-link:hover .dbn-vendor-card__media .dbn-media__img { transform: scale(1.045); }
	.dbn-vendor-card.has-link:hover .dbn-vendor-card__arrow {
		transform: translate(2px, -2px);
		background: var(--dbn-blue);
		color: #fff;
	}
}

/* Buttons use a quiet light sweep instead of a generic abrupt colour swap. */
.dbn-btn {
	background-image: linear-gradient(110deg, transparent 0 36%, rgba(255,255,255,0.26) 48%, transparent 60% 100%);
	background-size: 240% 100%;
	background-position: 120% 0;
	transition: transform var(--dbn-dur-md) var(--dbn-motion-ease), box-shadow var(--dbn-dur-md) ease,
		background-color var(--dbn-dur-md) ease, color var(--dbn-dur-md) ease, border-color var(--dbn-dur-md) ease,
		background-position var(--dbn-dur-xl) var(--dbn-motion-ease);
}
.dbn-btn:hover { background-position: -30% 0; }

/* Portfolio filtering deliberately retains the responsive CSS-column masonry
   from main.css and responsive.css; switching mixed-ratio cards to a row grid
   creates large, artificial gaps beneath shorter artwork. Only the filter
   controls animate. Results repaint synchronously so a scrolled masonry reflow
   never enters the fixed View Transition layer or promotes the multi-column
   grid/cards into unstable compositor layers. */
.dbn-portfolio-card {
	transition: opacity var(--dbn-dur-sm) ease, transform var(--dbn-dur-lg) var(--dbn-motion-ease);
}

/* Closing chapters carry a large typographic watermark that drifts with the
   local section progress. */
.dbn-cta-band,
.dbn-bigcta { --dbn-section-p: 0; }
.dbn-cta-band::after {
	content: "CREATE\00a0 WITH\00a0 INTENTION";
	position: absolute;
	left: -8vw;
	bottom: -0.26em;
	font-family: var(--dbn-serif);
	font-size: clamp(4rem,11vw,10rem);
	line-height: 0.8;
	white-space: nowrap;
	color: rgba(207,247,255,0.07);
	transform: translateX(calc(var(--dbn-section-p) * -12vw));
	pointer-events: none;
}
.dbn-cta-band--portfolio::after { color: rgba(11,73,160,0.07); }

/* =========================================================================
   Cinematic chapter system (v1.18.0)

   Interior pages now share the deliberate pacing of the homepage Studio
   sequence: a composed opening, scene handoffs, editorial media masks and
   page-specific signature moments. All selectors enhance existing template
   markup, so every WordPress field and owner-controlled image remains the
   source of what visitors see.
   ========================================================================= */

/* ----- Composed page openings ----------------------------------------- */
.dbn-opening {
	--dbn-opening-accent: rgba(11,73,160,0.12);
	isolation: isolate;
	overflow: clip;
}
.dbn-opening::before {
	content: "";
	position: absolute;
	z-index: -1;
	width: min(72vw, 820px);
	aspect-ratio: 1;
	right: -28vw;
	top: -42%;
	border: 1px solid var(--dbn-opening-accent);
	border-radius: 50%;
	box-shadow: 0 0 0 8vw rgba(207,247,255,0.12), 0 0 0 16vw rgba(11,73,160,0.025);
	transform: translate3d(calc(var(--dbn-hero-p, 0) * -5vw), calc(var(--dbn-hero-p, 0) * 3vw), 0) rotate(calc(var(--dbn-hero-p, 0) * 8deg));
	transition: opacity var(--dbn-motion-slow) ease;
	pointer-events: none;
}
.dbn-opening::after {
	content: "";
	position: absolute;
	z-index: 4;
	left: 0;
	top: 0;
	width: 100%;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(11,73,160,0.42), transparent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 1.35s 0.16s var(--dbn-motion-ease);
	pointer-events: none;
}
.dbn-page-entered .dbn-opening::after { transform: scaleX(1); }

.dbn-js .dbn-opening .dbn-eyebrow {
	opacity: 0;
	letter-spacing: 0.32em;
	transform: translateY(12px);
	transition: opacity 0.7s 0.16s ease, transform 0.9s 0.16s var(--dbn-motion-ease), letter-spacing 1.2s 0.16s var(--dbn-motion-ease);
}
.dbn-page-entered .dbn-opening .dbn-eyebrow {
	opacity: 1;
	letter-spacing: 0.18em;
	transform: none;
}
.dbn-js .dbn-opening .dbn-hero__sub,
.dbn-js .dbn-opening .dbn-project__lead,
.dbn-js .dbn-opening .dbn-hero__actions,
.dbn-js .dbn-opening .dbn-pill,
.dbn-js .dbn-opening .dbn-breadcrumb,
.dbn-js .dbn-opening .dbn-404__body,
.dbn-js .dbn-opening .dbn-404__actions,
.dbn-js .dbn-opening .dbn-search-form {
	opacity: 0;
	transform: translateY(20px);
	transition: opacity 0.75s ease, transform 1s var(--dbn-motion-ease);
}
.dbn-js .dbn-opening .dbn-hero__sub,
.dbn-js .dbn-opening .dbn-project__lead { transition-delay: 0.42s; }
.dbn-js .dbn-opening .dbn-hero__actions,
.dbn-js .dbn-opening .dbn-pill,
.dbn-js .dbn-opening .dbn-404__actions,
.dbn-js .dbn-opening .dbn-search-form { transition-delay: 0.55s; }
.dbn-js .dbn-opening .dbn-404__body { transition-delay: 0.42s; }
.dbn-js .dbn-opening .dbn-breadcrumb { transition-delay: 0.08s; }
.dbn-page-entered .dbn-opening .dbn-hero__sub,
.dbn-page-entered .dbn-opening .dbn-project__lead,
.dbn-page-entered .dbn-opening .dbn-hero__actions,
.dbn-page-entered .dbn-opening .dbn-pill,
.dbn-page-entered .dbn-opening .dbn-breadcrumb,
.dbn-page-entered .dbn-opening .dbn-404__body,
.dbn-page-entered .dbn-opening .dbn-404__actions,
.dbn-page-entered .dbn-opening .dbn-search-form { opacity: 1; transform: none; }

.dbn-js .dbn-opening__media {
	opacity: 0.01;
	clip-path: inset(0 0 100% 0 round clamp(14px,2vw,28px));
	transition: clip-path 1.35s calc(0.14s + (var(--dbn-opening-media-index, 0) * 90ms)) var(--dbn-motion-ease),
		opacity 0.45s calc(0.14s + (var(--dbn-opening-media-index, 0) * 90ms)) ease;
}
.dbn-page-entered .dbn-opening__media { opacity: 1; clip-path: inset(0 0 0 0 round clamp(14px,2vw,28px)); }
.dbn-js .dbn-hero--immersive .dbn-opening__media,
.dbn-page-entered .dbn-hero--immersive .dbn-opening__media {
	opacity: 1;
	clip-path: none;
	transition: none;
}
.dbn-opening__media > .dbn-media,
.dbn-opening__media > .dbn-ph,
.dbn-opening__media > img,
.dbn-opening__media .dbn-media__img {
	transform: scale(1.075);
	transition: transform 1.7s 0.1s var(--dbn-motion-ease), filter 1.1s ease;
}
.dbn-page-entered .dbn-opening__media > .dbn-media,
.dbn-page-entered .dbn-opening__media > .dbn-ph,
.dbn-page-entered .dbn-opening__media > img,
.dbn-page-entered .dbn-opening__media .dbn-media__img { transform: scale(1); }

/* ----- Scroll-aware scene handoffs ------------------------------------ */
.dbn-scene {
	--dbn-scene-p: 0;
	--dbn-scene-focus: 0;
	position: relative;
	isolation: isolate;
}
.dbn-scene > .dbn-container { position: relative; z-index: 1; }
.dbn-scene__rail { display: none; pointer-events: none; }

@media (min-width: 1320px) {
	.dbn-scene:not(.dbn-opening) > .dbn-scene__rail {
		display: block;
		position: absolute;
		z-index: 3;
		right: max(1.2rem, calc((100vw - var(--dbn-maxw)) / 2 - 4.5rem));
		top: clamp(2.5rem,7vw,6rem);
		width: 1px;
		height: clamp(58px,8vw,108px);
		background: rgba(11,73,160,0.13);
		opacity: calc(0.22 + (var(--dbn-scene-focus) * 0.68));
		transition: opacity 0.25s linear;
	}
	.dbn-scene:not(.dbn-opening) > .dbn-scene__rail::before {
		content: attr(data-dbn-scene-number);
		position: absolute;
		top: -1.8rem;
		left: 50%;
		transform: translateX(-50%);
		font-family: var(--dbn-serif);
		font-size: 0.8rem;
		color: var(--dbn-blue);
	}
	.dbn-scene:not(.dbn-opening) > .dbn-scene__rail::after {
		content: "";
		position: absolute;
		inset: 0;
		background: var(--dbn-blue);
		transform: scaleY(var(--dbn-scene-p));
		transform-origin: top;
	}
	.dbn-section--dark > .dbn-scene__rail,
	.dbn-motion-dark > .dbn-scene__rail,
	.dbn-cta-band > .dbn-scene__rail { background: rgba(207,247,255,0.2); }
	.dbn-section--dark > .dbn-scene__rail::before,
	.dbn-motion-dark > .dbn-scene__rail::before,
	.dbn-cta-band > .dbn-scene__rail::before { color: var(--dbn-sky); }
	.dbn-section--dark > .dbn-scene__rail::after,
	.dbn-motion-dark > .dbn-scene__rail::after,
	.dbn-cta-band > .dbn-scene__rail::after { background: var(--dbn-sky); }
}

.dbn-js .dbn-motion-copy {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 0.75s calc(0.18s + (var(--dbn-copy-index, 0) * 90ms)) ease,
		transform 1s calc(0.18s + (var(--dbn-copy-index, 0) * 90ms)) var(--dbn-motion-ease);
}
.dbn-scene.is-scene-active .dbn-motion-copy,
.dbn-opening .dbn-motion-copy { opacity: 1; transform: none; }

/* ----- Reveal -> Travel -> Arrive -----------------------------------
   Scroll movement stays inside each scene's own paint boundary. Desktop has
   a broad editorial glide, tablet a shorter two-handed drift, and phone a
   compact app-like handoff; the scheduler supplies the calibrated pixels.
   Media moves independently at a fraction of that distance to create depth
   without fixed layers, mandatory snap points or inaccessible scrolljacking. */
html:not(.dbn-save-data) body:not(.dbn-motion-subtle):not(.dbn-motion-off) .dbn-scene--journey { overflow-x: clip; }
html:not(.dbn-save-data) body:not(.dbn-motion-subtle):not(.dbn-motion-off) .dbn-scene--journey > .dbn-scene__canvas {
	transform: translate3d(var(--dbn-scene-x,0px),0,0);
	transition: transform 0.12s linear;
}
html:not(.dbn-save-data) body:not(.dbn-motion-subtle):not(.dbn-motion-off) .dbn-journey-depth { overflow: clip; }
html:not(.dbn-save-data) body:not(.dbn-motion-subtle):not(.dbn-motion-off) .dbn-journey-depth .dbn-journey-art {
	transform: translate3d(var(--dbn-depth-x,0px),0,0) scale(var(--dbn-depth-scale,1));
	transform-origin: 50% 50%;
	transition: transform 0.12s linear, filter var(--dbn-dur-lg) ease;
}

/* Cards open like small editorial frames, with their labels following the
   artwork instead of every component fading as one flat block. */
.dbn-js .dbn-portfolio-card.dbn-motion-reveal .dbn-portfolio-card__media,
.dbn-js .dbn-collab-card.dbn-motion-reveal .dbn-collab-card__media,
.dbn-js .dbn-foundri-card.dbn-motion-reveal .dbn-foundri-card__media {
	clip-path: inset(0 0 100% 0 round var(--dbn-radius-lg));
	transition: clip-path 1.05s var(--dbn-motion-ease);
}
.dbn-js .dbn-portfolio-card.dbn-motion-reveal.is-motion-visible .dbn-portfolio-card__media,
.dbn-js .dbn-collab-card.dbn-motion-reveal.is-motion-visible .dbn-collab-card__media,
.dbn-js .dbn-foundri-card.dbn-motion-reveal.is-motion-visible .dbn-foundri-card__media { clip-path: inset(0 0 0 0 round var(--dbn-radius-lg)); }
.dbn-portfolio-card__meta,
.dbn-collab-card__body,
.dbn-foundri-card__body {
	transition: transform 0.9s var(--dbn-motion-ease), opacity 0.7s ease;
}
.dbn-js .dbn-portfolio-card.dbn-motion-reveal:not(.is-motion-visible) .dbn-portfolio-card__meta,
.dbn-js .dbn-collab-card.dbn-motion-reveal:not(.is-motion-visible) .dbn-collab-card__body,
.dbn-js .dbn-foundri-card.dbn-motion-reveal:not(.is-motion-visible) .dbn-foundri-card__body { opacity: 0; transform: translateY(14px); }

/* ----- Page signatures ------------------------------------------------ */

/* About: paired frames enter as a living contact sheet; the founder story
   then passes from portrait to words instead of reading as two static boxes. */
.dbn-template-about .dbn-hero__media--pair { position: relative; perspective: 1200px; }
.dbn-template-about .dbn-hero__media--pair::before {
	content: "";
	position: absolute;
	inset: -1rem 14% 12% -1rem;
	border: 1px solid rgba(11,73,160,0.2);
	border-radius: var(--dbn-radius-lg);
	transform: translate3d(0,calc(var(--dbn-hero-p) * 18px),-1px);
	pointer-events: none;
}
.dbn-template-about .dbn-hero__media--pair > * { transition: transform 1.35s var(--dbn-motion-ease), box-shadow 1.1s ease; }
.dbn-page-entered .dbn-template-about .dbn-hero__media--pair > *:first-child { transform: translateY(-8px) rotate(-1.2deg); }
.dbn-page-entered .dbn-template-about .dbn-hero__media--pair > *:last-child { transform: translateY(14px) rotate(1.2deg); }
.dbn-template-about .dbn-story::before {
	content: "";
	position: absolute;
	left: 0;
	top: 12%;
	width: 34%;
	height: 72%;
	background: linear-gradient(90deg, rgba(207,247,255,0.74), transparent);
	transform: translateX(calc((1 - var(--dbn-scene-focus)) * -18%));
	z-index: -1;
}
.dbn-template-about .dbn-story__inner { position: relative; }
.dbn-template-about .dbn-story__inner::after {
	content: "";
	position: absolute;
	left: 25%;
	top: 72%;
	width: 25%;
	height: 28%;
	border-left: 1px solid rgba(11,73,160,0.42);
	border-bottom: 1px solid rgba(11,73,160,0.18);
	pointer-events: none;
}
.dbn-template-about .dbn-philosophy { overflow: clip; }
.dbn-template-about .dbn-philosophy::before {
	content: "INTENTION";
	position: absolute;
	left: -0.04em;
	bottom: -0.25em;
	font-family: var(--dbn-serif);
	font-size: clamp(5rem,16vw,14rem);
	line-height: 0.8;
	color: rgba(11,73,160,0.045);
	transform: translateX(calc(var(--dbn-scene-p) * -8vw));
	pointer-events: none;
}
.dbn-template-about .dbn-philosophy .dbn-heading { position: relative; }
.dbn-template-about .dbn-philosophy .dbn-heading::before {
	content: "";
	position: absolute;
	left: 50%;
	top: calc(-1 * var(--dbn-section-y));
	width: 1px;
	height: clamp(2.5rem, 5vw, 5rem);
	background: linear-gradient(180deg, rgba(11,73,160,0.08), rgba(11,73,160,0.48));
}
.dbn-template-about .dbn-pillar { transform-origin: 50% 100%; }
.dbn-template-about .dbn-pillar > * {
	transform: translateY(calc((1 - var(--dbn-scene-focus, 1)) * 16px));
	transition: transform 0.9s var(--dbn-motion-ease);
}

/* Services: the hero becomes a quiet prologue and the sticky stack reads as
   chapters turning over, while retaining every service/card admin control. */
.dbn-template-services .dbn-hero--page {
	background:
		radial-gradient(circle at 16% 72%, rgba(207,247,255,0.78), transparent 28%),
		radial-gradient(circle at 88% 18%, rgba(11,73,160,0.08), transparent 30%);
}
.dbn-template-services .dbn-hero--page::before { right: -8vw; top: -72%; width: min(78vw,900px); }
.dbn-template-services .dbn-service-card--lg {
	transition: transform 0.8s var(--dbn-motion-ease), box-shadow 0.8s var(--dbn-motion-ease);
}
.dbn-template-services .dbn-service-card--lg:not(.is-stack-active) { opacity: 1; transform: scale(0.992); }
.dbn-template-services .dbn-service-card--lg.is-stack-active { box-shadow: 0 34px 90px -44px rgba(4,72,159,0.7); }
.dbn-template-services .dbn-service-card--lg .dbn-service-card__body > * {
	transition: transform 0.9s var(--dbn-motion-ease);
}
.dbn-template-services .dbn-service-card--lg:not(.is-stack-active) .dbn-service-card__body > * { opacity: 1; transform: none; }
.dbn-template-services .dbn-unsure { overflow: clip; }
.dbn-template-services .dbn-unsure__media { transform: translateY(calc((0.5 - var(--dbn-scene-focus)) * 26px)); }

/* Portfolio: the banner opens as a cinema frame, the filter becomes a stable
   editing desk, and mixed-ratio masonry still reflows naturally underneath. */
.dbn-template-portfolio .dbn-hero--portfolio::before { top: -70%; right: -14vw; }
.dbn-template-portfolio .dbn-hero__banner {
	transform-origin: 50% 100%;
	box-shadow: 0 50px 120px -64px rgba(4,72,159,0.9);
}
.dbn-template-portfolio .dbn-filters {
	--dbn-filter-pill-x: 0px;
	--dbn-filter-pill-w: 0px;
	position: sticky;
	top: calc(var(--dbn-header-h) + 0.75rem);
	z-index: 20;
	width: fit-content;
	max-width: 100%;
	margin-inline: auto;
	padding: 0.45rem;
	border: 1px solid rgba(11,73,160,0.12);
	border-radius: 999px;
	background: rgba(255,255,255,0.82);
	box-shadow: 0 20px 55px -38px rgba(4,72,159,0.9);
	backdrop-filter: blur(18px) saturate(1.25);
	-webkit-backdrop-filter: blur(18px) saturate(1.25);
	isolation: isolate;
	flex-wrap: nowrap;
	justify-content: flex-start;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-inline: contain;
	scroll-snap-type: x proximity;
	scrollbar-width: none;
	transition: top var(--dbn-dur-lg) var(--dbn-motion-ease), box-shadow var(--dbn-dur-md) ease;
}
.dbn-template-portfolio .dbn-filters::-webkit-scrollbar { display: none; }
.dbn-template-portfolio .dbn-filters::before {
	content: ""; position: absolute; z-index: -1; top: 0.45rem; bottom: 0.45rem; left: 0;
	width: var(--dbn-filter-pill-w); border-radius: 999px; background: var(--dbn-blue-deep);
	transform: translateX(var(--dbn-filter-pill-x));
	transition: width var(--dbn-dur-lg) var(--dbn-motion-ease), transform var(--dbn-dur-lg) var(--dbn-motion-ease);
	pointer-events: none;
}
.dbn-template-portfolio .dbn-filter { flex: 0 0 auto; scroll-snap-align: center; transition: color 0.35s ease, background 0.5s var(--dbn-motion-ease), transform 0.35s var(--dbn-motion-ease); }
.dbn-template-portfolio .dbn-filters.is-pill-ready .dbn-filter { position: relative; z-index: 1; }
.dbn-template-portfolio .dbn-filters.is-pill-ready .dbn-filter.is-active { background: transparent; border-color: transparent; color: var(--dbn-white); }
.dbn-template-portfolio .dbn-filter:active { transform: scale(0.96); }
.dbn-header-hidden.dbn-template-portfolio .dbn-filters,
.dbn-header-hidden .dbn-form-progress { top: 0.75rem; }
.dbn-template-portfolio .dbn-portfolio-card:nth-child(3n+2) .dbn-portfolio-card__media { transition-delay: 70ms; }
.dbn-template-portfolio .dbn-portfolio-card:nth-child(3n) .dbn-portfolio-card__media { transition-delay: 130ms; }
.dbn-template-portfolio .dbn-portfolio-reels__kinetic { transform: translateX(calc(var(--dbn-scene-p) * -8vw)); }

/* Weddings: a veil-like opening, paper depth around the invitation imagery,
   and a process backdrop that gently breathes as the chapter is read. */
.dbn-template-weddings-by-dbn .dbn-hero--weddings::before {
	width: 68vw;
	right: -28vw;
	top: -30%;
	border-color: rgba(255,255,255,0.22);
	box-shadow: 0 0 0 10vw rgba(255,255,255,0.035), 0 0 0 20vw rgba(207,247,255,0.035);
}
.dbn-template-weddings-by-dbn #dbn-main { overflow-x: clip; }
.dbn-template-weddings-by-dbn .dbn-intro__media { position: relative; overflow: visible; }
.dbn-template-weddings-by-dbn .dbn-intro__media::before,
.dbn-template-weddings-by-dbn .dbn-intro__media::after {
	content: "";
	position: absolute;
	inset: 5% 8% -3% -5%;
	border: 1px solid rgba(11,73,160,0.18);
	border-radius: var(--dbn-radius-lg);
	z-index: -1;
	transform: rotate(-2.2deg);
}
.dbn-template-weddings-by-dbn .dbn-intro__media::after { inset: -3% -4% 7% 7%; transform: rotate(1.6deg); background: rgba(207,247,255,0.38); }
.dbn-template-weddings-by-dbn .dbn-wedding-services { gap: clamp(1.4rem, 3vw, 2.5rem); }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card {
	position: relative;
	isolation: isolate;
	overflow: visible;
	border-color: rgba(11,73,160,0.14);
	box-shadow: 0 24px 64px -46px rgba(4,72,159,0.75);
}
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::before,
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border: 1px solid rgba(11,73,160,0.14);
	border-radius: var(--dbn-radius-lg);
	background: #fff;
	pointer-events: none;
	transition: transform 1s var(--dbn-motion-ease), box-shadow 0.8s ease;
}
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::before {
	background: rgba(207,247,255,0.72);
	transform: translateY(calc((1 - var(--dbn-scene-focus, 1)) * 12px)) rotate(-1.6deg);
}
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::after {
	transform: translateY(calc((1 - var(--dbn-scene-focus, 1)) * -9px)) rotate(1.15deg);
}
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card:nth-child(even)::before { transform: translateY(calc((1 - var(--dbn-scene-focus, 1)) * 12px)) rotate(1.5deg); }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card:nth-child(even)::after { transform: translateY(calc((1 - var(--dbn-scene-focus, 1)) * -9px)) rotate(-1deg); }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card__media { position: relative; z-index: 1; overflow: hidden; border-radius: var(--dbn-radius-lg) var(--dbn-radius-lg) 0 0; }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card__body { position: relative; z-index: 1; border-radius: 0 0 var(--dbn-radius-lg) var(--dbn-radius-lg); background: #fff; }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card:hover::before { transform: translate(-0.35rem, 0.4rem) rotate(-2.4deg); }
.dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card:hover::after { transform: translate(0.3rem, -0.25rem) rotate(1.8deg); box-shadow: 0 28px 70px -46px rgba(4,72,159,0.7); }
.dbn-template-weddings-by-dbn .dbn-process-bg .dbn-media,
.dbn-template-weddings-by-dbn .dbn-process-bg .dbn-ph { transform: scale(calc(1.08 - (var(--dbn-scene-focus) * 0.05))); }

/* The Nhyi Experience: an event-like aperture, orbiting identity line and
   numbered details that arrive with the energy of a campaign reveal. */
.dbn-template-nhyi-experience .dbn-hero--experience::before {
	left: 50%;
	top: 50%;
	right: auto;
	width: min(76vw,780px);
	border-color: rgba(207,247,255,0.2);
	box-shadow: 0 0 0 8vw rgba(207,247,255,0.025), 0 0 0 16vw rgba(207,247,255,0.018);
	transform: translate(-50%,-50%) rotate(calc(var(--dbn-hero-p,0) * 12deg));
}
.dbn-template-nhyi-experience .dbn-hero--experience .dbn-hero__bg .dbn-media__img {
	transform: scale(calc(1.07 - (var(--dbn-hero-p,0) * 0.03)));
}
.dbn-template-nhyi-experience .dbn-why { overflow: clip; }
.dbn-template-nhyi-experience .dbn-why::before {
	content: "WHY";
	position: absolute;
	left: 50%;
	top: 50%;
	font-family: var(--dbn-serif);
	font-size: clamp(9rem,28vw,25rem);
	line-height: 1;
	color: rgba(207,247,255,0.035);
	transform: translate(-50%,-50%) scale(calc(0.92 + (var(--dbn-scene-focus) * 0.08)));
	pointer-events: none;
}
.dbn-template-nhyi-experience .dbn-detail-grid { counter-reset: dbn-experience-detail; }
.dbn-template-nhyi-experience .dbn-detail { position: relative; overflow: hidden; counter-increment: dbn-experience-detail; }
.dbn-template-nhyi-experience .dbn-detail::before {
	content: counter(dbn-experience-detail, decimal-leading-zero);
	position: absolute;
	right: -0.25rem;
	top: -0.8rem;
	font-family: var(--dbn-serif);
	font-size: 4rem;
	color: rgba(11,73,160,0.04);
}

/* Events & Collaborations: editorial tiles form a contact sheet; the
   spotlight handoff travels laterally from image into copy. */
.dbn-template-events-collaborations .dbn-collab-type__media { overflow: hidden; border-radius: var(--dbn-radius-lg); }
.dbn-template-events-collaborations .dbn-collab-type:nth-child(2n) { transform: translateY(clamp(0.8rem,2vw,1.6rem)); }
.dbn-template-events-collaborations .dbn-spotlight__media { transform-origin: 100% 50%; }
.dbn-template-events-collaborations .dbn-spotlight__text { transform: translateX(calc((1 - var(--dbn-scene-focus)) * 20px)); }

/* Contact: deliberately calm. The editorial strip bridges the opening to a
   form whose underline follows focus, so completion feels guided, not busy. */
.dbn-template-contact .dbn-contact-editorial { clip-path: inset(0 8% round var(--dbn-radius-lg)); }
.dbn-template-contact .dbn-contact-editorial.is-motion-visible { clip-path: inset(0 0 round 0); }
.dbn-template-contact .dbn-form__field { position: relative; }
.dbn-template-contact .dbn-form__field::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: var(--dbn-blue);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.55s var(--dbn-motion-ease);
	pointer-events: none;
}
.dbn-template-contact .dbn-form__field:focus-within::after { transform: scaleX(1); }
.dbn-template-contact .dbn-quick-card__arrow { transition: transform 0.6s var(--dbn-motion-ease), background 0.4s ease, color 0.4s ease; }
.dbn-template-contact .dbn-quick-card:hover .dbn-quick-card__arrow { transform: translate(3px,-3px) rotate(4deg); }

/* Search and 404 are useful destinations, not dead ends. Their atmosphere is
   generated from the existing interface and adds no new editable content. */
.search .dbn-search {
	position: relative; overflow: clip; min-height: 68svh;
	background: radial-gradient(circle at 15% 14%, rgba(207,247,255,0.58), transparent 30%);
}
.search .dbn-search::before {
	content: "FIND"; position: absolute; right: -0.08em; top: 0.12em; z-index: 0;
	font-family: var(--dbn-serif); font-size: clamp(7rem,22vw,20rem); line-height: 0.8;
	color: rgba(11,73,160,0.035); pointer-events: none;
}
.search .dbn-search > .dbn-container { position: relative; z-index: 1; }
.search .dbn-search-form { position: relative; }
.search .dbn-search-form::after {
	content: ""; position: absolute; left: 1rem; right: calc(8rem + 1px); bottom: -0.75rem; height: 1px;
	background: linear-gradient(90deg,var(--dbn-blue),transparent); transform: scaleX(0); transform-origin: left;
	transition: transform var(--dbn-dur-xl) var(--dbn-motion-ease); pointer-events: none;
}
.search .dbn-search-form:focus-within::after { transform: scaleX(1); }
.error404 .dbn-404 {
	position: relative;
	background: radial-gradient(circle at 50% 44%, rgba(207,247,255,0.78), transparent 38%);
}
.error404 .dbn-404::before {
	content: "404"; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-52%);
	font-family: var(--dbn-serif); font-size: clamp(11rem,35vw,32rem); line-height: 0.7;
	color: rgba(11,73,160,0.045); letter-spacing: -0.08em; pointer-events: none;
}

/* The footer completes the page with a quiet staged arrival. */
.dbn-js .dbn-footer--directed .dbn-footer__motion-item {
	opacity: 0; transform: translate3d(0,24px,0);
	transition: opacity var(--dbn-dur-xl) calc(var(--dbn-footer-index,0) * 85ms) ease,
		transform var(--dbn-motion-slow) calc(var(--dbn-footer-index,0) * 85ms) var(--dbn-motion-ease);
}
.dbn-js .dbn-footer--directed.is-footer-visible .dbn-footer__motion-item { opacity: 1; transform: none; }
.dbn-js .dbn-footer--directed:not(.is-footer-visible) .dbn-footer__marquee-track { animation-play-state: paused; }
.dbn-footer__menu a,
.dbn-footer__policy-menu a { position: relative; }
.dbn-footer__menu a::after,
.dbn-footer__policy-menu a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0.2rem; height: 1px;
	background: var(--dbn-sky); transform: scaleX(0); transform-origin: right;
	transition: transform var(--dbn-dur-lg) var(--dbn-motion-ease);
}
.dbn-footer__menu a:hover::after,
.dbn-footer__menu a:focus-visible::after,
.dbn-footer__policy-menu a:hover::after,
.dbn-footer__policy-menu a:focus-visible::after { transform: scaleX(1); transform-origin: left; }

/* Foundri: the existing owner-driven collage becomes a restrained floating
   product tableau; no product, status or waitlist fields are duplicated. */
.dbn-template-foundri .dbn-collage { perspective: 1200px; }
.dbn-template-foundri .dbn-collage__item { transition: transform 1.15s var(--dbn-motion-ease), filter 0.8s ease; }
.dbn-template-foundri .dbn-collage__item:nth-child(odd) { transform: translateY(calc((1 - var(--dbn-scene-focus,0)) * 18px)) rotate(-1deg); }
.dbn-template-foundri .dbn-collage__item:nth-child(even) { transform: translateY(calc((1 - var(--dbn-scene-focus,0)) * -12px)) rotate(1deg); }
.dbn-template-foundri .dbn-waitlist { overflow: clip; }

/* Project and collaboration details: title, hero artwork and gallery now
   read as one continuous case-study opening, including short-only projects. */
.single-dbn_portfolio .dbn-project__hero,
.single-dbn_event_collab .dbn-collab-single > header { overflow: clip; background: linear-gradient(180deg, rgba(207,247,255,0.34), #fff); }
.single-dbn_portfolio .dbn-project__feature,
.single-dbn_event_collab .dbn-project__feature {
	clip-path: inset(0 8% round clamp(16px,2vw,30px));
	transition: clip-path 1.25s var(--dbn-motion-ease), box-shadow 1.1s ease;
	box-shadow: 0 42px 110px -62px rgba(4,72,159,0.9);
}
.single-dbn_portfolio .dbn-project__feature.is-motion-visible,
.single-dbn_event_collab .dbn-project__feature.is-motion-visible { clip-path: inset(0 0 round clamp(16px,2vw,30px)); }
.single-dbn_portfolio .dbn-project--concise .dbn-project__hero { background: linear-gradient(180deg, rgba(207,247,255,0.28), #fff 88%); }
.single-dbn_portfolio .dbn-project--concise .dbn-project__feature--concise { box-shadow: 0 48px 120px -66px rgba(4,72,159,0.95); }
.single-dbn_portfolio .dbn-project--concise .dbn-project__intro { position: relative; }
.single-dbn_portfolio .dbn-project--concise .dbn-project__intro::after {
	content: "";
	position: absolute;
	right: 0;
	top: -1.2rem;
	width: min(22vw, 15rem);
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--dbn-blue));
}
.single-dbn_portfolio .dbn-gallery-masonry__item:nth-child(3n+2),
.single-dbn_event_collab .dbn-gallery-masonry__item:nth-child(3n+2) { transition-delay: 80ms; }
.single-dbn_portfolio .dbn-gallery-masonry__item:nth-child(3n),
.single-dbn_event_collab .dbn-gallery-masonry__item:nth-child(3n) { transition-delay: 150ms; }

/* Closing handoffs should feel like a conclusion, not another content card. */
.dbn-cta-band__inner,
.dbn-bigcta__inner { transition: transform 0.2s linear; }
.dbn-cta-band.is-scene-active .dbn-cta-band__inner,
.dbn-bigcta.is-scene-active .dbn-bigcta__inner { transform: translateY(calc((0.5 - var(--dbn-scene-focus)) * 12px)); }

/* Mobile: preserve the narrative, reduce cost, and make dense card systems
   swipeable instead of shrinking them into an endless narrow stack. */
@media (max-width: 720px) {
	.dbn-opening::before { width: 92vw; right: -54vw; top: -20%; opacity: 0.55; }
	.dbn-template-about .dbn-story::before,
	.dbn-template-about .dbn-philosophy::before,
	.dbn-template-nhyi-experience .dbn-why::before { transform: none; }
	.dbn-template-about .dbn-story__inner::after,
	.dbn-template-about .dbn-philosophy .dbn-heading::before { display: none; }
	.dbn-template-services .dbn-service-card--lg,
	.dbn-template-services .dbn-service-card--lg:not(.is-stack-active),
	.dbn-template-services .dbn-service-card--lg .dbn-service-card__body > *,
	.dbn-template-services .dbn-service-card--lg:not(.is-stack-active) .dbn-service-card__body > *,
	.dbn-template-services .dbn-unsure__media,
	.dbn-template-events-collaborations .dbn-spotlight__text,
	.dbn-template-foundri .dbn-collage__item,
	.dbn-cta-band.is-scene-active .dbn-cta-band__inner,
	.dbn-bigcta.is-scene-active .dbn-bigcta__inner { opacity: 1; transform: none; }
	.dbn-template-portfolio .dbn-filters { top: calc(var(--dbn-header-h) + 0.45rem); border-radius: var(--dbn-radius-lg); }
}
@media (max-width: 600px) {
	:root { --dbn-motion-slow: var(--dbn-dur-xl, 0.85s); --dbn-motion-medium: var(--dbn-dur-lg, 0.6s); }
	.dbn-js .dbn-motion-reveal,
	.dbn-js .dbn-motion-reveal[data-dbn-motion-from="left"],
	.dbn-js .dbn-motion-reveal[data-dbn-motion-from="right"] { transform: translate3d(0,22px,0) scale(0.99); }
	.dbn-js .dbn-motion-reveal.is-motion-visible { transform: none; }
	.dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible { transform: none; opacity: 1; }
	.dbn-hero:not(.dbn-xhero) .dbn-hero__media,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__banner,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__bg { filter: none; transform: none; border-radius: 0; }
	.dbn-motion-media > .dbn-media,
	.dbn-motion-media > .dbn-ph,
	.dbn-motion-media > img,
	.dbn-motion-media .dbn-media__img { transform: none; }
	.dbn-service-card__actions,
	.dbn-package-card__actions { display: grid; grid-template-columns: 1fr; }
	.dbn-service-card__actions .dbn-btn,
	.dbn-package-card__actions .dbn-btn,
	.dbn-foundri-card .dbn-btn { width: 100%; }

	/* .dbn-reels-row--embeds is exempt: official Instagram embeds must stack
	   full-width (never crop inside a swipe strip). */
	.dbn-grid--packages,
	.dbn-testimonials,
	.dbn-vendor-grid,
	.dbn-collab-grid,
	.dbn-reels-row:not(.dbn-reels-row--embeds) {
		display: grid;
		grid-template-columns: none !important;
		grid-auto-flow: column;
		grid-auto-columns: minmax(82vw, 290px);
		gap: 0.85rem;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--dbn-gutter);
		overscroll-behavior-inline: contain;
		-webkit-overflow-scrolling: touch;
		margin-inline: calc(-1 * var(--dbn-gutter));
		padding: 0 var(--dbn-gutter) 0.75rem;
		scrollbar-width: none;
	}
	.dbn-grid--packages::-webkit-scrollbar,
	.dbn-testimonials::-webkit-scrollbar,
	.dbn-vendor-grid::-webkit-scrollbar,
	.dbn-collab-grid::-webkit-scrollbar,
	.dbn-reels-row:not(.dbn-reels-row--embeds)::-webkit-scrollbar { display: none; }
	.dbn-grid--packages > *,
	.dbn-testimonials > *,
	.dbn-vendor-grid > *,
	.dbn-collab-grid > *,
	.dbn-reels-row:not(.dbn-reels-row--embeds) > * { scroll-snap-align: start; }
	.dbn-cta-band::after { font-size: 4.2rem; opacity: 0.85; }
}

/* =========================================================================
   Cinematic tablet direction (v1.23.0)

	Tablets use the existing scheduler, content and touch navigation, but gain
	a spatial language sized for a two-handed canvas: editorial splits, wider
	media apertures, restrained depth and a scene rail on the far edge. The
	class is never present for Subtle, Off, reduced-motion or Save Data.
	========================================================================= */
@media (min-width: 821px) and (max-width: 1180px) and (prefers-reduced-motion: no-preference) {
	html.dbn-tablet-cinematic {
		--dbn-tablet-drift: clamp(18px, 3vw, 34px);
		--dbn-tablet-radius: clamp(20px, 2.5vw, 30px);
		--dbn-motion-slow: 1.15s;
		--dbn-motion-medium: 0.82s;
	}
	html.dbn-tablet-cinematic body {
		overscroll-behavior-x: none;
		-webkit-tap-highlight-color: rgba(11,73,160,0.07);
	}
	html.dbn-tablet-cinematic #dbn-main { overflow-x: clip; }
	/* Animate the header contents, not the header transform itself: the latter is
	   reserved for the owner-controlled intelligent auto-hide behaviour. */
	html.dbn-tablet-cinematic .dbn-header__inner { animation: dbn-tablet-header-in 0.9s 0.06s var(--dbn-motion-ease) both; }
	@keyframes dbn-tablet-header-in {
		from { opacity: 0; transform: translate3d(0,-18px,0); }
		to { opacity: 1; transform: none; }
	}

	/* A tablet opening owns most of the first canvas, while leaving just enough
	   of the following chapter visible in portrait to invite the next gesture. */
	html.dbn-tablet-cinematic .dbn-hero.dbn-opening:not(.dbn-hero--immersive):not(.dbn-hero--portfolio) {
		min-height: min(780px, calc(100svh - var(--dbn-header-h)));
		display: flex;
		align-items: center;
		padding-block: clamp(3.5rem, 7vw, 5rem);
	}
	html.dbn-tablet-cinematic .dbn-hero--portfolio {
		min-height: 0;
		padding-block: clamp(4rem, 7.5vw, 5.5rem);
	}
	html.dbn-tablet-cinematic .dbn-opening::before {
		width: min(68vw,760px);
		right: -20vw;
		top: -50%;
	}
	html.dbn-tablet-cinematic .dbn-opening .dbn-hero__text,
	html.dbn-tablet-cinematic .dbn-opening .dbn-opening__copy {
		transform: translate3d(calc(var(--dbn-hero-p,0) * -24px),calc(var(--dbn-hero-p,0) * -12px),0)
			scale(calc(1 - (var(--dbn-hero-p,0) * 0.015)));
		opacity: calc(1 - (var(--dbn-hero-p,0) * 0.36));
	}
	html.dbn-tablet-cinematic .dbn-motion-title .dbn-motion-word__inner {
		transform: translate3d(0,106%,0) rotate(1.7deg);
		transition-duration: 1.1s,0.62s;
		transition-delay: calc(var(--dbn-word-index,0) * 72ms + 80ms);
	}
	html.dbn-tablet-cinematic .dbn-motion-title.is-motion-visible .dbn-motion-word__inner,
	html.dbn-tablet-cinematic .dbn-hero__text.is-visible .dbn-motion-word__inner { transform: none; }
	html.dbn-tablet-cinematic .dbn-opening__media {
		clip-path: inset(0 0 100% 0 round var(--dbn-tablet-radius));
		transform: translate3d(0,calc(var(--dbn-hero-p,0) * -14px),0);
		transition-duration: 1.45s,0.48s;
	}
	html.dbn-tablet-cinematic.dbn-page-entered .dbn-opening__media { clip-path: inset(0 0 0 0 round var(--dbn-tablet-radius)); }
	html.dbn-tablet-cinematic .dbn-opening__media > .dbn-media,
	html.dbn-tablet-cinematic .dbn-opening__media > .dbn-ph,
	html.dbn-tablet-cinematic .dbn-opening__media > img,
	html.dbn-tablet-cinematic .dbn-opening__media .dbn-media__img {
		transform: scale(calc(1.06 - (var(--dbn-hero-p,0) * 0.022)));
		transition: transform 1.7s var(--dbn-motion-ease);
	}
	html.dbn-tablet-cinematic .dbn-hero--immersive {
		height: max(680px, calc(100svh - var(--dbn-header-h)));
		min-height: max(680px, calc(100svh - var(--dbn-header-h)));
		border-radius: 0;
	}
	html.dbn-tablet-cinematic .dbn-hero--immersive .dbn-opening__media { clip-path: none; transform: none; }
	html.dbn-tablet-cinematic .dbn-hero--immersive .dbn-hero__bg,
	html.dbn-tablet-cinematic .dbn-hero--immersive .dbn-hero__bg .dbn-media__img {
		transform: scale(calc(1.075 - (var(--dbn-hero-p,0) * 0.03))) translate3d(0,calc(var(--dbn-hero-p,0) * -8px),0);
		transform-origin: 50% 44%;
	}

	/* The right-edge measure makes a long tablet page feel like a sequence of
	   deliberate canvases without introducing labels or new content. */
	html.dbn-tablet-cinematic .dbn-scene:not(.dbn-opening) > .dbn-scene__rail {
		display: block;
		position: absolute;
		z-index: 5;
		right: max(7px,env(safe-area-inset-right));
		top: 20%;
		width: 1px;
		height: 60%;
		background: rgba(11,73,160,0.1);
		opacity: calc(0.2 + (var(--dbn-scene-focus,0) * 0.58));
		pointer-events: none;
	}
	html.dbn-tablet-cinematic .dbn-scene:not(.dbn-opening) > .dbn-scene__rail::after {
		content: "";
		position: absolute;
		inset: 0;
		background: var(--dbn-blue);
		box-shadow: 0 0 12px rgba(11,73,160,0.26);
		transform: scaleY(var(--dbn-scene-p,0));
		transform-origin: top;
	}
	html.dbn-tablet-cinematic .dbn-section--dark > .dbn-scene__rail,
	html.dbn-tablet-cinematic .dbn-motion-dark > .dbn-scene__rail,
	html.dbn-tablet-cinematic .dbn-cta-band > .dbn-scene__rail,
	html.dbn-tablet-cinematic .dbn-bigcta > .dbn-scene__rail { background: rgba(207,247,255,0.17); }
	html.dbn-tablet-cinematic .dbn-section--dark > .dbn-scene__rail::after,
	html.dbn-tablet-cinematic .dbn-motion-dark > .dbn-scene__rail::after,
	html.dbn-tablet-cinematic .dbn-cta-band > .dbn-scene__rail::after,
	html.dbn-tablet-cinematic .dbn-bigcta > .dbn-scene__rail::after { background: var(--dbn-sky); }

	html.dbn-tablet-cinematic .dbn-motion-reveal {
		transform: translate3d(0,34px,0) scale(0.98);
		transition-duration: 0.75s,1.05s;
	}
	html.dbn-tablet-cinematic .dbn-motion-reveal[data-dbn-motion-from="left"] { transform: translate3d(-32px,12px,0) rotate(-0.55deg); }
	html.dbn-tablet-cinematic .dbn-motion-reveal[data-dbn-motion-from="right"] { transform: translate3d(32px,12px,0) rotate(0.55deg); }
	html.dbn-tablet-cinematic .dbn-motion-reveal.is-motion-visible { transform: none; }
	html.dbn-tablet-cinematic .dbn-motion-media > .dbn-media,
	html.dbn-tablet-cinematic .dbn-motion-media > .dbn-ph,
	html.dbn-tablet-cinematic .dbn-motion-media > img,
	html.dbn-tablet-cinematic .dbn-motion-media .dbn-media__img {
		transform: translate3d(0,var(--dbn-media-y),0) scale(1.035);
	}
	html.dbn-tablet-cinematic .dbn-motion-media.is-motion-visible > .dbn-media,
	html.dbn-tablet-cinematic .dbn-motion-media.is-motion-visible > .dbn-ph,
	html.dbn-tablet-cinematic .dbn-motion-media.is-motion-visible > img { transform: translate3d(0,var(--dbn-media-y),0) scale(1.01); }
	html.dbn-tablet-cinematic .dbn-scene .dbn-heading {
		transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * 12px),0);
		transition: transform 0.25s linear;
	}
	html.dbn-tablet-cinematic .dbn-btn:active,
	html.dbn-tablet-cinematic .dbn-quick-card:active,
	html.dbn-tablet-cinematic .dbn-chapter-nav__link:active { transform: scale(0.972); }
	html.dbn-tablet-cinematic .dbn-filter:active { transform: scale(0.94); }

	/* The two-panel menu retains the existing WordPress destinations and gains
	   a staged, tactile arrival suited to the wider overlay. */
	html.dbn-tablet-cinematic .dbn-mobile {
		isolation: isolate;
		overflow: hidden auto;
		background: radial-gradient(70% 75% at 100% 100%,rgba(207,247,255,0.94),transparent 74%),linear-gradient(145deg,#fff 0%,#fbfdff 64%,#effbff 100%);
		transition: transform 0.86s var(--dbn-motion-ease),visibility 0.86s var(--dbn-motion-ease);
	}
	html.dbn-tablet-cinematic .dbn-mobile::before {
		content: "";
		position: absolute;
		z-index: -1;
		inset: 36% -10% -14% 49%;
		background: rgba(11,73,160,0.04);
		-webkit-mask: url("../images/dbn-symbol.png") center / contain no-repeat;
		mask: url("../images/dbn-symbol.png") center / contain no-repeat;
		opacity: 0;
		transform: translate3d(32px,18px,0) rotate(4deg);
		transition: opacity 0.8s 0.3s ease,transform 1.2s 0.22s var(--dbn-motion-ease);
		pointer-events: none;
	}
	html.dbn-tablet-cinematic .dbn-mobile__head,
	html.dbn-tablet-cinematic .dbn-mobile__menu > li,
	html.dbn-tablet-cinematic .dbn-mobile__cta,
	html.dbn-tablet-cinematic .dbn-mobile__contact {
		opacity: 0;
		transform: translate3d(24px,0,0);
		transition: opacity 0.55s ease,transform 0.86s var(--dbn-motion-ease);
	}
	html.dbn-tablet-cinematic .dbn-mobile__menu > li:nth-child(1) { transition-delay: 0.08s; }
	html.dbn-tablet-cinematic .dbn-mobile__menu > li:nth-child(2) { transition-delay: 0.14s; }
	html.dbn-tablet-cinematic .dbn-mobile__menu > li:nth-child(3) { transition-delay: 0.2s; }
	html.dbn-tablet-cinematic .dbn-mobile__menu > li:nth-child(4) { transition-delay: 0.26s; }
	html.dbn-tablet-cinematic .dbn-mobile__menu > li:nth-child(n+5) { transition-delay: 0.32s; }
	html.dbn-tablet-cinematic .dbn-mobile__cta { transition-delay: 0.36s; }
	html.dbn-tablet-cinematic .dbn-mobile__contact { transition-delay: 0.42s; }
	html.dbn-tablet-cinematic body.dbn-menu-open .dbn-mobile::before { opacity: 1; transform: none; }
	html.dbn-tablet-cinematic body.dbn-menu-open .dbn-mobile__head,
	html.dbn-tablet-cinematic body.dbn-menu-open .dbn-mobile__menu > li,
	html.dbn-tablet-cinematic body.dbn-menu-open .dbn-mobile__cta,
	html.dbn-tablet-cinematic body.dbn-menu-open .dbn-mobile__contact { opacity: 1; transform: none; }

	/* Page signatures scale the existing visual story to the tablet canvas. */
	html.dbn-tablet-cinematic .dbn-template-about .dbn-hero__media--pair {
		display: grid;
		grid-template-columns: 1fr;
		min-height: clamp(360px,48svh,520px);
		perspective: 1200px;
	}
	html.dbn-tablet-cinematic .dbn-template-about .dbn-hero__media--pair > * { grid-area: 1 / 1; width: 84%; min-height: 82%; align-self: center; }
	html.dbn-tablet-cinematic .dbn-template-about .dbn-hero__media--pair > *:first-child { justify-self: start; transform: translate3d(calc(var(--dbn-hero-p,0) * -8px),-8px,0) rotate(-1.8deg); }
	html.dbn-tablet-cinematic .dbn-template-about .dbn-hero__media--pair > *:last-child { justify-self: end; transform: translate3d(calc(var(--dbn-hero-p,0) * 10px),22px,0) rotate(2deg); clip-path: inset(0 0 0 30% round var(--dbn-tablet-radius)); }
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg { transform: scale(0.982); border-radius: var(--dbn-tablet-radius); }
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active { transform: none; box-shadow: 0 38px 96px -52px rgba(4,72,159,0.84); }
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg .dbn-service-card__media { overflow: hidden; }
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg .dbn-media__img,
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg .dbn-ph { transform: scale(1.045); transition: transform 1.25s var(--dbn-motion-ease); }
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active .dbn-media__img,
	html.dbn-tablet-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active .dbn-ph { transform: scale(1); }
	html.dbn-tablet-cinematic .dbn-template-portfolio .dbn-hero__banner { box-shadow: 0 42px 100px -56px rgba(4,72,159,0.9); }
	html.dbn-tablet-cinematic .dbn-template-portfolio .dbn-filters { top: calc(var(--dbn-header-h) + 0.6rem); backdrop-filter: blur(21px) saturate(1.3); }
	html.dbn-tablet-cinematic .dbn-template-weddings-by-dbn .dbn-intro__media::before { transform: rotate(calc(-2.6deg + (var(--dbn-scene-focus,0) * 0.8deg))); }
	html.dbn-tablet-cinematic .dbn-template-weddings-by-dbn .dbn-intro__media::after { transform: rotate(calc(2deg - (var(--dbn-scene-focus,0) * 0.65deg))); }
	html.dbn-tablet-cinematic .dbn-template-nhyi-experience .dbn-why::before { transform: translate(-50%,-50%) scale(calc(0.86 + (var(--dbn-scene-focus,0) * 0.14))) rotate(calc((1 - var(--dbn-scene-focus,0)) * -3deg)); }
	html.dbn-tablet-cinematic .dbn-template-events-collaborations .dbn-collab-type:nth-child(2n) { transform: translate3d(0,clamp(0.5rem,2vw,1rem),0); }
	html.dbn-tablet-cinematic .dbn-template-contact .dbn-contact-editorial { clip-path: inset(0 5% round var(--dbn-tablet-radius)); transform: translate3d(0,calc((0.5 - var(--dbn-scene-focus,0)) * 14px),0); }
	html.dbn-tablet-cinematic .dbn-template-contact .dbn-contact-editorial.is-motion-visible { clip-path: inset(0 0 round 0); }
	html.dbn-tablet-cinematic .dbn-template-foundri .dbn-collage__item:nth-child(odd) { transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * 18px),0) rotate(-1.4deg); }
	html.dbn-tablet-cinematic .dbn-template-foundri .dbn-collage__item:nth-child(even) { transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * -13px),0) rotate(1.25deg); }

	html.dbn-tablet-cinematic .single-dbn_portfolio .dbn-project__feature,
	html.dbn-tablet-cinematic .single-dbn_event_collab .dbn-project__feature {
		clip-path: inset(0 4% round var(--dbn-tablet-radius));
		transform: translate3d(0,calc(var(--dbn-media-y,0px) * 0.45),0);
	}
	html.dbn-tablet-cinematic .single-dbn_portfolio .dbn-project__feature.is-motion-visible,
	html.dbn-tablet-cinematic .single-dbn_event_collab .dbn-project__feature.is-motion-visible { clip-path: inset(0 0 round var(--dbn-tablet-radius)); }
	html.dbn-tablet-cinematic .search .dbn-search,
	html.dbn-tablet-cinematic .error404 .dbn-404 { min-height: calc(100svh - var(--dbn-header-h)); }
	html.dbn-tablet-cinematic .search .dbn-search::before { transform: translate3d(calc(var(--dbn-hero-p,0) * -10vw),calc(var(--dbn-hero-p,0) * 3vw),0); }
	html.dbn-tablet-cinematic .error404 .dbn-404::before { transform: translate(-50%,-52%) rotate(calc((var(--dbn-scene-focus,0) - 0.5) * 2deg)); }
	html.dbn-tablet-cinematic .dbn-footer { overflow: clip; position: relative; }
	html.dbn-tablet-cinematic .dbn-footer::before {
		content: "";
		position: absolute;
		width: 58vw;
		aspect-ratio: 1;
		right: -28vw;
		top: 5%;
		border: 1px solid rgba(207,247,255,0.1);
		border-radius: 50%;
		box-shadow: 0 0 0 9vw rgba(207,247,255,0.022),0 0 0 18vw rgba(207,247,255,0.014);
		pointer-events: none;
	}
	html.dbn-tablet-cinematic .dbn-footer--directed .dbn-footer__motion-item { transform: translate3d(-14px,26px,0); transition-delay: calc(var(--dbn-footer-index,0) * 95ms); }
	html.dbn-tablet-cinematic .dbn-footer--directed .dbn-footer__motion-item:nth-child(even) { transform: translate3d(14px,26px,0); }
	html.dbn-tablet-cinematic .dbn-footer--directed.is-footer-visible .dbn-footer__motion-item { transform: none; }
}

@media (min-width: 821px) and (max-width: 1180px) and (max-height: 720px) and (orientation: landscape) and (prefers-reduced-motion: no-preference) {
	html.dbn-tablet-cinematic .dbn-hero.dbn-opening:not(.dbn-hero--immersive):not(.dbn-hero--portfolio) { padding-block: 3rem; }
	html.dbn-tablet-cinematic .dbn-hero--immersive { height: calc(100svh - var(--dbn-header-h)); min-height: 600px; }
}

/* =========================================================================
   Cinematic phone direction (v1.21.0)

   Full-motion phones are no longer routed through the static compact
   fallback. The same scheduler that powers desktop writes the progress
   variables below; the phone composition then translates those values into
   shorter, touch-native moves with app-like depth. No content is generated
   and the owner motion levels, reduced-motion and Save Data remain absolute.
   ========================================================================= */
@media (max-width: 820px) and (prefers-reduced-motion: no-preference) {
	html.dbn-mobile-cinematic {
		--dbn-mobile-drift: clamp(14px, 5vw, 24px);
		--dbn-mobile-radius: clamp(18px, 5vw, 28px);
		--dbn-motion-slow: 1.05s;
		--dbn-motion-medium: 0.78s;
	}
	html.dbn-mobile-cinematic body {
		overscroll-behavior-x: none;
		-webkit-tap-highlight-color: rgba(11,73,160,0.08);
	}
	html.dbn-mobile-cinematic #dbn-main { overflow-x: clip; }

	/* A phone opening is a complete scene, not a compressed desktop header. */
	html.dbn-mobile-cinematic .dbn-header {
		animation: dbn-mobile-header-in 0.82s 0.08s var(--dbn-motion-ease) both;
	}
	@keyframes dbn-mobile-header-in {
		from { opacity: 0; transform: translate3d(0,-105%,0); }
		to { opacity: 1; transform: translate3d(0,0,0); }
	}
	html.dbn-mobile-cinematic .dbn-header.is-auto-hidden { transform: translate3d(0,calc(-100% - 4px),0); }
	html.dbn-mobile-cinematic .dbn-burger__line,
	html.dbn-mobile-cinematic .dbn-burger__box::before,
	html.dbn-mobile-cinematic .dbn-burger__box::after { transition-duration: 0.55s; transition-timing-function: var(--dbn-motion-ease); }

	html.dbn-mobile-cinematic .dbn-opening:not(.dbn-hero--immersive) {
		min-height: min(900px, calc(100svh - var(--dbn-header-h)));
		display: grid;
		align-items: center;
		padding-top: clamp(3.5rem,11svh,6.5rem);
		padding-bottom: clamp(1.5rem,4.5svh,2.5rem);
		background:
			radial-gradient(85% 62% at 94% 8%, rgba(207,247,255,0.52), transparent 70%),
			linear-gradient(180deg, #fff 0%, rgba(248,252,255,0.96) 74%, #fff 100%);
	}
	html.dbn-mobile-cinematic .dbn-opening::before {
		width: 112vw;
		right: -68vw;
		top: -14%;
		opacity: calc(0.8 - (var(--dbn-hero-p,0) * 0.38));
		box-shadow: 0 0 0 13vw rgba(207,247,255,0.12), 0 0 0 27vw rgba(11,73,160,0.025);
		transform: translate3d(calc(var(--dbn-hero-p,0) * -16vw),calc(var(--dbn-hero-p,0) * 7vw),0)
			rotate(calc(-8deg + (var(--dbn-hero-p,0) * 22deg))) scale(calc(0.92 + (var(--dbn-hero-p,0) * 0.12)));
	}
	html.dbn-mobile-cinematic .dbn-opening::after {
		height: 2px;
		background: linear-gradient(90deg,transparent 0%,var(--dbn-sky) 24%,var(--dbn-blue) 50%,transparent 100%);
		box-shadow: 0 0 18px rgba(11,73,160,0.2);
	}
	html.dbn-mobile-cinematic .dbn-opening .dbn-hero__text,
	html.dbn-mobile-cinematic .dbn-opening .dbn-opening__copy {
		position: relative;
		z-index: 3;
	}
	html.dbn-mobile-cinematic .dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible {
		transform: translate3d(0,calc(var(--dbn-hero-p,0) * -34px),0) scale(calc(1 - (var(--dbn-hero-p,0) * 0.025)));
		opacity: calc(1 - (var(--dbn-hero-p,0) * 0.46));
	}
	html.dbn-mobile-cinematic .dbn-motion-title .dbn-motion-word__inner {
		transform: translate3d(0,118%,0) rotate(2.4deg);
		transition-duration: 1.05s, 0.58s;
		transition-delay: calc(var(--dbn-word-index,0) * 68ms + 90ms);
	}
	html.dbn-mobile-cinematic .dbn-motion-title.is-motion-visible .dbn-motion-word__inner,
	html.dbn-mobile-cinematic .dbn-hero__text.is-visible .dbn-motion-word__inner { transform: translate3d(0,0,0) rotate(0); }
	html.dbn-mobile-cinematic .dbn-opening .dbn-eyebrow { transform: translate3d(-16px,0,0); }
	html.dbn-mobile-cinematic.dbn-page-entered .dbn-opening .dbn-eyebrow { transform: none; }
	html.dbn-mobile-cinematic .dbn-opening .dbn-hero__sub,
	html.dbn-mobile-cinematic .dbn-opening .dbn-project__lead { transform: translate3d(0,28px,0); }
	html.dbn-mobile-cinematic.dbn-page-entered .dbn-opening .dbn-hero__sub,
	html.dbn-mobile-cinematic.dbn-page-entered .dbn-opening .dbn-project__lead { transform: none; }

	/* Opening media follows the typography, then continues a restrained drift
	   as the visitor swipes into the next scene. */
	html.dbn-mobile-cinematic .dbn-opening__media {
		clip-path: inset(0 0 100% 0 round var(--dbn-mobile-radius));
		transform: translate3d(0,calc(var(--dbn-hero-p,0) * -18px),0);
		transition-duration: 1.35s, 0.45s;
	}
	html.dbn-mobile-cinematic.dbn-page-entered .dbn-opening__media { clip-path: inset(0 0 0 0 round var(--dbn-mobile-radius)); }
	html.dbn-mobile-cinematic .dbn-opening__media > .dbn-media,
	html.dbn-mobile-cinematic .dbn-opening__media > .dbn-ph,
	html.dbn-mobile-cinematic .dbn-opening__media > img,
	html.dbn-mobile-cinematic .dbn-opening__media .dbn-media__img {
		filter: none;
		transform: scale(calc(1.055 - (var(--dbn-hero-p,0) * 0.02)));
		transition: transform 1.55s var(--dbn-motion-ease);
	}
	html.dbn-mobile-cinematic .dbn-hero--immersive .dbn-opening__media {
		clip-path: none;
		transform: none;
		transition: none;
	}

	/* Each section behaves like a focused app screen. The edge rail is a quiet
	   live measure of scene travel, never a new label or owner-managed field. */
	html.dbn-mobile-cinematic .dbn-scene:not(.dbn-opening) > .dbn-scene__rail {
		display: block;
		position: absolute;
		z-index: 5;
		left: max(5px,env(safe-area-inset-left));
		top: 18%;
		width: 1px;
		height: 64%;
		background: rgba(11,73,160,0.11);
		opacity: calc(0.22 + (var(--dbn-scene-focus,0) * 0.62));
		pointer-events: none;
	}
	html.dbn-mobile-cinematic .dbn-scene:not(.dbn-opening) > .dbn-scene__rail::after {
		content: "";
		position: absolute;
		inset: 0;
		background: var(--dbn-blue);
		box-shadow: 0 0 10px rgba(11,73,160,0.34);
		transform: scaleY(var(--dbn-scene-p,0));
		transform-origin: top;
	}
	html.dbn-mobile-cinematic .dbn-section--dark > .dbn-scene__rail,
	html.dbn-mobile-cinematic .dbn-motion-dark > .dbn-scene__rail,
	html.dbn-mobile-cinematic .dbn-cta-band > .dbn-scene__rail,
	html.dbn-mobile-cinematic .dbn-bigcta > .dbn-scene__rail { background: rgba(207,247,255,0.18); }
	html.dbn-mobile-cinematic .dbn-section--dark > .dbn-scene__rail::after,
	html.dbn-mobile-cinematic .dbn-motion-dark > .dbn-scene__rail::after,
	html.dbn-mobile-cinematic .dbn-cta-band > .dbn-scene__rail::after,
	html.dbn-mobile-cinematic .dbn-bigcta > .dbn-scene__rail::after { background: var(--dbn-sky); }

	html.dbn-mobile-cinematic .dbn-js .dbn-motion-reveal,
	html.dbn-mobile-cinematic .dbn-motion-reveal {
		transform: translate3d(0,42px,0) scale(0.965);
		transition-duration: 0.72s, 1.05s;
	}
	html.dbn-mobile-cinematic .dbn-motion-reveal[data-dbn-motion-from="left"] { transform: translate3d(-38px,14px,0) rotate(-0.8deg); }
	html.dbn-mobile-cinematic .dbn-motion-reveal[data-dbn-motion-from="right"] { transform: translate3d(38px,14px,0) rotate(0.8deg); }
	html.dbn-mobile-cinematic .dbn-motion-reveal.is-motion-visible { transform: translate3d(0,0,0) scale(1) rotate(0); }
	html.dbn-mobile-cinematic .dbn-motion-media > .dbn-media,
	html.dbn-mobile-cinematic .dbn-motion-media > .dbn-ph,
	html.dbn-mobile-cinematic .dbn-motion-media > img,
	html.dbn-mobile-cinematic .dbn-motion-media .dbn-media__img {
		transform: translate3d(0,var(--dbn-media-y),0) scale(1.045);
	}
	html.dbn-mobile-cinematic .dbn-motion-media.is-motion-visible > .dbn-media,
	html.dbn-mobile-cinematic .dbn-motion-media.is-motion-visible > .dbn-ph,
	html.dbn-mobile-cinematic .dbn-motion-media.is-motion-visible > img { transform: translate3d(0,var(--dbn-media-y),0) scale(1.015); }
	html.dbn-mobile-cinematic .dbn-scene .dbn-heading {
		transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * 18px),0);
		transition: transform 0.24s linear;
	}

	/* Touch feedback is brisk and physical, without depending on hover. */
	html.dbn-mobile-cinematic .dbn-btn,
	html.dbn-mobile-cinematic .dbn-filter,
	html.dbn-mobile-cinematic .dbn-quick-card,
	html.dbn-mobile-cinematic .dbn-accordion__button,
	html.dbn-mobile-cinematic .dbn-chapter-nav__link { transition-timing-function: var(--dbn-motion-ease); }
	html.dbn-mobile-cinematic .dbn-btn:active,
	html.dbn-mobile-cinematic .dbn-quick-card:active,
	html.dbn-mobile-cinematic .dbn-chapter-nav__link:active { transform: scale(0.965); }
	html.dbn-mobile-cinematic .dbn-filter:active { transform: scale(0.92); }

	/* The navigation overlay is the first app-like interaction many visitors
	   touch. Its existing WordPress menu, CTA and contact links arrive as one
	   authored composition; the mark is the supplied brand symbol used as a
	   non-destructive mask. */
	html.dbn-mobile-cinematic .dbn-mobile {
		isolation: isolate;
		overflow: hidden auto;
		background:
			radial-gradient(85% 58% at 105% 100%,rgba(207,247,255,0.9),transparent 72%),
			linear-gradient(155deg,#fff 0%,#fbfdff 58%,#effbff 100%);
		transition: transform 0.82s var(--dbn-motion-ease),visibility 0.82s var(--dbn-motion-ease);
	}
	html.dbn-mobile-cinematic .dbn-mobile::before {
		content: "";
		position: absolute;
		z-index: -2;
		width: 92vw;
		aspect-ratio: 1;
		right: -54vw;
		bottom: -18vw;
		border: 1px solid rgba(11,73,160,0.1);
		border-radius: 50%;
		box-shadow: 0 0 0 13vw rgba(207,247,255,0.12),0 0 0 27vw rgba(11,73,160,0.025);
		transform: scale(0.72) rotate(-8deg);
		transition: transform 1.2s 0.1s var(--dbn-motion-ease);
		pointer-events: none;
	}
	html.dbn-mobile-cinematic .dbn-mobile::after {
		content: "";
		position: absolute;
		z-index: -1;
		inset: 42% -18% -12% 26%;
		background: rgba(11,73,160,0.035);
		-webkit-mask: url("../images/dbn-symbol.png") center / contain no-repeat;
		mask: url("../images/dbn-symbol.png") center / contain no-repeat;
		opacity: 0;
		transform: translate3d(28px,18px,0) rotate(5deg);
		transition: opacity 0.8s 0.36s ease,transform 1.2s 0.28s var(--dbn-motion-ease);
		pointer-events: none;
	}
	html.dbn-mobile-cinematic .dbn-mobile__head,
	html.dbn-mobile-cinematic .dbn-mobile__menu > li,
	html.dbn-mobile-cinematic .dbn-mobile__cta,
	html.dbn-mobile-cinematic .dbn-mobile__contact {
		opacity: 0;
		transform: translate3d(24px,0,0);
		transition: opacity 0.55s ease,transform 0.82s var(--dbn-motion-ease);
	}
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(1) { transition-delay: 0.1s; }
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(2) { transition-delay: 0.16s; }
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(3) { transition-delay: 0.22s; }
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(4) { transition-delay: 0.28s; }
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(5) { transition-delay: 0.34s; }
	html.dbn-mobile-cinematic .dbn-mobile__menu > li:nth-child(n+6) { transition-delay: 0.4s; }
	html.dbn-mobile-cinematic .dbn-mobile__cta { transition-delay: 0.42s; }
	html.dbn-mobile-cinematic .dbn-mobile__contact { transition-delay: 0.48s; }
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile::before { transform: scale(1) rotate(0); }
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile::after { opacity: 1; transform: none; }
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile__head,
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile__menu > li,
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile__cta,
	html.dbn-mobile-cinematic body.dbn-menu-open .dbn-mobile__contact { opacity: 1; transform: none; }
	html.dbn-mobile-cinematic .dbn-mobile__menu a { position: relative; padding-right: 2rem; }
	html.dbn-mobile-cinematic .dbn-mobile__menu a::after {
		content: "";
		position: absolute;
		right: 0.3rem;
		top: 50%;
		width: 1.35rem;
		height: 1px;
		background: var(--dbn-blue);
		transform: scaleX(0);
		transform-origin: right;
		transition: transform 0.5s var(--dbn-motion-ease);
	}
	html.dbn-mobile-cinematic .dbn-mobile__menu a:active::after,
	html.dbn-mobile-cinematic .dbn-mobile__menu .current-menu-item > a::after { transform: scaleX(1); }

	/* About — an overlapping portrait deck and a full-bleed founder handoff. */
	html.dbn-mobile-cinematic .dbn-template-about .dbn-hero__media--pair {
		display: grid;
		grid-template-columns: 1fr;
		min-height: clamp(390px,58svh,570px);
		perspective: 1000px;
	}
	html.dbn-mobile-cinematic .dbn-template-about .dbn-hero__media--pair > * { grid-area: 1 / 1; width: 86%; min-height: 82%; align-self: center; }
	html.dbn-mobile-cinematic .dbn-template-about .dbn-hero__media--pair > *:first-child {
		justify-self: start;
		transform: translate3d(calc(var(--dbn-hero-p,0) * -10px),-10px,0) rotate(-2.2deg);
	}
	html.dbn-mobile-cinematic .dbn-template-about .dbn-hero__media--pair > *:last-child {
		justify-self: end;
		transform: translate3d(calc(var(--dbn-hero-p,0) * 12px),28px,0) rotate(2.6deg);
		clip-path: inset(0 0 0 34% round var(--dbn-mobile-radius));
	}
	html.dbn-mobile-cinematic .dbn-template-about .dbn-story::before { transform: translateX(calc((1 - var(--dbn-scene-focus,0)) * -28%)); }
	html.dbn-mobile-cinematic .dbn-template-about .dbn-story__media { margin-inline: calc(-1 * var(--dbn-gutter)); border-radius: 0; }
	html.dbn-mobile-cinematic .dbn-template-about .dbn-philosophy::before {
		display: block;
		font-size: 28vw;
		transform: translateX(calc(var(--dbn-scene-p,0) * -18vw));
	}

	/* Services — cards remain normal-flow and owner-editable, but their active
	   moment gains the dimensional turn that desktop receives from stickiness. */
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg {
		position: relative;
		top: auto;
		min-height: min(760px,82svh);
		border-radius: var(--dbn-mobile-radius);
		transform: translate3d(0,28px,0) scale(0.965);
		box-shadow: 0 24px 70px -52px rgba(4,72,159,0.72);
	}
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active {
		transform: translate3d(0,0,0) scale(1);
		box-shadow: 0 38px 90px -50px rgba(4,72,159,0.9);
	}
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg .dbn-service-card__media { overflow: hidden; }
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg .dbn-media__img,
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg .dbn-ph { transform: scale(1.06); transition: transform 1.2s var(--dbn-motion-ease); }
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active .dbn-media__img,
	html.dbn-mobile-cinematic .dbn-template-services .dbn-service-card--lg.is-stack-active .dbn-ph { transform: scale(1); }
	html.dbn-mobile-cinematic .dbn-template-services .dbn-unsure__media { transform: translate3d(0,calc((0.5 - var(--dbn-scene-focus,0)) * 24px),0); }

	/* Portfolio — title and editorial context lead; the banner follows as a
	   cinema aperture and the existing filter remains the tactile control. */
	/* The tall first canvas exists to frame the banner, so it is scoped to
	   .has-banner: with no banner media the opening collapses to its copy height
	   instead of reserving an empty screen (v1.24.14). */
	html.dbn-mobile-cinematic .dbn-template-portfolio .dbn-hero--portfolio.has-banner { min-height: max(720px,92svh); align-items: start; }
	html.dbn-mobile-cinematic .dbn-template-portfolio .dbn-hero__banner {
		margin-top: clamp(2.2rem,8svh,4.5rem);
		box-shadow: 0 34px 90px -50px rgba(4,72,159,0.95);
		transform-origin: 50% 100%;
	}
	html.dbn-mobile-cinematic .dbn-template-portfolio .dbn-filters {
		top: calc(var(--dbn-header-h) + 0.4rem);
		box-shadow: 0 22px 48px -30px rgba(4,72,159,0.9);
		backdrop-filter: blur(22px) saturate(1.35);
	}
	html.dbn-mobile-cinematic .dbn-portfolio-card.is-motion-visible .dbn-portfolio-card__media { box-shadow: 0 26px 64px -44px rgba(4,72,159,0.75); }
	html.dbn-mobile-cinematic .dbn-portfolio-card:active .dbn-portfolio-card__media { transform: scale(0.985); }

	/* Weddings + Experience — equal, true full-bleed hero stages. */
	html.dbn-mobile-cinematic .dbn-hero--immersive {
		height: max(720px,100svh);
		min-height: max(720px,100svh);
		border-radius: 0;
	}
	html.dbn-mobile-cinematic .dbn-hero--immersive::after {
		content: "";
		position: absolute;
		inset: auto 0 0;
		height: 38%;
		z-index: 1;
		background: linear-gradient(180deg,transparent,rgba(1,24,54,0.5));
		pointer-events: none;
	}
	html.dbn-mobile-cinematic .dbn-hero--immersive .dbn-hero__bg,
	html.dbn-mobile-cinematic .dbn-hero--immersive .dbn-hero__bg .dbn-media__img {
		transform: scale(calc(1.08 - (var(--dbn-hero-p,0) * 0.035))) translate3d(0,calc(var(--dbn-hero-p,0) * -10px),0);
		transform-origin: 50% 45%;
	}
	html.dbn-mobile-cinematic .dbn-template-weddings-by-dbn .dbn-intro__media::before { transform: rotate(calc(-3deg + (var(--dbn-scene-focus,0) * 1deg))); }
	html.dbn-mobile-cinematic .dbn-template-weddings-by-dbn .dbn-intro__media::after { transform: rotate(calc(2.4deg - (var(--dbn-scene-focus,0) * 0.8deg))); }
	html.dbn-mobile-cinematic .dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::before,
	html.dbn-mobile-cinematic .dbn-template-weddings-by-dbn .dbn-wedding-services .dbn-service-card::after { transition-duration: 0.75s; }
	html.dbn-mobile-cinematic .dbn-template-nhyi-experience .dbn-why::before {
		transform: translate(-50%,-50%) scale(calc(0.82 + (var(--dbn-scene-focus,0) * 0.2))) rotate(calc((1 - var(--dbn-scene-focus,0)) * -5deg));
	}

	/* Events, Contact and Foundri each keep their existing controls while their
	   dominant media receives a distinct mobile handoff. */
	html.dbn-mobile-cinematic .dbn-template-events-collaborations .dbn-collab-type:nth-child(2n) { transform: translate3d(0,clamp(0.5rem,3vw,1.1rem),0); }
	html.dbn-mobile-cinematic .dbn-template-events-collaborations .dbn-spotlight__text { transform: translate3d(calc((1 - var(--dbn-scene-focus,0)) * 26px),0,0); }
	html.dbn-mobile-cinematic .dbn-template-contact .dbn-contact-editorial {
		clip-path: inset(0 8% round var(--dbn-mobile-radius));
		transform: translate3d(0,calc((0.5 - var(--dbn-scene-focus,0)) * 18px),0);
	}
	html.dbn-mobile-cinematic .dbn-template-contact .dbn-contact-editorial.is-motion-visible { clip-path: inset(0 0 round 0); }
	html.dbn-mobile-cinematic .dbn-template-contact .dbn-form__field:focus-within { transform: translate3d(0,-2px,0); transition: transform 0.45s var(--dbn-motion-ease); }
	html.dbn-mobile-cinematic .dbn-template-foundri .dbn-collage__item:nth-child(odd) { transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * 22px),0) rotate(-1.8deg); }
	html.dbn-mobile-cinematic .dbn-template-foundri .dbn-collage__item:nth-child(even) { transform: translate3d(0,calc((1 - var(--dbn-scene-focus,0)) * -16px),0) rotate(1.6deg); }

	/* Project pages keep the approved copy-first sequence, then unfold media.
	   Their opening height follows the authored copy instead of reserving an
	   empty viewport, so the first image arrives as the conclusion of the intro. */
	html.dbn-mobile-cinematic .single-dbn_portfolio .dbn-project__hero {
		min-height: 0;
		padding-top: clamp(3.75rem,10svh,5rem);
		padding-bottom: clamp(1rem,2.4svh,1.25rem);
	}
	html.dbn-mobile-cinematic .single-dbn_event_collab .dbn-collab-single > header { min-height: min(940px,100svh); }
	html.dbn-mobile-cinematic .single-dbn_portfolio .dbn-project__feature,
	html.dbn-mobile-cinematic .single-dbn_event_collab .dbn-project__feature {
		clip-path: inset(0 6% round var(--dbn-mobile-radius));
		transform: translate3d(0,calc(var(--dbn-media-y,0px) * 0.6),0);
	}
	html.dbn-mobile-cinematic .single-dbn_portfolio .dbn-project__feature.is-motion-visible,
	html.dbn-mobile-cinematic .single-dbn_event_collab .dbn-project__feature.is-motion-visible { clip-path: inset(0 0 round var(--dbn-mobile-radius)); }

	/* Search, 404 and footer receive a proper final-state composition too. */
	html.dbn-mobile-cinematic .search .dbn-search,
	html.dbn-mobile-cinematic .error404 .dbn-404 { min-height: calc(100svh - var(--dbn-header-h)); }
	html.dbn-mobile-cinematic .search .dbn-search::before {
		font-size: 42vw;
		transform: translate3d(calc(var(--dbn-hero-p,0) * -14vw),calc(var(--dbn-hero-p,0) * 5vw),0);
	}
	html.dbn-mobile-cinematic .search .dbn-search > .dbn-container { width: 100%; max-width: 100vw; min-width: 0; }
	html.dbn-mobile-cinematic .search .dbn-posts-grid {
		display: grid;
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: min(78vw,300px);
		gap: 0.9rem;
		width: calc(100% + var(--dbn-gutter) + var(--dbn-gutter));
		max-width: none;
		min-width: 0;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--dbn-gutter);
		overscroll-behavior-inline: contain;
		margin-inline: calc(-1 * var(--dbn-gutter));
		padding: 0.25rem var(--dbn-gutter) 1rem;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}
	html.dbn-mobile-cinematic .search .dbn-posts-grid::-webkit-scrollbar { display: none; }
	html.dbn-mobile-cinematic .search .dbn-post-card { scroll-snap-align: start; }
	html.dbn-mobile-cinematic .search .dbn-post-card__link { display: grid; grid-template-columns: minmax(92px,34%) 1fr; gap: 0 1rem; align-items: center; }
	html.dbn-mobile-cinematic .search .dbn-post-card figure { grid-row: 1 / 4; }
	html.dbn-mobile-cinematic .error404 .dbn-404::before {
		font-size: 58vw;
		transform: translate(-50%,-52%) rotate(calc((var(--dbn-scene-focus,0) - 0.5) * 3deg));
	}
	html.dbn-mobile-cinematic .dbn-footer { overflow: clip; position: relative; }
	html.dbn-mobile-cinematic .dbn-footer::before {
		content: "";
		position: absolute;
		width: 78vw;
		aspect-ratio: 1;
		right: -38vw;
		top: 9%;
		border: 1px solid rgba(207,247,255,0.11);
		border-radius: 50%;
		box-shadow: 0 0 0 12vw rgba(207,247,255,0.025),0 0 0 24vw rgba(207,247,255,0.018);
		pointer-events: none;
	}
	html.dbn-mobile-cinematic .dbn-footer--directed .dbn-footer__motion-item {
		transform: translate3d(-18px,30px,0);
		transition-delay: calc(var(--dbn-footer-index,0) * 105ms);
	}
	html.dbn-mobile-cinematic .dbn-footer--directed .dbn-footer__motion-item:nth-child(even) { transform: translate3d(18px,30px,0); }
	html.dbn-mobile-cinematic .dbn-footer--directed.is-footer-visible .dbn-footer__motion-item { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	@view-transition { navigation: none; }
	.dbn-js #dbn-main::before { display: none; animation: none; }
	.dbn-header,
	.dbn-header::after { transform: none; transition: none; }
	.dbn-footer--directed .dbn-footer__motion-item { opacity: 1; transform: none; transition: none; }
	.dbn-motion-title .dbn-motion-word__inner,
	.dbn-js .dbn-motion-reveal,
	.dbn-js .dbn-motion-media,
	.dbn-motion-media > *,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__text.is-visible,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__media,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__banner,
	.dbn-hero:not(.dbn-xhero) .dbn-hero__bg,
	.dbn-service-card--lg,
	.dbn-cta-band::after {
		opacity: 1;
		transform: none;
		filter: none;
		clip-path: none;
		transition: none;
		animation: none;
	}
	.dbn-service-card--lg { position: relative; top: auto; min-height: 0; }
	.dbn-opening::before,
	.dbn-opening::after,
	.dbn-scene__rail { display: none; animation: none; }
	.dbn-opening .dbn-eyebrow,
	.dbn-opening .dbn-hero__sub,
	.dbn-opening .dbn-project__lead,
	.dbn-opening .dbn-hero__actions,
	.dbn-opening .dbn-pill,
	.dbn-opening .dbn-breadcrumb,
	.dbn-opening .dbn-404__body,
	.dbn-opening .dbn-404__actions,
	.dbn-opening .dbn-search-form,
	.dbn-opening__media,
	.dbn-opening__media > *,
	.dbn-opening__media .dbn-media__img,
	.dbn-motion-copy,
	.dbn-scene__canvas,
	.dbn-journey-art,
	.dbn-portfolio-card__media,
	.dbn-collab-card__media,
	.dbn-foundri-card__media,
	.dbn-portfolio-card__meta,
	.dbn-collab-card__body,
	.dbn-foundri-card__body,
	.dbn-project__feature,
	.dbn-chapter-nav__link {
		opacity: 1;
		transform: none;
		filter: none;
		clip-path: none;
		transition: none;
		animation: none;
	}
	/* The light-sweep + lift on buttons is motion too. */
	.dbn-btn {
		transition: none;
		background-image: none;
	}
	.dbn-btn:hover { transform: none; }
	.dbn-vendor-card,
	.dbn-vendor-card__media .dbn-media__img,
	.dbn-vendor-card__arrow { transition: none; }
	.dbn-vendor-card:hover,
	.dbn-vendor-card.has-link:hover .dbn-vendor-card__media .dbn-media__img,
	.dbn-vendor-card.has-link:hover .dbn-vendor-card__arrow { transform: none; }
}
