Full header redesign: brand-navy bar, 4px purple accent strip, always-visible logo on mobile, high-contrast nav states, dark-mode as brand constant, and integrated login header. Replaces the current white bg-surface header that leaks the semantic surface color into what should be a brand-constant element.
bg-surface → fixed bg-brand-navy (#012851) — not theme-awarebackground: #B4B9FFdark:bg-surface override removed from header — stays navyisAuthPage guard changed — shows logo-only header, not nullAppNav component structure — only CSS changessticky top-0 z-50)isAuthPage derived value — still used, just different outputbg-surface (white) — not brand. Every other archival app in this family uses a dark branded header.rgba(180,185,255,0.15) on white = contrast ~1.08:1. Completely invisible. WCAG AA minimum is 3:1 for UI components.#1a1a1a.dark: variant. Page content behind it switches; the header stays #012851.
dark:bg-surface from header elementbg-brand-navy as a non-dark-variant classcolor 150ms ease.+layout.svelte, the {#if !isAuthPage} guard currently hides the entire header. Replace with a conditional that renders a login variant of the header (logo + lang switcher, no nav links) when isAuthPage is true. Move the LanguageSwitcher import into the header for the auth variant. Remove the floating LanguageSwitcher from /login/+page.svelte.
bg-surface with bg-[#012851] (or add a bg-brand-navy utility to layout.css)border-b border-line-2 from header — the accent strip replaces the visual separator<div class="h-1 bg-[#B4B9FF]"> before the nav bar in +layout.sveltetext-ink + bg-nav-active with opacity-based white utilities: text-white/55 inactive, hover:text-white/85, text-white border-b-2 border-[#A1DCD8] activebg-brand-navy text-white → bg-[#A1DCD8] text-[#012851]border-2 border-[#012851] to badge element<header> element, ensure there is NO dark: variant overriding the background+layout.svelte: split the {#if !isAuthPage} guard into two branches — full header (authed) vs. login header (logo + lang only)AppNav.svelte: ensure logo is always rendered, not hidden on mobile via hidden sm:flex or similarAppNav.svelte: hamburger button — icon color from dark to text-white/85AppNav.svelte: active link class — remove bg-nav-active, add bottom border in mintUserMenu.svelte: avatar background and text colorThemeToggle.svelte: icon fill/stroke → text-white/70NotificationBell.svelte: icon color → text-white/75/login/+page.svelte: remove standalone <LanguageSwitcher> — it moves to the layout headerlayout.css:--header-bg: #012851;--header-accent: #B4B9FF;--header-nav-active: #A1DCD8;@media (prefers-color-scheme: dark) block — they are brand constantsbrand-navy: #012851brand-purple: #B4B9FFbrand-mint: #A1DCD8@theme block in layout.css