0€
{{ locale === 'de' ? '/ immer' : '/ forever' }}
+=======
+
+
{{ locale === 'de' ? 'Open‑Source (Self‑host)' : 'Open-source (self-host)' }}
+
+ {{
+ locale === 'de'
+ ? 'Volle Kontrolle über Infrastruktur und Daten. Selbst hosten bleibt immer eine Option.'
+ : 'Full control over infrastructure and data. Self-hosting is always an option.'
+ }}
+
+
+ 0€ {{ locale === 'de' ? '/ immer' : '/ forever' }}
+
+
+ - {{ locale === 'de' ? '✔ Voller Funktionsumfang' : '✔ Full feature set' }}
+ - ✔ Plugins & SDK
+ - {{ locale === 'de' ? '✔ Community‑Support' : '✔ Community support' }}
+
+>>>>>>> 2b6aa53 (Adjust pricing layout and waitlist copy)
-
- - {{ locale === 'de' ? '✔ Voller Funktionsumfang' : '✔ Full feature set' }}
- - ✔ Plugins & SDK
- - {{ locale === 'de' ? '✔ Community‑Support' : '✔ Community support' }}
-
{{ locale === 'de' ? 'Empfohlen' : 'Recommended' }}
{{ locale === 'de' ? 'Hosted – Lernmodus' : 'Hosted – learning mode' }}
@@ -699,11 +715,34 @@
{{ locale === 'de' ? '✔ Kein Setup, Updates durch uns' : '✔ No setup, updates handled by us' }}
{{ locale === 'de' ? '✔ Live-ATC via deinen OpenAI API-Key' : '✔ Live ATC via your OpenAI API key' }}
+=======
+
+
{{ locale === 'de' ? 'Empfohlen' : 'Recommended' }}
+
+
{{ locale === 'de' ? 'Hosted – Lernmodus' : 'Hosted – learning mode' }}
+
+ {{
+ locale === 'de'
+ ? 'Wir übernehmen die Grundkosten, damit du mit allen Basisfunktionen trainieren kannst. Für Live-ATC hinterlegst du deinen eigenen OpenAI API-Key – wir nutzen ihn nur für die Funkanfragen im Hintergrund.'
+ : 'We cover the base costs so you can train with all fundamental features. For live ATC you provide your own OpenAI API key – we only use it for the background radio requests.'
+ }}
+
+
+ 0€ {{ locale === 'de' ? '/ Beta' : '/ beta' }}
+
+
+ - {{ locale === 'de' ? '✔ Lernmodule & Basisfunktionen inklusive' : '✔ Learning modules & core features included' }}
+ - {{ locale === 'de' ? '✔ Kein Setup, Updates durch uns' : '✔ No setup, updates handled by us' }}
+ - {{ locale === 'de' ? '✔ Live-ATC via deinen OpenAI API-Key' : '✔ Live ATC via your OpenAI API key' }}
+
+
+>>>>>>> 2b6aa53 (Adjust pricing layout and waitlist copy)
{{ locale === 'de' ? 'Warteliste' : 'Join waitlist' }}
+<<<<<<< HEAD
{{ locale === 'de' ? 'Teams' : 'Teams' }}
{{ locale === 'de' ? 'Hosted – Community Server' : 'Hosted – community server' }}
@@ -722,6 +761,28 @@
{{ locale === 'de' ? '✔ Eigener OpenAI API-Key oder Self-Host fallback' : '✔ Use your own OpenAI API key or self-host fallback' }}
{{ locale === 'de' ? '✔ Feedback entscheidet über den weiteren Ausbau' : '✔ Feedback guides the next milestones' }}
+=======
+
+
{{ locale === 'de' ? 'Teams' : 'Teams' }}
+
+
{{ locale === 'de' ? 'Hosted – Community Server' : 'Hosted – community server' }}
+
+ {{
+ locale === 'de'
+ ? 'Für virtuelle Airlines und Gruppen, die gemeinsam üben möchten. Wir testen dedizierte Umgebungen – aktuell ebenfalls 0€ und mit eigenem API-Key.'
+ : 'For virtual airlines and groups that want to practise together. We are testing dedicated environments – currently also €0 and powered by your own API key.'
+ }}
+
+
+ 0€ {{ locale === 'de' ? '/ Beta' : '/ beta' }}
+
+
+ - {{ locale === 'de' ? '✔ Gemeinsame Sessions & Rollen in Planung' : '✔ Shared sessions & roles in planning' }}
+ - {{ locale === 'de' ? '✔ Eigener OpenAI API-Key oder Self-Host fallback' : '✔ Use your own OpenAI API key or self-host fallback' }}
+ - {{ locale === 'de' ? '✔ Feedback entscheidet über den weiteren Ausbau' : '✔ Feedback guides the next milestones' }}
+
+
+>>>>>>> 2b6aa53 (Adjust pricing layout and waitlist copy)
{{ locale === 'de' ? 'Kontakt aufnehmen' : 'Get in touch' }}
@@ -877,40 +938,11 @@ POST /api/route/taxi
}}
-
+
{{ locale === 'de' ? 'Lade Warteliste…' : 'Loading waitlist…' }}
-
-
-
- {{ locale === 'de' ? 'Neu (7 Tage)' : 'New (7 days)' }}
-
-
+{{ formatNumber(waitlistRecent7) }}
-
- {{ locale === 'de' ? 'aktive Lernplätze' : 'Active learning slots' }}
-
-
-
-
- {{ locale === 'de' ? 'Neu (30 Tage)' : 'New (30 days)' }}
-
-
+{{ formatNumber(waitlistRecent30) }}
-
- {{ locale === 'de' ? 'Langfristiger Zufluss' : 'Long-term inflow' }}
-
-
-
-
- {{ locale === 'de' ? 'Sichtbarer Puffer' : 'Visible buffer' }}
-
-
+{{ formatNumber(waitlistSyntheticBoost) }}
-
- {{ locale === 'de' ? 'Reserve für nächste Drops' : 'Reserve for upcoming drops' }}
-
-
-
{{ locale === 'de' ? 'Letzte Anmeldung:' : 'Last signup:' }}
{{ waitlistLastJoinedFormatted }}
@@ -1312,9 +1344,6 @@ const allNewsEntries = computed(() => getAllNews())
const latestNews = computed(() => allNewsEntries.value.slice(0, 3))
const waitlistCountDisplay = computed(() => formatNumber(waitlistStats.value?.displayCount ?? 0))
-const waitlistRecent7 = computed(() => waitlistStats.value?.recent7Days ?? 0)
-const waitlistRecent30 = computed(() => waitlistStats.value?.recent30Days ?? 0)
-const waitlistSyntheticBoost = computed(() => waitlistStats.value?.syntheticBoost ?? 0)
const waitlistLastJoinedFormatted = computed(() => {
const iso = waitlistStats.value?.lastJoinedAt
if (!iso) return '–'
@@ -1723,6 +1752,7 @@ onMounted(async () => {
.btn-primary { @apply bg-cyan-500 text-white hover:bg-cyan-400 shadow-[0_0_40px_rgba(34,211,238,.25)]; }
.btn-ghost { @apply bg-white/5 text-white hover:bg-white/10; }
.card { @apply glass rounded-2xl p-5 md:p-6; }
+.pricing-card { overflow: visible; }
.chip { @apply inline-flex items-center gap-2 rounded-full bg-white/10 border border-white/15 text-white px-3 py-1 text-xs; }
.roadmap-scale {
display: grid;