/* Horizon Skylights: crisp Swiss information design. Paper ground, carbon type, rain-radar green,
   ruled hairline cells, DM Mono readouts. Square corners, no shadows, no gradients. */

/* ------------------------------------------------------------------ fonts (self-hosted) */
@font-face { font-family: "Schibsted Grotesk"; src: url(../fonts/schibsted-grotesk-latin.woff2) format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Schibsted Grotesk"; src: url(../fonts/schibsted-grotesk-italic-latin.woff2) format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "DM Mono"; src: url(../fonts/dm-mono-400-latin.woff2) format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "DM Mono"; src: url(../fonts/dm-mono-500-latin.woff2) format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
/* Metric fallbacks measured in Chrome with build/theme-tools/font-metrics.mjs (7g.8): the swap moves nothing. */
@font-face { font-family: "Schibsted Fallback"; src: local("Arial"); font-weight: 400 500; size-adjust: 104.7%; ascent-override: 92%; descent-override: 24%; line-gap-override: 0%; }
@font-face { font-family: "Schibsted Fallback"; src: local("Arial Bold"), local("Arial-BoldMT"); font-weight: 600 900; size-adjust: 104.7%; ascent-override: 106%; descent-override: 28%; line-gap-override: 0%; }
@font-face { font-family: "Mono Fallback"; src: local("Courier New"); size-adjust: 100%; ascent-override: 96%; descent-override: 30%; line-gap-override: 0%; }

/* ------------------------------------------------------------------ tokens */
:root {
	--paper: #FAFAF7;
	--white: #FFFFFF;
	--carbon: #111413;
	--slate: #5B6360;
	--rule: #D5D8D6;
	--mist: #EEF1EF;
	--radar: #18964A;      /* large text >= 24px, ticks, rules, blobs, icons only */
	--radar-deep: #137A3C; /* buttons (white text), links, small green text */
	--radar-pale: #BEEACD;
	--radar-blue: #9CC9EA; /* blobs and sea only, never text */
	--sans: "Schibsted Grotesk", "Schibsted Fallback", Arial, sans-serif;
	--mono: "DM Mono", "Mono Fallback", "Courier New", monospace;
	--w-prose: 68ch;
	--w-mid: 1040px;
	--w-std: 1180px;
	--w-wide: 1320px;
	--gut: clamp(16px, 3vw, 32px);
	--pad: clamp(48px, 7vw, 96px);
	--hdr: 64px;
}

/* ------------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--hdr) + 16px); }
body { margin: 0; background: var(--paper); color: var(--carbon); font: 400 18px/1.65 var(--sans); }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; letter-spacing: -0.02em; line-height: 1.1; }
p, ul, ol, dl, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
main :is(p, li, dd, td, th, dt, figcaption) { overflow-wrap: break-word; }
:focus-visible { outline: 2px solid var(--carbon); outline-offset: 2px; }
.on-dark :focus-visible { outline-color: var(--radar-pale); }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: 8px; top: -60px; z-index: 200; background: var(--carbon); color: var(--white); padding: 10px 14px; font: 500 14px var(--mono); }
.skip:focus { top: 8px; }
.wrap { width: 100%; max-width: calc(var(--w-std) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.wrap--wide { max-width: calc(var(--w-wide) + 2 * var(--gut)); }
.wrap--mid { max-width: calc(var(--w-mid) + 2 * var(--gut)); }
.wrap--prose { max-width: calc(var(--w-prose) + 2 * var(--gut)); }
.kicker, .mod__label { font: 500 13px/1.3 var(--mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--carbon); }
.h-display { font-weight: 800; font-size: clamp(32px, 3.9vw, 56px); line-height: 1.04; letter-spacing: -0.025em; }
.h-sect { font-weight: 700; font-size: clamp(26px, 2.6vw, 36px); line-height: 1.12; margin-bottom: 20px; }
.count { font: 500 13px var(--mono); color: var(--slate); letter-spacing: 0.04em; }

/* ------------------------------------------------------------------ buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 10px 20px; border: 1px solid transparent; border-radius: 0; font: 600 16px/1.15 var(--sans); text-decoration: none; cursor: pointer; white-space: nowrap; transition: transform .12s ease, background-color .12s ease; }
.btn--go { background: var(--radar-deep); color: var(--white); }
.btn--go:hover { background: #0F6531; }
.btn--line { background: var(--white); color: var(--carbon); border-color: var(--carbon); }
.btn--line:hover { background: var(--mist); }
.btn--mono { font: 500 16px/1.15 var(--mono); letter-spacing: 0.01em; }
.btn--pale { background: var(--radar-pale); color: var(--carbon); }
.btn:hover { transform: translate(1px, 1px); }
.pair { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 14px; }
.pair .btn { flex: 1 1 180px; }
.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 24px; }
.cta-row .pair { margin-top: 0; flex: 1 1 360px; }
.risk { font: 400 15px/1.55 var(--mono); color: var(--slate); margin-top: 16px; max-width: 46ch; }
.linkbtn { background: none; border: 0; padding: 0; color: var(--radar-deep); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; font: inherit; }

/* ------------------------------------------------------------------ header */
.site-header { position: sticky; top: 0; z-index: 100; background: var(--white); border-bottom: 1px solid var(--rule); }
.hdr { display: flex; align-items: center; gap: 20px; height: calc(var(--hdr) - 1px); max-width: calc(var(--w-wide) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: var(--carbon); flex: none; }
.brand__mark { width: 32px; height: 32px; }
.brand__word { font: 700 21px/1 var(--sans); letter-spacing: -0.02em; white-space: nowrap; }
.nav { margin-left: auto; }
.nav__list { display: flex; align-items: center; gap: 4px; }
.nav__item { position: relative; display: flex; align-items: center; }
.nav__link { display: inline-flex; align-items: center; min-height: 44px; padding: 0 9px; font: 600 15px/1 var(--sans); text-decoration: none; white-space: nowrap; }
.nav__link:hover, .nav__link[aria-current] { text-decoration: underline; text-decoration-color: var(--radar); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.nav__caret { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 44px; margin-left: -6px; background: none; border: 0; cursor: pointer; }
.caret { width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .15s; }
.nav__caret[aria-expanded="true"] .caret { transform: translateY(2px) rotate(225deg); }
.sub { position: absolute; top: 100%; left: 0; min-width: 270px; background: var(--white); border: 1px solid var(--carbon); padding: 6px 0; display: none; z-index: 5; }
.has-sub.is-open .sub { display: block; }
.sub a { display: block; padding: 9px 16px; font: 500 14px/1.3 var(--mono); text-decoration: none; }
.sub a:hover { background: var(--mist); }
.sub__all { border-top: 1px solid var(--rule); margin-top: 4px; }
.nav__extra { display: none; }
.hdr__actions { display: flex; align-items: center; gap: 8px; flex: none; }
.hdr__btn { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border: 1px solid var(--carbon); background: var(--white); color: var(--carbon); font: 500 14px/1 var(--mono); text-decoration: none; white-space: nowrap; cursor: pointer; border-radius: 0; }
.hdr__cta { background: var(--radar-deep); border-color: var(--radar-deep); color: var(--white); font: 600 15px/1 var(--sans); }
.hdr__phone, .hdr__wa { display: none; }
.burger { display: none; width: 44px; height: 44px; align-items: center; justify-content: center; background: var(--white); border: 1px solid var(--carbon); cursor: pointer; border-radius: 0; padding: 0; }
.burger__box, .burger__box span, .burger__box::before, .burger__box::after { display: block; width: 20px; height: 1.5px; background: var(--carbon); }
.burger__box { position: relative; background: none; }
.burger__box::before, .burger__box::after { content: ""; position: absolute; left: 0; transition: transform .15s; }
.burger__box::before { top: -6px; }
.burger__box::after { top: 6px; }
.nav-open .burger__box span { opacity: 0; }
.nav-open .burger__box::before { transform: translateY(6px) rotate(45deg); }
.nav-open .burger__box::after { transform: translateY(-6px) rotate(-45deg); }
@media (min-width: 1180px) { .hdr__wa { display: inline-flex; } }
@media (min-width: 1280px) { .hdr__phone { display: inline-flex; } .nav__link { padding: 0 11px; } }
@media (max-width: 1023.98px) {
	.burger { display: inline-flex; }
	.nav { position: fixed; inset: var(--hdr) 0 0 0; background: var(--paper); border-top: 1px solid var(--rule); overflow-y: auto; padding: 8px var(--gut) 96px; display: none; margin: 0; }
	.nav-open .nav { display: block; }
	.nav-open { overflow: hidden; }
	.nav { overscroll-behavior: contain; }
	.nav__list { display: block; }
	.nav__item { flex-wrap: wrap; border-bottom: 1px solid var(--rule); }
	.nav__link { flex: 1; min-height: 56px; font-size: 20px; padding: 0; }
	.nav__caret { width: 56px; height: 56px; margin: 0; }
	.sub { position: static; display: none; width: 100%; border: 0; border-top: 1px solid var(--rule); padding: 4px 0 10px; background: none; }
	.sub a { padding: 10px 0; font-size: 15px; }
	.nav__extra { display: block; padding-top: 20px; }
	.nav__extra .btn { width: 100%; }
	.nav__note { margin-top: 12px; font: 400 14px/1.5 var(--mono); color: var(--slate); }
	.hdr__actions { margin-left: auto; }
}
@media (max-width: 559.98px) { .hdr__cta { display: none; } .brand__word { font-size: 19px; } }

/* ------------------------------------------------------------------ breadcrumbs */
.crumbs ol { display: flex; flex-wrap: wrap; gap: 4px 0; padding: 14px 0; font: 400 14px/1.4 var(--mono); }
.crumbs li + li::before { content: "/"; margin: 0 10px; color: var(--slate); }
.crumbs a { text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.crumbs [aria-current] { color: var(--slate); }

/* ------------------------------------------------------------------ readout strips */
.readout { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); border: 1px solid var(--carbon); background: var(--white); }
.readout__cell { position: relative; display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0 8px; padding: 12px 14px; border-left: 1px solid var(--carbon); font: 400 15px/1.35 var(--mono); text-align: center; margin-left: -1px; }
.readout__cell dt { font-weight: 500; letter-spacing: 0.04em; }
.readout__cell dd { margin: 0; }
.readout__cell::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px; background: var(--radar); transform-origin: left; transform: scaleX(1); transition: transform .9s ease; }
.readout--hero .readout__cell::after, .readout--light .readout__cell::after, .readout--stack .readout__cell::after { display: none; }
.readout--stack { grid-template-columns: minmax(0, 1fr); align-self: start; }
.readout--stack .readout__cell { justify-content: space-between; border-left: 0; margin: 0; border-top: 1px solid var(--carbon); text-align: left; }
.readout--stack .readout__cell:first-child { border-top: 0; }

/* ------------------------------------------------------------------ 02-hero: forecast + split */
.forecast { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; border-bottom: 1px solid var(--rule); background: var(--paper); }
.forecast__day { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px 6px 14px; border-left: 1px solid var(--rule); text-align: center; }
.forecast__day:first-child { border-left: 0; }
.forecast__d { font: 500 17px/1 var(--mono); letter-spacing: 0.12em; }
.forecast__icon { width: 64px; height: 64px; color: var(--carbon); transition: opacity .5s ease, transform .5s ease; transition-delay: calc(var(--i, 0) * 90ms); }
.forecast__in { font: 400 15px/1.2 var(--mono); }
.forecast-all { display: none; }
.hero { display: grid; grid-template-columns: minmax(0, 49fr) minmax(0, 51fr); border-bottom: 1px solid var(--rule); }
.hero__media { position: relative; min-height: 100%; background: var(--mist); }
.hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__copy { padding: clamp(32px, 4vw, 56px) var(--gut) clamp(32px, 4vw, 56px) clamp(24px, 5.5vw, 80px); align-self: center; }
.hero__h1 { font-weight: 800; font-size: clamp(38px, 4.4vw, 68px); line-height: 1.0; letter-spacing: -0.03em; max-width: 11.5em; }
.hero__tag { display: block; color: var(--radar); }
.starter { margin-top: clamp(24px, 3vw, 36px); max-width: 560px; }
.starter__label { display: block; font: 400 14px/1.3 var(--mono); margin-bottom: 6px; }
.starter__row { display: flex; gap: 14px; }
.starter__input { flex: 1 1 auto; min-width: 0; min-height: 48px; padding: 8px 12px; border: 1px solid var(--carbon); background: var(--white); border-radius: 0; font: 400 17px var(--mono); }
.starter__btn { flex: none; }
.starter__note { font: 400 13px/1.45 var(--mono); color: var(--slate); margin-top: 8px; }
.hero__copy .pair, .phero__copy .pair { max-width: 560px; }
@media (max-width: 899.98px) {
	.hero { grid-template-columns: minmax(0, 1fr); }
	.hero__media { aspect-ratio: 4 / 3; }
	.hero__copy { padding: 28px var(--gut) 36px; }
}
@media (max-width: 759.98px) {
	.forecast { grid-auto-flow: row; grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)); }
	.forecast__day { padding: 10px 2px 8px; gap: 4px; }
	.forecast__d { font-size: 12px; letter-spacing: 0.06em; }
	.forecast__icon { width: 34px; height: 34px; }
	.forecast__in { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.forecast-all { display: block; padding: 8px var(--gut); border-bottom: 1px solid var(--rule); font: 400 13px/1.3 var(--mono); text-align: center; }
	.starter__row { flex-wrap: wrap; }
	.starter__btn { flex: 1 1 100%; }
}

/* ------------------------------------------------------------------ radar map */
.radar__map { position: relative; width: 100%; overflow: hidden; background: #E3EFF7; }
.radar__svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.radar__sea { fill: #DCEBF5; }
.radar__land path { fill: var(--paper); stroke: #C9CDCB; stroke-width: 1; vector-effect: non-scaling-stroke; }
.radar__rain { transition: transform 1.6s ease, opacity 1.6s ease; }
.blobs--g { fill: var(--radar); opacity: .78; }
.blobs--p { fill: #8FD3A5; opacity: .85; }
.blobs--b { fill: var(--radar-blue); opacity: .75; }
.radar__labels { position: absolute; inset: 0; pointer-events: none; }
.radar__label { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; font: 500 clamp(10px, 1.05vw, 15px)/1.1 var(--mono); color: var(--carbon); white-space: nowrap; }
.radar__label > span { background: rgba(250, 250, 247, .78); padding: 1px 3px; }
.radar__label--home { font: 700 clamp(14px, 1.6vw, 24px)/1 var(--sans); letter-spacing: -0.01em; }
.radar__label--home > span { background: none; }
.radar__label--home { transform: translate(-50%, -24%); }
.radar__house { width: clamp(16px, 2vw, 28px); height: clamp(16px, 2vw, 28px); margin-bottom: 2px; }
.radar__label--sea { color: var(--slate); font-weight: 400; }
.radar__cap { margin-top: 8px; font: 400 13px/1.4 var(--mono); letter-spacing: 0.02em; }
.radar--quiet .blobs { opacity: .35; }
@media (max-width: 759.98px) { .radar__label--minor { display: none; } }

/* ------------------------------------------------------------------ 03-radar */
.rainmap { display: grid; grid-template-columns: minmax(0, 29fr) minmax(0, 71fr); border-bottom: 1px solid var(--rule); }
.rainmap__key { padding: clamp(28px, 3vw, 44px) clamp(20px, 2.4vw, 36px) clamp(28px, 3vw, 44px) max(var(--gut), calc((100vw - var(--w-wide)) / 2 - 200px)); border-right: 1px solid var(--rule); }
.rainmap__title { font-size: clamp(32px, 3.4vw, 50px); }
.legend { margin-top: clamp(20px, 2.4vw, 32px); display: grid; gap: clamp(16px, 1.8vw, 26px); }
.legend__item { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 16px; align-items: start; }
.legend__sw { width: 52px; height: 52px; background: var(--radar); }
.legend__item--2 .legend__sw { background: #8FD3A5; }
.legend__item--3 .legend__sw { background: var(--radar-blue); }
.legend__t { display: block; font: 700 20px/1.2 var(--sans); }
.legend__d { display: block; font: 400 15px/1.45 var(--mono); margin-top: 3px; }
.rainmap__map .radar__map { height: 100%; aspect-ratio: auto !important; min-height: 100%; }
.rainmap__map .radar { height: 100%; }
.rainmap__map { position: relative; aspect-ratio: 2.05; }
@media (max-width: 899.98px) {
	.rainmap { grid-template-columns: minmax(0, 1fr); }
	.rainmap__key { border-right: 0; border-bottom: 1px solid var(--rule); padding: 32px var(--gut); }
	.legend { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
}

/* ------------------------------------------------------------------ bulletin (#quote) */
.bulletin-band { padding: clamp(24px, 3vw, 40px) 0; }
.bulletin { display: grid; grid-template-columns: minmax(0, 44fr) minmax(0, 56fr); gap: clamp(24px, 3vw, 48px); background: var(--white); border: 1px solid var(--carbon); border-left: 10px solid var(--radar); padding: clamp(24px, 3vw, 36px) clamp(20px, 3vw, 36px); }
.bulletin__title { font-weight: 800; font-size: clamp(30px, 3.4vw, 50px); margin-top: 22px; }
.bulletin__terms { margin-top: 24px; display: grid; gap: 12px; font: 400 19px/1.45 var(--mono); }
.bulletin__terms div { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 0 10px; }
.bulletin__terms dt { font-weight: 500; }
.bulletin__terms dd { margin: 0; }
.crm-embed { border: 1px solid var(--rule); background: var(--white); min-height: 620px; }
.pair--wide { margin-top: 14px; }
@media (max-width: 899.98px) { .bulletin { grid-template-columns: minmax(0, 1fr); border-left-width: 6px; } }
.bulletin-band .wrap { max-width: calc(var(--w-wide) + 2 * var(--gut)); }
@media (max-width: 759.98px) { .bulletin-band { padding: 0; } .bulletin { border-left: 0; border-right: 0; border-top: 6px solid var(--radar); padding-inline: var(--gut); } }

/* ------------------------------------------------------------------ 05-services: readout cells */
.fit { padding-block: clamp(28px, 3vw, 44px); }
.fit__title { margin-bottom: clamp(14px, 1.6vw, 20px); font-size: clamp(30px, 3vw, 44px); }
.fit__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 28%); gap: clamp(14px, 1.6vw, 24px); }
.cells { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 168px), 1fr)); gap: clamp(10px, 1.2vw, 16px); }
.cell { border: 1px solid var(--rule); background: var(--white); }
.cell__link { display: flex; flex-direction: column; height: 100%; padding: 6px 6px 12px; text-decoration: none; }
.cell__link:hover { outline: 1px solid var(--carbon); }
.cell__media img, .cell__media .ph { width: 100%; aspect-ratio: 7 / 4; object-fit: cover; }
.cell__t { display: block; margin: 12px 8px 0; padding-bottom: 10px; border-bottom: 2px solid var(--radar); font: 700 17px/1.2 var(--sans); letter-spacing: -0.01em; min-height: 3.4em; }
.cell__ro { display: grid; gap: 6px; margin: 10px 8px 0; font: 400 13.5px/1.35 var(--mono); }
.cell__row { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px; }
.cell__k { font-weight: 500; }
.cell__d { margin: 10px 8px 0; font-size: 15px; line-height: 1.5; color: var(--slate); }
.fit__tall { border: 1px solid var(--rule); background: var(--mist); position: relative; }
.fit__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 1023.98px) { .fit__grid { grid-template-columns: minmax(0, 1fr); } .fit__tall { aspect-ratio: 16 / 9; } }
@media (max-width: 479.98px) { .cells { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); } .cell__t { font-size: 15px; } }

/* ------------------------------------------------------------------ 06-process */
.how { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.how__in { display: grid; grid-template-columns: minmax(0, 38fr) minmax(0, 62fr); gap: 24px; align-items: center; padding-block: clamp(20px, 2.4vw, 32px); }
.how__title { font-size: clamp(30px, 3vw, 44px); }
.how__list li { display: flex; align-items: center; gap: 18px; padding: 12px 0; border-bottom: 1px solid var(--rule); font: 400 17px/1.4 var(--mono); }
.how__list li:last-child { border-bottom: 0; }
.how__list strong { font: 700 18px var(--sans); }
.how__box { flex: none; display: inline-flex; width: 32px; height: 32px; border: 1.5px solid var(--carbon); align-items: center; justify-content: center; }
.how__tick { width: 26px; height: 26px; color: var(--radar); stroke-width: 3; }
@media (max-width: 759.98px) { .how__in { grid-template-columns: minmax(0, 1fr); } }

/* ------------------------------------------------------------------ 07-areas */
.areas { border-top: 1px solid var(--rule); }
.areas__in { display: grid; grid-template-columns: minmax(0, 39fr) minmax(0, 61fr); max-width: 100%; }
.areas__head { padding: clamp(32px, 4vw, 64px) clamp(20px, 3vw, 40px) clamp(32px, 4vw, 64px) max(var(--gut), calc((100vw - var(--w-wide)) / 2)); align-self: center; }
.areas__title { font-size: clamp(34px, 3.9vw, 56px); }
.areas__all { margin-top: clamp(20px, 2.4vw, 36px); }
.areas__all a { font: 600 clamp(20px, 1.9vw, 26px)/1.2 var(--sans); color: var(--radar-deep); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.areas__table { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); border-left: 1px solid var(--rule); }
.areas__col { border-right: 1px solid var(--rule); }
.areas__col:last-child { border-right: 0; }
.areas__dir { display: flex; align-items: center; gap: 12px; padding: 20px 24px; border-bottom: 1px solid var(--rule); font: 500 17px/1 var(--mono); letter-spacing: 0.1em; }
.areas__dir .wx { width: 36px; height: 36px; }
.areas__col li { border-bottom: 1px solid var(--rule); }
.areas__col a { display: block; padding: 14px 24px; font: 600 clamp(17px, 1.5vw, 21px)/1.2 var(--sans); text-decoration: none; letter-spacing: -0.01em; }
.areas__col a:hover { text-decoration: underline; text-decoration-color: var(--radar); }
@media (max-width: 899.98px) { .areas__in { grid-template-columns: minmax(0, 1fr); } .areas__head { padding: 32px var(--gut) 20px; } .areas__table { border-left: 0; border-top: 1px solid var(--rule); } }
@media (max-width: 599.98px) { .areas__dir { padding: 14px 12px; font-size: 14px; gap: 6px; } .areas__dir .wx { width: 26px; height: 26px; } .areas__col a { padding: 12px; font-size: 16px; } }

/* ------------------------------------------------------------------ long read: intro + forecast index */
.lr { border-top: 1px solid var(--rule); }
.lr-intro { border-bottom: 1px solid var(--rule); padding-block: clamp(32px, 4vw, 56px); }
.lr-intro__in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.lr-intro__title { font-weight: 800; font-size: clamp(34px, 3.8vw, 56px); line-height: 1.05; margin-top: 14px; }
.lr-intro__text { margin-top: 16px; font: 400 16px/1.6 var(--mono); max-width: 52ch; }
.findex { border: 1px solid var(--carbon); background: var(--white); }
.findex__h { font: 500 13px/1 var(--mono); letter-spacing: 0.12em; text-transform: uppercase; padding: 14px 16px; border-bottom: 1px solid var(--carbon); }
.findex li + li { border-top: 1px solid var(--rule); }
.findex a { display: grid; grid-template-columns: 2.4em minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 10px 16px; font: 400 15px/1.35 var(--mono); text-decoration: none; }
.findex a:hover .findex__t { text-decoration: underline; }
.findex__n { font-weight: 500; }
.findex__tag { font-weight: 500; letter-spacing: 0.08em; color: var(--radar-deep); }
@media (max-width: 899.98px) { .lr-intro__in { grid-template-columns: minmax(0, 1fr); } }

/* ------------------------------------------------------------------ long read: chapters */
.ch { padding-block: clamp(32px, 4vw, 56px) clamp(16px, 2vw, 24px); }
.ch + .ch { border-top: 1px solid var(--rule); }
.ch__head { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0 clamp(14px, 2vw, 28px); align-items: baseline; margin-top: clamp(20px, 2.6vw, 32px); }
.ch__n { font: 500 clamp(32px, 3.2vw, 44px)/1 var(--mono); color: var(--radar); }
.ch__title { font-weight: 800; font-size: clamp(28px, 3.2vw, 46px); line-height: 1.06; }
.ch__dek { margin-top: 10px; font: 400 16px/1.55 var(--mono); max-width: 62ch; }
.ch .prose { margin-top: clamp(18px, 2vw, 26px); }
.ch__mods { margin-top: clamp(20px, 2.4vw, 32px); display: grid; gap: clamp(16px, 2vw, 24px); }
.ch__band { margin-top: clamp(24px, 3vw, 40px); background: var(--mist); border-block: 1px solid var(--rule); padding-block: clamp(24px, 3vw, 40px); }
.ch__band .wrap { display: grid; gap: clamp(16px, 2vw, 24px); }
.lr-radar { margin-top: clamp(24px, 3vw, 40px); }
.radar--panel .radar__map { border: 1px solid var(--carbon); }
@media (max-width: 759.98px) { .radar--panel .radar__map { aspect-ratio: 2 !important; } .ch__head { grid-template-columns: minmax(0, 1fr); } .ch__n { margin-bottom: 6px; } }

/* ------------------------------------------------------------------ prose */
.prose > * + * { margin-top: 1em; }
.prose p, .prose li { max-width: var(--w-prose); }
.prose h3 { font-weight: 700; font-size: clamp(22px, 2vw, 28px); margin-top: 1.6em; }
.prose h2 { font-weight: 700; font-size: clamp(26px, 2.4vw, 34px); margin-top: 1.6em; }
.prose ul { list-style: none; }
.prose ul li { position: relative; padding-left: 22px; }
.prose ul li::before { content: ""; position: absolute; left: 0; top: .72em; width: 10px; height: 2px; background: var(--radar); }
.prose ol { list-style: decimal; padding-left: 1.4em; }
.prose a { color: var(--radar-deep); text-underline-offset: 3px; }
.prose a:hover { color: var(--carbon); }
.prose--centre { text-align: center; margin-inline: auto; }
.prose--centre p { margin-inline: auto; }

/* ------------------------------------------------------------------ modules */
.mod { width: 100%; }
.mod--table .table-fit { border: 1px solid var(--carbon); background: var(--white); }
.table-fit { width: 100%; }
.table-fit table { width: 100%; border-collapse: collapse; table-layout: fixed; font: 400 14.5px/1.45 var(--mono); }
.table-fit caption { caption-side: top; text-align: left; padding: 10px 12px; font: 500 13px var(--mono); letter-spacing: 0.08em; text-transform: uppercase; border-bottom: 1px solid var(--carbon); }
.table-fit th, .table-fit td { padding: 10px 12px; border: 1px solid var(--rule); text-align: left; vertical-align: top; overflow-wrap: anywhere; hyphens: auto; }
.table-fit thead th { font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase; font-size: 13px; border-bottom: 1px solid var(--carbon); background: var(--white); }
.table-fit tbody th { font-weight: 500; }
.table-fit tr > :first-child { border-left: 0; }
.table-fit tr > :last-child { border-right: 0; }
.table-fit tbody tr:last-child > * { border-bottom: 0; }
.prose .table-fit { border: 1px solid var(--carbon); background: var(--white); }
@media (max-width: 599.98px) {
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6), .table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) :is(tbody, tr, th, td) { display: block; width: 100%; }
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) tr { border-bottom: 1px solid var(--carbon); padding: 4px 0; }
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) tbody tr:last-child { border-bottom: 0; }
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) :is(th, td) { border: 0; display: grid; grid-template-columns: minmax(0, 40%) minmax(0, 60%); gap: 10px; padding: 6px 12px; }
	.table-fit table:is(.cols-3, .cols-4, .cols-5, .cols-6) :is(th, td)::before { content: attr(data-label); font-weight: 500; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--slate); }
}
.mod--figures { border: 1px solid var(--carbon); background: var(--white); }
.mod--figures .mod__label { padding: 12px 16px 0; }
.figs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); }
.fig { display: flex; flex-direction: column; gap: 6px; padding: 16px; border-left: 1px solid var(--rule); margin-left: -1px; }
.fig__v { font: 500 clamp(32px, 3.4vw, 48px)/1 var(--mono); color: var(--radar); }
.fig__l { font: 400 14px/1.4 var(--mono); }
.mod--compare { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); border: 1px solid var(--carbon); background: var(--white); }
.cmp__side { padding: 16px 18px; }
.cmp__side + .cmp__side { border-left: 1px solid var(--carbon); }
.cmp__t { font: 700 18px var(--sans); margin-bottom: 8px; }
.cmp__side li { font: 400 15px/1.5 var(--mono); padding: 3px 0; }
@media (max-width: 599.98px) { .cmp__side + .cmp__side { border-left: 0; border-top: 1px solid var(--carbon); } }
.mod--qa { border: 1px solid var(--carbon); background: var(--white); padding: 16px 18px; }
.qa__q { font: 700 18px/1.35 var(--sans); margin-top: 8px; }
.qa__a { font: 400 15.5px/1.55 var(--mono); margin-top: 6px; }
.mod--wetday { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 14px; align-items: start; border: 1px solid var(--rule); border-left: 4px solid var(--carbon); background: var(--white); padding: 14px 18px; }
.mod--wetday .wx { width: 36px; height: 36px; }
.mod--wetday p:not(.mod__label) { font: 400 16px/1.55 var(--mono); margin-top: 4px; }
.mod--callout { border-top: 3px solid var(--carbon); border-bottom: 1px solid var(--rule); padding: 14px 0; }
.mod--callout p:not(.mod__label) { margin-top: 6px; }
.mod--steps ol { counter-reset: s; margin-top: 8px; border: 1px solid var(--carbon); background: var(--white); }
.mod--steps li { counter-increment: s; display: grid; grid-template-columns: 3em minmax(0, 1fr); padding: 12px 16px; border-top: 1px solid var(--rule); font: 400 16px/1.5 var(--mono); }
.mod--steps li:first-child { border-top: 0; }
.mod--steps li::before { content: counter(s, decimal-leading-zero); color: var(--radar-deep); font-weight: 500; }
.mod--steps li strong { font-family: var(--sans); }
.mod--pull { font: italic 400 clamp(24px, 2.6vw, 34px)/1.3 var(--sans); border-left: 3px solid var(--radar); padding-left: 20px; max-width: 34ch; }
.mod--glossary dl { border: 1px solid var(--carbon); background: var(--white); margin-top: 8px; }
.mod--glossary div { display: grid; grid-template-columns: minmax(0, 30%) minmax(0, 70%); gap: 12px; padding: 10px 14px; border-top: 1px solid var(--rule); }
.mod--glossary div:first-child { border-top: 0; }
.mod--glossary dt { font: 500 14px var(--mono); }
.mod--glossary dd { margin: 0; font-size: 16px; }
.mod--readout { margin: 0; }
/* .on-dark components own their ground. */
.on-dark { background: var(--carbon); color: var(--white); }
.on-dark a { color: var(--radar-pale); }
.mod--cost { display: grid; grid-template-columns: minmax(0, 34fr) minmax(0, 66fr); gap: clamp(16px, 3vw, 40px); padding: clamp(20px, 3vw, 36px); }
.mod--cost .mod__label { color: var(--radar-pale); }
.cost__title { font: 800 clamp(26px, 2.8vw, 38px)/1.08 var(--sans); letter-spacing: -0.02em; margin-top: 10px; }
.cost__cta { margin-top: 20px; }
.cost__cta .risk-line { font: 400 13px/1.5 var(--mono); color: var(--radar-pale); margin-top: 10px; }
.cost__items { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); border: 1px solid #3A403E; }
.cost__items li { padding: 14px 16px; border: 1px solid #3A403E; margin: -1px 0 0 -1px; }
.cost__label { display: block; font: 500 13px/1.3 var(--mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--radar-pale); }
.cost__text { display: block; margin-top: 6px; font-size: 16px; line-height: 1.5; }
@media (max-width: 759.98px) { .mod--cost { grid-template-columns: minmax(0, 1fr); } }

/* ------------------------------------------------------------------ FAQs */
.faqs { padding-block: clamp(32px, 4vw, 56px); }
.faqs__list { border: 1px solid var(--carbon); background: var(--white); }
.faq + .faq { border-top: 1px solid var(--rule); }
.faq summary { position: relative; list-style: none; cursor: pointer; padding: 14px 56px 14px 20px; font: 400 16px/1.45 var(--mono); min-height: 48px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 20px; top: 50%; transform: translateY(-52%); font: 300 28px/1 var(--sans); }
.faq[open] summary::after { content: "\2212"; }
.faq__a { padding: 0 20px 18px; }

/* ------------------------------------------------------------------ rows (spokes, related, topics) */
.spokes, .related { padding-block: clamp(28px, 3.4vw, 48px); }
.rows { border: 1px solid var(--carbon); background: var(--white); }
.rows li + li { border-top: 1px solid var(--rule); }
.rows__a { display: grid; grid-template-columns: 8.5em minmax(0, 1fr) auto; gap: 16px; align-items: baseline; padding: 11px 20px; font: 400 15px/1.45 var(--mono); text-decoration: none; }
.rows__a:hover .rows__t { text-decoration: underline; text-decoration-color: var(--radar); }
.rows__k { font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; font-size: 13px; }
.rows__m { color: var(--slate); white-space: nowrap; }
@media (max-width: 599.98px) { .rows__a { grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; padding: 10px 14px; } .rows__k { grid-column: 1 / -1; } }

/* ------------------------------------------------------------------ hub + town hero */
.phero__top { padding-bottom: 18px; }
.readout--hero .readout__cell { padding: 14px; }
.phero__split { display: grid; grid-template-columns: minmax(0, 52fr) minmax(0, 48fr); border-bottom: 1px solid var(--rule); }
.phero--right .phero__split { grid-template-columns: minmax(0, 47fr) minmax(0, 53fr); }
.phero--right .phero__media { order: 2; }
.phero__media { position: relative; background: var(--mist); min-height: 100%; }
.phero__media img, .phero__media .ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.phero__copy { padding: clamp(28px, 4vw, 56px) var(--gut) clamp(28px, 4vw, 56px) clamp(24px, 4vw, 64px); align-self: center; }
.phero--right .phero__copy { padding: clamp(28px, 4vw, 56px) clamp(24px, 3vw, 40px) clamp(28px, 4vw, 56px) max(var(--gut), calc((100vw - var(--w-wide)) / 2)); }
.phero__h1 { font-weight: 800; font-size: clamp(38px, 5vw, 72px); line-height: 1.02; letter-spacing: -0.03em; }
.phero__tag { font: 800 clamp(30px, 3.6vw, 52px)/1.06 var(--sans); letter-spacing: -0.025em; color: var(--radar); margin-top: 16px; }
.phero__lede { font: 400 17px/1.55 var(--mono); margin-top: 18px; max-width: 46ch; }
@media (max-width: 899.98px) {
	.phero__split, .phero--right .phero__split { grid-template-columns: minmax(0, 1fr); }
	.phero__media, .phero--right .phero__media { order: 0; aspect-ratio: 4 / 3; min-height: 0; }
	.phero__copy, .phero--right .phero__copy { padding: 28px var(--gut) 36px; }
}

/* ------------------------------------------------------------------ hub 03-wet */
.wet { border-bottom: 1px solid var(--carbon); }
.wet__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); max-width: calc(var(--w-wide) + 2 * var(--gut)); margin-inline: auto; }
.wet__cell { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 18px; align-items: start; padding: clamp(18px, 2.4vw, 32px) var(--gut); border-right: 1px solid var(--rule); }
.wet__cell:last-child { border-right: 0; }
.wet__icon { width: 72px; height: 72px; }
.wet__t { font: 700 clamp(22px, 2vw, 28px)/1.15 var(--sans); }
.wet__d { font: 400 15px/1.5 var(--mono); margin-top: 8px; }
@media (max-width: 899.98px) { .wet__cell { border-right: 0; border-bottom: 1px solid var(--rule); } .wet__icon { width: 52px; height: 52px; } .wet__cell { grid-template-columns: 52px minmax(0, 1fr); } }
.phero + .wet + .lr, .phero + .lr { border-top: 0; }

/* ------------------------------------------------------------------ town */
.train { display: grid; grid-template-columns: minmax(0, 47fr) minmax(0, 53fr); border-bottom: 1px solid var(--rule); }
.train__map { border-right: 1px solid var(--rule); }
.train__copy { padding: clamp(24px, 3vw, 44px) max(var(--gut), calc((100vw - var(--w-wide)) / 2)) clamp(24px, 3vw, 44px) clamp(20px, 3vw, 40px); align-self: center; }
.train__title { font: 700 clamp(24px, 2.4vw, 34px)/1.15 var(--sans); }
.train .prose { margin-top: 18px; }
.train .prose p { font: 400 16.5px/1.65 var(--mono); }
@media (max-width: 899.98px) { .train { grid-template-columns: minmax(0, 1fr); } .train__map { border-right: 0; } .train__copy { padding: 28px var(--gut); } }
.homes { padding-top: clamp(24px, 3vw, 40px); }
.homes .table-fit td, .homes .table-fit th { text-align: center; }
.lr--light { border-top: 0; padding-top: clamp(24px, 3vw, 40px); }
.lr-box { }
.lr-box > .lch { border: 1px solid var(--carbon); background: var(--white); padding: clamp(18px, 3vw, 32px) clamp(16px, 5vw, 64px); }
.lr-box > .lch + .lch { border-top: 0; }
.lch .readout { max-width: 840px; margin-inline: auto; }
.lch__title { text-align: center; font: 800 clamp(24px, 2.6vw, 34px)/1.12 var(--sans); margin-top: 18px; }
.lch .prose { margin-top: 12px; }
.lch .prose p { font: 400 15.5px/1.7 var(--mono); }
.nearby-wrap { margin-bottom: clamp(24px, 3vw, 40px); }
.nearby { display: grid; grid-template-columns: max-content minmax(0, 1fr); border: 1px solid var(--carbon); background: var(--white); }
.nearby__h { display: flex; align-items: center; padding: 14px 20px; font: 500 14px var(--mono); letter-spacing: 0.1em; text-transform: uppercase; border-right: 1px solid var(--carbon); }
.nearby__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); }
.nearby__list li + li { border-left: 1px solid var(--rule); }
.nearby__list a { display: flex; flex-direction: column; align-items: center; padding: 12px 10px; text-decoration: none; font: 400 15px/1.4 var(--mono); text-align: center; }
.nearby__list a:hover .nearby__t { text-decoration: underline; }
.nearby__m { color: var(--slate); font-size: 13px; }
@media (max-width: 599.98px) { .nearby { grid-template-columns: minmax(0, 1fr); } .nearby__h { border-right: 0; border-bottom: 1px solid var(--carbon); } .nearby__list li + li { border-left: 0; border-top: 1px solid var(--rule); } }

/* ------------------------------------------------------------------ article head + flow */
.ahead { border-bottom: 1px solid var(--rule); padding-bottom: clamp(24px, 3vw, 40px); }
.ahead__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 320px); gap: clamp(20px, 4vw, 64px); align-items: end; margin-top: clamp(12px, 2vw, 24px); }
.ahead__grid:has(> :only-child) { grid-template-columns: minmax(0, 1fr); }
.ahead__h1 { font-weight: 800; font-size: clamp(36px, 4.6vw, 64px); line-height: 1.03; letter-spacing: -0.03em; margin-top: 12px; max-width: 18em; }
.ahead__dek { margin-top: 14px; font: 400 17px/1.55 var(--mono); max-width: 60ch; }
.ahead--short .ahead__h1 { margin-top: 18px; }
@media (max-width: 899.98px) { .ahead__grid { grid-template-columns: minmax(0, 1fr); } }
.flow, .designed { padding-block: clamp(24px, 3vw, 40px) clamp(16px, 2vw, 24px); }
.flow__hero { margin-bottom: clamp(24px, 3vw, 40px); }
.flow__hero img, .flow__hero .ph { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; border: 1px solid var(--rule); }
.flow__intro p:first-child { font-size: 21px; line-height: 1.55; }
.asec { margin-top: clamp(32px, 4vw, 52px); }
.asec .readout { margin-bottom: 18px; }
.asec__title { font: 800 clamp(26px, 2.6vw, 36px)/1.1 var(--sans); padding-top: 14px; border-top: 1px solid var(--carbon); }
.asec__n { display: block; font: 500 15px/1 var(--mono); color: var(--radar-deep); margin-bottom: 10px; letter-spacing: 0.06em; }
.asec .prose { margin-top: 14px; }
.asec > .mod { margin-top: 22px; }
.direct { padding-block: clamp(24px, 3vw, 40px) 8px; }
.answer { border: 1px solid var(--carbon); border-top: 6px solid var(--carbon); background: var(--white); padding: 18px 22px 20px; }
.answer__label { font: 500 13px var(--mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--radar-deep); }
.answer__text { margin-top: 8px; font-size: 20px; line-height: 1.55; }
.legal-contact { margin-top: clamp(32px, 4vw, 48px); border: 1px solid var(--carbon); background: var(--white); padding: 16px 20px; }
.legal-contact p:last-child { margin-top: 6px; font-size: 16px; }

/* ------------------------------------------------------------------ contact */
.contact { display: grid; grid-template-columns: minmax(0, 62fr) minmax(0, 38fr); gap: clamp(20px, 3vw, 40px); padding-block: clamp(24px, 3vw, 40px); align-items: start; }
.bulletin--contact { display: block; }
.bulletin--contact .crm-embed { margin-top: 18px; }
.contact__card { border: 1px solid var(--carbon); background: var(--white); padding: 20px 22px; }
.contact__h { font: 800 28px/1.1 var(--sans); }
.contact__list { margin-top: 14px; }
.contact__list div { padding: 10px 0; border-top: 1px solid var(--rule); display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: 10px; }
.contact__list dt { font: 500 13px/1.6 var(--mono); letter-spacing: 0.08em; text-transform: uppercase; }
.contact__list dd { margin: 0; font-size: 16px; }
.contact__email { overflow-wrap: anywhere; }
.contact__note { margin-top: 14px; font-size: 16px; }
.coverage { padding-bottom: clamp(32px, 4vw, 56px); }
.map { height: clamp(320px, 45vw, 520px); border: 1px solid var(--carbon); background: var(--mist); }
.coverage__note { margin-top: 10px; font: 400 14px/1.55 var(--mono); max-width: 80ch; }
@media (max-width: 899.98px) { .contact { grid-template-columns: minmax(0, 1fr); } }

/* ------------------------------------------------------------------ indexes */
.index { padding-block: clamp(24px, 3vw, 40px); }
.cells--index { grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
.cells--index .cell__t { min-height: 0; }
.feat__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 16px; }
.feat__item a { display: flex; flex-direction: column; height: 100%; border: 1px solid var(--rule); background: var(--white); padding: 6px 6px 14px; text-decoration: none; }
.feat__item a:hover { outline: 1px solid var(--carbon); }
.feat__media img, .feat__media .ph { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.feat__k { margin: 12px 8px 0; font: 500 12px/1.3 var(--mono); letter-spacing: 0.1em; color: var(--radar-deep); }
.feat__t { margin: 6px 8px 0; font: 700 19px/1.25 var(--sans); letter-spacing: -0.01em; }
.feat__m { margin: 8px 8px 0; font: 400 13px var(--mono); color: var(--slate); }
.jump { margin-top: clamp(24px, 3vw, 36px); }
.jump ul { display: flex; flex-wrap: wrap; gap: 8px; }
.jump a { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 6px 12px; border: 1px solid var(--carbon); background: var(--white); font: 500 14px var(--mono); text-decoration: none; }
.jump a:hover { background: var(--mist); }
.topics { margin-top: clamp(20px, 2.4vw, 32px); display: grid; gap: clamp(24px, 3vw, 36px); }
.topic__h { font: 700 clamp(22px, 2vw, 28px)/1.2 var(--sans); margin-bottom: 10px; display: flex; align-items: baseline; gap: 12px; }
.rows--compact .rows__a { padding-block: 8px; }
.areas-map .radar__map { border: 1px solid var(--carbon); }
.dirs { margin-top: clamp(20px, 2.4vw, 32px); display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 20px; }
.dir__h { font: 700 22px/1.2 var(--sans); margin-bottom: 8px; display: flex; align-items: baseline; gap: 10px; }
.dir__list { border: 1px solid var(--carbon); background: var(--white); }
.dir__list li + li { border-top: 1px solid var(--rule); }
.dir__list a { display: flex; justify-content: space-between; gap: 12px; padding: 9px 14px; text-decoration: none; font: 600 16px/1.35 var(--sans); }
.dir__list a:hover .dir__t { text-decoration: underline; }
.dir__m { font: 400 13px/1.6 var(--mono); color: var(--slate); white-space: nowrap; }
.index__copy { margin-top: clamp(28px, 3vw, 40px); }

/* ------------------------------------------------------------------ placeholders (image hook) */
.ph { display: block; width: 100%; background: var(--mist); outline: 1px solid var(--rule); outline-offset: -1px; }

/* ------------------------------------------------------------------ footer: a ruled data table */
.site-footer { border-top: 1px solid var(--carbon); background: var(--paper); margin-top: clamp(24px, 3vw, 40px); }
.foot { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.3fr); padding-block: 22px 6px; }
.foot__col { padding: 4px 22px 16px; border-left: 1px solid var(--carbon); font: 400 16px/1.6 var(--mono); }
.foot__col:first-child { border-left: 0; padding-left: 0; }
.foot__h { font: 500 13px/1 var(--mono); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 10px; }
.foot__col ul li { display: inline; }
.foot__col ul:not(.foot__contact) li:not(:last-child)::after { content: ", "; }
.foot__contact li { display: block; }
.foot__col a { text-decoration: none; }
.foot__col a:hover { text-decoration: underline; text-decoration-color: var(--radar); }
.foot__email { overflow-wrap: anywhere; }
.foot__base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 24px; padding-block: 12px 22px; border-top: 1px solid var(--rule); font: 400 13px/1.5 var(--mono); }
.foot__base a { text-underline-offset: 3px; }
@media (max-width: 1023.98px) { .foot { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .foot__col:nth-child(3) { border-left: 0; padding-left: 0; } }
@media (max-width: 599.98px) { .foot { grid-template-columns: minmax(0, 1fr); } .foot__col { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule); padding-top: 12px; } .foot__col:first-child { border-top: 0; } }

/* ------------------------------------------------------------------ mobile bar + WhatsApp FAB + panel */
.mbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: flex; background: var(--white); border-top: 1px solid var(--carbon); }
.mbar__btn { flex: 1 1 0; min-height: 52px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-left: 1px solid var(--carbon); background: var(--white); color: var(--carbon); font: 500 15px var(--mono); text-decoration: none; border-radius: 0; cursor: pointer; }
.mbar__btn:first-child { border-left: 0; }
.mbar__btn--quote { background: var(--radar-deep); color: var(--white); font: 600 16px var(--sans); }
@media (max-width: 759.98px) { body { padding-bottom: 53px; } }
@media (min-width: 760px) { .mbar { display: none; } }
.wa-fab { position: fixed; right: 24px; bottom: 24px; z-index: 90; display: none; align-items: center; min-height: 52px; padding: 0 18px; background: var(--carbon); color: var(--white); border: 0; border-radius: 0; outline: 1px solid var(--radar-pale); outline-offset: -5px; font: 500 15px var(--mono); cursor: pointer; transition: opacity .2s, transform .2s; }
.wa-fab:focus-visible { outline: 2px solid var(--radar-pale); outline-offset: 2px; }
.wa-fab.is-away, .wa-fab.is-early { opacity: 0; transform: translateY(12px); pointer-events: none; }
@media (min-width: 760px) { .wa-fab { display: inline-flex; } }
.wa-open .wa-fab { display: none; }
.wa { position: fixed; right: 16px; bottom: 16px; z-index: 120; width: min(400px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow-y: auto; background: var(--white); border: 1px solid var(--carbon); border-top: 6px solid var(--radar); }
@media (max-width: 759.98px) { .wa { left: 8px; right: 8px; width: auto; bottom: 61px; max-height: calc(100vh - 140px); } }
.wa__head { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--rule); }
.wa__title { font: 800 22px var(--sans); }
.wa__close { width: 44px; height: 44px; border: 1px solid var(--carbon); background: var(--white); font: 400 24px/1 var(--sans); cursor: pointer; border-radius: 0; }
.wa__form { padding: 14px 16px 18px; display: grid; gap: 10px; }
.wa__intro { font: 400 14px/1.5 var(--mono); }
.wa__row { display: grid; gap: 4px; }
.wa__row label { font: 500 13px var(--mono); letter-spacing: 0.04em; }
.wa__row input, .wa__row textarea, .wa__row select { width: 100%; min-height: 44px; padding: 8px 10px; border: 1px solid var(--carbon); background: var(--white); border-radius: 0; font: 400 16px var(--sans); }
.wa__pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.wa__send { width: 100%; }

/* ------------------------------------------------------------------ motion (CSS only, once) */
.js-motion .forecast:not(.in-view) .forecast__icon { opacity: 0; transform: translateY(6px); }
.js-motion .radar:not(.in-view) .radar__rain { transform: translateX(-14px); opacity: .55; }
.js-motion .readout:not(.in-view) .readout__cell::after { transform: scaleX(0); }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; }
	.btn:hover { transform: none; }
}
.train__map { display: flex; align-items: center; background: var(--paper); }
.train__map .radar__map { border-block: 1px solid var(--rule); }
.train__map .radar { width: 100%; }

/* hub long read (mockup/page-service): full-width forecast index, chapters in ruled boxes */
.findex--wide { margin-top: clamp(16px, 2vw, 24px); border: 0; background: none; }
.findex--wide ol { border: 1px solid var(--carbon); background: var(--white); }
.findex--wide a { grid-template-columns: 3.5em minmax(0, 1fr) auto; padding: 9px 24px; font-size: 16px; }
.findex--wide li + li { border-top: 1px solid var(--carbon); }
.lr--boxed { border-top: 0; }
.lr--boxed .ch { max-width: var(--w-wide); margin: clamp(16px, 2vw, 24px) auto 0; border: 1px solid var(--carbon); background: var(--white); padding: 0 0 clamp(18px, 2vw, 28px); }
.lr--boxed .ch + .ch { border-top: 1px solid var(--carbon); }
.lr--boxed .ch > .wrap:first-child { padding: 0; max-width: none; }
.lr--boxed .readout--ch { border-width: 0 0 1px; }
.lr--boxed .readout--ch .readout__cell:first-child { border-left: 0; }
@media (max-width: 1383.98px) { .lr--boxed .ch { margin-inline: var(--gut); } }
.crumbs ol { font-size: 15px; }
.readout--hero .readout__cell { font-size: 16.5px; }
/* long read: prose and modules hang from the chapter title's left edge (mockup/longread), not centred */
@media (min-width: 760px) {
	.ch .wrap--prose, .ch .ch__mods.wrap--mid, .ch .ch__band .wrap--mid { max-width: calc(var(--w-wide) + 2 * var(--gut)); padding-left: calc(var(--gut) + clamp(46px, 5.4vw, 86px)); }
	.ch .ch__mods.wrap--mid > *, .ch .ch__band .wrap--mid > * { max-width: calc(var(--w-mid) - 80px); }
}

/* ------------------------------------------------------------------ fidelity fix 1 */
.hzn-fig { margin: 1.25em 0; }
.hzn-fig img, .hzn-fig .ph { width: 100%; max-height: 360px; aspect-ratio: 16 / 9; object-fit: cover; border: 1px solid var(--rule); }
.hzn-fig figcaption { font: 400 13px/1.4 var(--mono); margin-top: 6px; color: var(--slate); }
.brand__word { font-size: 24px; }
@media (max-width: 559.98px) { .brand__word { font-size: 19px; } }

/* home 03-radar: map fills the full row height; the rain layer is soft */
@media (min-width: 900px) {
	.rainmap__map { aspect-ratio: auto; min-height: 420px; }
	.rainmap__map .radar { position: absolute; inset: 0; height: auto; }
	.rainmap__map .radar__map { height: 100%; }
}

/* bulletin bands */
@media (min-width: 900px) {
	.bulletin__copy { align-self: center; }
	.bulletin__title { font-size: 44px; }
}
.bulletin__terms { font: 400 18px/1.45 var(--mono); }
.bulletin__terms dt { font: 700 18px/1.45 var(--sans); }

/* home 06-process */
@media (min-width: 900px) {
	.how__in { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); align-items: start; }
	.how__title { margin-top: 10px; }
}
.how__list strong { font: 700 18px/1.4 var(--sans); }
.how__tick { stroke-width: 2; color: var(--radar); }

/* home areas table */
@media (min-width: 900px) {
	.areas__col a { font-size: 17px; font-weight: 600; padding-block: 8px; }
}
.forecast__icon { width: 72px; height: 72px; stroke-width: 2.25; }
@media (max-width: 759.98px) { .forecast__icon { width: 34px; height: 34px; } }

/* long read: carbon, not green, for numbers, bar underlines and status words */
.ch__n { color: var(--carbon); }
.ch .readout__cell::after, .lr--boxed .readout--ch .readout__cell::after { background: var(--carbon); }
.findex__tag { color: var(--carbon); }
.findex a:hover .findex__tag { color: var(--radar-deep); }
.ch .fig__v { color: var(--carbon); }
.ch .prose > * + * { margin-top: 1em; }
.ch .prose h3 { margin-top: 1.2em; }
.ch .prose { margin-top: 1em; }
.ch .prose + .ch__mods, .ch .ch__mods--after { margin-top: 1.25em; }
@media (min-width: 760px) {
	.ch .prose p, .ch .prose li { max-width: 110ch; }
	.ch .ch__mods.wrap--mid > *, .ch .ch__band .wrap--mid > * { max-width: none; }
	.ch .mod--figures { max-width: 760px !important; }
}
.ch .mod--figures .mod__label { padding: 8px 14px 0; }
.ch .fig { flex-direction: row; align-items: baseline; gap: 10px; padding: 8px 14px; }
.ch .fig__v { font-size: 24px; }
/* Readout values wrap rather than force a sideways scroll (760px overflowed by 4px with nowrap). */
.ch .readout__cell { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
@media (min-width: 1200px) { .ch .readout__cell { white-space: nowrap; overflow-wrap: normal; } }

/* town */
@media (min-width: 900px) {
	.train__map { align-self: stretch; position: relative; min-height: 380px; }
	.train__map .radar { position: absolute; inset: 0; width: 100%; height: 100%; }
	.train__map .radar__map { height: 100%; aspect-ratio: auto !important; border-block: 0; }
}
.train .prose p { font: 400 15px/1.7 var(--mono); max-width: 62ch; }
.homes .table-fit td, .homes .table-fit th { text-align: left; }
@media (min-width: 760px) {
	.homes .table-fit thead th { font-size: 15px; letter-spacing: .08em; }
	.homes .table-fit td { font-size: 15px; padding-left: 2rem; }
	.homes .table-fit thead th { padding-left: 2rem; }
}
.lch .readout { max-width: none; width: 100%; }
.lch .prose p { font-size: 16px; }
.nearby__list a { font-size: 15px; padding-block: 1rem; }

/* service page */
.findex--wide a { font-size: 17px; padding-block: 10px; }
.wet__t { font-size: clamp(24px, 2.2vw, 30px); }
.wet__icon { width: 52px; height: 52px; }
.wet__cell { grid-template-columns: 52px minmax(0, 1fr); }
.lr--boxed .readout--ch { border-bottom-color: var(--carbon); }
.spokes .rows li + li { border-top-color: var(--carbon); }
.spokes .rows__a { font-size: 15px; }

/* ------------------------------------------------------------------ long-read in-chapter photos: small centred inset, after the modules */
.ch__figs, .lch__figs { margin-top: 28px; }
.ch__figs .hzn-fig, .lch__figs .hzn-fig { display: block; width: 100%; max-width: min(420px, 100%); margin: 0 auto; float: none; }
.ch__figs .hzn-fig img, .ch__figs .hzn-fig .ph, .lch__figs .hzn-fig img, .lch__figs .hzn-fig .ph { display: block; width: 100%; height: auto; max-height: 240px; aspect-ratio: auto; object-fit: cover; }
.ch__figs .hzn-fig figcaption, .lch__figs .hzn-fig figcaption { text-align: center; }
@media (min-width: 1200px) { .ch .readout__cell { flex-wrap: nowrap; } }

/* ------------------------------------------------------------------ template fix loop 1 */
/* G1: steps are two grid items (counter + one content span) */
.mod__step { min-width: 0; overflow-wrap: break-word; }

/* S1: CTA rows size to content; the primary is never narrower than the secondaries */
.cta-row .pair { flex: 0 1 auto; }
.cta-row .pair .btn { flex: 0 0 auto; min-width: 230px; }
.cta-row > .btn { flex: 0 0 auto; min-width: 230px; }

/* S4 + S5: small screens */
@media (max-width: 599.98px) {
	.crumbs ol { flex-wrap: nowrap; }
	.crumbs li { min-width: 0; flex: 0 0 auto; }
	.crumbs li:not(:nth-last-child(-n+2)) { display: none; }
	.crumbs li:last-child { flex: 0 1 auto; overflow: hidden; }
	.crumbs li:nth-last-child(2):first-child::before { content: none; }
	.crumbs [aria-current] { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	.ahead .cta-row .pair, .hero__copy .pair, .phero__copy .pair { display: none; }
	.ahead .cta-row > .btn { flex: 1 1 100%; }
}

/* Guide: feature flow (centred head strip, drop cap, numerals on a rule, pull panels) */
[data-sonic-section="guide-head"] .readout--stack .readout__cell { flex-direction: column; align-items: center; justify-content: center; gap: 2px 0; text-align: center; }
.flow__intro > p:first-of-type::first-letter { float: left; font: 800 4.2em/0.8 var(--sans); margin: 6px 10px 0 0; color: var(--carbon); }
.flow .asec__title { border-top: 0; padding-top: 0; text-align: center; }
.flow .asec__n { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 16px; color: var(--carbon); }
.flow .asec__n::before, .flow .asec__n::after { content: ""; flex: 1 1 0; height: 1px; background: var(--carbon); }
.flow .mod--pull { max-width: none; margin-block: 28px; padding: 24px clamp(20px, 3vw, 36px); border: 0; border-block: 3px solid var(--carbon); background: var(--mist); text-align: center; }

/* Guides and answers indexes */
@media (min-width: 900px) {
	.feat__list { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr); }
}
.feat__s { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; margin: 6px 8px 0; font: 400 15px/1.5 var(--sans); color: var(--slate); }
.feat__item { min-width: 0; }
.index--guides .rows__k, .index--answers .rows__k { display: none; }
.index--guides .rows__a, .index--answers .rows__a { grid-template-columns: minmax(0, 1fr) auto; gap: 2px 16px; align-items: center; }
.index--guides .rows__t, .index--answers .rows__t { grid-column: 1; font: 600 17px/1.35 var(--sans); }
.rows__s { grid-column: 1; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; font: 400 14px/1.5 var(--mono); color: var(--slate); }
.index--guides .rows__m, .index--answers .rows__m { grid-column: 2; grid-row: 1 / span 2; }

/* Areas index: quiet radar, 30-mile ring, balanced direction columns */
.areas-map .radar__rain { display: none; }
.radar__ring { stroke: var(--radar); stroke-width: 1.5; stroke-dasharray: 7 6; vector-effect: non-scaling-stroke; }
.dirs { display: block; columns: 4 260px; column-gap: 20px; }
.dir { break-inside: avoid; margin-bottom: 20px; }

/* About: readout value stays on one line */
@media (min-width: 900px) {
	.ahead__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 360px); }
	.readout--stack .readout__cell { flex-wrap: nowrap; }
	.readout--stack .readout__cell dt { white-space: nowrap; }
	.readout--stack .readout__cell dd { text-align: right; }
}

/* CRM band: the wrapper holds the iframe's height with a quiet loading ground */
.crm-embed { position: relative; min-height: 620px; background: var(--mist); }
.crm-embed::before { content: "Loading the survey form"; position: absolute; left: 0; right: 0; top: 24px; text-align: center; font: 400 14px/1.4 var(--mono); color: var(--carbon); }
.crm-embed iframe { position: relative; z-index: 1; }

/* S3: keep the bottom-left watermark whole on cards (sources are 21:9 or 16:9) */
.feat__media img, .feat__media .ph { aspect-ratio: 21 / 9; object-position: 0 100%; }
.cell__media img { object-position: 0 100%; }
@media (max-width: 599.98px) {
	.crumbs li:last-child { display: flex; }
	.crumbs li:last-child [aria-current] { min-width: 0; }
	.crumbs li:nth-last-child(2):not(:last-child)::before { content: none; }
}

/* ------------------------------------------------------------------ final design loop */
/* 1 article hero dek: sans, calm */
.ahead__dek, .phero__lede { font: 400 20px/1.5 var(--sans); letter-spacing: 0; max-width: 46ch; }
@media (max-width: 599.98px) { .ahead__dek, .phero__lede { font-size: 18px; } }

/* 2 areas index map: ring inside the frame, mist outside, soft blobs over the sea */
.radar__north { fill: var(--paper); }
.radar__shade { fill: var(--mist); opacity: .9; }
.radar__soft--p { fill: var(--radar-pale); }
.radar__soft--b { fill: var(--radar-blue); }
.radar__softg { opacity: .35; }
.radar__ringlab { position: absolute; transform: translate(-50%, 6px); font: 500 12px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--carbon); background: var(--mist); padding: 3px 6px; white-space: nowrap; }
.areas-map .radar__rain { display: none; }
.areas-map__m { display: none; }
@media (max-width: 599.98px) {
	.areas-map__d { display: none; }
	.areas-map__m { display: block; }
	.areas-map__m .radar__label { font-size: 12px; }
	.areas-map__m .radar__label--minor { display: flex; }
	.areas-map__m .radar__label--home { font-size: 14px; }
	.areas-map__m .radar__house { width: 18px; height: 18px; }
}

/* 3 home process: one line per row at desktop */
@media (min-width: 900px) {
	.how__in { grid-template-columns: minmax(0, 30fr) minmax(0, 70fr); align-items: start; }
	.how__title { margin-top: 0; }
}
.how__tick { stroke: var(--radar); stroke-width: 2px; color: var(--radar); }
.how__list strong { font: 700 18px/1.4 var(--sans); }

/* 4 home areas table */
@media (min-width: 900px) {
	.areas__title { font-size: 52px; line-height: 1.08; }
	.areas__dir { padding: 14px 16px; }
	.areas__col a { padding: 8px 16px; font: 600 18px/1.2 var(--sans); }
}

/* 6 bulletin bands */
@media (min-width: 900px) {
	.bulletin { align-items: center; }
	.bulletin__copy { align-self: center; }
}
.bulletin .kicker { font-size: 15px; }
.bulletin .btn { font-size: 18px; min-height: 52px; }
.bulletin__terms { font: 400 18px/1.45 var(--mono); }
.bulletin__terms dt { font: 700 18px/1.45 var(--sans); }

/* 7 town rain prose */
.train .prose p { font: 400 15px/1.7 var(--mono); max-width: 62ch; }
.train .prose p + p { margin-top: 1em; }
