/*
 * Nurtured at Home Educator Calculator - front-end layout.
 *
 * Structure only. Colour, type and form styling come from the site's design
 * system: the .nah-* classes in the markup and the --nah-* tokens below. Every
 * token has a neutral fallback so the calculator still works without them.
 */

.nahc {
	--nahc-gap: var(--nah-space-5, 1.5rem);
	color: var(--nah-text, #233314);
}

/* Several parts set their own display, which would otherwise beat [hidden]. */
.nahc [hidden] {
	display: none !important;
}

.nahc--pending .nahc__app {
	display: none;
}

/* The site caps paragraph width for reading; the calculator lays out its own. */
.nahc p {
	max-width: none;
}

.nahc-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

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

.nahc__layout {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: var(--nahc-gap);
	align-items: start;
}

.nahc__outputs {
	display: grid;
	gap: var(--nahc-gap);
	min-width: 0;
}

/* Cards --------------------------------------------------------------------
   Fallback card styling matches .nah-card. The panels are not links, so they
   do not take the card hover lift. Inside a dark band the cards stay light,
   so text, muted text, headings and focus rings inside them are reset to the
   light-surface versions. */

.nahc__card {
	background: var(--nah-white, #fff);
	border: 1px solid var(--nah-border, #D3D5C8);
	border-radius: var(--nah-radius, 16px);
	padding: var(--nah-space-5, 1.5rem);
}

.nahc .nahc__card {
	color: var(--nah-pine, #233314);
	--nah-text-muted: var(--nah-moss, #515C3C);
}

.nahc .nahc__card:hover {
	border-color: var(--nah-border, #D3D5C8);
	box-shadow: none;
}

.nahc .nahc__card :focus-visible {
	outline-color: var(--nah-focus, #673324);
}

.nahc .nahc__card-heading {
	margin: 0 0 var(--nah-space-5, 1.5rem);
	font-size: var(--nah-fs-h4, 1.25rem);
	line-height: var(--nah-lh-heading, 1.22);
	color: var(--nah-moss, #515C3C);
}

.nahc__card-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--nah-space-2, 0.5rem) var(--nah-space-4, 1rem);
	margin-bottom: var(--nah-space-5, 1.5rem);
}

.nahc .nahc__card-head .nahc__card-heading {
	margin: 0;
}

.nahc .nahc__note {
	margin: 0;
	font-size: var(--nah-fs-small, 1rem);
	color: var(--nah-text-muted, #515C3C);
}

/* Fields ------------------------------------------------------------------- */

.nahc .nahc__field {
	margin: 0 0 var(--nah-space-5, 1.5rem);
}

.nahc .nahc__field:last-child {
	margin-bottom: 0;
}

.nahc__label {
	display: block;
	margin-bottom: var(--nah-space-2, 0.5rem);
	font-size: var(--nah-fs-small, 1rem);
	font-weight: 700;
	color: var(--nah-text, #233314);
}

.nahc__control {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 0.75rem 1rem;
	background: var(--nah-white, #fff);
	color: var(--nah-text, #233314);
	border: 1px solid var(--nah-border-strong, #A8AE9E);
	border-radius: var(--nah-radius-sm, 8px);
	font-family: inherit;
	font-size: 1rem;
	line-height: 1.4;
}

.nahc__control:focus {
	border-color: var(--nah-moss, #515C3C);
	outline: 3px solid var(--nah-focus, #673324);
	outline-offset: 1px;
}

.nahc .is-invalid .nahc__control {
	border-color: var(--nah-error, #8E2C1A);
	border-width: 2px;
}

.nahc .nahc__help {
	margin: var(--nah-space-2, 0.5rem) 0 0;
	font-size: var(--nah-fs-small, 1rem);
	color: var(--nah-text-muted, #515C3C);
}

.nahc .nahc__error {
	margin: var(--nah-space-2, 0.5rem) 0 0;
	font-size: var(--nah-fs-small, 1rem);
	font-weight: 700;
	color: var(--nah-error, #8E2C1A);
}

/* Stepper: minus, value, plus in one row */

.nahc__stepper {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr) 48px;
}

.nahc .nahc__stepper .nahc__control {
	border-left-width: 0;
	border-right-width: 0;
	border-radius: 0;
	text-align: center;
	font-variant-numeric: tabular-nums;
}

.nahc .nahc__stepper .nahc__control:focus {
	position: relative;
	z-index: 1;
}

.nahc__step {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	margin: 0;
	padding: 0;
	background: var(--nah-cream-200, #ECE8E0);
	color: var(--nah-text, #233314);
	border: 1px solid var(--nah-border-strong, #A8AE9E);
	font-family: inherit;
	font-size: 1.375rem;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	transition: background-color var(--nah-dur, 180ms) var(--nah-ease, ease);
}

.nahc__step--down {
	border-radius: var(--nah-radius-sm, 8px) 0 0 var(--nah-radius-sm, 8px);
}

.nahc__step--up {
	border-radius: 0 var(--nah-radius-sm, 8px) var(--nah-radius-sm, 8px) 0;
}

.nahc__step:hover {
	background: var(--nah-sage-300, #D3D5C8);
}

.nahc__step:focus-visible {
	position: relative;
	z-index: 1;
	outline: 3px solid var(--nah-focus, #673324);
	outline-offset: 1px;
}

.nahc__step[aria-disabled="true"] {
	background: var(--nah-white, #fff);
	color: var(--nah-text-muted, #515C3C);
	cursor: not-allowed;
}

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

.nahc__pair {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	gap: var(--nah-space-4, 1rem);
	align-items: stretch;
}

.nahc__figure {
	min-width: 0;
	padding: var(--nah-space-5, 1.5rem);
	border: 1px solid var(--nah-border, #D3D5C8);
	border-radius: var(--nah-radius, 16px);
}

.nahc__figure--takehome {
	background: var(--nah-sage-100, #E3E5DC);
}

.nahc__figure--salary {
	background: var(--nah-honey-100, #EBE1D4);
}

/* Labels are Moss on both tints (5.5:1 or better). Honey never carries text. */
.nahc .nahc__figure-label {
	display: flex;
	align-items: center;
	gap: var(--nah-space-2, 0.5rem);
	margin: 0 0 var(--nah-space-3, 0.75rem);
	font-size: var(--nah-fs-small, 1rem);
	font-weight: 700;
	line-height: 1.3;
	color: var(--nah-moss, #515C3C);
}

.nahc__dot {
	flex: none;
	width: 0.625rem;
	height: 0.625rem;
	border-radius: 50%;
	background: var(--nah-sage, #909675);
}

.nahc__figure--salary .nahc__dot {
	background: var(--nah-honey, #AF8755);
}

.nahc .nahc__figure-value {
	margin: 0;
	font-family: var(--nah-font-display, Georgia, serif);
	font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.5rem);
	font-weight: 600;
	line-height: var(--nah-lh-tight, 1.15);
	color: var(--nah-pine, #233314);
	font-variant-numeric: lining-nums tabular-nums;
	overflow-wrap: anywhere;
}

.nahc .nahc__figure-sub {
	margin: var(--nah-space-2, 0.5rem) 0 0;
	font-size: var(--nah-fs-small, 1rem);
	color: var(--nah-moss, #515C3C);
}

.nahc__match {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--nah-space-1, 0.25rem);
	color: var(--nah-moss, #515C3C);
}

.nahc__match-label {
	font-size: var(--nah-fs-label, 0.8125rem);
	font-weight: 700;
	letter-spacing: var(--nah-ls-label, 0.08em);
	text-transform: uppercase;
	white-space: nowrap;
}

.nahc__arrow {
	width: 1.5rem;
	height: 1.5rem;
}

.nahc .nahc__summary {
	display: flex;
	align-items: flex-start;
	gap: var(--nah-space-3, 0.75rem);
	margin: var(--nah-space-5, 1.5rem) 0 0;
	padding: var(--nah-space-4, 1rem);
	background: var(--nah-cream, #E5E0D6);
	color: var(--nah-pine, #233314);
	border-radius: var(--nah-radius-sm, 8px);
	font-size: var(--nah-fs-small, 1rem);
	line-height: 1.6;
}

.nahc__icon {
	flex: none;
	width: 1.25rem;
	height: 1.25rem;
	margin-top: 0.15em;
	color: var(--nah-moss, #515C3C);
}

/* Alerts: fallback matching .nah-alert */

.nahc__alert,
.nahc__gst,
.nahc__stale {
	padding: var(--nah-space-4, 1rem);
	border-left: 4px solid;
	border-radius: var(--nah-radius-sm, 8px);
}

.nahc .nahc__alert {
	margin: var(--nah-space-4, 1rem) 0 0;
}

.nahc .nahc__gst,
.nahc .nahc__stale {
	margin: 0;
}

/* Breakdown ------------------------------------------------------------------ */

.nahc .nahc__breakdown-heading {
	margin: 0 0 var(--nah-space-4, 1rem);
	font-family: var(--nah-font-body, sans-serif);
	font-size: var(--nah-fs-label, 0.8125rem);
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: var(--nah-ls-label, 0.08em);
	text-transform: uppercase;
	color: var(--nah-moss, #515C3C);
}

.nahc .nahc__rows {
	margin: 0;
}

.nahc__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--nah-space-4, 1rem);
	padding: var(--nah-space-4, 1rem) 0;
	border-top: 1px solid var(--nah-border, #D3D5C8);
}

.nahc__row:first-child {
	padding-top: 0;
	border-top: 0;
}

.nahc__row:last-child {
	padding-bottom: 0;
}

.nahc .nahc__row dt,
.nahc .nahc__row dd {
	margin: 0;
}

.nahc__row-label {
	display: block;
	font-weight: 700;
}

.nahc__row-help {
	display: block;
	margin-top: var(--nah-space-1, 0.25rem);
	font-size: var(--nah-fs-small, 1rem);
	color: var(--nah-text-muted, #515C3C);
}

.nahc .nahc__row dd {
	font-weight: 700;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

/* Notes ---------------------------------------------------------------------- */

.nahc .nahc__further {
	margin: 0;
	line-height: var(--nah-lh-body, 1.7);
}

.nahc__footnotes {
	margin-top: var(--nahc-gap);
}

.nahc__assumptions {
	margin-bottom: var(--nah-space-4, 1rem);
}

.nahc__assumptions summary {
	display: list-item;
	padding-block: 0.625rem;
	font-weight: 700;
	cursor: pointer;
}

.nahc .nahc__assumptions ul {
	margin: var(--nah-space-2, 0.5rem) 0 0;
	padding-left: 1.25rem;
	list-style: disc;
}

.nahc .nahc__assumptions li {
	margin-bottom: var(--nah-space-2, 0.5rem);
}

.nahc .nahc__disclaimer {
	margin: 0;
	font-size: var(--nah-fs-small, 1rem);
	color: var(--nah-text-muted, #515C3C);
}

/* Responsive ----------------------------------------------------------------- */

@media (max-width: 1023px) {
	.nahc__layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 767px) {
	.nahc__pair {
		grid-template-columns: minmax(0, 1fr);
	}

	.nahc__match {
		flex-direction: row;
	}

	.nahc__arrow {
		transform: rotate(90deg);
	}
}
