diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3bdd52e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+node_modules/
+dist/
+.DS_Store
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6faa4bb
--- /dev/null
+++ b/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ BitePlan
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ae0b0d3
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "biteplan",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "vue": "^3.4.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.0.0",
+ "vite": "^5.0.0"
+ }
+}
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..fe5bae3
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import './style.css'
+
+createApp(App).mount('#app')
diff --git a/src/style.css b/src/style.css
new file mode 100644
index 0000000..b67d5c8
--- /dev/null
+++ b/src/style.css
@@ -0,0 +1,74 @@
+*, *::before, *::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+:root {
+ --color-bg: #f5f5f5;
+ --color-surface: #ffffff;
+ --color-primary: #2d6a4f;
+ --color-primary-light: #52b788;
+ --color-text: #1a1a1a;
+ --color-muted: #6b7280;
+ --color-border: #e5e7eb;
+ --color-danger: #dc2626;
+ --radius: 8px;
+ --nav-height: 60px;
+}
+
+html, body {
+ height: 100%;
+ font-family: system-ui, -apple-system, sans-serif;
+ font-size: 16px;
+ background: var(--color-bg);
+ color: var(--color-text);
+}
+
+#app {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ max-width: 480px;
+ margin: 0 auto;
+ background: var(--color-bg);
+}
+
+.page {
+ flex: 1;
+ overflow-y: auto;
+ padding: 16px;
+ padding-bottom: calc(var(--nav-height) + 16px);
+}
+
+.page-title {
+ font-size: 1.25rem;
+ font-weight: 700;
+ margin-bottom: 16px;
+}
+
+button {
+ font-size: 1rem;
+ cursor: pointer;
+ border: none;
+ border-radius: var(--radius);
+ min-height: 44px;
+ padding: 0 16px;
+}
+
+input[type="text"],
+input[type="number"] {
+ font-size: 1rem;
+ border: 1px solid var(--color-border);
+ border-radius: var(--radius);
+ padding: 10px 12px;
+ min-height: 44px;
+ width: 100%;
+ background: var(--color-surface);
+ color: var(--color-text);
+}
+
+input:focus {
+ outline: 2px solid var(--color-primary);
+ outline-offset: 1px;
+}
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..2e3d257
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,6 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+export default defineConfig({
+ plugins: [vue()]
+})