diff --git a/frontend/src/components/LegalPage.vue b/frontend/src/components/LegalPage.vue
new file mode 100644
index 0000000..090a51d
--- /dev/null
+++ b/frontend/src/components/LegalPage.vue
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+ ROA Space
+ Rezervări de spații
+
+
+
+
+
+
+
+
+ {{ themeLabel }}
+
+
Autentificare
+
Creează cont gratuit
+
+
+
+
+
+
+ {{ title }}
+ {{ subtitle }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/composables/useLandingTheme.ts b/frontend/src/composables/useLandingTheme.ts
new file mode 100644
index 0000000..3922764
--- /dev/null
+++ b/frontend/src/composables/useLandingTheme.ts
@@ -0,0 +1,43 @@
+import { ref, computed } from 'vue'
+
+/**
+ * Theme selector for the public pages (landing + legal/contact).
+ * Same 8 themes and cycle order as the ROA app / autopass landing.
+ * Persisted under its own key so it doesn't clash with the in-app theme.
+ */
+const THEMES: [string, string][] = [
+ ['light', 'Light'],
+ ['dark', 'Dark'],
+ ['petrol', 'Petrol'],
+ ['grafit', 'Grafit'],
+ ['cobalt', 'Cobalt'],
+ ['cupru', 'Cupru'],
+ ['hartie', 'Hârtie'],
+ ['auto', 'Auto']
+]
+const THEME_KEY = 'roa-landing-theme'
+const VALID = new Set(THEMES.map((t) => t[0]))
+
+function resolve(id: string): string {
+ if (id === 'auto') {
+ return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'
+ }
+ return id
+}
+
+// Module-level singleton so every public page shares the same selection.
+const stored = localStorage.getItem(THEME_KEY)
+const themeId = ref(stored && VALID.has(stored) ? stored : 'grafit')
+
+export function useLandingTheme() {
+ const theme = computed(() => resolve(themeId.value))
+ const themeLabel = computed(() => THEMES.find((t) => t[0] === themeId.value)?.[1] ?? 'Grafit')
+
+ function cycleTheme() {
+ const idx = THEMES.findIndex((t) => t[0] === themeId.value)
+ themeId.value = THEMES[(idx + 1) % THEMES.length][0]
+ localStorage.setItem(THEME_KEY, themeId.value)
+ }
+
+ return { themeId, theme, themeLabel, cycleTheme }
+}
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
index 1b3f188..bd83962 100644
--- a/frontend/src/router/index.ts
+++ b/frontend/src/router/index.ts
@@ -12,6 +12,24 @@ const router = createRouter({
component: () => import('@/views/Landing.vue'),
meta: { requiresAuth: false, fullBleed: true }
},
+ {
+ path: '/termeni',
+ name: 'Termeni',
+ component: () => import('@/views/Termeni.vue'),
+ meta: { requiresAuth: false, fullBleed: true }
+ },
+ {
+ path: '/confidentialitate',
+ name: 'Confidentialitate',
+ component: () => import('@/views/Confidentialitate.vue'),
+ meta: { requiresAuth: false, fullBleed: true }
+ },
+ {
+ path: '/contact',
+ name: 'Contact',
+ component: () => import('@/views/Contact.vue'),
+ meta: { requiresAuth: false, fullBleed: true }
+ },
{
path: '/login',
name: 'Login',
diff --git a/frontend/src/views/Confidentialitate.vue b/frontend/src/views/Confidentialitate.vue
new file mode 100644
index 0000000..d95d1bd
--- /dev/null
+++ b/frontend/src/views/Confidentialitate.vue
@@ -0,0 +1,76 @@
+
+
+ 1. Cine prelucrează datele
+
+ Operatorul datelor este ROMFAST , furnizorul serviciului ROA Space.
+ Ne poți contacta oricând la contact@romfast.ro .
+
+
+ 2. Ce date prelucrăm și de ce
+
+ Date Scop Temei
+
+
+ Date de cont: nume, email, parolă (stocată ca hash)
+ Crearea și administrarea contului
+ Executarea contractului
+
+
+ Rezervări: spațiu, interval orar, titlu/descriere
+ Gestionarea rezervărilor și evitarea suprapunerilor
+ Executarea contractului
+
+
+ Rezervări ca oaspete: nume și email introduse la rezervare
+ Identificarea cererii și confirmarea rezervării
+ Interes legitim / executarea contractului
+
+
+ Jurnal tehnic (autentificări, acțiuni administrative)
+ Securitate, suport, dovada acțiunilor
+ Interes legitim
+
+
+
+ Nu colectăm date suplimentare față de cele necesare funcționării rezervărilor și nu folosim datele în scop de marketing.
+
+ 3. Cui le transmitem
+
+ Dacă activezi sincronizarea cu Google Calendar , evenimentele rezervărilor tale
+ sunt transmise contului tău Google, la cererea ta. În rest nu vindem și nu cedăm datele către alte părți.
+
+
+ 4. Cât le păstrăm
+
+ Datele de cont se păstrează cât timp contul este activ.
+ Poți șterge rezervările din aplicație; le poți solicita ștergerea completă oricând.
+ La ștergerea contului, datele asociate sunt eliminate, cu excepția celor cerute de lege.
+
+
+ 5. Cum le protejăm
+
+ Parolele se stochează doar ca hash, niciodată în clar.
+ Accesul la date este separat pe roluri și pe proprietăți: nu vezi datele la care nu ai drept.
+ Conexiunile către serviciu sunt criptate (HTTPS).
+
+
+ 6. Drepturile tale
+
+ Conform GDPR ai dreptul de acces, rectificare, ștergere, restricționare, portabilitate și opoziție,
+ precum și dreptul de a depune o plângere la ANSPDCP
+ (dataprotection.ro ).
+ Pentru exercitarea drepturilor scrie-ne la contact@romfast.ro —
+ răspundem în cel mult 30 de zile.
+
+
+ 7. Cookies
+
+ Folosim doar cookie-uri și stocare locală strict necesare (sesiunea de autentificare și preferințe
+ precum tema aleasă). Nu folosim cookie-uri de tracking sau de marketing.
+
+
+
+
+
diff --git a/frontend/src/views/Contact.vue b/frontend/src/views/Contact.vue
new file mode 100644
index 0000000..6fef3f9
--- /dev/null
+++ b/frontend/src/views/Contact.vue
@@ -0,0 +1,30 @@
+
+
+
+ ROA Space este un serviciu operat de ROMFAST , din Constanța, din 1991.
+ Scrie-ne și îți răspundem cât putem de repede.
+
+
+ Email
+ contact@romfast.ro — pentru suport, întrebări și solicitări GDPR.
+
+ Web
+ romfast.ro — despre ROMFAST și celelalte servicii.
+
+ Ai deja cont?
+
+ Poți intra direct în aplicație la Autentificare
+ sau îți creezi unul gratuit la Creează cont .
+
+
+ Documente
+
+ Termeni și condiții ·
+ Confidențialitate / GDPR
+
+
+
+
+
diff --git a/frontend/src/views/Landing.vue b/frontend/src/views/Landing.vue
index bd2e680..3467f26 100644
--- a/frontend/src/views/Landing.vue
+++ b/frontend/src/views/Landing.vue
@@ -172,9 +172,9 @@
@@ -185,40 +185,11 @@