/* ==========================================================================
   Worldview Impact — design system
   Ported from the Claude Design handoff (design/*.dc.html). Token names and
   values are kept identical to the design so the two stay comparable.
   ========================================================================== */

:root {
	--bg: #F7F5EE;
	--grid: rgba(23, 90, 48, 0.06);
	--nav: rgba(247, 245, 238, 0.92);
	--line: #D8E0D6;
	--line2: #E2E9E0;
	--line3: #B7CBB9;
	--card: #FFFFFF;
	--card2: #FBFCFA;
	--card2h: #EFF4ED;
	--tint: #EAF0E8;
	--ink: #17251A;
	--ink2: #2E3E31;
	--ink3: #445447;
	--ink4: #57675A;
	--ink5: #6B7B6E;
	--ink-strong: #0B150D;
	--acc: #1F7A46;
	--acch: #14512E;
	--btn-ink: #FFFFFF;
	--pfa: grayscale(1);
	--pfb: grayscale(1);
	--sel: #BFE5C8;
	--selink: #0B150D;
	--wrap: 1240px;
	--sans: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

:root.dark {
	--bg: #080D0A;
	--grid: rgba(111, 224, 138, 0.04);
	--nav: rgba(8, 13, 10, 0.92);
	--line: #1A2B1F;
	--line2: #14211A;
	--line3: #2E4A36;
	--card: #0B1710;
	--card2: #0A120D;
	--card2h: #0E1A12;
	--tint: rgba(11, 23, 16, 0.6);
	--ink: #E8EFE8;
	--ink2: #C6D5C6;
	--ink3: #A9BCA9;
	--ink4: #8DA48D;
	--ink5: #5E7A62;
	--ink-strong: #FFFFFF;
	--acc: #6FE08A;
	--acch: #9BF0AE;
	--btn-ink: #06110A;
	--pfa: grayscale(1) brightness(3);
	--pfb: grayscale(1) brightness(1.6);
	--sel: #1F5A33;
	--selink: #FFFFFF;
}

/* --------------------------------------------------------------- base */

*, *::before, *::after { box-sizing: border-box; }

html, body { margin: 0; padding: 0; background: var(--bg); }

body {
	font-family: var(--sans);
	color: var(--ink);
	background-image:
		linear-gradient(var(--grid) 1px, transparent 1px),
		linear-gradient(90deg, var(--grid) 1px, transparent 1px);
	background-size: 56px 56px;
	-webkit-font-smoothing: antialiased;
}

a { color: var(--acc); text-decoration: none; }
a:hover { color: var(--acch); }
::selection { background: var(--sel); color: var(--selink); }
img { max-width: 100%; height: auto; }

:where(h1, h2, h3, h4, h5, h6) { letter-spacing: -0.01em; text-wrap: pretty; }

:focus-visible { outline: 2px solid var(--acc); outline-offset: 2px; }

.wv-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--acc);
	color: var(--btn-ink);
	padding: 10px 18px;
	z-index: 100;
}
.wv-skip-link:focus { left: 8px; top: 8px; color: var(--btn-ink); }

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

/* ------------------------------------------- WordPress core reconciliation */
/*
 * Core marks every group as `.is-layout-flow` and injects
 * `:root :where(.is-layout-flow) > * { margin-block-start: 24px }`.
 * The design sets its own rhythm, so that margin is cleared inside design
 * containers. This block must stay ABOVE the component rules below: the
 * selectors tie on specificity with them, so source order decides, and the
 * components are what should win.
 */
.wv-hero > *,
.wv-wrap > *,
.wv-section > *,
.wv-grid > *,
.wv-card > *,
.wv-cell > *,
.wv-stat > *,
.wv-mission > *,
.wv-person > *,
.wv-partner > *,
.wv-contact-card > *,
.wv-section-head > *,
.wv-section-head__title > *,
.wv-team-group > *,
.wv-partner-group > *,
.wv-footer__cols > *,
.wv-prose > *,
.wv-news-item > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Sections must butt together (hairline borders do the separating), so the
   content wrapper gets no inter-block margin either. */
.wp-block-post-content > *,
main.wp-block-group > * {
	margin-block-start: 0;
	margin-block-end: 0;
}
.wp-block-post-content,
main.wp-block-group { padding: 0; }

/* Figures: core wraps block images in <figure> with its own margins. */
.wv-hero > * figure,
.wv-wrap > * figure,
.wv-card figure,
.wv-mission figure,
.wv-cell figure { margin: 0; }

/* --------------------------------------------------------------- layout */

.wv-wrap { max-width: var(--wrap); margin: 0 auto; padding-inline: 24px; }
.wv-section { padding: 88px 0; border-bottom: 1px solid var(--line); }
.wv-section--tight { padding: 56px 0; }
.wv-section--plain { border-bottom: 0; }

.wv-eyebrow {
	font-size: 13px;
	color: var(--acc);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin-bottom: 24px;
}

.wv-section-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	margin-bottom: 44px;
}
.wv-section-head__title { display: flex; align-items: baseline; gap: 18px; }
.wv-section-num { font-size: 14px; color: var(--acc); }

h1.wv-h1, .wv-h1 {
	font-weight: 600;
	font-size: clamp(40px, 6vw, 76px);
	line-height: 1.02;
	letter-spacing: -0.02em;
	margin: 0;
	max-width: 960px;
}
h2.wv-h2, .wv-h2 {
	font-weight: 600;
	font-size: clamp(28px, 3.4vw, 44px);
	margin: 0;
}
.wv-lede { font-size: 18px; line-height: 1.65; max-width: 640px; color: var(--ink3); margin: 28px 0 0; }
.wv-intro { font-size: 16px; line-height: 1.6; color: var(--ink3); max-width: 660px; margin: 0 0 44px; }
.wv-accent { color: var(--acc); }

/* --------------------------------------------------------------- buttons */

.wv-btn {
	display: inline-block;
	background: var(--acc);
	color: var(--btn-ink);
	font-weight: 700;
	padding: 14px 28px;
	font-size: 15px;
	letter-spacing: 0.02em;
	border: 1px solid var(--acc);
	cursor: pointer;
}
.wv-btn:hover { background: var(--acch); border-color: var(--acch); color: var(--btn-ink); }
.wv-btn--ghost { background: none; border: 1px solid var(--line3); color: var(--ink); font-weight: 600; }
.wv-btn--ghost:hover { border-color: var(--acc); color: var(--ink); background: none; }
.wv-btn--sm { padding: 9px 18px; font-size: 13px; letter-spacing: 0.1em; }
.wv-btn-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 36px; }

.wv-link-more { font-size: 13px; letter-spacing: 0.06em; text-transform: uppercase; }

/* --------------------------------------------------------------- header */

.wv-nav {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--nav);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid var(--line);
}
.wv-nav__inner {
	max-width: var(--wrap);
	margin: 0 auto;
	padding: 14px 24px;
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
}
.wv-nav__brand { display: flex; align-items: center; gap: 12px; color: var(--ink); }
.wv-nav__brand:hover { color: var(--ink); }
.wv-nav__logo {
	height: 38px; width: 38px;
	object-fit: contain;
	background: #EDF4EC;
	border-radius: 50%;
	padding: 3px;
}
.wv-nav__name { font-weight: 700; font-size: 17px; letter-spacing: 0.06em; text-transform: uppercase; }
.wv-nav__spacer { flex: 1; }
.wv-nav__menu ul {
	list-style: none;
	display: flex;
	gap: 24px;
	flex-wrap: wrap;
	margin: 0;
	padding: 0;
	font-size: 13px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.wv-nav__menu a { color: var(--ink2); padding-bottom: 2px; border-bottom: 2px solid transparent; }
.wv-nav__menu a:hover { color: var(--ink-strong); }
.wv-nav__menu .current-menu-item > a,
.wv-nav__menu .current_page_item > a,
.wv-nav__menu .current-menu-ancestor > a {
	color: var(--ink-strong);
	border-bottom-color: var(--acc);
}
.wv-theme-toggle {
	background: none;
	border: 1px solid var(--line3);
	color: var(--ink);
	padding: 8px;
	cursor: pointer;
	display: flex;
	align-items: center;
	line-height: 0;
}
.wv-theme-toggle:hover { border-color: var(--acc); color: var(--acc); }
.wv-nav__toggle { display: none; }

@media (max-width: 860px) {
	.wv-nav__toggle {
		display: flex;
		align-items: center;
		background: none;
		border: 1px solid var(--line3);
		color: var(--ink);
		padding: 8px 12px;
		font-size: 12px;
		letter-spacing: 0.1em;
		cursor: pointer;
		order: 3;
	}
	.wv-nav__spacer { order: 2; }
	.wv-nav__menu { order: 5; flex-basis: 100%; display: none; }
	.wv-nav__menu.is-open { display: block; }
	.wv-nav__menu ul { flex-direction: column; gap: 14px; padding: 10px 0 6px; }
	.wv-nav__cta { order: 4; }
}

/* --------------------------------------------------------------- hero */

.wv-hero { padding: 100px 0 80px; border-bottom: 1px solid var(--line); }
.wv-hero--sm { padding: 72px 0 56px; }
.wv-hero__photo {
	width: 100%;
	height: 320px;
	object-fit: cover;
	display: block;
	margin-top: 56px;
	border: 1px solid var(--line);
}

/* --------------------------------------------------------------- grids */

.wv-grid { display: grid; gap: 22px; }
.wv-grid--hair { gap: 1px; background: var(--line); border: 1px solid var(--line); }
/* auto-fill (not auto-fit): a group with a single card keeps its track width
   instead of stretching across the whole 1240px rail. */
.wv-grid--2 { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.wv-grid--3 { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.wv-grid--4 { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.wv-grid--wide { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }

/* stats */
.wv-stats { margin-top: 64px; }
.wv-stat { background: var(--card); padding: 24px 22px; }
.wv-stat__n { font-size: 40px; font-weight: 700; color: var(--acc); letter-spacing: -0.02em; }
.wv-stat__label {
	font-size: 12.5px;
	color: var(--ink4);
	margin-top: 8px;
	line-height: 1.5;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* service / plain cells */
.wv-cell { background: var(--card2); padding: 28px 26px; }
.wv-cell:hover { background: var(--card2h); }
.wv-cell__num { font-size: 12px; color: var(--ink5); margin-bottom: 14px; }
.wv-cell__title { font-size: 19px; font-weight: 600; color: var(--ink); }
.wv-cell__body { font-size: 15px; line-height: 1.65; color: var(--ink3); margin: 10px 0 0; }

/* mission columns */
.wv-mission { border-left: 2px solid var(--acc); padding-left: 20px; }
.wv-mission img { width: 100%; height: 170px; object-fit: cover; margin-bottom: 16px; border: 1px solid var(--line); }
.wv-mission__title { font-size: 19px; font-weight: 600; }
.wv-mission__body { font-size: 15px; line-height: 1.65; color: var(--ink4); margin: 8px 0 0; }

/* --------------------------------------------------------------- cards */
/* Ported from Projects.dc.html: image on top, padded body, footer meta row. */

.wv-card {
	background: var(--card);
	border: 1px solid var(--line);
	display: flex;
	flex-direction: column;
	cursor: pointer;
	padding: 0;
	position: relative;
}
.wv-card:hover { border-color: var(--acc); }
.wv-card__photo { width: 100%; height: 200px; object-fit: cover; display: block; border: 0; }
.wv-card__body-wrap { padding: 24px 24px 22px; display: flex; flex-direction: column; gap: 11px; flex: 1; }
.wv-card__meta { display: flex; justify-content: space-between; gap: 12px; font-size: 12px; letter-spacing: 0.08em; }
.wv-card__place { color: var(--acc); text-transform: uppercase; }
.wv-card__year { color: var(--ink5); }
.wv-card__title { font-size: 21px; font-weight: 600; line-height: 1.25; margin: 0; text-wrap: pretty; color: var(--ink); }
.wv-card__title a { color: inherit; }
.wv-card__body {
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--ink3);
	margin: 0;
	flex: 1;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.wv-card__foot {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	border-top: 1px solid var(--line);
	padding-top: 12px;
}
.wv-card__tag { font-size: 12px; color: var(--ink4); }
.wv-card__details { font-size: 12px; color: var(--acc); white-space: nowrap; }

/* --------------------------------------------------------------- filters */

.wv-filters { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 28px; }
.wv-filter {
	background: none;
	border: 1px solid var(--line3);
	color: var(--ink3);
	padding: 8px 16px;
	font-size: 13px;
	letter-spacing: 0.04em;
	font-family: inherit;
	cursor: pointer;
	text-transform: uppercase;
}
.wv-filter:hover { border-color: var(--acc); color: var(--ink); }
.wv-filter.is-active { background: var(--acc); border-color: var(--acc); color: var(--btn-ink); }
.wv-search {
	background: var(--bg);
	border: 1px solid var(--line3);
	color: var(--ink);
	padding: 9px 14px;
	font-size: 14px;
	font-family: inherit;
	min-width: 220px;
}
.wv-empty { color: var(--ink4); font-size: 15px; padding: 28px 0; }

/* --------------------------------------------------------------- team */
/* Ported from Team.dc.html: bare cards (no box), flag image + country heading. */

.wv-team-group { margin-bottom: 56px; }
.wv-team-group__head {
	display: flex;
	align-items: baseline;
	gap: 12px;
	border-bottom: 1px solid var(--line3);
	padding-bottom: 12px;
	margin-bottom: 26px;
}
.wv-team-group__flag { width: 28px; height: 21px; object-fit: cover; border: 1px solid var(--line); align-self: center; }
.wv-team-group__name { font-size: 23px; font-weight: 600; margin: 0; }
.wv-team-members { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 24px; }

.wv-person { cursor: pointer; background: none; border: 0; padding: 0; position: relative; }
.wv-person__photo {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1.1;
	object-fit: cover;
	border: 1px solid var(--line);
	background: #F3EDE0;
}
.wv-person__name { font-weight: 600; font-size: 16.5px; margin-top: 12px; color: var(--ink); }
.wv-person__role {
	font-size: 12px;
	color: var(--ink4);
	margin-top: 4px;
	line-height: 1.5;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.wv-person__view { font-size: 11.5px; color: var(--acc); margin-top: 8px; letter-spacing: 0.08em; font-weight: 700; }

.wv-lead { display: grid; grid-template-columns: minmax(220px, 300px) 1fr; gap: 36px; align-items: start; }
@media (max-width: 760px) { .wv-lead { grid-template-columns: 1fr; } }
.wv-lead__photo { width: 100%; object-fit: cover; border: 1px solid var(--line); background: #F3EDE0; }

/* --------------------------------------------------------------- timeline */

.wv-timeline { border-left: 2px solid var(--line3); padding-left: 0; margin: 0; list-style: none; }
.wv-timeline li { display: grid; grid-template-columns: 96px 1fr; gap: 20px; padding: 16px 0 16px 24px; border-bottom: 1px solid var(--line2); }
.wv-timeline li:last-child { border-bottom: 0; }
.wv-timeline__year { font-size: 18px; font-weight: 700; color: var(--acc); }
.wv-timeline__text { font-size: 15px; line-height: 1.65; color: var(--ink3); }
@media (max-width: 620px) { .wv-timeline li { grid-template-columns: 1fr; gap: 4px; } }

/* --------------------------------------------------------------- partners */
/* Ported from Partners.dc.html: a card per group, each listing its partners. */

.wv-partner-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 22px; }
.wv-partner-group { background: var(--card); border: 1px solid var(--line); padding: 30px 28px; margin: 0; }
.wv-partner-group__kicker {
	font-size: 12px;
	letter-spacing: 0.12em;
	color: var(--acc);
	margin-bottom: 8px;
	text-transform: uppercase;
}
.wv-partner-group__title { font-size: 21px; font-weight: 600; margin-bottom: 16px; }
.wv-partner-list { display: flex; flex-direction: column; gap: 9px; list-style: none; margin: 0; padding: 0; }
.wv-partner-item { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: baseline; }
.wv-partner-item::before {
	content: "";
	width: 6px;
	height: 6px;
	background: var(--acc);
	display: inline-block;
	border-radius: 50%;
	transform: translateY(-2px);
}
.wv-partner-item__text { font-size: 15px; line-height: 1.5; color: var(--ink2); min-width: 0; }
.wv-partner-item__text strong { color: var(--ink); font-weight: 700; }
.wv-partner-item__text a { color: inherit; }
.wv-partner-item__text a:hover { color: var(--acc); }

.wv-logo-strip { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 28px; }
.wv-logo-strip__item {
	background: #FFFFFF;
	border: 1px solid var(--line);
	padding: 12px 22px;
	display: flex;
	align-items: center;
	border-radius: 4px;
}
.wv-logo-strip__item img { height: 46px; display: block; }

.wv-band {
	background: var(--tint);
	border: 1px solid var(--line);
	padding: 36px 30px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	flex-wrap: wrap;
}
.wv-band__title { font-size: 22px; font-weight: 600; text-wrap: pretty; margin: 0; }
.wv-band__body { font-size: 15px; color: var(--ink3); margin: 8px 0 0; line-height: 1.65; }

/* --------------------------------------------------------------- news */
/* Ported from Blog.dc.html: photo left, padded body, READ MORE row. */

.wv-news-layout { display: grid; grid-template-columns: 1fr 300px; gap: 44px; align-items: start; }
@media (max-width: 860px) { .wv-news-layout { grid-template-columns: 1fr; } }
.wv-news-items { display: flex; flex-direction: column; gap: 22px; }

.wv-news-item {
	background: var(--card);
	border: 1px solid var(--line);
	display: flex;
	gap: 0;
	cursor: pointer;
	flex-wrap: wrap;
	padding: 0;
	position: relative;
}
.wv-news-item:hover { border-color: var(--acc); }
.wv-news-item__photo { width: 300px; max-width: 100%; object-fit: cover; display: block; align-self: stretch; min-height: 200px; }
.wv-news-item__body { padding: 26px 28px; display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 240px; }
.wv-news-item__meta { display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px; letter-spacing: 0.08em; font-weight: 700; }
.wv-news-item__cat { color: var(--acc); text-transform: uppercase; }
.wv-news-item__date { color: var(--ink5); }
.wv-news-item__title { font-size: 22px; font-weight: 700; line-height: 1.25; margin: 0; text-wrap: pretty; }
.wv-news-item__title a { color: var(--ink); }
.wv-news-item__title a:hover { color: var(--acc); }
.wv-news-item__excerpt { font-size: 14.5px; line-height: 1.6; color: var(--ink3); margin: 0; flex: 1; }
.wv-news-item__more { font-size: 13px; color: var(--acc); font-weight: 700; }

.wv-sidebar__box { background: var(--card2); border: 1px solid var(--line); padding: 22px; margin-bottom: 22px; }
.wv-sidebar__title { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink5); margin-bottom: 14px; }
.wv-sidebar__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.wv-sidebar__list a { color: var(--ink2); font-size: 14.5px; line-height: 1.5; }
.wv-sidebar__list a:hover { color: var(--acc); }

.wv-article { max-width: 760px; margin: 0 auto; }
.wv-article__meta { font-size: 12.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink5); display: flex; gap: 12px; flex-wrap: wrap; }
.wv-article__photo { width: 100%; max-height: 420px; object-fit: cover; border: 1px solid var(--line); margin: 28px 0; }
.wv-prose { font-size: 17px; line-height: 1.75; color: var(--ink2); }
.wv-prose h2 { font-size: 26px; margin: 40px 0 12px; }
.wv-prose h3 { font-size: 21px; margin: 32px 0 10px; }
.wv-prose p { margin: 0 0 18px; }
.wv-prose ul, .wv-prose ol { margin: 0 0 18px; padding-left: 22px; }
.wv-prose li { margin-bottom: 8px; }
.wv-prose img { border: 1px solid var(--line); }
.wv-prose blockquote {
	border-left: 3px solid var(--acc);
	margin: 24px 0;
	padding: 4px 0 4px 20px;
	color: var(--ink3);
	font-size: 18px;
}
.wv-prose a { text-decoration: underline; text-underline-offset: 3px; }

/* --------------------------------------------------------------- forms */

.wv-form {
	background: var(--card);
	border: 1px solid var(--line);
	padding: 36px 32px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 20px;
}
.wv-form label,
.wv-form .wv-field { display: flex; flex-direction: column; gap: 7px; font-size: 14px; font-weight: 600; color: var(--ink2); }
.wv-form input,
.wv-form select,
.wv-form textarea {
	background: var(--bg);
	border: 1px solid var(--line3);
	color: var(--ink);
	padding: 11px 14px;
	font-size: 15px;
	font-family: inherit;
	outline: none;
	width: 100%;
}
.wv-form input:focus,
.wv-form select:focus,
.wv-form textarea:focus { border-color: var(--acc); }
.wv-form textarea { min-height: 140px; resize: vertical; }
.wv-form__full { grid-column: 1 / -1; }
.wv-form button[type="submit"] { justify-self: start; }

/* contact detail blocks */
.wv-contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 28px; }
.wv-contact-card { background: var(--card2); border: 1px solid var(--line); padding: 24px; }
.wv-contact-card__label { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink5); margin-bottom: 10px; }
.wv-contact-card__value { font-size: 15px; line-height: 1.7; color: var(--ink2); }

/* --------------------------------------------------------------- footer */

.wv-footer { padding: 72px 0 40px; border-top: 1px solid var(--line); }
.wv-footer__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 36px; align-items: start; }
.wv-footer__logo { height: 48px; width: 48px; object-fit: contain; background: #EDF4EC; border-radius: 50%; padding: 4px; }
.wv-footer__name { font-weight: 700; font-size: 17px; letter-spacing: 0.06em; margin-top: 14px; text-transform: uppercase; }
.wv-footer__about { font-size: 14.5px; line-height: 1.65; color: var(--ink4); margin: 10px 0 0; max-width: 320px; }
.wv-footer__label { font-size: 12px; letter-spacing: 0.12em; color: var(--ink5); margin-bottom: 12px; text-transform: uppercase; }
.wv-footer__links ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 15px; }
.wv-footer__links a { color: var(--ink2); }
.wv-footer__links a:hover { color: var(--ink-strong); }
.wv-footer__address { font-size: 14.5px; line-height: 1.6; color: var(--ink4); margin-bottom: 10px; }
.wv-footer__bottom {
	margin-top: 44px;
	padding-top: 22px;
	border-top: 1px solid var(--line2);
	display: flex;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	font-size: 13px;
	color: var(--ink5);
}
.wv-social { display: flex; gap: 14px; }
.wv-social a { color: var(--ink4); }
.wv-social a:hover { color: var(--acc); }

/* --------------------------------------------------------------- utilities */

.wv-note { font-size: 13.5px; line-height: 1.6; color: var(--ink5); }
.wv-hair { border: 0; border-top: 1px solid var(--line); margin: 0; }
.wv-center { text-align: center; }
.wv-mt-0 { margin-top: 0; }
.wv-doc-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.wv-doc {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	background: var(--card2);
	border: 1px solid var(--line);
	padding: 16px 20px;
	flex-wrap: wrap;
}
.wv-doc__name { font-size: 15px; font-weight: 600; color: var(--ink); }
.wv-doc__meta { font-size: 12.5px; color: var(--ink5); text-transform: uppercase; letter-spacing: 0.06em; }

@media (prefers-reduced-motion: no-preference) {
	.wv-card, .wv-person, .wv-partner, .wv-cell { transition: border-color 0.18s ease, background 0.18s ease; }
}

/* ===========================================================================
   Block-editor output fixes
   Classes set on a block land on the WRAPPER (<figure>, <div>), not the <img>,
   so the sizing rules are restated for the inner image. Core's own block CSS
   loads before this file, so equal-specificity rules here win.
   =========================================================================== */

/* Hero photo */
.wv-hero__photo { margin: 56px 0 0; display: block; }
.wv-hero__photo img,
img.wv-hero__photo {
	display: block;
	width: 100%;
	height: 320px;
	object-fit: cover;
	border: 1px solid var(--line);
}

/* Mission columns */
.wv-mission figure { margin: 0 0 16px; }
.wv-mission figure img {
	display: block;
	width: 100%;
	height: 170px;
	object-fit: cover;
	border: 1px solid var(--line);
}

/* Cards built from block images (legacy campaigns, editor-built cards) */
.wv-card .wp-block-image { width: 100%; }

/* Buttons: the design uses square, not pill, and core's link padding must go. */
.wp-block-button__link.wv-btn {
	border-radius: 0;
	padding: 14px 28px;
	font-weight: 700;
	font-size: 15px;
	line-height: 1.2;
	background: var(--acc);
	color: var(--btn-ink);
	border: 1px solid var(--acc);
}
.wp-block-button__link.wv-btn:hover { background: var(--acch); border-color: var(--acch); color: var(--btn-ink); }
.wp-block-button__link.wv-btn--ghost,
.wp-block-button__link.wv-btn.wv-btn--ghost {
	background: none;
	border: 1px solid var(--line3);
	color: var(--ink);
	font-weight: 600;
}
.wp-block-button__link.wv-btn.wv-btn--ghost:hover { border-color: var(--acc); background: none; color: var(--ink); }

/* Section header: title left, "all projects" link right, baseline aligned. */
.wv-section-head { align-items: baseline; }
.wv-section-head__title { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; }
.wv-section-head .wv-link-more { margin: 0; }
.wv-section-num { margin: 0; }

/* Hero rhythm (restated after the core reset above) */
.wv-hero .wv-eyebrow { margin: 0 0 24px; }
.wv-hero .wv-lede { margin: 28px 0 0; }
.wv-hero .wv-btn-row { margin-top: 36px; }
.wv-hero .wv-stats { margin-top: 64px; }
.wv-intro { margin: 0 0 44px; }
.wv-section-head { margin-bottom: 44px; }

/* Prose rhythm inside editor content */
.wv-prose > * + * { margin-block-start: 18px; }
.wv-prose > h2 { margin-block-start: 40px; }
.wv-prose > h3 { margin-block-start: 32px; }

/* Cells: keep the internal spacing the design specifies */
.wv-cell__num { margin: 0 0 14px; }
.wv-cell__title { margin: 0; }
.wv-cell__body { margin: 10px 0 0; }
.wv-stat__n { margin: 0; }
.wv-stat__label { margin: 8px 0 0; }
.wv-mission__title { margin: 0; }
.wv-mission__body { margin: 8px 0 0; }
.wv-contact-card__label { margin: 0 0 10px; }
.wv-contact-card__value { margin: 0; }

/* The News list block sits inside a wrap; keep its own grid intact */
.wv-news-layout > * { margin-block-start: 0; }

/* ===========================================================================
   Clickable cards + team profile popup (DESIGN.md §5)
   =========================================================================== */

.wv-card, .wv-person, .wv-partner { position: relative; }

/* Whole card is a click target; the visible title link stays the accessible name. */
.wv-card__link,
.wv-person__link {
	position: absolute;
	inset: 0;
	z-index: 1;
	text-indent: -9999px;
	overflow: hidden;
}
.wv-card:hover, .wv-person:hover { border-color: var(--line3); }
.wv-person { cursor: pointer; }

/* Profile popup */
.wv-modal {
	position: fixed;
	inset: 0;
	z-index: 100;
	display: none;  /* the design renders the overlay only while open */
	align-items: center;
	justify-content: center;
	padding: 24px;
	background: rgba(8, 13, 10, 0.62);
	backdrop-filter: blur(4px);
}
.wv-modal[open], .wv-modal.is-open { display: flex; }
.wv-modal__card {
	background: var(--card);
	border: 1px solid var(--line3);
	max-width: 860px;
	width: 100%;
	max-height: 86vh;
	overflow: auto;
	display: flex;
	flex-wrap: wrap;
	position: relative;
}
.wv-modal__photo {
	width: 300px;
	max-width: 100%;
	flex-shrink: 0;
	object-fit: cover;
	display: block;
	background: #F3EDE0;
	align-self: stretch;
	min-height: 300px;
}
.wv-modal__text { padding: 30px 32px; flex: 1; min-width: 260px; }
.wv-modal__name { font-size: 24px; font-weight: 600; margin: 0; }
.wv-modal__role { font-size: 13px; color: var(--acc); letter-spacing: 0.06em; text-transform: uppercase; margin: 6px 0 0; }
.wv-modal__country { font-size: 12.5px; color: var(--ink5); letter-spacing: 0.06em; text-transform: uppercase; margin: 6px 0 16px; }
.wv-modal__bio { font-size: 15.5px; line-height: 1.7; color: var(--ink3); margin: 0; white-space: pre-line; }
.wv-modal__more { display: inline-block; margin-top: 18px; font-size: 13px; letter-spacing: 0.06em; text-transform: uppercase; }
.wv-modal__close {
	position: absolute;
	top: 10px;
	right: 10px;
	width: 34px;
	height: 34px;
	background: none;
	border: 1px solid var(--line3);
	color: var(--ink);
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
}
.wv-modal__close:hover { border-color: var(--acc); color: var(--acc); }

/* Projects toolbar: search + filter chips on one row (DESIGN.md §5) */
.wv-toolbar { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-bottom: 28px; }
.wv-toolbar .wv-filters { margin-bottom: 0; }

/* Footer: FOLLOW column icons and bottom bar */
.wv-social a { display: inline-flex; color: var(--ink4); }
.wv-social svg { width: 18px; height: 18px; }
.wv-social a:hover { color: var(--acc); }
.wv-footer__credit a { color: var(--ink4); letter-spacing: 0.06em; text-transform: uppercase; font-size: 12px; }
.wv-footer__credit a:hover { color: var(--acc); }

/* Theme toggle shows one icon: moon in light mode, sun in dark
   (Home.dc.html renders them under sc-if isLight / isDark). */
.wv-icon-sun { display: none; }
:root.dark .wv-icon-sun { display: block; }
:root.dark .wv-icon-moon { display: none; }

/* Editor-built cards: the block image class lands on <figure>, so the sizing
   is restated for the inner <img> (dynamic blocks output a bare <img>). */
.wv-card figure.wv-card__photo { margin: 0; width: 100%; }
.wv-card figure.wv-card__photo img {
	display: block;
	width: 100%;
	height: 200px;
	object-fit: cover;
}
.wv-card .wp-block-image { margin: 0; width: 100%; }

/* ===========================================================================
   Responsive
   The design's own strategy is auto-fit/auto-fill grids with no breakpoints
   (DESIGN.md §3), which is kept. What follows adapts the chrome — header,
   section rhythm and the fixed-width pieces (news photo, popup, forms) — plus
   the client-requested mobile bottom navigation.
   =========================================================================== */

.wv-bottomnav { display: none; }

@media (max-width: 860px) {
	/* Top bar keeps brand + theme toggle + CTA; the menu moves to the bottom. */
	.wv-nav__menu,
	.wv-nav__toggle { display: none; }
	.wv-nav__inner { padding: 10px 16px; gap: 10px; flex-wrap: nowrap; }
	.wv-nav__name { font-size: 14px; white-space: nowrap; }
	.wv-nav__brand { min-width: 0; flex-shrink: 1; }
	.wv-nav__logo { height: 32px; width: 32px; }
	.wv-nav__cta { padding: 8px 12px; font-size: 11px; letter-spacing: 0.06em; white-space: nowrap; }

	.wv-bottomnav {
		display: grid;
		grid-auto-flow: column;
		grid-auto-columns: 1fr;
		position: fixed;
		inset: auto 0 0 0;
		z-index: 60;
		background: var(--nav);
		backdrop-filter: blur(10px);
		border-top: 1px solid var(--line);
		padding-bottom: env(safe-area-inset-bottom, 0);
	}
	.wv-bottomnav__item {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 4px;
		padding: 9px 2px 8px;
		color: var(--ink4);
		font-size: 9.5px;
		letter-spacing: 0.06em;
		text-transform: uppercase;
		line-height: 1.1;
		text-align: center;
		border-top: 2px solid transparent;
		min-width: 0;
	}
	.wv-bottomnav__item span {
		max-width: 100%;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	.wv-bottomnav__item svg { width: 20px; height: 20px; }
	.wv-bottomnav__item:hover { color: var(--ink); }
	.wv-bottomnav__item.is-current { color: var(--acc); border-top-color: var(--acc); }

	/* Room for the fixed bar. */
	body { padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px)); }

	/* Rhythm and gutters */
	.wv-wrap { padding-inline: 16px; }
	.wv-section { padding: 56px 0; }
	.wv-hero { padding: 48px 0 44px; }
	.wv-hero--sm { padding: 40px 0 32px; }
	.wv-section-head { margin-bottom: 28px; }
	.wv-intro { margin-bottom: 28px; }
	.wv-hero .wv-stats { margin-top: 36px; }
	.wv-hero__photo { margin-top: 32px; }
	.wv-hero__photo img, img.wv-hero__photo { height: 220px; }

	/* Fixed-width pieces become fluid */
	.wv-news-layout { grid-template-columns: 1fr; gap: 32px; }
	.wv-news-item__photo { width: 100%; min-height: 0; height: 200px; }
	.wv-news-item__body { padding: 20px 20px 22px; }
	.wv-lead { grid-template-columns: 1fr; gap: 20px; }
	.wv-lead__photo { max-width: 260px; }
	.wv-form { padding: 24px 20px; grid-template-columns: 1fr; }
	.wv-band { padding: 26px 22px; }
	.wv-partner-group { padding: 24px 22px; }
	.wv-card__body-wrap { padding: 20px 20px 18px; }
	.wv-timeline li { grid-template-columns: 1fr; gap: 4px; padding-left: 18px; }
	.wv-footer { padding: 48px 0 32px; }
	.wv-footer__cols { gap: 28px; }

	/* Chips and search should never push the page sideways */
	.wv-toolbar { flex-wrap: wrap; gap: 8px; }
	.wv-filters { gap: 8px; overflow-x: auto; flex-wrap: nowrap; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
	.wv-filter { white-space: nowrap; }
	.wv-search { min-width: 0; width: 100%; }

	/* Popup fills the screen more comfortably */
	.wv-modal { padding: 12px; }
	.wv-modal__card { max-height: 92vh; }
	/* Wide, short crop: bias to the upper third so faces stay in frame. */
	.wv-modal__photo { width: 100%; min-height: 0; height: 240px; object-position: 50% 22%; }
	.wv-modal__text { padding: 22px 20px 26px; }
	.wv-modal__card { max-width: 560px; }
}

@media (max-width: 560px) {
	/* Team portraits stay multi-column on small phones (design keeps grids fluid). */
	.wv-team-members { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 16px; }
	.wv-person__name { font-size: 15px; }
	.wv-stat__n { font-size: 32px; }
	.wv-cell { padding: 22px 20px; }
	.wv-nav__name { font-size: 12px; letter-spacing: 0.02em; white-space: nowrap; }
	.wv-bottomnav__item { font-size: 8.5px; }
}

/* Desktop keeps the classic top menu; the bar is phone-only. */
@media (min-width: 861px) {
	.wv-bottomnav { display: none !important; }
}

/* Hairline grids (stats, services, key figures) must not keep empty tracks:
   auto-fill would leave a blank cell showing the divider colour when a project
   has fewer facts than columns. Card grids keep auto-fill so a lone card does
   not stretch - see the grid block above. */
.wv-grid--hair.wv-grid--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.wv-grid--hair.wv-grid--3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.wv-grid--hair.wv-grid--4 { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }

/* ---------------------------------------------------------------- auth */
/* Ported from Member Auth.dc.html: a single centred card on the page grid. */

.wv-auth { max-width: 560px; margin: 0 auto; padding: 56px 16px 72px; }
.wv-auth__card { background: var(--card); border: 1px solid var(--line); padding: 34px 32px 30px; }
.wv-auth__tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--line); border: 1px solid var(--line); margin-bottom: 28px; }
.wv-auth__tab {
	background: var(--card);
	color: var(--ink4);
	text-align: center;
	padding: 11px 8px;
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.1em;
}
.wv-auth__tab.is-active { background: var(--acc); color: var(--btn-ink); }
.wv-auth__title { font-size: 26px; font-weight: 600; margin: 0 0 6px; }
.wv-auth__sub { font-size: 15px; line-height: 1.6; color: var(--ink4); margin: 0 0 22px; }
.wv-auth__note {
	font-size: 14px;
	line-height: 1.6;
	color: var(--ink3);
	background: var(--tint);
	border: 1px solid var(--line);
	padding: 12px 14px;
	margin: 0 0 20px;
}
.wv-auth__error {
	font-size: 14px;
	line-height: 1.55;
	color: #b32d2e;
	border: 1px solid #b32d2e;
	background: rgba(179, 45, 46, 0.06);
	padding: 11px 14px;
	margin: 0 0 20px;
}
:root.dark .wv-auth__error { color: #ff9b9b; border-color: #7a2b2c; background: rgba(255, 155, 155, 0.08); }
.wv-auth__form { display: grid; gap: 16px; }
.wv-auth__form--two { grid-template-columns: 1fr 1fr; }
@media (max-width: 560px) { .wv-auth__form--two { grid-template-columns: 1fr; } }
.wv-auth__full { grid-column: 1 / -1; display: grid; gap: 14px; }
.wv-auth .wv-field { display: flex; flex-direction: column; gap: 7px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; color: var(--ink4); text-transform: uppercase; }
.wv-auth .wv-field em { font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--ink5); }
.wv-auth input[type="text"],
.wv-auth input[type="email"],
.wv-auth input[type="password"] {
	background: var(--bg);
	border: 1px solid var(--line3);
	color: var(--ink);
	padding: 11px 14px;
	font-size: 15px;
	font-family: inherit;
	width: 100%;
}
.wv-auth input:focus { outline: 2px solid var(--acc); outline-offset: 1px; }
.wv-auth__check { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; line-height: 1.5; color: var(--ink3); font-weight: 400; text-transform: none; letter-spacing: 0; }
.wv-auth__submit { width: 100%; text-align: center; border: 0; cursor: pointer; }
.wv-auth__alt { font-size: 13.5px; color: var(--ink4); margin: 4px 0 0; }
.wv-auth__resend { margin-top: 14px; font-size: 13.5px; color: var(--ink4); }
.wv-linkbtn { background: none; border: 0; padding: 0; color: var(--acc); font: inherit; font-size: 13.5px; cursor: pointer; text-decoration: underline; }
.wv-auth__foot { text-align: center; font-size: 12.5px; color: var(--ink5); margin-top: 22px; }

/* ---------------------------------------------------------- member area */
/* Ported from Member Area.dc.html: sidebar + main column. */

.wv-member { padding: 40px 0 72px; }
.wv-member__layout { display: grid; grid-template-columns: 220px 1fr; gap: 44px; align-items: start; }
@media (max-width: 860px) { .wv-member__layout { grid-template-columns: 1fr; gap: 24px; } }

.wv-member__side { position: sticky; top: 84px; }
@media (max-width: 860px) { .wv-member__side { position: static; } }
.wv-member__who { border-bottom: 1px solid var(--line); padding-bottom: 16px; margin-bottom: 16px; }
.wv-member__label { font-size: 11.5px; letter-spacing: 0.12em; color: var(--ink5); text-transform: uppercase; }
.wv-member__name { font-size: 17px; font-weight: 600; margin: 6px 0 8px; }
.wv-member__nav { display: flex; flex-direction: column; }
.wv-member__navitem {
	padding: 9px 0 9px 12px;
	border-left: 2px solid transparent;
	color: var(--ink4);
	font-size: 12.5px;
	letter-spacing: 0.08em;
}
.wv-member__navitem:hover { color: var(--ink); }
.wv-member__navitem.is-active { border-left-color: var(--acc); color: var(--ink-strong); font-weight: 700; }
@media (max-width: 860px) {
	.wv-member__nav { flex-direction: row; flex-wrap: wrap; gap: 6px; }
	.wv-member__navitem { border-left: 0; border-bottom: 2px solid transparent; padding: 8px 10px; }
	.wv-member__navitem.is-active { border-left: 0; border-bottom-color: var(--acc); }
}

.wv-member__title { font-size: clamp(28px, 3.6vw, 40px); margin: 0 0 6px; }
.wv-member__meta { font-size: 14px; color: var(--ink4); margin: 0 0 26px; }
.wv-member__tiles { margin-bottom: 32px; }
.wv-member__block { border-top: 1px solid var(--line); padding-top: 22px; margin-top: 28px; }
.wv-member__blocktitle { font-size: 11.5px; letter-spacing: 0.12em; color: var(--ink5); text-transform: uppercase; margin-bottom: 12px; }
.wv-member__row {
	display: flex;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	background: var(--card);
	border: 1px solid var(--line);
	padding: 16px 18px;
	margin-bottom: 10px;
}
.wv-member__rowtitle { font-size: 15.5px; font-weight: 600; }
.wv-member__rowmeta { font-size: 12.5px; color: var(--ink5); margin-top: 4px; }
.wv-member__rowbody { font-size: 14.5px; line-height: 1.65; color: var(--ink3); margin: 6px 0 0; }
.wv-member__rowdocs { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.wv-member__update { border-bottom: 1px solid var(--line2); padding: 14px 0; }
.wv-member__update:last-child { border-bottom: 0; }
.wv-member__more { margin-top: 18px; }
.wv-member__back { font-size: 13px; margin: 0 0 12px; }
.wv-member__pager { display: flex; gap: 16px; align-items: center; margin-top: 20px; font-size: 12.5px; color: var(--ink5); }
.wv-tagpill {
	font-size: 10.5px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	border: 1px solid var(--line3);
	color: var(--ink5);
	padding: 1px 6px;
	margin-left: 6px;
}

.wv-member__fund { display: grid; grid-template-columns: 1fr 340px; gap: 36px; align-items: start; }
@media (max-width: 860px) { .wv-member__fund { grid-template-columns: 1fr; } }
.wv-panel { background: var(--card); border: 1px solid var(--line); padding: 24px 22px; }
.wv-panel__price { font-size: 26px; font-weight: 700; color: var(--acc); margin: 0 0 4px; }
.wv-panel__price span { font-size: 13px; font-weight: 400; color: var(--ink5); }
.wv-panel__form { display: grid; gap: 14px; margin-top: 18px; }
.wv-panel__submit { width: 100%; text-align: center; border: 0; cursor: pointer; }
.wv-payopt { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--line3); background: var(--card2); padding: 11px 13px; cursor: pointer; }
.wv-payopt:hover { border-color: var(--acc); }
.wv-payopt span { display: flex; flex-direction: column; gap: 3px; }
.wv-payopt strong { font-size: 14px; font-weight: 600; }
.wv-payopt em { font-size: 12.5px; color: var(--ink5); font-style: normal; line-height: 1.5; }

.wv-progress { height: 6px; background: var(--line2); border: 1px solid var(--line); margin: 12px 0 6px; }
.wv-progress span { display: block; height: 100%; background: var(--acc); }

.wv-summary { display: grid; grid-template-columns: 1fr auto; gap: 8px 14px; margin: 0; font-size: 14px; }
.wv-summary dt { color: var(--ink5); }
.wv-summary dd { margin: 0; text-align: right; color: var(--ink2); }
.wv-summary .wv-summary__total { font-weight: 700; color: var(--ink); border-top: 1px solid var(--line); padding-top: 8px; }

.wv-stripe-mount {
	border: 1px dashed var(--line3);
	background: var(--card2);
	padding: 22px 20px;
	margin: 0 0 16px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	font-size: 13.5px;
	color: var(--ink4);
	line-height: 1.6;
}
.wv-stripe-mount strong { color: var(--ink2); font-size: 14.5px; }
.wv-form--checkout { border: 0; padding: 0; background: none; }
.wv-sub { margin-bottom: 18px; }
.wv-member__result { max-width: 640px; }

/* Money values in stat tiles are longer than counts; keep them on one line. */
.wv-member__tiles .wv-stat__n { font-size: 30px; white-space: nowrap; }
@media (max-width: 560px) { .wv-member__tiles .wv-stat__n { font-size: 24px; } }

/* ------------------------------------------------------------- product page */

.wv-calc { display: grid; grid-template-columns: 1fr 160px 260px; gap: 22px; align-items: start; background: var(--card); border: 1px solid var(--line); padding: 26px 24px; }
@media (max-width: 860px) { .wv-calc { grid-template-columns: 1fr; } }
.wv-calc .wv-field { display: flex; flex-direction: column; gap: 7px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; color: var(--ink4); text-transform: uppercase; }
.wv-calc .wv-field em { font-weight: 400; text-transform: none; letter-spacing: 0; font-style: normal; font-size: 12px; color: var(--ink5); line-height: 1.5; }
.wv-calc input, .wv-calc select { background: var(--bg); border: 1px solid var(--line3); color: var(--ink); padding: 11px 14px; font-size: 15px; font-family: inherit; width: 100%; }
.wv-calc__out { border-left: 1px solid var(--line); padding-left: 22px; }
@media (max-width: 860px) { .wv-calc__out { border-left: 0; border-top: 1px solid var(--line); padding: 18px 0 0; } }
.wv-calc__cost { font-size: 19px; font-weight: 600; margin-top: 10px; }
.wv-calc__out .wv-btn { margin-top: 14px; }

.wv-split { border: 1px solid var(--line); background: var(--card); }
.wv-split__row { display: grid; grid-template-columns: 260px 1fr 56px; gap: 16px; align-items: center; padding: 16px 20px; border-bottom: 1px solid var(--line2); }
.wv-split__row:last-child { border-bottom: 0; }
@media (max-width: 620px) { .wv-split__row { grid-template-columns: 1fr 48px; } .wv-split__row .wv-progress { grid-column: 1 / -1; } }
.wv-split__label { font-size: 14.5px; color: var(--ink2); }
.wv-split__pct { font-size: 15px; font-weight: 700; color: var(--acc); text-align: right; }
.wv-split .wv-progress { margin: 0; }

.wv-faq { border-top: 1px solid var(--line); }
.wv-faq__item { border-bottom: 1px solid var(--line); }
.wv-faq__item summary { cursor: pointer; padding: 16px 0; font-size: 16.5px; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
.wv-faq__item summary::-webkit-details-marker { display: none; }
.wv-faq__item summary::after { content: "+"; color: var(--acc); font-weight: 400; }
.wv-faq__item[open] summary::after { content: "–"; }
.wv-faq__item p { font-size: 15px; line-height: 1.7; color: var(--ink3); margin: 0 0 18px; max-width: 70ch; }

.wv-card--static { cursor: default; }
.wv-card--static:hover { border-color: var(--line); }
.wv-card__body--full { display: block; -webkit-line-clamp: none; overflow: visible; }
