// Component: Header .site-header { padding: 1.25rem 0; position: sticky; top: 0; z-index: 50; background-color: var(--bg-color); border-bottom: 2px solid var(--text-color); } .nav-container { display: flex; justify-content: space-between; align-items: center; } // Right side wrapper (links + controls) .nav-right { display: flex; align-items: center; gap: 1rem; } // Always-visible icon controls .nav-controls { display: flex; align-items: center; gap: 0.5rem; } .search-toggle { background: none; border: none; color: var(--text-color); cursor: pointer; padding: 0.35rem; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: var(--transition-smooth); &:hover { color: var(--accent-color); } } // Hamburger button — hidden on desktop, shown on mobile .nav-toggle { display: none; background: none; border: none; color: var(--text-color); cursor: pointer; padding: 0.25rem; align-items: center; justify-content: center; .close-icon { display: none; } &[aria-expanded='true'] { .hamburger-icon { display: none; } .close-icon { display: block; } } } @media (max-width: 640px) { .nav-toggle { display: flex; } // Hide the site name when the menu is open .nav-container:has(#nav-toggle[aria-expanded='true']) .brand-link { display: none; } // Make nav-right fill the full width so menu items span the container .nav-container:has(#nav-toggle[aria-expanded='true']) .nav-right { width: 100%; } .nav-right { flex-wrap: wrap; justify-content: flex-end; } .nav-links { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 0 !important; width: 100%; order: 10; // push below nav-controls padding: 0; margin-top: 0; border-top: 1px solid transparent; max-height: 0; opacity: 0; overflow: hidden; transition: max-height 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease; &.is-open { padding: 1rem 0; margin-top: 0.5rem; border-top-color: var(--border-color); max-height: 320px; opacity: 1; } .nav-item { width: 100%; padding: 0.75rem 0; font-size: 1rem; border-bottom: 1px solid var(--border-color); &::after { display: none; } } } } // Brand reads like a running header on a printed document — quiet, // small, letter-spaced — not competing with the masthead title below it. .brand-text { font-family: var(--font-mono); font-weight: 600; font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); } .brand-link:hover .brand-text { color: var(--accent-color); } .nav-links { display: flex; align-items: center; gap: 1.75rem; } .nav-item { font-family: var(--font-mono); font-weight: 500; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-color); position: relative; } .nav-item::after { content: ''; position: absolute; width: 100%; height: 2px; bottom: -4px; left: 0; background-color: var(--accent-color); transform: scaleX(0); transform-origin: left; transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .nav-item:hover::after { transform: scaleX(1); } .nav-item.is-active { color: var(--accent-color); &::after { transform: scaleX(1); } }