/* ========================================================================= nav.css — the floating glass island nav (shared across all pages) A detached frosted pill that drifts at the top, blurs the sky behind it. On scroll it gently shrinks + lifts. Mobile collapses to a compact pill. ========================================================================= */ .site-nav { position: fixed; top: clamp(0.8rem, 2vw, 1.4rem); left: 50%; transform: translateX(-50%); z-index: 40; /* below toast(50), above content */ display: flex; align-items: center; gap: 0.4rem; padding: 0.45rem 0.5rem 0.45rem 1.1rem; background: var(--panel); backdrop-filter: blur(18px) saturate(1.2); -webkit-backdrop-filter: blur(18px) saturate(1.2); border: 1px solid var(--panel-border); border-radius: var(--radius-pill); box-shadow: 0 10px 30px rgba(157, 170, 242, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.5); transition: transform var(--dur) var(--ease-soft), box-shadow var(--dur) var(--ease-soft), padding var(--dur) var(--ease-soft); max-width: calc(100vw - 1.6rem); } /* the scroll-shrunk state (toggled by JS on scroll past 40px) */ .site-nav.is-scrolled { transform: translateX(-50%) translateY(-2px) scale(0.97); box-shadow: 0 14px 38px rgba(157, 170, 242, 0.26), inset 0 1px 0 rgba(255, 255, 255, 0.5); } /* brand wordmark inside the pill — purely visual, not a link (Home in the link group is the real home button, so the logo doesn't duplicate that target) */ .site-nav .nav-brand { display: inline-flex; align-items: center; gap: 0.5em; font-family: var(--font-display); font-weight: 700; font-size: 1.02rem; color: var(--ink); letter-spacing: -0.01em; white-space: nowrap; user-select: none; cursor: default; } .site-nav .nav-brand .nav-logo { height: 34px; width: auto; flex-shrink: 0; display: block; /* transparent logo sits directly on the sky — no backing tile */ filter: drop-shadow(0 2px 6px rgba(61, 44, 78, 0.18)); transition: transform var(--dur-fast) var(--ease-soft); } .site-nav .nav-brand:hover .nav-logo { transform: rotate(-3deg); } .site-nav .nav-brand-text { display: flex; flex-direction: column; line-height: 1.05; } .site-nav .nav-brand .brand-name { font-family: var(--font-display); font-weight: 700; font-size: 1.02rem; color: var(--ink); letter-spacing: -0.01em; } .site-nav .nav-brand .brand-sub { font-family: var(--font-body); font-weight: 600; font-size: 0.62rem; letter-spacing: 0.04em; color: var(--rose-deep); opacity: 0.8; } @keyframes dot-pulse { 0%, 100% { box-shadow: 0 0 0 3px rgba(255, 143, 171, 0.22); } 50% { box-shadow: 0 0 0 5px rgba(255, 143, 171, 0.12); } } /* the link group */ .site-nav .nav-links { display: inline-flex; align-items: center; gap: 0.15rem; list-style: none; } .site-nav .nav-links a { display: inline-block; padding: 0.5em 0.95em; border-radius: var(--radius-pill); font-family: var(--font-display); font-weight: 700; font-size: 0.92rem; color: var(--ink-soft); text-decoration: none; transition: color var(--dur-fast) var(--ease-gentle), background var(--dur-fast) var(--ease-gentle); } .site-nav .nav-links a:hover { color: var(--ink); background: rgba(255, 143, 171, 0.12); } .site-nav .nav-links a[aria-current="page"] { color: var(--rose-deep); background: rgba(255, 143, 171, 0.16); } /* primary CTA anchored at the right of the pill */ .site-nav .nav-cta { display: inline-flex; align-items: center; gap: 0.4em; margin-left: 0.3rem; padding: 0.55em 1.1em; border-radius: var(--radius-pill); background: linear-gradient(180deg, #ffa6c0 0%, var(--rose) 55%, var(--rose-deep) 100%); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 0.88rem; text-decoration: none; box-shadow: 0 6px 16px rgba(232, 111, 146, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.5); transition: transform var(--dur-fast) var(--ease-soft), box-shadow var(--dur) var(--ease-soft); white-space: nowrap; } .site-nav .nav-cta:hover { transform: translateY(-1px); box-shadow: 0 10px 22px rgba(232, 111, 146, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.5); } .site-nav .nav-cta:active { transform: translateY(0) scale(0.97); } /* skip-link for keyboard users — visible only on focus */ .skip-link { position: fixed; top: 0.6rem; left: 50%; transform: translateX(-50%) translateY(-150%); z-index: 60; padding: 0.6em 1.2em; border-radius: var(--radius-pill); background: var(--ink); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 0.9rem; text-decoration: none; transition: transform var(--dur) var(--ease-soft); } .skip-link:focus { transform: translateX(-50%) translateY(0); outline: 3px solid var(--rose); outline-offset: 2px; } /* ---- mobile: collapse links, keep brand + cta ---- */ @media (max-width: 640px) { .site-nav { gap: 0.3rem; padding: 0.4rem 0.45rem 0.4rem 0.9rem; } .site-nav .nav-links { display: none; } /* links live in footer on mobile */ .site-nav .nav-brand { font-size: 0.95rem; } .site-nav .nav-cta { font-size: 0.82rem; padding: 0.5em 0.9em; } }