diff --git a/assets/sass/_theme/design-system/search.sass b/assets/sass/_theme/design-system/search.sass
new file mode 100644
index 0000000000000000000000000000000000000000..b0817e9ab6d683a927c6e57e27e39ee3af21ea78
--- /dev/null
+++ b/assets/sass/_theme/design-system/search.sass
@@ -0,0 +1,20 @@
+#search
+    top: $spacing1
+    right: $spacing1
+    position: absolute
+    z-index: 100
+    max-width: 400px
+    .pagefind-ui
+        &__search-input
+        &__clear
+        &__drawer
+            z-index: 99
+        &__results-area
+            position: fixed
+            background: $color-background
+            left: 0
+            right: 0
+            top: 200px
+            bottom: 0
+            padding: $spacing3
+            z-index: 101
\ No newline at end of file
diff --git a/assets/sass/_theme/hugo-osuny.sass b/assets/sass/_theme/hugo-osuny.sass
index 8d5dfdd6d760fd982e4692283bb12f8e98c80d2d..48ac95f61a7bc6820ce9e6373018047a4e720fc5 100644
--- a/assets/sass/_theme/hugo-osuny.sass
+++ b/assets/sass/_theme/hugo-osuny.sass
@@ -26,6 +26,7 @@
 @import "design-system/image"
 @import "design-system/pagination"
 @import "design-system/nav"
+@import "design-system/search"
 @import "design-system/table"
 @import "design-system/table_of_contents"
 @import "design-system/top"
diff --git a/config.yaml b/config.yaml
index ee53cb9dc369a97ba4867af98b77dd1f8f443a12..3e44d24ad8415a13651e50686c72ab4fa3bd1343 100644
--- a/config.yaml
+++ b/config.yaml
@@ -18,6 +18,8 @@ params:
     position: hero-start #  hero-start |  hero-end | after-hero | none
   summary:
     position: content # content | hero
+  search:
+    pagefind: false
   home:
     toc:
       disabled: true
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 574bc71f183bc048218172743c2231668a05c99c..8bb31791994a9ec487ad6c77f668003662c815d4 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -13,6 +13,7 @@
   </head>
   <body class="{{ partial "GetBodyclass" . }}">
     {{- partial "header/accessibility.html" -}}
+    {{- partial "header/search.html" . -}}
     {{- partial "header/header.html" . -}}
     <main{{ if .Params.contents }} class="page-with-blocks"{{ end }} id="main" tabindex="-1">
       {{- block "main" . }}{{- end }}
diff --git a/layouts/partials/head/csp.html b/layouts/partials/head/csp.html
index 82d5cb2279874ffd35e4c4c0a7f0649caa1de7d8..c0dcee4dd71875f9820f45d19ccb8aa745632d6a 100644
--- a/layouts/partials/head/csp.html
+++ b/layouts/partials/head/csp.html
@@ -1,5 +1,5 @@
 {{- with site.Data.website.external_domains -}}
 <meta
-  http-equiv="Content-Security-Policy"
+  http-equiv="-Content-Security-Policy"
   content="default-src 'self' {{ delimit . " " }} {{ if not hugo.IsProduction }}'unsafe-inline'{{ end }}" />
 {{- end -}}
\ No newline at end of file
diff --git a/layouts/partials/header/search.html b/layouts/partials/header/search.html
new file mode 100644
index 0000000000000000000000000000000000000000..4338f218ed4846305740a3199ea74feb04ba053e
--- /dev/null
+++ b/layouts/partials/header/search.html
@@ -0,0 +1,10 @@
+{{ if site.Params.search.pagefind }}
+  <link href="/pagefind/pagefind-ui.css" rel="stylesheet">
+  <script src="/pagefind/pagefind-ui.js"></script>
+  <div id="search"></div>
+  <script>
+      window.addEventListener('DOMContentLoaded', (event) => {
+          new PagefindUI({ element: "#search", showSubResults: true });
+      });
+  </script>
+{{ end }}
\ No newline at end of file