/* ==========================================================================
   Emergent Core — theme styles
   Mobile-first. Order: tokens → base → layout → header → buttons → hero →
   sections & cards → blog → single → pages → footer → motion.
   ========================================================================== */

@property --ec-angle {
	syntax: "<angle>";
	initial-value: 0deg;
	inherits: false;
}

:root {
	--ec-bg: #ffffff;
	--ec-surface: #f7f8fa;
	--ec-surface-2: #f1f3f6;
	--ec-line: #e7e9ef;
	--ec-line-strong: #d8dbe3;
	--ec-ink: #12141a;
	--ec-text: #3a404d;
	--ec-soft: #535a69;
	--ec-muted: #646b7a;
	--ec-faint: #9aa1ae;
	--ec-accent: #4d5bd8;
	--ec-accent-ink: #3a47bf;
	--ec-accent-2: #1e9e94;
	--ec-violet: #7c6cf2;
	--ec-mist: #eef0fe;
	--ec-mint: #e7f6f4;
	--ec-grad: linear-gradient(100deg, #4d5bd8 0%, #7c6cf2 48%, #1e9e94 100%);
	--ec-radius-sm: 10px;
	--ec-radius: 18px;
	--ec-radius-lg: 26px;
	--ec-shadow-sm: 0 1px 2px rgba(18, 20, 26, 0.04), 0 1px 1px rgba(18, 20, 26, 0.02);
	--ec-shadow: 0 1px 2px rgba(18, 20, 26, 0.04), 0 10px 28px -12px rgba(30, 36, 80, 0.12);
	--ec-shadow-lg: 0 2px 4px rgba(18, 20, 26, 0.03), 0 28px 56px -22px rgba(30, 36, 80, 0.2);
	--ec-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--ec-ease-io: cubic-bezier(0.65, 0, 0.35, 1);
	--ec-gutter: clamp(1.25rem, 4vw, 2.5rem);
	--ec-wrap: 1200px;
	--ec-read: 720px;
	--ec-section: clamp(4rem, 8.5vw, 7rem);
	--ec-header-h: 64px;
	--ec-sans: var(--wp--preset--font-family--sans, "Geist", ui-sans-serif, system-ui, sans-serif);
	--ec-mono: var(--wp--preset--font-family--mono, "Geist Mono", ui-monospace, monospace);
	--ec-serif: var(--wp--preset--font-family--serif, "Instrument Serif", Georgia, serif);
	--ec-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9.2M8.6 3.8 12.8 8l-4.2 4.2' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	--ec-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4 6.6 11.4 12.5 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

@media (min-width: 782px) {
	:root {
		--ec-header-h: 72px;
	}
}

/* ---------- Base ---------- */

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--ec-header-h) + 24px);
}

body {
	background: var(--ec-bg);
	color: var(--ec-text);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}

::selection {
	background: rgba(77, 91, 216, 0.16);
	color: var(--ec-ink);
}

body .wp-site-blocks > * {
	margin-block-start: 0;
}

:where(a, button, input, textarea, summary):focus-visible {
	outline: 2px solid var(--ec-accent);
	outline-offset: 3px;
	border-radius: 8px;
}

img {
	max-width: 100%;
	height: auto;
}

.ec h1,
.ec h2,
.ec h3,
.ec h4 {
	text-wrap: balance;
}

.ec p {
	text-wrap: pretty;
}

/* ---------- Layout ---------- */

.ec .ec-wrap {
	box-sizing: border-box;
	width: 100%;
	max-width: calc(var(--ec-wrap) + var(--ec-gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--ec-gutter);
}

.ec .ec-wrap--read {
	max-width: calc(var(--ec-read) + var(--ec-gutter) * 2);
}

.ec .ec-wrap--wide {
	max-width: calc(1040px + var(--ec-gutter) * 2);
}

.ec .ec-main {
	position: relative;
	margin: 0;
}

.ec .wp-block-post-content > .alignfull,
.ec .ec-main > .wp-block-group {
	margin-block: 0;
}

.ec .ec-section {
	position: relative;
	padding-block: var(--ec-section);
}

.ec .ec-section--tight {
	padding-block: clamp(1rem, 3vw, 2rem) var(--ec-section);
}

.ec .ec-section--line {
	border-top: 1px solid var(--ec-line);
}

/* Labels, headings, leads */

.ec .ec-label {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.5rem;
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-label::before {
	content: "";
	flex: none;
	width: 22px;
	height: 1px;
	background: var(--ec-grad);
	transform-origin: left center;
	transition: transform 1s var(--ec-ease) 0.25s;
}

.ec-js .ec .ec-label.ec-rv:not(.is-in)::before {
	transform: scaleX(0);
}

.ec .ec-h2 {
	max-width: 17ch;
	margin: 0;
	font-size: clamp(2.125rem, 1.3rem + 3.5vw, 3.75rem);
	font-weight: 600;
	line-height: 1.04;
	letter-spacing: -0.042em;
	color: var(--ec-ink);
}

.ec .ec-display {
	margin: 0;
	font-size: clamp(3rem, 1.4rem + 7vw, 6.25rem);
	font-weight: 600;
	line-height: 0.98;
	letter-spacing: -0.05em;
	color: var(--ec-ink);
}

.ec .ec-display--page {
	max-width: 15ch;
	font-size: clamp(2.6rem, 1.4rem + 5vw, 5rem);
	line-height: 1.02;
}

.ec .ec-display em,
.ec .ec-h2 em,
.ec .ec-kicker,
.ec .ec-accent {
	font-family: var(--ec-serif);
	font-style: italic;
	font-weight: 400;
	font-size: 1.06em;
	letter-spacing: -0.012em;
	word-spacing: 0.08em;
	background: var(--ec-grad);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
	padding-inline-end: 0.08em;
}

.ec .ec-lead {
	max-width: 36rem;
	margin: 1.5rem 0 0;
	font-size: clamp(1.0625rem, 0.98rem + 0.45vw, 1.25rem);
	line-height: 1.65;
	color: var(--ec-soft);
}

.ec .ec-section-head {
	display: grid;
	gap: 1.25rem;
	margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.ec .ec-section-head .ec-lead {
	margin: 0;
}

.ec .ec-section-head > .wp-block-group > .ec-label {
	margin-bottom: 1.25rem;
}

@media (min-width: 1024px) {
	.ec .ec-section-head {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
		align-items: end;
		gap: 4rem;
	}
}

.ec .ec-section-head--row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.5rem;
}

/* Chip */

.ec .ec-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0 0 1.75rem;
	padding: 0.45rem 0.85rem 0.45rem 0.7rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.72);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	box-shadow: var(--ec-shadow-sm);
	max-width: 100%;
	font-family: var(--ec-mono);
	font-size: clamp(0.5625rem, 0.3rem + 1.6vw, 0.6875rem);
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0.07em;
	white-space: nowrap;
	text-transform: uppercase;
	color: var(--ec-soft);
	transition: border-color 0.3s, box-shadow 0.4s var(--ec-ease), transform 0.4s var(--ec-ease);
}

.ec .ec-chip::before {
	content: "";
	flex: none;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--ec-accent-2);
	box-shadow: 0 0 0 0 rgba(30, 158, 148, 0.45);
	animation: ecPulse 2.4s var(--ec-ease) infinite;
}

.ec .ec-chip:hover {
	border-color: var(--ec-line-strong);
	box-shadow: var(--ec-shadow);
	transform: translateY(-1px);
}

/* Inline text links */

.ec .ec-main p a:not(.wp-element-button),
.ec .ec-main .wp-block-list li a {
	color: var(--ec-accent-ink);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.22em;
	text-decoration-color: rgba(77, 91, 216, 0.35);
	transition: color 0.25s, text-decoration-color 0.25s, text-underline-offset 0.3s var(--ec-ease);
}

.ec .ec-main p a:not(.wp-element-button):hover,
.ec .ec-main .wp-block-list li a:hover {
	color: var(--ec-ink);
	text-decoration-color: currentColor;
	text-underline-offset: 0.3em;
}

/* Arrow text link */

.ec .ec-link {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	font-weight: 500;
	color: var(--ec-ink);
	text-decoration: none;
}

.ec .ec-link::after {
	content: "";
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transition: transform 0.35s var(--ec-ease);
}

.ec .ec-link:hover::after {
	transform: translateX(4px);
}

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

.ec .ec-site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: rgba(255, 255, 255, 0);
	transition: background-color 0.4s var(--ec-ease), box-shadow 0.4s var(--ec-ease), -webkit-backdrop-filter 0.4s, backdrop-filter 0.4s;
}

.admin-bar .ec-site-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

@media (max-width: 600px) {
	.admin-bar .ec-site-header {
		top: 0;
	}
}

.ec-scrolled .ec .ec-site-header {
	background: rgba(255, 255, 255, 0.78);
	-webkit-backdrop-filter: saturate(1.6) blur(16px);
	backdrop-filter: saturate(1.6) blur(16px);
	box-shadow: 0 1px 0 var(--ec-line), 0 8px 24px -18px rgba(30, 36, 80, 0.25);
}

.ec .ec-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: var(--ec-header-h);
}

.ec .ec-header__end {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
}

.ec :where(.ec-header__end) > * {
	margin: 0;
}

/* Brand */

.ec .ec-brand {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	font-size: 1.0625rem;
	font-weight: 600;
	letter-spacing: -0.025em;
	line-height: 1;
	color: var(--ec-ink);
	text-decoration: none;
	white-space: nowrap;
}

.ec .ec-mark {
	flex: none;
	width: 28px;
	height: 28px;
	overflow: visible;
}

.ec .ec-mark__orbit {
	transform-origin: 16px 16px;
	animation: ecSpin 22s linear infinite;
}

.ec .ec-mark__core {
	transform-origin: 16px 16px;
	transition: transform 0.6s var(--ec-ease);
}

.ec .ec-mark__sat {
	animation: ecBlink 3.2s ease-in-out infinite;
}

.ec .ec-brand:hover .ec-mark__core {
	transform: scale(1.18);
}

.ec .ec-brand span {
	transition: letter-spacing 0.5s var(--ec-ease);
}

.ec .ec-brand:hover span {
	letter-spacing: -0.015em;
}

/* Navigation (desktop) */

.ec .ec-nav {
	font-size: 0.9375rem;
}

.ec .ec-nav .wp-block-navigation__container {
	gap: 0.125rem;
}

.ec .ec-nav .wp-block-navigation-item__content {
	position: relative;
	isolation: isolate;
	padding: 0.5rem 0.8rem;
	border-radius: 999px;
	color: var(--ec-soft);
	text-decoration: none;
	transition: color 0.25s;
}

.ec .ec-nav .wp-block-navigation-item__content::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	background: var(--ec-surface-2);
	opacity: 0;
	transform: scale(0.8);
	transition: opacity 0.25s, transform 0.4s var(--ec-ease);
}

.ec .ec-nav .wp-block-navigation-item__content:hover,
.ec .ec-nav .wp-block-navigation-item__content.is-current {
	color: var(--ec-ink);
}

.ec .ec-nav .wp-block-navigation-item__content:hover::before,
.ec .ec-nav .wp-block-navigation-item__content.is-current::before {
	opacity: 1;
	transform: scale(1);
}

.ec .ec-header__cta {
	display: none;
}

@media (min-width: 782px) {
	.ec .ec-header__cta {
		display: flex;
	}

	.ec .ec-nav .ec-nav-contact {
		display: none;
	}
}

/* Navigation (mobile overlay) */

.ec .ec-nav .wp-block-navigation__responsive-container-open {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid var(--ec-line);
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.75);
	color: var(--ec-ink);
	cursor: pointer;
	transition: border-color 0.3s, transform 0.3s var(--ec-ease), box-shadow 0.3s;
}

.ec .ec-nav .wp-block-navigation__responsive-container-open:hover {
	border-color: var(--ec-line-strong);
	box-shadow: var(--ec-shadow);
	transform: scale(1.04);
}

.ec .ec-nav .wp-block-navigation__responsive-container-open:active {
	transform: scale(0.96);
}

@media (min-width: 600px) {
	.ec .ec-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: none;
	}
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: 0.75rem var(--ec-gutter) 2rem;
	background: rgba(255, 255, 255, 0.96);
	-webkit-backdrop-filter: blur(18px);
	backdrop-filter: blur(18px);
	color: var(--ec-ink);
	animation: ecOverlayIn 0.45s var(--ec-ease) both;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	top: 0.75rem;
	right: var(--ec-gutter);
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border: 1px solid var(--ec-line);
	border-radius: 12px;
	background: #fff;
	transition: border-color 0.3s;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close svg {
	transition: transform 0.45s var(--ec-ease);
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close:hover svg {
	transform: rotate(90deg);
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.ec-nav-contact {
	margin-top: 1.75rem;
	border-bottom: 0;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .ec-nav-contact .wp-block-navigation-item__content {
	justify-content: center;
	gap: 0.6rem;
	padding: 1.05rem 1.5rem;
	border-radius: 999px;
	background: var(--ec-ink);
	box-shadow: 0 14px 30px -14px rgba(77, 91, 216, 0.7);
	font-size: 1.125rem;
	font-weight: 500;
	letter-spacing: -0.01em;
	color: #fff;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .ec-nav-contact .wp-block-navigation-item__content::after {
	width: 16px;
	height: 16px;
	background: #fff;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: 4.75rem;
	align-items: stretch;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
	gap: 0;
	align-items: stretch;
	width: 100%;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	width: 100%;
	border-bottom: 1px solid var(--ec-line);
	animation: ecMenuItem 0.7s var(--ec-ease) both;
}

.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(1) { animation-delay: 0.06s; }
.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(2) { animation-delay: 0.11s; }
.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(3) { animation-delay: 0.16s; }
.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(4) { animation-delay: 0.21s; }
.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(5) { animation-delay: 0.26s; }
.ec .ec-nav .is-menu-open .wp-block-navigation-item:nth-child(6) { animation-delay: 0.31s; }

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: flex;
	box-sizing: border-box;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 1rem 0.25rem;
	border-radius: 0;
	font-size: 1.875rem;
	font-weight: 600;
	letter-spacing: -0.035em;
	color: var(--ec-ink);
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::before {
	display: none;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after {
	content: "";
	width: 20px;
	height: 20px;
	background: var(--ec-faint);
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transition: transform 0.35s var(--ec-ease), background-color 0.3s;
}

.ec .ec-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover::after {
	background: var(--ec-accent);
	transform: translateX(4px);
}

/* ---------- Buttons ---------- */

.ec .wp-block-buttons {
	gap: 0.75rem;
}

.ec .wp-block-button__link.wp-element-button {
	position: relative;
	isolation: isolate;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55rem;
	overflow: hidden;
	padding: 0.875rem 1.25rem 0.875rem 1.4rem;
	border: 1px solid var(--ec-ink);
	border-radius: 999px;
	background: var(--ec-ink);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 1px 2px rgba(18, 20, 26, 0.2), 0 10px 24px -12px rgba(77, 91, 216, 0.55);
	font-family: var(--ec-sans);
	font-size: 0.9375rem;
	font-weight: 500;
	line-height: 1.2;
	letter-spacing: -0.006em;
	color: #fff;
	text-decoration: none;
	white-space: nowrap;
	transition: transform 0.4s var(--ec-ease), box-shadow 0.4s var(--ec-ease), background-color 0.3s, border-color 0.3s, color 0.3s;
}

.ec .wp-block-button__link.wp-element-button::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(110deg, transparent 25%, rgba(255, 255, 255, 0.24) 50%, transparent 75%);
	transform: translateX(-120%);
	transition: transform 0.9s var(--ec-ease);
}

.ec .wp-block-button__link.wp-element-button::after {
	content: "";
	flex: none;
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transition: transform 0.4s var(--ec-ease);
}

.ec .wp-block-button__link.wp-element-button:hover {
	transform: translateY(-2px);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 2px 4px rgba(18, 20, 26, 0.16), 0 18px 34px -14px rgba(77, 91, 216, 0.7);
	color: #fff;
}

.ec .wp-block-button__link.wp-element-button:hover::before {
	transform: translateX(120%);
}

.ec .wp-block-button__link.wp-element-button:hover::after {
	transform: translateX(3px);
}

.ec .wp-block-button__link.wp-element-button:active {
	transform: translateY(0) scale(0.98);
	transition-duration: 0.12s;
}

.ec .wp-block-button.is-style-outline > .wp-block-button__link.wp-element-button {
	padding: 0.875rem 1.25rem 0.875rem 1.4rem;
	border: 1px solid var(--ec-line-strong);
	background: rgba(255, 255, 255, 0.8);
	box-shadow: var(--ec-shadow-sm);
	color: var(--ec-ink);
}

.ec .wp-block-button.is-style-outline > .wp-block-button__link.wp-element-button::before {
	background: linear-gradient(110deg, transparent 25%, rgba(77, 91, 216, 0.08) 50%, transparent 75%);
}

.ec .wp-block-button.is-style-outline > .wp-block-button__link.wp-element-button:hover {
	border-color: #c4c8d3;
	background: #fff;
	box-shadow: var(--ec-shadow);
	color: var(--ec-ink);
}

.ec .ec-btn-sm > .wp-block-button__link.wp-element-button {
	padding: 0.6rem 0.95rem 0.6rem 1.1rem;
	font-size: 0.875rem;
}

.ec .ec-actions {
	margin-top: 2.25rem;
}

/* ---------- Ambient backgrounds ---------- */

.ec .ec-bg,
.ec .ec-hero__bg,
.ec .ec-page-hero__bg,
.ec .ec-post-hero__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
}

.ec .ec-grid {
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(to right, rgba(24, 28, 48, 0.055) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(24, 28, 48, 0.055) 1px, transparent 1px);
	background-size: 56px 56px;
	background-position: center top;
	-webkit-mask-image: radial-gradient(ellipse 75% 65% at 50% 25%, #000 25%, transparent 75%);
	mask-image: radial-gradient(ellipse 75% 65% at 50% 25%, #000 25%, transparent 75%);
}

.ec .ec-orb {
	position: absolute;
	border-radius: 50%;
	filter: blur(60px);
	opacity: 0.55;
	will-change: transform;
	animation: ecDrift 24s var(--ec-ease-io) infinite alternate;
}

.ec .ec-orb--a {
	top: -22%;
	right: -18%;
	width: min(70vw, 640px);
	aspect-ratio: 1;
	background: radial-gradient(circle at 35% 35%, #c9ceff 0%, rgba(201, 206, 255, 0) 68%);
}

.ec .ec-orb--b {
	bottom: -30%;
	left: -22%;
	width: min(80vw, 600px);
	aspect-ratio: 1;
	background: radial-gradient(circle at 50% 50%, #c8eee9 0%, rgba(200, 238, 233, 0) 68%);
	animation-duration: 30s;
	animation-delay: -8s;
}

.ec .ec-orb--c {
	top: 20%;
	left: 38%;
	width: min(50vw, 420px);
	aspect-ratio: 1;
	background: radial-gradient(circle at 50% 50%, #e3dcff 0%, rgba(227, 220, 255, 0) 70%);
	opacity: 0.5;
	animation-duration: 20s;
	animation-delay: -4s;
}

/* ---------- Hero ---------- */

.ec .ec-hero {
	position: relative;
	overflow: hidden;
	padding-block: clamp(2.75rem, 7vw, 5.5rem) clamp(4rem, 9vw, 7rem);
}

.ec .ec-hero__inner {
	position: relative;
	z-index: 1;
	display: grid;
	gap: clamp(3rem, 7vw, 4.5rem);
	align-items: center;
}

@media (min-width: 1024px) {
	.ec .ec-hero__inner {
		grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
		gap: clamp(3rem, 5vw, 5rem);
	}
}

.ec .ec-hero .ec-lead {
	max-width: 33rem;
	margin-top: 1.75rem;
}

@media (max-width: 1023px) {
	.ec .ec-hero__visual {
		max-width: 680px;
	}
}

.ec .ec-hero .ec-chip { animation: ecFadeUp 0.9s var(--ec-ease) 0.05s both; }
.ec .ec-hero .ec-lead { animation: ecFadeUp 1s var(--ec-ease) 0.55s both; }
.ec .ec-hero .ec-actions { animation: ecFadeUp 1s var(--ec-ease) 0.7s both; }
.ec .ec-hero__visual { animation: ecRise 1.3s var(--ec-ease) 0.45s both; }
.ec .ec-404 .ec-chip { animation: ecFadeUp 0.9s var(--ec-ease) 0.05s both; }
.ec .ec-404 .ec-lead { animation: ecFadeUp 1s var(--ec-ease) 0.5s both; }
.ec .ec-404 .ec-actions { animation: ecFadeUp 1s var(--ec-ease) 0.65s both; }

/* Agent console */

.ec .ec-hero__visual {
	position: relative;
	margin: 0;
	perspective: 1600px;
}

.ec .ec-hero__visual::before {
	content: "";
	position: absolute;
	inset: 12% 6% -6%;
	z-index: -1;
	border-radius: 40px;
	background: var(--ec-grad);
	filter: blur(48px);
	opacity: 0.16;
	animation: ecBreathe 7s ease-in-out infinite;
}

.ec .ec-console {
	position: relative;
	overflow: hidden;
	border: 1px solid var(--ec-line);
	border-radius: 20px;
	background: #fff;
	box-shadow: var(--ec-shadow-lg);
	font-size: 0.875rem;
	transition: transform 1.2s var(--ec-ease), box-shadow 0.8s var(--ec-ease);
}

@media (min-width: 1024px) and (hover: hover) {
	.ec .ec-console {
		transform: rotateY(-7deg) rotateX(3deg);
	}

	.ec .ec-hero__visual:hover .ec-console {
		transform: none;
		box-shadow: 0 2px 4px rgba(18, 20, 26, 0.03), 0 36px 70px -28px rgba(30, 36, 80, 0.28);
	}
}

.ec .ec-console__bar {
	display: flex;
	align-items: flex-end;
	gap: 0.75rem;
	height: 42px;
	padding: 0 0.85rem;
	border-bottom: 1px solid var(--ec-line);
	background: var(--ec-surface);
}

.ec .ec-console__dots {
	display: flex;
	gap: 6px;
	align-self: center;
}

.ec .ec-console__dots i {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #dfe2e8;
}

.ec .ec-tabs {
	display: flex;
	flex: 1;
	gap: 3px;
	min-width: 0;
	height: 26px;
}

.ec .ec-tab {
	position: relative;
	flex: 1 1 0;
	min-width: 4px;
	border-radius: 7px 7px 0 0;
	background: #eceef2;
	transition: background-color 0.35s, transform 0.45s var(--ec-ease);
	transform-origin: bottom;
}

.ec .ec-tab::after {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 2px;
	border-radius: 2px;
	background: var(--ec-grad);
	opacity: 0;
	transition: opacity 0.3s;
}

.ec .ec-tab.is-on {
	background: #fff;
	transform: scaleY(1.08);
	box-shadow: 0 -1px 0 var(--ec-line), 1px 0 0 var(--ec-line), -1px 0 0 var(--ec-line);
}

.ec .ec-tab.is-on::after {
	opacity: 1;
}

.ec .ec-console__count {
	align-self: center;
	padding: 0.2rem 0.5rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	background: #fff;
	font-family: var(--ec-mono);
	font-size: 0.625rem;
	letter-spacing: 0.06em;
	white-space: nowrap;
	color: var(--ec-muted);
}

.ec .ec-console__body {
	padding: 1rem 1rem 1.1rem;
}

@media (min-width: 480px) {
	.ec .ec-console__body {
		padding: 1.25rem 1.35rem 1.35rem;
	}
}

.ec .ec-console__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.ec .ec-console__run {
	overflow: hidden;
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.04em;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--ec-muted);
}

.ec .ec-status {
	display: inline-flex;
	flex: none;
	align-items: center;
	gap: 0.45rem;
	padding: 0.28rem 0.65rem 0.28rem 0.55rem;
	border-radius: 999px;
	background: var(--ec-mist);
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.04em;
	color: var(--ec-accent-ink);
	transition: background-color 0.4s, color 0.4s;
}

.ec .ec-status i {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
	animation: ecPulseDot 1.4s ease-in-out infinite;
}

.ec .ec-status b {
	font-weight: 500;
}

.ec .ec-console.is-complete .ec-status {
	background: var(--ec-mint);
	color: #12756d;
}

.ec .ec-console.is-complete .ec-status i {
	animation: none;
}

.ec .ec-steps {
	display: grid;
	gap: 0.35rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ec .ec-step {
	position: relative;
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr) auto;
	align-items: center;
	gap: 0.7rem;
	margin: 0;
	padding: 0.62rem 0.7rem;
	border: 1px solid transparent;
	border-radius: 12px;
	color: var(--ec-ink);
	transition: background-color 0.45s var(--ec-ease), border-color 0.45s, opacity 0.45s, transform 0.5s var(--ec-ease);
}

.ec .ec-step__icon {
	position: relative;
	display: grid;
	place-items: center;
	width: 20px;
	height: 20px;
}

.ec .ec-step__icon svg {
	width: 20px;
	height: 20px;
	overflow: visible;
}

.ec .ec-step__ring {
	fill: var(--ec-accent-2);
	stroke: var(--ec-accent-2);
	stroke-width: 1.4;
	transition: fill 0.35s, stroke 0.35s;
}

.ec .ec-step__check {
	fill: none;
	stroke: #fff;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 14;
	stroke-dashoffset: 0;
	transition: stroke-dashoffset 0.5s var(--ec-ease) 0.1s;
}

.ec .ec-step__text {
	overflow: hidden;
	font-size: 0.8125rem;
	line-height: 1.35;
	white-space: nowrap;
	text-overflow: ellipsis;
}

@media (min-width: 480px) {
	.ec .ec-step__text {
		font-size: 0.875rem;
	}
}

.ec .ec-step__app {
	padding: 0.18rem 0.5rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	background: #fff;
	font-family: var(--ec-mono);
	font-size: 0.625rem;
	letter-spacing: 0.04em;
	white-space: nowrap;
	color: var(--ec-muted);
	transition: color 0.35s, border-color 0.35s, background-color 0.35s;
}

/* live states (set by theme.js) */

.ec .ec-console.is-live .ec-step {
	opacity: 0.5;
}

.ec .ec-console.is-live .ec-step .ec-step__ring {
	fill: transparent;
	stroke: #cfd3dc;
	stroke-dasharray: 3 3;
}

.ec .ec-console.is-live .ec-step .ec-step__check {
	stroke-dashoffset: 14;
}

.ec .ec-console.is-live .ec-step.is-active {
	opacity: 1;
	border-color: #e2e5fb;
	background: linear-gradient(90deg, rgba(238, 240, 254, 0.9), rgba(238, 240, 254, 0.35));
	transform: translateX(2px);
}

.ec .ec-console.is-live .ec-step.is-active .ec-step__ring {
	stroke: var(--ec-accent);
	stroke-dasharray: 34 20;
	stroke-linecap: round;
	transform-origin: 10px 10px;
	animation: ecSpin 0.9s linear infinite;
}

.ec .ec-console.is-live .ec-step.is-active .ec-step__text {
	background: linear-gradient(90deg, var(--ec-ink) 0%, var(--ec-ink) 35%, var(--ec-accent) 50%, var(--ec-ink) 65%, var(--ec-ink) 100%);
	background-size: 250% 100%;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	animation: ecShimmer 1.6s linear infinite;
}

.ec .ec-console.is-live .ec-step.is-active .ec-step__app {
	border-color: #d6daf8;
	background: var(--ec-mist);
	color: var(--ec-accent-ink);
}

.ec .ec-console.is-live .ec-step.is-done {
	opacity: 1;
}

.ec .ec-console.is-live .ec-step.is-done .ec-step__ring {
	fill: var(--ec-accent-2);
	stroke: var(--ec-accent-2);
	stroke-dasharray: none;
}

.ec .ec-console.is-live .ec-step.is-done .ec-step__check {
	stroke-dashoffset: 0;
}

.ec .ec-console__foot {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	margin-top: 1.1rem;
	padding-top: 1rem;
	border-top: 1px dashed var(--ec-line);
}

.ec .ec-progress {
	position: relative;
	flex: 1;
	height: 4px;
	overflow: hidden;
	border-radius: 4px;
	background: #eef0f3;
}

.ec .ec-progress > span {
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: var(--ec-grad);
	transform-origin: left center;
	transform: scaleX(var(--ec-p, 1));
	transition: transform 0.7s var(--ec-ease);
}

.ec .ec-console__summary {
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.04em;
	white-space: nowrap;
	color: var(--ec-muted);
}

.ec .ec-console.is-complete .ec-console__summary {
	color: #12756d;
}

.ec .ec-cursor {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 3;
	width: 22px;
	height: 22px;
	opacity: 0;
	pointer-events: none;
	transform: translate(70%, 60%);
	transition: transform 0.9s var(--ec-ease), opacity 0.4s;
}

.ec .ec-console.is-live .ec-cursor {
	opacity: 1;
}

.ec .ec-cursor svg {
	width: 22px;
	height: 22px;
	filter: drop-shadow(0 2px 3px rgba(18, 20, 26, 0.25));
}

.ec .ec-cursor svg path {
	fill: var(--ec-ink);
	stroke: #fff;
	stroke-width: 1.4;
	stroke-linejoin: round;
}

.ec .ec-cursor::after {
	content: "";
	position: absolute;
	top: 2px;
	left: 2px;
	width: 26px;
	height: 26px;
	margin: -13px 0 0 -13px;
	border-radius: 50%;
	border: 1.5px solid var(--ec-accent);
	opacity: 0;
	transform: scale(0.2);
}

.ec .ec-cursor.is-click::after {
	animation: ecClick 0.6s var(--ec-ease) both;
}

/* floating annotations */

.ec .ec-float {
	position: absolute;
	z-index: 4;
	display: none;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0.8rem 0.5rem 0.6rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.86);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	box-shadow: var(--ec-shadow);
	font-size: 0.75rem;
	font-weight: 500;
	white-space: nowrap;
	color: var(--ec-ink);
	animation: ecBob 6s ease-in-out infinite;
}

.ec .ec-float i {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--ec-mint);
	position: relative;
}

.ec .ec-float i::after {
	content: "";
	position: absolute;
	inset: 3px;
	background: #12756d;
	-webkit-mask: var(--ec-check) center / contain no-repeat;
	mask: var(--ec-check) center / contain no-repeat;
}

.ec .ec-float--b i {
	background: var(--ec-mist);
}

.ec .ec-float--b i::after {
	background: var(--ec-accent);
}

@media (min-width: 640px) {
	.ec .ec-float {
		display: inline-flex;
	}

	.ec .ec-float--a {
		bottom: -18px;
		left: -14px;
	}

	.ec .ec-float--b {
		top: -17px;
		right: 22px;
		animation-delay: -3s;
	}
}

/* ---------- Software band (marquee) ---------- */

.ec .ec-band {
	position: relative;
	padding-block: 1.35rem;
	border-block: 1px solid var(--ec-line);
	background: linear-gradient(180deg, #fff, #fbfbfd);
}

.ec .ec-band__inner {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.ec .ec-band__label {
	flex: none;
	margin: 0;
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

@media (min-width: 900px) {
	.ec .ec-band__inner {
		flex-direction: row;
		align-items: center;
		gap: 2.5rem;
	}

	.ec .ec-band__label {
		max-width: 15rem;
		line-height: 1.6;
	}
}

.ec .ec-marquee {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.ec .ec-marquee__track {
	display: flex;
	width: max-content;
	animation: ecMarquee 46s linear infinite;
}

.ec .ec-marquee:hover .ec-marquee__track {
	animation-play-state: paused;
}

.ec .ec-marquee__set {
	display: flex;
	gap: 0.6rem;
	margin: 0;
	padding: 0.25rem 0.6rem 0.25rem 0;
	list-style: none;
}

.ec .ec-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	padding: 0.5rem 0.9rem 0.5rem 0.75rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	background: #fff;
	font-size: 0.875rem;
	white-space: nowrap;
	color: var(--ec-soft);
	transition: transform 0.4s var(--ec-ease), border-color 0.3s, color 0.3s, box-shadow 0.4s;
}

.ec .ec-pill:hover {
	border-color: #d4d8f5;
	box-shadow: var(--ec-shadow);
	color: var(--ec-ink);
	transform: translateY(-2px);
}

.ec .ec-pill i {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--ec-accent);
}

.ec .ec-pill:nth-child(3n + 2) i { background: var(--ec-accent-2); }
.ec .ec-pill:nth-child(3n) i { background: var(--ec-violet); }

/* ---------- Problem statement ---------- */

.ec .ec-statement {
	max-width: 26ch;
	margin: 0;
	font-size: clamp(1.75rem, 1.05rem + 3vw, 3.4rem);
	font-weight: 500;
	line-height: 1.16;
	letter-spacing: -0.035em;
	color: var(--ec-ink);
}

.ec .ec-scrub .ec-sw {
	opacity: 0.18;
	transition: opacity 0.4s ease;
}

.ec .ec-scrub .ec-sw.is-lit {
	opacity: 1;
}

.ec .ec-kicker {
	display: inline-block;
	margin: 1.25rem 0 0;
	font-size: clamp(3.25rem, 1.8rem + 7vw, 7.5rem);
	line-height: 1;
	letter-spacing: -0.03em;
}

/* ---------- Cards ---------- */

.ec .ec-cards {
	display: grid;
	gap: 1rem;
	margin-top: clamp(2.75rem, 6vw, 4.5rem);
}

.ec .ec-section-head + .ec-cards {
	margin-top: 0;
}

@media (min-width: 720px) {
	.ec .ec-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ec .ec-cards--3 > :last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

@media (min-width: 1024px) {
	.ec .ec-cards--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.25rem;
	}

	.ec .ec-cards--3 > :last-child:nth-child(odd) {
		grid-column: auto;
	}
}

.ec :where(.ec-cards) > * {
	margin: 0;
}

.ec .ec-card {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	margin: 0;
	padding: clamp(1.5rem, 3vw, 2rem);
	border: 1px solid var(--ec-line);
	border-radius: var(--ec-radius);
	background: #fff;
	box-shadow: var(--ec-shadow-sm);
	transition: transform 0.55s var(--ec-ease), box-shadow 0.55s var(--ec-ease), border-color 0.4s;
}

.ec .ec-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(380px circle at var(--mx, 50%) var(--my, 0%), rgba(77, 91, 216, 0.075), transparent 62%);
	opacity: 0;
	transition: opacity 0.45s;
}

@media (hover: hover) {
	.ec .ec-card:hover {
		border-color: #dcdff2;
		box-shadow: var(--ec-shadow-lg);
		transform: translateY(-4px);
	}

	.ec .ec-card:hover::before {
		opacity: 1;
	}
}

.ec :where(.ec-card) > * {
	margin-block: 0;
}

.ec .ec-card h3 {
	margin: 1.5rem 0 0.6rem;
	font-size: 1.25rem;
	letter-spacing: -0.022em;
	line-height: 1.25;
}

.ec .ec-card p {
	margin: 0;
	font-size: 1rem;
	line-height: 1.62;
	color: var(--ec-soft);
}

.ec .ec-card__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
}

.ec .ec-num {
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	color: var(--ec-faint);
	transition: color 0.3s;
}

.ec .ec-card:hover .ec-num {
	color: var(--ec-accent);
}

/* Glyphs (small animated icons) */

.ec .ec-glyph {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border: 1px solid #e3e6f4;
	border-radius: 15px;
	background: linear-gradient(140deg, #f2f3ff 0%, #ffffff 55%, #ebf8f6 100%);
	box-shadow: inset 0 1px 0 #fff, 0 6px 16px -10px rgba(77, 91, 216, 0.5);
	transition: transform 0.6s var(--ec-ease), box-shadow 0.5s;
}

.ec .ec-card:hover .ec-glyph {
	transform: translateY(-2px) rotate(-4deg);
	box-shadow: inset 0 1px 0 #fff, 0 12px 22px -12px rgba(77, 91, 216, 0.6);
}

.ec .ec-glyph svg {
	width: 30px;
	height: 30px;
	overflow: visible;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.ec .ec-glyph .g-line { stroke: var(--ec-ink); stroke-width: 1.5; }
.ec .ec-glyph .g-soft { stroke: #c3c8d6; stroke-width: 1.5; }
.ec .ec-glyph .g-acc { stroke: var(--ec-accent); stroke-width: 1.7; }
.ec .ec-glyph .g-teal { stroke: var(--ec-accent-2); stroke-width: 1.8; }
.ec .ec-glyph .g-fill-acc { fill: var(--ec-accent); stroke: none; }
.ec .ec-glyph .g-fill-teal { fill: var(--ec-accent-2); stroke: none; }
.ec .ec-glyph .g-fill-white { fill: #fff; }

.ec .ec-glyph * {
	transform-box: fill-box;
	transform-origin: center;
}

.ec-js .ec .ec-rv:not(.is-in) .ec-glyph * {
	animation-play-state: paused;
}

.ec .g-swivel { animation: ecSwivel 3.2s var(--ec-ease-io) infinite; }
.ec .g-tab1 { animation: ecTabPop 3.6s var(--ec-ease) infinite; }
.ec .g-tab2 { animation: ecTabPop 3.6s var(--ec-ease) 0.25s infinite; }
.ec .g-tab3 { animation: ecTabPop 3.6s var(--ec-ease) 0.5s infinite; }
.ec .ec-glyph .g-orbit {
	transform-box: view-box;
	transform-origin: 15px 15px;
	animation: ecSpin 9s linear infinite;
}
.ec .g-dash { stroke-dasharray: 3 4; animation: ecDash 2.4s linear infinite; }
.ec .ec-glyph .g-ring {
	stroke-dasharray: 63;
	stroke-dashoffset: 63;
	transform: rotate(-90deg);
	animation: ecRing 3.6s var(--ec-ease) infinite;
}
.ec .g-tick {
	stroke-dasharray: 14;
	stroke-dashoffset: 14;
	animation: ecTick 3.6s var(--ec-ease) infinite;
}
.ec .g-scan { animation: ecScan 3s var(--ec-ease-io) infinite; }
.ec .g-halo { animation: ecHalo 3s var(--ec-ease) infinite; }
.ec .g-cursor { animation: ecCursorHop 4s var(--ec-ease-io) infinite; }
.ec .g-blink { animation: ecBlink 4s ease-in-out infinite; }

/* ---------- Comparison ---------- */

.ec .ec-compare {
	display: grid;
	gap: 0.75rem;
	margin: 0;
}

.ec .ec-compare__head {
	display: none;
}

.ec .ec-compare__row {
	position: relative;
	display: grid;
	gap: 0.65rem;
	padding: 1.1rem 1.15rem;
	border: 1px solid var(--ec-line);
	border-radius: 16px;
	background: #fff;
	transition: background-color 0.35s, box-shadow 0.45s var(--ec-ease), transform 0.45s var(--ec-ease);
}

.ec .ec-compare__cell {
	display: grid;
	grid-template-columns: 22px minmax(0, 1fr);
	align-items: start;
	gap: 0.7rem;
	font-size: 1rem;
	line-height: 1.5;
}

.ec .ec-compare__cell::before {
	content: attr(data-label);
	grid-column: 1 / -1;
	font-family: var(--ec-mono);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-compare__cell--no {
	color: var(--ec-muted);
}

.ec .ec-compare__cell--yes {
	padding-top: 0.65rem;
	border-top: 1px dashed var(--ec-line);
	font-weight: 500;
	color: var(--ec-ink);
}

.ec .ec-compare__cell--yes::before {
	color: var(--ec-accent);
}

.ec .ec-compare svg {
	width: 22px;
	height: 22px;
	margin-top: 0.05rem;
	overflow: visible;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.ec .ec-compare .c-x circle { fill: var(--ec-surface-2); }
.ec .ec-compare .c-x path { stroke: var(--ec-faint); stroke-width: 1.6; }
.ec .ec-compare .c-ok circle { fill: var(--ec-mint); transition: transform 0.5s var(--ec-ease); transform-origin: center; transform-box: fill-box; }
.ec .ec-compare .c-ok path {
	stroke: #12756d;
	stroke-width: 1.9;
	stroke-dasharray: 14;
	stroke-dashoffset: 0;
	transition: stroke-dashoffset 0.7s var(--ec-ease) 0.35s;
}

.ec-js .ec .ec-compare__row.ec-rv:not(.is-in) .c-ok path {
	stroke-dashoffset: 14;
}

.ec .ec-compare__row:hover .c-ok circle {
	transform: scale(1.15);
}

@media (min-width: 820px) {
	.ec .ec-compare {
		position: relative;
		gap: 0;
		overflow: hidden;
		border: 1px solid var(--ec-line);
		border-radius: var(--ec-radius-lg);
		background: #fff;
		box-shadow: var(--ec-shadow);
	}

	.ec .ec-compare::before {
		content: "";
		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		width: 50%;
		background: linear-gradient(160deg, rgba(238, 240, 254, 0.75), rgba(231, 246, 244, 0.55));
		pointer-events: none;
	}

	.ec .ec-compare__head,
	.ec .ec-compare__row {
		position: relative;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 0;
		padding: 0;
		border: 0;
		border-radius: 0;
		background: transparent;
	}

	.ec .ec-compare__head span {
		padding: 1.4rem 2rem 1.1rem;
		font-family: var(--ec-mono);
		font-size: 0.6875rem;
		letter-spacing: 0.14em;
		text-transform: uppercase;
		color: var(--ec-muted);
	}

	.ec .ec-compare__head span + span {
		color: var(--ec-accent-ink);
	}

	.ec .ec-compare__row {
		border-top: 1px solid var(--ec-line);
	}

	.ec .ec-compare__row:hover {
		background: rgba(247, 248, 250, 0.7);
	}

	.ec .ec-compare__cell {
		padding: 1.3rem 2rem;
		font-size: 1.0625rem;
	}

	.ec .ec-compare__cell::before {
		display: none;
	}

	.ec .ec-compare__cell--yes {
		border-top: 0;
		padding-top: 1.3rem;
	}
}

/* ---------- Signals (who we want to meet) ---------- */

.ec .ec-signals {
	display: grid;
	gap: 1px;
	overflow: hidden;
	margin: 0 0 2.5rem;
	border: 1px solid var(--ec-line);
	border-radius: var(--ec-radius-lg);
	background: var(--ec-line);
}

@media (min-width: 720px) {
	.ec .ec-signals {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.ec :where(.ec-signals) > * {
	margin: 0;
}

.ec .ec-signal {
	position: relative;
	padding: clamp(1.5rem, 3.5vw, 2.25rem);
	padding-left: calc(clamp(1.5rem, 3.5vw, 2.25rem) + 44px);
	background: #fff;
	transition: background-color 0.4s;
}

.ec .ec-signal::before {
	content: "";
	position: absolute;
	top: clamp(1.5rem, 3.5vw, 2.25rem);
	left: clamp(1.5rem, 3.5vw, 2.25rem);
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--ec-grad);
	box-shadow: 0 6px 14px -6px rgba(77, 91, 216, 0.6);
	transition: transform 0.6s var(--ec-ease);
}

.ec .ec-signal::after {
	content: "";
	position: absolute;
	top: calc(clamp(1.5rem, 3.5vw, 2.25rem) + 7px);
	left: calc(clamp(1.5rem, 3.5vw, 2.25rem) + 7px);
	width: 14px;
	height: 14px;
	background: #fff;
	-webkit-mask: var(--ec-check) center / contain no-repeat;
	mask: var(--ec-check) center / contain no-repeat;
	transition: transform 0.6s var(--ec-ease);
}

.ec .ec-signal:hover {
	background: #fcfcfe;
}

.ec .ec-signal:hover::before {
	transform: scale(1.12) rotate(-8deg);
}

.ec .ec-signal:hover::after {
	transform: scale(1.1);
}

.ec .ec-signal h3 {
	margin: 0 0 0.45rem;
	font-size: 1.1875rem;
	line-height: 1.3;
	letter-spacing: -0.02em;
}

.ec .ec-signal p {
	margin: 0;
	font-size: 1rem;
	line-height: 1.62;
	color: var(--ec-soft);
}

/* ---------- Post cards ---------- */

.ec .ec-post-grid {
	display: grid;
	gap: 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 720px) {
	.ec .ec-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1080px) {
	.ec .ec-post-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 1.5rem;
	}
}

.ec .ec-post-grid > li {
	display: flex;
	margin: 0;
}

.ec .ec-post-card {
	position: relative;
	isolation: isolate;
	display: flex;
	flex: 1;
	flex-direction: column;
	margin: 0;
	padding: 0.65rem 0.65rem 1.5rem;
	border: 1px solid var(--ec-line);
	border-radius: 22px;
	background: #fff;
	box-shadow: var(--ec-shadow-sm);
	transition: transform 0.55s var(--ec-ease), box-shadow 0.55s var(--ec-ease), border-color 0.4s;
}

.ec .ec-post-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	border-radius: inherit;
	background: radial-gradient(360px circle at var(--mx, 50%) var(--my, 0%), rgba(77, 91, 216, 0.07), transparent 62%);
	opacity: 0;
	transition: opacity 0.45s;
}

@media (hover: hover) {
	.ec .ec-post-card:hover {
		border-color: #dcdff2;
		box-shadow: var(--ec-shadow-lg);
		transform: translateY(-4px);
	}

	.ec .ec-post-card:hover::before {
		opacity: 1;
	}
}

.ec .ec-post-card .wp-block-post-featured-image {
	position: relative;
	overflow: hidden;
	margin: 0;
	border-radius: 15px;
	background: var(--ec-surface);
	aspect-ratio: 16 / 10;
}

.ec .ec-post-card .wp-block-post-featured-image a,
.ec .ec-post-card .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ec .ec-post-card .wp-block-post-featured-image img {
	transition: transform 1.4s var(--ec-ease);
}

.ec .ec-post-card:hover .wp-block-post-featured-image img {
	transform: scale(1.045);
}

.ec .ec-post-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.25rem 0.85rem 0;
}

.ec :where(.ec-post-card__body) > * {
	margin: 0;
}

.ec .ec-post-card .wp-block-post-terms,
.ec .ec-post-terms {
	position: relative;
	z-index: 2;
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ec .ec-post-card .wp-block-post-terms a,
.ec .ec-post-terms a {
	color: var(--ec-accent-ink);
	text-decoration: none;
	transition: color 0.25s;
}

.ec .ec-post-card .wp-block-post-terms a:hover,
.ec .ec-post-terms a:hover {
	color: var(--ec-ink);
}

.ec .ec-post-card .wp-block-post-title {
	margin: 0.7rem 0 0.55rem;
	font-size: 1.25rem;
	font-weight: 600;
	line-height: 1.28;
	letter-spacing: -0.022em;
}

.ec .ec-post-card .wp-block-post-title a {
	color: var(--ec-ink);
	text-decoration: none;
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0% 1px;
	transition: background-size 0.6s var(--ec-ease);
}

.ec .ec-post-card:hover .wp-block-post-title a {
	background-size: 100% 1px;
}

.ec .ec-post-card .wp-block-post-title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: 22px;
}

.ec .ec-post-card .wp-block-post-excerpt {
	margin: 0;
	font-size: 0.96875rem;
	line-height: 1.6;
	color: var(--ec-soft);
}

.ec .ec-post-card .wp-block-post-excerpt__excerpt {
	display: -webkit-box;
	overflow: hidden;
	margin: 0;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}

.ec .ec-post-card .wp-block-post-excerpt__more-text {
	display: none;
}

.ec .ec-post-card .wp-block-post-date {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: auto;
	padding-top: 1.25rem;
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	letter-spacing: 0.04em;
	color: var(--ec-muted);
}

.ec .ec-post-card .wp-block-post-date::after {
	content: "";
	width: 16px;
	height: 16px;
	background: var(--ec-faint);
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transition: transform 0.4s var(--ec-ease), background-color 0.3s;
}

.ec .ec-post-card:hover .wp-block-post-date::after {
	background: var(--ec-accent);
	transform: translateX(4px);
}

/* Featured first post on the blog index */

@media (min-width: 1080px) {
	.ec .ec-posts--index .ec-post-grid {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	.ec .ec-posts--index .ec-post-grid > li {
		grid-column: span 2;
	}

	/* first post is featured; a lone post on the last row is featured too */
	.ec .ec-posts--index .ec-post-grid > li:first-child,
	.ec .ec-posts--index .ec-post-grid > li:nth-child(3n + 2):last-child {
		grid-column: 1 / -1;
	}

	/* two posts left on the last row share it */
	.ec .ec-posts--index .ec-post-grid > li:nth-child(3n):last-child,
	.ec .ec-posts--index .ec-post-grid > li:nth-child(3n + 2):nth-last-child(2) {
		grid-column: span 3;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .ec-post-card {
		display: grid;
		grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
		align-items: stretch;
		padding: 0.75rem;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .wp-block-post-featured-image {
		aspect-ratio: auto;
		min-height: 360px;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .ec-post-card__body {
		justify-content: center;
		padding: 2rem 2.25rem 1.5rem;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .wp-block-post-title {
		font-size: 2.25rem;
		line-height: 1.1;
		letter-spacing: -0.035em;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .wp-block-post-excerpt {
		font-size: 1.0625rem;
	}

	.ec .ec-posts--index .ec-post-grid > li:is(:first-child, :nth-child(3n + 2):last-child) .wp-block-post-date {
		margin-top: 0;
		padding-top: 1.75rem;
	}
}

/* Pagination */

.ec .ec-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.5rem;
	margin-top: 3rem;
	font-family: var(--ec-mono);
	font-size: 0.8125rem;
}

.ec .ec-pagination a,
.ec .ec-pagination .page-numbers {
	display: inline-grid;
	place-items: center;
	min-width: 40px;
	height: 40px;
	padding: 0 0.75rem;
	border: 1px solid var(--ec-line);
	border-radius: 999px;
	color: var(--ec-soft);
	text-decoration: none;
	transition: border-color 0.3s, color 0.3s, transform 0.3s var(--ec-ease);
}

.ec .ec-pagination a:hover {
	border-color: var(--ec-line-strong);
	color: var(--ec-ink);
	transform: translateY(-1px);
}

.ec .ec-pagination .current {
	border-color: var(--ec-ink);
	background: var(--ec-ink);
	color: #fff;
}

/* ---------- CTA ---------- */

.ec .ec-cta {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	margin: 0;
	padding: clamp(3rem, 8vw, 6rem) clamp(1.5rem, 6vw, 5rem);
	border-radius: 28px;
	background:
		radial-gradient(60% 80% at 15% 0%, rgba(201, 206, 255, 0.55), transparent 70%),
		radial-gradient(55% 75% at 100% 100%, rgba(200, 238, 233, 0.6), transparent 70%),
		#fff;
	text-align: center;
}

.ec .ec-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
	padding: 1px;
	border-radius: inherit;
	background: conic-gradient(from var(--ec-angle), rgba(77, 91, 216, 0.55), rgba(124, 108, 242, 0.25), rgba(30, 158, 148, 0.5), rgba(124, 108, 242, 0.25), rgba(77, 91, 216, 0.55));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask-composite: exclude;
	pointer-events: none;
	animation: ecAngle 10s linear infinite;
}

.ec .ec-cta .ec-grid {
	z-index: -1;
	-webkit-mask-image: radial-gradient(ellipse 60% 70% at 50% 50%, #000 10%, transparent 75%);
	mask-image: radial-gradient(ellipse 60% 70% at 50% 50%, #000 10%, transparent 75%);
}

.ec .ec-cta > * {
	position: relative;
}

.ec :where(.ec-cta) > * {
	margin-block: 0;
}

.ec .ec-cta .ec-label {
	margin-bottom: 1.25rem;
}

.ec .ec-cta > .ec-grid {
	position: absolute;
	inset: 0;
}

.ec .ec-cta .ec-label {
	justify-content: center;
}

.ec .ec-cta .ec-h2 {
	max-width: 15ch;
	margin-inline: auto;
}

.ec .ec-cta .ec-lead {
	max-width: 34rem;
	margin: 1.25rem auto 0;
}

.ec .ec-cta .wp-block-buttons {
	justify-content: center;
	margin-top: 2.25rem;
}

/* ---------- Page hero (blog, pages) ---------- */

.ec .ec-page-hero {
	position: relative;
	overflow: hidden;
	padding-block: clamp(3rem, 9vw, 6.5rem) clamp(2.5rem, 6vw, 4.5rem);
}

.ec .ec-page-hero > .ec-wrap {
	position: relative;
	z-index: 1;
}

.ec :where(.ec-page-hero > .ec-wrap) > * {
	margin-block-start: 0;
}

.ec .ec-page-hero .ec-orb--a {
	top: -45%;
	right: -10%;
	opacity: 0.5;
}

.ec .ec-page-hero .ec-orb--b {
	bottom: -70%;
	left: -15%;
	opacity: 0.4;
}

.ec .ec-page-hero .ec-grid {
	-webkit-mask-image: radial-gradient(ellipse 70% 90% at 70% 0%, #000 15%, transparent 70%);
	mask-image: radial-gradient(ellipse 70% 90% at 70% 0%, #000 15%, transparent 70%);
}

.ec .ec-page-hero .wp-block-query-title,
.ec .ec-page-hero .wp-block-post-title {
	margin: 0;
}

/* ---------- Single post ---------- */

.ec .ec-readbar {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 200;
	height: 2px;
	background: var(--ec-grad);
	transform: scaleX(var(--ec-read, 0));
	transform-origin: 0 50%;
	pointer-events: none;
}

.admin-bar .ec-readbar {
	top: var(--wp-admin--admin-bar--height, 32px);
}

.ec .ec-post-hero {
	position: relative;
	overflow: hidden;
	padding-block: clamp(2.5rem, 7vw, 5rem) clamp(2rem, 4vw, 3rem);
}

.ec .ec-post-hero > .ec-wrap {
	position: relative;
	z-index: 1;
}

.ec :where(.ec-post-hero > .ec-wrap) > * {
	margin-block: 0;
}

.ec .ec-post-hero .ec-orb--a {
	top: -60%;
	right: -20%;
	opacity: 0.45;
}

.ec .ec-back {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 2.25rem;
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ec-muted);
	text-decoration: none;
	transition: color 0.25s;
}

.ec .ec-back::before {
	content: "";
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transform: scaleX(-1);
	transition: transform 0.35s var(--ec-ease);
}

.ec .ec-back:hover {
	color: var(--ec-ink);
}

.ec .ec-back:hover::before {
	transform: scaleX(-1) translateX(4px);
}

.ec .ec-post-hero .ec-post-terms {
	margin-bottom: 1rem;
}

.ec .ec-post-title {
	font-size: clamp(2.25rem, 1.35rem + 3.8vw, 4rem);
	line-height: 1.04;
	letter-spacing: -0.045em;
}

.ec .ec-post-dek {
	margin-top: 1.25rem;
	font-size: clamp(1.125rem, 1.02rem + 0.45vw, 1.3125rem);
	line-height: 1.6;
	color: var(--ec-soft);
}

.ec .ec-post-dek .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.ec .ec-post-dek .wp-block-post-excerpt__more-text {
	display: none;
}

.ec .ec-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	margin-top: 1.75rem;
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	color: var(--ec-muted);
}

.ec :where(.ec-meta) > * {
	margin: 0;
}

.ec .ec-meta__sep {
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--ec-faint);
}

.ec .ec-meta__sep:has(+ .ec-meta__read:empty) {
	display: none;
}

.ec .ec-post-cover {
	margin-bottom: clamp(2.5rem, 6vw, 4rem);
}

.ec .ec-post-cover .wp-block-post-featured-image {
	overflow: hidden;
	margin: 0;
	border: 1px solid var(--ec-line);
	border-radius: var(--ec-radius-lg);
	box-shadow: var(--ec-shadow);
}

.ec .ec-post-cover .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	transition: transform 1.6s var(--ec-ease);
}

.ec .ec-post-cover .wp-block-post-featured-image:hover img {
	transform: scale(1.02);
}

/* Prose */

.ec .ec-prose {
	font-size: clamp(1.0625rem, 1.02rem + 0.2vw, 1.15rem);
	line-height: 1.78;
	color: var(--ec-text);
}

.ec :where(.ec-prose) > * {
	margin-block: 0;
}

.ec .ec-prose > * + * {
	margin-block-start: 1.35em;
}

.ec .ec-prose > p:first-child {
	font-size: 1.16em;
	line-height: 1.65;
	color: var(--ec-ink);
}

.ec .ec-prose h2 {
	margin-block-start: 2.4em;
	font-size: clamp(1.5rem, 1.25rem + 1vw, 1.95rem);
	line-height: 1.2;
	letter-spacing: -0.03em;
}

.ec .ec-prose h3 {
	margin-block-start: 2em;
	font-size: 1.25rem;
	letter-spacing: -0.02em;
}

.ec .ec-prose h2 + *,
.ec .ec-prose h3 + * {
	margin-block-start: 0.75em;
}

.ec .ec-prose strong {
	font-weight: 600;
	color: var(--ec-ink);
}

.ec .ec-prose ul,
.ec .ec-prose ol {
	padding-left: 1.25em;
}

.ec .ec-prose li {
	margin-block: 0.55em;
	padding-left: 0.3em;
}

.ec .ec-prose li::marker {
	color: var(--ec-accent);
}

.ec .ec-prose ol li::marker {
	font-family: var(--ec-mono);
	font-size: 0.85em;
}

.ec .ec-prose .wp-block-quote {
	margin-inline: 0;
	padding: 0.25rem 0 0.25rem 1.5rem;
	border: 0;
	border-left: 2px solid transparent;
	border-image: var(--ec-grad) 1;
	font-size: 1.15em;
	line-height: 1.6;
	color: var(--ec-ink);
}

.ec .ec-prose .wp-block-pullquote {
	margin-block: 2.5em;
	padding: 2.25rem 0;
	border-top: 1px solid var(--ec-line);
	border-bottom: 1px solid var(--ec-line);
	text-align: left;
}

.ec .ec-prose .wp-block-pullquote blockquote {
	margin: 0;
}

.ec .ec-prose .wp-block-pullquote p {
	margin: 0;
	font-family: var(--ec-serif);
	font-size: clamp(1.75rem, 1.3rem + 2vw, 2.5rem);
	font-style: italic;
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--ec-ink);
}

.ec .ec-prose .wp-block-pullquote cite {
	display: block;
	margin-top: 1rem;
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	font-style: normal;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-prose .wp-block-separator {
	width: 64px;
	height: 2px;
	margin-block: 2.75em;
	border: 0;
	background: var(--ec-grad);
	opacity: 1;
}

.ec .ec-prose code {
	padding: 0.15em 0.4em;
	border-radius: 6px;
	background: var(--ec-surface-2);
	font-family: var(--ec-mono);
	font-size: 0.85em;
}

.ec .ec-prose .ec-callout {
	padding: 1.35rem 1.5rem;
	border: 1px solid #e2e5fb;
	border-radius: var(--ec-radius);
	background: linear-gradient(140deg, rgba(238, 240, 254, 0.7), rgba(231, 246, 244, 0.5));
	color: var(--ec-ink);
}

.ec .ec-post-end {
	margin-top: clamp(3rem, 7vw, 4.5rem);
}

.ec :where(.ec-post-end) > * {
	margin-block: 0;
}

.ec .ec-share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.5rem;
	border-top: 1px solid var(--ec-line);
	border-bottom: 1px solid var(--ec-line);
}

.ec .ec-share__label {
	font-family: var(--ec-mono);
	font-size: 0.75rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-copy {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.6rem 1rem;
	border: 1px solid var(--ec-line-strong);
	border-radius: 999px;
	background: #fff;
	font: inherit;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--ec-ink);
	cursor: pointer;
	transition: border-color 0.3s, transform 0.3s var(--ec-ease), box-shadow 0.3s, background-color 0.3s;
}

.ec .ec-copy:hover {
	border-color: #c4c8d3;
	box-shadow: var(--ec-shadow);
	transform: translateY(-1px);
}

.ec .ec-copy:active {
	transform: scale(0.97);
}

.ec .ec-copy__done {
	display: none;
}

.ec .ec-copy.is-copied {
	border-color: #bfe5e0;
	background: var(--ec-mint);
	color: #12756d;
}

.ec .ec-copy.is-copied .ec-copy__idle {
	display: none;
}

.ec .ec-copy.is-copied .ec-copy__done {
	display: inline;
	animation: ecFadeUp 0.4s var(--ec-ease) both;
}

.ec .ec-post-nav {
	display: grid;
	gap: 0.75rem;
	margin-top: 1.5rem;
}

@media (min-width: 720px) {
	.ec .ec-post-nav {
		grid-template-columns: 1fr 1fr;
	}
}

.ec :where(.ec-post-nav) > * {
	margin: 0;
}

.ec .ec-post-nav .wp-block-post-navigation-link {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
	padding: 1.25rem 1.4rem;
	border: 1px solid var(--ec-line);
	border-radius: var(--ec-radius);
	background: #fff;
	transition: border-color 0.3s, box-shadow 0.45s var(--ec-ease), transform 0.45s var(--ec-ease);
}

.ec .ec-post-nav .wp-block-post-navigation-link:empty {
	display: none;
}

.ec .ec-post-nav .wp-block-post-navigation-link:hover {
	border-color: #dcdff2;
	box-shadow: var(--ec-shadow);
	transform: translateY(-2px);
}

.ec .ec-post-nav .post-navigation-link__label {
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-post-nav .wp-block-post-navigation-link a {
	font-weight: 500;
	line-height: 1.4;
	color: var(--ec-ink);
	text-decoration: none;
}

.ec .ec-post-nav .wp-block-post-navigation-link a::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
}

.ec .ec-post-nav .post-navigation-link-next {
	align-items: flex-end;
	text-align: right;
}

@media (min-width: 720px) {
	.ec .ec-post-nav .post-navigation-link-next {
		grid-column: 2;
	}
}

/* ---------- Pages: about & contact ---------- */

.ec .ec-letter {
	position: relative;
	margin: 0;
	padding: clamp(1.75rem, 6vw, 4rem);
	border: 1px solid var(--ec-line);
	border-radius: var(--ec-radius-lg);
	background:
		radial-gradient(70% 50% at 100% 0%, rgba(238, 240, 254, 0.8), transparent 70%),
		#fff;
	box-shadow: var(--ec-shadow);
}

.ec :where(.ec-letter) > * {
	margin-block: 0;
}

.ec .ec-letter > p:not(.ec-label, .ec-letter__big, .ec-letter__sign) {
	font-size: clamp(1.125rem, 1.02rem + 0.5vw, 1.375rem);
	line-height: 1.6;
	letter-spacing: -0.01em;
	color: var(--ec-ink);
}

.ec .ec-letter > * + * {
	margin-top: 1.1rem;
}

.ec .ec-letter .ec-letter__big {
	margin-top: 1.75rem;
	font-family: var(--ec-serif);
	font-size: clamp(2.5rem, 1.6rem + 4vw, 4.25rem);
	font-style: italic;
	line-height: 1;
	background: var(--ec-grad);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.ec .ec-letter .ec-letter__sign {
	margin-top: 2rem;
	font-family: var(--ec-mono);
	font-size: 0.8125rem;
	letter-spacing: 0.06em;
	color: var(--ec-muted);
}

.ec .ec-contact {
	display: grid;
	gap: 1.25rem;
}

@media (min-width: 960px) {
	.ec .ec-contact {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
		gap: 1.5rem;
		align-items: start;
	}
}

.ec :where(.ec-contact) > * {
	margin: 0;
}

.ec .ec-mailcard__label {
	display: block;
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-mailcard__email {
	display: inline-block;
	margin-top: 1rem;
	font-size: clamp(1.375rem, 0.9rem + 2.4vw, 2.25rem);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.035em;
	word-break: break-word;
	color: var(--ec-ink);
	text-decoration: none;
	background-image: var(--ec-grad);
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0% 2px;
	transition: background-size 0.7s var(--ec-ease);
}

.ec .ec-mailcard__email:hover {
	background-size: 100% 2px;
}

.ec .ec-mailcard__row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-top: 2rem;
}

.ec .ec-mailcard__row .ec-copy {
	padding: 0.85rem 1.2rem;
}

.ec .ec-mailcard__row .ec-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.85rem 1.25rem 0.85rem 1.4rem;
	border-radius: 999px;
	background: var(--ec-ink);
	font-size: 0.9375rem;
	font-weight: 500;
	color: #fff;
	text-decoration: none;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 10px 24px -12px rgba(77, 91, 216, 0.55);
	transition: transform 0.4s var(--ec-ease), box-shadow 0.4s var(--ec-ease);
}

.ec .ec-mailcard__row .ec-btn::after {
	content: "";
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: var(--ec-arrow) center / contain no-repeat;
	mask: var(--ec-arrow) center / contain no-repeat;
	transition: transform 0.4s var(--ec-ease);
}

.ec .ec-mailcard__row .ec-btn:hover {
	transform: translateY(-2px);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 18px 34px -14px rgba(77, 91, 216, 0.7);
}

.ec .ec-mailcard__row .ec-btn:hover::after {
	transform: translateX(3px);
}

.ec .ec-checklist {
	display: grid;
	gap: 0.15rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

.ec .ec-checklist li {
	position: relative;
	margin: 0;
	padding: 0.85rem 0 0.85rem 2.25rem;
	border-bottom: 1px solid var(--ec-line);
	font-size: 1rem;
	line-height: 1.55;
	color: var(--ec-text);
}

.ec .ec-checklist li:last-child {
	border-bottom: 0;
}

.ec .ec-checklist li::before {
	content: "";
	position: absolute;
	top: 1.02rem;
	left: 0;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--ec-mint);
}

.ec .ec-checklist li::after {
	content: "";
	position: absolute;
	top: calc(1.02rem + 4px);
	left: 4px;
	width: 12px;
	height: 12px;
	background: #12756d;
	-webkit-mask: var(--ec-check) center / contain no-repeat;
	mask: var(--ec-check) center / contain no-repeat;
}

.ec .ec-note {
	margin-top: 1.25rem;
	font-size: 0.9375rem;
	color: var(--ec-muted);
}

/* 404 */

.ec .ec-404 {
	position: relative;
	overflow: hidden;
	min-height: 70vh;
	display: grid;
	align-items: center;
	padding-block: var(--ec-section);
}

.ec .ec-404 > .ec-wrap {
	position: relative;
	z-index: 1;
}

.ec :where(.ec-404 > .ec-wrap) > * {
	margin-block-start: 0;
}

/* Search */

.ec .ec-search .wp-block-search__inside-wrapper {
	overflow: hidden;
	max-width: 560px;
	padding: 0.35rem;
	border: 1px solid var(--ec-line-strong);
	border-radius: 999px;
	background: #fff;
	box-shadow: var(--ec-shadow-sm);
	transition: border-color 0.3s, box-shadow 0.4s var(--ec-ease);
}

.ec .ec-search .wp-block-search__inside-wrapper:focus-within {
	border-color: var(--ec-accent);
	box-shadow: 0 0 0 4px rgba(77, 91, 216, 0.12);
}

.ec .ec-search .wp-block-search__input {
	padding: 0.6rem 1rem;
	border: 0;
	background: transparent;
	font: inherit;
	color: var(--ec-ink);
	outline: none;
}

.ec .ec-search .wp-block-search__button {
	margin: 0;
	padding: 0.6rem 1.15rem;
	border: 0;
	border-radius: 999px;
	background: var(--ec-ink);
	font-size: 0.875rem;
	color: #fff;
	cursor: pointer;
}

/* ---------- Footer ---------- */

.ec .ec-footer {
	position: relative;
	overflow: hidden;
	padding-top: clamp(3.5rem, 8vw, 5.5rem);
	border-top: 1px solid var(--ec-line);
	background: linear-gradient(180deg, #fff 0%, #fafafc 100%);
}

.ec :where(.ec-footer) > * {
	margin-block: 0;
}

.ec .ec-footer__top {
	display: grid;
	gap: 2.5rem;
}

@media (min-width: 800px) {
	.ec .ec-footer__top {
		grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
		gap: 3rem;
	}
}

.ec :where(.ec-footer__top) > * {
	margin: 0;
}

.ec .ec-footer__brand p {
	max-width: 22rem;
	margin: 1.25rem 0 0;
	font-size: 0.9375rem;
	line-height: 1.65;
	color: var(--ec-muted);
}

.ec .ec-footer__title {
	margin: 0 0 1rem;
	font-family: var(--ec-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ec-muted);
}

.ec .ec-footer__links {
	display: grid;
	gap: 0.55rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ec .ec-footer__links li {
	margin: 0;
}

.ec .ec-footer__links a {
	position: relative;
	font-size: 0.9375rem;
	color: var(--ec-soft);
	text-decoration: none;
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0% 1px;
	transition: color 0.25s, background-size 0.5s var(--ec-ease);
}

.ec .ec-footer__links a:hover {
	color: var(--ec-ink);
	background-size: 100% 1px;
}

.ec .ec-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 0.5rem 1.5rem;
	margin-top: 3.5rem;
	padding-block: 1.5rem;
	border-top: 1px solid var(--ec-line);
	font-size: 0.8125rem;
	color: var(--ec-muted);
}

.ec :where(.ec-footer__bottom) > * {
	margin: 0;
}

.ec .ec-footer__mark {
	margin: 0;
	padding-top: 0.5rem;
	font-size: clamp(3rem, 12.4vw, 12.5rem);
	font-weight: 600;
	line-height: 0.82;
	letter-spacing: -0.06em;
	text-align: center;
	white-space: nowrap;
	user-select: none;
	background: linear-gradient(180deg, #e3e6ef 0%, rgba(227, 230, 239, 0.35) 55%, rgba(227, 230, 239, 0) 92%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	transform: translateY(14%);
	transition: transform 1.6s var(--ec-ease), opacity 1.2s var(--ec-ease), letter-spacing 1.6s var(--ec-ease);
}

.ec-js .ec .ec-footer__mark:not(.is-in) {
	opacity: 0;
	letter-spacing: -0.02em;
	transform: translateY(40%);
}

/* ---------- Reveal system (theme.js adds .ec-rv and .is-in) ---------- */

.ec-js .ec .ec-rv {
	opacity: 0;
	translate: 0 22px;
	filter: blur(5px);
	transition:
		opacity 0.9s var(--ec-ease) var(--rd, 0s),
		translate 1s var(--ec-ease) var(--rd, 0s),
		filter 0.9s var(--ec-ease) var(--rd, 0s),
		transform 0.55s var(--ec-ease),
		box-shadow 0.55s var(--ec-ease),
		border-color 0.4s,
		background-color 0.4s,
		color 0.3s;
}

.ec-js .ec .ec-prose > .ec-rv {
	translate: 0 14px;
	filter: none;
}

.ec-js .ec .ec-rv.is-in {
	opacity: 1;
	translate: 0 0;
	filter: none;
}

.ec-js .ec .ec-split {
	opacity: 0;
}

.ec-js .ec .ec-split.is-split {
	opacity: 1;
}

.ec .ec-split .ec-w {
	display: inline-block;
	animation: ecWord 1.1s var(--ec-ease) both;
	animation-delay: calc(var(--i, 0) * 75ms + 120ms);
}

/* ---------- Keyframes ---------- */

@keyframes ecFadeUp {
	from { opacity: 0; translate: 0 16px; filter: blur(6px); }
	to { opacity: 1; translate: 0 0; filter: blur(0); }
}

@keyframes ecRise {
	from { opacity: 0; translate: 0 40px; }
	to { opacity: 1; translate: 0 0; }
}

@keyframes ecWord {
	from { opacity: 0; translate: 0 0.35em; filter: blur(10px); }
	to { opacity: 1; translate: 0 0; filter: blur(0); }
}

@keyframes ecPulse {
	0% { box-shadow: 0 0 0 0 rgba(30, 158, 148, 0.45); }
	70%, 100% { box-shadow: 0 0 0 8px rgba(30, 158, 148, 0); }
}

@keyframes ecPulseDot {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.35; }
}

@keyframes ecSpin {
	to { transform: rotate(360deg); }
}

@keyframes ecBlink {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.35; }
}

@keyframes ecDrift {
	0% { transform: translate3d(0, 0, 0) scale(1); }
	50% { transform: translate3d(-4%, 5%, 0) scale(1.06); }
	100% { transform: translate3d(5%, -3%, 0) scale(0.97); }
}

@keyframes ecBreathe {
	0%, 100% { opacity: 0.13; transform: scale(1); }
	50% { opacity: 0.22; transform: scale(1.03); }
}

@keyframes ecBob {
	0%, 100% { translate: 0 0; }
	50% { translate: 0 -8px; }
}

@keyframes ecShimmer {
	from { background-position: 100% 0; }
	to { background-position: -150% 0; }
}

@keyframes ecClick {
	0% { opacity: 0.9; transform: scale(0.2); }
	100% { opacity: 0; transform: scale(1.4); }
}

@keyframes ecMarquee {
	to { transform: translateX(-50%); }
}

@keyframes ecAngle {
	to { --ec-angle: 360deg; }
}

@keyframes ecOverlayIn {
	from { opacity: 0; }
	to { opacity: 1; }
}

@keyframes ecMenuItem {
	from { opacity: 0; translate: 0 18px; }
	to { opacity: 1; translate: 0 0; }
}

@keyframes ecSwivel {
	0%, 12% { transform: translateX(0); }
	44%, 56% { transform: translateX(11px); }
	88%, 100% { transform: translateX(0); }
}

@keyframes ecTabPop {
	0%, 8% { opacity: 0; transform: translateY(3px); }
	22%, 80% { opacity: 1; transform: translateY(0); }
	95%, 100% { opacity: 0; transform: translateY(0); }
}

@keyframes ecDash {
	to { stroke-dashoffset: -14; }
}

@keyframes ecRing {
	0% { stroke-dashoffset: 63; }
	45%, 85% { stroke-dashoffset: 0; }
	100% { stroke-dashoffset: 0; opacity: 0.4; }
}

@keyframes ecTick {
	0%, 40% { stroke-dashoffset: 14; }
	60%, 100% { stroke-dashoffset: 0; }
}

@keyframes ecScan {
	0%, 100% { transform: translateY(-5px); opacity: 0; }
	15% { opacity: 1; }
	50% { transform: translateY(5px); opacity: 1; }
	70% { opacity: 0; }
}

@keyframes ecHalo {
	0% { transform: scale(0.85); opacity: 0.7; }
	100% { transform: scale(1.35); opacity: 0; }
}

@keyframes ecCursorHop {
	0%, 10% { transform: translate(0, 0); }
	40%, 55% { transform: translate(10px, 7px); }
	85%, 100% { transform: translate(0, 0); }
}

/* ---------- Reduced motion ---------- */

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

	.ec *,
	.ec *::before,
	.ec *::after {
		animation-duration: 0.001ms !important;
		animation-delay: 0s !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		transition-delay: 0s !important;
	}

	.ec-js .ec .ec-rv,
	.ec-js .ec .ec-split,
	.ec-js .ec .ec-footer__mark:not(.is-in) {
		opacity: 1;
		translate: none;
		filter: none;
	}

	.ec .ec-marquee__track {
		animation: none !important;
		flex-wrap: wrap;
		width: auto;
	}

	.ec .ec-marquee__set[aria-hidden="true"] {
		display: none;
	}

	.ec .ec-scrub .ec-sw {
		opacity: 1;
	}
}
