/* ==========================================================================
   Finacing: site styles
   Tokens, base typography, layout, header, footer, prose, print.
   Calculator components: plugins/finacing-tools/assets/css/tools.css
   ========================================================================== */

@font-face {
	font-family: "IBM Plex Sans";
	src: url("../fonts/ibm-plex-sans-latin-var.woff2") format("woff2");
	font-weight: 400 600;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Source Serif 4";
	src: url("../fonts/source-serif-4-latin-var.woff2") format("woff2");
	font-weight: 600 700;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Fallback faces sized to the web fonts (widths measured with
   tests/ui/font-metrics-probe.mjs), so the swap doesn't rewrap text. */
@font-face {
	font-family: "Plex Fallback";
	src: local("Arial"), local("Helvetica Neue"), local("Helvetica");
	size-adjust: 102.2%;
	ascent-override: 100%;
	descent-override: 26%;
}

@font-face {
	font-family: "Serif Fallback";
	src: local("Georgia"), local("Times New Roman");
	size-adjust: 107.9%;
	ascent-override: 88%;
	descent-override: 28%;
}

:root {
	/* Color (contrast ratios in docs/02-launch-plan.md §12) */
	--paper: #f7f6f2;
	--surface: #ffffff;
	--wash: #eef4f1;
	--tint: #f2f1ec;
	--ink: #1b1f23;
	--ink-2: #4b535c;
	--ink-3: #646c75;
	--rule: #dcd9d1;
	--rule-strong: #8c8a84;
	--accent: #0b5d4b;
	--accent-hover: #07473a;
	--series-2: #c27c0e;
	--series-2-text: #9a5b00;
	--error: #b3261e;

	/* Type */
	--font-serif: "Source Serif 4", "Serif Fallback", Georgia, "Times New Roman", serif;
	--font-sans: "IBM Plex Sans", "Plex Fallback", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--fs-display: 2rem;
	--fs-h1: 1.75rem;
	--fs-h2: 1.375rem;
	--fs-h3: 1.125rem;
	--fs-body: 1.0625rem;
	--fs-ui: 1rem;
	--fs-small: 0.875rem;
	--fs-micro: 0.8125rem;

	/* Space & shape */
	--s1: 4px;
	--s2: 8px;
	--s3: 12px;
	--s4: 16px;
	--s5: 24px;
	--s6: 32px;
	--s7: 48px;
	--s8: 64px;
	--radius: 4px;
	--container: 1160px;
	--gutter: 16px;
	--measure: 68ch;
	--tap: 44px;
}

@media (min-width: 600px) {
	:root {
		--gutter: 24px;
		--fs-h2: 1.5rem;
		--fs-h3: 1.1875rem;
	}
}

@media (min-width: 960px) {
	:root {
		--gutter: 32px;
		--fs-display: 2.5rem;
		--fs-h1: 2.125rem;
	}
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: var(--s4);
}

@media (prefers-reduced-motion: no-preference) {
	html:focus-within {
		scroll-behavior: smooth;
	}
}

body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--font-sans);
	font-size: var(--fs-ui);
	line-height: 1.5;
	font-kerning: normal;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-wrap: break-word;
}

img,
svg {
	max-width: 100%;
	height: auto;
}

a {
	color: var(--accent);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

a:hover {
	color: var(--accent-hover);
	text-decoration-thickness: 2px;
}

:focus-visible {
	outline: 3px solid var(--accent);
	outline-offset: 2px;
}

h1,
h2,
h3,
h4 {
	margin: 0;
	color: var(--ink);
	text-wrap: balance;
}

h1,
h2 {
	font-family: var(--font-serif);
	font-weight: 600;
	letter-spacing: -0.01em;
}

h1 {
	font-size: var(--fs-h1);
	line-height: 1.15;
}

h2 {
	font-size: var(--fs-h2);
	line-height: 1.25;
}

h3 {
	font-size: var(--fs-h3);
	line-height: 1.3;
	font-weight: 600;
}

p {
	margin: 0;
}

button,
input,
select,
textarea {
	font: inherit;
	color: inherit;
}

button {
	cursor: pointer;
}

.visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: var(--s4);
	top: -100px;
	z-index: 100;
	padding: var(--s3) var(--s4);
	background: var(--ink);
	color: #fff;
	border-radius: var(--radius);
}

.skip-link:focus {
	top: var(--s3);
	color: #fff;
}

.container {
	width: 100%;
	max-width: calc(var(--container) + 2 * var(--gutter));
	margin: 0 auto;
	padding: 0 var(--gutter);
}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.site-header {
	position: relative;
	z-index: 20;
	background: var(--paper);
	border-bottom: 1px solid var(--rule);
}

.site-header__bar {
	display: flex;
	align-items: center;
	gap: var(--s5);
	min-height: 64px;
}

.wordmark {
	font-family: var(--font-serif);
	font-weight: 700;
	font-size: 1.5rem;
	line-height: 1;
	letter-spacing: -0.02em;
	color: var(--ink);
	text-decoration: none;
	padding: var(--s2) 0;
}

.wordmark:hover {
	color: var(--ink);
}

.wordmark {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}

.wordmark__mark {
	width: 32px;
	height: 32px;
	flex: none;
}

.wordmark--small .wordmark__mark {
	width: 28px;
	height: 28px;
}

.wordmark--small {
	font-size: 1.25rem;
}

.site-nav {
	flex: 1;
}

.site-nav__list {
	display: flex;
	gap: var(--s2);
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-nav__list > li > a,
.site-nav__link {
	display: inline-flex;
	align-items: center;
	min-height: var(--tap);
	padding: 0 var(--s3);
	color: var(--ink-2);
	font-weight: 500;
	font-size: 0.9375rem;
	text-decoration: none;
	border-radius: var(--radius);
}

.site-nav__list > li > a:hover,
.site-nav__link:hover,
.site-nav__link[aria-expanded="true"] {
	color: var(--ink);
	background: var(--tint);
}

.site-nav__link[data-menu-toggle]::after {
	content: "";
	width: 6px;
	height: 6px;
	margin-left: var(--s2);
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
}

.site-nav__link[aria-expanded="true"]::after {
	transform: translateY(1px) rotate(225deg);
}

.site-nav__item--menu {
	position: relative;
}

.nav-panel {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	display: flex;
	gap: var(--s6);
	min-width: 260px;
	padding: var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: var(--radius);
	box-shadow: 0 8px 24px rgb(27 31 35 / 0.08);
}

.nav-panel[hidden] {
	display: none;
}

.nav-panel {
	flex-wrap: wrap;
}

.nav-panel__all {
	flex-basis: 100%;
	padding-top: var(--s3);
	border-top: 1px solid var(--rule);
}

.nav-panel__all a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	font-weight: 500;
}

.nav-panel__heading {
	margin-bottom: var(--s2);
	color: var(--ink-3);
	font-size: var(--fs-micro);
	font-weight: 600;
	letter-spacing: 0.02em;
}

.nav-panel__heading a {
	color: inherit;
}

.nav-panel ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.nav-panel li a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 44px;
	padding: var(--s2) var(--s3);
	margin: 0 calc(-1 * var(--s3));
	border-radius: var(--radius);
	color: var(--ink);
	text-decoration: none;
}

.nav-panel__name {
	font-weight: 600;
}

.nav-panel__hint {
	color: var(--ink-3);
	font-size: var(--fs-small);
}

.nav-panel li a:hover {
	background: var(--tint);
}

.nav-panel li a:hover .nav-panel__name {
	color: var(--accent);
}

@media (min-width: 960px) {
	.nav-panel {
		width: 320px;
		gap: var(--s3);
	}
}

.site-header__actions {
	display: flex;
	gap: var(--s2);
	margin-left: auto;
}

.icon-button {
	display: inline-flex;
	align-items: center;
	gap: var(--s2);
	min-height: var(--tap);
	min-width: var(--tap);
	justify-content: center;
	padding: 0 var(--s3);
	background: transparent;
	border: 1px solid transparent;
	border-radius: var(--radius);
	color: var(--ink-2);
	font-weight: 500;
	font-size: 0.9375rem;
}

.icon-button:hover,
.icon-button[aria-expanded="true"] {
	background: var(--tint);
	color: var(--ink);
}

/* Search and menu buttons need JavaScript; the "js" class is set in <head>
   before first paint, so they never pop in and move the header. */
html:not(.js) .search-toggle,
html:not(.js) .menu-toggle {
	display: none;
}

/* Desktop: the search button looks like a search box. */
@media (min-width: 960px) {
	.search-toggle {
		justify-content: flex-start;
		min-width: 240px;
		background: var(--surface);
		border-color: var(--rule-strong);
		color: var(--ink-3);
		font-weight: 400;
	}

	.search-toggle:hover,
	.search-toggle[aria-expanded="true"] {
		background: var(--surface);
		border-color: var(--ink);
		color: var(--ink-2);
	}

	.search-toggle__key {
		margin-left: auto;
		padding: 0 6px;
		border: 1px solid var(--rule-strong);
		border-radius: 4px;
		font-family: inherit;
		font-size: var(--fs-micro);
		line-height: 1.5;
	}
}

@media (max-width: 959px) {
	.search-toggle__key {
		display: none;
	}
}

/* Search: a centred dialog over a dimmed page. */
.site-search {
	position: fixed;
	inset: 0;
	z-index: 50;
	padding: 12vh var(--gutter) var(--s5);
	background: rgb(15 23 20 / 0.45);
	overflow-y: auto;
}

.site-search[hidden] {
	display: none;
}

.site-search > .container {
	position: relative;
	max-width: 620px;
	margin: 0 auto;
	padding: 0;
	background: var(--surface);
	border-radius: 12px;
	box-shadow: 0 24px 60px rgb(0 0 0 / 0.25);
	overflow: hidden;
}

.site-search__label {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.site-search__combo {
	position: relative;
}

.site-search__input {
	width: 100%;
	height: 60px;
	padding: 0 88px 0 52px;
	background: var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23646c75' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 18px center;
	border: 0;
	border-bottom: 1px solid var(--rule);
	border-radius: 0;
	font-size: 1.125rem;
	outline: none;
}

.site-search__input::-webkit-search-cancel-button {
	-webkit-appearance: none;
	appearance: none;
}

.site-search__close {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 1;
	min-height: 32px;
	padding: 0 var(--s2);
	background: var(--tint);
	border: 1px solid var(--rule);
	border-radius: 6px;
	color: var(--ink-2);
	font: inherit;
	font-size: var(--fs-micro);
	cursor: pointer;
}

.site-search__close:hover {
	color: var(--ink);
	border-color: var(--rule-strong);
}

.site-search__list {
	max-height: min(56vh, 460px);
	margin: 0;
	padding: var(--s2);
	overflow-y: auto;
	list-style: none;
}

.site-search__list:empty {
	display: none;
}

.site-search__option {
	display: block;
	padding: var(--s2) var(--s3);
	border-radius: 8px;
	cursor: pointer;
	color: var(--ink);
	text-decoration: none;
}

.site-search__option[aria-selected="true"],
.site-search__option:hover {
	background: #e3f1ec;
}

.site-search__name {
	display: block;
	font-weight: 600;
}

.site-search__meta {
	display: block;
	overflow: hidden;
	color: var(--ink-3);
	font-size: var(--fs-small);
	white-space: nowrap;
	text-overflow: ellipsis;
}

.site-search__empty {
	padding: var(--s4);
	color: var(--ink-2);
}

/* Mobile header: menu and search become panels under the bar. */
@media (max-width: 959px) {
	/* The menu opens as a full-width panel under the bar, scrolling if tall. */
	.js .site-nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		max-height: calc(100vh - 64px);
		max-height: calc(100dvh - 64px);
		overflow-y: auto;
		padding: 0 0 var(--s4);
		background: var(--surface);
		border-top: 1px solid var(--rule);
		border-bottom: 1px solid var(--rule);
		box-shadow: 0 16px 32px rgb(27 31 35 / 0.14);
	}

	.js .site-nav:not(.is-open) {
		display: none;
	}

	.site-nav__list {
		flex-direction: column;
		gap: 0;
	}

	.site-nav__list > li {
		border-bottom: 1px solid var(--rule);
	}

	.site-nav__list > li > a,
	.site-nav__link {
		display: flex;
		justify-content: space-between;
		width: 100%;
		min-height: 56px;
		padding: 0 var(--gutter);
		border-radius: 0;
		color: var(--ink);
		font-size: 1.0625rem;
		font-weight: 600;
	}

	.site-nav__list > li > a:hover,
	.site-nav__link:hover,
	.site-nav__link[aria-expanded="true"] {
		background: var(--tint);
	}

	.site-nav__link[data-menu-toggle]::after {
		width: 8px;
		height: 8px;
		margin-left: var(--s3);
		transition: transform 0.15s;
	}

	.nav-panel {
		position: static;
		flex-direction: column;
		gap: var(--s2);
		width: auto;
		min-width: 0;
		padding: var(--s2) var(--gutter) var(--s4);
		background: var(--tint);
		border: 0;
		border-radius: 0;
		box-shadow: none;
	}

	.nav-panel li a {
		margin: 0;
		padding: var(--s2) var(--s3);
		background: var(--surface);
		border: 1px solid var(--rule);
		border-radius: 8px;
	}

	.nav-panel ul {
		display: grid;
		gap: var(--s2);
	}

	.nav-panel__all {
		padding-top: var(--s2);
		border-top: 0;
	}

	.icon-button__text {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}
	.site-header__bar {
		gap: var(--s2);
	}

	.menu-toggle {
		margin-left: auto;
	}

	.site-header__actions {
		margin-left: 0;
	}
}

@media (min-width: 960px) {
	.menu-toggle {
		display: none !important;
	}
}

/* --------------------------------------------------------------------------
   Main, breadcrumbs, prose
   -------------------------------------------------------------------------- */

.site-main {
	padding-bottom: var(--s8);
}

.breadcrumbs {
	padding: var(--s4) 0 0;
	font-size: var(--fs-small);
	color: var(--ink-3);
}

.breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	margin: 0;
	padding: 0;
	list-style: none;
}

.breadcrumbs li + li::before {
	content: "›";
	margin: 0 var(--s2);
	color: var(--ink-3);
}

.breadcrumbs a {
	color: var(--ink-2);
}

.breadcrumbs [aria-current="page"] {
	color: var(--ink-2);
}

.page-title {
	margin: var(--s6) 0 var(--s5);
}

.prose {
	max-width: var(--measure);
	font-size: var(--fs-body);
	line-height: 1.65;
}

.prose > * + * {
	margin-top: var(--s4);
}

.prose h2 {
	margin-top: var(--s7);
	margin-bottom: var(--s1);
	scroll-margin-top: var(--s5);
}

.prose h3 {
	margin-top: var(--s6);
	margin-bottom: calc(-1 * var(--s1));
	font-size: var(--fs-h3);
}

.prose ul,
.prose ol {
	padding-left: 1.25em;
}

.prose li + li {
	margin-top: var(--s2);
}

.prose strong {
	font-weight: 600;
}

.prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--fs-small);
	font-variant-numeric: tabular-nums;
}

.prose th,
.prose td {
	padding: var(--s2) var(--s3);
	border-bottom: 1px solid var(--rule);
	text-align: left;
	vertical-align: top;
}

.prose .has-text-align-right {
	text-align: right;
}

.prose thead th {
	border-bottom: 1px solid var(--rule-strong);
	color: var(--ink-2);
	font-weight: 600;
}

.prose .wp-block-table {
	margin-left: 0;
	margin-right: 0;
	overflow-x: auto;
}

/* Override the block library's boxed table so every table on the site shares one style. */
.prose .wp-block-table table {
	border: 0;
}

/* Size columns to their content (the block's fixed layout squeezes figures)
   and never break a number across lines; the figure scrolls if too wide. */
.prose .wp-block-table table.has-fixed-layout {
	table-layout: auto;
}

.prose .wp-block-table td.has-text-align-right {
	white-space: nowrap;
}

/* The page-wide break-word and the block library's word-break would let
   cells split words letter by letter; wrap only between words. */
.prose .wp-block-table table th,
.prose .wp-block-table table td,
.prose table th,
.prose table td {
	overflow-wrap: normal;
	word-break: normal;
}

.prose .wp-block-table th,
.prose .wp-block-table td {
	border: 0;
	border-bottom: 1px solid var(--rule);
	padding: var(--s2) var(--s3);
}

/* Narrow phones: tighter cells and slightly smaller figures so four-column
   tables fit without a sideways scroll. */
@media (max-width: 400px) {
	.prose .wp-block-table table {
		font-size: var(--fs-micro);
	}

	.prose .wp-block-table th,
	.prose .wp-block-table td {
		padding: var(--s2) var(--s1);
	}

	.prose .wp-block-table th:first-child,
	.prose .wp-block-table td:first-child {
		padding-left: 0;
	}

	.prose .wp-block-table th:last-child,
	.prose .wp-block-table td:last-child {
		padding-right: 0;
	}
}

.prose .wp-block-table thead {
	border-bottom: 0;
}

.prose .wp-block-table thead th {
	border-bottom: 1px solid var(--rule-strong);
}

.prose .wp-block-table figcaption {
	margin-top: var(--s2);
	color: var(--ink-3);
	font-size: var(--fs-micro);
	text-align: left;
}

@media (max-width: 479px) {
	.prose .wp-block-table th,
	.prose .wp-block-table td {
		padding: var(--s2) 6px;
	}
}

/* A formula set apart from the text. */
.prose .formula {
	margin: var(--s5) 0;
	padding: var(--s4) var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-left: 3px solid var(--accent);
	border-radius: var(--radius);
	font-size: 1.125rem;
	font-variant-numeric: tabular-nums;
	overflow-x: auto;
}

.prose .formula sup {
	font-size: 0.7em;
}

.prose .where {
	margin-top: var(--s3);
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.prose .where dt {
	float: left;
	clear: left;
	min-width: 2.5em;
	font-weight: 600;
	color: var(--ink);
}

.prose .where dd {
	margin: 0 0 var(--s1) 2.5em;
}

/* --------------------------------------------------------------------------
   Calculator hubs (/calculators/…)
   -------------------------------------------------------------------------- */

.hub-hero {
	padding: var(--s4) 0 var(--s6);
	background: var(--tint);
	border-bottom: 1px solid var(--rule);
}

.hub-hero .breadcrumbs {
	margin-bottom: var(--s5);
}

.hub-hero__row {
	display: flex;
	align-items: center;
	gap: var(--s4);
}

.hub-hero__icon {
	display: grid;
	place-items: center;
	width: 60px;
	height: 60px;
	flex: none;
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 14px;
	color: var(--accent);
}

.hub-hero__count {
	margin-bottom: 2px;
	color: var(--accent);
	font-size: var(--fs-small);
	font-weight: 600;
}

.hub-hero h1 {
	margin: 0;
}

.hub-hero__lede {
	max-width: 62ch;
	margin-top: var(--s4);
	color: var(--ink-2);
	font-size: 1.0625rem;
}

/* "Which calculator do I need?": situation cards */
.hub-choices {
	display: grid;
	gap: var(--s3);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.hub-choices {
		grid-template-columns: 1fr 1fr;
	}
}

.hub-choices a {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: var(--s3);
	height: 100%;
	padding: var(--s4) var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
	color: var(--ink);
	text-decoration: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}

.hub-choices a:hover {
	border-color: var(--accent);
	box-shadow: 0 6px 20px rgb(11 93 75 / 0.1);
}

.hub-choices__situation {
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.4;
}

.hub-choices__tool {
	color: var(--accent);
	font-size: var(--fs-small);
	font-weight: 600;
}

.hub-choices__tool::after {
	content: " \2192";
}

/* Every calculator in the topic */
.hub-list {
	margin: 0;
	padding: 0;
	list-style: none;
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
	overflow: hidden;
}

.hub-list li + li {
	border-top: 1px solid var(--rule);
}

.hub-list a {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--s4) var(--s7) var(--s4) var(--s5);
	color: var(--ink);
	text-decoration: none;
}

.hub-list a::after {
	content: "";
	position: absolute;
	top: 50%;
	right: var(--s5);
	width: 9px;
	height: 9px;
	border-top: 2px solid var(--ink-3);
	border-right: 2px solid var(--ink-3);
	transform: translateY(-50%) rotate(45deg);
}

.hub-list a:hover {
	background: var(--tint);
}

.hub-list a:hover::after {
	border-color: var(--accent);
}

.hub-list__name {
	font-size: 1.0625rem;
	font-weight: 600;
}

.hub-list a:hover .hub-list__name {
	color: var(--accent);
}

.hub-list__summary {
	max-width: 70ch;
	color: var(--ink-2);
	font-size: var(--fs-small);
}

/* Other topics */
.hub-others {
	display: grid;
	gap: var(--s3);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 600px) {
	.hub-others {
		grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	}
}

.hub-others a {
	display: flex;
	align-items: center;
	gap: var(--s3);
	padding: var(--s3) var(--s4);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
	color: var(--ink);
	text-decoration: none;
}

.hub-others a:hover {
	border-color: var(--accent);
}

.hub-others .home-topic__icon {
	width: 40px;
	height: 40px;
	border-radius: 10px;
}

.hub-others__name {
	display: block;
	font-weight: 600;
}

.hub-others__count {
	display: block;
	color: var(--ink-3);
	font-size: var(--fs-small);
}

.hub-note {
	max-width: 68ch;
	margin-top: var(--s7);
	color: var(--ink-3);
	font-size: var(--fs-small);
}

/* --------------------------------------------------------------------------
   Home page
   -------------------------------------------------------------------------- */

.home-hero {
	padding: var(--s7) 0;
	background: #14322b;
	background: linear-gradient(135deg, #0f2a24 0%, #14433a 100%);
	color: #fff;
}

.home-hero__grid {
	display: grid;
	gap: var(--s6);
	align-items: center;
}

@media (min-width: 960px) {
	.home-hero__grid {
		grid-template-columns: 1.25fr 1fr;
		gap: var(--s7);
	}
}

.home-hero__badge {
	display: inline-block;
	margin-bottom: var(--s4);
	padding: 4px var(--s3);
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	color: #d6ebe4;
	font-size: var(--fs-small);
}

.home-hero h1 {
	max-width: 16ch;
	margin-bottom: var(--s4);
	color: #fff;
	font-size: clamp(2rem, 5vw, 3.25rem);
	line-height: 1.1;
}

.home-hero__lede {
	max-width: 52ch;
	color: #d6ebe4;
	font-size: 1.125rem;
}

.home-search {
	display: flex;
	align-items: center;
	gap: var(--s3);
	width: 100%;
	max-width: 32rem;
	min-height: 56px;
	margin-top: var(--s5);
	padding: 0 var(--s4);
	background: #fff;
	border: 0;
	border-radius: var(--radius);
	box-shadow: 0 6px 24px rgba(0, 0, 0, 0.25);
	color: var(--ink-3);
	font: inherit;
	font-size: 1.0625rem;
	text-align: left;
	cursor: text;
}

.home-search:focus-visible {
	outline: 3px solid #9fe0cc;
	outline-offset: 2px;
}

html:not(.js) .home-search {
	display: none;
}

.home-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--s2);
	margin: var(--s4) 0 0;
	padding: 0;
	list-style: none;
}

.home-chips a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 0 var(--s3);
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	color: #fff;
	font-size: var(--fs-small);
	text-decoration: none;
}

.home-chips a:hover {
	background: rgba(255, 255, 255, 0.12);
}

/* The working calculator in the hero */
.home-quick {
	padding: var(--s5);
	background: #fff;
	border-radius: 10px;
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
	color: var(--ink);
}

.home-quick__title {
	margin-bottom: var(--s4);
	font-size: 1.25rem;
}

.home-quick__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--s3);
}

.home-quick__field {
	margin-bottom: var(--s3);
}

.home-quick__field label {
	display: block;
	margin-bottom: 4px;
	font-size: var(--fs-small);
	font-weight: 600;
}

.home-quick__input {
	display: flex;
	align-items: center;
	gap: var(--s2);
	min-height: 48px;
	padding: 0 var(--s3);
	border: 1px solid var(--rule-strong);
	border-radius: var(--radius);
	color: var(--ink-3);
}

.home-quick__input:focus-within {
	border-color: var(--accent);
	outline: 2px solid var(--accent);
	outline-offset: -1px;
}

.home-quick__input input {
	width: 100%;
	min-width: 0;
	border: 0;
	outline: 0;
	background: transparent;
	color: var(--ink);
	font: inherit;
	font-size: 1.0625rem;
	font-variant-numeric: tabular-nums;
}

.home-quick__result {
	display: grid;
	margin: var(--s2) 0 var(--s4);
	padding: var(--s4);
	background: var(--tint);
	border-radius: var(--radius);
}

.home-quick__label {
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.home-quick__value {
	font-size: 2.25rem;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
}

.home-quick__note {
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.home-quick__more {
	font-weight: 600;
}

/* Sections below the hero */
.home-section {
	margin-top: var(--s7);
}

.home-section > h2,
.home-section__head {
	margin-bottom: var(--s5);
}

.home-section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--s3);
}

.home-section__head a {
	font-weight: 600;
}

.home-topics {
	display: grid;
	gap: var(--s4);
}

@media (min-width: 900px) {
	.home-topics {
		grid-template-columns: repeat(3, 1fr);
	}
}

.home-topic {
	display: flex;
	flex-direction: column;
	padding: var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
}

.home-topic__head {
	display: flex;
	align-items: center;
	gap: var(--s3);
}

.home-topic__icon {
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	flex: none;
	background: #e3f1ec;
	border-radius: 12px;
	color: var(--accent);
}

.home-topic h3 {
	font-size: 1.25rem;
}

.home-topic__count {
	color: var(--ink-3);
	font-size: var(--fs-small);
}

.home-topic__summary {
	margin: var(--s3) 0 var(--s4);
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.home-topic__tools {
	display: grid;
	gap: var(--s1);
	margin: 0 0 var(--s4);
	padding: 0;
	list-style: none;
}

.home-topic__tools a {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: var(--s3) var(--s6) var(--s3) var(--s3);
	margin: 0 calc(-1 * var(--s3));
	border-radius: 8px;
	color: var(--ink);
	text-decoration: none;
}

.home-topic__tools a::after {
	content: "";
	position: absolute;
	top: 50%;
	right: var(--s3);
	width: 8px;
	height: 8px;
	border-top: 2px solid var(--ink-3);
	border-right: 2px solid var(--ink-3);
	transform: translateY(-50%) rotate(45deg);
}

.home-topic__tools a:hover {
	background: var(--tint);
}

.home-topic__tools a:hover::after {
	border-color: var(--accent);
}

.home-topic__name {
	font-weight: 600;
}

.home-topic__tools a:hover .home-topic__name {
	color: var(--accent);
}

.home-topic__hint {
	color: var(--ink-3);
	font-size: var(--fs-small);
}

/* Pinned to the bottom so every card ends on the same line. */
.home-topic__all {
	margin-top: auto;
	padding-top: var(--s4);
	border-top: 1px solid var(--rule);
	font-weight: 600;
}

.home-questions {
	display: grid;
	gap: var(--s4);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.home-questions {
		grid-template-columns: 1fr 1fr;
	}
}

@media (min-width: 1024px) {
	.home-questions {
		grid-template-columns: repeat(3, 1fr);
	}
}

.home-questions a {
	display: flex;
	flex-direction: column;
	gap: var(--s2);
	height: 100%;
	padding: var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
	color: var(--ink);
	text-decoration: none;
	transition: border-color 0.15s, box-shadow 0.15s;
}

.home-questions a:hover {
	border-color: var(--accent);
	box-shadow: 0 6px 20px rgb(11 93 75 / 0.1);
}

.home-questions__tag {
	align-self: flex-start;
	padding: 2px var(--s2);
	background: #e3f1ec;
	border-radius: 999px;
	color: var(--accent);
	font-size: var(--fs-micro);
	font-weight: 600;
}

.home-questions__q {
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.35;
}

.home-questions__example {
	padding: var(--s3);
	background: var(--tint);
	border-radius: 8px;
	color: var(--ink-2);
	font-size: var(--fs-small);
	font-variant-numeric: tabular-nums;
}

.home-questions__tool {
	margin-top: auto;
	color: var(--accent);
	font-size: var(--fs-small);
	font-weight: 600;
}

.home-questions__tool::after {
	content: " →";
}

.home-trust__points {
	display: grid;
	gap: var(--s4);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.home-trust__points {
		grid-template-columns: 1fr 1fr;
	}
}

@media (min-width: 1100px) {
	.home-trust__points {
		grid-template-columns: repeat(4, 1fr);
	}
}

.home-trust__points li {
	display: flex;
	flex-direction: column;
	gap: var(--s2);
	height: 100%;
	padding: var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 10px;
}

.home-trust__icon {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin-bottom: var(--s2);
	background: #e3f1ec;
	border-radius: 10px;
	color: var(--accent);
}

.home-trust__points h3 {
	font-size: 1.0625rem;
}

.home-trust__points p {
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.home-trust__more {
	margin-top: var(--s5);
	font-weight: 600;
}

.home .container:last-child {
	padding-bottom: var(--s7);
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.site-footer {
	padding: var(--s7) 0 var(--s5);
	background: #0f2a24;
	color: #c9ded7;
	font-size: var(--fs-small);
}

.site-footer__grid {
	display: grid;
	gap: var(--s6) var(--s5);
}

/* Two link columns from small phones up; the brand block spans the row. */
@media (min-width: 360px) {
	.site-footer__grid {
		grid-template-columns: 1fr 1fr;
	}

	.site-footer__brand {
		grid-column: 1 / -1;
	}
}

@media (min-width: 760px) {
	.site-footer__grid {
		grid-template-columns: repeat(4, 1fr);
	}
}

@media (min-width: 1024px) {
	.site-footer__grid {
		grid-template-columns: 1.6fr repeat(4, 1fr);
		gap: var(--s5);
	}

	.site-footer__brand {
		grid-column: auto;
		padding-right: var(--s5);
	}
}

.site-footer .wordmark {
	color: #fff;
}

/* The mark's own green would vanish on the dark footer: use a lighter green. */
.site-footer .wordmark__mark rect {
	fill: #2a8a70;
}

.site-footer__brand p {
	max-width: 36ch;
	margin-top: var(--s3);
	line-height: 1.6;
}

.site-footer__cta {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	margin-top: var(--s4);
	padding: 0 var(--s4);
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	color: #fff;
	font-weight: 600;
	text-decoration: none;
}

.site-footer__cta:hover {
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
}

.site-footer__heading {
	margin: 0 0 var(--s3);
	color: #fff;
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.01em;
}

.site-footer__heading a {
	color: inherit;
	text-decoration: none;
}

.site-footer__heading a:hover {
	text-decoration: underline;
}

.site-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer li a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	color: #c9ded7;
	text-decoration: none;
}

.site-footer li a:hover,
.site-footer li a[aria-current="page"] {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.site-footer a:focus-visible {
	outline: 2px solid #9fe0cc;
	outline-offset: 2px;
}

.site-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--s2) var(--s5);
	margin-top: var(--s6);
	padding-top: var(--s4);
	border-top: 1px solid rgba(255, 255, 255, 0.15);
	color: #9dbcb2;
	font-size: var(--fs-micro);
}

/* --------------------------------------------------------------------------
   Print
   -------------------------------------------------------------------------- */

@media print {
	@page {
		margin: 16mm 14mm;
	}

	:root {
		--paper: #fff;
	}

	body {
		font-size: 10.5pt;
		background: #fff;
	}

	.skip-link,
	.site-nav,
	.site-header__actions,
	.site-search,
	.breadcrumbs,
	.site-footer__grid {
		display: none !important;
	}

	.site-header {
		border-bottom: 1px solid #999;
	}

	.site-footer {
		background: none;
		padding: 0;
		border: 0;
	}

	.site-footer__bottom {
		color: #333;
		border-color: #999;
	}

	a {
		color: inherit;
		text-decoration: none;
	}
}

/* --------------------------------------------------------------------------
   Touch targets and tablet refinements (from the live-site review)
   -------------------------------------------------------------------------- */

/* Standalone links need at least a 24px target (WCAG 2.2 target size). */
.site-footer__heading a,
.hub-tools__name a,
.hub-guide__tool,
.hub-note a,
.home-quick__more,
.home-trust__more a,
.home-section__head a,
.nav-panel__all a {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
}

/* Tablets: let the hero headline use the width instead of three short lines. */
@media (min-width: 600px) and (max-width: 959px) {
	.home-hero h1 {
		max-width: 22ch;
	}
}

/* --------------------------------------------------------------------------
   Contact form (added to the Contact page by the Finacing Tools plugin)
   -------------------------------------------------------------------------- */

.contact-form {
	max-width: 680px;
	margin-top: var(--s7);
	padding: var(--s5);
	background: var(--surface);
	border: 1px solid var(--rule);
	border-radius: 12px;
}

.contact-form h2 {
	margin-top: 0;
}

.contact-form__row {
	display: grid;
	gap: 0 var(--s4);
}

@media (min-width: 600px) {
	.contact-form__row {
		grid-template-columns: 1fr 1fr;
	}
}

.contact-form__field {
	margin: 0 0 var(--s4);
}

.contact-form__field label {
	display: block;
	margin-bottom: 6px;
	font-weight: 600;
	font-size: 0.9375rem;
}

.contact-form__optional {
	color: var(--ink-3);
	font-weight: 400;
}

.contact-form input,
.contact-form select,
.contact-form textarea {
	width: 100%;
	min-height: 48px;
	padding: var(--s2) var(--s3);
	background: var(--surface);
	border: 1px solid var(--rule-strong);
	border-radius: var(--radius);
	color: var(--ink);
	font: inherit;
	font-size: 1rem;
}

.contact-form textarea {
	min-height: 140px;
	resize: vertical;
}

.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
	border-color: var(--accent);
	outline: 2px solid var(--accent);
	outline-offset: -1px;
}

.contact-form__privacy {
	margin: 0 0 var(--s4);
	color: var(--ink-2);
	font-size: var(--fs-small);
}

.contact-form__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 var(--s5);
	background: var(--accent);
	border: 0;
	border-radius: var(--radius);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.contact-form__submit:hover {
	background: var(--accent-hover);
}

.contact-form__notice {
	margin: 0 0 var(--s4);
	padding: var(--s3) var(--s4);
	border-radius: var(--radius);
}

.contact-form__notice--ok {
	background: #e3f1ec;
	color: #0b4a3c;
}

.contact-form__notice--error {
	background: #fbecea;
	color: #8a2a1f;
}

/* The honeypot stays out of sight and out of the tab order. */
.contact-form__trap {
	position: absolute;
	left: -10000px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Menu button: three lines, or a cross while the menu is open. */
.menu-toggle__close,
.menu-toggle[aria-expanded="true"] .menu-toggle__open {
	display: none;
}

.menu-toggle[aria-expanded="true"] .menu-toggle__close {
	display: block;
}

/* Contact page: the form first, then the direct-email box. */
.contact-form {
	margin-top: var(--s4);
}

.contact-direct {
	display: flex;
	gap: var(--s4);
	max-width: 680px;
	margin-top: var(--s5);
	padding: var(--s5);
	background: var(--tint);
	border: 1px solid var(--rule);
	border-radius: 12px;
}

.contact-direct__icon {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	flex: none;
	background: #e3f1ec;
	border-radius: 10px;
	color: var(--accent);
}

.contact-direct h2 {
	margin: 0 0 var(--s2);
	font-size: 1.25rem;
}

.contact-direct p {
	margin: 0;
	color: var(--ink-2);
}

.contact-direct a {
	font-weight: 600;
}
