/* =================================================================
   DEEHVINE MARKETING - Design system
   -----------------------------------------------------------------
   1.  Design tokens          8.  Industries
   2.  Base + utilities       9.  Why Deehvine
   3.  Header / navigation   10.  Process
   4.  Buttons + links       11.  Impact strip
   5.  Hero                  12.  Website review form
   6.  Section shells        13.  Final CTA
   7.  Featured work         14.  Footer
                             15.  Motion + accessibility

   Change a token in section 1 and it propagates across the whole site.
   ================================================================= */

/* -----------------------------------------------------------------
   1. DESIGN TOKENS
   ----------------------------------------------------------------- */
:root {
	/* Brand */
	--dv-violet: #6D4AFF;
	--dv-violet-deep: #4B2CD9;
	--dv-violet-electric: #8B5CFF;
	--dv-gold: #C9953D;

	/* Neutrals - biased slightly toward the violet hue */
	--dv-midnight: #0E0E0F;
	--dv-graphite: #1F1F26;
	--dv-graphite-2: #17171C;
	--dv-soft-gray: #DADADA;
	--dv-warm-white: #F8F7F4;
	--dv-white: #FFFFFF;

	/* Derived roles */
	--dv-ink: var(--dv-midnight);
	--dv-ink-muted: #55555F;
	--dv-on-dark: #FFFFFF;
	--dv-on-dark-muted: #A6A6B2;
	--dv-hairline-dark: rgba(255, 255, 255, .10);
	--dv-hairline-light: rgba(14, 14, 15, .10);
	--dv-gradient: linear-gradient(120deg, #4B2CD9 0%, #6D4AFF 52%, #8B5CFF 100%);

	/* Type */
	--dv-font-sans: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	--dv-font-display: "DM Serif Display", Georgia, "Times New Roman", serif;

	/* Fluid type scale */
	--dv-t-display: clamp(2.4rem, 2.05rem + 1.15vw, 3.6rem);
	--dv-t-h2: clamp(1.875rem, 1.66rem + .91vw, 2.75rem);
	--dv-t-h3: clamp(1.25rem, 1.1rem + .5vw, 1.5rem);
	--dv-t-body: clamp(.9375rem, .9rem + .18vw, 1.0625rem);
	--dv-t-small: .875rem;
	--dv-t-eyebrow: .6875rem;

	/* Spacing scale */
	--dv-space-1: 8px;
	--dv-space-2: 16px;
	--dv-space-3: 24px;
	--dv-space-4: 32px;
	--dv-space-5: 48px;
	--dv-space-6: 64px;
	--dv-space-7: 96px;
	--dv-section-y: clamp(56px, 7vw, 120px);
	--dv-gutter: clamp(20px, 4vw, 48px);
	--dv-max: 1280px;

	/* Shape - one radius rule, held everywhere */
	--dv-r-card: 14px;
	--dv-r-media: 10px;
	--dv-r-input: 8px;
	--dv-r-pill: 999px;

	--dv-ease: cubic-bezier(.22, .61, .36, 1);
	--dv-header-h: 92px;
}

/* -----------------------------------------------------------------
   2. BASE + UTILITIES
   ----------------------------------------------------------------- */
body {
	font-family: var(--dv-font-sans);
	font-size: var(--dv-t-body);
	line-height: 1.65;
	color: var(--dv-ink);
	background: var(--dv-white);
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

/* Display type sits tight - large type needs less leading, not more. */
.dv-display .elementor-heading-title,
.dv-display {
	font-family: var(--dv-font-display);
	font-weight: 400;
	line-height: 1.06;
	letter-spacing: -.015em;
}

.dv-h1 .elementor-heading-title { font-size: var(--dv-t-display); }
.dv-h2 .elementor-heading-title { font-size: var(--dv-t-h2); }

.dv-accent { color: var(--dv-violet-electric); }
.dv-accent-strong { color: var(--dv-violet); }

/* Eyebrow - rationed, and only where the mockup calls for one. */
.dv-eyebrow .elementor-heading-title,
.dv-eyebrow {
	font-family: var(--dv-font-sans);
	font-size: var(--dv-t-eyebrow);
	font-weight: 700;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--dv-violet);
	line-height: 1.4;
	margin: 0;
}
.dv-section--dark .dv-eyebrow .elementor-heading-title,
.dv-section--dark .dv-eyebrow { color: var(--dv-violet-electric); }

.dv-lead p, .dv-lead {
	font-size: var(--dv-t-body);
	line-height: 1.7;
	max-width: 62ch;
	color: var(--dv-ink-muted);
}
.dv-section--dark .dv-lead p,
.dv-section--dark .dv-lead { color: var(--dv-on-dark-muted); }

.dv-signature .elementor-heading-title,
.dv-signature {
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .34em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .5);
}

/* -----------------------------------------------------------------
   3. HEADER / NAVIGATION
   ----------------------------------------------------------------- */
.dv-header {
	position: fixed;
	top: 0; left: 0; right: 0;
	z-index: 999;
	background: transparent;
	border-bottom: 1px solid transparent;
	transition: background-color .35s var(--dv-ease), border-color .35s var(--dv-ease), backdrop-filter .35s var(--dv-ease);
}
.dv-header.is-stuck {
	background: rgba(14, 14, 15, .82);
	border-bottom-color: var(--dv-hairline-dark);
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.dv-header.is-stuck {
		background: rgba(14, 14, 15, .62);
		-webkit-backdrop-filter: saturate(160%) blur(14px);
		backdrop-filter: saturate(160%) blur(14px);
	}
}
.dv-header .e-con-inner,
.dv-header > .e-con-inner { max-width: var(--dv-max); }

.dv-logo img {
	height: clamp(34px, 3.6vw, 44px);
	width: auto;
}

/* Pro Elements nav menu */
.dv-nav .elementor-nav-menu > li > a.elementor-item {
	font-family: var(--dv-font-sans);
	font-size: .875rem;
	font-weight: 600;
	letter-spacing: .01em;
	color: rgba(255, 255, 255, .9);
	padding: 10px 17px;
	transition: color .2s var(--dv-ease);
}
.dv-nav .elementor-nav-menu > li > a.elementor-item:hover,
.dv-nav .elementor-nav-menu > li > a.elementor-item:focus-visible,
.dv-nav .elementor-nav-menu > li > a.elementor-item.elementor-item-active { color: #fff; }

/* Underline that grows from the centre - subtle, no bounce. */
.dv-nav .elementor-nav-menu > li > a.elementor-item::after {
	content: "";
	position: absolute;
	left: 16px; right: 16px; bottom: 2px;
	height: 1.5px;
	background: var(--dv-violet-electric);
	transform: scaleX(0);
	transform-origin: center;
	transition: transform .28s var(--dv-ease);
}
.dv-nav .elementor-nav-menu > li > a.elementor-item:hover::after,
.dv-nav .elementor-nav-menu > li > a.elementor-item.elementor-item-active::after { transform: scaleX(1); }

/* Mobile panel */
.dv-nav .elementor-nav-menu--dropdown {
	background-color: rgba(14, 14, 15, .97) !important;
	border-top: 1px solid var(--dv-hairline-dark);
}
.dv-nav .elementor-nav-menu--dropdown a.elementor-item {
	color: rgba(255, 255, 255, .86) !important;
	font-size: 1rem;
	font-weight: 500;
	padding: 16px var(--dv-gutter) !important;
	border-bottom: 1px solid rgba(255, 255, 255, .06);
}
.dv-nav .elementor-menu-toggle {
	color: #fff !important;
	background: transparent !important;
}

/* -----------------------------------------------------------------
   4. BUTTONS + LINKS
   ----------------------------------------------------------------- */
.dv-btn .elementor-button,
a.dv-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--dv-font-sans);
	font-size: .875rem;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 1;
	padding: 15px 26px;
	border-radius: var(--dv-r-pill);
	border: 1px solid transparent;
	text-decoration: none;
	white-space: nowrap;
	text-transform: none;
	transition: transform .18s var(--dv-ease), box-shadow .28s var(--dv-ease), background-color .28s var(--dv-ease), border-color .28s var(--dv-ease), color .28s var(--dv-ease);
}
.dv-btn--primary .elementor-button,
a.dv-btn--primary {
	background: var(--dv-violet);
	color: #fff;
	box-shadow: 0 8px 24px -12px rgba(109, 74, 255, .9);
}
.dv-btn--primary .elementor-button:hover,
.dv-btn--primary .elementor-button:focus-visible,
a.dv-btn--primary:hover,
a.dv-btn--primary:focus-visible {
	background: var(--dv-violet-deep);
	color: #fff;
	box-shadow: 0 14px 34px -14px rgba(109, 74, 255, 1);
}
.dv-btn--primary .elementor-button:active,
a.dv-btn--primary:active { transform: translateY(1px); }

.dv-btn--ghost .elementor-button,
a.dv-btn--ghost {
	background: transparent;
	color: #fff;
	border-color: rgba(255, 255, 255, .34);
}
.dv-btn--ghost .elementor-button:hover,
.dv-btn--ghost .elementor-button:focus-visible,
a.dv-btn--ghost:hover,
a.dv-btn--ghost:focus-visible {
	border-color: #fff;
	background: rgba(255, 255, 255, .08);
	color: #fff;
}

/* Header CTA is a touch smaller than a section CTA. */
.dv-btn--sm .elementor-button { padding: 12px 22px; font-size: .8125rem; }

/* Arrow moves on hover of the button OR the card that owns it. */
.dv-btn .elementor-button .dv-arrow,
.dv-link .dv-arrow {
	display: inline-block;
	transition: transform .28s var(--dv-ease);
}
.dv-btn .elementor-button:hover .dv-arrow,
.dv-link:hover .dv-arrow,
.dv-card:hover .dv-link .dv-arrow { transform: translateX(4px); }

/* Quiet text link with an arrow */
.dv-link,
.dv-link .elementor-button {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: .8125rem;
	font-weight: 600;
	color: var(--dv-violet);
	text-decoration: none;
	background: none;
	border: 0;
	padding: 0;
	border-radius: 0;
}
.dv-link:hover, .dv-link:focus-visible,
.dv-link .elementor-button:hover { color: var(--dv-violet-electric); }
.dv-section--dark .dv-link,
.dv-section--dark .dv-link .elementor-button { color: var(--dv-violet-electric); }

/* -----------------------------------------------------------------
   5. HERO
   ----------------------------------------------------------------- */
.dv-hero {
	position: relative;
	min-height: min(88vh, 880px);
	background-color: var(--dv-midnight);
	background-repeat: no-repeat;
	background-size: cover;
	background-position: 78% center;
	--padding-block-start: calc(var(--dv-header-h) + clamp(32px, 6vw, 88px));
	--padding-block-end: clamp(40px, 4.5vw, 68px);
	--padding-inline-start: var(--dv-gutter);
	--padding-inline-end: var(--dv-gutter);
	isolation: isolate;
	overflow: hidden;
}
/* Scrim: opaque at the left where the type sits, clear over the building. */
.dv-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(14, 14, 15, .97) 0%, rgba(14, 14, 15, .95) 32%, rgba(14, 14, 15, .82) 44%, rgba(14, 14, 15, .38) 60%, rgba(14, 14, 15, .08) 76%, rgba(14, 14, 15, .38) 100%),
		linear-gradient(180deg, rgba(14, 14, 15, .72) 0%, rgba(14, 14, 15, 0) 26%);
}
.dv-hero__inner { max-width: var(--dv-max); }
.dv-hero__copy { max-width: 640px; }
/* Over photography the muted body grey loses too much contrast. */
.dv-hero .dv-lead p { color: rgba(255, 255, 255, .84); max-width: 52ch; }

.dv-hero .dv-h1 .elementor-heading-title { color: #fff; }

/* The quiet brand line under the buttons. */
.dv-hero__signature { margin-top: var(--dv-space-4); }

/* Right-hand brand note, hidden once it would crowd the composition. */
.dv-hero__note {
	position: absolute;
	right: max(var(--dv-gutter), calc((100vw - var(--dv-max)) / 2));
	bottom: clamp(40px, 4.5vw, 68px);
	max-width: 216px;
	padding-left: 20px;
	border-left: 2px solid var(--dv-violet-electric);
	font-family: var(--dv-font-sans);
	font-size: .9375rem;
	font-weight: 500;
	line-height: 1.45;
	letter-spacing: -.005em;
	color: rgba(255, 255, 255, .9);
	margin: 0;
	z-index: 2;
}
@media (max-width: 1200px) { .dv-hero__note { display: none; } }

@media (max-width: 1024px) {
	.dv-hero {
		background-position: 68% center;
		min-height: auto;
		--padding-block-start: calc(var(--dv-header-h) + 72px);
	}
	.dv-hero::before {
		background:
			linear-gradient(90deg, rgba(14, 14, 15, .95) 0%, rgba(14, 14, 15, .80) 55%, rgba(14, 14, 15, .55) 100%),
			linear-gradient(180deg, rgba(14, 14, 15, .7) 0%, rgba(14, 14, 15, .2) 40%);
	}
}
@media (max-width: 767px) {
	.dv-hero {
		background-position: 62% center;
		--padding-block-start: calc(var(--dv-header-h) + 48px);
		--padding-block-end: 64px;
	}
	.dv-hero::before {
		background: linear-gradient(180deg, rgba(14, 14, 15, .88) 0%, rgba(14, 14, 15, .78) 45%, rgba(14, 14, 15, .92) 100%);
	}
	.dv-hero .dv-btn .elementor-button { width: 100%; justify-content: center; }
}

/* -----------------------------------------------------------------
   6. SECTION SHELLS
   ----------------------------------------------------------------- */
.dv-section {
	--padding-block-start: var(--dv-section-y);
	--padding-block-end: var(--dv-section-y);
	--padding-inline-start: var(--dv-gutter);
	--padding-inline-end: var(--dv-gutter);
}
.dv-section--dark { background-color: var(--dv-midnight); color: var(--dv-on-dark); }
.dv-section--dark .elementor-heading-title { color: #fff; }
.dv-section--light { background-color: var(--dv-warm-white); color: var(--dv-ink); }
.dv-section--white { background-color: var(--dv-white); }

/* Section head: headline left, one supporting element right. */
.dv-sechead { align-items: flex-end; }
.dv-sechead__aside p {
	font-size: var(--dv-t-small);
	line-height: 1.6;
	color: var(--dv-ink-muted);
	max-width: 46ch;
}
.dv-section--dark .dv-sechead__aside p { color: var(--dv-on-dark-muted); }

/* -----------------------------------------------------------------
   7. FEATURED WORK
   ----------------------------------------------------------------- */
.dv-projects {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--dv-space-3);
}
.dv-project {
	display: flex;
	flex-direction: column;
	background: var(--dv-graphite-2);
	border: 1px solid var(--dv-hairline-dark);
	border-radius: var(--dv-r-card);
	padding: 10px 10px 0;
	overflow: hidden;
	transition: transform .35s var(--dv-ease), border-color .35s var(--dv-ease), box-shadow .35s var(--dv-ease);
}
.dv-project:hover {
	transform: translateY(-4px);
	border-color: rgba(139, 92, 255, .45);
	box-shadow: 0 24px 48px -28px rgba(75, 44, 217, .8);
}
.dv-project__media {
	display: block;
	border-radius: var(--dv-r-media);
	overflow: hidden;
	background: var(--dv-graphite);
	aspect-ratio: 4 / 3;
}
.dv-project__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .6s var(--dv-ease);
}
.dv-project:hover .dv-project__media img { transform: scale(1.035); }
.dv-project__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: var(--dv-space-3) 14px var(--dv-space-3);
}
.dv-project__title {
	font-family: var(--dv-font-sans);
	font-size: 1.1875rem;
	font-weight: 700;
	letter-spacing: -.01em;
	line-height: 1.25;
	color: #fff;
	margin: 0 0 6px;
}
.dv-project__subtitle {
	font-size: .8125rem;
	font-weight: 500;
	line-height: 1.45;
	color: var(--dv-on-dark-muted);
	margin: 0 0 14px;
}
.dv-project__summary {
	font-size: .8125rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, .58);
	margin: 0 0 var(--dv-space-2);
}
.dv-project__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	margin: 0 0 var(--dv-space-2);
	padding: 0;
	margin-top: auto;
}
.dv-project__tags li {
	font-size: .6875rem;
	font-weight: 500;
	letter-spacing: .02em;
	color: rgba(255, 255, 255, .66);
	border: 1px solid var(--dv-hairline-dark);
	border-radius: 6px;
	padding: 5px 9px;
	line-height: 1;
}
.dv-project__cta { align-self: flex-start; }
.dv-empty {
	grid-column: 1 / -1;
	color: var(--dv-on-dark-muted);
	border: 1px dashed var(--dv-hairline-dark);
	border-radius: var(--dv-r-card);
	padding: var(--dv-space-4);
	text-align: center;
}

@media (max-width: 1024px) { .dv-projects { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .dv-projects { grid-template-columns: 1fr; } }

/* -----------------------------------------------------------------
   Shared card shell (services / industries / values)
   ----------------------------------------------------------------- */
.dv-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border-radius: var(--dv-r-card);
	transition: transform .35s var(--dv-ease), border-color .35s var(--dv-ease), box-shadow .35s var(--dv-ease), background-color .35s var(--dv-ease);
}
.dv-icon svg { display: block; }
.dv-icon svg path,
.dv-icon svg circle,
.dv-icon svg rect,
.dv-icon svg line,
.dv-icon svg polyline,
.dv-icon svg polygon {
	fill: none;
	stroke: var(--dv-violet-electric);
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* -----------------------------------------------------------------
   8. SERVICES
   ----------------------------------------------------------------- */
.dv-service.dv-card {
	background: var(--dv-graphite-2);
	border: 1px solid rgba(255, 255, 255, .08);
	padding: var(--dv-space-4) var(--dv-space-3) var(--dv-space-3);
	gap: 14px;
	height: 100%;
}
.dv-service.dv-card:hover,
.dv-service.dv-card:focus-within {
	transform: translateY(-4px);
	border-color: rgba(139, 92, 255, .5);
	box-shadow: 0 22px 46px -26px rgba(75, 44, 217, .85);
}
.dv-service .dv-icon { margin-bottom: 4px; }
.dv-service .dv-icon svg { width: 26px; height: 26px; transition: transform .35s var(--dv-ease); }
.dv-service.dv-card:hover .dv-icon svg { transform: translateY(-2px); }
.dv-service .dv-card__title .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.3;
	color: #fff;
}
.dv-service .dv-card__text p {
	font-size: .8125rem;
	line-height: 1.65;
	color: rgba(255, 255, 255, .6);
	margin: 0;
}
.dv-service .dv-link { margin-top: auto; padding-top: 6px; }

/* -----------------------------------------------------------------
   9. INDUSTRIES
   ----------------------------------------------------------------- */
.dv-industry.dv-card {
	background: var(--dv-white);
	border: 1px solid var(--dv-hairline-light);
	overflow: hidden;
	height: 100%;
}
.dv-industry.dv-card:hover {
	transform: translateY(-4px);
	border-color: rgba(109, 74, 255, .4);
	box-shadow: 0 22px 44px -30px rgba(31, 31, 38, .55);
}
.dv-industry__media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--dv-soft-gray); }
.dv-industry__media img,
.dv-industry .elementor-widget-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .6s var(--dv-ease);
}
.dv-industry.dv-card:hover .elementor-widget-image img { transform: scale(1.04); }
.dv-industry__body { padding: var(--dv-space-3) 20px 26px; display: flex; flex-direction: column; gap: 10px; }
.dv-industry .dv-icon svg { width: 22px; height: 22px; }
.dv-industry .dv-icon svg * { stroke: var(--dv-violet); }
.dv-industry .dv-card__title .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--dv-ink);
}
.dv-industry .dv-card__text p {
	font-size: .8125rem;
	line-height: 1.6;
	color: var(--dv-ink-muted);
	margin: 0;
}

/* -----------------------------------------------------------------
   10. WHY DEEHVINE
   ----------------------------------------------------------------- */
.dv-value { gap: 14px; }
.dv-value .dv-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: var(--dv-r-pill);
	border: 1px solid rgba(139, 92, 255, .45);
	background: rgba(109, 74, 255, .10);
}
.dv-value .dv-icon svg { width: 22px; height: 22px; }
.dv-value .dv-card__title .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: .9375rem;
	font-weight: 700;
	color: #fff;
	line-height: 1.35;
}
.dv-value .dv-card__text p {
	font-size: .8125rem;
	line-height: 1.65;
	color: var(--dv-on-dark-muted);
	margin: 0;
}

/* -----------------------------------------------------------------
   11. PROCESS
   ----------------------------------------------------------------- */
.dv-step { position: relative; gap: 6px; padding-right: 18px; }
.dv-step__num .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--dv-violet);
	letter-spacing: .01em;
	line-height: 1;
}
.dv-step__title .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: .9375rem;
	font-weight: 700;
	color: var(--dv-ink);
	line-height: 1.3;
}
.dv-step__text p {
	font-size: .75rem;
	line-height: 1.55;
	color: var(--dv-ink-muted);
	margin: 0;
}
/* Connector between steps - drawn, not an extra element. */
.dv-step::after {
	content: "";
	position: absolute;
	top: 7px;
	right: 2px;
	width: 14px;
	height: 10px;
	background-color: rgba(14, 14, 15, .35);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='3' y1='12' x2='21' y2='12'/%3E%3Cpolyline points='15 6 21 12 15 18'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='3' y1='12' x2='21' y2='12'/%3E%3Cpolyline points='15 6 21 12 15 18'/%3E%3C/svg%3E") center / contain no-repeat;
}
.dv-step:last-child::after { display: none; }

@media (max-width: 880px) {
	/* Vertical timeline on small screens. */
	.dv-step { padding-right: 0; padding-left: 28px; padding-bottom: 26px; }
	.dv-step::before {
		content: "";
		position: absolute;
		left: 5px; top: 20px; bottom: -4px;
		width: 1px;
		background: rgba(14, 14, 15, .14);
	}
	.dv-step::after {
		top: 5px; left: 0; right: auto;
		width: 11px; height: 11px;
		border-radius: 50%;
		background-color: var(--dv-violet);
		-webkit-mask: none;
		mask: none;
		display: block;
	}
	.dv-step:last-child::before { display: none; }
	.dv-step:last-child::after { display: block; }
}

/* -----------------------------------------------------------------
   12. IMPACT STRIP
   ----------------------------------------------------------------- */
.dv-impact { border-top: 1px solid var(--dv-hairline-light); }
.dv-metric { gap: 10px; align-items: center; }
.dv-metric__value .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: 2.125rem;
	font-weight: 800;
	color: var(--dv-violet);
	line-height: 1;
	letter-spacing: -.025em;
}
.dv-metric__label p,
.dv-metric__label {
	font-size: .8125rem;
	line-height: 1.4;
	color: var(--dv-ink-muted);
	margin: 0;
	max-width: 15ch;
}
.dv-metric .dv-icon svg { width: 24px; height: 24px; }
.dv-metric .dv-icon svg * { stroke: var(--dv-violet); }

/* -----------------------------------------------------------------
   13. WEBSITE REVIEW FORM
   ----------------------------------------------------------------- */
.dv-reviewpanel {
	position: relative;
	background: var(--dv-midnight);
	border-radius: var(--dv-r-card);
	padding: clamp(24px, 3vw, 36px);
	overflow: hidden;
}
/* Violet light bleeding in from the right, as in the reference. */
.dv-reviewpanel::after {
	content: "";
	position: absolute;
	right: -90px; top: -60px;
	width: 320px; height: 320px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(139, 92, 255, .55) 0%, rgba(109, 74, 255, 0) 68%);
	pointer-events: none;
}
.dv-reviewpanel > * { position: relative; z-index: 1; }

.dv-reviewpanel .wpforms-container { margin: 0; }
.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-field-container {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}
.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-field {
	padding: 0;
	margin: 0;
	max-width: none;
}
.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-field-label {
	font-family: var(--dv-font-sans);
	font-size: .75rem;
	font-weight: 600;
	color: rgba(255, 255, 255, .82);
	margin: 0 0 8px;
	letter-spacing: .01em;
}
.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-required-label { color: var(--dv-violet-electric); }
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=text],
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=email],
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=url],
.dv-reviewpanel div.wpforms-container .wpforms-form textarea {
	width: 100%;
	background: rgba(255, 255, 255, .05);
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: var(--dv-r-input);
	color: #fff;
	font-family: var(--dv-font-sans);
	font-size: .875rem;
	padding: 13px 14px;
	box-shadow: none;
	transition: border-color .25s var(--dv-ease), background-color .25s var(--dv-ease);
}
.dv-reviewpanel div.wpforms-container .wpforms-form input::placeholder,
.dv-reviewpanel div.wpforms-container .wpforms-form textarea::placeholder { color: rgba(255, 255, 255, .42); }
.dv-reviewpanel div.wpforms-container .wpforms-form input:focus,
.dv-reviewpanel div.wpforms-container .wpforms-form textarea:focus {
	border-color: var(--dv-violet-electric);
	background: rgba(255, 255, 255, .08);
	outline: 2px solid transparent;
	outline-offset: 2px;
}
.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-submit-container {
	padding: 18px 0 0;
	text-align: right;
}
.dv-reviewpanel div.wpforms-container .wpforms-form button[type=submit] {
	background: var(--dv-violet);
	border: 0;
	border-radius: var(--dv-r-pill);
	color: #fff;
	font-family: var(--dv-font-sans);
	font-size: .8125rem;
	font-weight: 600;
	padding: 13px 24px;
	box-shadow: 0 8px 24px -12px rgba(109, 74, 255, .9);
	transition: background-color .25s var(--dv-ease), box-shadow .25s var(--dv-ease), transform .18s var(--dv-ease);
}
.dv-reviewpanel div.wpforms-container .wpforms-form button[type=submit]:hover { background: var(--dv-violet-deep); }
.dv-reviewpanel div.wpforms-container .wpforms-form button[type=submit]:active { transform: translateY(1px); }
.dv-reviewpanel div.wpforms-container .wpforms-error,
.dv-reviewpanel div.wpforms-container label.wpforms-error {
	color: #FF9C8A;
	font-size: .75rem;
}
.dv-reviewpanel div.wpforms-container-full.wpforms-confirmation-container-full {
	background: rgba(109, 74, 255, .12);
	border: 1px solid rgba(139, 92, 255, .45);
	border-radius: var(--dv-r-input);
	color: #fff;
	padding: 20px;
}
.dv-reviewpanel div.wpforms-container-full.wpforms-confirmation-container-full p { color: rgba(255, 255, 255, .82); margin: 0; }

@media (max-width: 880px) {
	.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-field-container { grid-template-columns: 1fr; }
	.dv-reviewpanel div.wpforms-container .wpforms-form .wpforms-submit-container { text-align: left; }
	.dv-reviewpanel div.wpforms-container .wpforms-form button[type=submit] { width: 100%; }
}

/* Full inquiry form (Start a Project page) reuses the panel, one column. */
.dv-formpanel .wpforms-container { margin: 0; }
.dv-formpanel div.wpforms-container .wpforms-form .wpforms-field { padding: 0 0 18px; max-width: none; }
.dv-formpanel div.wpforms-container .wpforms-form .wpforms-field-label { font-weight: 600; font-size: .8125rem; margin-bottom: 8px; }
.dv-formpanel div.wpforms-container .wpforms-form input[type=text],
.dv-formpanel div.wpforms-container .wpforms-form input[type=email],
.dv-formpanel div.wpforms-container .wpforms-form input[type=url],
.dv-formpanel div.wpforms-container .wpforms-form input[type=tel],
.dv-formpanel div.wpforms-container .wpforms-form input[type=date],
.dv-formpanel div.wpforms-container .wpforms-form select,
.dv-formpanel div.wpforms-container .wpforms-form textarea {
	width: 100%;
	border: 1px solid var(--dv-hairline-light);
	border-radius: var(--dv-r-input);
	padding: 13px 14px;
	font-family: var(--dv-font-sans);
	font-size: .9375rem;
	background: #fff;
}
.dv-formpanel div.wpforms-container .wpforms-form input:focus,
.dv-formpanel div.wpforms-container .wpforms-form select:focus,
.dv-formpanel div.wpforms-container .wpforms-form textarea:focus { border-color: var(--dv-violet); }
.dv-formpanel div.wpforms-container .wpforms-form button[type=submit] {
	background: var(--dv-violet);
	border: 0;
	border-radius: var(--dv-r-pill);
	color: #fff;
	font-family: var(--dv-font-sans);
	font-weight: 600;
	font-size: .875rem;
	padding: 15px 28px;
}
.dv-formpanel div.wpforms-container .wpforms-form button[type=submit]:hover { background: var(--dv-violet-deep); }

/* -----------------------------------------------------------------
   14. FINAL CTA + FOOTER
   ----------------------------------------------------------------- */
.dv-finalcta {
	position: relative;
	background: var(--dv-midnight);
	overflow: hidden;
	isolation: isolate;
}
/* Geometry echoing the arrow inside the logo mark - no neon blobs. */
.dv-finalcta::before {
	content: "";
	position: absolute;
	z-index: -1;
	left: -8%;
	top: -40%;
	width: 46%;
	height: 200%;
	background: var(--dv-gradient);
	opacity: .5;
	border-radius: 46% 54% 60% 40% / 50% 44% 56% 50%;
	filter: blur(6px);
}
.dv-finalcta::after {
	content: "";
	position: absolute;
	z-index: -1;
	inset: 0;
	background: linear-gradient(90deg, rgba(14, 14, 15, .55) 0%, rgba(14, 14, 15, .92) 34%, rgba(14, 14, 15, .96) 100%);
}
.dv-finalcta .dv-h2 .elementor-heading-title { line-height: 1.14; }

.dv-footer { background: var(--dv-midnight); color: var(--dv-on-dark-muted); }
.dv-footer .dv-logo img { height: 42px; width: auto; }
.dv-footer__col .elementor-heading-title {
	font-family: var(--dv-font-sans);
	font-size: .6875rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .92);
	margin-bottom: 14px;
}
.dv-footer__links ul { list-style: none; margin: 0; padding: 0; }
.dv-footer__links li { margin: 0 0 9px; }
.dv-footer__links a {
	font-size: .8125rem;
	color: rgba(255, 255, 255, .68);
	text-decoration: none;
	transition: color .2s var(--dv-ease);
}
.dv-footer__links a:hover, .dv-footer__links a:focus-visible { color: #fff; }
.dv-footer__social .elementor-grid-item a.elementor-icon {
	background: rgba(255, 255, 255, .07);
	color: rgba(255, 255, 255, .8);
	border: 1px solid var(--dv-hairline-dark);
	transition: background-color .25s var(--dv-ease), color .25s var(--dv-ease), border-color .25s var(--dv-ease);
}
.dv-footer__social .elementor-grid-item a.elementor-icon:hover {
	background: var(--dv-violet);
	border-color: var(--dv-violet);
	color: #fff;
}
.dv-footer__bar {
	border-top: 1px solid var(--dv-hairline-dark);
	font-size: .75rem;
	color: rgba(255, 255, 255, .45);
}
.dv-footer__bar a { color: rgba(255, 255, 255, .45); text-decoration: none; }
.dv-footer__bar a:hover { color: #fff; }
.dv-footer__legal { display: flex; gap: 24px; }

@media (max-width: 767px) {
	.dv-footer__legal { gap: 18px; }
}

/* -----------------------------------------------------------------
   15. MOTION + ACCESSIBILITY
   ----------------------------------------------------------------- */
/* Reveals only exist once JS confirms it can undo them, so a failed
   script can never leave content invisible. */
html.dv-js .dv-reveal {
	opacity: 0;
	transform: translateY(18px);
	will-change: opacity, transform;
}
html.dv-js .dv-reveal.is-visible {
	opacity: 1;
	transform: none;
	transition: opacity .7s var(--dv-ease), transform .7s var(--dv-ease);
}

:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--dv-violet-electric);
	outline-offset: 3px;
	border-radius: 3px;
}
.dv-section--light :where(a, button, input, select, textarea):focus-visible { outline-color: var(--dv-violet); }

@media (prefers-reduced-motion: reduce) {
	html.dv-js .dv-reveal { opacity: 1; transform: none; }
	*, *::before, *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* Astra sometimes adds a top gap for the admin bar on fixed headers. */
.admin-bar .dv-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .dv-header { top: 46px; } }

/* -----------------------------------------------------------------
   16. LAYOUT UTILITIES FOR ELEMENTOR CONTAINERS
   -----------------------------------------------------------------
   Elementor drives its containers through custom properties (--display,
   --gap, --padding-*). Setting those instead of raw properties means the
   builder and this stylesheet agree rather than fight, and every layout
   below stays editable in Elementor.
   ----------------------------------------------------------------- */

.e-con.dv-grid,
.e-con.dv-sechead,
.e-con.dv-why,
.e-con.dv-process,
.e-con.dv-reviewgrid,
.e-con.dv-ctarow,
.e-con.dv-footergrid,
.e-con.dv-footer__bar {
	--display: grid;
	display: grid;
}

.dv-grid { --gap: var(--dv-space-3); gap: var(--dv-space-3); align-items: stretch; }
.dv-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dv-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.dv-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); --gap: var(--dv-space-2); gap: var(--dv-space-2); }
.dv-grid--values { grid-template-columns: repeat(3, minmax(0, 1fr)); --gap: var(--dv-space-4); gap: var(--dv-space-4); }
.dv-grid--metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); --gap: var(--dv-space-4); gap: var(--dv-space-4); align-items: center; }

@media (max-width: 1024px) {
	.dv-grid--4, .dv-grid--3, .dv-grid--metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.dv-grid--values { grid-template-columns: 1fr; --gap: var(--dv-space-3); gap: var(--dv-space-3); }
}
@media (max-width: 880px) { .dv-grid--5 { grid-template-columns: 1fr; --gap: 0; gap: 0; } }
@media (max-width: 640px) { .dv-grid--4, .dv-grid--3, .dv-grid--metrics { grid-template-columns: 1fr; } }

/* Section head: headline left, one supporting element opposite. */
.dv-sechead {
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
	--gap: var(--dv-space-4);
	gap: var(--dv-space-4);
	align-items: end;
	margin-bottom: clamp(32px, 4vw, 52px);
}
.dv-sechead--tight { grid-template-columns: minmax(0, 1fr) auto; }
@media (max-width: 880px) {
	.dv-sechead, .dv-sechead--tight { grid-template-columns: 1fr; align-items: start; --gap: var(--dv-space-2); gap: var(--dv-space-2); }
}

.dv-why { grid-template-columns: minmax(0, .95fr) minmax(0, 2fr); --gap: clamp(32px, 5vw, 72px); gap: clamp(32px, 5vw, 72px); align-items: start; }
.dv-process { grid-template-columns: minmax(0, .8fr) minmax(0, 2.3fr); --gap: clamp(32px, 5vw, 64px); gap: clamp(32px, 5vw, 64px); align-items: start; }
.dv-reviewgrid { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); --gap: clamp(32px, 5vw, 64px); gap: clamp(32px, 5vw, 64px); align-items: center; }
@media (max-width: 960px) {
	.dv-why, .dv-process, .dv-reviewgrid { grid-template-columns: 1fr; }
}

.dv-ctarow { grid-template-columns: minmax(0, 1fr) auto; --gap: var(--dv-space-4); gap: var(--dv-space-4); align-items: center; }
@media (max-width: 767px) { .dv-ctarow { grid-template-columns: 1fr; } }

/* Hero button row */
.dv-hero__buttons { --flex-direction: row; flex-direction: row; --gap: 14px; gap: 14px; --flex-wrap: wrap; flex-wrap: wrap; align-items: center; margin-top: var(--dv-space-3); }
@media (max-width: 480px) { .dv-hero__buttons { --flex-direction: column; flex-direction: column; align-items: stretch; } }

/* Header bar */
.dv-header .dv-headerbar {
	--display: flex;
	display: flex;
	--flex-direction: row;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	--gap: var(--dv-space-3);
	gap: var(--dv-space-3);
	--padding-block-start: 17px;
	--padding-block-end: 17px;
	--padding-inline-start: var(--dv-gutter);
	--padding-inline-end: var(--dv-gutter);
}
.dv-header .dv-headerbar > .e-con,
.dv-header .dv-headerbar > .elementor-widget { width: auto; }
.dv-header__actions { --display: flex; display: flex; --flex-direction: row; flex-direction: row; align-items: center; --gap: 10px; gap: 10px; width: auto; }
@media (max-width: 1024px) { .dv-header .dv-btn--sm .elementor-button { padding: 11px 18px; } }
@media (max-width: 520px) { .dv-header__cta { display: none; } }

/* Industry card media - the image widget is the media frame. */
.dv-industry__media img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
	width: 100%;
	display: block;
}
.dv-industry__media, .dv-industry__media .elementor-widget-container, .dv-industry__media figure { overflow: hidden; line-height: 0; margin: 0; }
.dv-industry__body { --padding-block-start: var(--dv-space-3); --padding-block-end: 26px; --padding-inline-start: 20px; --padding-inline-end: 20px; --gap: 10px; gap: 10px; }

/* Service and value cards written as containers */
.dv-service.e-con { --padding-block-start: 34px; --padding-block-end: 28px; --padding-inline-start: 26px; --padding-inline-end: 26px; --gap: 14px; gap: 14px; }
.dv-value.e-con { --gap: 14px; gap: 14px; }
.dv-step.e-con { --gap: 6px; gap: 6px; }
.dv-metric.e-con { --gap: 10px; gap: 10px; --flex-direction: row; flex-direction: row; align-items: center; }
.dv-metric.e-con > .elementor-widget { width: auto; }

/* Review panel column */
.dv-reviewpanel.e-con {
	--padding-block-start: clamp(24px, 3vw, 36px);
	--padding-block-end: clamp(24px, 3vw, 36px);
	--padding-inline-start: clamp(24px, 3vw, 36px);
	--padding-inline-end: clamp(24px, 3vw, 36px);
}

/* Impact strip sits tighter than a full section. */
.dv-impact { --padding-block-start: clamp(34px, 3.4vw, 52px); --padding-block-end: clamp(34px, 3.4vw, 52px); }

/* Final CTA */
.dv-finalcta { --padding-block-start: clamp(56px, 6vw, 88px); --padding-block-end: clamp(56px, 6vw, 88px); --padding-inline-start: var(--dv-gutter); --padding-inline-end: var(--dv-gutter); }

/* Footer */
.dv-footer { --padding-block-start: clamp(48px, 5vw, 72px); --padding-block-end: 0; --padding-inline-start: var(--dv-gutter); --padding-inline-end: var(--dv-gutter); }
.dv-footergrid { grid-template-columns: 1.6fr 1fr 1fr 1fr 1fr; --gap: var(--dv-space-4); gap: var(--dv-space-4); align-items: start; }
@media (max-width: 1024px) { .dv-footergrid { grid-template-columns: repeat(3, minmax(0, 1fr)); --gap: var(--dv-space-5) var(--dv-space-4); gap: var(--dv-space-5) var(--dv-space-4); } }
@media (max-width: 600px) { .dv-footergrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.dv-footer__bar {
	grid-template-columns: minmax(0, 1fr) auto;
	--gap: var(--dv-space-2);
	gap: var(--dv-space-2);
	align-items: center;
	margin-top: clamp(40px, 5vw, 64px);
	--padding-block-start: 22px;
	--padding-block-end: 26px;
}
.dv-footer__bar p { margin: 0; font-size: .75rem; color: rgba(255, 255, 255, .45); }
@media (max-width: 767px) { .dv-footer__bar { grid-template-columns: 1fr; justify-items: start; } }

/* Inner pages reuse the section shell with a shorter header band. */
.dv-pagehead { --padding-block-start: calc(var(--dv-header-h) + clamp(40px, 6vw, 80px)); --padding-block-end: clamp(40px, 5vw, 72px); }

/* Elementor sometimes leaves a stray link underline inside cards. */
.dv-card a { text-decoration: none; }
/* Arrow appended to Elementor button widgets, so no icon library is loaded. */
.dv-arrow-after .elementor-button-text::after,
.dv-arrow-after .elementor-button-content-wrapper::after {
	content: "\2192";
	display: inline-block;
	margin-left: 8px;
	transition: transform .28s var(--dv-ease);
}
.dv-arrow-after .elementor-button-content-wrapper::after { content: none; }
.dv-arrow-after .elementor-button:hover .elementor-button-text::after,
.dv-arrow-after .elementor-button:focus-visible .elementor-button-text::after { transform: translateX(4px); }

/* Footer social row - inline SVG, no icon font. */
.dv-social { display: flex; gap: 10px; flex-wrap: wrap; }
.dv-social a {
	width: 36px; height: 36px;
	border-radius: var(--dv-r-pill);
	display: inline-flex; align-items: center; justify-content: center;
	background: rgba(255, 255, 255, .07);
	border: 1px solid var(--dv-hairline-dark);
	color: rgba(255, 255, 255, .8);
	transition: background-color .25s var(--dv-ease), border-color .25s var(--dv-ease), color .25s var(--dv-ease);
}
.dv-social a:hover, .dv-social a:focus-visible {
	background: var(--dv-violet);
	border-color: var(--dv-violet);
	color: #fff;
}
.dv-social svg { width: 16px; height: 16px; fill: currentColor; }
/* -----------------------------------------------------------------
   17. BOXED CONTAINERS
   -----------------------------------------------------------------
   A boxed Elementor container is two elements: the outer .e-con carries
   the full-bleed background and the inline padding, and a child
   .e-con-inner carries the layout and the max-width. Anything to do with
   arrangement therefore has to be addressed to the inner element.
   ----------------------------------------------------------------- */
.dv-section > .e-con-inner,
.dv-hero > .e-con-inner,
.dv-finalcta > .e-con-inner,
.dv-footer > .e-con-inner {
	display: flex;
	flex-direction: column;
	gap: 0;
	width: 100%;
	max-width: var(--dv-max);
	margin-inline: auto;
}
.dv-header .dv-headerbar > .e-con-inner {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: var(--dv-space-3);
	width: 100%;
	max-width: var(--dv-max);
	margin-inline: auto;
}
.dv-header .dv-headerbar > .e-con-inner > .elementor-element { width: auto; }

/* Full-width containers arrange themselves, so only the stacks that
   Elementor leaves at zero gap need help. */
.dv-hero__inner, .dv-hero__copy { display: flex; flex-direction: column; }
.dv-footer__brand { gap: 18px; }

/* Vertical rhythm inside heading groups, where the container gap is 0. */
.dv-eyebrow { margin-bottom: 14px; }
.dv-hero .dv-eyebrow { margin-bottom: 18px; }
.dv-impact > .e-con-inner > .dv-eyebrow { margin-bottom: 26px; }
.dv-lead { margin-top: 18px; }
.dv-sechead__aside { align-self: end; }

/* Elementor's own gap variables are row/column pairs; the layout rules in
   section 16 set `gap` directly, so nothing here relies on --gap. */
/* -----------------------------------------------------------------
   18. INNER PAGES
   ----------------------------------------------------------------- */
.dv-h1--page .elementor-heading-title { font-size: clamp(2.1rem, 1.3rem + 2.8vw, 3.4rem); }
.dv-pagehead .dv-lead p { max-width: 60ch; color: var(--dv-on-dark-muted); }

.dv-prose { max-width: 72ch; }
.dv-prose p { margin: 0 0 1.15em; line-height: 1.75; color: var(--dv-ink-muted); }
.dv-prose p:last-child { margin-bottom: 0; }
.dv-prose h2 {
	font-family: var(--dv-font-display);
	font-weight: 400;
	font-size: clamp(1.5rem, 1.2rem + 1.1vw, 2rem);
	line-height: 1.12;
	letter-spacing: -.01em;
	color: var(--dv-ink);
	margin: 2em 0 .6em;
}
.dv-prose h2:first-child { margin-top: 0; }
.dv-prose h3 {
	font-family: var(--dv-font-sans);
	font-size: 1rem;
	font-weight: 700;
	color: var(--dv-ink);
	margin: 1.6em 0 .4em;
}
.dv-prose ul { margin: 0 0 1.15em; padding-left: 1.15em; }
.dv-prose li { margin: 0 0 .45em; line-height: 1.7; color: var(--dv-ink-muted); }
.dv-prose strong { color: var(--dv-ink); font-weight: 700; }
.dv-prose a { color: var(--dv-violet); }

.dv-formpanel.e-con {
	--padding-block-start: clamp(24px, 3vw, 40px);
	--padding-block-end: clamp(24px, 3vw, 40px);
	--padding-inline-start: clamp(20px, 3vw, 40px);
	--padding-inline-end: clamp(20px, 3vw, 40px);
	background: var(--dv-white);
	border: 1px solid var(--dv-hairline-light);
	border-radius: var(--dv-r-card);
}

/* Two-column inner page: copy left, form right. */
.e-con.dv-splitpage { --display: grid; display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(32px, 5vw, 64px); align-items: start; }
@media (max-width: 960px) { .dv-splitpage { grid-template-columns: 1fr; } }

/* Work archive reuses the dark project grid. */
.dv-archive .dv-projects { margin-top: var(--dv-space-4); }
/* Case-study header meta */
.dv-projectmeta { margin-top: 22px; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.dv-projectmeta__subtitle { font-size: 1rem; font-weight: 500; color: var(--dv-on-dark-muted); margin: 0; }
.dv-projectmeta .dv-project__tags { margin: 0; }
.dv-casestudy__media img { width: 100%; height: auto; border-radius: var(--dv-r-card); display: block; }

/* Insights archive grid */
.dv-postgrid .elementor-posts { gap: var(--dv-space-3); }
.dv-postgrid .elementor-post { background: var(--dv-white); border: 1px solid var(--dv-hairline-light); border-radius: var(--dv-r-card); overflow: hidden; }
.dv-postgrid .elementor-post__text { padding: 0 20px 24px; }
.dv-postgrid .elementor-post__title { font-family: var(--dv-font-sans); font-size: 1.0625rem; font-weight: 700; line-height: 1.35; }
.dv-postgrid .elementor-post__title a { color: var(--dv-ink); text-decoration: none; }
.dv-postgrid .elementor-post__excerpt p { font-size: .8125rem; line-height: 1.65; color: var(--dv-ink-muted); }
.dv-postgrid .elementor-post__read-more { font-size: .8125rem; font-weight: 600; color: var(--dv-violet); text-decoration: none; }
.dv-postgrid .elementor-pagination .page-numbers { color: var(--dv-ink-muted); }
.dv-postgrid .elementor-pagination .page-numbers.current { color: var(--dv-violet); font-weight: 700; }

/* -----------------------------------------------------------------
   19. ASTRA'S BACK-TO-TOP BUTTON
   -----------------------------------------------------------------
   Kept (it earns its place on a page this long) but dressed to match the
   brand rather than the theme default. Turn it off entirely under
   Appearance > Customize > Layout > Scroll To Top.
   ----------------------------------------------------------------- */
#ast-scroll-top.ast-scroll-top-icon {
	background: var(--dv-violet);
	color: #fff;
	border-radius: var(--dv-r-pill);
	width: 44px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 10px 26px -14px rgba(109, 74, 255, 1);
	border: 1px solid rgba(255, 255, 255, .14);
	transition: background-color .25s var(--dv-ease), transform .2s var(--dv-ease);
}
#ast-scroll-top.ast-scroll-top-icon:hover { background: var(--dv-violet-deep); transform: translateY(-2px); }
#ast-scroll-top .ast-arrow-svg { width: 15px; height: 15px; fill: currentColor; }
/* -----------------------------------------------------------------
   20. CONTACT DETAILS
   ----------------------------------------------------------------- */
.dv-prose .dv-contactlabel {
	font-family: var(--dv-font-sans);
	font-size: var(--dv-t-eyebrow);
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--dv-ink-muted);
	margin: 0 0 6px;
}
.dv-prose .dv-contactline { margin: 0 0 2em; }
.dv-prose .dv-contactline a {
	font-family: var(--dv-font-sans);
	font-size: clamp(1.05rem, .95rem + .55vw, 1.375rem);
	font-weight: 700;
	letter-spacing: -.015em;
	color: var(--dv-violet);
	text-decoration: none;
	word-break: break-word;
}
.dv-prose .dv-contactline a:hover,
.dv-prose .dv-contactline a:focus-visible {
	color: var(--dv-violet-deep);
	text-decoration: underline;
	text-underline-offset: 4px;
}
.dv-footer__contact { margin: 2px 0 0; }
.dv-footer__contact a {
	font-size: .8125rem;
	color: rgba(255, 255, 255, .68);
	text-decoration: none;
	transition: color .2s var(--dv-ease);
	word-break: break-word;
}
.dv-footer__contact a:hover,
.dv-footer__contact a:focus-visible { color: #fff; }

/* -----------------------------------------------------------------
   21. INNER PAGE HEADER + SINGLE PROJECT CANVAS
   ----------------------------------------------------------------- */

/* The header is only transparent over the home page hero. Everywhere else it
   starts in its solid state, so the logo and navigation are legible from the
   first pixel rather than depending on what happens to sit behind them. */
body:not(.home) .dv-header {
	background: rgba(14, 14, 15, .92);
	border-bottom-color: var(--dv-hairline-dark);
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	body:not(.home) .dv-header {
		background: rgba(14, 14, 15, .72);
		-webkit-backdrop-filter: saturate(160%) blur(14px);
		backdrop-filter: saturate(160%) blur(14px);
	}
}

/* Safety net: if the Astra layout meta is ever cleared on a project, the
   theme's container would box the full-bleed sections back in. */
.single-dv_project .site-content > .ast-container { max-width: 100%; padding: 0; }
.single-dv_project #primary { padding: 0; margin: 0; width: 100%; max-width: none; }
.single-dv_project #main { margin: 0; }
.single-dv_project .entry-header,
.single-dv_project .ast-single-entry-banner,
.single-dv_project .post-navigation,
.single-dv_project .ast-single-related-posts-container { display: none; }
.single-dv_project .hentry { margin: 0; }
/* =================================================================
   22. REFINEMENT PASS
   -----------------------------------------------------------------
   Rules below deliberately follow the component sections above and
   override them. Grouped by the problem they solve.
   ================================================================= */

/* --- Vertical rhythm ---------------------------------------------
   Two sections on the same ground read as one continuous band, so a
   full section pad on each side of that seam doubles up and leaves a
   void. Collapse the seam; keep full spacing where the ground changes. */
:is(.dv-section--light, .dv-section--white) + :is(.dv-section--light, .dv-section--white),
.dv-section--dark + .dv-section--dark {
	--padding-block-start: calc(var(--dv-section-y) * .42);
}
/* The light stretch before the dark call to action was the worst offender. */
#review { --padding-block-end: calc(var(--dv-section-y) * .55); }
.dv-finalcta { --padding-block-start: clamp(48px, 5vw, 78px); --padding-block-end: clamp(48px, 5vw, 78px); }

/* Left column was centring against a tall form panel and floating in white. */
.dv-reviewgrid { align-items: start; }

/* --- Service cards ----------------------------------------------- */
.dv-service .dv-icon svg { width: 30px; height: 30px; }
.dv-service .dv-icon svg * { stroke-width: 1.6; }
.dv-service .dv-card__title .elementor-heading-title { font-size: 1.125rem; letter-spacing: -.012em; }
.dv-service .dv-card__text p { font-size: .875rem; }
.dv-service .dv-link { padding-top: 10px; }
.dv-service.dv-card:hover,
.dv-service.dv-card:focus-within {
	transform: translateY(-3px);
	border-color: rgba(139, 92, 255, .55);
	box-shadow: 0 20px 44px -28px rgba(75, 44, 217, .9);
}

/* --- Industry cards: all four align on the same lines ------------- */
.dv-industry.dv-card { height: 100%; }
.dv-industry__body { flex: 1 1 auto; }
.dv-industry .dv-card__text p { font-size: .84375rem; }
.dv-industry.dv-card:hover { transform: translateY(-3px); }

/* --- Featured work ------------------------------------------------ */
.dv-project:hover { transform: translateY(-3px); }
.dv-project:hover .dv-project__media img { transform: scale(1.03); }
.dv-project__title { font-size: 1.25rem; }
.dv-project__summary { font-size: .84375rem; }

/* --- Impact strip: fewer pixels, more presence -------------------- */
.dv-metric .dv-icon svg { width: 30px; height: 30px; }
.dv-metric__label p, .dv-metric__label { font-size: .875rem; max-width: 19ch; color: var(--dv-ink); font-weight: 500; }

/* --- Website review form ------------------------------------------
   WPForms reads these variables before any of its own defaults, so the
   brand colour is set at the source rather than fought for downstream. */
.dv-reviewpanel .wpforms-container,
.dv-formpanel .wpforms-container {
	--wpforms-button-background-color: #6D4AFF;
	--wpforms-button-background-color-alt: #6D4AFF;
	--wpforms-button-text-color: #FFFFFF;
	--wpforms-button-border-color: #6D4AFF;
	--wpforms-field-border-color: rgba(255, 255, 255, .22);
}
.dv-reviewpanel div.wpforms-container .wpforms-form button.wpforms-submit,
.dv-reviewpanel div.wpforms-container-full .wpforms-form button[type=submit] {
	background: var(--dv-violet);
	background-image: none;
	color: #fff;
	border: 0;
	border-radius: var(--dv-r-pill);
	padding: 14px 26px;
	font-size: .875rem;
}
.dv-reviewpanel div.wpforms-container .wpforms-form button.wpforms-submit:hover,
.dv-reviewpanel div.wpforms-container-full .wpforms-form button[type=submit]:hover {
	background: var(--dv-violet-electric);
	background-image: none;
	box-shadow: 0 12px 30px -12px rgba(139, 92, 255, 1);
}
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=text],
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=email],
.dv-reviewpanel div.wpforms-container .wpforms-form input[type=url] {
	min-height: 50px;
	border-color: rgba(255, 255, 255, .22);
}
.dv-reviewpanel div.wpforms-container .wpforms-form input:focus {
	border-color: var(--dv-violet-electric);
	box-shadow: 0 0 0 3px rgba(139, 92, 255, .28);
}
.dv-reviewpanel .wpforms-form .wpforms-field-label { font-size: .78125rem; }

/* --- Final call to action ----------------------------------------- */
.dv-finalcta::before {
	left: -6%;
	top: -34%;
	width: 42%;
	height: 190%;
	opacity: .42;
	filter: blur(26px);
	border-radius: 44% 56% 52% 48% / 46% 40% 60% 54%;
}
.dv-finalcta::after {
	background:
		radial-gradient(115% 85% at 6% 52%, rgba(75, 44, 217, .34) 0%, rgba(14, 14, 15, 0) 60%),
		linear-gradient(90deg, rgba(14, 14, 15, .58) 0%, rgba(14, 14, 15, .93) 38%, rgba(14, 14, 15, .97) 100%);
}

/* --- Footer -------------------------------------------------------- */
.dv-footer__col .elementor-heading-title { color: #fff; margin-bottom: 16px; }
.dv-footer__links li { margin-bottom: 10px; }
.dv-footer__bar p, .dv-footer__bar a { color: rgba(255, 255, 255, .55); }

/* --- Mobile: do not carry desktop whitespace down ------------------ */
@media (max-width: 767px) {
	:root { --dv-section-y: 52px; }
	.dv-impact { --padding-block-start: 34px; --padding-block-end: 34px; }
	.dv-finalcta { --padding-block-start: 48px; --padding-block-end: 48px; }
	.dv-sechead { margin-bottom: 26px; }
	.dv-footer { --padding-block-start: 44px; }
	.dv-project__media { aspect-ratio: 16 / 10; }
}
@media (max-width: 480px) {
	:root { --dv-section-y: 44px; }
}
/* Social column removed until real profile URLs exist; four columns now. */
.dv-footergrid { grid-template-columns: 1.7fr 1fr 1fr 1fr; }
@media (max-width: 1024px) { .dv-footergrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .dv-footergrid { grid-template-columns: 1fr; } }
