diff --git a/src/lib/assets/vase-illustration.svg b/src/lib/assets/vase-illustration.svg
new file mode 100644
index 0000000..83cef02
--- /dev/null
+++ b/src/lib/assets/vase-illustration.svg
@@ -0,0 +1,28 @@
+
diff --git a/src/lib/components/ui/Artwork/Artwork.svelte b/src/lib/components/ui/Artwork/Artwork.svelte
new file mode 100644
index 0000000..521e03f
--- /dev/null
+++ b/src/lib/components/ui/Artwork/Artwork.svelte
@@ -0,0 +1,19 @@
+
+
+
diff --git a/src/lib/components/ui/Artwork/DescriptionCard.svelte b/src/lib/components/ui/Artwork/DescriptionCard.svelte
new file mode 100644
index 0000000..e45878a
--- /dev/null
+++ b/src/lib/components/ui/Artwork/DescriptionCard.svelte
@@ -0,0 +1,8 @@
+
+
+
+
{title}
+
{description}
+
diff --git a/src/lib/components/ui/Artwork/Vase.svelte b/src/lib/components/ui/Artwork/Vase.svelte
new file mode 100644
index 0000000..4a41340
--- /dev/null
+++ b/src/lib/components/ui/Artwork/Vase.svelte
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/lib/components/ui/Header.svelte b/src/lib/components/ui/Header.svelte
new file mode 100644
index 0000000..de87fe0
--- /dev/null
+++ b/src/lib/components/ui/Header.svelte
@@ -0,0 +1,21 @@
+
+
+
diff --git a/src/lib/components/ui/upload/MoodboardGrid.svelte b/src/lib/components/ui/upload/MoodboardGrid.svelte
new file mode 100644
index 0000000..abb3f3b
--- /dev/null
+++ b/src/lib/components/ui/upload/MoodboardGrid.svelte
@@ -0,0 +1,62 @@
+
+
+
+ {#each tiles as tile (tile.key)}
+
+ {/each}
+
+
+
diff --git a/src/lib/components/ui/upload/SnsFeedUpload.svelte b/src/lib/components/ui/upload/SnsFeedUpload.svelte
new file mode 100644
index 0000000..fa7e3a1
--- /dev/null
+++ b/src/lib/components/ui/upload/SnsFeedUpload.svelte
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ui/upload/UploadTile.svelte b/src/lib/components/ui/upload/UploadTile.svelte
new file mode 100644
index 0000000..71f29ac
--- /dev/null
+++ b/src/lib/components/ui/upload/UploadTile.svelte
@@ -0,0 +1,66 @@
+
+
+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index de75e91..2154f43 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -5,5 +5,10 @@
let { children } = $props();
-
+
+
+
+
+
+
{@render children()}
diff --git a/src/routes/layout.css b/src/routes/layout.css
index d4b5078..9e18c0f 100644
--- a/src/routes/layout.css
+++ b/src/routes/layout.css
@@ -1 +1,17 @@
@import 'tailwindcss';
+
+@theme {
+ /* Typography — Orbit everywhere (set as the default font) */
+ --font-sans: 'Orbit', monospace;
+
+ /* Color tokens */
+ --color-surface: #eeeeee; /* page background, text on dark */
+ --color-ink: #38322f; /* primary text */
+ --color-pill: #1a1a1a; /* active toggle pill */
+ --color-track: #f4f4f4; /* toggle track */
+ --color-muted: #9e9e9e; /* inactive / secondary text */
+ --color-subtle: #7d7d7d; /* accent gray (active step dot, illustration) */
+ --color-placeholder: #d9d9d9; /* placeholder fills, inactive step dots */
+ --color-line: #e5e7eb; /* dividers / light borders */
+ --color-line-strong: #d1d5db; /* card border */
+}
diff --git a/src/routes/upload/+page.svelte b/src/routes/upload/+page.svelte
new file mode 100644
index 0000000..7c3dfb6
--- /dev/null
+++ b/src/routes/upload/+page.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+ {#if mode === 'moodboard'}
+
+ {:else}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+