/*
 * Layout system — CALEN Official theme.
 * Container widths, section rhythm, header/footer structural shell.
 *
 * Breakpoint strategy (documented in full in README.md):
 *   768px  — nav switches from disclosure to inline row
 *   1024px — section rhythm steps up to its widest spacing tier
 * All other scaling (320–1920px+) is handled by clamp()-based fluid
 * tokens in tokens.css, not by additional breakpoints.
 */

/* ==========================================================
   Container system
   Horizontal width roles. Compose with section-* classes below
   for vertical rhythm — the two are independent.
   ========================================================== */

.container-narrow,
.container-default,
.container-wide,
.container-full {
	width: 100%;
	margin-inline: auto;
	padding-inline: var(--container-padding);
}

.container-narrow {
	max-width: var(--container-narrow);
}

.container-default {
	max-width: var(--container-default);
}

.container-wide {
	max-width: var(--container-wide);
}

.container-full {
	max-width: none;
}

/* ==========================================================
   Section rhythm
   Vertical spacing roles for page sections. Apply to a <section>
   or similar; combine with a container-* class for width.
   ========================================================== */

.section {
	padding-block: var(--space-8);
}

.section-compact {
	padding-block: var(--space-6);
}

.section-large {
	padding-block: var(--space-10);
}

.section-full {
	padding-block: 0;
}

@media (min-width: 1024px) {
	.section {
		padding-block: var(--space-9);
	}

	.section-large {
		padding-block: var(--space-10);
	}
}

/* ==========================================================
   Header shell
   ========================================================== */

.site-header {
	width: 100%;
	max-width: var(--container-hero); /* 1280px */
	margin-inline: auto;
	background-color: var(--color-bg);
}

.site-header__inner {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	height: 4.25rem; /* 68px */
	padding-inline: 4rem; /* 64px */
	border-bottom: 1px solid var(--color-text);
}

.site-header__brand {
	display: flex;
	align-items: baseline;
	gap: 0.875rem;
	min-width: 0;
}

.site-header__descriptor {
	font-family: var(--font-family-mono);
	font-size: 0.65625rem;
	line-height: normal;
	letter-spacing: 0.14em;
	color: var(--color-text-muted);
	white-space: nowrap;
}

@media (max-width: 767px) {
	.site-header__inner {
		height: 3.375rem; /* 54px */
		padding-inline: 1.125rem; /* 18px */
	}

	.site-header__brand {
		gap: 0;
	}

	.site-header__descriptor--desktop {
		display: none;
	}
}

/* ==========================================================
   Footer shell
   ========================================================== */

.site-footer {
	border-top: 1px solid var(--color-text);
	background-color: var(--color-bg);
}

.site-footer__inner {
	padding-block: var(--space-9) var(--space-7);
}

.site-footer__columns {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: var(--space-7) var(--space-8);
}

.site-footer__brand {
	flex: 1 1 280px;
	min-width: 0;
	max-width: 26rem;
}

.site-footer__wordmark {
	margin: 0 0 var(--space-3);
	font-size: var(--font-size-body-lg);
	font-weight: 600;
	letter-spacing: var(--letter-spacing-wide);
	color: var(--color-text);
}

.site-footer__brand p.text-body-sm {
	margin: 0;
}

.site-footer__col {
	flex: 1 1 140px;
	min-width: 0;
}

.site-footer__col > .text-label {
	margin: 0 0 var(--space-3);
}

.site-footer__links {
	margin: 0;
	padding: var(--space-3) 0 0;
	border-top: 1px solid var(--color-border);
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
}

.site-footer__bottom {
	margin-top: var(--space-8);
	padding-top: var(--space-5);
	border-top: 1px solid var(--color-border);
}

.site-footer__bottom p.text-caption {
	max-width: 48rem;
}

.site-footer__stage {
	margin-bottom: var(--space-3);
}

.site-footer__stage .semantic-atom {
	white-space: nowrap;
}

.site-footer__stage span[lang] {
	display: block;
}

.site-footer__operator {
	margin-top: var(--space-3);
}

.site-footer__copyright {
	margin: var(--space-4) 0 0;
	font-size: var(--font-size-caption);
	letter-spacing: var(--letter-spacing-wide);
	color: var(--color-text-secondary);
}
