diff --git a/frontend/src/App.css b/frontend/src/App.css
index 3ca4eb4..6b2add8 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -1042,6 +1042,53 @@ a.app-footer__repo:hover {
border-radius: 0.625rem;
}
+/* ── Nav search variant ───────────────────────────────────────────────────── */
+
+.search-container--nav {
+ position: relative;
+ max-width: 16rem;
+ margin: 0;
+}
+
+.search-form--nav {
+ gap: 0;
+ position: relative;
+}
+
+.search-input--nav {
+ padding: 0.375rem 2.75rem 0.375rem 0.75rem;
+ font-size: 0.8125rem;
+ border-radius: 0.375rem;
+ background: var(--color-bg-input);
+ border-color: var(--color-border);
+}
+
+.search-input--nav::placeholder {
+ color: var(--color-text-muted);
+ opacity: 0.7;
+}
+
+.search-nav__shortcut {
+ position: absolute;
+ right: 0.5rem;
+ top: 50%;
+ transform: translateY(-50%);
+ font-size: 0.625rem;
+ font-family: inherit;
+ color: var(--color-text-muted);
+ background: var(--color-bg-page);
+ border: 1px solid var(--color-border);
+ border-radius: 0.25rem;
+ padding: 0.0625rem 0.3125rem;
+ line-height: 1.4;
+ pointer-events: none;
+}
+
+.search-container--nav .typeahead-dropdown {
+ z-index: 200;
+ min-width: 20rem;
+}
+
.btn--search {
background: var(--color-btn-search-bg);
color: var(--color-btn-search-text);
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 2dd144e..cf74b5b 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,4 +1,4 @@
-import { Link, Navigate, Route, Routes } from "react-router-dom";
+import { Link, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom";
import Home from "./pages/Home";
import SearchResults from "./pages/SearchResults";
import TechniquePage from "./pages/TechniquePage";
@@ -11,14 +11,27 @@ import AdminPipeline from "./pages/AdminPipeline";
import About from "./pages/About";
import AdminDropdown from "./components/AdminDropdown";
import AppFooter from "./components/AppFooter";
+import SearchAutocomplete from "./components/SearchAutocomplete";
export default function App() {
+ const location = useLocation();
+ const navigate = useNavigate();
+ const showNavSearch = location.pathname !== "/";
+
return (
Chrysopedia
+ {showNavSearch && (
+ navigate(`/search?q=${encodeURIComponent(q)}`)}
+ />
+ )}