/* =====================================================================
   footer-shared.css  -  the home page's footer + black text selection,
   for every other page. Load it LAST (after the page's own CSS).
   Generated from style.css + new-sections.css so it matches index.html.
   ===================================================================== */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap");

/* self-contained: works even if the page's own CSS doesn't define these */
.footer, .footer *, .footer *::before, .footer *::after { box-sizing: border-box; }
.footer {
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --font-display: 'Plus Jakarta Sans', 'Inter', sans-serif;
    --transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    --container-max: 1200px;
    font-family: var(--font-sans);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    display: block;
    width: auto;
    position: relative;
    clear: both;
}
.footer .container { max-width: var(--container-max); margin: 0 auto; padding: 0 24px; }
.footer h4, .footer p, .footer ul, .footer hr { margin-top: 0; }
.footer p { margin-bottom: 0; }
.footer ul { padding: 0; list-style: none; }
.footer img, .footer svg { max-width: none; }

/* ===========================
   Footer
   =========================== */
.footer {
    padding: 64px 0 32px;
    border-top: 1px solid var(--border-color);
}

.footer-grid {
    display: flex;
    justify-content: space-between;
    gap: 48px;
    margin-bottom: 48px;
}

.footer-grid--simplified {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 40px 56px;
}

.footer-brand-lockup {
    text-decoration: none;
    color: inherit;
    display: block;
    flex-shrink: 0;
}

.footer-brand-lockup-row {
    display: flex;
    align-items: center;
    gap: 12px;
}

.footer-brand-logo-icon {
    display: flex;
    flex-shrink: 0;
}

.footer-brand-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    line-height: 1.2;
}

.footer-brand-name {
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 400;
    letter-spacing: 0.06em;
    color: var(--text-primary);
}

.footer-brand-labs {
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--text-muted);
    letter-spacing: 0.04em;
}

.footer-brand {
    max-width: 280px;
}

.footer-tagline {
    margin-top: 16px;
    font-size: 0.9rem;
    color: var(--text-muted);
    line-height: 1.6;
}

.footer-links-group {
    display: flex;
    gap: 64px;
}

.footer-grid--simplified .footer-links-group {
    margin-left: 40px;
}

@media (max-width: 768px) {
    .footer-grid--simplified .footer-links-group {
        margin-left: 0;
        width: 100%;
        justify-content: space-between;
    }
}

.footer-col {
    display: flex;
    flex-direction: column;
}

.footer-col h4 {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 20px;
}

.footer-col a {
    display: block;
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-bottom: 12px;
    text-decoration: none !important;
    transition: var(--transition-base);
}

.footer-col a:hover {
    color: var(--text-primary);
}

.footer-separator {
    width: calc(100% - 40px);
    margin: 40px auto 20px;
    border: none;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 10px;
}

.footer-bottom > div {
    display: flex;
    align-items: center;
    gap: 20px;
}

.footer-bottom > div > .theme-switch-wrapper {
    order: 2;
}

.footer-bottom-links {
    order: 1;
}

.footer-bottom p {
    font-size: 0.8rem;
    color: var(--text-muted);
    display: flex;
    align-items: center;
    gap: 12px;
}

.soc2 {
    color: #a1a1aa;
    font-weight: 500;
}

.footer-bottom-links {
    display: flex;
    gap: 8px;
    align-items: center;
}

.footer-btn {
    background: transparent;
    border: none;
    color: #a1a1aa;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 6px 8px;
    border-radius: 8px;
    transition: all 0.2s ease;
}

.footer-btn:hover {
    color: var(--text-primary);
    background: rgba(255, 255, 255, 0.08);
}

:root.light-theme .footer-btn:hover {
    color: #000;
    background: rgba(0, 0, 0, 0.05);
}

.footer-brand-text {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--text-primary);
    letter-spacing: -0.02em;
}

@media (max-width: 768px) {
    .footer-grid {
        flex-direction: column;
        gap: 36px;
    }

    .footer-links-group {
        gap: 32px;
        flex-wrap: wrap;
    }

    .footer-bottom {
        flex-direction: row;
        gap: 0;
        text-align: center;
        justify-content: space-between;
        align-items: center;
        padding: 0 16px;
        position: relative;
    }

    .footer-bottom > p {
        order: 1;
    }

    .footer-bottom > div {
        order: 3;
    }

    .footer-bottom-links {
        order: 2;
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        top: -42px;
    }
}

/* ---- black floating footer + link underline (from new-sections.css) ---- */
/* footer is the only dark part of the site */
.footer{
  --bg-primary:#000;--text-primary:#fff;--text-secondary:#d4d4d8;--text-muted:#a1a1aa;
  --border-color:rgba(255,255,255,.08);--border-hover:rgba(255,255,255,.3);
  background:#050506;color:#fff;border-top:0;
  border-radius:36px 36px 0 0;margin-top:-1px;padding-top:72px;
  box-shadow:0 -24px 60px rgba(0,0,0,.08);
}
.light-theme .footer .logo-white{display:block!important}
.light-theme .footer .logo-black{display:none!important}
.light-theme .footer .footer-btn{color:#a1a1aa}
.light-theme .footer .footer-btn:hover{color:#fff;background:rgba(255,255,255,.1)}
.footer-separator{border-top-color:rgba(255,255,255,.1)}
.footer a,.footer .footer-btn{transition:color .35s ease,background .35s ease}

.footer{margin:0 clamp(12px,2vw,28px) clamp(12px,2vw,28px);border-radius:36px;padding-bottom:36px}

.footer-col a{position:relative;width:fit-content;padding-bottom:2px}
.footer-col a::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;border-radius:2px;transform:scaleX(0);transform-origin:left center}
/* the line always finishes its sweep (JS adds these classes) so a quick hover/unhover never cuts it short */
.footer-col a.ul-in::after{transform-origin:left center;animation:ulIn .18s cubic-bezier(.5,0,.2,1) forwards}
.footer-col a.ul-show::after{transform:scaleX(1);transform-origin:left center}
.footer-col a.ul-out::after{transform:scaleX(1);transform-origin:right center;animation:ulOut .18s cubic-bezier(.5,0,.2,1) forwards}
@keyframes ulIn{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes ulOut{from{transform:scaleX(1)}to{transform:scaleX(0)}}

.footer-col a{margin-bottom:8px}
.footer-col h4{margin-bottom:16px}

/* ===== v14: text selection = black box, white text ===== */
::selection,*::selection{background:#000;color:#fff;-webkit-text-fill-color:#fff;text-shadow:none}
::-moz-selection{background:#000;color:#fff}
/* footer is black, so flip it there or the selection would be invisible */
.footer ::selection,.footer::selection{background:#fff;color:#000;-webkit-text-fill-color:#000}
.footer ::-moz-selection{background:#fff;color:#000}