diff --git a/src/components/ThemePreferenceDialog.astro b/src/components/ThemePreferenceDialog.astro
new file mode 100644
index 0000000..11366ae
--- /dev/null
+++ b/src/components/ThemePreferenceDialog.astro
@@ -0,0 +1,252 @@
+---
+// First-visit theme preference dialog
+// Shows only to true first-time visitors
+// Two-step flow: theme selection → remember preference
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Choose Theme
+
+
+ Select your preferred visual mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Remember This?
+
+
+ Save your preference for future visits?
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
index c13848c..7aa6a79 100644
--- a/src/layouts/BaseLayout.astro
+++ b/src/layouts/BaseLayout.astro
@@ -5,6 +5,7 @@ import Footer from '../components/Footer.astro';
import GridOverlay from '../components/GridOverlay.astro';
import Navigation from '../components/Navigation.astro';
import CustomCursor from '../components/CustomCursor';
+import ThemePreferenceDialog from '../components/ThemePreferenceDialog.astro';
import { HTML_MARKER, SITE_TITLE, SITE_DESCRIPTION, SOCIAL_LINKS } from '../consts';
interface Props {
@@ -69,8 +70,13 @@ const personSchema = {
@@ -90,6 +96,9 @@ const personSchema = {
+
+
+