/* ===========================================================================
   footer-fat-columns — the full sitemap footer
   ---------------------------------------------------------------------------
   Scope: .vbs-footer-fat-columns
   Depends on: css/tokens.css, css/base.css
   Contains no literal colour, font, size, radius, shadow or duration.

   Structure: two bands. The top band is a brand block (lockup, blurb, signup)
   beside a four-column link grid; the bottom band is a rule-topped bar with
   copyright, legal links and social marks. The link grid steps 1 -> 2 -> 4
   columns so a column never gets narrower than about 11rem, which is where a
   two-word link starts breaking mid-phrase.

   The signup field wraps instead of shrinking: below ~26rem of column the
   button drops under the input rather than squeezing both into unusable
   widths, and the input keeps min-width:0 so it can never push the grid wide.
   ========================================================================= */

.vbs-footer-fat-columns__top {
	display: grid;
	gap: clamp(2.5rem, 6vw, 4rem);
}

@media (min-width: 64rem) {
	.vbs-footer-fat-columns__top {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 2.35fr);
		gap: clamp(3rem, 6vw, 6rem);
	}
}

/* --- brand block ---------------------------------------------------------- */
.vbs-footer-fat-columns__lockup {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	color: var(--vb-color-ink);
	transition: color var(--vb-dur-base) var(--vb-ease-out-soft);
}
.vbs-footer-fat-columns__lockup:hover { color: var(--vb-color-accent); }

.vbs-footer-fat-columns__mark {
	inline-size: 1.75rem;
	block-size: 1.75rem;
	flex: none;
}

.vbs-footer-fat-columns__name {
	font-family: var(--vb-font-display);
	font-size: var(--vb-fs-h3);
	line-height: var(--vb-lh-h3);
	letter-spacing: var(--vb-ls-h3);
	font-weight: var(--vb-weight-heading);
	text-transform: var(--vb-case-display);
}

.vbs-footer-fat-columns__blurb {
	margin-block-start: 1.25rem;
	max-width: 34ch;
}

/* --- signup --------------------------------------------------------------- */
.vbs-footer-fat-columns__signup {
	margin-block-start: clamp(1.75rem, 3vw, 2.5rem);
	max-width: 26rem;
}

.vbs-footer-fat-columns__field {
	margin-block-start: 0.85rem;
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}

.vbs-footer-fat-columns__input {
	flex: 1 1 11rem;
	min-width: 0;
	padding: 0.95em 1.2em;
	background-color: var(--vb-panel);
	background-image: var(--vb-panel-image);
	background-blend-mode: var(--vb-panel-blend);
	border: var(--vb-border-hair) solid var(--vb-color-rule);
	border-radius: var(--vb-radius-btn);
	color: var(--vb-color-ink);
	font-size: var(--vb-fs-small);
	line-height: 1;
	transition: border-color var(--vb-dur-base) var(--vb-ease-out-soft);
}
.vbs-footer-fat-columns__input::placeholder { color: var(--vb-color-mute); }
.vbs-footer-fat-columns__input:hover { border-color: var(--vb-color-ink-soft); }

.vbs-footer-fat-columns__submit { flex: 0 0 auto; }

.vbs-footer-fat-columns__note { margin-block-start: 0.85rem; }

/* --- link columns --------------------------------------------------------- */
.vbs-footer-fat-columns__cols {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 2rem clamp(1.5rem, 3vw, 2.5rem);
}

/* Two columns from 24rem: twenty stacked links is a long scroll on a phone,
   and every label in the designed set still holds one line at half width. */
@media (min-width: 24rem) {
	.vbs-footer-fat-columns__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 52rem) {
	.vbs-footer-fat-columns__cols {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 2rem clamp(1.25rem, 2.5vw, 2rem);
	}
}

.vbs-footer-fat-columns__heading { color: var(--vb-color-ink); }

.vbs-footer-fat-columns__list {
	margin-block-start: 1.1rem;
	display: grid;
	gap: 0.7rem;
}

.vbs-footer-fat-columns__link {
	display: inline-block;
	font-size: var(--vb-fs-small);
	line-height: var(--vb-lh-small);
	color: var(--vb-color-ink-soft);
	transition: color var(--vb-dur-base) var(--vb-ease-out-soft),
	            transform var(--vb-dur-base) var(--vb-ease-out-soft);
}
.vbs-footer-fat-columns__link:hover {
	color: var(--vb-chroma-ink);
	transform: translateX(0.2em);
}

/* --- bottom bar ----------------------------------------------------------- */
.vbs-footer-fat-columns__bottom {
	margin-block-start: clamp(3rem, 6vw, 4.5rem);
	padding-block-start: clamp(1.25rem, 2.5vw, 1.75rem);
	border-block-start: var(--vb-border-hair) solid var(--vb-color-rule);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 2rem;
}

.vbs-footer-fat-columns__copy { margin: 0; }

.vbs-footer-fat-columns__legal-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
}

.vbs-footer-fat-columns__legal-link {
	font-size: var(--vb-fs-small);
	line-height: var(--vb-lh-small);
	color: var(--vb-color-mute);
	transition: color var(--vb-dur-base) var(--vb-ease-out-soft);
}
.vbs-footer-fat-columns__legal-link:hover { color: var(--vb-color-ink); }

/* Social marks are hit-targets first: a 2.5rem circle with the glyph at 45%,
   so they stay tappable whatever the brand does to radius. */
.vbs-footer-fat-columns__social {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.vbs-footer-fat-columns__social-link {
	display: grid;
	place-items: center;
	inline-size: 2.5rem;
	block-size: 2.5rem;
	border: var(--vb-border-hair) solid var(--vb-color-rule);
	border-radius: var(--vb-radius-pill);
	color: var(--vb-color-ink-soft);
	transition: color var(--vb-dur-base) var(--vb-ease-out-soft),
	            border-color var(--vb-dur-base) var(--vb-ease-out-soft),
	            background-color var(--vb-dur-base) var(--vb-ease-out-soft);
}
.vbs-footer-fat-columns__social-link:hover {
	color: var(--vb-color-accent-contrast);
	background-color: var(--vb-color-accent);
	border-color: var(--vb-color-accent);
}
.vbs-footer-fat-columns__social-link svg {
	inline-size: 1.125rem;
	block-size: 1.125rem;
}

/* On a phone the bar reads as three stacked lines, all left-aligned — a
   space-between row at that width leaves the social marks stranded. */
@media (max-width: 47.99rem) {
	.vbs-footer-fat-columns__bottom {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.25rem;
	}
}
