.cd-site-footer { margin-top: var(--cd-space-12); padding-bottom: var(--cd-space-8); }
.cd-footer-surface { box-shadow: var(--cd-shadow-raised-soft); }
.cd-footer-columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: var(--cd-space-6); align-items: start; }
.cd-footer-brand, .cd-footer-column { min-width: 0; }
.cd-footer-brand { display: grid; gap: var(--cd-space-3); justify-items: start; }
.cd-footer-tagline { margin: 0; color: var(--cd-color-muted); font-size: var(--cd-font-sm); }
.cd-footer-socials { gap: var(--cd-space-2); }
.cd-footer-socials .cd-button { border-color: var(--cd-border-soft); }
.cd-footer-column h2 { margin: 0 0 var(--cd-space-2); font-size: var(--cd-font-md); }
.cd-footer-toggle { display: flex; justify-content: space-between; align-items: center; gap: var(--cd-space-2); padding: 0; width: 100%; border: 0; background: none; color: var(--cd-color-text); font-weight: var(--cd-weight-semibold); text-align: left; overflow-wrap: anywhere; }
.cd-footer-toggle > span { display: none; flex-shrink: 0; }
.cd-footer-toggle svg { display: block; width: var(--cd-icon-size); height: var(--cd-icon-size); transition: transform var(--cd-depth-transition); }
.cd-footer-leaf { display: flex; align-items: center; min-height: var(--cd-control-size); color: var(--cd-color-text); text-decoration: none; }
.cd-footer-column .cd-nav-link { min-height: var(--cd-control-size); padding: var(--cd-space-2) var(--cd-space-3); font-size: var(--cd-font-sm); color: var(--cd-color-muted); background: transparent; box-shadow: none; }
.cd-footer-column .cd-nav-title { font-weight: var(--cd-weight-normal); }
.cd-footer-leaf .cd-nav-title { font-weight: var(--cd-weight-semibold); }
.cd-footer-column :is(.cd-nav-visual, .cd-nav-copy small, .cd-nav-badge) { display: none; }
.cd-footer-column .cd-nav-link.is-current { color: var(--cd-color-text); text-decoration: none; }
.cd-footer-column :is(.cd-nav-link, .cd-footer-leaf) { border-radius: var(--cd-radius-sm); text-decoration: none; }
.cd-footer-column :is(.cd-nav-link, .cd-footer-leaf):is(:hover, :focus-visible) { color: var(--cd-color-text); background: var(--cd-surface-inset); box-shadow: var(--cd-shadow-inset); text-decoration: none; }
.cd-footer-column :is(.cd-nav-link, .cd-footer-leaf):active { background: var(--cd-gradient-pill-active); box-shadow: var(--cd-shadow-pressed); }
.cd-site-footer :is(a, button):focus-visible { outline: var(--cd-focus-width) solid var(--cd-focus-color); outline-offset: var(--cd-focus-offset); }
.cd-footer-column > nav .cd-nav-arrow { display: none; }
.cd-footer-column [hidden] { display: none; }
.cd-footer-bottom { display: flex; align-items: center; flex-wrap: wrap; gap: var(--cd-space-3) var(--cd-space-4); margin-top: var(--cd-space-4); padding-top: var(--cd-space-3); border-top: 1px solid var(--cd-border-soft); color: var(--cd-color-muted); font-size: var(--cd-font-sm); }
.cd-footer-bottom p { margin: 0; margin-inline-end: auto; }
.cd-footer-bottom a { display: inline-flex; align-items: center; min-height: var(--cd-control-size); color: inherit; }
@media (max-width: 64rem) {
	.cd-footer-surface { padding: var(--cd-space-4); }
	/* Keep the existing stacked mobile navigation. */
	.cd-footer-columns { display: flex; flex-direction: column; gap: 0; }
	.cd-footer-brand { display: contents; }
	.cd-footer-brand > .cd-logo, .cd-footer-tagline, .cd-footer-socials { margin-bottom: var(--cd-space-3); }
	.cd-footer-column { order: 1; width: 100%; }
	.cd-footer-column { margin-block: var(--cd-space-1); border-radius: var(--cd-radius-md); background: var(--cd-surface-raised); box-shadow: var(--cd-shadow-raised-soft); }
	.cd-footer-column h2 { margin: 0; }
	.cd-footer-toggle { min-height: var(--cd-space-12); cursor: pointer; padding-inline: var(--cd-space-3); border-radius: var(--cd-radius-sm); }
	.cd-footer-column:has(.cd-footer-toggle[aria-expanded="true"]) { background: var(--cd-surface-inset); box-shadow: var(--cd-shadow-inset); border-radius: var(--cd-radius-md); }
	.cd-footer-toggle:active { background: var(--cd-surface-inset); box-shadow: var(--cd-shadow-pressed); }
	.cd-footer-toggle > span { display: inline; }
	.cd-footer-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
	.cd-footer-column > nav { padding: var(--cd-space-1) var(--cd-space-3) var(--cd-space-2); }
	.cd-footer-column > nav .cd-nav-list { display: grid; gap: 0; }
	.cd-footer-column > nav .cd-nav-list > li { margin: 0; }
	.cd-footer-column > nav .cd-nav-link { width: 100%; min-height: var(--cd-control-size); padding: var(--cd-space-2) var(--cd-space-3); font-size: var(--cd-font-md); color: var(--cd-color-text); }
	.cd-footer-column > nav .cd-nav-arrow { display: block; width: var(--cd-space-3); height: var(--cd-space-3); flex-shrink: 0; margin-inline-start: auto; color: var(--cd-color-muted); }
	.cd-footer-column > nav .cd-nav-link:is(:hover, :focus-visible) { background: var(--cd-surface-raised); box-shadow: var(--cd-shadow-raised-soft); }
	.cd-footer-column > nav .cd-nav-link:active { background: var(--cd-surface-inset); box-shadow: var(--cd-shadow-pressed); }
	.cd-footer-bottom { flex-direction: column; align-items: flex-start; gap: var(--cd-space-1); margin-top: var(--cd-space-4); }
	.cd-footer-bottom p { margin-bottom: var(--cd-space-2); }
	/* body already reserves --cd-mobile-nav-height, including the bottom safe area.
	 * Keep only a breathing gap here, rather than reserving the dock twice. */
	.cd-has-mobile-nav .cd-site-footer { padding-bottom: var(--cd-space-4); }
	.cd-site-footer .cd-footer-visibility-desktop { display: none; }
}
@media (min-width: 64.001rem) { .cd-site-footer .cd-footer-visibility-mobile { display: none; } }
@media (prefers-reduced-motion: reduce) { .cd-footer-toggle svg { transition: none; } }

/* Compact legal information shares the existing footer-bottom typography. */
.cd-footer-legal-links { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--cd-space-4); min-width: 0; }
.cd-footer-bottom .cd-footer-identity { flex-basis: 100%; margin: 0; overflow-wrap: anywhere; }
@media (max-width: 40rem) {
 .cd-footer-legal-links { flex-direction: column; align-items: flex-start; }
 .cd-footer-bottom .cd-footer-identity { margin-block-start: var(--cd-space-2); }
}
