diff --git a/frontend/src/shared/design-system/tokens.css b/frontend/src/shared/design-system/tokens.css
index 21a63565..e13fc403 100644
--- a/frontend/src/shared/design-system/tokens.css
+++ b/frontend/src/shared/design-system/tokens.css
@@ -242,7 +242,7 @@
/* ========================================================================== */
@media (prefers-color-scheme: dark) {
- :root {
+ :root:not([data-theme="light"]) {
/* Semantic Colors (Dark Mode) */
--color-text-primary: #ffffff;
--color-text-secondary: var(--color-neutral-300);
@@ -265,6 +265,29 @@
}
}
+/* Explicit dark mode via data attribute */
+:root[data-theme="dark"] {
+ /* Semantic Colors (Dark Mode) */
+ --color-text-primary: #ffffff;
+ --color-text-secondary: var(--color-neutral-300);
+ --color-text-tertiary: var(--color-neutral-500);
+ --color-text-inverse: var(--color-neutral-900);
+
+ --color-background-primary: var(--color-neutral-900);
+ --color-background-secondary: var(--color-neutral-800);
+ --color-background-tertiary: var(--color-neutral-700);
+ --color-background-hover: var(--color-neutral-700);
+ --color-background-active: rgba(59, 130, 246, 0.2);
+
+ --color-border-primary: var(--color-neutral-700);
+ --color-border-secondary: var(--color-neutral-600);
+
+ --color-input-background: var(--color-neutral-800);
+ --color-input-border: var(--color-neutral-700);
+ --color-input-hover: var(--color-neutral-600);
+ --color-input-focus: var(--color-primary-400);
+}
+
/* ========================================================================== */
/* BASE STYLES */
/* ========================================================================== */
diff --git a/frontend/src/shared/shell/AppLayout.vue b/frontend/src/shared/shell/AppLayout.vue
new file mode 100644
index 00000000..e83124af
--- /dev/null
+++ b/frontend/src/shared/shell/AppLayout.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/shared/shell/Footer.vue b/frontend/src/shared/shell/Footer.vue
new file mode 100644
index 00000000..110e7227
--- /dev/null
+++ b/frontend/src/shared/shell/Footer.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/shared/shell/Header.vue b/frontend/src/shared/shell/Header.vue
new file mode 100644
index 00000000..71c775d4
--- /dev/null
+++ b/frontend/src/shared/shell/Header.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
diff --git a/frontend/src/shared/shell/Sidebar.vue b/frontend/src/shared/shell/Sidebar.vue
new file mode 100644
index 00000000..10452e23
--- /dev/null
+++ b/frontend/src/shared/shell/Sidebar.vue
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+