/* ════════════════════════════════════════════════════════════════
   Solrova canonical footer v2 — "B2 compact" multi-column
   Locked by Chris 2026-06-09 (Design/Header_Footer_Consolidation_2026-06-09/)
   Usage: <link rel="stylesheet" href="/assets/solrova-footer.css">
   Markup contract: footer.sol-footer-v2 > .sfv2-cols (.sfv2-brand + .sfv2-col×2) + .sfv2-bottom
   Per-context disclaimer goes in .sfv2-disclaimer (4 approved texts — do not invent new ones).
   CCPA links: HOMEPAGE ONLY pending Simone/Alex scope confirmation.
   ════════════════════════════════════════════════════════════════ */
.sol-footer-v2 { background: #04060e; border-top: 1px solid rgba(255,255,255,0.06); padding: 14px 32px 12px; position: relative; z-index: 10; font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif; }
.sol-footer-v2 .sfv2-cols { max-width: 1200px; margin: 0 auto; display: flex; gap: 10px 26px; flex-wrap: wrap; align-items: center; }
.sol-footer-v2 .sfv2-brand a { display: inline-block; }
.sol-footer-v2 .sfv2-brand img { height: 18px; display: block; }
.sol-footer-v2 .sfv2-tagline { display: none; }
.sol-footer-v2 .sfv2-col h4 { display: none; }
.sol-footer-v2 .sfv2-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 16px; }
.sol-footer-v2 .sfv2-col li { margin: 0; }
.sol-footer-v2 .sfv2-col li:last-child { margin-bottom: 0; }
.sol-footer-v2 .sfv2-col a { color: #cbd5e1; font-size: 12.5px; text-decoration: none; transition: color .15s; }
.sol-footer-v2 .sfv2-col a:hover { color: #14ABD6; }
.sol-footer-v2 .sfv2-bottom { max-width: 1200px; margin: 10px auto 0; padding-top: 0; border-top: none; display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; align-items: baseline; }
.sol-footer-v2 .sfv2-copy { color: #94a3b8; font-size: 11px; white-space: nowrap; }
.sol-footer-v2 .sfv2-disclaimer { color: #8b97aa; font-size: 11px; line-height: 1.5; text-align: right; max-width: 780px; } /* VA-4 2026-06-13: #6b7280 → #8b97aa for WCAG AA contrast on the dark footer */
@media (max-width: 768px) {
  .sol-footer-v2 { padding: 16px 20px 12px; }
  .sol-footer-v2 .sfv2-cols { gap: 6px 16px; }
  .sol-footer-v2 .sfv2-bottom { flex-direction: column; gap: 6px; }
  .sol-footer-v2 .sfv2-disclaimer { text-align: left; }
}

/* ── KC article header clearance (Visual Audit VA-1, 2026-06-13) ──
   The canonical nav is position:fixed; transparent; 52px tall, but the KC article
   breadcrumb is the first content element at top:0, so they overlap (logo/nav links
   collide with the breadcrumb on every article, desktop + mobile). Offset the
   breadcrumb below the nav. Loaded only by KC pages; the hub/other pages have no
   .breadcrumb, so this rule is inert there. Lives here because footer.css is the one
   stylesheet shared across all 42 article files (the rest of their CSS is inline). */
.breadcrumb { padding-top: 64px !important; }

/* ── KC article nav normalization (Visual Audit VA-6, 2026-06-13) ──
   13 older KC articles never received the "wave-1" nav override, so their nav-inner
   defaults to display:block — the logo and nav links stack and overlap (desktop) and
   the mobile header is broken. This replicates the canonical wave-1 nav layout so
   every KC article header renders identically (logo pinned left, links centered,
   hamburger on mobile).
   SCOPE: body:has(.breadcrumb) = KC article pages ONLY. Verified 2026-06-13 that
   .breadcrumb exists on all 41 articles and on NO other page that loads this
   stylesheet (homepage / OSS / Lab / hub / privacy / terms / 404 / solar-partners),
   so their distinct navs are untouched. The 28 articles that already have the inline
   override see identical values → no change.
   NOTE: lives here only because footer.css is the one stylesheet shared by every KC
   article (their other CSS is inline). Could move to a dedicated kc-fixes.css later. */
body:has(.breadcrumb) nav .nav-inner { display: flex !important; align-items: center !important; justify-content: center !important; gap: 2rem !important; max-width: 1280px; margin: 0 auto; padding: 10px 24px; position: relative; flex-wrap: wrap; }
body:has(.breadcrumb) nav .nav-logo { position: absolute; left: 24px; top: 50%; transform: translateY(-50%); display: inline-flex !important; align-items: center; gap: 0 !important; background: transparent !important; padding: 0 !important; text-decoration: none; }
body:has(.breadcrumb) nav .nav-logo-img { height: 26px; width: auto; display: block; }
body:has(.breadcrumb) nav .nav-links { display: flex; align-items: center; justify-content: center !important; gap: 1.25rem !important; flex-wrap: wrap; }
@media (max-width: 960px) {
  body:has(.breadcrumb) nav .nav-logo { position: static; transform: none; margin-bottom: 0.5rem; }
  body:has(.breadcrumb) nav .nav-inner { flex-direction: column; padding: 12px 16px; }
}
@media (max-width: 768px) {
  body:has(.breadcrumb) nav .nav-links { display: none !important; }
  body:has(.breadcrumb) nav .nav-hamburger { display: inline-flex !important; }
}

/* ── KC article footer order (Visual Audit VA-7, 2026-06-13) ──
   The related-articles "Continue reading" block was auto-appended AFTER the <footer>
   (batch May 7, 2026), so on ~39 articles it renders BELOW the footer. Both the footer
   and the aside are direct <body> children, so reorder them with flexbox to keep the
   footer last. Scoped to KC articles via :has(.breadcrumb): articles without a related
   block simply keep the footer last (no-op); non-KC pages (no breadcrumb) are untouched.
   Verified live: article body width and top spacing unchanged, footer moves below the
   "Continue reading" cards. */
body:has(.breadcrumb) { display: flex; flex-direction: column; }
body:has(.breadcrumb) > footer.sol-footer-v2 { order: 2; }
body:has(.breadcrumb) > aside.kc-related-articles { order: 1; }
