/* =============================================================
   TALMYN — design tokens
   ============================================================= */
:root {
	--navy: #0B1E3A;
	--navy-line: #22375A;
	--blue: #2563EB;
	--gold: #C9A227;
	--charcoal: #111827;
	--cloud: #F8FAFC;
	--border: #DCE2ED;
	--dim: #4B5768;
	--white: #FFFFFF;
	--serif: "Playfair Display", Georgia, "Times New Roman", serif;
	--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	--wrap: 1240px;
	--radius: 6px;
}

/* =============================================================
   RESET
   ============================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--white);
	color: var(--charcoal);
	font-family: var(--sans);
	font-size: 1.0625rem;
	line-height: 1.65;
	text-rendering: optimizeLegibility;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--blue); text-decoration: none; }
a:hover { color: var(--navy); }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 700; line-height: 1.15; color: var(--navy); margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
p { margin: 0 0 1em; }
button { font-family: inherit; cursor: pointer; }
input { font-family: inherit; }

.screen-reader-text {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0,0,0,0); white-space: nowrap;
}

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }

/* Defensive: flex/grid items default to min-width:auto, which lets long
   unbreakable content (a card's icon+name+meta row) force its track wider
   than the container — and that silently overflows the whole page on
   mobile. Reset the minimum on every flex/grid item that holds text. */
.card-grid > *, .cluster-grid > *, .subcat-grid > *, .lead-package > *,
.article-body-wrap > *, .site-footer__grid > *, .team-grid > * {
	min-width: 0;
}
body { overflow-x: hidden; }

/* =============================================================
   HEADER
   ============================================================= */
.site-utility {
	background: var(--cloud);
	border-bottom: 1px solid var(--border);
}
.site-utility__row {
	display: flex; align-items: center; justify-content: space-between;
	height: 38px; gap: 1rem;
}
.site-utility__edition {
	font-size: 0.6875rem; letter-spacing: 0.08em; text-transform: uppercase;
	color: var(--dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.site-utility__links { display: flex; align-items: center; gap: 1.25rem; flex: none; }
.site-utility__links a {
	font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
	color: var(--dim);
}
.site-utility__links a:hover { color: var(--navy); }

.site-masthead {
	display: flex; flex-direction: column; align-items: center;
	padding: 1.75rem 1.25rem 0.375rem;
	text-align: center;
}
.site-masthead__logo { max-height: 52px; width: auto; }
.site-masthead__wordmark { font-family: var(--serif); font-weight: 800; font-size: 2.25rem; color: var(--navy); letter-spacing: 0.01em; }
.site-masthead__tagline {
	margin: 0.5rem 0 1.25rem; font-size: 0.75rem; font-weight: 600;
	letter-spacing: 0.22em; text-transform: uppercase; color: #8A6B12; /* darkened from --gold for WCAG AA contrast on white (5:1) */
}

.site-nav-strip {
	background: var(--navy);
	border-top: 1px solid var(--navy-line);
	border-bottom: 3px solid var(--gold);
}
.site-nav-strip__row {
	display: flex; align-items: center; justify-content: space-between;
	gap: 1rem; min-height: 52px;
}
.primary-nav { flex: 1 1 auto; min-width: 0; }
.primary-nav ul {
	display: flex; align-items: center; gap: 1.75rem;
	overflow-x: auto; scrollbar-width: none; padding: 0.75rem 0;
}
.primary-nav ul::-webkit-scrollbar { display: none; }
.primary-nav li { flex: none; }
.primary-nav a {
	font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.02em;
	color: #C7D2E6; white-space: nowrap;
}
.primary-nav a:hover { color: var(--white); }

.nav-tools { display: flex; align-items: center; gap: 0.75rem; flex: none; }
.nav-tools button {
	background: transparent; border: none; color: #C7D2E6;
	width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
	border-radius: 999px;
}
.nav-tools button:hover { color: var(--white); background: rgba(255,255,255,0.08); }
.nav-tools .search-toggle svg,
.nav-tools .menu-toggle svg { width: 18px; height: 18px; }

.header-search {
	display: none;
	background: var(--navy);
	border-bottom: 1px solid var(--navy-line);
}
.header-search.is-open { display: block; }
.header-search__row { display: flex; padding: 0.85rem 0; gap: 0.5rem; }
.header-search input[type="search"] {
	flex: 1; background: rgba(255,255,255,0.08); border: 1px solid var(--navy-line);
	border-radius: var(--radius); padding: 0.6rem 0.9rem; color: var(--white); font-size: 0.9375rem;
}
.header-search input[type="search"]::placeholder { color: #93A3BE; }
.header-search button {
	background: var(--blue); color: var(--white); border: none; border-radius: var(--radius);
	padding: 0 1.1rem; font-weight: 600;
}

/* mobile menu overlay (hidden on desktop) */
.mobile-menu {
	display: none;
	position: fixed; inset: 0; z-index: 100;
	background: var(--navy);
	overflow-y: auto;
}
.mobile-menu.is-open { display: block; }
.mobile-menu__header {
	display: flex; align-items: center; justify-content: space-between;
	padding: 1rem 1.25rem; border-bottom: 1px solid var(--navy-line);
}
.mobile-menu__header button { background: none; border: none; color: var(--white); width: 40px; height: 40px; }
.mobile-menu ul { padding: 0.5rem 1.25rem 2rem; }
.mobile-menu li { border-bottom: 1px solid var(--navy-line); }
.mobile-menu a { display: block; padding: 0.9rem 0; color: var(--white); font-size: 1.0625rem; font-weight: 600; }

/* =============================================================
   SIGNAL BADGES
   ============================================================= */
.signal-badges { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.signal-badge {
	display: inline-flex; align-items: center; gap: 0.4rem;
	padding: 0.3rem 0.7rem 0.3rem 0.55rem; border-radius: 999px;
	font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
	line-height: 1;
}
.signal-badge--ai { background: var(--navy); color: var(--white); }
.signal-badge--ai svg { color: var(--blue); }
.signal-badge--format { background: var(--white); color: var(--navy); border: 1px solid var(--border); }
.signal-badge--format svg { color: var(--gold); }
.signal-badge--format:hover { border-color: var(--blue); color: var(--blue); }

.signal-legend {
	background: var(--cloud); border: 1px solid var(--border); border-radius: var(--radius);
	padding: 1rem 1.5rem; font-size: 0.875rem; color: var(--dim); margin: 2.5rem 0;
}
.signal-legend strong { color: var(--charcoal); }

/* =============================================================
   STORY CARD — the one card component, reused everywhere
   ============================================================= */
.story-card__link { display: flex; flex-direction: column; gap: 0.625rem; }
.story-card img { aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius); width: 100%; }
.story-card__cat {
	font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--blue);
}
.story-card__title {
	font-family: var(--serif); font-weight: 700; font-size: 1.0625rem; color: var(--navy); line-height: 1.28; margin: 0.15em 0 0;
}
.story-card__link:hover .story-card__title { color: var(--blue); }
.story-card__excerpt { font-size: 0.875rem; color: var(--dim); margin: 0.35em 0 0; }

.card-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.75rem; margin: 1.5rem 0; }
.card-grid--3 { grid-template-columns: repeat(3, 1fr); }

/* =============================================================
   HOMEPAGE — lead package + latest rail
   ============================================================= */
.lead-package {
	display: grid; grid-template-columns: 2fr 1fr; gap: 2.5rem;
	padding: 2.75rem 0 0;
}
.lead-story__cat {
	display: inline-flex; align-items: center; gap: 6px;
	font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--blue);
}
.lead-story h1 {
	font-size: clamp(1.75rem, 3.2vw, 2.75rem); margin: 0.5rem 0 0.75rem;
}
.lead-story h1 a { color: inherit; }
.lead-story h1 a:hover { color: var(--blue); }
.lead-story__dek { font-size: 1.1875rem; line-height: 1.55; color: var(--dim); max-width: 640px; margin: 0 0 1.25rem; }
.lead-story__byline { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.lead-story__byline .avatar { border-radius: 999px; display: block; }
.lead-story__byline-name { font-weight: 700; font-size: 0.875rem; }
.lead-story__byline-meta { font-size: 0.8125rem; color: var(--dim); }
.lead-story img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 4px; }

.latest-rail { border-left: 1px solid var(--border); padding-left: 2rem; }
.latest-rail__title {
	font-family: var(--serif); font-weight: 800; font-size: 0.8125rem;
	letter-spacing: 0.06em; text-transform: uppercase; color: var(--blue); margin: 0 0 0.5rem;
}
.latest-rail__item { display: block; padding: 0.85rem 0; border-bottom: 1px solid var(--border); }
.latest-rail__item:last-child { border-bottom: none; }
.latest-rail__cat { font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--blue); }
.latest-rail__cat.is-gold { color: var(--gold); }
.latest-rail__title-text { font-family: var(--serif); font-weight: 700; color: var(--navy); font-size: 1rem; margin-top: 0.35em; line-height: 1.3; }
.latest-rail__item:hover .latest-rail__title-text { color: var(--blue); }
.latest-rail__empty { color: var(--dim); font-size: 0.875rem; }

.section-rail { margin-top: 3.25rem; }
.section-rail__head { display: flex; align-items: baseline; justify-content: space-between; }
.section-rail__head h2 { font-size: 1.4rem; }
.section-rail__seeall { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; display: inline-flex; align-items: center; gap: 4px; }
.section-rail hr { border: none; border-top: 2px solid var(--gold); margin: 0.75rem 0 1.5rem; }
.section-rail__empty { color: var(--dim); font-size: 0.875rem; }

.explore-panel { background: var(--cloud); border: 1px solid var(--border); border-radius: 8px; padding: 2.25rem clamp(1.25rem, 4vw, 2.5rem); margin-top: 3.5rem; }
.explore-panel h2 { font-size: 1.375rem; margin-bottom: 1.375rem; }
.cluster-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.cluster-card { background: var(--white); padding: 1.125rem 1.25rem; display: flex; align-items: center; gap: 0.75rem; min-width: 0; }
.cluster-card__icon { color: var(--navy); flex: none; }
.cluster-card__name { font-weight: 600; font-size: 0.9375rem; flex: 1 1 auto; min-width: 0; color: var(--charcoal); }
.cluster-card__meta { font-size: 0.75rem; color: var(--dim); white-space: nowrap; flex: none; }
.cluster-card:hover .cluster-card__name { color: var(--blue); }

.newsletter-band {
	background: var(--navy); border-radius: 8px; border-top: 3px solid var(--gold);
	padding: 2.25rem clamp(1.25rem, 4vw, 2.75rem); margin: 3.5rem 0;
	display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap;
}
.newsletter-band h3 { color: var(--white); font-size: 1.375rem; margin-bottom: 0.4em; }
.newsletter-band p { color: #C7D2E6; margin: 0; font-size: 0.875rem; }

.subscribe-form__row { display: flex; gap: 0.625rem; flex-wrap: wrap; }
.subscribe-form input[type="email"] {
	flex: 1 1 220px; background: var(--white); border: none; border-radius: var(--radius);
	padding: 0.75rem 1rem; font-size: 0.9rem;
}
.subscribe-form button {
	background: var(--blue); color: var(--white); border: none; border-radius: var(--radius);
	padding: 0.75rem 1.375rem; font-weight: 700; font-size: 0.9rem;
}
.subscribe-form button:hover { background: var(--navy); }
.subscribe-form[data-state="loading"] button { opacity: 0.7; cursor: wait; }
.subscribe-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.subscribe-form__note { margin: 0.5rem 0 0; font-size: 0.8125rem; min-height: 1.2em; }
.subscribe-form[data-state="success"] .subscribe-form__note { color: var(--gold); font-weight: 600; }
.subscribe-form[data-state="error"] .subscribe-form__note { color: #E4572E; font-weight: 600; }

.site-form { max-width: 560px; margin: 2rem 0; }
.site-form__field { margin-bottom: 1.125rem; }
.site-form__field label { display: block; font-weight: 700; font-size: 0.875rem; color: var(--navy); margin-bottom: 0.375rem; }
.site-form__field input, .site-form__field textarea {
	width: 100%; border: 1px solid var(--border); border-radius: var(--radius);
	padding: 0.75rem 1rem; font-size: 0.9375rem; font-family: inherit; background: var(--white); color: var(--charcoal);
}
.site-form__field input:focus, .site-form__field textarea:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
.site-form__field textarea { resize: vertical; }
.site-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.site-form button {
	background: var(--blue); color: var(--white); border: none; border-radius: var(--radius);
	padding: 0.8125rem 1.75rem; font-weight: 700; font-size: 0.9375rem; cursor: pointer;
}
.site-form button:hover { background: var(--navy); }
.site-form[data-state="loading"] button { opacity: 0.7; cursor: wait; }
.site-form__note { margin: 0.75rem 0 0; font-size: 0.875rem; min-height: 1.2em; }
.site-form[data-state="success"] .site-form__note { color: #1A7A4C; font-weight: 600; }
.site-form[data-state="error"] .site-form__note { color: #E4572E; font-weight: 600; }

main.site-main { padding-bottom: 1rem; }

/* =============================================================
   ARCHIVE / CATEGORY / SEARCH / AUTHOR
   ============================================================= */
.archive-head { border-bottom: 3px solid var(--gold); padding: 2.5rem 0 1.25rem; margin-bottom: 2rem; }
.archive-head h1 { font-size: clamp(1.75rem, 3vw, 2.5rem); }
.archive-head__desc { color: var(--dim); margin-top: 0.5rem; max-width: 640px; }

.subcat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 2.5rem; }
.subcat-card {
	display: flex; align-items: center; gap: 0.75rem; padding: 1rem 1.25rem;
	background: var(--white); border: 1px solid var(--border); border-radius: 8px; color: var(--charcoal);
}
.subcat-card:hover { border-color: var(--blue); }
.subcat-card__icon { color: var(--blue); flex: none; }
.subcat-card__name { font-weight: 600; flex: 1; }
.subcat-card__count { font-size: 0.8125rem; color: var(--dim); white-space: nowrap; }

.pagination { display: flex; gap: 0.5rem; justify-content: center; margin: 2.5rem 0; }
.pagination a, .pagination span {
	padding: 0.5rem 0.9rem; border: 1px solid var(--border); border-radius: var(--radius); font-size: 0.875rem;
}
.pagination .current { background: var(--navy); color: var(--white); border-color: var(--navy); }

.search-page-form { margin-bottom: 2rem; }
.search-page-form__row { display: flex; gap: 0.5rem; max-width: 520px; }
.search-page-form input { flex: 1; padding: 0.75rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); font-size: 1rem; }
.search-page-form button { background: var(--blue); color: var(--white); border: none; border-radius: var(--radius); padding: 0 1.25rem; font-weight: 700; }

.author-card { display: flex; gap: 1.5rem; align-items: flex-start; padding: 1.75rem; background: var(--white); border: 1px solid var(--border); border-radius: 10px; margin: 2.5rem 0; }
.author-card__avatar img { border-radius: 999px; display: block; }
.author-card__name { font-size: 1.5rem; margin: 0 0 0.375rem; }
.author-card__beat { display: inline-block; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--blue); margin-bottom: 0.5rem; }
.author-card__desc { color: var(--charcoal); margin: 0 0 0.5rem; max-width: 60ch; }
.author-card__count { font-size: 0.8125rem; color: var(--dim); margin: 0; }

.team-beat { margin-bottom: 2.5rem; }
.team-beat__title { font-family: var(--serif); color: var(--navy); font-size: 1.25rem; margin: 0 0 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--gold); }
.team-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem; }
.team-card { display: grid; grid-template-columns: 56px 1fr; gap: 0 0.875rem; padding: 1.25rem; background: var(--white); border: 1px solid var(--border); border-radius: 8px; color: var(--charcoal); }
.team-card:hover { border-color: var(--blue); }
.team-card__avatar { grid-row: span 3; }
.team-card__avatar img { border-radius: 999px; display: block; }
.team-card__name { font-weight: 700; color: var(--navy); align-self: end; }
.team-card__bio { font-size: 0.8125rem; color: var(--dim); line-height: 1.5; }
.team-card__count { font-size: 0.75rem; color: var(--blue); font-weight: 600; align-self: start; }

/* =============================================================
   SINGLE ARTICLE
   ============================================================= */
.article-head { max-width: 800px; margin: 2rem auto 0; }
.article-head .breadcrumb { display: flex; align-items: center; gap: 6px; color: var(--dim); font-size: 0.8125rem; margin-bottom: 1rem; }
.article-head .breadcrumb a { color: var(--dim); }
.article-head .breadcrumb a:hover { color: var(--blue); }
.article-head__cat { display: inline-flex; align-items: center; gap: 6px; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--blue); }
.article-head h1 { font-size: clamp(1.75rem, 3.4vw, 2.5rem); margin: 0.6em 0 0.5em; }
.article-head__dek { font-size: 1.25rem; color: var(--dim); line-height: 1.55; margin: 0 0 1.5rem; }
.article-meta { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 1rem 0; }
.article-meta__byline { display: flex; align-items: center; gap: 0.75rem; }
.article-meta__byline .avatar { border-radius: 999px; display: block; }
.article-meta__name { font-weight: 700; font-size: 0.875rem; }
.article-meta__dates { color: var(--dim); font-size: 0.8125rem; }

.article-lead-image { max-width: var(--wrap); margin: 1.75rem auto 0; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }
.article-lead-image img { width: 100%; aspect-ratio: 16/8; object-fit: cover; border-radius: 4px; }
.image-credit { margin: 0.5rem 0 0; font-size: 0.75rem; font-style: italic; color: var(--dim); }

.article-body-wrap { max-width: 1000px; margin: 2.5rem auto 0; display: grid; grid-template-columns: 1fr 300px; gap: 3.5rem; }
.article-body { max-width: 680px; }
.article-body > p:first-of-type::first-letter {
	font-family: var(--serif); font-weight: 800; font-size: 3.75rem; color: var(--navy);
	float: left; line-height: 0.82; padding: 0.05em 0.08em 0 0;
}
.article-body p { font-size: 1.125rem; line-height: 1.75; color: #1F2937; margin: 0 0 1.375rem; }
.article-body h2 { font-size: 1.625rem; margin: 2.25rem 0 1rem; }
.article-body h3 { font-size: 1.25rem; margin: 1.75rem 0 0.75rem; }
.article-body blockquote {
	border-left: 3px solid var(--gold); margin: 1.75rem 0; padding: 0.25rem 0 0.25rem 1.375rem;
	font-family: var(--serif); font-size: 1.375rem; font-style: italic; color: var(--navy); line-height: 1.5;
}
.article-body ul, .article-body ol { margin: 0 0 1.375rem 1.25rem; padding: 0; }
.article-body li { margin-bottom: 0.5rem; line-height: 1.65; }
.article-body img { border-radius: 4px; margin: 1.5rem 0; }
.article-body a { text-decoration: underline; }

.article-topics { margin-top: 2.5rem; display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; color: var(--dim); font-size: 0.875rem; }
.article-topics a { color: var(--dim); }
.article-topics a:hover { color: var(--blue); }

.article-rail { display: flex; flex-direction: column; gap: 2rem; }
.rail-box { border: 1px solid var(--border); border-radius: 6px; padding: 1.25rem; }
.rail-box__title { font-size: 0.75rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; color: var(--blue); margin-bottom: 0.875rem; }
.rail-box a.rail-item { display: block; padding: 0.625rem 0; border-bottom: 1px solid var(--border); }
.rail-box a.rail-item:last-child { border-bottom: none; }
.rail-box a.rail-item .story-card__title { font-size: 0.9375rem; }

.rail-newsletter { background: var(--navy); border-radius: 6px; padding: 1.375rem; border-top: 3px solid var(--gold); }
.rail-newsletter .serif-title { font-family: var(--serif); color: var(--white); font-size: 1.0625rem; margin-bottom: 0.5rem; }
.rail-newsletter p { color: #C7D2E6; font-size: 0.8125rem; margin: 0 0 0.875rem; }
.rail-newsletter .subscribe-form__row { flex-direction: column; }
.rail-newsletter button { width: 100%; }

.share-row { display: flex; gap: 0.75rem; }
.share-row a {
	width: 36px; height: 36px; border: 1px solid var(--border); border-radius: 999px;
	display: flex; align-items: center; justify-content: center; color: var(--navy);
}
.share-row a:hover { border-color: var(--blue); color: var(--blue); }

.related-block { max-width: var(--wrap); margin: 3rem auto 0; padding: 0 clamp(1.25rem, 4vw, 2.5rem) 3.5rem; }
.related-block h2 { font-size: 1.375rem; margin-bottom: 1.25rem; }

/* =============================================================
   404
   ============================================================= */
.error-404 { text-align: left; padding: 4rem 0 5rem; }
.error-404__code { color: var(--gold); font-weight: 700; font-size: 2.25rem; margin: 0.5rem 0 0.25rem; }
.error-404 h2 { margin-bottom: 0.5rem; }
.error-404 p { color: var(--dim); margin-bottom: 1.5rem; }

/* =============================================================
   PAGE (generic content page)
   ============================================================= */
.page-content { max-width: 720px; margin: 3rem auto; }
.page-content h1 { font-size: clamp(1.75rem, 3vw, 2.25rem); margin-bottom: 1rem; }
.page-content p { font-size: 1.0625rem; line-height: 1.7; margin-bottom: 1.25rem; }
.page-content h2 { font-size: 1.375rem; margin: 2rem 0 0.875rem; }
.page-content ul, .page-content ol { margin: 0 0 1.25rem 1.25rem; }
.page-content li { margin-bottom: 0.5rem; line-height: 1.6; }

/* =============================================================
   FOOTER
   ============================================================= */
.site-footer { background: var(--navy); border-top: 1px solid var(--navy-line); margin-top: 2rem; }
.site-footer__grid { padding: 3rem 0 1.75rem; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr; gap: 2rem; }
.site-footer__brand img { height: 26px; width: auto; margin-bottom: 1rem; }
.site-footer__brand p { color: #93A3BE; font-size: 0.8125rem; line-height: 1.6; max-width: 260px; }
.site-footer__social { display: flex; gap: 14px; margin-top: 1.125rem; }
.site-footer__social a { color: #C7D2E6; }
.site-footer__social a:hover { color: var(--white); }
.site-footer h4 { color: var(--gold); font-size: 0.75rem; letter-spacing: 0.04em; text-transform: uppercase; font-family: var(--sans); font-weight: 700; margin-bottom: 0.875rem; }
.site-footer ul { display: flex; flex-direction: column; gap: 0.625rem; }
.site-footer a { color: #C7D2E6; font-size: 0.8125rem; }
.site-footer a:hover { color: var(--white); }
.site-footer__bottom {
	border-top: 1px solid var(--navy-line); padding: 1.125rem 0;
	display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem;
}
.site-footer__bottom, .site-footer__bottom a { color: #7A8CAC; font-size: 0.75rem; }
.site-footer__bottom a:hover { color: var(--white); }

/* =============================================================
   RESPONSIVE
   ============================================================= */
@media (max-width: 1024px) {
	.card-grid { grid-template-columns: repeat(2, 1fr); }
	.cluster-grid { grid-template-columns: repeat(2, 1fr); }
	.article-body-wrap { grid-template-columns: 1fr; }
	.article-rail { flex-direction: row; flex-wrap: wrap; }
	.article-rail > * { flex: 1 1 260px; }
	.site-footer__grid { grid-template-columns: 1fr 1fr 1fr; }
}

@media (max-width: 600px) {
	/* The icon+name+meta cluster-card row genuinely can't fit "16 subcategories"
	   on one line at this width even with the name shrinking (meta is
	   deliberately non-wrapping so it never awkwardly line-breaks mid count) —
	   so drop it to its own line under the name instead of letting it
	   overflow the card past the viewport edge. */
	.cluster-card { flex-wrap: wrap; }
	.cluster-card__meta { flex-basis: 100%; padding-left: calc(22px + 0.75rem); }
}

@media (max-width: 782px) {
	.site-utility__edition { display: none; }
	.site-masthead { padding-top: 1.25rem; }
	.site-masthead__logo { max-height: 40px; }
	.site-masthead__wordmark { font-size: 1.625rem; }

	.primary-nav { display: none; }
	.nav-tools .menu-toggle { display: flex; }

	.lead-package { grid-template-columns: 1fr; }
	.latest-rail { border-left: none; padding-left: 0; border-top: 1px solid var(--border); padding-top: 1.5rem; margin-top: 0.5rem; }

	.card-grid { grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
	.cluster-grid { grid-template-columns: 1fr; }
	.subcat-grid { grid-template-columns: 1fr; }

	.article-rail { flex-direction: column; }
	.site-footer__grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 480px) {
	.card-grid { grid-template-columns: 1fr; }
	.newsletter-band { flex-direction: column; align-items: flex-start; }
	.subscribe-form__row { flex-direction: column; }
	.subscribe-form button { width: 100%; }
	.site-footer__grid { grid-template-columns: 1fr; }
}

@media (min-width: 783px) {
	.nav-tools .menu-toggle { display: none; }
	.mobile-menu { display: none !important; }
}
