/**
 * KEIDIAN — main stylesheet (light commerce edition)
 *
 * A light, precise cross-border storefront: white + soft grey surfaces,
 * purple #6050E0 as the conversion accent, and deep #0b0b0c reserved as a
 * rhythm contrast for the announcement bar, hero, promo banner, CTA and
 * footer. AI texture (grid / dot matrix / glow / topology) lives only inside
 * those dark blocks; light areas get soft shadows, hairline borders and
 * micro gradients instead.
 *
 * 01  Tokens
 * 02  Reset & base
 * 03  Typography
 * 04  Layout & utilities
 * 05  Dark scope + texture layers
 * 06  Buttons
 * 07  Announcement bar
 * 08  Header (commerce) & navigation
 * 09  Mobile navigation
 * 10  Hero (dark)
 * 11  Trust strip
 * 12  Sections & grids
 * 13  Category cards
 * 14  Product cards, badges, stars
 * 15  Promo banner
 * 16  Capability band
 * 17  Reviews
 * 18  Newsletter
 * 19  Footer (dark)
 * 20  Empty states
 * 21  Blog & content (Gutenberg)
 * 22  Page header, pagination, comments
 * 23  Search form
 * 24  404
 * 25  WooCommerce pages
 * 26  Motion
 * 27  Responsive
 * 28  Accessibility & print
 */

/* ==========================================================================
   01. Tokens
   ========================================================================== */

:root {
	/* Brand */
	--kd-purple: #6050E0;
	--kd-purple-dark: #4B3BB8;
	--kd-purple-darker: #372A8A;
	--kd-purple-light: #EDEAFB;
	--kd-purple-tint: rgba(96, 80, 224, .08);
	--kd-purple-soft: rgba(96, 80, 224, .14);

	/* Light surfaces */
	--kd-white: #ffffff;
	--kd-surface: #f6f6fa;
	--kd-surface-2: #eeeff7;
	--kd-surface-3: #e8e9f2;

	/* Ink / text */
	--kd-ink-900: #0b0b0c;
	--kd-ink-800: #16161c;
	--kd-text: #1b1b22;
	--kd-text-2: #5c5c68;
	--kd-text-3: #8a8a96;

	/* Lines */
	--kd-line: #e9e9f0;
	--kd-line-2: #dcddE8;
	--kd-line-dark: rgba(255, 255, 255, .12);

	/* Semantic */
	--kd-star: #f5a623;
	--kd-success: #17915a;
	--kd-danger: #d64545;

	/* Radii */
	--kd-radius-xs: 4px;
	--kd-radius-sm: 8px;
	--kd-radius: 14px;
	--kd-radius-lg: 22px;
	--kd-radius-pill: 999px;

	/* Spacing */
	--kd-s-1: 4px;
	--kd-s-2: 8px;
	--kd-s-3: 12px;
	--kd-s-4: 16px;
	--kd-s-5: 24px;
	--kd-s-6: 32px;
	--kd-s-7: 48px;
	--kd-s-8: 64px;
	--kd-s-9: 80px;
	--kd-s-10: 120px;

	/* Type */
	--kd-font-sans: 'Inter', 'Helvetica Neue', Helvetica, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
	--kd-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;

	--kd-fs-display: clamp(2.5rem, 5.4vw, 4.5rem);
	--kd-fs-h1: clamp(2rem, 4vw, 3rem);
	--kd-fs-h2: clamp(1.5rem, 2.6vw, 2.125rem);
	--kd-fs-h3: 1.125rem;
	--kd-fs-lead: clamp(1rem, 1.2vw, 1.125rem);
	--kd-fs-body: 1rem;
	--kd-fs-sm: .875rem;
	--kd-fs-xs: .75rem;

	/* Structure */
	--kd-header-h: 72px;
	--kd-announce-h: 40px;
	--kd-container: 1240px;
	--kd-container-narrow: 820px;
	--kd-gutter: clamp(20px, 4vw, 40px);

	/* Elevation */
	--kd-shadow-xs: 0 1px 2px rgba(16, 16, 32, .05);
	--kd-shadow-sm: 0 2px 8px -2px rgba(16, 16, 32, .08);
	--kd-shadow: 0 10px 30px -14px rgba(16, 16, 32, .18);
	--kd-shadow-lg: 0 28px 60px -32px rgba(16, 16, 32, .28);
	--kd-ring: 0 0 0 3px rgba(96, 80, 224, .16);

	/* Motion */
	--kd-ease: cubic-bezier(.22, .61, .36, 1);
	--kd-ease-out-expo: cubic-bezier(.16, 1, .3, 1);
	--kd-ease-spring: cubic-bezier(.34, 1.56, .64, 1);
	--kd-dur-fast: 180ms;
	--kd-dur: 320ms;
	--kd-dur-slow: 560ms;
}

/* ==========================================================================
   02. Reset & base
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body.kd-body {
	margin: 0;
	background-color: var(--kd-white);
	color: var(--kd-text);
	font-family: var(--kd-font-sans);
	font-size: var(--kd-fs-body);
	line-height: 1.65;
	letter-spacing: -.002em;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

body.kd-nav-open {
	overflow: hidden;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: var(--kd-text);
	text-decoration: none;
	transition: color var(--kd-dur) var(--kd-ease);
}

a:hover {
	color: var(--kd-purple);
}

ul,
ol {
	padding-left: 1.25rem;
}

button {
	font: inherit;
	color: inherit;
}

:focus-visible {
	outline: 2px solid var(--kd-purple);
	outline-offset: 2px;
	border-radius: var(--kd-radius-xs);
}

::selection {
	background: rgba(96, 80, 224, .18);
	color: var(--kd-ink-900);
}

/* ==========================================================================
   03. Typography
   ========================================================================== */

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-ink-900);
	font-weight: 680;
	line-height: 1.2;
	letter-spacing: -.02em;
}

h1 { font-size: var(--kd-fs-h1); }
h2 { font-size: var(--kd-fs-h2); }
h3 { font-size: var(--kd-fs-h3); }
h4 { font-size: 1.0625rem; }
h5 { font-size: .9375rem; }
h6 { font-size: .875rem; }

p {
	margin: 0 0 var(--kd-s-4);
}

p:last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   04. Layout & utilities
   ========================================================================== */

.kd-container {
	width: 100%;
	max-width: var(--kd-container);
	margin-inline: auto;
	padding-inline: var(--kd-gutter);
}

.kd-container--narrow {
	max-width: var(--kd-container-narrow);
}

.kd-main {
	display: block;
	min-height: 40vh;
}

.kd-sr-only,
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.kd-skip-link {
	position: absolute;
	top: -100px;
	left: var(--kd-s-4);
	z-index: 200;
	padding: 10px 18px;
	background: var(--kd-purple);
	color: var(--kd-white);
	border-radius: var(--kd-radius-sm);
	font-size: var(--kd-fs-sm);
}

.kd-skip-link:focus {
	top: var(--kd-s-4);
	color: var(--kd-white);
}

.kd-align-center { text-align: center; }
.kd-text-muted { color: var(--kd-text-2); }

.kd-mono {
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .12em;
	text-transform: uppercase;
}

.kd-divider {
	height: 1px;
	border: 0;
	margin: var(--kd-s-7) 0;
	background: var(--kd-line);
}

.kd-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-2);
	padding: 4px 10px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	text-transform: uppercase;
}

.kd-icon {
	width: 20px;
	height: 20px;
	display: block;
	flex: 0 0 auto;
}

.kd-icon--sm { width: 16px; height: 16px; }
.kd-icon--lg { width: 40px; height: 40px; }

.kd-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-2);
	margin: 0 0 var(--kd-s-3);
	color: var(--kd-purple-dark);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	font-weight: 500;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.kd-eyebrow__dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--kd-purple);
	box-shadow: 0 0 0 3px var(--kd-purple-soft);
}

.kd-price {
	color: var(--kd-purple-dark);
	font-weight: 700;
	letter-spacing: -.01em;
}

/* ==========================================================================
   05. Dark scope + texture layers
   ========================================================================== */

.kd-dark {
	background-color: var(--kd-ink-900);
	color: rgba(255, 255, 255, .72);
}

.kd-dark h1,
.kd-dark h2,
.kd-dark h3,
.kd-dark h4,
.kd-dark h5,
.kd-dark h6 {
	color: var(--kd-white);
}

.kd-dark p {
	color: rgba(255, 255, 255, .72);
}

.kd-dark .kd-eyebrow {
	color: rgba(255, 255, 255, .62);
}

.kd-dark .kd-eyebrow__dot {
	box-shadow: 0 0 0 3px rgba(96, 80, 224, .35), 0 0 10px rgba(96, 80, 224, .9);
}

.kd-dark a:not(.kd-btn) {
	color: rgba(255, 255, 255, .82);
}

.kd-dark a:not(.kd-btn):hover {
	color: var(--kd-white);
}

.kd-dot-grid,
.kd-mesh {
	pointer-events: none;
}

.kd-dot-grid {
	background-image: radial-gradient(rgba(255, 255, 255, .16) 1px, transparent 1px);
	background-size: 22px 22px;
}

.kd-mesh {
	background-image:
		linear-gradient(to right, rgba(255, 255, 255, .05) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255, 255, 255, .05) 1px, transparent 1px);
	background-size: 64px 64px;
}

/* ==========================================================================
   06. Buttons
   ========================================================================== */

.kd-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--kd-s-2);
	min-height: 46px;
	padding: 0 var(--kd-s-5);
	border: 1px solid transparent;
	border-radius: var(--kd-radius-pill);
	font-family: var(--kd-font-sans);
	font-size: .9375rem;
	font-weight: 620;
	letter-spacing: .005em;
	line-height: 1;
	cursor: pointer;
	white-space: nowrap;
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease);
}

.kd-btn:hover {
	transform: translateY(-1px);
}

.kd-btn--primary {
	background: linear-gradient(135deg, var(--kd-purple) 0%, var(--kd-purple-darker) 100%);
	color: var(--kd-white);
	box-shadow: 0 8px 22px -10px rgba(96, 80, 224, .75), inset 0 1px 0 rgba(255, 255, 255, .16);
}

.kd-btn--primary:hover {
	color: var(--kd-white);
	box-shadow: 0 14px 30px -12px rgba(96, 80, 224, .95), inset 0 1px 0 rgba(255, 255, 255, .22);
}

.kd-btn--outline {
	background: var(--kd-white);
	border-color: var(--kd-line-2);
	color: var(--kd-text);
	box-shadow: var(--kd-shadow-xs);
}

.kd-btn--outline:hover {
	border-color: var(--kd-purple);
	color: var(--kd-purple-dark);
	box-shadow: var(--kd-shadow-sm);
}

.kd-btn--ghost {
	background: transparent;
	border-color: rgba(255, 255, 255, .28);
	color: var(--kd-white);
}

.kd-btn--ghost:hover {
	background: rgba(255, 255, 255, .1);
	border-color: rgba(255, 255, 255, .5);
	color: var(--kd-white);
}

.kd-btn--light {
	background: var(--kd-white);
	color: var(--kd-ink-900);
}

.kd-btn--light:hover {
	color: var(--kd-ink-900);
	box-shadow: 0 14px 34px -16px rgba(255, 255, 255, .6);
}

.kd-btn--dark {
	background: var(--kd-ink-900);
	color: var(--kd-white);
}

.kd-btn--dark:hover {
	color: var(--kd-white);
	box-shadow: 0 12px 26px -12px rgba(11, 11, 12, .6);
}

.kd-btn--sm {
	min-height: 38px;
	padding: 0 var(--kd-s-4);
	font-size: .875rem;
}

.kd-btn--block {
	width: 100%;
}

.kd-btn--add {
	min-height: 40px;
	padding: 0 var(--kd-s-4);
	background: var(--kd-purple-tint);
	border-color: transparent;
	color: var(--kd-purple-dark);
	font-size: .875rem;
}

.kd-btn--add:hover {
	background: var(--kd-purple);
	border-color: var(--kd-purple);
	color: var(--kd-white);
	box-shadow: 0 10px 24px -12px rgba(96, 80, 224, .9);
}

/* ==========================================================================
   07. Announcement bar
   ========================================================================== */

.kd-announce {
	background: var(--kd-ink-900);
	color: rgba(255, 255, 255, .85);
	font-size: var(--kd-fs-xs);
	letter-spacing: .04em;
}

.kd-announce__inner {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--kd-s-3);
	min-height: var(--kd-announce-h);
	padding-block: 8px;
	text-align: center;
}

.kd-announce__text {
	margin: 0;
	color: rgba(255, 255, 255, .78);
}

.kd-announce__link {
	color: var(--kd-white);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-color: rgba(96, 80, 224, .9);
}

.kd-announce__link:hover {
	color: var(--kd-purple-light);
}

/* ==========================================================================
   08. Header (commerce)
   ========================================================================== */

.kd-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--kd-white);
	border-bottom: 1px solid var(--kd-line);
	transition: box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-header.is-scrolled {
	box-shadow: var(--kd-shadow-sm);
}

.kd-header__inner {
	display: flex;
	align-items: center;
	gap: var(--kd-s-4);
	height: var(--kd-header-h);
}

.kd-brand {
	flex: 0 0 auto;
}

.kd-brand__link {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-3);
}

.kd-brand__logo {
	width: auto;
	height: 26px;
	object-fit: contain;
}

.kd-brand__text {
	display: none;
	font-size: 1.0625rem;
	font-weight: 700;
	letter-spacing: .1em;
	color: var(--kd-ink-900);
	text-transform: uppercase;
}

.kd-brand.is-fallback .kd-brand__logo { display: none; }
.kd-brand.is-fallback .kd-brand__text { display: inline-block; }

.kd-nav {
	margin-right: auto;
	/* Pull the first item away from the brand: keeps Home from crowding the
	   logo without touching the per-item gap. */
	margin-left: 25px;
}

.kd-nav__list,
.kd-nav__list--fallback {
	display: flex;
	align-items: center;
	gap: clamp(16px, 2vw, 28px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-nav__item {
	position: relative;
}

.kd-nav__link {
	position: relative;
	display: inline-block;
	padding: 6px 0;
	color: var(--kd-text);
	font-size: .9375rem;
	font-weight: 560;
}

.kd-nav__link::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: 0;
	width: 0;
	height: 2px;
	border-radius: 2px;
	background: var(--kd-purple);
	transition: width var(--kd-dur) var(--kd-ease);
}

.kd-nav__link:hover::after,
.kd-nav__link.is-current::after {
	width: 100%;
}

.kd-nav__link:hover,
.kd-nav__link.is-current {
	color: var(--kd-purple-dark);
}

.kd-header__search {
	flex: 0 1 260px;
	min-width: 0;
}

.kd-header__actions {
	display: flex;
	align-items: center;
	gap: var(--kd-s-2);
	flex: 0 0 auto;
}

/* Language / currency pills */
.kd-lang,
.kd-currency,
.kd-account {
	position: relative;
}

.kd-lang__toggle,
.kd-currency__toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 10px;
	background: transparent;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-pill);
	color: var(--kd-text-2);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	cursor: pointer;
	transition: border-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease);
}

.kd-lang__toggle:hover,
.kd-currency__toggle:hover {
	border-color: var(--kd-purple);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-lang__list,
.kd-currency__list {
	position: absolute;
	top: calc(100% + 8px);
	right: 0;
	z-index: 120;
	min-width: 180px;
	max-height: 320px;
	overflow-y: auto;
	margin: 0;
	padding: 6px;
	list-style: none;
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity var(--kd-dur) var(--kd-ease), transform var(--kd-dur) var(--kd-ease), visibility var(--kd-dur);
}

.kd-lang:hover .kd-lang__list,
.kd-lang:focus-within .kd-lang__list,
.kd-currency:hover .kd-currency__list,
.kd-currency:focus-within .kd-currency__list {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.kd-lang__item > a,
.kd-currency__item > a {
	display: flex;
	align-items: center;
	gap: var(--kd-s-3);
	padding: 8px 10px;
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
}

.kd-lang__item > a:hover,
.kd-currency__item > a:hover {
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-lang__item.is-current > a,
.kd-currency__item.is-current > a {
	color: var(--kd-purple-dark);
	font-weight: 600;
}

.kd-lang__item-code {
	min-width: 28px;
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .08em;
	color: var(--kd-text-3);
}

.kd-lang__code {
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	color: var(--kd-text-2);
}

.kd-lang__item-name,
.kd-currency__item-name {
	font-size: var(--kd-fs-sm);
}

/* Account + cart icon buttons */
.kd-iconbtn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	background: transparent;
	border: 1px solid var(--kd-line);
	border-radius: 50%;
	color: var(--kd-text);
	transition: border-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease);
}

.kd-iconbtn:hover {
	border-color: var(--kd-purple);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-cart__count {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple);
	color: var(--kd-white);
	font-family: var(--kd-font-mono);
	font-size: 10px;
	font-weight: 700;
	line-height: 1;
	box-shadow: 0 0 0 2px var(--kd-white);
}

/* Hamburger */
.kd-nav-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	background: transparent;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-sm);
	cursor: pointer;
}

.kd-nav-toggle__bars {
	display: block;
	width: 18px;
}

.kd-nav-toggle__bars span {
	display: block;
	height: 1.5px;
	margin: 4px 0;
	background: var(--kd-ink-900);
	transition: transform var(--kd-dur) var(--kd-ease), opacity var(--kd-dur) var(--kd-ease);
}

.kd-nav-toggle.is-open .kd-nav-toggle__bars span:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
.kd-nav-toggle.is-open .kd-nav-toggle__bars span:nth-child(2) { opacity: 0; }
.kd-nav-toggle.is-open .kd-nav-toggle__bars span:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }

/* ==========================================================================
   09. Mobile navigation
   ========================================================================== */

.kd-mobile-nav {
	display: none;
	position: fixed;
	top: var(--kd-header-h);
	left: 0;
	right: 0;
	z-index: 90;
	max-height: calc(100vh - var(--kd-header-h));
	overflow-y: auto;
	background: var(--kd-white);
	border-bottom: 1px solid var(--kd-line);
	box-shadow: var(--kd-shadow);
}

.kd-mobile-nav.is-open {
	display: block;
}

.kd-mobile-nav__inner {
	padding: var(--kd-s-5) var(--kd-gutter) var(--kd-s-6);
}

.kd-mobile-nav__list {
	margin: 0 0 var(--kd-s-5);
	padding: 0;
	list-style: none;
}

.kd-mobile-nav__list li {
	border-bottom: 1px solid var(--kd-line);
}

.kd-mobile-nav__list a {
	display: block;
	padding: 13px 0;
	color: var(--kd-text);
	font-size: 1rem;
	font-weight: 560;
}

.kd-mobile-nav__cta {
	width: 100%;
}

.kd-mobile-nav__search {
	margin-top: var(--kd-s-4);
}

/* ==========================================================================
   10. Hero (dark)
   ========================================================================== */

.kd-hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding-block: clamp(48px, 7vw, 96px) 0;
	background:
		radial-gradient(120% 90% at 78% 6%, rgba(96, 80, 224, .3) 0%, rgba(11, 11, 12, 0) 58%),
		linear-gradient(180deg, var(--kd-ink-800) 0%, var(--kd-ink-900) 70%);
}

.kd-hero__bg {
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
}

.kd-hero__grid {
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(to right, rgba(255, 255, 255, .05) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255, 255, 255, .05) 1px, transparent 1px);
	background-size: 72px 72px;
	mask-image: radial-gradient(90% 70% at 50% 20%, #000 0%, transparent 78%);
	-webkit-mask-image: radial-gradient(90% 70% at 50% 20%, #000 0%, transparent 78%);
}

.kd-hero__glow {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(38% 42% at 82% 24%, rgba(96, 80, 224, .4) 0%, rgba(96, 80, 224, 0) 70%),
		radial-gradient(46% 40% at 8% 82%, rgba(55, 42, 138, .36) 0%, rgba(55, 42, 138, 0) 72%);
	filter: blur(6px);
}

.kd-hero__dots {
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(255, 255, 255, .16) 1px, transparent 1px);
	background-size: 26px 26px;
	opacity: .5;
	mask-image: radial-gradient(70% 60% at 70% 30%, #000 0%, transparent 72%);
	-webkit-mask-image: radial-gradient(70% 60% at 70% 30%, #000 0%, transparent 72%);
	animation: kd-drift 24s linear infinite alternate;
}

.kd-hero__scan {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(96, 80, 224, .85), transparent);
	animation: kd-scan 7s linear infinite;
}

.kd-hero__inner {
	display: grid;
	grid-template-columns: 1.02fr .98fr;
	align-items: center;
	gap: clamp(28px, 4vw, 64px);
}

.kd-hero__title {
	margin: 0 0 var(--kd-s-4);
	font-size: var(--kd-fs-display);
	font-weight: 700;
	letter-spacing: -.035em;
	line-height: 1.04;
	background: linear-gradient(180deg, var(--kd-white) 34%, #b9b4ec 100%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.kd-hero__lead {
	max-width: 34rem;
	margin: 0 0 var(--kd-s-6);
	color: rgba(255, 255, 255, .74);
	font-size: var(--kd-fs-lead);
}

.kd-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-3);
}

.kd-hero__visual {
	position: relative;
}

.kd-topo {
	width: 100%;
	max-width: 540px;
	margin-inline: auto;
	filter: drop-shadow(0 24px 60px rgba(96, 80, 224, .28));
}

.kd-topo__links line { stroke-opacity: .34; }

.kd-topo__nodes circle {
	fill: var(--kd-white);
	filter: drop-shadow(0 0 5px rgba(96, 80, 224, .8));
}

.kd-topo__pulse circle {
	transform-box: fill-box;
	transform-origin: center;
	animation: kd-pulse 3.4s var(--kd-ease) infinite;
}

.kd-topo__pulse circle:nth-child(2) { animation-delay: .9s; }
.kd-topo__pulse circle:nth-child(3) { animation-delay: 1.8s; }

/* ==========================================================================
   11. Trust strip
   ========================================================================== */

.kd-trust {
	border-bottom: 1px solid var(--kd-line);
	background: var(--kd-white);
}

.kd-trust__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--kd-s-4);
	margin: 0;
	padding: var(--kd-s-5) 0;
	list-style: none;
}

.kd-trust__item {
	display: flex;
	align-items: center;
	gap: var(--kd-s-3);
}

.kd-trust__body {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.kd-trust__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-trust__title {
	margin: 0;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 620;
	line-height: 1.3;
}

.kd-trust__text {
	margin: 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* ==========================================================================
   12. Sections & grids
   ========================================================================== */

.kd-section {
	position: relative;
	padding-block: clamp(48px, 6vw, 88px);
}

.kd-section--tight {
	padding-block: clamp(32px, 4vw, 56px);
}

.kd-section--surface {
	background: var(--kd-surface);
}

.kd-section--surface-2 {
	background: var(--kd-surface-2);
}

.kd-section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--kd-s-4);
	margin-bottom: clamp(24px, 3vw, 40px);
}

.kd-section__head--center {
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.kd-section__title {
	margin: 0;
	font-size: var(--kd-fs-h2);
}

.kd-section__lead {
	margin: var(--kd-s-2) 0 0;
	max-width: 44rem;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-lead);
}

.kd-section__more {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-2);
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
	font-weight: 620;
}

.kd-section__more:hover {
	color: var(--kd-purple);
}

.kd-grid {
	display: grid;
	gap: clamp(16px, 2vw, 28px);
}

.kd-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.kd-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kd-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kd-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

.kd-card {
	position: relative;
	padding: var(--kd-s-5);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-card:hover {
	transform: translateY(-3px);
	border-color: var(--kd-purple-soft);
	box-shadow: var(--kd-shadow);
}

.kd-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin-bottom: var(--kd-s-4);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-card__title { margin-bottom: var(--kd-s-2); }
.kd-card__text { margin: 0; color: var(--kd-text-2); font-size: var(--kd-fs-sm); }

.kd-card__list {
	margin: var(--kd-s-4) 0 0;
	padding: 0;
	list-style: none;
}

.kd-card__list li {
	position: relative;
	padding-left: 20px;
	margin-bottom: var(--kd-s-2);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-card__list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: .6em;
	width: 10px;
	height: 1px;
	background: var(--kd-purple);
}

/* ==========================================================================
   13. Category cards
   ========================================================================== */

.kd-cats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(14px, 1.8vw, 22px);
}

.kd-cat-card {
	position: relative;
	display: block;
	overflow: hidden;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease);
}

.kd-cat-card:hover {
	transform: translateY(-4px);
	border-color: var(--kd-purple-soft);
	box-shadow: var(--kd-shadow);
}

.kd-cat-card__media {
	position: relative;
	display: block;
	aspect-ratio: 5 / 4;
	background: linear-gradient(150deg, #efeefc 0%, #ded9f6 52%, #cfc9f2 100%);
}

.kd-cat-card__media::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(96, 80, 224, .28) 1px, transparent 1px);
	background-size: 16px 16px;
	opacity: .5;
}

.kd-cat-card__glyph {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: rgba(96, 80, 224, .55);
}

.kd-cat-card__glyph svg {
	width: 76px;
	height: 76px;
}

.kd-cat-card__body {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--kd-s-3);
	padding: var(--kd-s-4);
}

.kd-cat-card__name {
	margin: 0;
	color: var(--kd-ink-900);
	font-size: 1rem;
	font-weight: 640;
}

.kd-cat-card__count {
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	white-space: nowrap;
}

/* ==========================================================================
   14. Product cards, badges, stars
   ========================================================================== */

.kd-products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(14px, 1.8vw, 22px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-products li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: var(--kd-s-3);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease);
}

.kd-products li.product:hover {
	transform: translateY(-4px);
	border-color: var(--kd-purple-soft);
	box-shadow: var(--kd-shadow);
	z-index: 2;
}

.kd-products li.product > a > img,
.kd-products li.product .kd-product__media {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	margin-bottom: var(--kd-s-3);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-surface-2);
}

.kd-product__media-link {
	display: block;
}

.kd-product__media {
	position: relative;
	display: block;
	overflow: hidden;
}

.kd-products li.product .kd-product__media--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 55%, #d3cdf3 100%);
	color: rgba(96, 80, 224, .62);
}

.kd-product__media--placeholder::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(96, 80, 224, .3) 1px, transparent 1px);
	background-size: 14px 14px;
	opacity: .55;
}

.kd-products li.product .kd-product__media--placeholder svg {
	position: relative;
	z-index: 1;
	width: 64px;
	height: 64px;
	stroke-width: 1.1;
}

.kd-product__badge {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 3;
	padding: 4px 10px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple);
	color: var(--kd-white);
	font-family: var(--kd-font-mono);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	box-shadow: var(--kd-shadow-sm);
}

.kd-product__badge--sale {
	background: var(--kd-danger);
}

.kd-product__badge--muted {
	background: var(--kd-ink-900);
}

.kd-products li.product .woocommerce-loop-product__title,
.kd-products li.product h2 {
	margin: 0 0 var(--kd-s-2);
	color: var(--kd-ink-900);
	font-size: .9375rem;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: -.005em;
}

.kd-products li.product a:hover .woocommerce-loop-product__title {
	color: var(--kd-purple-dark);
}

.kd-products li.product .price {
	margin-bottom: var(--kd-s-2);
	color: var(--kd-purple-dark);
	font-size: 1.0625rem;
	font-weight: 700;
}

.kd-products li.product .price del {
	color: var(--kd-text-3);
	font-weight: 400;
	font-size: .875rem;
}

.kd-products li.product .price ins {
	text-decoration: none;
}

.kd-product__excerpt {
	margin: 0 0 var(--kd-s-3);
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	line-height: 1.5;
}

.kd-product__actions {
	margin-top: auto;
	display: flex;
	gap: var(--kd-s-2);
}

.kd-product__actions .kd-btn {
	flex: 1 1 auto;
}

/* Stars */
.kd-stars {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	margin-bottom: var(--kd-s-2);
}

.kd-star {
	width: 14px;
	height: 14px;
	color: var(--kd-line-2);
}

.kd-star.is-filled {
	color: var(--kd-star);
}

.kd-stars__count {
	margin-left: 6px;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* ==========================================================================
   15. Promo banner
   ========================================================================== */

.kd-promo {
	position: relative;
	overflow: hidden;
	color: rgba(255, 255, 255, .8);
	background:
		radial-gradient(90% 120% at 12% 10%, rgba(255, 255, 255, .16), transparent 55%),
		linear-gradient(120deg, var(--kd-purple-dark) 0%, var(--kd-purple-darker) 55%, var(--kd-ink-800) 100%);
}

.kd-promo::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(255, 255, 255, .2) 1px, transparent 1px);
	background-size: 20px 20px;
	opacity: .3;
	pointer-events: none;
}

.kd-promo__inner {
	position: relative;
	z-index: 1;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kd-s-5);
	padding-block: clamp(36px, 5vw, 64px);
}

.kd-promo .kd-eyebrow {
	color: rgba(255, 255, 255, .66);
}

.kd-promo .kd-eyebrow__dot {
	background: rgba(255, 255, 255, .92);
	box-shadow: 0 0 0 3px rgba(255, 255, 255, .18);
}

.kd-promo__title {
	margin: 0 0 var(--kd-s-2);
	color: var(--kd-white);
	font-size: clamp(1.5rem, 2.6vw, 2.125rem);
}

.kd-promo__text {
	margin: 0;
	max-width: 40rem;
	color: rgba(255, 255, 255, .76);
	font-size: var(--kd-fs-lead);
}

/* ==========================================================================
   16. Capability band (light, subtle AI)
   ========================================================================== */

.kd-strength {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 28px);
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-strength__item {
	position: relative;
	padding: var(--kd-s-5);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
	overflow: hidden;
}

.kd-strength__item::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--kd-purple), rgba(96, 80, 224, .1));
	opacity: .8;
}

.kd-strength__num {
	display: block;
	margin-bottom: var(--kd-s-2);
	color: var(--kd-purple-dark);
	font-family: var(--kd-font-mono);
	font-size: 1.75rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -.02em;
}

.kd-strength__title {
	margin-bottom: var(--kd-s-2);
	font-size: var(--kd-fs-h3);
}

.kd-strength__text {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

/* ==========================================================================
   17. Reviews
   ========================================================================== */

.kd-reviews {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 24px);
}

.kd-review {
	display: flex;
	flex-direction: column;
	padding: var(--kd-s-5);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
}

.kd-review__text {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
	line-height: 1.7;
}

.kd-review__author {
	display: flex;
	align-items: center;
	gap: var(--kd-s-3);
	margin-top: auto;
}

.kd-review__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
	font-weight: 700;
}

.kd-review__author > span:last-child {
	display: flex;
	flex-direction: column;
}

.kd-review__name,
.kd-review__country {
	display: block;
}

.kd-review__name {
	margin: 0;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 620;
}

.kd-review__country {
	margin: 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* ==========================================================================
   18. Newsletter
   ========================================================================== */

.kd-newsletter {
	background: var(--kd-surface);
	border-block: 1px solid var(--kd-line);
}

.kd-newsletter__inner {
	max-width: 640px;
	margin-inline: auto;
	padding-block: clamp(40px, 5vw, 64px);
	text-align: center;
}

.kd-newsletter__title {
	margin-bottom: var(--kd-s-2);
}

.kd-newsletter__text {
	margin: 0 auto var(--kd-s-5);
	max-width: 34rem;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-newsletter__form {
	display: flex;
	gap: var(--kd-s-2);
	max-width: 460px;
	margin-inline: auto;
}

.kd-newsletter__input {
	flex: 1 1 auto;
	min-width: 0;
	padding: 12px 16px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.kd-newsletter__input::placeholder {
	color: var(--kd-text-3);
}

.kd-newsletter__input:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.kd-newsletter__note {
	margin: var(--kd-s-3) 0 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* ==========================================================================
   19. Footer (dark)
   ========================================================================== */

.kd-footer {
	background: var(--kd-ink-900);
	color: rgba(255, 255, 255, .66);
}

.kd-footer__top {
	display: grid;
	grid-template-columns: 1.4fr 2.6fr;
	gap: clamp(32px, 5vw, 72px);
	padding-block: clamp(40px, 5vw, 64px) var(--kd-s-6);
}

.kd-footer__logo {
	width: auto;
	height: 24px;
	margin-bottom: var(--kd-s-4);
	object-fit: contain;
}

.kd-footer__about {
	max-width: 24rem;
	margin: 0 0 var(--kd-s-4);
	color: rgba(255, 255, 255, .6);
	font-size: var(--kd-fs-sm);
}

.kd-footer__slogan {
	margin: 0;
	color: var(--kd-purple-light);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .16em;
	text-transform: uppercase;
}

.kd-footer__nav {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(20px, 3vw, 40px);
}

.kd-footer__title {
	margin-bottom: var(--kd-s-4);
	color: var(--kd-white);
	font-size: var(--kd-fs-sm);
	font-weight: 640;
	letter-spacing: .01em;
}

.kd-footer__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-footer__list li {
	margin-bottom: 10px;
}

.kd-footer__list a {
	color: rgba(255, 255, 255, .6);
	font-size: var(--kd-fs-sm);
}

.kd-footer__list a:hover {
	color: var(--kd-white);
}

.kd-footer__contact {
	margin: 0 0 var(--kd-s-4);
	color: rgba(255, 255, 255, .6);
	font-size: var(--kd-fs-sm);
}

.kd-footer__contact a {
	color: rgba(255, 255, 255, .82);
}

/* Payment + social */
.kd-footer__pay {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin-bottom: var(--kd-s-5);
}

.kd-pay {
	display: block;
	height: 22px;
	width: auto;
	padding: 4px 6px;
	background: var(--kd-white);
	border-radius: var(--kd-radius-xs);
}

.kd-social {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
}

.kd-social__item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border: 1px solid var(--kd-line-dark);
	border-radius: 50%;
	color: rgba(255, 255, 255, .72);
	transition: background-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease);
}

.kd-social__item:hover {
	background: var(--kd-purple);
	border-color: var(--kd-purple);
	color: var(--kd-white);
}

.kd-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kd-s-4);
	padding-block: var(--kd-s-5);
	border-top: 1px solid var(--kd-line-dark);
}

.kd-footer__copy {
	margin: 0;
	color: rgba(255, 255, 255, .5);
	font-size: var(--kd-fs-xs);
}

.kd-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-5);
}

.kd-footer__legal a {
	color: rgba(255, 255, 255, .55);
	font-size: var(--kd-fs-xs);
}

.kd-footer__legal a:hover {
	color: var(--kd-white);
}

.kd-footer__legal-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-5);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* ==========================================================================
   20. Empty states
   ========================================================================== */

.kd-empty {
	max-width: 44rem;
	margin-inline: auto;
	padding: clamp(32px, 5vw, 56px) clamp(24px, 4vw, 44px);
	text-align: center;
	background: var(--kd-surface);
	border: 1px dashed var(--kd-line-2);
	border-radius: var(--kd-radius-lg);
}

.kd-empty__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 68px;
	height: 68px;
	margin-bottom: var(--kd-s-4);
	border-radius: 50%;
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-empty__title {
	margin-bottom: var(--kd-s-3);
	font-size: var(--kd-fs-h3);
}

.kd-empty__text {
	margin: 0 auto var(--kd-s-5);
	max-width: 34rem;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-empty__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--kd-s-3);
}

/* ==========================================================================
   21. Blog & content (Gutenberg)
   ========================================================================== */

.kd-post-list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: clamp(18px, 2vw, 28px);
}

.kd-post-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-post-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--kd-shadow);
}

.kd-post-card__thumb {
	display: block;
	overflow: hidden;
	background: var(--kd-surface-2);
}

.kd-post-card__img {
	width: 100%;
	height: 190px;
	object-fit: cover;
	transition: transform .6s var(--kd-ease);
}

.kd-post-card:hover .kd-post-card__img {
	transform: scale(1.04);
}

.kd-post-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: var(--kd-s-5);
}

.kd-post-card__meta,
.kd-post__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-4);
	margin-bottom: var(--kd-s-3);
}

.kd-post__meta-item,
.kd-post-card__meta a,
.kd-post__meta a {
	color: var(--kd-text-3);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	text-transform: uppercase;
}

.kd-post-card__title {
	margin-bottom: var(--kd-s-3);
	font-size: 1.125rem;
	line-height: 1.4;
}

.kd-post-card__excerpt {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-post-card__more {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-2);
	margin-top: auto;
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
	font-weight: 620;
}

.kd-post__header {
	padding-block: clamp(36px, 5vw, 64px) var(--kd-s-5);
	background: var(--kd-surface);
	border-bottom: 1px solid var(--kd-line);
}

.kd-post__title {
	margin: 0;
	font-size: var(--kd-fs-h1);
}

.kd-post__media {
	padding-block: var(--kd-s-6);
}

.kd-post__thumb {
	width: 100%;
	border-radius: var(--kd-radius);
	border: 1px solid var(--kd-line);
}

.kd-post__content {
	padding-block: var(--kd-s-6);
}

.kd-post__footer {
	padding-block: var(--kd-s-6);
	border-top: 1px solid var(--kd-line);
}

.kd-post__tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin-bottom: var(--kd-s-5);
}

.kd-post__tags a {
	display: inline-block;
	padding: 5px 12px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
}

.kd-post__tags a:hover {
	border-color: var(--kd-purple);
	color: var(--kd-purple-dark);
}

.kd-post__nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--kd-s-4);
}

.kd-post__nav a {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-post__nav-next {
	margin-left: auto;
	text-align: right;
}

/* Content typography */
.kd-content,
.kd-post__content,
.entry-content {
	font-size: var(--kd-fs-body);
	color: var(--kd-text);
}

.kd-content > *:first-child {
	margin-top: 0;
}

.kd-content h2,
.kd-content h3,
.kd-content h4 {
	margin-top: var(--kd-s-7);
}

.kd-content a {
	color: var(--kd-purple-dark);
	text-decoration: underline;
	text-decoration-color: var(--kd-purple-soft);
	text-underline-offset: 3px;
}

.kd-content blockquote,
.wp-block-quote {
	margin: var(--kd-s-6) 0;
	padding: var(--kd-s-5) var(--kd-s-6);
	border-left: 3px solid var(--kd-purple);
	background: var(--kd-purple-tint);
	border-radius: 0 var(--kd-radius) var(--kd-radius) 0;
	color: var(--kd-ink-900);
	font-size: 1.0625rem;
}

.wp-block-quote cite,
.wp-block-quote__citation {
	display: block;
	margin-top: var(--kd-s-3);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	font-style: normal;
}

.kd-content pre,
.wp-block-code,
.wp-block-preformatted pre {
	padding: var(--kd-s-5);
	overflow-x: auto;
	background: var(--kd-ink-900);
	border-radius: var(--kd-radius);
	color: var(--kd-surface);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-sm);
	line-height: 1.6;
}

.kd-content code {
	padding: 2px 6px;
	background: var(--kd-purple-tint);
	border-radius: var(--kd-radius-xs);
	font-family: var(--kd-font-mono);
	font-size: .9em;
	color: var(--kd-purple-darker);
}

.kd-content pre code {
	padding: 0;
	background: none;
	color: inherit;
}

.kd-content table,
.wp-block-table table {
	width: 100%;
	border-collapse: collapse;
	margin: var(--kd-s-6) 0;
	font-size: var(--kd-fs-sm);
}

.kd-content th,
.kd-content td,
.wp-block-table th,
.wp-block-table td {
	padding: 12px 14px;
	border: 1px solid var(--kd-line);
	text-align: left;
}

.kd-content th {
	background: var(--kd-surface);
	color: var(--kd-ink-900);
}

.kd-content img,
.wp-block-image img {
	border-radius: var(--kd-radius);
}

.kd-content figcaption,
.wp-block-image figcaption,
.wp-caption-text {
	margin-top: var(--kd-s-2);
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	text-align: center;
}

.wp-caption {
	max-width: 100%;
}

.wp-block-button__link {
	display: inline-block;
	padding: 12px 28px;
	border-radius: var(--kd-radius-pill) !important;
	background: linear-gradient(135deg, var(--kd-purple), var(--kd-purple-darker));
	color: var(--kd-white);
	font-weight: 620;
}

.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	border: 1px solid var(--kd-purple);
	color: var(--kd-purple-dark);
}

.wp-block-separator {
	border: 0;
	height: 1px;
	background: var(--kd-line);
}

.wp-block-group,
.wp-block-columns {
	margin-bottom: var(--kd-s-5);
}

.wp-block-group.has-background {
	padding: var(--kd-s-5);
	border-radius: var(--kd-radius);
}

.wp-block-embed iframe {
	width: 100%;
	border-radius: var(--kd-radius);
}

.alignleft { float: left; margin: 0 var(--kd-s-5) var(--kd-s-4) 0; }
.alignright { float: right; margin: 0 0 var(--kd-s-4) var(--kd-s-5); }
.aligncenter { display: block; margin-inline: auto; }

.alignwide {
	width: 100%;
	max-width: 1100px;
	margin-inline: auto;
}

.alignfull {
	width: 100%;
	max-width: none;
	margin-inline: 0;
}

/* Editor palette classes */
.has-purple-color { color: #6050E0 !important; }
.has-purple-background-color { background-color: #6050E0 !important; color: #fff !important; }
.has-purple-dark-color { color: #4B3BB8 !important; }
.has-purple-dark-background-color { background-color: #4B3BB8 !important; color: #fff !important; }
.has-purple-darker-color { color: #372A8A !important; }
.has-purple-darker-background-color { background-color: #372A8A !important; color: #fff !important; }
.has-light-color { color: #EDEAFB !important; }
.has-light-background-color { background-color: #EDEAFB !important; color: #0b0b0c !important; }
.has-black-color { color: #0b0b0c !important; }
.has-black-background-color { background-color: #0b0b0c !important; color: #fff !important; }
.has-ink-color { color: #16161c !important; }
.has-ink-background-color { background-color: #16161c !important; color: #fff !important; }
.has-grey-color { color: #6b6b76 !important; }
.has-grey-background-color { background-color: #6b6b76 !important; color: #fff !important; }
.has-white-color { color: #ffffff !important; }
.has-white-background-color { background-color: #ffffff !important; color: #0b0b0c !important; }

.has-small-font-size { font-size: 14px; }
.has-body-font-size { font-size: 16px; }
.has-lead-font-size { font-size: 19px; }
.has-heading-font-size { font-size: 32px; }
.has-display-font-size { font-size: 56px; line-height: 1.05; }

/* Widgets */
.kd-widget {
	margin-bottom: var(--kd-s-6);
	padding: var(--kd-s-5);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
}

.kd-widget__title {
	margin-bottom: var(--kd-s-4);
	font-size: var(--kd-fs-sm);
	font-family: var(--kd-font-mono);
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--kd-text-2);
}

.kd-widget ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-widget li {
	padding: 8px 0;
	border-bottom: 1px solid var(--kd-line);
	font-size: var(--kd-fs-sm);
}

.kd-sidebar {
	margin-top: var(--kd-s-7);
}

/* ==========================================================================
   22. Page header, pagination, comments
   ========================================================================== */

.kd-page-header {
	background: var(--kd-surface);
	border-bottom: 1px solid var(--kd-line);
}

.kd-page-header .kd-container {
	padding-block: clamp(32px, 4vw, 56px);
}

.kd-page-header__title {
	margin: 0;
	font-size: var(--kd-fs-h1);
}

.kd-page-header__query {
	color: var(--kd-purple-dark);
}

.kd-page-header__desc {
	margin: var(--kd-s-3) 0 0;
	max-width: 42rem;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-lead);
}

.kd-page__body {
	padding-block: clamp(32px, 4vw, 56px);
}

.kd-page__body .kd-content {
	max-width: var(--kd-container-narrow);
}

.kd-page-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin-top: var(--kd-s-5);
}

.kd-page-links__item {
	padding: 6px 14px;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-pill);
	font-size: var(--kd-fs-sm);
}

.kd-pagination,
.navigation.pagination {
	margin-top: var(--kd-s-7);
}

.kd-pagination .nav-links,
.navigation.pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--kd-s-2);
}

.kd-pagination .page-numbers,
.navigation.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	min-height: 42px;
	padding: 0 12px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
}

.kd-pagination .page-numbers.current,
.navigation.pagination .page-numbers.current {
	background: var(--kd-purple);
	border-color: var(--kd-purple);
	color: var(--kd-white);
}

.kd-pagination .page-numbers:hover,
.navigation.pagination .page-numbers:hover {
	border-color: var(--kd-purple);
	color: var(--kd-purple-dark);
}

.kd-comments {
	max-width: var(--kd-container-narrow);
	margin-inline: auto;
	padding: var(--kd-s-6) var(--kd-gutter) var(--kd-s-8);
}

.kd-comments__title {
	font-size: var(--kd-fs-h3);
}

.kd-comments__list {
	margin: 0 0 var(--kd-s-6);
	padding: 0;
	list-style: none;
}

.kd-comments__list li {
	padding: var(--kd-s-5) 0;
	border-bottom: 1px solid var(--kd-line);
}

.kd-comments__list .comment-meta {
	margin-bottom: var(--kd-s-3);
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

.kd-comments__list .reply a {
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
}

.kd-comments__closed,
.kd-comments__protected {
	padding: var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	color: var(--kd-text-2);
	text-align: center;
}

.kd-comments input[type="text"],
.kd-comments input[type="email"],
.kd-comments input[type="url"],
.kd-comments textarea {
	width: 100%;
}

/* ==========================================================================
   23. Search form
   ========================================================================== */

.kd-search-form {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--kd-s-2);
	padding: 4px;
	background: var(--kd-surface);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	transition: border-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-search-form:focus-within {
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.kd-search-form--wide {
	max-width: 460px;
}

.kd-search-form__input {
	flex: 1 1 auto;
	min-width: 0;
	padding: 8px 14px;
	background: transparent;
	border: 0;
	color: var(--kd-ink-900);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.kd-search-form__input::placeholder {
	color: var(--kd-text-3);
}

.kd-search-form__input:focus {
	outline: none;
}

.kd-search-form__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	background: var(--kd-purple);
	border: 0;
	border-radius: 50%;
	color: var(--kd-white);
	cursor: pointer;
	transition: background-color var(--kd-dur) var(--kd-ease);
}

.kd-search-form__submit:hover {
	background: var(--kd-purple-darker);
}

/* ==========================================================================
   24. 404
   ========================================================================== */

.kd-error__inner {
	text-align: center;
}

.kd-error__code {
	margin: 0;
	font-size: clamp(5rem, 14vw, 9rem);
	font-weight: 700;
	line-height: .9;
	letter-spacing: -.05em;
	background: linear-gradient(180deg, var(--kd-purple) 20%, rgba(96, 80, 224, .12));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.kd-error__title {
	margin-top: var(--kd-s-3);
}

.kd-error__text {
	max-width: 34rem;
	margin: 0 auto var(--kd-s-6);
	color: var(--kd-text-2);
}

.kd-error__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--kd-s-3);
	margin-bottom: var(--kd-s-7);
}

.kd-error__search {
	display: flex;
	justify-content: center;
}

.kd-error__search .kd-search-form {
	width: 100%;
	max-width: 420px;
}

/* ==========================================================================
   25. WooCommerce pages
   ========================================================================== */

.kd-shop__inner {
	position: relative;
}

.kd-shop__inner::after {
	content: '';
	display: block;
	clear: both;
}

.woocommerce .kd-shop__inner > .woocommerce-breadcrumb {
	margin-bottom: var(--kd-s-5);
	color: var(--kd-text-3);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	text-transform: uppercase;
}

.woocommerce .woocommerce-breadcrumb a {
	color: var(--kd-text-2);
}

.woocommerce .woocommerce-result-count {
	float: left;
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 42px;
}

.woocommerce .woocommerce-ordering {
	float: right;
	margin: 0 0 var(--kd-s-4);
}

.woocommerce .woocommerce-ordering select {
	padding: 10px 14px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.woocommerce ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(14px, 1.8vw, 22px);
	margin: 0 0 var(--kd-s-6);
	padding: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
	display: none;
}

.woocommerce ul.products li.product {
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	display: flex;
	flex-direction: column;
	padding: var(--kd-s-3);
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease);
}

.woocommerce ul.products li.product:hover {
	transform: translateY(-4px);
	border-color: var(--kd-purple-soft);
	box-shadow: var(--kd-shadow);
	z-index: 2;
}

.woocommerce ul.products li.product img {
	margin: 0 0 var(--kd-s-3);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-surface-2);
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product h2 {
	margin: 0 0 var(--kd-s-2);
	color: var(--kd-ink-900);
	font-size: .9375rem;
	font-weight: 600;
	line-height: 1.4;
}

.woocommerce ul.products li.product .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--kd-purple-dark);
	font-size: 1.0625rem;
	font-weight: 700;
}

.woocommerce ul.products li.product .price ins { text-decoration: none; }
.woocommerce ul.products li.product .price del { color: var(--kd-text-3); font-weight: 400; font-size: .875rem; }

.woocommerce span.onsale {
	top: var(--kd-s-3) !important;
	left: var(--kd-s-3) !important;
	right: auto !important;
	min-height: 0;
	padding: 5px 10px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple);
	color: var(--kd-white);
	font-family: var(--kd-font-mono);
	font-size: 10px;
	line-height: 1.6;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce .woocommerce-Button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0 var(--kd-s-5);
	border: 1px solid transparent;
	border-radius: var(--kd-radius-pill) !important;
	background: linear-gradient(135deg, var(--kd-purple), var(--kd-purple-darker));
	color: var(--kd-white);
	font-size: .9375rem;
	font-weight: 620;
	line-height: 1;
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease);
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background: var(--kd-purple-dark);
	color: var(--kd-white);
	transform: translateY(-1px);
	box-shadow: 0 12px 28px -14px rgba(96, 80, 224, .95);
}

.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error,
.woocommerce .woocommerce-noreviews,
.woocommerce p.no-comments {
	padding: 14px 18px;
	margin-bottom: var(--kd-s-5);
	border-top: 0;
	border-radius: var(--kd-radius);
	background: var(--kd-purple-tint);
	border-left: 3px solid var(--kd-purple);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
}

.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-info::before {
	color: var(--kd-purple-dark);
}

.woocommerce .woocommerce-error {
	background: rgba(214, 69, 69, .08);
	border-left-color: var(--kd-danger);
}

.woocommerce .woocommerce-message .button {
	float: right;
}

.woocommerce div.product .product_title {
	font-size: var(--kd-fs-h2);
}

.woocommerce div.product .woocommerce-product-gallery {
	margin-bottom: var(--kd-s-6);
}

.woocommerce div.product .woocommerce-product-gallery img {
	border-radius: var(--kd-radius);
	border: 1px solid var(--kd-line);
	background: var(--kd-surface-2);
}

.woocommerce div.product .woocommerce-Price-amount {
	color: var(--kd-purple-dark);
}

.woocommerce div.product form.cart {
	margin: var(--kd-s-5) 0;
	padding: var(--kd-s-5);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-surface);
}

.woocommerce .quantity .qty {
	width: 76px;
	padding: 10px 12px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-family: inherit;
}

.woocommerce div.product .woocommerce-tabs {
	margin-top: var(--kd-s-7);
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin: 0 0 var(--kd-s-5);
	padding: 0;
	list-style: none;
	border-bottom: 1px solid var(--kd-line);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	padding: 10px 18px;
	margin: 0;
	border: 1px solid transparent;
	border-radius: var(--kd-radius-sm) var(--kd-radius-sm) 0 0;
	background: none;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
	display: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	background: var(--kd-purple-tint);
	border-color: var(--kd-purple-soft);
	color: var(--kd-purple-dark);
}

.woocommerce div.product .woocommerce-tabs .panel {
	padding: var(--kd-s-5);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
}

.woocommerce .related.products,
.woocommerce .upsells.products {
	margin-top: var(--kd-s-7);
}

.woocommerce .related.products > h2,
.woocommerce .upsells.products > h2 {
	font-size: var(--kd-fs-h3);
}

.woocommerce table.shop_table {
	border-collapse: collapse;
	border-radius: var(--kd-radius);
	overflow: hidden;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: 14px;
	border-color: var(--kd-line);
	color: var(--kd-text);
}

.woocommerce table.shop_table thead th {
	background: var(--kd-surface);
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
}

.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-checkout .checkout {
	padding: var(--kd-s-5);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
	padding: 12px 14px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.woocommerce form .form-row label {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.woocommerce .woocommerce-MyAccount-navigation ul {
	margin: 0 0 var(--kd-s-6);
	padding: 0;
	list-style: none;
}

.woocommerce .woocommerce-MyAccount-navigation ul li {
	border-bottom: 1px solid var(--kd-line);
}

.woocommerce .woocommerce-MyAccount-navigation ul li a {
	display: block;
	padding: 12px 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.woocommerce .woocommerce-MyAccount-navigation ul li.is-active a {
	color: var(--kd-purple-dark);
}

.woocommerce .woocommerce-MyAccount-content {
	padding: var(--kd-s-5);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
}

.woocommerce .woocommerce-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin: var(--kd-s-6) 0 0;
	padding: 0;
	list-style: none;
	border: 0;
}

.woocommerce .woocommerce-pagination .page-numbers li { border: 0; }

.woocommerce .woocommerce-pagination .page-numbers a,
.woocommerce .woocommerce-pagination .page-numbers span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	min-height: 42px;
	padding: 0 12px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
}

.woocommerce .woocommerce-pagination .page-numbers .current {
	background: var(--kd-purple);
	border-color: var(--kd-purple);
	color: var(--kd-white);
}

.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content {
	background: var(--kd-surface-3);
	border-radius: var(--kd-radius-pill);
}

.woocommerce .widget_price_filter .ui-slider .ui-slider-handle,
.woocommerce .widget_price_filter .ui-slider .ui-slider-range {
	background: var(--kd-purple);
	border: 0;
}

.woocommerce .star-rating::before,
.woocommerce .star-rating span::before {
	color: var(--kd-star);
}

.woocommerce-product-search {
	display: flex;
	gap: var(--kd-s-2);
}

.woocommerce-product-search input[type="search"] {
	flex: 1 1 auto;
	padding: 10px 14px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	color: var(--kd-text);
}

.woocommerce .cart-empty {
	padding: var(--kd-s-6);
	text-align: center;
}

.woocommerce .return-to-shop {
	text-align: center;
}

.kd-content input[type="text"],
.kd-content input[type="email"],
.kd-content input[type="url"],
.kd-content input[type="search"],
.kd-content textarea,
.kd-content select {
	padding: 12px 14px;
	background: var(--kd-white);
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.kd-content input:focus,
.kd-content textarea:focus,
.kd-content select:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

/* ==========================================================================
   25A. Breadcrumb & mini headings
   ========================================================================== */

.kd-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kd-s-2);
	margin: 0 0 var(--kd-s-5);
	color: var(--kd-text-3);
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .06em;
	text-transform: uppercase;
}

.kd-breadcrumb a {
	color: var(--kd-text-2);
}

.kd-breadcrumb a:hover {
	color: var(--kd-purple-dark);
}

.kd-breadcrumb__sep {
	opacity: .55;
}

.kd-breadcrumb span:not(.kd-breadcrumb__sep) {
	color: var(--kd-ink-900);
}

.kd-mini-head {
	margin: 0;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-h2);
	font-weight: 650;
}

/* ==========================================================================
   25B. Product detail page
   ========================================================================== */

.kd-pdp {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: start;
}

@media screen and (max-width: 1000px) {
	.kd-pdp {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-pdp__gallery {
	position: relative;
}

.kd-pdp__main {
	position: relative;
	aspect-ratio: 1 / 1;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-lg);
	background: var(--kd-surface-2);
	overflow: hidden;
}

.kd-pdp__slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 55%, #d3cdf3 100%);
	color: rgba(96, 80, 224, .62);
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--kd-dur) var(--kd-ease), visibility var(--kd-dur) var(--kd-ease);
}

.kd-pdp__slide.is-active {
	opacity: 1;
	visibility: visible;
}

.kd-pdp__slide:nth-child(2) {
	background: linear-gradient(150deg, #eef3fe 0%, #dde6fb 55%, #cdd9f6 100%);
	color: rgba(46, 92, 178, .58);
}

.kd-pdp__slide:nth-child(3) {
	background: linear-gradient(150deg, #eefaf5 0%, #dcf2e9 55%, #c9e9dd 100%);
	color: rgba(24, 122, 94, .55);
}

.kd-pdp__slide:nth-child(4) {
	background: linear-gradient(150deg, #f6f2fe 0%, #eae2fb 55%, #dbd0f5 100%);
	color: rgba(118, 66, 196, .55);
}

.kd-pdp__slide::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(currentColor 1px, transparent 1px);
	background-size: 16px 16px;
	opacity: .22;
	pointer-events: none;
}

.kd-pdp__slide .kd-icon {
	position: relative;
	z-index: 1;
	width: min(32%, 176px);
	height: auto;
	stroke-width: .9;
}

.kd-pdp__badge {
	position: absolute;
	top: 16px;
	left: 16px;
	z-index: 2;
	padding: 5px 12px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple);
	color: var(--kd-white);
	font-size: var(--kd-fs-xs);
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.kd-pdp__thumbs {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--kd-s-2);
	margin-top: var(--kd-s-2);
	padding: 0;
	list-style: none;
}

.kd-pdp__thumb {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 1 / 1;
	padding: 0;
	border: 1px solid transparent;
	border-radius: var(--kd-radius-sm);
	background: linear-gradient(150deg, #f8f7fe 0%, #ebe8fa 100%);
	color: rgba(96, 80, 224, .55);
	cursor: pointer;
	transition: border-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-pdp__thumb:hover {
	border-color: var(--kd-purple);
	color: var(--kd-purple-dark);
}

.kd-pdp__thumb.is-active {
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.kd-pdp__thumbs li:nth-child(2) .kd-pdp__thumb {
	background: linear-gradient(150deg, #f4f7fe 0%, #e3eafb 100%);
	color: rgba(46, 92, 178, .5);
}

.kd-pdp__thumbs li:nth-child(3) .kd-pdp__thumb {
	background: linear-gradient(150deg, #f2fbf7 0%, #e0f2ea 100%);
	color: rgba(24, 122, 94, .48);
}

.kd-pdp__thumbs li:nth-child(4) .kd-pdp__thumb {
	background: linear-gradient(150deg, #f8f4fe 0%, #eae3fa 100%);
	color: rgba(118, 66, 196, .48);
}

.kd-pdp__thumb .kd-icon {
	width: 40px;
	height: 40px;
	stroke-width: 1.2;
}

.kd-pdp__summary {
	min-width: 0;
}

.kd-pdp__title {
	margin: 0 0 var(--kd-s-2);
	color: var(--kd-ink-900);
	font-size: clamp(1.5rem, 2.4vw, 2.125rem);
	font-weight: 680;
	letter-spacing: -.018em;
	line-height: 1.2;
}

.kd-pdp__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kd-s-4);
	margin-bottom: var(--kd-s-4);
	font-size: var(--kd-fs-sm);
	color: var(--kd-text-2);
}

.kd-pdp__sku {
	font-family: var(--kd-font-mono);
	font-size: var(--kd-fs-xs);
	letter-spacing: .1em;
	text-transform: uppercase;
}

.kd-pdp__rating {
	display: inline-flex;
	align-items: center;
	gap: var(--kd-s-2);
}

.kd-pdp__price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--kd-s-3);
	margin: 0 0 var(--kd-s-5);
	padding-bottom: var(--kd-s-5);
	border-bottom: 1px solid var(--kd-line);
}

.kd-pdp__price-now {
	color: var(--kd-ink-900);
	font-size: clamp(1.75rem, 3vw, 2.25rem);
	font-weight: 700;
	letter-spacing: -.02em;
	font-variant-numeric: tabular-nums;
}

.kd-pdp__price-was {
	color: var(--kd-text-3);
	font-size: 1rem;
	text-decoration: line-through;
	font-variant-numeric: tabular-nums;
}

.kd-pdp__off {
	padding: 4px 10px;
	border-radius: var(--kd-radius-pill);
	background: rgba(214, 69, 69, .1);
	color: var(--kd-danger);
	font-size: var(--kd-fs-xs);
	font-weight: 700;
	letter-spacing: .04em;
}

.kd-pdp__bullets {
	display: grid;
	gap: var(--kd-s-2);
	margin: 0 0 var(--kd-s-5);
	padding: 0;
	list-style: none;
}

.kd-pdp__bullets li {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-pdp__bullets li::before {
	content: '\2713';
	margin-right: var(--kd-s-2);
	color: var(--kd-purple);
	font-weight: 700;
}

.kd-pdp__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kd-s-3);
	margin-bottom: var(--kd-s-5);
}

/* On a phone the stepper and the two buy buttons each get their own row, so
   nothing is squeezed or half-width. */
@media screen and (max-width: 560px) {
	.kd-pdp__actions {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
		gap: var(--kd-s-2);
	}

	.kd-pdp__actions .kd-pdp__qty {
		justify-self: start;
	}

	.kd-pdp__actions .kd-btn {
		width: 100%;
	}
}

.kd-pdp__qty {
	display: inline-flex;
	align-items: center;
	height: 46px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	overflow: hidden;
}

.kd-pdp__qty-btn {
	width: 42px;
	height: 100%;
	border: 0;
	background: transparent;
	color: var(--kd-text-2);
	font-size: 1.1rem;
	line-height: 1;
	cursor: pointer;
	transition: background-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease);
}

.kd-pdp__qty-btn:hover {
	background: var(--kd-surface);
	color: var(--kd-purple-dark);
}

.kd-pdp__qty-input {
	width: 48px;
	height: 100%;
	border: 0;
	background: transparent;
	color: var(--kd-ink-900);
	font-family: inherit;
	font-size: var(--kd-fs-body);
	font-weight: 600;
	text-align: center;
	-moz-appearance: textfield;
	appearance: textfield;
}

.kd-pdp__qty-input::-webkit-outer-spin-button,
.kd-pdp__qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.kd-pdp__ship {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kd-s-3);
	margin-bottom: var(--kd-s-4);
	padding: var(--kd-s-4);
	border-radius: var(--kd-radius);
	background: var(--kd-surface);
}

@media screen and (max-width: 620px) {
	.kd-pdp__ship {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-pdp__ship-item {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
	line-height: 1.5;
}

.kd-pdp__ship-item .kd-icon {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	color: var(--kd-purple);
}

.kd-pdp__ship-item strong {
	display: block;
	color: var(--kd-ink-900);
}

.kd-pdp__pay {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
}

.kd-pdp__pay-label {
	margin-right: 4px;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

.kd-pdp__section {
	padding-block: clamp(32px, 4vw, 56px);
	border-top: 1px solid var(--kd-line);
}

.kd-pdp__section:first-of-type {
	border-top: 0;
}

.kd-pdp__features {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: var(--kd-s-4);
}

.kd-pdp__feature {
	padding: 20px;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	transition: transform var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-pdp__feature:hover {
	transform: translateY(-2px);
	box-shadow: var(--kd-shadow-sm);
}

.kd-pdp__feature .kd-icon {
	width: 28px;
	height: 28px;
	margin-bottom: var(--kd-s-3);
	color: var(--kd-purple);
}

.kd-pdp__feature h3 {
	margin: 0 0 6px;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-body);
	font-weight: 650;
}

.kd-pdp__feature p {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.6;
}

.kd-pdp__specs {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	overflow: hidden;
}

.kd-pdp__specs th,
.kd-pdp__specs td {
	padding: 12px 16px;
	border-bottom: 1px solid var(--kd-line);
	font-size: var(--kd-fs-sm);
	text-align: left;
	vertical-align: top;
}

.kd-pdp__specs tr:last-child th,
.kd-pdp__specs tr:last-child td {
	border-bottom: 0;
}

.kd-pdp__specs th {
	width: 240px;
	background: var(--kd-surface);
	color: var(--kd-text-2);
	font-weight: 500;
}

.kd-pdp__specs td {
	color: var(--kd-text);
}

@media screen and (max-width: 620px) {
	.kd-pdp__specs th {
		width: 120px;
	}
}

.kd-pdp__desc h3 {
	margin: var(--kd-s-6) 0 var(--kd-s-3);
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-h3);
}

.kd-pdp__desc h3:first-child {
	margin-top: 0;
}

.kd-pdp__desc p {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-body);
	line-height: 1.75;
}

.kd-pdp__desc ul {
	margin: 0 0 var(--kd-s-4);
	padding-left: 20px;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-body);
	line-height: 1.75;
}

.kd-pdp__desc li {
	margin-bottom: 6px;
}

.kd-pdp__reviews-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--kd-s-4);
	margin-bottom: var(--kd-s-5);
}

.kd-pdp__score {
	color: var(--kd-ink-900);
	font-size: 1.5rem;
	font-weight: 700;
}

/* ==========================================================================
   25C. Cart, checkout and order summary
   ========================================================================== */

.kd-cart-layout,
.kd-checkout-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 360px;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 960px) {
	.kd-cart-layout,
	.kd-checkout-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-cart-table {
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	overflow: hidden;
}

.woocommerce .kd-cart-table table.shop_table {
	margin: 0;
	border: 0;
	border-radius: 0;
}

.woocommerce .kd-cart-table table.shop_table thead th {
	background: var(--kd-surface);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.woocommerce .kd-cart-table table.shop_table th,
.woocommerce .kd-cart-table table.shop_table td {
	padding: 16px;
	vertical-align: middle;
	border-bottom: 1px solid var(--kd-line);
	font-size: var(--kd-fs-sm);
}

.woocommerce .kd-cart-table table.shop_table tr:last-child td {
	border-bottom: 0;
}

.kd-cart-item {
	display: flex;
	gap: 14px;
	align-items: center;
	min-width: 220px;
}

.kd-cart-item__media {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	border-radius: var(--kd-radius-sm);
	background: linear-gradient(150deg, #f8f7fe 0%, #e6e2f8 100%);
	color: rgba(96, 80, 224, .6);
}

.kd-cart-item__media .kd-icon {
	width: 28px;
	height: 28px;
	stroke-width: 1.2;
}

.kd-cart-item__name {
	display: block;
	color: var(--kd-ink-900);
	font-weight: 600;
}

.kd-cart-item__name:hover {
	color: var(--kd-purple-dark);
}

.kd-cart-item__meta {
	display: block;
	margin-top: 2px;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

.kd-cart-qty {
	height: 40px;
}

.kd-cart-qty .kd-pdp__qty-btn {
	width: 34px;
	font-size: 1rem;
}

.kd-cart-qty .kd-pdp__qty-input {
	width: 38px;
	font-size: var(--kd-fs-sm);
}

.kd-cart-remove {
	border: 0;
	padding: 0;
	background: transparent;
	color: var(--kd-text-3);
	cursor: pointer;
	transition: color var(--kd-dur) var(--kd-ease);
}

.kd-cart-remove:hover {
	color: var(--kd-danger);
}

.kd-cart-coupon {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	align-items: center;
	padding: var(--kd-s-4);
	border-top: 1px solid var(--kd-line);
	background: var(--kd-surface);
}

.kd-cart-coupon__input {
	flex: 1 1 220px;
	min-width: 0;
	height: 46px;
	padding: 0 16px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
}

.kd-cart-coupon__input:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.kd-summary {
	padding: clamp(20px, 2.4vw, 28px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-sm);
}

.kd-summary__title {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-h3);
	font-weight: 650;
}

.kd-summary__items {
	margin: 0 0 var(--kd-s-3);
	padding: 0;
	list-style: none;
}

.kd-summary__item {
	display: flex;
	gap: 12px;
	align-items: center;
	padding: 10px 0;
	border-bottom: 1px solid var(--kd-line);
}

.kd-summary__item:last-child {
	border-bottom: 0;
}

.kd-summary__qty {
	flex: 0 0 auto;
	margin-left: auto;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.kd-summary__row {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 10px 0;
	border-bottom: 1px dashed var(--kd-line);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-summary__row--total {
	padding-top: var(--kd-s-4);
	border-bottom: 0;
	color: var(--kd-ink-900);
	font-size: 1.125rem;
	font-weight: 700;
}

.kd-summary__value {
	font-variant-numeric: tabular-nums;
}

.kd-summary__note {
	margin: var(--kd-s-3) 0 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	line-height: 1.6;
}

.kd-summary__actions {
	display: grid;
	gap: 10px;
	margin-top: var(--kd-s-4);
}

.kd-checkout__block {
	margin-bottom: 20px;
	padding: clamp(20px, 2.6vw, 28px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
}

.kd-checkout__title {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-h3);
	font-weight: 650;
}

.kd-options {
	display: grid;
	gap: 10px;
}

.kd-paymethod,
.kd-shipmethod {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 14px 16px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	cursor: pointer;
	transition: border-color var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-paymethod:hover,
.kd-shipmethod:hover {
	border-color: var(--kd-purple);
}

.kd-paymethod.is-active,
.kd-shipmethod.is-active {
	border-color: var(--kd-purple);
	background: var(--kd-purple-tint);
	box-shadow: var(--kd-ring);
}

.kd-paymethod input,
.kd-shipmethod input {
	margin-top: 3px;
	accent-color: var(--kd-purple);
}

.kd-paymethod__mark,
.kd-shipmethod__mark {
	display: grid;
	flex: 0 0 auto;
	place-items: center;
	width: 46px;
	height: 30px;
	border: 1px solid var(--kd-line-2);
	border-radius: 4px;
	background: var(--kd-surface);
}

.kd-paymethod__mark svg,
.kd-shipmethod__mark svg {
	width: 30px;
	height: 20px;
}

.kd-paymethod__body,
.kd-shipmethod__body {
	min-width: 0;
}

.kd-paymethod__name,
.kd-shipmethod__name {
	display: block;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 600;
}

.kd-paymethod__note,
.kd-shipmethod__note {
	display: block;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

.kd-paymethod__extra {
	margin-left: auto;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	font-variant-numeric: tabular-nums;
}

/* ==========================================================================
   25D. Form rows (checkout / contact / account)
   ========================================================================== */

.kd-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--kd-s-4);
}

@media screen and (max-width: 620px) {
	.kd-form-row {
		grid-template-columns: 1fr;
	}
}

.kd-field {
	margin-bottom: var(--kd-s-4);
	min-width: 0;
}

.kd-field:last-child {
	margin-bottom: 0;
}

.kd-field__label {
	display: block;
	margin-bottom: 6px;
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
	font-weight: 600;
}

.kd-field__label .kd-req {
	color: var(--kd-danger);
}

.kd-field__input,
.kd-field__textarea,
.kd-field__select {
	width: 100%;
	box-sizing: border-box;
	padding: 12px 14px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-white);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-body);
	line-height: 1.5;
	transition: border-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-field__textarea {
	min-height: 140px;
	resize: vertical;
}

.kd-field__input:focus,
.kd-field__textarea:focus,
.kd-field__select:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

.kd-field__input::placeholder,
.kd-field__textarea::placeholder {
	color: var(--kd-text-3);
}

.kd-field__hint {
	margin: 6px 0 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

.kd-form-note {
	display: flex;
	gap: 8px;
	align-items: center;
	margin-top: var(--kd-s-4);
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* ==========================================================================
   25E. Shop sidebar filters
   ========================================================================== */

.kd-shop-layout {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 960px) {
	.kd-shop-layout {
		grid-template-columns: minmax(0, 1fr);
	}

	.kd-shop-layout > .kd-filters {
		order: -1;
	}
}

.kd-filters {
	padding: 20px;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
}

@media screen and (min-width: 961px) {
	.kd-filters {
		position: sticky;
		top: calc(var(--kd-header-h) + 16px);
	}
}

.kd-filters__group {
	padding-bottom: 20px;
	margin-bottom: 20px;
	border-bottom: 1px solid var(--kd-line);
}

.kd-filters__group:last-child {
	padding-bottom: 0;
	margin-bottom: 0;
	border-bottom: 0;
}

.kd-filters__title {
	margin: 0 0 12px;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 650;
}

.kd-filters__list {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-filters__item {
	display: flex;
	gap: 10px;
	align-items: center;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	cursor: pointer;
}

.kd-filters__item:hover {
	color: var(--kd-purple-dark);
}

.kd-filters__item input[type="checkbox"],
.kd-filters__item input[type="radio"] {
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	accent-color: var(--kd-purple);
	cursor: pointer;
}

.kd-filters__count {
	margin-left: auto;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	font-variant-numeric: tabular-nums;
}

.kd-range {
	position: relative;
	height: 4px;
	margin: 20px 0 14px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-surface-3);
}

.kd-range__fill {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 18%;
	right: 22%;
	border-radius: inherit;
	background: var(--kd-purple);
}

.kd-range__thumb {
	position: absolute;
	top: 50%;
	width: 16px;
	height: 16px;
	border: 2px solid var(--kd-purple);
	border-radius: 50%;
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	transform: translate(-50%, -50%);
}

.kd-range__value {
	display: flex;
	justify-content: space-between;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
	font-variant-numeric: tabular-nums;
}

.kd-shop-toolbar {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: var(--kd-s-4);
	margin-bottom: 20px;
	padding-bottom: var(--kd-s-4);
	border-bottom: 1px solid var(--kd-line);
}

.kd-shop-toolbar__count {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-sort {
	height: 42px;
	padding: 0 14px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-text);
	font-family: inherit;
	font-size: var(--kd-fs-sm);
	cursor: pointer;
}

.kd-sort:focus {
	outline: none;
	border-color: var(--kd-purple);
	box-shadow: var(--kd-ring);
}

/* ==========================================================================
   25F. Contact page
   ========================================================================== */

.kd-contact-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 960px) {
	.kd-contact-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-contact__card {
	padding: clamp(20px, 3vw, 32px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-sm);
}

.kd-contact__info {
	display: grid;
	gap: var(--kd-s-4);
}

.kd-contact__item {
	display: flex;
	gap: 12px;
	padding: var(--kd-s-4);
	border-radius: var(--kd-radius);
	background: var(--kd-surface);
}

.kd-contact__item .kd-icon {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	color: var(--kd-purple);
}

.kd-contact__item strong {
	display: block;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
}

.kd-contact__item span {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-contact__item a {
	color: var(--kd-purple-dark);
}

.kd-map {
	display: grid;
	place-items: center;
	aspect-ratio: 16 / 9;
	border-radius: var(--kd-radius);
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 100%);
	overflow: hidden;
}

.kd-map svg {
	width: 100%;
	height: 100%;
	display: block;
}

.kd-faq {
	display: grid;
	gap: 10px;
}

.kd-faq__item {
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	overflow: hidden;
}

.kd-faq__q {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 20px;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-body);
	font-weight: 600;
	cursor: pointer;
	list-style: none;
}

.kd-faq__q::-webkit-details-marker {
	display: none;
}

.kd-faq__q::after {
	content: '+';
	color: var(--kd-purple);
	font-weight: 700;
}

.kd-faq__item[open] .kd-faq__q::after {
	content: '\2212';
}

.kd-faq__a {
	padding: 0 20px 18px;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.7;
}

.kd-faq__a p {
	margin: 0;
}

/* ==========================================================================
   25G. Blog & article extras
   ========================================================================== */

.kd-blog-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 300px;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 960px) {
	.kd-blog-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin-bottom: var(--kd-s-5);
}

.kd-pill {
	padding: 8px 16px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	transition: border-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease);
}

.kd-pill:hover {
	border-color: var(--kd-purple);
	color: var(--kd-purple-dark);
}

.kd-pill.is-current {
	border-color: var(--kd-purple);
	background: var(--kd-purple);
	color: var(--kd-white);
	font-weight: 600;
}

/* Closing prompt on the catalogue page: talk to an architect. */
.kd-shop-help {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kd-s-5);
	padding: clamp(24px, 3vw, 36px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-lg);
	background: var(--kd-surface);
}

.kd-shop-help__body {
	min-width: 0;
	max-width: 60ch;
}

.kd-shop-help__title {
	margin: 0 0 6px;
	color: var(--kd-ink-900);
	font-size: clamp(1.125rem, 1.6vw, 1.375rem);
	font-weight: 650;
	letter-spacing: -.012em;
}

.kd-shop-help__text {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.65;
}

.kd-shop-help__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
}

.kd-post__share {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	align-items: center;
}

.kd-post__share-item {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	border: 1px solid var(--kd-line-2);
	border-radius: 50%;
	color: var(--kd-text-2);
	transition: color var(--kd-dur) var(--kd-ease), border-color var(--kd-dur) var(--kd-ease), background-color var(--kd-dur) var(--kd-ease);
}

.kd-post__share-item:hover {
	border-color: var(--kd-purple);
	background: var(--kd-purple-tint);
	color: var(--kd-purple);
}

.kd-post__share-item svg {
	width: 16px;
	height: 16px;
}

.kd-post-tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
}

.kd-tag {
	padding: 4px 12px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-surface-2);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
}

.kd-tag:hover {
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-related {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 20px;
}

.kd-widget ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-widget li {
	padding: 8px 0;
	border-bottom: 1px solid var(--kd-line);
	font-size: var(--kd-fs-sm);
}

.kd-widget li:last-child {
	border-bottom: 0;
}

.kd-widget li a {
	color: var(--kd-text-2);
}

.kd-widget li a:hover {
	color: var(--kd-purple-dark);
}

.kd-widget .kd-search-form {
	margin-bottom: var(--kd-s-4);
}

/* ==========================================================================
   25H. My account
   ========================================================================== */

.kd-account-layout {
	display: grid;
	grid-template-columns: 240px minmax(0, 1fr);
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 960px) {
	.kd-account-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-account__nav {
	display: grid;
	gap: 4px;
	align-content: start;
	margin: 0;
	padding: 0;
	list-style: none;
}

.kd-account__nav a {
	display: block;
	padding: 10px 14px;
	border-radius: var(--kd-radius-sm);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	transition: background-color var(--kd-dur) var(--kd-ease), color var(--kd-dur) var(--kd-ease);
}

.kd-account__nav a:hover {
	background: var(--kd-surface);
	color: var(--kd-ink-900);
}

.kd-account__nav a.is-active {
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
	font-weight: 600;
}

.kd-auth {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

@media screen and (max-width: 760px) {
	.kd-auth {
		grid-template-columns: minmax(0, 1fr);
	}
}

.kd-auth__col {
	padding: clamp(20px, 3vw, 32px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-sm);
}

.kd-auth__col h2 {
	margin: 0 0 var(--kd-s-2);
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-h3);
	font-weight: 650;
}

.kd-auth__col > p {
	margin: 0 0 var(--kd-s-5);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-status {
	display: inline-block;
	padding: 4px 10px;
	border-radius: var(--kd-radius-pill);
	font-size: var(--kd-fs-xs);
	font-weight: 600;
	white-space: nowrap;
}

.kd-status--completed {
	background: rgba(23, 145, 90, .12);
	color: var(--kd-success);
}

.kd-status--processing {
	background: rgba(96, 80, 224, .12);
	color: var(--kd-purple-dark);
}

.kd-status--shipped {
	background: rgba(245, 166, 35, .16);
	color: #a3701a;
}

.kd-orders {
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	overflow: hidden;
}

.woocommerce .kd-orders table.shop_table {
	margin: 0;
	border: 0;
}

.woocommerce .kd-orders table.shop_table th,
.woocommerce .kd-orders table.shop_table td {
	padding: 14px 16px;
	border-bottom: 1px solid var(--kd-line);
	font-size: var(--kd-fs-sm);
}

.woocommerce .kd-orders table.shop_table thead th {
	background: var(--kd-surface);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
	letter-spacing: .08em;
	text-transform: uppercase;
}

.woocommerce .kd-orders table.shop_table tr:last-child td {
	border-bottom: 0;
}

@media screen and (max-width: 620px) {
	.kd-orders {
		overflow-x: auto;
	}
}

/* Small screens: the header drops the language and currency chips (both stay
   reachable from the mobile drawer) so the brand, cart and menu always fit. */
@media screen and (max-width: 560px) {
	.kd-header__actions .kd-lang,
	.kd-header__actions .kd-currency {
		display: none;
	}

	.kd-brand__logo {
		width: 132px;
		height: auto;
	}
}

/* Wide order tables scroll inside their card instead of stretching the page. */
@media screen and (max-width: 760px) {
	.kd-cart-scroll {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.kd-cart-item {
		min-width: 0;
	}

	/* The cart table turns into stacked rows on a phone so the quantity,
	   subtotal and remove controls are never clipped off-screen. */
	.kd-cart-table .kd-cart-scroll {
		overflow: visible;
	}

	.woocommerce .kd-cart-table table.cart {
		display: block;
		min-width: 0;
		border: 0;
	}

	.kd-cart-table table.cart thead {
		display: none;
	}

	.kd-cart-table table.cart tbody,
	.kd-cart-table table.cart tr,
	.kd-cart-table table.cart td {
		display: block;
		width: 100%;
	}

	.kd-cart-table table.cart tr {
		position: relative;
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: 12px 14px;
		padding: 18px 44px 18px 16px;
		border-bottom: 1px solid var(--kd-line);
	}

	.woocommerce .kd-cart-table table.cart td {
		padding: 0;
		border: 0;
	}

	.kd-cart-table table.cart td:first-child {
		flex: 1 1 100%;
	}

	.kd-cart-table table.cart td:nth-child(2) {
		flex: 1 1 100%;
		width: auto;
		color: var(--kd-text-2);
		font-size: var(--kd-fs-sm);
		font-variant-numeric: tabular-nums;
	}

	.kd-cart-table table.cart td:nth-child(2)::before {
		content: 'Unit price';
		margin-right: 8px;
		font-weight: 500;
	}

	.kd-cart-table table.cart td:nth-child(3) {
		flex: 0 0 auto;
		width: auto;
	}

	.kd-cart-table table.cart td:nth-child(4) {
		display: flex;
		align-items: baseline;
		gap: 8px;
		flex: 0 0 auto;
		width: auto;
		margin-left: auto;
		font-variant-numeric: tabular-nums;
	}

	.kd-cart-table table.cart td:nth-child(4)::before {
		content: attr(data-label);
		color: var(--kd-text-2);
		font-size: var(--kd-fs-sm);
		font-weight: 500;
	}

	.kd-cart-table table.cart td:nth-child(5) {
		position: absolute;
		top: 14px;
		right: 10px;
		width: auto;
	}

	/* Order history follows the same rule: stack the row so the status chip
	   and the order total are both readable without sideways scrolling. */
	.kd-orders .kd-cart-scroll {
		overflow: visible;
	}

	.woocommerce .kd-orders table.my_account_orders {
		display: block;
		min-width: 0;
		border: 0;
	}

	.kd-orders table.my_account_orders thead {
		display: none;
	}

	.kd-orders table.my_account_orders tbody,
	.kd-orders table.my_account_orders tr,
	.kd-orders table.my_account_orders td {
		display: block;
		width: 100%;
	}

	.kd-orders table.my_account_orders tr {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: 8px 12px;
		padding: 16px;
		border-bottom: 1px solid var(--kd-line);
	}

	.woocommerce .kd-orders table.my_account_orders td {
		padding: 0;
		border: 0;
	}

	.kd-orders table.my_account_orders td:nth-child(1) {
		order: 1;
		flex: 1 1 auto;
		width: auto;
	}

	.kd-orders table.my_account_orders td:nth-child(3) {
		order: 2;
		flex: 0 0 auto;
		width: auto;
		margin-left: auto;
	}

	.kd-orders table.my_account_orders td:nth-child(2) {
		order: 3;
		flex: 1 1 auto;
		width: auto;
		color: var(--kd-text-2);
		font-size: var(--kd-fs-sm);
	}

	.kd-orders table.my_account_orders td:nth-child(4) {
		order: 4;
		flex: 0 0 auto;
		width: auto;
		font-size: var(--kd-fs-sm);
	}

	.kd-orders table.my_account_orders td:nth-child(5) {
		order: 5;
		flex: 1 1 100%;
		width: auto;
		text-align: right;
	}
}

/* ==========================================================================
   25J. Layout corrections for the inner pages
   ========================================================================== */

/* The filtered shop column is narrower than the full grid, so give the cards
   more room: three per row reads better than four at this width. */
.woocommerce .kd-shop-layout ul.products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media screen and (max-width: 1100px) {
	.woocommerce .kd-shop-layout ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media screen and (max-width: 520px) {
	.woocommerce .kd-shop-layout ul.products {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Meta text needs to stay legible on the light page header band. */
.kd-post__meta-item,
.kd-post-card__meta {
	color: var(--kd-text-2);
}

/* Dot matrix texture so the article placeholders match the product media. */
.kd-post__thumb--placeholder,
.kd-figure-media {
	position: relative;
	overflow: hidden;
}

.kd-post__thumb--placeholder::after,
.kd-figure-media::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(96, 80, 224, .24) 1px, transparent 1px);
	background-size: 18px 18px;
	opacity: .55;
	pointer-events: none;
}

.kd-post__thumb--placeholder .kd-icon,
.kd-figure-media .kd-icon {
	position: relative;
	z-index: 1;
}

/* ==========================================================================
   25I. Media placeholders, share row and article extras
   ========================================================================== */

.kd-post-card__cat {
	display: inline-block;
	padding: 2px 8px;
	border-radius: var(--kd-radius-pill);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-xs);
	font-weight: 600;
}

.kd-post-card__img--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 190px;
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 55%, #d3cdf3 100%);
	color: rgba(96, 80, 224, .55);
}

.kd-post-card__img--placeholder .kd-icon {
	width: 56px;
	height: 56px;
	stroke-width: 1.1;
}

.kd-post__thumb--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--kd-radius);
	border: 1px solid var(--kd-line);
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 55%, #d3cdf3 100%);
	color: rgba(96, 80, 224, .55);
}

.kd-post__thumb--placeholder .kd-icon {
	width: 92px;
	height: 92px;
	stroke-width: 1;
}

.kd-post__content figure {
	margin: var(--kd-s-6) 0;
}

.kd-figure-media {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 21 / 9;
	border-radius: var(--kd-radius);
	border: 1px solid var(--kd-line);
	background: linear-gradient(150deg, #f8f7fe 0%, #eae7fa 100%);
	color: rgba(96, 80, 224, .5);
}

.kd-figure-media .kd-icon {
	width: 64px;
	height: 64px;
	stroke-width: 1;
}

.kd-post__content figcaption {
	margin-top: var(--kd-s-3);
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	text-align: center;
}

.kd-share-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kd-s-3);
	padding-bottom: var(--kd-s-5);
	margin-bottom: var(--kd-s-5);
	border-bottom: 1px solid var(--kd-line);
}

.kd-share-row__label {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	font-weight: 600;
}

.kd-post__nav-prev,
.kd-post__nav-next {
	display: inline-block;
	max-width: 100%;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-post__nav-prev:hover,
.kd-post__nav-next:hover {
	color: var(--kd-purple-dark);
}

/* ==========================================================================
   25L. About page blocks
   --------------------------------------------------------------------------
   The About page is a trust page, so it leans on the same light surfaces as
   the store and adds one dark hero plus one purple CTA for rhythm. Every
   image slot is a gradient plate with an inline SVG glyph - no bitmap.
   ========================================================================== */

/* --- generic gradient media plate ---------------------------------------- */
.kd-fig {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-lg);
	background: linear-gradient(150deg, #f2f1fd 0%, #e2def8 55%, #d3cdf3 100%);
	color: rgba(96, 80, 224, .58);
}

.kd-fig::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: radial-gradient(currentColor 1px, transparent 1px);
	background-size: 14px 14px;
	opacity: .18;
	pointer-events: none;
}

.kd-fig--wide { aspect-ratio: 16 / 10; }
.kd-fig--square { aspect-ratio: 1 / 1; }
.kd-fig--tall { aspect-ratio: 4 / 5; }

.kd-fig--blue {
	background: linear-gradient(150deg, #eef3fe 0%, #dde6fb 55%, #cdd9f6 100%);
	color: rgba(46, 92, 178, .55);
}

.kd-fig--mint {
	background: linear-gradient(150deg, #eefaf5 0%, #dcf2e9 55%, #c9e9dd 100%);
	color: rgba(24, 122, 94, .52);
}

.kd-fig--violet {
	background: linear-gradient(150deg, #f6f2fe 0%, #eae2fb 55%, #dbd0f5 100%);
	color: rgba(118, 66, 196, .52);
}

.kd-fig .kd-icon {
	position: relative;
	z-index: 1;
	width: min(38%, 96px);
	height: auto;
	stroke-width: 1;
}

.kd-fig svg.kd-fig__art {
	position: relative;
	z-index: 1;
	width: 78%;
	height: auto;
}

/* small caption / sample-data note */
.kd-note {
	margin: var(--kd-s-3) 0 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	line-height: 1.6;
}

/* --- 2. company intro + metrics ------------------------------------------ */
.kd-about-intro {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: start;
}

.kd-about-intro__copy > p {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-text-2);
	font-size: 1.0625rem;
	line-height: 1.75;
}

.kd-about-intro__copy > p:last-child { margin-bottom: 0; }

.kd-about-intro__copy strong { color: var(--kd-ink-900); font-weight: 650; }

.kd-about-intro__lead {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-ink-900);
	font-size: clamp(1.125rem, 1.6vw, 1.25rem);
	font-weight: 600;
	line-height: 1.65;
}

.kd-metrics {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--kd-s-3);
}

.kd-metric {
	padding: var(--kd-s-5);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
}

.kd-metric__num {
	display: block;
	color: var(--kd-purple-dark);
	font-size: clamp(1.75rem, 2.6vw, 2.375rem);
	font-weight: 700;
	letter-spacing: -.02em;
	font-variant-numeric: tabular-nums;
	line-height: 1.1;
}

.kd-metric__label {
	display: block;
	margin-top: 6px;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 600;
}

.kd-metric__hint {
	display: block;
	margin-top: 2px;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
}

/* --- 3. story timeline ---------------------------------------------------- */
.kd-timeline {
	position: relative;
	display: grid;
	gap: clamp(20px, 3vw, 32px);
	padding-block: var(--kd-s-3);
}

.kd-timeline::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	width: 1.5px;
	background: linear-gradient(180deg, transparent, rgba(96, 80, 224, .32) 10%, rgba(96, 80, 224, .32) 90%, transparent);
	transform: translateX(-.75px);
}

.kd-tl-item {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 56px minmax(0, 1fr);
	align-items: center;
}

.kd-tl-item__card {
	grid-column: 1;
	display: grid;
	grid-template-columns: 112px minmax(0, 1fr);
	gap: var(--kd-s-4);
	align-items: center;
	padding: var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	text-align: left;
}

.kd-tl-item:nth-child(even) .kd-tl-item__card { grid-column: 3; }

.kd-tl-item__year {
	display: block;
	color: var(--kd-purple-dark);
	font-size: 1.375rem;
	font-weight: 700;
	letter-spacing: -.01em;
	font-variant-numeric: tabular-nums;
}

.kd-tl-item__title {
	margin: 0 0 4px;
	color: var(--kd-ink-900);
	font-size: 1.0625rem;
	font-weight: 650;
}

.kd-tl-item__text {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.65;
}

.kd-tl-item__dot {
	grid-column: 2;
	justify-self: center;
	width: 14px;
	height: 14px;
	border: 3px solid var(--kd-white);
	border-radius: 50%;
	background: var(--kd-purple);
	box-shadow: 0 0 0 1px var(--kd-purple-soft);
	z-index: 1;
}

.kd-tl-item__media {
	grid-column: 3;
	justify-self: start;
	width: 132px;
}

.kd-tl-item:nth-child(even) .kd-tl-item__media {
	grid-column: 1;
	justify-self: end;
}

/* --- 4. business lines ---------------------------------------------------- */
.kd-biz {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--kd-s-4);
}

.kd-biz-card {
	display: flex;
	flex-direction: column;
	padding: var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
	transition: border-color var(--kd-dur) var(--kd-ease), box-shadow var(--kd-dur) var(--kd-ease);
}

.kd-biz-card:hover {
	border-color: var(--kd-purple-soft);
	box-shadow: var(--kd-shadow-sm);
}

.kd-biz-card__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	margin-bottom: var(--kd-s-3);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-biz-card__icon .kd-icon { width: 24px; height: 24px; }

.kd-biz-card__media { margin-bottom: var(--kd-s-4); }

.kd-biz-card__title {
	margin: 0 0 4px;
	color: var(--kd-ink-900);
	font-size: 1.0625rem;
	font-weight: 680;
}

.kd-biz-card__tag {
	display: block;
	margin-bottom: var(--kd-s-2);
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-xs);
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.kd-biz-card__text {
	margin: 0 0 var(--kd-s-4);
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.65;
}

.kd-biz-card__link {
	margin-top: auto;
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
	font-weight: 600;
	text-decoration: none;
}

.kd-biz-card__link:hover { color: var(--kd-purple-darker); }

/* --- 5. product formula --------------------------------------------------- */
.kd-formula {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--kd-s-3);
	padding: clamp(24px, 4vw, 40px);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-lg);
	background:
		radial-gradient(70% 120% at 50% 0%, var(--kd-purple-tint), transparent 60%),
		var(--kd-white);
}

.kd-formula__pill {
	padding: 14px 28px;
	border: 1.5px solid var(--kd-purple);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-purple-darker);
	font-size: clamp(1rem, 1.6vw, 1.25rem);
	font-weight: 700;
	letter-spacing: -.01em;
	white-space: nowrap;
}

.kd-formula__op {
	color: var(--kd-purple);
	font-size: 1.375rem;
	font-weight: 400;
}

.kd-formula__note {
	flex: 1 1 100%;
	margin: var(--kd-s-4) 0 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.7;
	text-align: center;
}

/* --- 6. R&D and manufacturing -------------------------------------------- */
.kd-capability {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: center;
}

.kd-capability__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: var(--kd-s-4);
}

.kd-capability__item {
	display: grid;
	grid-template-columns: 28px minmax(0, 1fr);
	gap: var(--kd-s-3);
	align-items: start;
}

.kd-capability__item .kd-icon {
	width: 22px;
	height: 22px;
	margin-top: 2px;
	color: var(--kd-purple);
}

.kd-capability__title {
	display: block;
	margin-bottom: 3px;
	color: var(--kd-ink-900);
	font-size: 1rem;
	font-weight: 650;
}

.kd-capability__text {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
	line-height: 1.65;
}

/* --- 7. certification wall ------------------------------------------------ */
.kd-certs {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kd-s-4);
}

.kd-cert {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: var(--kd-s-5) var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	text-align: center;
	box-shadow: var(--kd-shadow-xs);
}

.kd-cert__badge {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 84px;
	height: 84px;
	margin-bottom: var(--kd-s-3);
	border-radius: 50%;
	background: radial-gradient(circle at 50% 45%, rgba(96, 80, 224, .07), transparent 72%);
}

.kd-cert__badge svg { width: 100%; height: 100%; }

.kd-cert__glyph {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--kd-purple-dark);
}

.kd-cert__glyph .kd-icon { width: 30px; height: 30px; }

.kd-cert__name {
	display: block;
	color: var(--kd-ink-900);
	font-size: var(--kd-fs-sm);
	font-weight: 650;
	letter-spacing: .02em;
}

.kd-cert__text {
	margin: 4px 0 0;
	color: var(--kd-text-3);
	font-size: var(--kd-fs-xs);
	line-height: 1.55;
}

/* --- 8. global footprint -------------------------------------------------- */
.kd-globe {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: center;
}

.kd-globe__figure {
	position: relative;
	padding: var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius-lg);
	background: linear-gradient(150deg, #f7f7fc 0%, #eceaf8 100%);
	overflow: hidden;
}

.kd-globe__figure svg { width: 100%; height: auto; }

.kd-globe__stat {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin-bottom: var(--kd-s-3);
}

.kd-globe__num {
	color: var(--kd-purple-dark);
	font-size: clamp(2rem, 3.4vw, 2.75rem);
	font-weight: 700;
	letter-spacing: -.02em;
	font-variant-numeric: tabular-nums;
}

.kd-globe__label {
	color: var(--kd-text-2);
	font-size: var(--kd-fs-sm);
}

.kd-globe__regions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-2);
	margin-top: var(--kd-s-4);
}

.kd-region {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 14px;
	border: 1px solid var(--kd-line-2);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
}

.kd-region__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--kd-purple);
}

/* --- 9. core values ------------------------------------------------------- */
.kd-values {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: var(--kd-s-3);
}

.kd-value {
	padding: var(--kd-s-5) var(--kd-s-4);
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow-xs);
}

.kd-value__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	margin-bottom: var(--kd-s-3);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

.kd-value__icon .kd-icon { width: 22px; height: 22px; }

.kd-value__title {
	margin: 0 0 6px;
	color: var(--kd-ink-900);
	font-size: .9375rem;
	font-weight: 680;
}

.kd-value__text {
	margin: 0;
	color: var(--kd-text-2);
	font-size: var(--kd-fs-xs);
	line-height: 1.6;
}

/* --- 10. brand spirit ----------------------------------------------------- */
.kd-spirit {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--kd-s-3);
}

.kd-spirit__word {
	padding: 12px 26px;
	border: 1px solid var(--kd-purple-soft);
	border-radius: var(--kd-radius-pill);
	background: var(--kd-white);
	color: var(--kd-purple-darker);
	font-size: clamp(.9375rem, 1.4vw, 1.125rem);
	font-weight: 650;
	letter-spacing: .02em;
}

/* --- 11. closing CTA ------------------------------------------------------ */
.kd-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kd-s-3);
}

/* pull quote used by the brand story block */
.kd-quote {
	flex: 1 1 100%;
	margin: 0;
	padding: clamp(20px, 3vw, 28px) clamp(20px, 3vw, 32px);
	border-left: 3px solid var(--kd-purple);
	border-radius: var(--kd-radius-sm);
	background: var(--kd-surface);
	text-align: left;
}

.kd-quote p {
	margin: 0 0 10px;
	color: var(--kd-text);
	font-size: 1.0625rem;
	line-height: 1.7;
}

.kd-quote cite {
	display: block;
	color: var(--kd-purple-dark);
	font-size: var(--kd-fs-sm);
	font-style: normal;
	font-weight: 650;
}

/* --- responsive ----------------------------------------------------------- */
@media screen and (max-width: 1100px) {
	.kd-biz { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.kd-values { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media screen and (max-width: 900px) {
	.kd-about-intro,
	.kd-capability,
	.kd-globe {
		grid-template-columns: minmax(0, 1fr);
	}

	.kd-globe__figure { max-width: 520px; margin-inline: auto; }
}

@media screen and (max-width: 860px) {
	/* Timeline collapses to one column with the rail running down the left. */
	.kd-timeline::before {
		left: 21px;
		transform: none;
	}

	.kd-timeline {
		gap: 16px;
	}

	.kd-tl-item {
		grid-template-columns: 42px minmax(0, 1fr);
		align-items: start;
	}

	/* One column on a phone: the year, title and copy carry the story, so the
	   small image plate is dropped instead of floating between milestones. */
	.kd-tl-item__media {
		display: none;
	}

	.kd-tl-item__dot {
		grid-column: 1;
		grid-row: 1;
		justify-self: start;
		margin-left: 14px;
		margin-top: 22px;
	}

	.kd-tl-item__card {
		grid-column: 2;
		grid-template-columns: minmax(0, 1fr);
	}

	.kd-tl-item:nth-child(even) .kd-tl-item__card { grid-column: 2; }
}

@media screen and (max-width: 760px) {
	.kd-certs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media screen and (max-width: 560px) {
	.kd-metrics,
	.kd-biz,
	.kd-values {
		grid-template-columns: minmax(0, 1fr);
	}

	/* The badge wall stays two-up on phones: it reads as a wall, not a list. */
	.kd-certs {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kd-formula__pill { padding: 12px 20px; }
	.kd-formula__op { flex: 0 0 100%; text-align: center; }
	.kd-cta__actions { flex-direction: column; align-items: stretch; }
	.kd-cta__actions .kd-btn { width: 100%; }
}

/* ==========================================================================
   26. Motion
   ========================================================================== */

@keyframes kd-pulse {
	0%   { transform: scale(.6); opacity: .9; }
	70%  { transform: scale(2.4); opacity: 0; }
	100% { transform: scale(2.4); opacity: 0; }
}

@keyframes kd-scan {
	0%   { transform: translateY(0); opacity: 0; }
	10%  { opacity: .9; }
	90%  { opacity: .9; }
	100% { transform: translateY(88vh); opacity: 0; }
}

@keyframes kd-drift {
	0%   { transform: translate3d(0, 0, 0); }
	100% { transform: translate3d(-64px, -64px, 0); }
}

/* ==========================================================================
   26A. Motion system
   --------------------------------------------------------------------------
   Restrained, Linear/Vercel-grade micro-interactions. Only transform,
   opacity and filter are animated — never a property that triggers layout or
   paint of the whole page — and every effect below is switched off by the
   reduced-motion block in section 28. Cursor glow, tilt, magnetic buttons and
   parallax are additionally gated to pointer:fine and > 860px in main.js.
   ========================================================================== */

/* --- 1. Scroll reveal: direction variants + stagger ---------------------- */
/* --kd-i is written by main.js (index of the item inside its group). */
.kd-reveal {
	opacity: 0;
	transform: translateY(16px);
	transition:
		opacity var(--kd-dur-slow) var(--kd-ease-out-expo),
		transform var(--kd-dur-slow) var(--kd-ease-out-expo);
	transition-delay: calc(var(--kd-i, 0) * 60ms);
}

.kd-reveal[data-reveal="left"] { transform: translateX(-28px); }
.kd-reveal[data-reveal="right"] { transform: translateX(28px); }
.kd-reveal[data-reveal="scale"] { transform: scale(.955); }
.kd-reveal[data-reveal="fade"] { transform: none; }

.kd-reveal.is-visible {
	opacity: 1;
	transform: none;
}

/* --- 2. Card sheen: one diagonal highlight sweeps across on hover -------- */
.kd-cat-card,
.kd-products li.product,
.kd-biz-card,
.kd-value,
.kd-metric,
.kd-cert {
	overflow: hidden;
}

.kd-cat-card::after,
.kd-products li.product::after,
.kd-biz-card::after,
.kd-value::after,
.kd-metric::after,
.kd-cert::after {
	content: '';
	position: absolute;
	top: -30%;
	bottom: -30%;
	left: 0;
	width: 45%;
	z-index: 3;
	pointer-events: none;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .5), transparent);
	transform: translateX(-170%) rotate(10deg);
	opacity: 0;
	transition: transform 420ms var(--kd-ease-out-expo), opacity 180ms linear;
}

.kd-cat-card:hover::after,
.kd-products li.product:hover::after,
.kd-biz-card:hover::after,
.kd-value:hover::after,
.kd-metric:hover::after,
.kd-cert:hover::after {
	transform: translateX(330%) rotate(10deg);
	opacity: 1;
}

/* --- 3. Border beam: a purple edge of light orbits the card -------------- */
/* @property makes the conic angle interpolatable; without it the beam simply
   stays static and the card keeps its normal border. */
@property --kd-beam {
	syntax: '<angle>';
	inherits: false;
	initial-value: 90deg;
}

@keyframes kd-beam {
	to { --kd-beam: 450deg; }
}

.kd-cat-card::before,
.kd-biz-card::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 4;
	border-radius: inherit;
	padding: 1px;
	background: conic-gradient(from var(--kd-beam),
		transparent 0deg,
		var(--kd-purple) 55deg,
		var(--kd-purple-light) 85deg,
		transparent 150deg);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask-composite: exclude;
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--kd-dur) var(--kd-ease);
}

.kd-cat-card:hover::before,
.kd-biz-card:hover::before {
	opacity: .95;
	animation: kd-beam 1.9s linear infinite;
}

/* --- 4. Buttons: glow, inner highlight, arrow nudge, press ripple -------- */
.kd-btn {
	position: relative;
	overflow: hidden;
}

.kd-btn::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 38%;
	pointer-events: none;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .4), transparent);
	transform: translateX(-130%) skewX(-12deg);
	opacity: 0;
	transition: transform 440ms var(--kd-ease-out-expo), opacity 160ms linear;
}

.kd-btn:hover::after {
	transform: translateX(430%) skewX(-12deg);
	opacity: 1;
}

.kd-btn::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	width: 170%;
	aspect-ratio: 1 / 1;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(255, 255, 255, .45), transparent 62%);
	transform: translate(-50%, -50%) scale(0);
	opacity: 0;
	pointer-events: none;
	transition: transform 520ms var(--kd-ease-out-expo), opacity 340ms linear;
}

.kd-btn:active::before {
	transform: translate(-50%, -50%) scale(1);
	opacity: .45;
}

.kd-btn--primary:hover,
.kd-btn--light:hover {
	box-shadow:
		0 12px 28px -12px rgba(96, 80, 224, .55),
		0 0 0 4px rgba(96, 80, 224, .12);
}

.kd-btn.is-added {
	box-shadow: 0 0 0 4px rgba(96, 80, 224, .16);
}

.kd-btn__tick {
	display: inline-block;
	margin-left: 6px;
	animation: kd-tick 320ms var(--kd-ease-spring) both;
}

@keyframes kd-tick {
	from { transform: scale(.4); opacity: 0; }
	to   { transform: scale(1); opacity: 1; }
}

.kd-btn .kd-icon:last-child,
.kd-section__more .kd-icon,
.kd-biz-card__link .kd-icon,
.kd-post__nav-next .kd-icon {
	transition: transform var(--kd-dur-fast) var(--kd-ease-out-expo);
}

.kd-btn:hover .kd-icon:last-child,
.kd-section__more:hover .kd-icon,
.kd-biz-card__link:hover .kd-icon,
.kd-post__nav-next:hover .kd-icon {
	transform: translateX(4px);
}

/* --- 5. Media plates: the artwork breathes, the plate clips -------------- */
.kd-fig .kd-icon,
.kd-fig svg.kd-fig__art,
.kd-products li.product .kd-product__media--placeholder svg,
.kd-cat-card__glyph svg {
	transition: transform var(--kd-dur-slow) var(--kd-ease-out-expo);
}

.kd-fig:hover .kd-icon,
.kd-fig:hover svg.kd-fig__art,
.kd-products li.product:hover .kd-product__media--placeholder svg,
.kd-cat-card:hover .kd-cat-card__glyph svg {
	transform: scale(1.06) translateY(-2px);
}

/* --- 6. Headline gradient: a slow, low-amplitude sheen ------------------- */
@keyframes kd-flow {
	from { background-position: 0% 50%; }
	to   { background-position: 200% 50%; }
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
	.kd-hero__title,
	.kd-promo__title {
		background-image: linear-gradient(100deg,
			#fff 0%, #fff 33%, #c3b9ff 50%, #fff 67%, #fff 100%);
		background-size: 220% 100%;
		-webkit-background-clip: text;
		background-clip: text;
		-webkit-text-fill-color: transparent;
		animation: kd-flow 8s linear infinite;
	}
}

/* --- 7. Data flow: packets travel the links, nodes breathe --------------- */
@keyframes kd-dash {
	to { stroke-dashoffset: -240; }
}

@keyframes kd-node {
	0%, 100% { opacity: .62; }
	50%      { opacity: 1; }
}

.kd-flow line,
.kd-flow path {
	stroke-dasharray: 5 12;
	animation: kd-dash 7s linear infinite;
}

.kd-topo__nodes circle {
	animation: kd-node 5s var(--kd-ease) infinite;
}

.kd-topo__nodes circle:nth-child(2n) { animation-delay: .7s; }
.kd-topo__nodes circle:nth-child(3n) { animation-delay: 1.5s; }
.kd-topo__nodes circle:nth-child(5n) { animation-delay: 2.4s; }

/* --- 8. Texture: a hair-thin grid on light surfaces, layered depth ------- */
.kd-section--surface {
	background-image: radial-gradient(rgba(11, 11, 12, .038) 1px, transparent 1px);
	background-size: 24px 24px;
}

.kd-hero__grid {
	background-image:
		linear-gradient(to right, rgba(255, 255, 255, .05) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255, 255, 255, .05) 1px, transparent 1px),
		linear-gradient(to right, rgba(255, 255, 255, .026) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255, 255, 255, .026) 1px, transparent 1px);
	background-size: 72px 72px, 72px 72px, 18px 18px, 18px 18px;
}

/* --- 9. Scroll progress bar (JS only updates --kd-progress) -------------- */
.kd-progress {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	z-index: 9999;
	pointer-events: none;
	background: linear-gradient(90deg, var(--kd-purple) 0%, #8b7bff 60%, #b9aeff 100%);
	transform: scaleX(var(--kd-progress, 0));
	transform-origin: 0 50%;
	will-change: transform;
}

/* --- 10. Page entrance --------------------------------------------------- */
@keyframes kd-page-in {
	from { opacity: 0; transform: translateY(8px); }
	to   { opacity: 1; transform: none; }
}

.kd-main {
	animation: kd-page-in 400ms var(--kd-ease-out-expo) both;
}

/* --- runtime elements created by main.js --------------------------------- */
/* Cursor: the solid logo dot plus a thin halo ring. The dot tracks fast, the
   ring lags behind, so the pair reads as one object with depth.            */
.kd-cursor-dot,
.kd-cursor-ring {
	position: fixed;
	top: 0;
	left: 0;
	border-radius: 50%;
	pointer-events: none;
	opacity: 0;
	transition: opacity 260ms var(--kd-ease);
	will-change: transform;
}

.kd-cursor-dot {
	width: 11px;
	height: 11px;
	margin: -5.5px 0 0 -5.5px;
	z-index: 61;
	background: #6050E0;
	box-shadow:
		0 0 12px rgba(96, 80, 224, 1),
		0 0 26px rgba(96, 80, 224, .8),
		0 0 48px rgba(96, 80, 224, .45),
		inset 0 1px 1px rgba(255, 255, 255, .4);
}

/* The ring is deliberately tight — it sits inside the dot's core glow so the
   two read as one solid shape rather than a dot plus a separate circle. */
.kd-cursor-ring {
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	z-index: 60;
	border: 1.5px solid rgba(96, 80, 224, .75);
	box-shadow:
		0 0 10px rgba(96, 80, 224, .55),
		0 0 24px rgba(96, 80, 224, .4),
		inset 0 0 10px rgba(96, 80, 224, .28);
}

/* A bright arc orbiting the ring — reads as an active scan, not decoration. */
.kd-cursor-ring::before {
	content: '';
	position: absolute;
	inset: -1.5px;
	border-radius: 50%;
	border: 1.5px solid transparent;
	border-top-color: rgba(96, 80, 224, .95);
	animation: kd-cursor-spin 2.6s linear infinite;
}

@keyframes kd-cursor-spin {
	to { transform: rotate(360deg); }
}

.kd-cursor-dot.is-awake,
.kd-cursor-ring.is-awake { opacity: 1; }

.kd-toast {
	position: fixed;
	top: 84px;
	right: clamp(16px, 3vw, 28px);
	z-index: 9996;
	display: flex;
	align-items: center;
	gap: 10px;
	max-width: 330px;
	padding: 12px 16px;
	border: 1px solid var(--kd-line);
	border-radius: var(--kd-radius);
	background: var(--kd-white);
	box-shadow: var(--kd-shadow);
	color: var(--kd-text);
	font-size: var(--kd-fs-sm);
	opacity: 0;
	transform: translateY(-10px);
	pointer-events: none;
	transition: opacity 220ms var(--kd-ease), transform 280ms var(--kd-ease-out-expo);
}

.kd-toast.is-open {
	opacity: 1;
	transform: none;
}

.kd-toast__dot {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: var(--kd-purple-tint);
	color: var(--kd-purple-dark);
}

@keyframes kd-bump {
	0%   { transform: scale(1); }
	40%  { transform: scale(1.35); }
	100% { transform: scale(1); }
}

.kd-cart__count.is-bump {
	animation: kd-bump 420ms var(--kd-ease-spring);
}

/* Gallery: cross-fade plus a whisper of scale on slide change. */
.kd-pdp__slide {
	transform: scale(1.015);
}

.kd-pdp__slide.is-active {
	transform: none;
}

/* --- degradation --------------------------------------------------------- */
@media screen and (max-width: 860px) {
	.kd-cursor-dot,
	.kd-cursor-ring {
		display: none !important;
	}

	.kd-toast {
		top: 72px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.kd-cursor-dot,
	.kd-cursor-ring,
	.kd-progress {
		display: none !important;
	}

	.kd-main {
		animation: none !important;
	}

	.kd-flow line,
	.kd-flow path,
	.kd-topo__nodes circle {
		animation: none !important;
	}
}

/* ==========================================================================
   27. Responsive
   ========================================================================== */

@media screen and (max-width: 1180px) {
	.kd-header__search {
		flex-basis: 200px;
	}

	.kd-cats,
	.kd-products,
	.woocommerce ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media screen and (max-width: 1024px) {
	.kd-nav,
	.kd-header__search {
		display: none;
	}

	.kd-nav-toggle {
		display: inline-flex;
	}

	.kd-brand {
		margin-right: auto;
	}

	.kd-hero__inner {
		grid-template-columns: 1fr;
	}

	.kd-hero__visual {
		order: -1;
		max-width: 400px;
		margin-inline: auto;
	}

	.kd-strength,
	.kd-reviews {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kd-footer__top {
		grid-template-columns: 1fr;
	}

	.kd-trust__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media screen and (max-width: 768px) {
	:root {
		--kd-header-h: 64px;
	}

	.kd-grid--2,
	.kd-grid--3,
	.kd-grid--4,
	.kd-grid--5 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kd-cats,
	.kd-products,
	.woocommerce ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kd-footer__nav {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.kd-footer__bottom {
		flex-direction: column;
		align-items: flex-start;
	}

	.kd-hero__actions {
		flex-direction: column;
		align-items: stretch;
	}

	.kd-hero__actions .kd-btn {
		width: 100%;
	}

	.kd-newsletter__form {
		flex-direction: column;
	}

	.kd-section__head {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media screen and (max-width: 560px) {
	.kd-grid--2,
	.kd-grid--3,
	.kd-grid--4,
	.kd-grid--5,
	.kd-cats,
	.kd-products,
	.woocommerce ul.products,
	.kd-strength,
	.kd-reviews {
		grid-template-columns: minmax(0, 1fr);
	}

	.kd-trust__list {
		grid-template-columns: minmax(0, 1fr);
	}

	.kd-header__cta {
		display: none;
	}
}

/* ==========================================================================
   28. Accessibility & print
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}

	.kd-reveal {
		opacity: 1 !important;
		transform: none !important;
	}

	.kd-hero__scan,
	.kd-hero__dots,
	.kd-topo__pulse circle {
		animation: none !important;
	}
}

@media print {
	.kd-header,
	.kd-mobile-nav,
	.kd-announce,
	.kd-promo,
	.kd-newsletter {
		display: none !important;
	}

	body.kd-body {
		background: #fff;
		color: #000;
	}
}
