/*
 * Cornice — main stylesheet.
 * Design tokens use space-separated "R G B" triples. Always consume them
 * with the modern `rgb(var(--x) / alpha)` slash syntax — the old comma-style
 * alpha function (with an "a" suffix) is invalid here, missing the required
 * comma-separated channels, and gets silently dropped by the browser.
 */

:root {
	--cn-paper: 236 230 219;
	--cn-paper-2: 227 219 204;
	--cn-ink: 32 28 24;
	--cn-ink-dim: 32 28 24;
	--cn-accent: 168 118 58;
	--cn-accent-ink: 250 244 232;
	--cn-line: 32 28 24;

	--font-serif: 'Lora', Georgia, serif;
	--font-sans: 'Manrope', system-ui, sans-serif;
	--font-mono: 'IBM Plex Mono', ui-monospace, monospace;

	--radius: 4px;

	--sp-1: 8px;
	--sp-2: 12px;
	--sp-3: 20px;
	--sp-4: 32px;
	--sp-5: 56px;
	--sp-6: 96px;

	--fs-1: .82rem;
	--fs-2: 1rem;
	--fs-3: 1.3rem;
	--fs-4: 1.85rem;
	--fs-5: 2.6rem;
	--fs-6: 3.6rem;

	--rail-w: 64px;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: rgb(var(--cn-paper));
	color: rgb(var(--cn-ink));
	font-family: var(--font-sans);
	font-size: var(--fs-2);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }
input, select, textarea { font: inherit; }
ul { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 600; line-height: 1.15; margin: 0 0 var(--sp-2); }
p { margin: 0 0 var(--sp-2); }
.mono { font-family: var(--font-mono); }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.skip-link { z-index: 1000; }
.skip-link:not(:focus) { display: none; }

/* ---------- Persistent GPU background ---------- */
.cn-scene {
	position: fixed;
	inset: 0;
	z-index: 0;
	width: 100%;
	height: 100%;
	display: block;
	background: linear-gradient(180deg, rgb(var(--cn-paper)) 0%, rgb(var(--cn-paper-2)) 100%);
}

/* ---------- Header ---------- */
.site-header {
	position: relative;
	z-index: 5;
	background: rgb(var(--cn-paper) / .92);
	backdrop-filter: blur(6px);
	border-bottom: 1px solid rgb(var(--cn-line) / .12);
}
.site-header__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--sp-2) var(--sp-4);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-3);
}
.site-title {
	font-family: var(--font-serif);
	font-weight: 600;
	font-size: var(--fs-3);
	letter-spacing: .01em;
}
.main-navigation .nav__list {
	display: flex;
	gap: var(--sp-4);
	align-items: center;
}
.main-navigation a {
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .08em;
	font-weight: 600;
}
.main-navigation a:hover { color: rgb(var(--cn-accent)); }
.menu-toggle {
	display: none;
	background: none;
	border: none;
	padding: var(--sp-1);
	flex-direction: column;
	gap: 5px;
}
.menu-toggle__bar {
	width: 22px;
	height: 2px;
	background: rgb(var(--cn-ink));
	display: block;
}

/* ---------- Blueprint margin rail ---------- */
.content-layout {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: stretch;
	max-width: 1320px;
	margin: 0 auto;
}
.blueprint-rail {
	display: none;
}
.content-column {
	flex: 1 1 auto;
	min-width: 0;
	padding: var(--sp-5) var(--sp-4) var(--sp-6);
}

@media (min-width: 1024px) {
	.blueprint-rail {
		display: block;
		position: sticky;
		top: 0;
		height: 100vh;
		width: var(--rail-w);
		flex: 0 0 var(--rail-w);
		border-right: 1px solid rgb(var(--cn-line) / .16);
	}
	.blueprint-rail__inner {
		position: sticky;
		top: 0;
		height: 100vh;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: space-between;
		padding: var(--sp-4) 0;
	}
	.blueprint-rail__title {
		writing-mode: vertical-rl;
		transform: rotate(180deg);
		font-family: var(--font-sans);
		font-size: var(--fs-1);
		text-transform: uppercase;
		letter-spacing: .14em;
		font-weight: 600;
		color: rgb(var(--cn-ink-dim) / .65);
		white-space: nowrap;
	}
	.blueprint-rail__date {
		writing-mode: vertical-rl;
		transform: rotate(180deg);
		font-family: var(--font-mono);
		font-size: var(--fs-1);
		color: rgb(var(--cn-ink-dim) / .5);
	}
}

/* ---------- Buttons ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	gap: var(--sp-1);
	padding: 13px 26px;
	border-radius: var(--radius);
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .08em;
	font-weight: 700;
	border: 1px solid transparent;
	transition: transform .15s ease, background-color .15s ease, color .15s ease;
}
.btn--accent {
	background: rgb(var(--cn-accent));
	color: rgb(var(--cn-accent-ink));
}
.btn--accent:hover { transform: translateY(-1px); background: rgb(var(--cn-accent) / .88); }
.btn--ghost {
	background: transparent;
	color: rgb(var(--cn-ink));
	border-color: rgb(var(--cn-line) / .35);
}
.btn--ghost:hover { border-color: rgb(var(--cn-accent)); color: rgb(var(--cn-accent)); }

/* ---------- Hero ---------- */
.hero {
	position: relative;
	z-index: 2;
	min-height: 92vh;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: var(--sp-6) var(--sp-4);
	max-width: 1320px;
	margin: 0 auto;
}
.hero__inner { max-width: 720px; position: relative; }
.hero__kicker {
	font-family: var(--font-mono);
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .12em;
	color: rgb(var(--cn-accent));
	margin-bottom: var(--sp-3);
}
.hero__headline {
	font-size: var(--fs-6);
	margin-bottom: var(--sp-3);
}
.hero__subhead {
	font-size: var(--fs-3);
	color: rgb(var(--cn-ink-dim) / .78);
	max-width: 56ch;
	margin-bottom: var(--sp-4);
	/* Soft paper-colored halo, not a hard panel: the hero text is meant to
	   float over the room scene (see the "Scroll — the room behind this
	   text" cue below), but the scene's dark "window" shape can drift
	   under any part of it depending on viewport height, and glyphs lose
	   all contrast wherever that happens. A halo keeps the floating look
	   while guaranteeing legibility everywhere, instead of a background box. */
	text-shadow: 0 0 6px rgb(var(--cn-paper)), 0 0 6px rgb(var(--cn-paper)), 0 0 10px rgb(var(--cn-paper)), 0 0 10px rgb(var(--cn-paper));
}
.hero__actions { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.hero__scroll-cue {
	position: absolute;
	bottom: var(--sp-4);
	left: var(--sp-4);
	display: flex;
	align-items: center;
	gap: var(--sp-2);
	font-family: var(--font-mono);
	font-size: var(--fs-1);
	color: rgb(var(--cn-ink-dim) / .5);
	max-width: 320px;
}
.hero__scroll-cue span {
	width: 1px;
	height: 32px;
	background: rgb(var(--cn-ink) / .3);
	display: inline-block;
	flex: 0 0 auto;
}

/* ---------- Stat band ---------- */
.stat-band {
	position: relative;
	z-index: 2;
	background: rgb(var(--cn-paper-2) / .92);
	border-top: 1px solid rgb(var(--cn-line) / .12);
	border-bottom: 1px solid rgb(var(--cn-line) / .12);
}
.stat-band__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--sp-5) var(--sp-4);
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--sp-3);
	text-align: center;
}
.stat__value {
	display: block;
	font-family: var(--font-mono);
	font-size: var(--fs-5);
	font-weight: 600;
	color: rgb(var(--cn-accent));
}
.stat__label {
	display: block;
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .07em;
	color: rgb(var(--cn-ink-dim) / .65);
	margin-top: var(--sp-1);
}

/* ---------- Generic section shell ---------- */
.tool-section, .projects-section, .testimonials, .contact-cta {
	position: relative;
	z-index: 2;
}
.tool-section__inner, .projects-section__inner, .testimonials__inner, .contact-cta__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--sp-6) var(--sp-4);
}
.tool-section {
	background: rgb(var(--cn-paper) / .94);
}
.tool-section--alt {
	background: rgb(var(--cn-paper-2) / .94);
}
.tool-section__intro { max-width: 720px; margin-bottom: var(--sp-4); }
.tool-section__eyebrow {
	display: inline-block;
	font-family: var(--font-mono);
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .1em;
	color: rgb(var(--cn-accent));
	margin-bottom: var(--sp-1);
}
.tool-section__intro h2 { font-size: var(--fs-5); }
.tool-section__intro p { color: rgb(var(--cn-ink-dim) / .78); font-size: var(--fs-3); }
.tool-section__disclaimer {
	font-size: var(--fs-1);
	color: rgb(var(--cn-ink-dim) / .55);
	border-left: 2px solid rgb(var(--cn-accent) / .5);
	padding-left: var(--sp-2);
}

/* ---------- Spec tables ---------- */
.spec-table-wrap { margin-bottom: var(--sp-4); }
.spec-table {
	width: 100%;
	border-collapse: collapse;
	background: rgb(var(--cn-paper));
	border: 1px solid rgb(var(--cn-line) / .16);
	margin-bottom: var(--sp-4);
}
.spec-table th, .spec-table td {
	text-align: left;
	padding: var(--sp-2) var(--sp-2);
	border-bottom: 1px solid rgb(var(--cn-line) / .12);
	font-size: var(--fs-1);
}
.spec-table thead th {
	text-transform: uppercase;
	letter-spacing: .06em;
	color: rgb(var(--cn-ink-dim) / .6);
	font-weight: 600;
}
.spec-table tbody tr:last-child td { border-bottom: none; }
.material-example__caption {
	font-size: var(--fs-1);
	color: rgb(var(--cn-ink-dim) / .6);
	margin-bottom: var(--sp-2);
}

/* ---------- Tool forms ---------- */
.tool-form {
	display: flex;
	flex-direction: column;
	gap: var(--sp-3);
	background: rgb(var(--cn-paper));
	border: 1px solid rgb(var(--cn-line) / .16);
	border-radius: var(--radius);
	padding: var(--sp-4);
}
.tool-form--grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--sp-3) var(--sp-4);
}
.tool-form__row { display: flex; flex-direction: column; gap: var(--sp-1); }
.tool-form__row label {
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .06em;
	color: rgb(var(--cn-ink-dim) / .65);
	font-weight: 600;
}
.tool-form__row input[type="range"] { accent-color: rgb(var(--cn-accent)); }
.tool-form__row input[type="checkbox"] { width: 18px; height: 18px; accent-color: rgb(var(--cn-accent)); }
.tool-form__row input,
.tool-form__row select {
	border: 1px solid rgb(var(--cn-line) / .3);
	border-radius: var(--radius);
	padding: 10px 12px;
	background: rgb(var(--cn-paper));
	color: rgb(var(--cn-ink));
}
.tool-form__row output {
	font-size: var(--fs-1);
	color: rgb(var(--cn-accent));
	align-self: flex-end;
}

.beam-calc, .material-calc {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--sp-4);
	align-items: start;
}
.beam-result, .material-result {
	background: rgb(var(--cn-ink) / .04);
	border: 1px solid rgb(var(--cn-line) / .16);
	border-radius: var(--radius);
	padding: var(--sp-4);
}
.beam-result__spec {
	font-size: var(--fs-4);
	color: rgb(var(--cn-accent));
	margin-bottom: var(--sp-3);
}
.beam-result__checks, .material-result__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--sp-2);
	margin: 0;
}
.beam-result__checks div, .material-result__grid div {
	display: flex;
	justify-content: space-between;
	border-bottom: 1px dashed rgb(var(--cn-line) / .2);
	padding-bottom: var(--sp-1);
	font-size: var(--fs-1);
}
.beam-result__checks dt, .material-result__grid dt { color: rgb(var(--cn-ink-dim) / .6); margin: 0; }
.beam-result__checks dd, .material-result__grid dd { margin: 0; font-weight: 600; }
.beam-result.is-fail .beam-result__spec { color: #a83232; }

/* ---------- Project grid / cards ---------- */
.project-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--sp-3);
}
.project-card {
	position: relative;
	background: rgb(var(--cn-paper));
	border: 1px solid rgb(var(--cn-line) / .14);
	border-radius: var(--radius);
	overflow: hidden;
	transition: transform .18s ease, box-shadow .18s ease;
}
.project-card:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgb(var(--cn-ink) / .12); }
.project-card__media { aspect-ratio: 3 / 2; overflow: hidden; background: rgb(var(--cn-paper-2)); }
.project-card__media img { width: 100%; height: 100%; object-fit: cover; }
.project-card__media-placeholder {
	width: 100%; height: 100%;
	background: linear-gradient(135deg, rgb(var(--cn-paper-2)), rgb(var(--cn-line) / .1));
}
.project-card__body { padding: var(--sp-3); }
.project-card__type {
	font-family: var(--font-mono);
	font-size: .72rem;
	text-transform: uppercase;
	letter-spacing: .07em;
	color: rgb(var(--cn-accent));
}
.project-card__title { font-size: var(--fs-3); margin: var(--sp-1) 0; }
.project-card__meta { font-size: var(--fs-1); color: rgb(var(--cn-ink-dim) / .6); margin: 0; }
.projects-section__inner { position: relative; }
.projects-section__intro { max-width: 720px; margin-bottom: var(--sp-4); }
.projects-section__intro h2 { font-size: var(--fs-5); }
.projects-section__more { margin-top: var(--sp-4); }

/* ---------- Gantt ---------- */
.gantt {
	position: relative;
	background: rgb(var(--cn-paper));
	border: 1px solid rgb(var(--cn-line) / .16);
	border-radius: var(--radius);
	padding: var(--sp-3);
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.gantt-row {
	display: grid;
	grid-template-columns: 220px 1fr;
	align-items: center;
	gap: var(--sp-2);
}
.gantt-row__label {
	font-size: .74rem;
	color: rgb(var(--cn-ink-dim) / .75);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.gantt-row__track { position: relative; height: 20px; background: rgb(var(--cn-ink) / .05); border-radius: 2px; }
.gantt-row__bar {
	position: absolute;
	top: 0; height: 100%;
	border-radius: 2px;
	background: rgb(var(--cn-ink) / .28);
}
.gantt-row__bar.is-critical { background: rgb(var(--cn-accent)); }
.gantt-row__days {
	position: absolute;
	right: -46px; top: 50%;
	transform: translateY(-50%);
	font-family: var(--font-mono);
	font-size: .68rem;
	color: rgb(var(--cn-ink-dim) / .55);
}
.schedule-table tbody tr.is-critical td:first-child { border-left: 3px solid rgb(var(--cn-accent)); padding-left: calc(var(--sp-2) - 3px); }

/* ---------- Testimonials ---------- */
.testimonial-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--sp-3);
}
.testimonial {
	background: rgb(var(--cn-paper));
	border: 1px solid rgb(var(--cn-line) / .14);
	border-left: 3px solid rgb(var(--cn-accent));
	border-radius: var(--radius);
	padding: var(--sp-4);
	margin: 0;
}
.testimonial p { font-family: var(--font-serif); font-style: italic; font-size: var(--fs-3); margin-bottom: var(--sp-2); }
.testimonial footer { font-size: var(--fs-1); color: rgb(var(--cn-ink-dim) / .6); }
.testimonial cite { font-style: normal; }

/* ---------- Contact CTA ---------- */
.contact-cta {
	background: rgb(var(--cn-ink));
	color: rgb(var(--cn-accent-ink));
}
.contact-cta__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--sp-5);
	align-items: start;
}
.contact-cta h2 { font-size: var(--fs-5); color: rgb(var(--cn-accent-ink)); }
.contact-cta p { color: rgb(var(--cn-accent-ink) / .78); }
.contact-cta__phone a { color: rgb(var(--cn-accent)); font-size: var(--fs-3); }

/* ---------- Contact form ---------- */
.contact-form { display: flex; flex-direction: column; gap: var(--sp-3); }
.contact-form__row { display: flex; flex-direction: column; gap: var(--sp-1); }
.contact-form__row--split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.contact-form label {
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .06em;
	font-weight: 600;
	color: rgb(var(--cn-ink-dim) / .7);
}
.contact-cta .contact-form label { color: rgb(var(--cn-accent-ink) / .7); }
.contact-form input,
.contact-form textarea {
	border: 1px solid rgb(var(--cn-line) / .3);
	border-radius: var(--radius);
	padding: 12px 14px;
	background: rgb(var(--cn-paper));
	color: rgb(var(--cn-ink));
}
.contact-cta .contact-form input,
.contact-cta .contact-form textarea {
	background: rgb(var(--cn-accent-ink) / .06);
	border-color: rgb(var(--cn-accent-ink) / .25);
	color: rgb(var(--cn-accent-ink));
}
.contact-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.contact-form__status { font-size: var(--fs-1); min-height: 1.4em; }
.contact-form__status.is-success { color: #4f8a4f; }
.contact-cta .contact-form__status.is-success { color: #9fd39f; }
.contact-form__status.is-error { color: #c25b5b; }

/* ---------- page / single article ---------- */
.page-article__title, .project-article__title { font-size: var(--fs-5); }
.page-article__thumb, .project-article__hero { margin: var(--sp-4) 0; border-radius: var(--radius); overflow: hidden; }
/* Opaque paper backing: the persistent GPU room scene renders a near-black
   "window" shape that drifts to different screen positions depending on
   scroll-stage and viewport height, and unshielded body copy loses all
   contrast wherever it lands behind that shape (position:relative/z-index
   alone isn't enough — the element must also be visually opaque to actually
   occlude the canvas). Long-form reading columns get a real paper panel. */
.page-article__content, .project-article__content {
	font-size: var(--fs-3);
	color: rgb(var(--cn-ink-dim) / .85);
	max-width: 68ch;
	background: rgb(var(--cn-paper) / .94);
	padding: var(--sp-4);
	border-radius: var(--radius);
}
.page-article__content h2 { margin-top: var(--sp-4); font-size: var(--fs-4); }
.page-contact-form { margin-top: var(--sp-5); max-width: 640px; }

.project-article__header { margin-bottom: var(--sp-3); }
.project-badges { display: flex; gap: var(--sp-1); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.project-badge {
	font-family: var(--font-mono);
	font-size: .72rem;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: rgb(var(--cn-accent));
	border: 1px solid rgb(var(--cn-accent) / .4);
	border-radius: 999px;
	padding: 4px 12px;
}
.project-article__excerpt { font-size: var(--fs-3); color: rgb(var(--cn-ink-dim) / .7); font-style: italic; font-family: var(--font-serif); }
.project-article__layout {
	display: grid;
	grid-template-columns: 1fr 280px;
	gap: var(--sp-5);
	align-items: start;
}
.project-article__spec {
	position: sticky;
	top: var(--sp-4);
	background: rgb(var(--cn-paper-2));
	border: 1px solid rgb(var(--cn-line) / .16);
	border-radius: var(--radius);
	padding: var(--sp-3);
}
.project-article__spec-title { font-size: var(--fs-2); text-transform: uppercase; letter-spacing: .06em; font-family: var(--font-sans); }
.project-spec { margin: 0; }
.project-spec__row {
	display: flex;
	justify-content: space-between;
	padding: var(--sp-1) 0;
	border-bottom: 1px dashed rgb(var(--cn-line) / .2);
	font-family: var(--font-mono);
	font-size: .82rem;
}
.project-spec__row dt { color: rgb(var(--cn-ink-dim) / .6); margin: 0; }
.project-spec__row dd { margin: 0; font-weight: 600; }
.project-article__gallery { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--sp-2); margin-top: var(--sp-4); }
.project-article__gallery-item img { border-radius: var(--radius); }
.project-article__back { margin-top: var(--sp-5); }

/* ---------- Archive ---------- */
.archive-header { margin-bottom: var(--sp-3); }
.archive-header__title { font-size: var(--fs-5); }
.project-filters { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-4); }
.project-filters__link {
	font-size: var(--fs-1);
	text-transform: uppercase;
	letter-spacing: .05em;
	padding: 8px 16px;
	border: 1px solid rgb(var(--cn-line) / .25);
	border-radius: 999px;
}
.project-filters__link.is-active,
.project-filters__link:hover { background: rgb(var(--cn-accent)); color: rgb(var(--cn-accent-ink)); border-color: rgb(var(--cn-accent)); }
.project-grid__empty { color: rgb(var(--cn-ink-dim) / .6); }

/* pagination (paginate_links / the_posts_pagination default markup) */
.page-numbers, .nav-links {
	display: flex;
	gap: var(--sp-1);
	margin-top: var(--sp-4);
	flex-wrap: wrap;
}
.page-numbers li { display: inline-flex; }
.page-numbers a, .page-numbers span {
	display: inline-flex;
	padding: 8px 14px;
	border: 1px solid rgb(var(--cn-line) / .2);
	border-radius: var(--radius);
	font-family: var(--font-mono);
	font-size: .82rem;
}
.page-numbers .current { background: rgb(var(--cn-accent)); color: rgb(var(--cn-accent-ink)); border-color: rgb(var(--cn-accent)); }

/* ---------- Footer ---------- */
.site-footer {
	position: relative;
	z-index: 2;
	background: rgb(var(--cn-ink));
	color: rgb(var(--cn-accent-ink) / .85);
}
.site-footer__inner {
	max-width: 1320px;
	margin: 0 auto;
	padding: var(--sp-5) var(--sp-4);
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr;
	gap: var(--sp-4);
}
.site-footer__name { font-family: var(--font-serif); font-size: var(--fs-4); color: rgb(var(--cn-accent-ink)); }
.site-footer__tagline { color: rgb(var(--cn-accent-ink) / .6); }
.site-footer__link { display: block; margin-bottom: var(--sp-1); }
.site-footer__link:hover { color: rgb(var(--cn-accent)); }
.site-footer__address { color: rgb(var(--cn-accent-ink) / .6); font-size: var(--fs-1); }
.site-footer__list { display: flex; flex-direction: column; gap: var(--sp-1); }
.site-footer__legal {
	grid-column: 1 / -1;
	border-top: 1px solid rgb(var(--cn-accent-ink) / .12);
	padding-top: var(--sp-3);
	font-size: var(--fs-1);
	color: rgb(var(--cn-accent-ink) / .45);
	margin: 0;
}

/* ---------- 404 / search ---------- */
.error-404, .archive-header { max-width: 640px; }
.search-result { padding: var(--sp-3) 0; border-bottom: 1px solid rgb(var(--cn-line) / .14); }

/* ---------- Responsive ---------- */
@media (max-width: 1023px) {
	.beam-calc, .material-calc { grid-template-columns: 1fr; }
	.tool-form--grid { grid-template-columns: 1fr; }
	.project-article__layout { grid-template-columns: 1fr; }
	.project-article__spec { position: static; }
	.contact-cta__inner { grid-template-columns: 1fr; }
	.gantt-row { grid-template-columns: 130px 1fr; }
	.gantt-row__days { display: none; }
}
@media (max-width: 900px) {
	.project-grid { grid-template-columns: repeat(2, 1fr); }
	.stat-band__inner { grid-template-columns: repeat(2, 1fr); }
	.testimonial-grid { grid-template-columns: 1fr; }
	.site-footer__inner { grid-template-columns: 1fr 1fr; }
	.hero__headline { font-size: var(--fs-5); }
}
@media (max-width: 640px) {
	.main-navigation { position: static; }
	.main-navigation .nav__list {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		gap: 0;
		background: rgb(var(--cn-paper));
		border-bottom: 1px solid rgb(var(--cn-line) / .16);
		box-shadow: 0 12px 24px rgb(var(--cn-ink) / .1);
	}
	.main-navigation .nav__list.is-open { display: flex; }
	.main-navigation .nav__list li { width: 100%; }
	.main-navigation .nav__list a {
		display: block;
		padding: var(--sp-3) var(--sp-4);
		border-bottom: 1px solid rgb(var(--cn-line) / .1);
	}
	.menu-toggle { display: inline-flex; }
	.project-grid { grid-template-columns: 1fr; }
	.stat-band__inner { grid-template-columns: 1fr 1fr; }
	.contact-form__row--split { grid-template-columns: 1fr; }
	.site-footer__inner { grid-template-columns: 1fr; }
	.hero__headline { font-size: var(--fs-4); }
}
