diff --git a/static/images/portfolio/freelancing/pawel-czerwinski-mrCMyoadfBM-unsplash.jpg b/assets/images/portfolio/freelancing/pawel-czerwinski-mrCMyoadfBM-unsplash.jpg
similarity index 100%
rename from static/images/portfolio/freelancing/pawel-czerwinski-mrCMyoadfBM-unsplash.jpg
rename to assets/images/portfolio/freelancing/pawel-czerwinski-mrCMyoadfBM-unsplash.jpg
diff --git a/static/images/portfolio/freelancing/spenser-sembrat-esoj35vCKS8-unsplash.jpg b/assets/images/portfolio/freelancing/spenser-sembrat-esoj35vCKS8-unsplash.jpg
similarity index 100%
rename from static/images/portfolio/freelancing/spenser-sembrat-esoj35vCKS8-unsplash.jpg
rename to assets/images/portfolio/freelancing/spenser-sembrat-esoj35vCKS8-unsplash.jpg
diff --git a/static/images/portfolio/nature/helenium-8985687_1280.jpg b/assets/images/portfolio/nature/helenium-8985687_1280.jpg
similarity index 100%
rename from static/images/portfolio/nature/helenium-8985687_1280.jpg
rename to assets/images/portfolio/nature/helenium-8985687_1280.jpg
diff --git a/static/images/portfolio/nature/karsten-winegeart-AW76trwVU08-unsplash.jpg b/assets/images/portfolio/nature/karsten-winegeart-AW76trwVU08-unsplash.jpg
similarity index 100%
rename from static/images/portfolio/nature/karsten-winegeart-AW76trwVU08-unsplash.jpg
rename to assets/images/portfolio/nature/karsten-winegeart-AW76trwVU08-unsplash.jpg
diff --git a/static/images/portfolio/nature/nataliya-melnychuk-V5s-XShdujI-unsplash.jpg b/assets/images/portfolio/nature/nataliya-melnychuk-V5s-XShdujI-unsplash.jpg
similarity index 100%
rename from static/images/portfolio/nature/nataliya-melnychuk-V5s-XShdujI-unsplash.jpg
rename to assets/images/portfolio/nature/nataliya-melnychuk-V5s-XShdujI-unsplash.jpg
diff --git a/static/images/portfolio/nature/plums-8932336_1280.jpg b/assets/images/portfolio/nature/plums-8932336_1280.jpg
similarity index 100%
rename from static/images/portfolio/nature/plums-8932336_1280.jpg
rename to assets/images/portfolio/nature/plums-8932336_1280.jpg
diff --git a/static/images/portfolio/test-category/street-food-9587641_1280.png b/assets/images/portfolio/test-category/street-food-9587641_1280.png
similarity index 100%
rename from static/images/portfolio/test-category/street-food-9587641_1280.png
rename to assets/images/portfolio/test-category/street-food-9587641_1280.png
diff --git a/static/images/portfolio/test-category/vadim-sadovski-rvkk2qqfE4M-unsplash.jpg b/assets/images/portfolio/test-category/vadim-sadovski-rvkk2qqfE4M-unsplash.jpg
similarity index 100%
rename from static/images/portfolio/test-category/vadim-sadovski-rvkk2qqfE4M-unsplash.jpg
rename to assets/images/portfolio/test-category/vadim-sadovski-rvkk2qqfE4M-unsplash.jpg
diff --git a/static/images/profile.png b/assets/images/profile.png
similarity index 100%
rename from static/images/profile.png
rename to assets/images/profile.png
diff --git a/static/img/logo.svg b/assets/img/logo.svg
similarity index 100%
rename from static/img/logo.svg
rename to assets/img/logo.svg
diff --git a/assets/js/portfolio-page.js b/assets/js/portfolio-page.js
new file mode 100644
index 0000000..861858c
--- /dev/null
+++ b/assets/js/portfolio-page.js
@@ -0,0 +1,173 @@
+// Portfolio page filters / masonry grid renderer.
+// Extracted from inline
+ {{/* Bundle portfolio JS via Hugo Pipes (js.Build → minify → fingerprint, deferred). */}}
+ {{ $portfolio := resources.Get "js/portfolio.js" | js.Build (dict "minify" true) | fingerprint }}
+
-
+ {{ $portfolioPage := resources.Get "js/portfolio-page.js" | js.Build (dict "minify" true) | fingerprint }}
+
{{ end }}
diff --git a/layouts/portfolio/single.json b/layouts/portfolio/single.json
index 8c07391..b5950c4 100644
--- a/layouts/portfolio/single.json
+++ b/layouts/portfolio/single.json
@@ -4,7 +4,7 @@
"portfolio_metadata" (dict
"total_images" 0
"supported_formats" (slice)
- "generated_at" (now.Format "2006-01-02T15:04:05Z07:00")
+ "generated_at" (time.Format "2006-01-02T15:04:05Z07:00" now)
"hugo_version" hugo.Version
"pkb_schema_version" "1.0.0"
"category_list" (slice)
@@ -121,7 +121,7 @@
"portfolio_metadata" (dict
"total_images" (len $portfolioImages)
"supported_formats" $supportedFormats
- "generated_at" (now.Format "2006-01-02T15:04:05Z07:00")
+ "generated_at" (time.Format "2006-01-02T15:04:05Z07:00" now)
"hugo_version" hugo.Version
"pkb_schema_version" "1.0.0"
"category_list" $categoryList
diff --git a/static/netlify.toml b/static/netlify.toml
deleted file mode 100644
index e69de29..0000000