/*
Theme Name: Salient Child Theme
Description: Denoflore 2026 visual system for Salient
Theme URI:   https://themeforest.net/item/salient-responsive-multipurpose-theme/4363266
Author: ThemeNectar
Author URI:  https://themeforest.net/user/themenectar
Template: salient
Version: 1.0
*/

@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 400 800;
	font-display: swap;
	src: url("assets/fonts/bricolage-grotesque-variable-latin.woff2") format("woff2");
}

@font-face {
	font-family: "Atkinson Hyperlegible";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/atkinson-regular-latin.woff2") format("woff2");
}

@font-face {
	font-family: "Atkinson Hyperlegible";
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url("assets/fonts/atkinson-bold-latin.woff2") format("woff2");
}

@font-face {
	font-family: "Atkinson Hyperlegible";
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/atkinson-italic-latin.woff2") format("woff2");
}

@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("assets/fonts/ibm-plex-mono-regular-latin.woff2") format("woff2");
}

@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("assets/fonts/ibm-plex-mono-medium-latin.woff2") format("woff2");
}

@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url("assets/fonts/ibm-plex-mono-semibold-latin.woff2") format("woff2");
}

:root {
	--df-ink: #171a1c;
	--df-ink-deep: #0f1112;
	--df-ink-soft: #343a3d;
	--df-paper: #f7f4ec;
	--df-paper-deep: #ece7da;
	--df-white: #f1f2f2;
	--df-blue: #3480c2;
	--df-red: #d04a3c;
	--df-red-on-dark: #d95a4c;
	--df-yellow: #f5c513;
	--df-green: #28b897;
	--df-line: rgba(23, 26, 28, 0.16);
	--df-line-light: rgba(241, 242, 242, 0.2);
	--df-shadow: 0 32px 80px rgba(23, 26, 28, 0.12);
	--df-display: "Bricolage Grotesque", Arial, sans-serif;
	--df-body: "Atkinson Hyperlegible", Arial, sans-serif;
	--df-mono: "IBM Plex Mono", Consolas, monospace;
	--df-shell: min(1240px, calc(100vw - 48px));
	--df-section-space: clamp(84px, 10vw, 148px);
}

html {
	overflow-x: clip;
	scroll-behavior: smooth;
}

body.denoflore-2026 {
	background: var(--df-paper);
	color: var(--df-ink);
	font-family: var(--df-body);
	font-size: 18px;
	line-height: 1.62;
	overflow-x: clip;
	text-rendering: optimizeLegibility;
}

body.denoflore-2026 h1,
body.denoflore-2026 h2,
body.denoflore-2026 h3,
body.denoflore-2026 h4,
body.denoflore-2026 h5,
body.denoflore-2026 h6 {
	color: inherit;
	font-family: var(--df-display);
	font-weight: 650;
	letter-spacing: -0.035em;
}

body.denoflore-2026 p,
body.denoflore-2026 li,
body.denoflore-2026 input,
body.denoflore-2026 textarea,
body.denoflore-2026 button {
	font-family: var(--df-body);
}

body.denoflore-2026 a {
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

body.denoflore-2026 :focus-visible {
	outline: 3px solid var(--df-yellow);
	outline-offset: 4px;
}

body.denoflore-2026 #header-outer a:focus-visible,
body.denoflore-2026 #slide-out-widget-area a:focus-visible,
body.denoflore-2026 .slide_out_area_close:focus-visible {
	outline: 3px solid var(--df-yellow) !important;
	outline-offset: 4px !important;
}

body.denoflore-2026 .nectar-skip-to-content:focus {
	background: var(--df-paper) !important;
	color: var(--df-ink-deep) !important;
	transition: none !important;
}

body.denoflore-2026 .slide_out_area_close[aria-hidden="true"] {
	pointer-events: none;
}

body.denoflore-2026 > .slide_out_area_close__wrap .slide_out_area_close,
body.denoflore-2026 > .slide_out_area_close {
	height: 44px;
	right: 24px;
	top: 28px;
	width: 44px;
}

body.denoflore-2026 > .slide_out_area_close__wrap .slide_out_area_close .close-wrap,
body.denoflore-2026 > .slide_out_area_close .close-wrap {
	left: 50%;
	right: auto;
	top: 50%;
	transform: translate(-50%, -50%);
}

body.denoflore-2026 .container-wrap {
	background: var(--df-paper);
	padding-bottom: 0;
}

body.denoflore-2026.home .container-wrap {
	padding-top: 0;
}

body.denoflore-2026.home #page-header-wrap,
body.denoflore-2026.home .row .col.section-title {
	display: none;
}

body.denoflore-2026 .main-content > .row {
	margin-bottom: 0;
}

body.denoflore-2026 .wpb_content_element {
	margin-bottom: 0;
}

body.denoflore-2026 .df-section.wpb_row {
	margin-bottom: 0;
}

body.denoflore-2026 #header-outer {
	border-bottom: 1px solid var(--df-line);
	box-shadow: none;
	backdrop-filter: blur(18px);
	background-color: rgba(247, 244, 236, 0.94) !important;
}

body.denoflore-2026 #header-outer #top {
	max-width: 1320px;
}

body.denoflore-2026 #header-outer #logo img {
	width: auto;
}

body.denoflore-2026 #top nav > ul > li > a,
body.denoflore-2026 #header-outer .nectar-header-text-content {
	color: var(--df-ink) !important;
	font-family: var(--df-mono);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

body.denoflore-2026 #top nav > ul > li > a:hover,
body.denoflore-2026 #top nav > ul > li.current-menu-item > a {
	color: var(--df-blue) !important;
}

body.denoflore-2026 #header-outer #top nav > ul > li.menu-cta > a {
	background: var(--df-ink);
	border: 1px solid var(--df-ink);
	border-radius: 999px;
	color: var(--df-white) !important;
	margin-left: 12px;
	padding: 13px 20px !important;
}

body.denoflore-2026 #header-outer #top nav > ul > li.menu-cta > a .menu-title-text {
	color: var(--df-white) !important;
}

body.denoflore-2026 #header-outer #top nav > ul > li.menu-cta > a:hover {
	background: var(--df-blue);
	border-color: var(--df-blue);
	color: var(--df-white) !important;
}

body.denoflore-2026 #top .slide-out-widget-area-toggle a .lines:before,
body.denoflore-2026 #top .slide-out-widget-area-toggle a .lines:after,
body.denoflore-2026 #top .slide-out-widget-area-toggle a .lines-button:after {
	background-color: var(--df-ink) !important;
}

.df-shell {
	margin-inline: auto;
	width: var(--df-shell);
}

.df-kicker {
	align-items: center;
	color: var(--df-ink);
	display: flex;
	font-family: var(--df-mono);
	font-size: 12px;
	font-weight: 600;
	gap: 12px;
	letter-spacing: 0.08em;
	line-height: 1.4;
	margin: 0 0 24px;
	text-transform: uppercase;
}

.df-kicker:before {
	background: var(--df-kicker-accent, currentColor);
	content: "";
	height: 2px;
	width: 32px;
}

.df-kicker--blue {
	--df-kicker-accent: var(--df-blue);
}

.df-kicker--green {
	--df-kicker-accent: var(--df-green);
}

.df-kicker--yellow {
	--df-kicker-accent: var(--df-yellow);
}

.df-beholder .df-kicker {
	color: var(--df-white);
}

.df-contact .df-kicker {
	color: var(--df-ink-deep);
}

.df-section-title {
	font-size: clamp(42px, 5.4vw, 76px);
	line-height: 0.98;
	margin: 0;
	max-width: 880px;
}

.df-section-lead {
	color: var(--df-ink-soft);
	font-size: clamp(19px, 1.8vw, 23px);
	line-height: 1.55;
	margin: 26px 0 0;
	max-width: 720px;
}

.df-button-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 38px;
}

.df-button {
	align-items: center;
	border: 1px solid var(--df-ink);
	border-radius: 999px;
	display: inline-flex;
	font-family: var(--df-mono);
	font-size: 12px;
	font-weight: 600;
	gap: 13px;
	justify-content: center;
	letter-spacing: 0.05em;
	line-height: 1;
	min-height: 52px;
	padding: 0 22px;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.df-button:after {
	content: "↗";
	font-size: 16px;
	line-height: 1;
}

.df-button:hover {
	transform: translateY(-2px);
}

.df-button--primary {
	background: var(--df-ink);
	color: var(--df-white);
}

.df-button--primary:hover {
	background: var(--df-blue);
	border-color: var(--df-blue);
	color: var(--df-white);
}

.df-button--secondary {
	background: transparent;
	color: var(--df-ink);
}

.df-button--secondary:hover {
	background: var(--df-white);
	color: var(--df-ink);
}

.df-button--light {
	background: var(--df-white);
	border-color: var(--df-white);
	color: var(--df-ink);
}

.df-button--light:hover {
	background: var(--df-yellow);
	border-color: var(--df-yellow);
	color: var(--df-ink);
}

/* Hero */
.df-hero {
	background:
		linear-gradient(var(--df-line) 1px, transparent 1px),
		linear-gradient(90deg, var(--df-line) 1px, transparent 1px),
		var(--df-paper);
	background-size: 72px 72px;
	border-bottom: 1px solid var(--df-line);
	overflow: hidden;
	position: relative;
}

.df-hero:before {
	background: var(--df-paper);
	content: "";
	inset: 0;
	opacity: 0.72;
	position: absolute;
}

.df-hero .df-shell {
	align-items: center;
	display: grid;
	gap: clamp(48px, 5vw, 72px);
	grid-template-columns: minmax(0, 1.22fr) minmax(390px, 0.78fr);
	min-height: min(850px, calc(100vh - 90px));
	padding-block: clamp(84px, 8vw, 112px);
	position: relative;
	z-index: 1;
}

.df-signal-field {
	inset: 0;
	opacity: 0.72;
	pointer-events: none;
	position: absolute;
	width: 100%;
}

.df-hero h1 {
	font-size: clamp(62px, 5.2vw, 82px);
	line-height: 0.9;
	margin: 0;
	max-width: 760px;
}

.df-hero h1 > span {
	display: block;
}

.df-hero h1 .df-word-signal,
.df-hero h1 .df-word-matters {
	display: inline;
}

.df-hero h1 .df-word-signal {
	color: var(--df-blue);
}

.df-hero h1 .df-word-matters {
	color: var(--df-red);
}

.df-hero__copy > p {
	color: var(--df-ink-soft);
	font-size: clamp(20px, 1.75vw, 24px);
	line-height: 1.52;
	margin: 32px 0 0;
	max-width: 670px;
}

.df-hero__scope {
	border-top: 1px solid var(--df-line);
	font-family: var(--df-mono);
	font-size: 11px;
	letter-spacing: 0.04em;
	line-height: 1.7;
	margin-top: 44px;
	max-width: 670px;
	padding-top: 18px;
	text-transform: uppercase;
}

.df-signal-map {
	aspect-ratio: 1 / 1;
	background: rgba(241, 242, 242, 0.56);
	border: 1px solid var(--df-line);
	border-radius: 50%;
	box-shadow: var(--df-shadow);
	margin-inline: auto;
	max-width: 520px;
	position: relative;
	width: 100%;
}

.df-signal-map:before,
.df-signal-map:after {
	border: 1px solid var(--df-line);
	border-radius: inherit;
	content: "";
	inset: 14%;
	position: absolute;
}

.df-signal-map:after {
	inset: 29%;
}

.df-signal-axis {
	background: var(--df-line);
	left: 50%;
	position: absolute;
	top: 8%;
	transform-origin: 50% 100%;
	width: 1px;
}

.df-signal-axis--one {
	height: 84%;
}

.df-signal-axis--two {
	height: 84%;
	transform: rotate(90deg);
}

.df-signal-core {
	align-items: center;
	background: var(--df-ink);
	border-radius: 50%;
	color: var(--df-white);
	display: flex;
	flex-direction: column;
	height: 34%;
	justify-content: center;
	left: 33%;
	position: absolute;
	text-align: center;
	top: 33%;
	width: 34%;
	z-index: 2;
}

.df-signal-core strong {
	font-family: var(--df-display);
	font-size: clamp(18px, 2vw, 28px);
	font-weight: 650;
	line-height: 1;
}

.df-signal-core small {
	font-family: var(--df-mono);
	font-size: 9px;
	letter-spacing: 0.08em;
	margin-top: 9px;
	text-transform: uppercase;
}

.df-signal-mark {
	display: grid;
	gap: 3px;
	grid-template-columns: repeat(2, 11px);
	margin-bottom: 14px;
}

.df-signal-mark i {
	display: block;
	height: 11px;
}

.df-signal-mark i:nth-child(1) { background: var(--df-blue); }
.df-signal-mark i:nth-child(2) { background: var(--df-red); }
.df-signal-mark i:nth-child(3) { background: var(--df-yellow); }
.df-signal-mark i:nth-child(4) { background: var(--df-green); }

.df-signal-node {
	align-items: center;
	background: var(--df-paper);
	border: 1px solid var(--df-line);
	border-radius: 999px;
	display: flex;
	font-family: var(--df-mono);
	font-size: 10px;
	font-weight: 600;
	gap: 8px;
	letter-spacing: 0.05em;
	padding: 8px 12px;
	position: absolute;
	text-transform: uppercase;
	z-index: 3;
}

.df-signal-node:before {
	border-radius: 50%;
	content: "";
	height: 9px;
	width: 9px;
}

.df-signal-node--source { left: 2%; top: 19%; }
.df-signal-node--source:before { background: var(--df-blue); }
.df-signal-node--interpret { right: -4%; top: 22%; }
.df-signal-node--interpret:before { background: var(--df-yellow); }
.df-signal-node--decide { bottom: 17%; right: 3%; }
.df-signal-node--decide:before { background: var(--df-red); }
.df-signal-node--receipt { bottom: 13%; left: 1%; }
.df-signal-node--receipt:before { background: var(--df-green); }

.df-signal-pulse {
	animation: df-pulse 3.6s ease-in-out infinite;
	background: var(--df-blue);
	border-radius: 50%;
	height: 12px;
	left: calc(50% - 6px);
	position: absolute;
	top: calc(50% - 6px);
	width: 12px;
}

@keyframes df-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(52, 128, 194, 0.35); }
	50% { box-shadow: 0 0 0 42px rgba(52, 128, 194, 0); }
}

/* Service system */
.df-services {
	background: var(--df-paper);
	padding-block: var(--df-section-space);
}

.df-services__header {
	align-items: end;
	display: grid;
	gap: 48px;
	grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.75fr);
}

.df-services__header .df-section-lead {
	margin: 0;
}

.df-service-grid {
	display: grid;
	gap: 0;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-top: 72px;
}

.df-service-card {
	border-left: 1px solid var(--df-line);
	border-top: 1px solid var(--df-line);
	min-height: 310px;
	padding: 34px;
	position: relative;
	transition: background-color 180ms ease, transform 180ms ease;
}

.df-service-card:nth-child(3n),
.df-service-card:last-child {
	border-right: 1px solid var(--df-line);
}

.df-service-card:nth-last-child(-n + 3) {
	border-bottom: 1px solid var(--df-line);
}

.df-service-card:hover {
	background: var(--df-white);
	transform: translateY(-4px);
	z-index: 1;
}

.df-service-card__index {
	font-family: var(--df-mono);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.06em;
}

.df-service-card__dot {
	border-radius: 50%;
	height: 12px;
	position: absolute;
	right: 32px;
	top: 32px;
	width: 12px;
}

.df-service-card:nth-child(4n + 1) .df-service-card__dot { background: var(--df-blue); }
.df-service-card:nth-child(4n + 2) .df-service-card__dot { background: var(--df-red); }
.df-service-card:nth-child(4n + 3) .df-service-card__dot { background: var(--df-yellow); }
.df-service-card:nth-child(4n + 4) .df-service-card__dot { background: var(--df-green); }

.df-service-card h3 {
	font-size: clamp(27px, 2.4vw, 36px);
	line-height: 1.02;
	margin: 76px 0 16px;
}

.df-service-card p {
	color: var(--df-ink-soft);
	font-size: 17px;
	line-height: 1.55;
	margin: 0;
}

/* BEHOLDER */
.df-beholder {
	background: var(--df-ink);
	color: var(--df-white);
	overflow: hidden;
	padding-block: var(--df-section-space);
	position: relative;
}

.df-beholder:before {
	background:
		linear-gradient(var(--df-line-light) 1px, transparent 1px),
		linear-gradient(90deg, var(--df-line-light) 1px, transparent 1px);
	background-size: 64px 64px;
	content: "";
	inset: 0;
	opacity: 0.28;
	position: absolute;
}

.df-beholder .df-shell {
	position: relative;
}

.df-beholder__grid {
	align-items: center;
	display: grid;
	gap: clamp(52px, 8vw, 120px);
	grid-template-columns: minmax(0, 0.9fr) minmax(430px, 1.1fr);
}

.df-beholder .df-section-lead {
	color: rgba(241, 242, 242, 0.72);
}

.df-receipt {
	background: #0f1112;
	border: 1px solid var(--df-line-light);
	box-shadow: 18px 18px 0 rgba(52, 128, 194, 0.18);
	padding: clamp(26px, 4vw, 48px);
}

.df-receipt__top {
	align-items: center;
	border-bottom: 1px solid var(--df-line-light);
	display: flex;
	font-family: var(--df-mono);
	font-size: 10px;
	justify-content: space-between;
	letter-spacing: 0.07em;
	padding-bottom: 18px;
	text-transform: uppercase;
}

.df-receipt__live {
	align-items: center;
	display: inline-flex;
	gap: 8px;
}

.df-receipt__live:before {
	background: var(--df-green);
	border-radius: 50%;
	box-shadow: 0 0 0 5px rgba(40, 184, 151, 0.12);
	content: "";
	height: 8px;
	width: 8px;
}

.df-receipt__rows {
	list-style: none;
	margin: 0;
	padding: 10px 0 0;
}

.df-receipt__rows li {
	align-items: baseline;
	border-bottom: 1px solid rgba(241, 242, 242, 0.1);
	display: grid;
	font-size: 16px;
	gap: 20px;
	grid-template-columns: 112px 1fr;
	padding: 18px 0;
}

.df-receipt__rows code {
	font-family: var(--df-mono);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.df-receipt__rows li:nth-child(1) code { color: var(--df-blue); }
.df-receipt__rows li:nth-child(2) code { color: var(--df-yellow); }
.df-receipt__rows li:nth-child(3) code { color: var(--df-red-on-dark); }
.df-receipt__rows li:nth-child(4) code { color: var(--df-green); }
.df-receipt__rows li:nth-child(5) code { color: var(--df-white); }

.df-evidence-rule {
	background: rgba(241, 242, 242, 0.06);
	border-left: 3px solid var(--df-yellow);
	font-size: 15px;
	line-height: 1.55;
	margin-top: 28px;
	padding: 18px 20px;
}

.df-evidence-flow {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat(5, 1fr);
	margin-top: 72px;
}

.df-evidence-flow span {
	border-top: 1px solid var(--df-line-light);
	font-family: var(--df-mono);
	font-size: 10px;
	letter-spacing: 0.06em;
	padding-top: 14px;
	text-transform: uppercase;
}

/* Human judgement */
.df-judgement {
	background: var(--df-white);
	padding-block: var(--df-section-space);
}

.df-judgement__grid {
	align-items: start;
	display: grid;
	gap: clamp(52px, 9vw, 136px);
	grid-template-columns: minmax(0, 1fr) minmax(360px, 0.74fr);
}

.df-judgement__statement {
	font-family: var(--df-display);
	font-size: clamp(46px, 6.2vw, 88px);
	font-weight: 620;
	letter-spacing: -0.045em;
	line-height: 0.96;
	margin: 0;
}

.df-judgement__statement em {
	color: var(--df-blue);
	font-style: normal;
}

.df-judgement__copy > p {
	color: var(--df-ink-soft);
	font-size: 20px;
	margin: 0;
}

.df-judgement__list {
	list-style: none;
	margin: 38px 0 0;
	padding: 0;
}

.df-judgement__list li {
	align-items: start;
	border-top: 1px solid var(--df-line);
	display: grid;
	gap: 20px;
	grid-template-columns: 28px 1fr;
	padding: 18px 0;
}

.df-judgement__list li:before {
	color: var(--df-green);
	content: "●";
	font-family: var(--df-mono);
	font-size: 13px;
}

.df-principles {
	display: grid;
	gap: 1px;
	grid-template-columns: repeat(3, 1fr);
	margin-top: 82px;
}

.df-principle {
	background: var(--df-paper);
	min-height: 170px;
	padding: 28px;
}

.df-principle strong {
	display: block;
	font-family: var(--df-display);
	font-size: 28px;
	letter-spacing: -0.03em;
}

.df-principle span {
	color: var(--df-ink-soft);
	display: block;
	font-size: 16px;
	line-height: 1.5;
	margin-top: 12px;
}

/* Method */
.df-method {
	background: var(--df-paper-deep);
	padding-block: var(--df-section-space);
}

.df-method__steps {
	display: grid;
	gap: 24px;
	grid-template-columns: repeat(3, 1fr);
	margin-top: 72px;
}

.df-method-step {
	background: var(--df-paper);
	border: 1px solid var(--df-line);
	min-height: 390px;
	padding: 34px;
	position: relative;
}

.df-method-step__number {
	color: rgba(23, 26, 28, 0.5);
	font-family: var(--df-display);
	font-size: 96px;
	font-weight: 700;
	line-height: 0.8;
}

.df-method-step h3 {
	font-size: 38px;
	line-height: 1;
	margin: 90px 0 16px;
}

.df-method-step p {
	color: var(--df-ink-soft);
	font-size: 17px;
	margin: 0;
}

.df-method-step:nth-child(1) { border-top: 5px solid var(--df-blue); }
.df-method-step:nth-child(2) { border-top: 5px solid var(--df-red); }
.df-method-step:nth-child(3) { border-top: 5px solid var(--df-green); }

/* Deliverables */
.df-deliverables {
	background: var(--df-paper);
	padding-block: var(--df-section-space);
}

.df-deliverables__grid {
	display: grid;
	gap: 44px;
	grid-template-columns: minmax(300px, 0.75fr) minmax(0, 1.25fr);
}

.df-deliverables__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.df-deliverables__list li {
	align-items: center;
	border-top: 1px solid var(--df-line);
	display: grid;
	font-family: var(--df-display);
	font-size: clamp(25px, 3vw, 40px);
	font-weight: 580;
	gap: 22px;
	grid-template-columns: 18px 1fr;
	letter-spacing: -0.025em;
	line-height: 1.1;
	padding: 25px 0;
}

.df-deliverables__list li:last-child {
	border-bottom: 1px solid var(--df-line);
}

.df-deliverables__list li:before {
	background: var(--df-green);
	border-radius: 50%;
	content: "";
	height: 10px;
	width: 10px;
}

/* Contact */
.df-contact {
	background: var(--df-blue);
	color: var(--df-white);
	padding-block: clamp(88px, 12vw, 164px);
	position: relative;
}

.df-contact:after {
	background-image: url("assets/images/denoflore-logo-white@2x.png");
	background-position: right bottom;
	background-repeat: no-repeat;
	background-size: contain;
	bottom: 34px;
	content: "";
	height: 70px;
	opacity: 0.14;
	position: absolute;
	right: 4vw;
	width: 390px;
}

.df-contact h2 {
	font-size: clamp(62px, 9vw, 132px);
	line-height: 0.86;
	margin: 0;
	max-width: 980px;
}

.df-contact p {
	font-size: clamp(19px, 2vw, 25px);
	line-height: 1.5;
	margin: 32px 0 0;
	max-width: 660px;
}

.df-contact .df-button-row {
	position: relative;
	z-index: 1;
}

.df-contact-form {
	background: rgba(241, 242, 242, 0.96);
	border: 1px solid rgba(241, 242, 242, 0.5);
	border-radius: 18px;
	box-shadow: 0 28px 70px rgba(15, 17, 18, 0.18);
	color: var(--df-ink);
	margin-top: 44px;
	max-width: 760px;
	padding: clamp(24px, 4vw, 42px);
	position: relative;
	z-index: 2;
}

.df-contact-form label {
	color: var(--df-ink);
	font-family: var(--df-mono);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.df-contact-form input,
.df-contact-form textarea {
	background: var(--df-white) !important;
	border: 1px solid var(--df-line) !important;
	border-radius: 8px !important;
	color: var(--df-ink) !important;
}

.df-contact-form button.ff-btn-submit {
	background: var(--df-ink) !important;
	border: 1px solid var(--df-ink) !important;
	border-radius: 999px !important;
	color: var(--df-white) !important;
	font-family: var(--df-mono) !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	letter-spacing: 0.05em;
	min-height: 52px;
	padding-inline: 24px !important;
	text-transform: uppercase;
}

body.denoflore-2026 #footer-outer #copyright {
	background: var(--df-ink) !important;
	border-top: 1px solid var(--df-line-light);
	color: rgba(241, 242, 242, 0.7);
	font-family: var(--df-mono);
	font-size: 11px;
	letter-spacing: 0.04em;
}

body.denoflore-2026 #footer-outer #copyright a {
	color: var(--df-white);
}

.df-screen-reader {
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

@media (max-width: 1100px) {
	:root {
		--df-shell: min(100% - 40px, 960px);
	}

	.df-hero .df-shell,
	.df-services__header,
	.df-beholder__grid,
	.df-judgement__grid,
	.df-deliverables__grid {
		grid-template-columns: 1fr;
	}

	.df-hero .df-shell {
		min-height: auto;
	}

	.df-hero__visual {
		max-width: 560px;
		width: 100%;
	}

	.df-services__header .df-section-lead {
		margin-top: 0;
	}

	.df-beholder__grid {
		align-items: stretch;
	}

	.df-judgement__copy {
		max-width: 720px;
	}
}

@media (max-width: 900px) {
	.df-service-grid,
	.df-method__steps {
		grid-template-columns: 1fr 1fr;
	}

	.df-service-card:nth-child(n) {
		border: 1px solid var(--df-line);
	}

	.df-service-card:nth-child(even) {
		border-left: 0;
	}

	.df-service-card:nth-child(n + 3) {
		border-top: 0;
	}

	.df-method-step:last-child {
		grid-column: 1 / -1;
	}

	.df-evidence-flow {
		grid-template-columns: repeat(3, 1fr);
	}

	.df-principles {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 690px) {
	:root {
		--df-shell: calc(100vw - 30px);
		--df-section-space: 78px;
	}

	body.denoflore-2026 {
		font-size: 17px;
	}

	.df-hero {
		background-size: 46px 46px;
	}

	.df-hero .df-shell {
		gap: 60px;
		grid-template-columns: 1fr;
		padding-block: 78px;
	}

	.df-hero h1 {
		font-size: clamp(52px, 14.4vw, 56px);
	}

	.df-hero__copy > p {
		font-size: 19px;
	}

	.df-button {
		width: 100%;
	}

	.df-signal-map {
		max-width: 390px;
	}

	.df-signal-node {
		font-size: 8px;
		padding: 6px 9px;
	}

	.df-signal-node--interpret,
	.df-signal-node--decide {
		right: -2%;
	}

	.df-section-title {
		font-size: clamp(40px, 13vw, 58px);
	}

	.df-service-grid,
	.df-method__steps,
	.df-evidence-flow {
		grid-template-columns: 1fr;
	}

	.df-service-card:nth-child(n) {
		border: 1px solid var(--df-line);
		border-bottom: 0;
		min-height: 270px;
	}

	.df-service-card:last-child {
		border-bottom: 1px solid var(--df-line);
	}

	.df-beholder__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.df-receipt {
		box-shadow: 10px 10px 0 rgba(52, 128, 194, 0.18);
		padding: 22px;
	}

	.df-receipt__rows li {
		gap: 8px;
		grid-template-columns: 86px 1fr;
		font-size: 14px;
	}

	.df-principles {
		margin-top: 58px;
	}

	.df-method-step,
	.df-method-step:last-child {
		grid-column: auto;
		min-height: 330px;
	}

	.df-method-step h3 {
		margin-top: 66px;
	}

	.df-contact:after {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*:before,
	*:after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}


/* Headline asterisk: theme CSS collapses this span's line-height to 0, which
   empties the background-clip:text paint box and hides the gradient star. */
.display .brand-star {
	display: inline-block;
	/* Full-size line box so background-clip:text paints the whole glyph
	   (a shrunken box clips the ink), then transform-scale it up — transforms
	   don't affect layout and scale the painted glyph cleanly.
	   !important beats the page's inline 1.28em/line-height:0 rule. */
	font-size: 1em !important;
	line-height: .76 !important;
	vertical-align: baseline !important;
	transform: scale(1.7) translateY(16%);
}


/* Display headers: Golos Text 800 (overrides the inline page styles). */
.display,
.statement h2,
.tools h2,
.contact h2,
.section-title,
.outcome h3,
.service-card h3 {
	font-family: 'Golos Text', var(--display, sans-serif) !important;
	font-weight: 800 !important;
}

/* Hero compression: keep the bottom three-cell meta bar above the fold on desktop. */
@media (min-width: 961px) {
	.hero .display {
		font-size: clamp(4.4rem, 10.4vw, 11.6rem) !important;
	}
	.hero-bottom {
		margin-top: clamp(1rem, 2vw, 1.8rem) !important;
	}
	.hero-copy-wrap {
		padding-top: clamp(.6rem, 1.4vw, 1.6rem) !important;
	}
}


/* Sticky nav: the nav now lives outside the hero (front-page.php), sticks
   page-wide. !important beats the page's inline .nav {position:relative}. */
.nav {
	position: sticky !important;
	top: 0;
	z-index: 10000 !important; /* hero section carries z 9998; nav must always be on top */
}
/* Hero lost its nav grid row and the nav now takes ~5rem above it. */
.hero {
	grid-template-rows: 1fr auto !important;
	min-height: calc(100svh - 5.75rem) !important;
}


/* Nav compaction on scroll: bar height, colour and logo crossfade all run on
   the same 320ms curve so they read as one movement. */
.nav {
	transition: padding .32s cubic-bezier(.4,0,.2,1),
	            background-color .32s cubic-bezier(.4,0,.2,1),
	            border-color .32s cubic-bezier(.4,0,.2,1);
}
.brand {
	position: relative;
	display: inline-flex;
	align-items: center;
}
.brand .brand-logo {
	transition: width .32s cubic-bezier(.4,0,.2,1),
	            opacity .32s cubic-bezier(.4,0,.2,1);
}
/* The white logo stacks on the dark one so the swap is a crossfade, not a jump. */
.brand .brand-logo--light {
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	opacity: 0;
}
.nav .nav-links a,
.nav .menu-button {
	transition: color .32s cubic-bezier(.4,0,.2,1),
	            background-color .32s cubic-bezier(.4,0,.2,1),
	            border-color .32s cubic-bezier(.4,0,.2,1);
}

.nav.is-compact {
	padding-top: .62rem;
	padding-bottom: .62rem;
	background-color: rgba(24, 23, 23, .82);
	border-bottom-color: rgba(255, 255, 255, .18);
}
.nav.is-compact .brand-logo {
	width: clamp(8.6rem, 13vw, 12.6rem);
}
.nav.is-compact .brand-logo--dark { opacity: 0; }
.nav.is-compact .brand-logo--light { opacity: 1; }
.nav.is-compact .nav-links a:not(.button) { color: #fffefa; }
.nav.is-compact .menu-button { color: #fffefa; border-color: rgba(255,255,255,.5); }
.nav.is-compact .button-dark {
	background: #fffefa;
	color: #252424;
	border-color: #fffefa;
}

@media (prefers-reduced-motion: reduce) {
	.nav, .brand .brand-logo, .nav .nav-links a, .nav .menu-button { transition: none; }
}


/* Service cards: headings were pushed to different heights by an `auto` top
   margin (each card had different slack) and ran past the card edge.
   Fixed top offset = top aligned across cards; smaller type = fits inside. */
.service-card h3 {
	margin: 1.1rem 0 1rem !important;
	max-width: none !important;
	font-size: clamp(2.1rem, 3.1vw, 3.35rem) !important;
	line-height: .88 !important;
	/* Two-line box so the copy below each heading also lines up card to card. */
	min-height: calc(2 * .88em) !important;
}
.service-card p {
	margin-top: 0;
}
/* space-between distributed leftover space BETWEEN items, so each heading sat
   at a different height. Anchor everything to the top, push tags to the bottom. */
.service-card {
	justify-content: flex-start !important;
}
/* The tags live in an inner wrapper, not directly in the card, so the wrapper
   has to be the flex column that pushes them to the bottom. */
.service-card > div:not(.card-top) {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
}
.service-card .tags {
	margin-top: auto !important;
}


/* ---- Mobile fit ----
   The theme's phone clamps were still too large for the longest words
   (19.5vw = 84px at 430px wide; "DEPARTMENT" needs ~520px there), and the
   two-column grids never collapsed, so headings and copy ran off the right
   edge. Sized so the longest word in each block fits inside the padding. */
@media (max-width: 640px) {
	.statement h2 {
		font-size: clamp(2.9rem, 13.5vw, 5rem) !important;
		max-width: none !important;
	}
	.account-copy h2 {
		font-size: clamp(2.6rem, 12.5vw, 4.6rem) !important;
		max-width: none !important;
	}
	.tools h2 {
		font-size: clamp(2.9rem, 14vw, 5.2rem) !important;
		max-width: none !important;
	}
	.contact h2 {
		font-size: clamp(3rem, 14.5vw, 5.4rem) !important;
		max-width: none !important;
	}
	.section-title {
		font-size: clamp(2.8rem, 13.5vw, 4.8rem) !important;
		max-width: none !important;
	}
	.outcome h3 {
		font-size: clamp(1.9rem, 8.5vw, 3rem) !important;
		max-width: none !important;
	}

	/* Copy blocks were held at fixed rem widths wider than the screen. */
	.statement p,
	.account-copy p,
	.tools p,
	.section-intro,
	.hero-support,
	.contact p {
		max-width: 100% !important;
	}

	/* Two-column grids collapse to one on phones. */
	.statement-grid,
	.account-grid,
	.section-head,
	.outcome-grid,
	.fit-grid {
		grid-template-columns: 1fr !important;
	}

	/* Long uppercase words must never punch out of their box. */
	.statement h2,
	.account-copy h2,
	.tools h2,
	.contact h2,
	.section-title,
	.display {
		overflow-wrap: break-word !important;
	}
}


/* Card row: a settled card must never be chopped by the screen edge. */
.service-track {
	scroll-padding-inline: var(--pad) !important;
}
.service-card {
	scroll-snap-stop: always !important;
}
/* A scroll container clips BOTH axes once one axis scrolls, so cards were cut
   off at the top and bottom (hover lift, shadow, any bleed). Pad the block axis
   to create room to overflow into, then pull it back with an equal negative
   margin so the row's layout height is unchanged. */
.service-track {
	padding-block: 3.75rem !important;
	margin-block: -3.75rem !important;
}
