/* =========================================================
   Design tokens — plum / sage / gold editorial palette
========================================================= */
:root {
	--plum-900: #2b1420;
	--plum-700: #6e3752;
	--plum-500: #8b4d6a;
	--plum-300: #cfa9bb;
	--plum-100: #f1e3ea;
	--sage-700: #556b3e;
	--sage-600: #6c8350;
	--sage-300: #b9c7a0;
	--sage-100: #e8eddf;
	--gold: #b99b5b;
	--paper: #faf6f0;
	--paper-deep: #f1e9dd;
	--ink: #241a1f;
	--ink-soft: #5b4a52;
	--rule: #d8c9be;
	--max: 1180px;

	--kw-font-heading: "Fraunces", Georgia, "Times New Roman", serif;
	--kw-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--kw-font-signature: "Caveat", cursive;
	--kw-radius: 4px;
	--kw-shadow: 0 4px 24px rgba(43, 20, 32, 0.08);
	--kw-shadow-hover: 0 12px 32px rgba(43, 20, 32, 0.14);
}

/* =========================================================
   Base typography & layout
========================================================= */
body {
	background: var(--paper);
	color: var(--ink);
	font-family: var(--kw-font-body);
	font-size: 16px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--kw-font-heading);
	font-weight: 450;
	color: var(--plum-900);
	line-height: 1.15;
	letter-spacing: -0.01em;
	margin: 0 0 0.5em;
}
h1 { font-size: clamp(2.2rem, 4.2vw, 3.7rem); line-height: 1.06; }
h2 { font-size: clamp(1.7rem, 2.6vw, 2.4rem); line-height: 1.12; }
h3 { font-size: clamp(1.15rem, 1.6vw, 1.4rem); font-style: italic; color: var(--plum-700); font-weight: 450; }

p { margin: 0 0 1.1em; color: var(--ink-soft); }
.kw-lede { font-size: 1.15rem; color: var(--ink); }

a { color: var(--plum-700); transition: color 0.15s ease; }
a:hover { color: var(--gold); }

.kw-container { max-width: var(--max); margin-inline: auto; padding-inline: 32px; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0; overflow: hidden;
	clip: rect(0,0,0,0);
	border: 0;
}
.kw-skip-link {
	position: absolute; top: -100px; left: 1rem;
	background: var(--plum-900); color: var(--paper);
	padding: 0.75rem 1.25rem; border-radius: var(--kw-radius); z-index: 1000;
}
.kw-skip-link:focus { top: 1rem; }

.kw-eyebrow {
	font-family: var(--kw-font-body);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--sage-700);
	display: inline-block;
	margin-bottom: 0.5em;
}

.kw-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: 3rem;
	padding-block: 0 4rem;
}
.kw-layout-standalone { padding-top: 48px; }
body.kw-no-sidebar .kw-layout { grid-template-columns: minmax(0, 1fr); }

/* =========================================================
   Buttons & forms
========================================================= */
.kw-btn, button[type="submit"] {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: var(--plum-700);
	color: var(--paper);
	border: 1px solid var(--plum-700);
	border-radius: var(--kw-radius);
	padding: 14px 26px;
	font-family: var(--kw-font-body);
	font-weight: 600;
	font-size: 0.95rem;
	letter-spacing: 0.01em;
	transition: background 0.2s ease, transform 0.2s ease;
}
.kw-btn:hover, button[type="submit"]:hover { background: var(--plum-900); color: var(--paper); transform: translateY(-1px); }
.kw-btn.kw-btn-ghost { background: transparent; color: var(--plum-700); }
.kw-btn.kw-btn-ghost:hover { background: var(--plum-100); }
.kw-btn.kw-btn-on-dark { background: var(--paper); color: var(--plum-900); border-color: var(--paper); }
.kw-btn.kw-btn-on-dark:hover { background: var(--sage-300); }

input[type="search"], input[type="text"], input[type="email"], input[type="url"], textarea {
	border: 1px solid var(--rule);
	border-radius: var(--kw-radius);
	padding: 0.6em 0.9em;
	background: var(--paper);
	color: var(--ink);
	width: 100%;
	font-family: var(--kw-font-body);
}
input:focus, textarea:focus, a:focus, button:focus {
	outline: 2px solid var(--plum-700);
	outline-offset: 2px;
}

/* =========================================================
   Dateline bar & masthead header
========================================================= */
.kw-topbar {
	background: var(--plum-900);
	color: var(--plum-300);
	font-family: var(--kw-font-body);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}
.kw-topbar-inner { display: flex; align-items: center; justify-content: space-between; padding-block: 9px; flex-wrap: wrap; gap: 6px; }
.kw-topbar-label { opacity: 0.9; }
.kw-top-menu-list { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.kw-top-menu-list a { color: var(--plum-300); opacity: 0.9; }
.kw-top-menu-list a:hover { color: var(--sage-300); opacity: 1; }

.kw-site-header { background: var(--paper); border-bottom: 1px solid var(--rule); position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 12px rgba(43,20,32,0.06); }
.kw-site-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 20px 18px; flex-wrap: wrap; }
.kw-branding { display: flex; align-items: center; gap: 14px; }
.custom-logo { height: 52px; width: auto; }
.kw-site-title { font-family: var(--kw-font-heading); font-size: 1.5rem; font-weight: 450; color: var(--plum-900); }
.kw-site-description { margin: 0; font-size: 0.8rem; color: var(--ink-soft); }

.kw-primary-nav { display: flex; align-items: center; gap: 0.5rem; flex: 1; min-width: 0; }
.kw-primary-menu-list { display: flex; align-items: center; gap: 0; flex-wrap: nowrap; flex-shrink: 1; min-width: 0; order: 1; font-family: var(--kw-font-body); font-size: 13px; font-weight: 600; }
.kw-primary-menu-list > li { position: relative; margin-right: 24px; flex-shrink: 0; }
.kw-primary-menu-list > li:last-child { margin-right: 0; }
.kw-primary-menu-list a { color: var(--plum-900); position: relative; padding-bottom: 4px; display: inline-block; white-space: nowrap; }
.kw-primary-menu-list a::after { content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 2px; background: var(--sage-600); transition: width 0.2s ease; }
.kw-primary-menu-list a:hover::after { width: 100%; }
.kw-primary-menu-list .sub-menu {
	display: none; position: absolute; top: 100%; left: 0;
	background: var(--paper); box-shadow: var(--kw-shadow);
	border-radius: var(--kw-radius); padding: 0.5rem 0; min-width: 220px; z-index: 10;
}
.kw-primary-menu-list li:hover > .sub-menu, .kw-primary-menu-list li:focus-within > .sub-menu { display: block; }
.kw-primary-menu-list .sub-menu a { display: block; padding: 0.5rem 1rem; }

.kw-header-search-wrap { position: relative; flex-shrink: 0; margin-left: auto; order: 2; }

.kw-search-toggle {
	width: 34px; height: 34px; padding: 0;
	display: inline-flex; align-items: center; justify-content: center;
	background: transparent; color: var(--ink-soft);
	border: 1px solid var(--rule); border-radius: 50%;
}
.kw-search-toggle svg { width: 15px; height: 15px; }
.kw-search-toggle:hover { color: var(--plum-700); border-color: var(--plum-700); }
.kw-search-toggle[aria-expanded="true"] { background: var(--plum-700); color: var(--paper); border-color: var(--plum-700); }

.kw-header-search {
	display: none; align-items: center;
	position: absolute; top: calc(100% + 10px); right: 0;
	border: 1px solid var(--rule); border-radius: 999px; overflow: hidden;
	background: var(--paper); box-shadow: var(--kw-shadow); z-index: 30;
}
.kw-header-search.is-open { display: flex; }
.kw-header-search input { border: 0; border-radius: 0; padding: 0.5em 0.8em; width: 200px; font-size: 0.88rem; }
.kw-header-search button {
	background: transparent; color: var(--ink-soft); border: 0;
	display: inline-flex; align-items: center; justify-content: center;
	width: 34px; height: 34px; padding: 0; flex-shrink: 0;
}
.kw-header-search button svg { width: 15px; height: 15px; }
.kw-header-search button:hover { color: var(--plum-700); }

.kw-menu-toggle { display: none; background: transparent; border: 1px solid var(--rule); border-radius: var(--kw-radius); padding: 0.5em 0.7em; }
.kw-menu-toggle-bar, .kw-menu-toggle-bar::before, .kw-menu-toggle-bar::after { display: block; width: 22px; height: 2px; background: var(--plum-900); position: relative; }
.kw-menu-toggle-bar::before, .kw-menu-toggle-bar::after { content: ""; position: absolute; }
.kw-menu-toggle-bar::before { top: -7px; }
.kw-menu-toggle-bar::after { top: 7px; }

/* =========================================================
   Hero — photo + plum text column
========================================================= */
.kw-hero { display: flex; min-height: 520px; flex-wrap: wrap; margin-top: 20px; position: relative; }
.kw-hero-photo { flex: 1.15 1 320px; background-size: cover; background-position: center; min-height: 380px; position: relative; }
.kw-hero-photo::before {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(100deg, transparent 55%, rgba(43,20,32,0.35) 78%, var(--plum-900) 100%);
	pointer-events: none;
}
.kw-hero-text {
	flex: 1 1 320px;
	background: var(--plum-900);
	color: var(--paper);
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 56px;
	position: relative;
	overflow: hidden;
}
.kw-hero-text::after {
	content: ""; position: absolute; right: -120px; bottom: -120px;
	width: 320px; height: 320px; border-radius: 50%;
	background: radial-gradient(circle, rgba(185,155,91,0.16), transparent 70%);
}
.kw-hero-text .kw-eyebrow { color: var(--sage-300); position: relative; z-index: 1; }
.kw-hero-text h1 { color: var(--paper); position: relative; z-index: 1; }
.kw-hero-byline {
	font-family: var(--kw-font-body); font-size: 14px; font-weight: 600; color: var(--sage-300);
	display: flex; flex-wrap: wrap; align-items: center; margin-top: 18px; position: relative; z-index: 1; gap: 10px;
}
.kw-hero-byline .kw-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); display: inline-block; }
.kw-hero-text p.kw-lede { color: var(--plum-300); position: relative; z-index: 1; margin-top: 16px; }
.kw-hero-cta { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; position: relative; z-index: 1; }

/* =========================================================
   Category tiles ("portfolio" cards) — homepage
========================================================= */
.kw-section { padding: 60px 0; }
.kw-section.kw-tint { background: var(--paper-deep); }
.kw-section.kw-plum { background: var(--plum-900); color: var(--paper); }
.kw-section.kw-plum h2, .kw-section.kw-plum h3 { color: var(--paper); }
.kw-section.kw-plum p { color: var(--plum-300); }
.kw-section-head { max-width: 680px; margin-bottom: 34px; }
.kw-section-head.kw-center { max-width: none; text-align: center; margin-inline: auto; }

/* Homepage real-numbers stat strip, right below the hero */
.kw-stats-strip { background: var(--paper-deep); border-bottom: 1px solid var(--rule); }
.kw-stats-grid { display: flex; flex-wrap: wrap; justify-content: space-between; padding-block: 36px; gap: 24px; }
.kw-stat { flex: 1 1 200px; text-align: center; }
.kw-stat-num { display: block; font-family: var(--kw-font-heading); font-size: 2.4rem; font-weight: 450; color: var(--plum-900); line-height: 1; }
.kw-stat-label { display: block; margin-top: 8px; font-family: var(--kw-font-body); font-size: 0.8rem; font-weight: 600; letter-spacing: 0.03em; color: var(--ink-soft); text-transform: uppercase; }
@media (max-width: 720px) {
	.kw-stat { flex: 1 1 45%; }
}

.kw-tile-grid { display: flex; flex-wrap: wrap; }
.kw-tile {
	position: relative; border-radius: var(--kw-radius); overflow: hidden;
	min-height: 320px; background-size: cover; background-position: center;
	display: flex; align-items: flex-end;
	flex: 0 0 31.3%; width: 31.3%; margin: 0 3% 30px 0;
	box-shadow: var(--kw-shadow);
	transition: box-shadow 0.2s ease, transform 0.2s ease, background-size 0.5s ease;
}
.kw-tile:hover { box-shadow: var(--kw-shadow-hover); transform: translateY(-3px); background-size: 112%; }
.kw-tile:nth-child(3n) { margin-right: 0; }
.kw-tile::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(43,20,32,0) 35%, rgba(43,20,32,0.9) 100%); }
.kw-tile-body { position: relative; z-index: 1; padding: 22px 22px 24px; color: var(--paper); }
.kw-tile-body h3 { color: var(--paper); font-style: normal; font-size: 1.24rem; margin-bottom: 6px; }
.kw-tile-body p { color: var(--plum-100); font-size: 0.92rem; margin: 0 0 0.75em; }
.kw-tile-link { font-family: var(--kw-font-body); font-size: 0.82rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sage-300); }
.kw-tile-link:hover { color: var(--paper); }
.kw-tile-link::after { content: " \2192"; }

/* =========================================================
   Logo strips — brands worked with / columns published in
========================================================= */
.kw-logo-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 40px; }
.kw-logo-strip img { max-height: 56px; width: auto; opacity: 0.85; filter: grayscale(15%); transition: opacity 0.2s ease; }
.kw-logo-strip img:hover { opacity: 1; }
.kw-section.kw-plum .kw-logo-strip img { filter: brightness(0) invert(1); opacity: 0.8; }
.kw-section.kw-plum .kw-logo-strip img:hover { opacity: 1; }

/* =========================================================
   Cards & grids (post cards used on archives, related, latest)
========================================================= */
.kw-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.75rem; }
.kw-card { background: var(--paper); border: 1px solid var(--rule); border-radius: var(--kw-radius); overflow: hidden; display: flex; flex-direction: column; transition: box-shadow 0.2s ease, transform 0.2s ease; }
.kw-card:hover { box-shadow: var(--kw-shadow-hover); transform: translateY(-2px); }
.kw-card-thumb { aspect-ratio: 16/10; overflow: hidden; }
.kw-card-thumb img { width: 100%; height: 100%; object-fit: cover; }
.kw-card-body { padding: 1.25rem 1.4rem 1.5rem; display: flex; flex-direction: column; flex: 1; gap: 0.5rem; }
.kw-card-title { font-size: 1.1rem; margin: 0; }
.kw-card-title a:hover { color: var(--gold); }
.kw-card-excerpt { color: var(--ink-soft); font-size: 0.92rem; margin: 0; }
.kw-card-excerpt p { margin: 0; }
.kw-card-btn { align-self: flex-start; margin-top: auto; padding-top: 8px; }
.kw-btn-sm { padding: 8px 18px; font-size: 0.85rem; }

.kw-entry-meta { display: flex; align-items: center; gap: 0.75rem; font-size: 0.8rem; color: var(--ink-soft); flex-wrap: wrap; font-family: var(--kw-font-body); }
.kw-entry-category {
	background: var(--sage-100); color: var(--sage-700);
	padding: 0.25em 0.75em; border-radius: 999px; font-weight: 700;
	font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em;
}
.kw-view-all { text-align: center; margin-top: 2rem; }
.kw-view-all a { font-weight: 700; }

/* =========================================================
   Page / archive headers
========================================================= */
.kw-page-wrap { padding-block: 0 4rem; }
.kw-page-header, .kw-archive-header { margin-bottom: 2.25rem; }
.kw-page-title { font-size: 2rem; }
.kw-archive-kicker { text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.8rem; color: var(--gold); font-weight: 700; margin: 0 0 0.25rem; font-family: var(--kw-font-body); }
.kw-archive-description { color: var(--ink-soft); }
.kw-author-archive-header { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.kw-author-avatar { border-radius: 50%; }

/* Plum page-top banner — same dark section language as the homepage,
   used to open every archive-type and generic page. */
.kw-page-hero { background: var(--plum-900); padding: 56px 0 44px; margin-bottom: 48px; }
.kw-page-hero .kw-container { max-width: var(--max); }
.kw-page-hero .kw-eyebrow { color: var(--sage-300); }
.kw-page-hero h1 { color: var(--paper); margin-bottom: 0.35em; }
.kw-page-hero p { color: var(--plum-300); max-width: 680px; margin-bottom: 0; }
.kw-page-hero .kw-author-avatar { border: 3px solid var(--plum-700); margin-bottom: 1rem; }
.kw-page-hero .kw-breadcrumbs, .kw-page-hero .yoast-breadcrumb { color: var(--plum-300); margin-bottom: 1rem; }
.kw-page-hero .kw-breadcrumbs a, .kw-page-hero .yoast-breadcrumb a { color: var(--plum-300); }
.kw-page-hero .kw-breadcrumbs a:hover, .kw-page-hero .yoast-breadcrumb a:hover { color: var(--paper); }
.kw-page-hero .kw-archive-description { color: var(--plum-300); max-width: 680px; }

/* =========================================================
   Breadcrumbs
========================================================= */
.kw-breadcrumbs, .yoast-breadcrumb { font-size: 0.85rem; color: var(--ink-soft); margin-bottom: 1.5rem; font-family: var(--kw-font-body); }
.kw-breadcrumbs a { color: var(--ink-soft); }
.kw-breadcrumbs a:hover { color: var(--plum-700); }
.kw-breadcrumbs .sep { margin: 0 0.4em; }

/* =========================================================
   Single article
========================================================= */
.kw-single-article { max-width: 780px; }
.kw-article-header { margin-bottom: 1.5rem; }
.kw-article-title { font-size: 2.4rem; margin-top: 0.4rem; }
.kw-article-excerpt { font-size: 1.15rem; color: var(--ink-soft); font-style: italic; }
.kw-article-submeta { font-size: 0.85rem; color: var(--ink-soft); display: flex; gap: 1rem; font-family: var(--kw-font-body); }
.kw-article-thumb { border-radius: var(--kw-radius); overflow: hidden; margin-bottom: 2rem; }
.kw-article-thumb img { width: 100%; height: auto; }

.kw-article-content { font-size: 1.05rem; }
.kw-article-content h2 { font-size: 1.6rem; margin-top: 2rem; }
.kw-article-content h3 { font-size: 1.3rem; margin-top: 1.75rem; }
.kw-article-content img { border-radius: var(--kw-radius); height: auto; }
.kw-article-content blockquote { border-left: 4px solid var(--gold); margin: 1.5rem 0; padding: 0.25rem 1.5rem; color: var(--ink-soft); font-style: italic; font-family: var(--kw-font-heading); }
.kw-article-content ul, .kw-article-content ol { margin: 0 0 1.25em; padding-left: 1.4em; list-style: revert; }
.kw-article-content table { margin-bottom: 1.5em; }
.kw-article-content table td, .kw-article-content table th { border: 1px solid var(--rule); padding: 0.5em 0.75em; }
.kw-embed { position: relative; aspect-ratio: 16/9; }
.kw-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; }

.kw-social-share { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; margin: 2rem 0; padding-block: 1.25rem; border-block: 1px solid var(--rule); font-family: var(--kw-font-body); }
.kw-share-label { font-weight: 700; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--ink-soft); }
.kw-share-link { font-size: 0.8rem; font-weight: 600; padding: 0.4em 0.9em; border-radius: 999px; border: 1px solid var(--rule); }
.kw-share-link:hover { background: var(--plum-700); color: var(--paper); border-color: var(--plum-700); }

.kw-article-tags { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 2rem; }
.kw-tag { font-size: 0.8rem; background: var(--paper-deep); border: 1px solid var(--rule); padding: 0.3em 0.85em; border-radius: 999px; font-family: var(--kw-font-body); }
.kw-tag:hover { border-color: var(--plum-700); color: var(--plum-700); }

.kw-author-box { display: flex; gap: 1.25rem; background: var(--paper); border: 1px solid var(--rule); border-radius: var(--kw-radius); padding: 1.5rem; margin-bottom: 2.5rem; }
.kw-author-avatar { border-radius: 50%; flex-shrink: 0; }
.kw-author-name { font-size: 1.15rem; margin: 0 0 0.4rem; }
.kw-author-bio { color: var(--ink-soft); font-size: 0.92rem; }
.kw-author-link { font-weight: 700; font-size: 0.9rem; font-family: var(--kw-font-body); }

.kw-related-posts { margin-bottom: 2.5rem; }
.kw-post-nav { display: flex; justify-content: space-between; gap: 1rem; padding-block: 1.5rem; border-top: 1px solid var(--rule); font-weight: 600; margin-bottom: 2rem; font-family: var(--kw-font-body); }

/* =========================================================
   Sidebar & widgets
========================================================= */
.kw-sidebar .widget { margin-bottom: 2.25rem; }
.widget-title { font-family: var(--kw-font-heading); font-size: 1.15rem; font-style: italic; color: var(--plum-700); margin-bottom: 1rem; }
.kw-sidebar ul { list-style: none; margin: 0; padding: 0; }
.kw-sidebar li { padding-block: 0.35rem; border-bottom: 1px dashed var(--rule); }

/* =========================================================
   Comments
========================================================= */
.kw-comments { margin-top: 2.5rem; }
.kw-comments-title { font-size: 1.5rem; }
.kw-comment-list { list-style: none; margin: 0 0 2rem; padding: 0; }
.kw-comment-list .comment-body { border: 1px solid var(--rule); border-radius: var(--kw-radius); padding: 1.25rem; margin-bottom: 1rem; }
.kw-comment-list .children { list-style: none; padding-left: 2rem; }

/* =========================================================
   Footer
========================================================= */
.kw-site-footer { background: var(--plum-900); color: var(--plum-300); padding: 56px 0 28px; margin-top: 3rem; }
.kw-foot-grid { display: flex; flex-wrap: wrap; padding-bottom: 36px; border-bottom: 1px solid rgba(250,246,240,0.15); }
.kw-foot-grid > div { flex: 1 1 0; min-width: 200px; margin-right: 40px; }
.kw-foot-grid > div:first-child { flex: 1.4 1 0; }
.kw-foot-grid > div:last-child { margin-right: 0; }
.kw-site-footer h4 { color: var(--paper); font-family: var(--kw-font-body); font-size: 1.02rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.6em; }
.kw-footer-logo { margin-bottom: 0.8em; }
.kw-footer-logo .custom-logo { height: 56px; width: auto; }
.kw-site-footer p, .kw-site-footer address { color: var(--plum-300); font-size: 0.94rem; font-style: normal; }
.kw-site-footer a { color: var(--plum-300); text-decoration: none; font-size: 0.94rem; }
.kw-site-footer a:hover { color: var(--paper); }
.kw-foot-links { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.kw-foot-bottom { display: flex; justify-content: space-between; padding-top: 22px; font-size: 0.82rem; color: var(--plum-500); flex-wrap: wrap; gap: 8px; }
.kw-footer-widgets { display: grid; gap: 2rem; padding-bottom: 2rem; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kw-footer-widgets-1 { grid-template-columns: 1fr; }
.kw-footer-widgets-2 { grid-template-columns: repeat(2, 1fr); }
.kw-footer-widgets-3 { grid-template-columns: repeat(3, 1fr); }

/* =========================================================
   Homepage narrative sections — split text, pull quotes, feature,
   service grid, growth grid, verdict, FAQ, CTA band
========================================================= */
.kw-split { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 52px; }
.kw-split > .kw-split-main { flex: 1.5 1 320px; min-width: 320px; }
.kw-split > .kw-split-aside { flex: 1 1 280px; min-width: 280px; }

.kw-pull { border-top: 3px solid var(--sage-600); padding-top: 18px; }
.kw-pull .kw-pull-mark { font-family: var(--kw-font-heading); font-size: 3rem; color: var(--sage-600); line-height: 0.4; display: block; margin-bottom: 10px; }
.kw-pull p { font-family: var(--kw-font-heading); font-style: italic; font-size: 1.22rem; color: var(--plum-900); line-height: 1.35; }
.kw-pull cite { font-family: var(--kw-font-body); font-style: normal; font-size: 0.85rem; font-weight: 600; color: var(--ink-soft); letter-spacing: 0.03em; }

.kw-hero-aside {
	background: var(--paper); border: 1px solid var(--rule); border-radius: var(--kw-radius);
	padding: 30px 32px;
}
.kw-hero-aside h3 { margin-bottom: 0.5em; }

.kw-about-portrait { border-radius: var(--kw-radius); box-shadow: var(--kw-shadow); width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }

.kw-feature { display: flex; flex-wrap: wrap; background: var(--paper); border: 1px solid var(--rule); }
.kw-feature .kw-feature-art { background-size: cover; background-position: center; min-height: 340px; position: relative; flex: 0.9 1 320px; }
.kw-feature .kw-feature-art::after { content: ""; position: absolute; inset: 20px; border: 1px solid rgba(250,246,240,.45); }
.kw-feature .kw-feature-copy { flex: 1.1 1 380px; padding: 44px; }

.kw-grow-grid { display: flex; flex-wrap: wrap; gap: 48px; }
.kw-grow-grid > div { flex: 1 1 280px; min-width: 280px; }
.kw-list-plain { list-style: none; margin: 0; padding: 0; }
.kw-list-plain li { padding: 14px 0; border-bottom: 1px dashed var(--rule); color: var(--ink-soft); }
.kw-list-plain li strong { font-family: var(--kw-font-body); color: var(--plum-900); font-weight: 700; }

.kw-svc-grid { display: flex; flex-wrap: wrap; }
.kw-svc { background: var(--paper); border: 1px solid var(--rule); padding: 30px 26px; flex: 0 0 31.3%; width: 31.3%; margin: 0 3% 24px 0; box-sizing: border-box; }
.kw-svc:nth-child(3n) { margin-right: 0; }
.kw-svc .kw-svc-num { font-family: var(--kw-font-heading); font-style: italic; font-size: 1rem; color: var(--gold); display: block; margin-bottom: 10px; }
.kw-svc h3 { font-size: 1.15rem; margin-bottom: 8px; }
.kw-svc p { font-size: 0.96rem; margin-bottom: 0; }

.kw-verdict { background: var(--sage-100); border: 1px solid var(--sage-300); padding: 44px; display: flex; flex-wrap: wrap; color: var(--ink); }
.kw-verdict .kw-verdict-item { flex: 0 0 31.3%; width: 31.3%; margin-right: 3%; }
.kw-verdict .kw-verdict-item:nth-child(3n) { margin-right: 0; }
.kw-verdict .kw-verdict-item h4 { margin-bottom: 8px; color: var(--plum-900); }
.kw-verdict .kw-verdict-item p { margin: 0; font-size: 0.98rem; color: var(--ink-soft); }
.kw-signature { font-family: var(--kw-font-signature); font-size: 1.8rem; color: var(--plum-300); margin-top: 20px; }

.kw-faq-list { border-top: 1px solid var(--rule); }
.kw-faq-item { border-bottom: 1px solid var(--rule); }
.kw-faq-item summary {
	list-style: none; cursor: pointer; padding: 20px 46px 20px 4px; position: relative;
	font-family: var(--kw-font-heading); font-size: 1.1rem; color: var(--plum-900); font-style: italic;
}
.kw-faq-item summary::-webkit-details-marker { display: none; }
.kw-faq-item summary .kw-plus { position: absolute; right: 4px; top: 18px; width: 26px; height: 26px; border: 1px solid var(--sage-600); border-radius: 50%; }
.kw-faq-item summary .kw-plus::before, .kw-faq-item summary .kw-plus::after { content: ""; position: absolute; background: var(--sage-600); }
.kw-faq-item summary .kw-plus::before { left: 7px; right: 7px; top: 12px; height: 2px; }
.kw-faq-item summary .kw-plus::after { top: 7px; bottom: 7px; left: 12px; width: 2px; }
.kw-faq-item[open] summary .kw-plus::after { display: none; }
.kw-faq-item .kw-faq-a { padding: 0 4px 22px; max-width: 820px; }
.kw-faq-item .kw-faq-a p { margin: 0; }

.kw-advocacy-intro { max-width: 800px; margin: 0 auto 40px; text-align: center; }
.kw-advocacy-intro h3 { font-style: normal; font-size: 1.5rem; color: var(--plum-900); }
.kw-advocacy-intro p { text-align: left; }
.kw-readmore { text-align: center; }
.kw-readmore-toggle {
	list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 8px;
	font-family: var(--kw-font-body); font-weight: 700; font-size: 0.85rem; letter-spacing: 0.04em; text-transform: uppercase;
	color: var(--plum-700); border-bottom: 1px solid var(--gold); padding-bottom: 2px; margin-top: 4px;
}
.kw-readmore-toggle::-webkit-details-marker { display: none; }
.kw-readmore-toggle::after { content: "\2193"; color: var(--gold); transition: transform 0.2s ease; }
.kw-readmore[open] .kw-readmore-toggle::after { transform: rotate(180deg); }
.kw-readmore[open] .kw-readmore-toggle { margin-bottom: 16px; }
.kw-readmore-body { text-align: left; }
.kw-readmore-body p:last-child { margin-bottom: 0; }

/* =========================================================
   Contact page — form, notices, map
========================================================= */
.kw-form-honeypot { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.kw-contact-form { margin-top: 1.5rem; }
.kw-form-row { margin-bottom: 1.25rem; }
.kw-form-row label { display: block; font-family: var(--kw-font-body); font-weight: 600; font-size: 0.88rem; color: var(--plum-900); margin-bottom: 0.4em; }
.kw-form-row textarea { resize: vertical; }
.kw-form-notice { padding: 14px 18px; border-radius: var(--kw-radius); font-size: 0.92rem; margin-bottom: 1.5rem; }
.kw-form-notice-success { background: var(--sage-100); color: var(--sage-700); border: 1px solid var(--sage-300); }
.kw-form-notice-error { background: var(--plum-100); color: var(--plum-700); border: 1px solid var(--plum-300); }

.kw-search-form {
	display: flex; align-items: stretch; max-width: 480px;
	border: 1px solid var(--rule); border-radius: 999px; overflow: hidden;
	background: var(--paper); box-shadow: var(--kw-shadow);
}
.kw-search-field { border: 0; border-radius: 0; padding: 0.75em 1.2em; font-size: 0.95rem; flex: 1; background: transparent; }
.kw-search-field:focus { outline: none; }
.kw-search-submit {
	background: var(--plum-700); color: var(--paper); border: 0;
	padding: 0 1.5em; font-weight: 700; font-size: 0.9rem; white-space: nowrap;
}
.kw-search-submit:hover { background: var(--plum-900); }
.kw-coverage-search { margin-bottom: 2.5rem; }

/* Print Media page (/print-media/) — light-touch restyle of the existing
   WPBakery/Fusion Builder markup: background color, section title, and the
   Fusion Builder "Load More Posts" button. Content/structure untouched. */
.vc_custom_1642185021642.vc_custom_1642185021642, .vc_custom_1642188033033.vc_custom_1642188033033 { background-color: var(--paper-deep) !important; }

/* "Featured in [outlet]" press-card banners inside article content — these
   reuse the stable custom classes newBanner6/newBanner7 across ~40 posts
   (not one-off auto-generated classes), so one rule fixes all of them.
   Content/links/images untouched: background, layout containment, and card
   presentation are the only things restyled. */

/* Bug fix: WPBakery's "stretch row" (.vc_row-full-width) computes an
   inline width/margin meant to break out to the browser's full width. It
   doesn't know this page has a sidebar next to the article, so it was
   stretching straight over it. Force it back to the article column. */
.kw-single-article .vc_row-full-width {
	width: 100% !important; max-width: 100% !important;
	margin-left: 0 !important; margin-right: 0 !important;
	left: auto !important; right: auto !important; position: relative !important;
}

.newBanner6.newBanner6, .newBanner7.newBanner7 {
	background-color: transparent !important;
	padding: 0; margin: 2rem 0;
}
.newBanner6 .wpb_wrapper, .newBanner7 .wpb_wrapper { background-color: transparent !important; }

/* The nested white "inside-row" card that holds the photo/title/button */
.newBanner6 .inside-row, .newBanner7 .inside-row {
	background: var(--surface, var(--paper)) !important;
	border: 1px solid var(--rule);
	border-radius: var(--kw-radius) !important;
	box-shadow: var(--kw-shadow);
	margin: 0 !important;
	padding: 8px;
}
.newBanner6 .inside-row::before, .newBanner7 .inside-row::before {
	content: "Featured In"; display: block;
	font-family: var(--kw-font-body); font-size: 0.72rem; font-weight: 700;
	letter-spacing: 0.06em; text-transform: uppercase; color: var(--sage-700);
	padding: 14px 16px 0;
}
.newBanner6 .vc_single_image-wrapper, .newBanner7 .vc_single_image-wrapper {
	border-radius: var(--kw-radius-sm) !important; overflow: hidden; border: 0 !important;
}
.newBanner6 .vc_custom_heading, .newBanner7 .vc_custom_heading { margin-bottom: 0.4em !important; }
.newBanner6 .vc_custom_heading:first-of-type a, .newBanner7 .vc_custom_heading:first-of-type a {
	font-family: var(--kw-font-heading) !important; color: var(--plum-900) !important;
	font-style: italic; font-weight: 450 !important;
}
.newBanner6 .vc_custom_heading + .vc_custom_heading a, .newBanner7 .vc_custom_heading + .vc_custom_heading a {
	color: var(--sage-700) !important; font-weight: 700 !important; font-size: 0.85rem !important;
	text-transform: uppercase; letter-spacing: 0.04em;
}
.newBanner6 .vc_btn3-style-custom, .newBanner7 .vc_btn3-style-custom {
	background-color: var(--plum-700) !important; border-color: var(--plum-700) !important;
	border-radius: 999px !important; transition: background-color 0.2s ease;
}
.newBanner6 .vc_btn3-style-custom:hover, .newBanner7 .vc_btn3-style-custom:hover {
	background-color: var(--plum-900) !important; border-color: var(--plum-900) !important;
}
.vc_separator-has-text h4 {
	font-family: var(--kw-font-heading) !important; font-style: italic; font-weight: 450;
	color: var(--plum-900) !important; font-size: 1.6rem !important; text-transform: none !important;
}
.vc_separator-has-text .vc_sep_line { border-color: var(--gold) !important; }
.fusion-load-more-button.fusion-blog-button {
	background: var(--plum-700) !important; color: var(--paper) !important;
	border: 0 !important; border-radius: 999px !important;
	padding: 12px 32px !important; font-family: var(--kw-font-body) !important;
	font-weight: 700 !important; font-size: 0.9rem !important; letter-spacing: 0.01em;
	box-shadow: none !important; transition: background 0.2s ease;
}
.fusion-load-more-button.fusion-blog-button:hover { background: var(--plum-900) !important; }

.kw-contact-address { margin-top: 0; margin-bottom: 1em; font-style: normal; color: var(--ink-soft); }

.kw-contact-info-grid { display: flex; flex-wrap: wrap; gap: 24px; margin-top: -40px; position: relative; z-index: 2; }
.kw-contact-info-card {
	flex: 1 1 260px; background: var(--paper); border: 1px solid var(--rule); border-radius: var(--kw-radius);
	padding: 28px 26px; box-shadow: var(--kw-shadow); text-align: center;
}
.kw-contact-info-icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 48px; height: 48px; border-radius: 50%; background: var(--sage-100); color: var(--sage-700);
	margin-bottom: 14px;
}
.kw-contact-info-icon svg { width: 22px; height: 22px; }
.kw-contact-info-card h3 { font-style: normal; font-size: 1.05rem; margin-bottom: 0.5em; }
.kw-contact-info-card a, .kw-contact-info-card address { display: block; font-style: normal; color: var(--ink-soft); font-size: 0.92rem; }
.kw-contact-info-card a:hover { color: var(--plum-700); }

.kw-form-row-group { display: flex; gap: 1.5rem; }
.kw-form-row-group .kw-form-row { flex: 1; }
@media (max-width: 720px) {
	.kw-contact-info-grid { margin-top: 24px; }
	.kw-form-row-group { flex-direction: column; gap: 0; }
}
.kw-contact-map { margin-top: 24px; border-radius: var(--kw-radius); overflow: hidden; border: 1px solid var(--rule); aspect-ratio: 4 / 3; }
.kw-contact-map iframe { width: 100%; height: 100%; border: 0; display: block; }

.kw-cta-band { background: var(--plum-700); color: var(--paper); padding: 52px 0; text-align: center; }
.kw-cta-band h2 { color: var(--paper); }
.kw-cta-band p { color: var(--plum-100); max-width: 620px; margin-inline: auto; }
.kw-cta-band .kw-cta-btns { display: flex; justify-content: center; margin-top: 20px; flex-wrap: wrap; gap: 10px; }

@media (max-width: 920px) {
	.kw-svc { flex: 1 1 100%; width: 100%; margin-right: 0; }
	.kw-verdict-item { width: 100% !important; margin-right: 0 !important; margin-bottom: 24px; }
	.kw-feature { flex-direction: column; }
}

/* =========================================================
   404 / no-results
========================================================= */
.kw-404 { padding-block: 0 4rem; text-align: center; }
.kw-no-results { padding-block: 3rem 4rem; text-align: center; }
.kw-404 .kw-card-grid { text-align: left; margin-top: 1.5rem; }

/* =========================================================
   Responsive
========================================================= */
@media (max-width: 960px) {
	.kw-layout { grid-template-columns: 1fr; }
	.kw-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.kw-tile { flex: 1 1 100%; width: 100%; margin-right: 0; }
	.kw-footer-widgets { grid-template-columns: repeat(2, 1fr); }
	.kw-foot-grid { flex-direction: column; }
	.kw-foot-grid > div { margin-right: 0; margin-bottom: 24px; }
}

@media (max-width: 720px) {
	.kw-topbar { display: none; }
	.kw-menu-toggle { display: inline-flex; align-items: center; justify-content: center; }
	.kw-primary-nav {
		position: fixed; inset: 0 0 0 auto; width: min(320px, 85vw);
		background: var(--paper); flex-direction: column; align-items: stretch;
		padding: 5rem 1.5rem 2rem; transform: translateX(100%);
		transition: transform 0.25s ease; overflow-y: auto;
	}
	.kw-primary-nav.is-open { transform: translateX(0); }
	.kw-primary-menu-list { flex-direction: column; align-items: flex-start; gap: 0.25rem; width: 100%; }
	.kw-primary-menu-list > li { margin-right: 0; }
	.kw-primary-menu-list .sub-menu { position: static; box-shadow: none; padding-left: 1rem; }
	.kw-header-search-wrap { width: 100%; margin: 1rem 0 0; order: 2; }
	.kw-search-toggle { display: none; }
	.kw-header-search { display: flex; position: static; width: 100%; box-shadow: none; }
	.kw-header-search input { width: 100%; }

	.kw-card-grid { grid-template-columns: 1fr; }
	.kw-footer-widgets { grid-template-columns: 1fr; }
	.kw-article-title { font-size: 1.75rem; }
	.kw-author-box { flex-direction: column; }
	.kw-post-nav { flex-direction: column; }

	.kw-hero-text { padding: 40px 28px; text-align: center; align-items: center; order: -1; }
	.kw-hero-photo { order: 2; }
	.kw-hero-byline, .kw-hero-cta { justify-content: center; }
	.kw-page-hero { text-align: center; }
	.kw-section-head { text-align: center; margin-inline: auto; }
}

/* Hide the 8Degree Fly Menu plugin's own floating toggle everywhere —
   the theme's own hamburger covers this, so only one toggle shows at once. */
.edfm-toggle-wrapper { display: none !important; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
