feat(ui): add public landing page with impressum and privacy pages

Introduce a marketing landing page at `/` with hero section, feature grid,
how-it-works steps, CTA banner, and footer. Move the authenticated dashboard
to `/dashboard`. Add static Impressum and Privacy Policy pages for EU legal
compliance. Update login redirect defaults accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sharang Parnerkar
2026-02-18 21:52:45 +01:00
parent a588be306a
commit 29ae4b65bc

View File

@@ -7,7 +7,12 @@ body {
padding: 0; padding: 0;
} }
h1, h2, h3, h4, h5, h6 { h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'Space Grotesk', sans-serif; font-family: 'Space Grotesk', sans-serif;
} }
@@ -509,11 +514,9 @@ h1, h2, h3, h4, h5, h6 {
margin: 0 auto 80px; margin: 0 auto 80px;
padding: 64px 48px; padding: 64px 48px;
text-align: center; text-align: center;
background: linear-gradient( background: linear-gradient(135deg,
135deg, rgba(145, 164, 210, 0.08),
rgba(145, 164, 210, 0.08), rgba(109, 133, 198, 0.04));
rgba(109, 133, 198, 0.04)
);
border: 1px solid rgba(145, 164, 210, 0.15); border: 1px solid rgba(145, 164, 210, 0.15);
border-radius: 20px; border-radius: 20px;
} }
@@ -1029,11 +1032,30 @@ h1, h2, h3, h4, h5, h6 {
letter-spacing: 0.05em; letter-spacing: 0.05em;
} }
.news-badge--llm { background-color: rgba(99, 102, 241, 0.15); color: #818cf8; } .news-badge--llm {
.news-badge--agents { background-color: rgba(168, 85, 247, 0.15); color: #c084fc; } background-color: rgba(99, 102, 241, 0.15);
.news-badge--privacy { background-color: rgba(34, 197, 94, 0.15); color: #4ade80; } color: #818cf8;
.news-badge--infrastructure { background-color: rgba(234, 179, 8, 0.15); color: #facc15; } }
.news-badge--open-source { background-color: rgba(236, 72, 153, 0.15); color: #f472b6; }
.news-badge--agents {
background-color: rgba(168, 85, 247, 0.15);
color: #c084fc;
}
.news-badge--privacy {
background-color: rgba(34, 197, 94, 0.15);
color: #4ade80;
}
.news-badge--infrastructure {
background-color: rgba(234, 179, 8, 0.15);
color: #facc15;
}
.news-badge--open-source {
background-color: rgba(236, 72, 153, 0.15);
color: #f472b6;
}
.news-card-source { .news-card-source {
font-size: 12px; font-size: 12px;
@@ -1367,9 +1389,17 @@ h1, h2, h3, h4, h5, h6 {
border-radius: 50%; border-radius: 50%;
} }
.tool-status--active { background-color: #4ade80; } .tool-status--active {
.tool-status--inactive { background-color: #5a6478; } background-color: #4ade80;
.tool-status--error { background-color: #f87171; } }
.tool-status--inactive {
background-color: #5a6478;
}
.tool-status--error {
background-color: #f87171;
}
.tool-card-name { .tool-card-name {
font-size: 16px; font-size: 16px;
@@ -1571,8 +1601,13 @@ h1, h2, h3, h4, h5, h6 {
font-weight: 500; font-weight: 500;
} }
.analytics-stat-change--up { color: #4ade80; } .analytics-stat-change--up {
.analytics-stat-change--down { color: #f87171; } color: #4ade80;
}
.analytics-stat-change--down {
color: #f87171;
}
/* ===== Pricing Page ===== */ /* ===== Pricing Page ===== */
.pricing-page { .pricing-page {
@@ -1792,6 +1827,7 @@ h1, h2, h3, h4, h5, h6 {
/* ===== Responsive: Dashboard Pages ===== */ /* ===== Responsive: Dashboard Pages ===== */
@media (max-width: 1024px) { @media (max-width: 1024px) {
.news-grid, .news-grid,
.tools-grid, .tools-grid,
.pricing-grid { .pricing-grid {
@@ -1812,6 +1848,7 @@ h1, h2, h3, h4, h5, h6 {
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.news-grid, .news-grid,
.tools-grid, .tools-grid,
.pricing-grid { .pricing-grid {
@@ -1848,4 +1885,4 @@ h1, h2, h3, h4, h5, h6 {
min-width: unset; min-width: unset;
margin: 16px; margin: 16px;
} }
} }