Design Anpassung
This commit is contained in:
@@ -12,27 +12,76 @@ class LandingController
|
||||
'view' => 'welcome',
|
||||
'data' => [
|
||||
'title' => 'Die Kaffeeliste',
|
||||
'landingColumns' => [
|
||||
'heroEyebrow' => 'Für Teams, Büros und Standorte',
|
||||
'heroTitle' => 'Die Kaffeeliste für einen klaren Kaffee-Alltag.',
|
||||
'heroCopy' => 'Mitglieder, Buchungen, Rollen und Hinweise laufen in einer klaren Oberfläche zusammen. Für Teams, die weniger Listen-Chaos und weniger Rückfragen wollen.',
|
||||
'landingPreview' => [
|
||||
['label' => 'Mitglieder', 'value' => '48 aktiv'],
|
||||
['label' => 'Buchungen', 'value' => 'Heute 12'],
|
||||
['label' => 'Support', 'value' => '2 offen'],
|
||||
],
|
||||
'landingFeatures' => [
|
||||
[
|
||||
'eyebrow' => 'Für Mitglieder',
|
||||
'title' => 'Schnell im Alltag',
|
||||
'copy' => 'Anmelden, Überblick sehen und direkt weitermachen.',
|
||||
'title' => 'Dashboard',
|
||||
'copy' => 'Wichtige Zahlen, Hinweise und offene Themen direkt auf der Startseite.',
|
||||
],
|
||||
[
|
||||
'eyebrow' => 'Für Verantwortliche',
|
||||
'title' => 'Einfach verwalten',
|
||||
'copy' => 'Mitglieder, Bereiche und Abläufe an einem Ort.',
|
||||
'title' => 'Mitglieder und Rollen',
|
||||
'copy' => 'Zugänge, Zuständigkeiten und Bereiche sauber an einem Ort verwalten.',
|
||||
],
|
||||
[
|
||||
'eyebrow' => 'Für Teams',
|
||||
'title' => 'Klar für alle',
|
||||
'copy' => 'Eine gemeinsame Kaffeeliste mit verständlicher Oberfläche.',
|
||||
'title' => 'Buchungen',
|
||||
'copy' => 'Einzahlungen, Verbrauch und Korrekturen nachvollziehbar dokumentieren.',
|
||||
],
|
||||
[
|
||||
'title' => 'Support und Exporte',
|
||||
'copy' => 'Rückfragen, Listen und Auswertungen ohne Wechsel zwischen mehreren Tools.',
|
||||
],
|
||||
],
|
||||
'landingPreview' => [
|
||||
['label' => 'Schneller Überblick', 'value' => 'Direkt sichtbar'],
|
||||
['label' => 'Für Mitglieder', 'value' => 'Einfach nutzbar'],
|
||||
['label' => 'Für Verantwortliche', 'value' => 'Klar verwaltet'],
|
||||
'landingSteps' => [
|
||||
[
|
||||
'number' => '01',
|
||||
'title' => 'Anmelden und Bereich öffnen',
|
||||
'copy' => 'Ohne Installation direkt im Browser starten.',
|
||||
],
|
||||
[
|
||||
'number' => '02',
|
||||
'title' => 'Mitglieder und Zuständigkeiten ordnen',
|
||||
'copy' => 'Rollen, Standorte und Zugänge klar strukturieren.',
|
||||
],
|
||||
[
|
||||
'number' => '03',
|
||||
'title' => 'Im Alltag damit arbeiten',
|
||||
'copy' => 'Buchungen pflegen, Fragen klären und den Überblick behalten.',
|
||||
],
|
||||
],
|
||||
'landingUseCases' => [
|
||||
[
|
||||
'title' => 'Für Mitglieder',
|
||||
'copy' => 'Schnell sehen, was wichtig ist, ohne sich durch Verwaltungsthemen zu arbeiten.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für Verantwortliche',
|
||||
'copy' => 'Buchungen prüfen, Bereiche steuern und Abläufe sauber organisieren.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für mehrere Standorte',
|
||||
'copy' => 'Getrennte Bereiche bleiben übersichtlich, folgen aber derselben Logik.',
|
||||
],
|
||||
],
|
||||
'landingProof' => [
|
||||
[
|
||||
'title' => 'Schnell verständlich',
|
||||
'copy' => 'Die wichtigsten Bereiche sind sofort erkennbar und klar benannt.',
|
||||
],
|
||||
[
|
||||
'title' => 'Im Browser und mobil',
|
||||
'copy' => 'Die Oberfläche funktioniert ohne Installation auf Desktop und Handy.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für den Alltag gebaut',
|
||||
'copy' => 'Kaffeeliste, Support, Buchungen und Verwaltung greifen sinnvoll ineinander.',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -2838,12 +2838,12 @@ function app_handle_tenant_action(PDO $pdo, array $auth): void
|
||||
function app_marketing_messages(): array
|
||||
{
|
||||
return [
|
||||
'hero' => 'Die moderne Kaffeeliste für Teams, Standorte und gemeinsame Services.',
|
||||
'subhero' => 'Zentrale Anmeldung, transparente Kontostände, Einzahlungen, Buchungen und Hinweise in einer webbasierten SaaS-Lösung, die sich leicht betreiben lässt.',
|
||||
'hero' => 'Die Kaffeeliste für Teams, Standorte und gemeinsame Abläufe.',
|
||||
'subhero' => 'Eine klare Weboberfläche für Anmeldung, Buchungen, Einzahlungen und Hinweise. Schnell verständlich, auch am Handy.',
|
||||
'benefits' => [
|
||||
'Ein Login für alle Mitgliedschaften statt verteilter Tenant-URLs.',
|
||||
'Eine zentrale Verwaltung für Tenants, Zugänge und Betriebsübersicht.',
|
||||
'Klare Abläufe für Buchungen, Einzahlungen, Hinweise und Mitgliederverwaltung.',
|
||||
'Mitglieder melden sich ohne Umwege an.',
|
||||
'Verantwortliche behalten Buchungen und Einzahlungen im Blick.',
|
||||
'Standorte und Rollen bleiben sauber getrennt.',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
+184
-96
@@ -237,15 +237,34 @@ foreach ($primaryNavItems as $item) {
|
||||
}
|
||||
$themeCss = app_tenant_theme_root_css($tenantSettings);
|
||||
$isMarketingHome = $page === 'home' && $auth === null;
|
||||
$landingColumns = [
|
||||
['eyebrow' => 'Für Mitglieder', 'title' => 'Schnell starten', 'copy' => 'Einloggen und direkt weiter.'],
|
||||
['eyebrow' => 'Für Verantwortliche', 'title' => 'Alles im Blick', 'copy' => 'Bereiche, Hinweise und Verwaltung an einem Ort.'],
|
||||
['eyebrow' => 'Für Standorte', 'title' => 'Gemeinsam organisiert', 'copy' => 'Ein klarer Ablauf für Teams und Bereiche.'],
|
||||
];
|
||||
$heroEyebrow = 'Für Teams, Büros und Standorte';
|
||||
$heroTitle = 'Die Kaffeeliste für einen klaren Kaffee-Alltag.';
|
||||
$heroCopy = 'Mitglieder, Buchungen, Rollen und Hinweise laufen in einer klaren Oberfläche zusammen. Für Teams, die weniger Listen-Chaos und weniger Rückfragen wollen.';
|
||||
$landingPreview = [
|
||||
['label' => 'Start', 'value' => 'Klar'],
|
||||
['label' => 'Team', 'value' => 'Gemeinsam'],
|
||||
['label' => 'Zugang', 'value' => 'Direkt'],
|
||||
['label' => 'Mitglieder', 'value' => '48 aktiv'],
|
||||
['label' => 'Buchungen', 'value' => 'Heute 12'],
|
||||
['label' => 'Support', 'value' => '2 offen'],
|
||||
];
|
||||
$landingFeatures = [
|
||||
['title' => 'Dashboard', 'copy' => 'Wichtige Zahlen, Hinweise und offene Themen direkt auf der Startseite.'],
|
||||
['title' => 'Mitglieder und Rollen', 'copy' => 'Zugänge, Zuständigkeiten und Bereiche sauber an einem Ort verwalten.'],
|
||||
['title' => 'Buchungen', 'copy' => 'Einzahlungen, Verbrauch und Korrekturen nachvollziehbar dokumentieren.'],
|
||||
['title' => 'Support und Exporte', 'copy' => 'Rückfragen, Listen und Auswertungen ohne Wechsel zwischen mehreren Tools.'],
|
||||
];
|
||||
$landingSteps = [
|
||||
['number' => '01', 'title' => 'Anmelden und Bereich öffnen', 'copy' => 'Ohne Installation direkt im Browser starten.'],
|
||||
['number' => '02', 'title' => 'Mitglieder und Zuständigkeiten ordnen', 'copy' => 'Rollen, Standorte und Zugänge klar strukturieren.'],
|
||||
['number' => '03', 'title' => 'Im Alltag damit arbeiten', 'copy' => 'Buchungen pflegen, Fragen klären und den Überblick behalten.'],
|
||||
];
|
||||
$landingUseCases = [
|
||||
['title' => 'Für Mitglieder', 'copy' => 'Schnell sehen, was wichtig ist, ohne sich durch Verwaltungsthemen zu arbeiten.'],
|
||||
['title' => 'Für Verantwortliche', 'copy' => 'Buchungen prüfen, Bereiche steuern und Abläufe sauber organisieren.'],
|
||||
['title' => 'Für mehrere Standorte', 'copy' => 'Getrennte Bereiche bleiben übersichtlich, folgen aber derselben Logik.'],
|
||||
];
|
||||
$landingProof = [
|
||||
['title' => 'Schnell verständlich', 'copy' => 'Die wichtigsten Bereiche sind sofort erkennbar und klar benannt.'],
|
||||
['title' => 'Im Browser und mobil', 'copy' => 'Die Oberfläche funktioniert ohne Installation auf Desktop und Handy.'],
|
||||
['title' => 'Für den Alltag gebaut', 'copy' => 'Kaffeeliste, Support, Buchungen und Verwaltung greifen sinnvoll ineinander.'],
|
||||
];
|
||||
|
||||
?><!DOCTYPE html>
|
||||
@@ -255,59 +274,59 @@ $landingPreview = [
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Die Kaffeeliste</title>
|
||||
<style>
|
||||
:root{<?= $themeCss ?>--line:rgba(37,24,15,.14);--shadow:0 18px 40px rgba(37,24,15,.08);--radius:18px}
|
||||
:root{<?= $themeCss ?>--line:rgba(143,158,191,.16);--line-strong:rgba(174,189,223,.26);--shadow:0 24px 64px rgba(1,6,18,.36);--shadow-soft:0 16px 34px rgba(1,6,18,.2);--radius:14px;--surface-0:#05070d;--surface-1:rgba(8,12,22,.84);--surface-2:rgba(13,18,31,.92);--surface-3:rgba(17,24,40,.96);--surface-soft:rgba(255,255,255,.04);--text-strong:#f4f7ff;--text-soft:rgba(219,228,248,.74);--text-faint:rgba(190,202,226,.52)}
|
||||
*{box-sizing:border-box}
|
||||
body{margin:0;min-height:100vh;font-family:"Aptos","Segoe UI",sans-serif;color:var(--ink);background:linear-gradient(180deg,#f9f6ef 0%,var(--bg) 100%)}
|
||||
body{margin:0;min-height:100vh;font-family:"Aptos","Segoe UI",sans-serif;color:var(--text-strong);background:radial-gradient(circle at top center,rgba(88,122,255,.2),transparent 26%),radial-gradient(circle at 18% 18%,rgba(var(--brand-rgb),.16),transparent 22%),linear-gradient(180deg,#05070d 0%,#0a0f1a 48%,#0d1320 100%)}
|
||||
a{color:inherit;text-decoration:none}
|
||||
h1,h2,h3{font-family:Georgia,serif;letter-spacing:-.02em}
|
||||
.button,button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:12px;border:1px solid transparent;background:var(--brand);color:#fff;font:inherit;font-weight:700;cursor:pointer}
|
||||
.button.secondary,.button--ghost{background:#fff;color:var(--brand);border-color:rgba(var(--brand-rgb),.18)}
|
||||
.page-shell{width:min(1320px,calc(100vw - 32px));margin:18px auto 34px;display:grid;gap:16px}
|
||||
.site-header{position:sticky;top:18px;z-index:20}
|
||||
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.94);box-shadow:var(--shadow)}
|
||||
.site-brand{display:flex;align-items:center;gap:14px;min-width:0}
|
||||
.site-brand__mark{width:44px;height:44px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);color:#fff;font-weight:800;box-shadow:0 14px 28px rgba(var(--brand-rgb),.18)}
|
||||
.site-brand__title{margin:0;font-size:1.1rem;color:var(--ink)}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:var(--muted);font-size:.92rem}
|
||||
h1,h2,h3{font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;letter-spacing:-.04em}
|
||||
.button,button{display:inline-flex;align-items:center;justify-content:center;padding:.72rem 1rem;border-radius:10px;border:1px solid transparent;background:linear-gradient(135deg,#587aff 0%,#243a91 100%);color:#fff;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 12px 24px rgba(36,58,145,.22)}
|
||||
.button.secondary,.button--ghost{background:rgba(255,255,255,.03);color:var(--text-strong);border-color:rgba(255,255,255,.12)}
|
||||
.page-shell{width:100%;margin:0 0 34px;display:grid;gap:16px}
|
||||
.site-header{position:sticky;top:0;z-index:30;width:100vw;margin-left:calc(50% - 50vw);margin-bottom:24px}
|
||||
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:74px;width:100%;margin:0;padding:0 24px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:rgba(8,10,18,.82);box-shadow:var(--shadow);backdrop-filter:blur(18px)}
|
||||
.site-brand{display:flex;align-items:center;gap:12px;min-width:0}
|
||||
.site-brand__mark{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#587aff 0%,#243a91 100%);color:#fff;font-weight:800;box-shadow:none}
|
||||
.site-brand__title{margin:0;font-size:1rem;color:var(--text-strong);letter-spacing:-.03em}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:var(--text-soft);font-size:.88rem}
|
||||
.site-nav,.site-actions,.actions,.context{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
|
||||
.site-nav__link{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--muted);font-weight:700}
|
||||
.site-nav__link:hover{text-decoration:none;color:var(--brand);background:rgba(255,255,255,.82);border-color:rgba(var(--brand-rgb),.14)}
|
||||
.site-nav__link.active{background:rgba(var(--brand-rgb),.10);color:var(--brand);border-color:rgba(var(--brand-rgb),.18)}
|
||||
.site-nav__link{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 .34rem;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text-soft);font-size:.96rem;font-weight:600}
|
||||
.site-nav__link:hover{text-decoration:none;color:var(--text-strong);background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.08)}
|
||||
.site-nav__link.active{background:rgba(255,255,255,.08);color:var(--text-strong);border-color:rgba(255,255,255,.12)}
|
||||
.site-mobile{display:none;position:relative}
|
||||
.site-mobile[open]{z-index:20}
|
||||
.site-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;list-style:none;padding:12px 14px;border-radius:16px;border:1px solid rgba(var(--brand-rgb),.12);background:#fff;color:var(--brand);font-weight:700}
|
||||
.site-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;list-style:none;min-height:38px;padding:.45rem .72rem;border-radius:10px;border:1px solid var(--line-strong);background:rgba(255,255,255,.04);color:var(--text-strong);font-weight:600}
|
||||
.site-toggle::-webkit-details-marker{display:none}
|
||||
.site-toggle::before{content:"";display:block;width:18px;height:2px;border-radius:999px;background:currentColor;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor}
|
||||
.site-panel{position:absolute;right:0;top:calc(100% + 12px);width:min(320px,calc(100vw - 32px));padding:14px;border-radius:18px;border:1px solid var(--line);background:#fffdf9;box-shadow:var(--shadow)}
|
||||
.site-panel{position:absolute;right:0;top:calc(100% + 12px);width:min(320px,calc(100vw - 32px));padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--surface-3);box-shadow:var(--shadow)}
|
||||
.site-stack{display:grid;gap:10px}
|
||||
.site-stack .site-nav__link{justify-content:flex-start;background:rgba(255,255,255,.78);border-color:rgba(37,24,15,.08);color:var(--ink)}
|
||||
.site-stack .site-nav__link{justify-content:flex-start;background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.08);color:var(--text-strong)}
|
||||
.site-footer-actions{display:flex;justify-content:flex-end;margin-top:12px}
|
||||
.hero,.card,.alert{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}
|
||||
.sidebar__eyebrow,.eyebrow{display:inline-block;color:var(--accent);text-transform:uppercase;letter-spacing:.14em;font-size:.8rem;font-weight:800}
|
||||
.hero,.card,.alert{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);box-shadow:var(--shadow)}
|
||||
.sidebar__eyebrow,.eyebrow{display:inline-block;color:#8aa0d0;text-transform:uppercase;letter-spacing:.14em;font-size:.8rem;font-weight:800}
|
||||
.sidebar__eyebrow{margin:0}
|
||||
.sidebar__title{margin:0;font-size:1.32rem;line-height:1.04}
|
||||
.sidebar__subtitle,.muted,p{color:var(--muted)}
|
||||
.content{min-width:0;display:grid;gap:16px}
|
||||
.hero,.card{padding:20px}
|
||||
.hero{margin-bottom:0;background:rgba(255,255,255,.9)}
|
||||
.sidebar__subtitle,.muted,p{color:var(--text-soft)}
|
||||
.content{width:min(1320px,calc(100vw - 32px));margin:0 auto;min-width:0;display:grid;gap:16px}
|
||||
.hero,.card{padding:18px}
|
||||
.hero{margin-bottom:0;background:linear-gradient(135deg,rgba(14,20,34,.98),rgba(10,15,26,.96))}
|
||||
.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
|
||||
h1{font-size:clamp(1.9rem,4vw,2.8rem);margin:0 0 10px}h2{font-size:1.2rem;margin:0 0 10px}h3{font-size:1rem;margin:0 0 8px}p{margin:0;line-height:1.55}
|
||||
.metric{padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff}.metric strong{display:block;font-size:1.55rem;margin-bottom:6px}
|
||||
.list{margin:14px 0 0;padding-left:18px;color:var(--muted);line-height:1.7}
|
||||
.metric{padding:18px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.04)}.metric strong{display:block;font-size:1.55rem;margin-bottom:6px}
|
||||
.list{margin:14px 0 0;padding-left:18px;color:var(--text-soft);line-height:1.7}
|
||||
.alert{padding:16px 18px;margin-bottom:0}.alert-success{background:rgba(var(--brand-rgb),.08)}.alert-warning{background:rgba(var(--accent-rgb),.1)}.alert-error{background:rgba(154,31,31,.1)}.alert-info{background:rgba(var(--brand-rgb),.08)}
|
||||
.badge{display:inline-flex;align-items:center;padding:7px 12px;border-radius:999px;font-size:.86rem;font-weight:700}
|
||||
.badge-neutral{background:rgba(var(--brand-rgb),.08);color:var(--brand)}.badge-success{background:rgba(var(--brand-rgb),.12);color:var(--brand)}.badge-warning{background:rgba(var(--accent-rgb),.14);color:#8c6500}
|
||||
.table{overflow-x:auto}.table table{width:100%;border-collapse:collapse;min-width:720px}.table th,.table td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table th{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
|
||||
form.grid{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:flex;flex-direction:column;gap:8px;font-weight:700}input,select,textarea{width:100%;padding:12px 14px;border-radius:14px;border:1px solid rgba(37,24,15,.15);font:inherit;background:#fff;color:var(--ink)}textarea{min-height:120px}
|
||||
.footer{margin-top:0;text-align:center;color:var(--muted);font-size:.92rem}
|
||||
.badge-neutral{background:rgba(88,122,255,.12);color:#d9e2ff}.badge-success{background:rgba(88,122,255,.12);color:#d9e2ff}.badge-warning{background:rgba(224,154,70,.14);color:#ffd7a1}
|
||||
.table{overflow-x:auto}.table table{width:100%;border-collapse:collapse;min-width:720px}.table th,.table td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table th{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);background:rgba(255,255,255,.03)}
|
||||
form.grid{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:flex;flex-direction:column;gap:8px;font-weight:700}input,select,textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.08);font:inherit;background:rgba(255,255,255,.04);color:var(--text-strong)}textarea{min-height:120px}
|
||||
.footer{margin-top:0;text-align:center;color:var(--text-faint);font-size:.92rem}
|
||||
.section-mini{display:grid;gap:10px}
|
||||
.section-mini__title{margin:0;font-size:1rem;color:var(--ink)}
|
||||
.section-mini__copy{margin:0;color:var(--muted)}
|
||||
.section-mini__title{margin:0;font-size:1rem;color:var(--text-strong)}
|
||||
.section-mini__copy{margin:0;color:var(--text-soft)}
|
||||
body.landing-preview{background:radial-gradient(circle at top center,rgba(88,122,255,.22),transparent 28%),radial-gradient(circle at 20% 20%,rgba(42,72,170,.18),transparent 24%),linear-gradient(180deg,#05070d 0%,#0a0f1a 52%,#0d1320 100%);color:#f4f7ff}
|
||||
body.landing-preview h1,body.landing-preview h2,body.landing-preview h3{font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;letter-spacing:-.04em}
|
||||
.marketing-shell{min-height:100vh;padding:0 0 92px;display:grid;gap:12px}
|
||||
.marketing-main{width:min(1240px,calc(100vw - 48px));margin:0 auto}
|
||||
.marketing-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:14px;height:88px;min-height:88px;width:100%;margin:0 0 20px;padding:0 18px;border:0;border-bottom:1px solid rgba(137,154,188,.18);border-radius:0;background:rgba(8,10,18,.82);box-shadow:none;backdrop-filter:blur(16px)}
|
||||
.marketing-bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:14px;height:88px;min-height:88px;width:100vw;margin-left:calc(50% - 50vw);margin-bottom:20px;padding:0 18px;border:0;border-bottom:1px solid rgba(137,154,188,.18);border-radius:0;background:rgba(8,10,18,.82);box-shadow:none;backdrop-filter:blur(16px)}
|
||||
.marketing-brand{display:flex;align-items:center;gap:8px;flex:0 0 auto}
|
||||
.marketing-brand__mark{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#587aff 0%,#243a91 100%);color:#fff;font-size:1rem;font-weight:800;box-shadow:none}
|
||||
.marketing-brand__title{margin:0;font-size:1.08rem;line-height:1;color:#f4f7ff}
|
||||
@@ -327,36 +346,42 @@ $landingPreview = [
|
||||
.marketing-mobile__stack{display:grid;gap:8px}
|
||||
.marketing-mobile__stack .marketing-nav__link{justify-content:flex-start;padding:.55rem .7rem;background:rgba(255,255,255,.04);border-color:rgba(201,214,255,.1)}
|
||||
.marketing-mobile__footer{margin-top:12px;display:flex;justify-content:flex-end}
|
||||
.landing-hero{width:min(1240px,calc(100vw - 48px));margin:0 auto;padding-top:12px;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(280px,.92fr);gap:40px;align-items:start}
|
||||
.landing-copy__eyebrow{margin:0 0 10px;text-transform:uppercase;letter-spacing:.16em;font-size:.78rem;font-weight:700;color:#8aa0d0}
|
||||
.landing-wrap{display:grid;gap:28px;padding:8px 0 12px}
|
||||
.landing-hero{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(290px,.88fr);gap:36px;align-items:start;padding-top:8px}
|
||||
.landing-copy{display:grid;gap:12px}
|
||||
.landing-copy__eyebrow{margin:0;text-transform:uppercase;letter-spacing:.16em;font-size:.78rem;font-weight:700;color:#8aa0d0}
|
||||
.landing-copy h1{margin:0;font-size:clamp(3.2rem,7vw,6.4rem);line-height:.9;letter-spacing:-.06em;color:#f4f7ff}
|
||||
.landing-copy p{margin:14px 0 0;color:rgba(219,228,248,.72);font-size:1.05rem;max-width:30rem;line-height:1.65}
|
||||
.landing-actions{margin-top:24px}
|
||||
.landing-visual,.landing-callout{border:1px solid rgba(163,183,255,.12);border-radius:20px;background:rgba(14,20,34,.86);box-shadow:0 16px 40px rgba(2,5,12,.34)}
|
||||
.landing-visual{padding:20px;display:grid;gap:12px}
|
||||
.landing-visual__top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid rgba(163,183,255,.12)}
|
||||
.landing-visual__title{margin:0;font-size:1.1rem;color:#f4f7ff}
|
||||
.landing-visual__stack{display:grid;gap:12px}
|
||||
.landing-visual__row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.04);color:rgba(216,225,246,.72);font-weight:600}
|
||||
.landing-visual__row strong{color:#f4f7ff}
|
||||
.landing-columns{width:min(1240px,calc(100vw - 48px));margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-top:1px solid rgba(163,183,255,.12);border-bottom:1px solid rgba(163,183,255,.12)}
|
||||
.landing-column{padding:24px 18px}
|
||||
.landing-column + .landing-column{border-left:1px solid rgba(163,183,255,.12)}
|
||||
.landing-column__eyebrow{margin:0 0 10px;color:#8aa0d0;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
|
||||
.landing-column h2{margin:0 0 10px;font-size:1.45rem;color:#f4f7ff}
|
||||
.landing-column p{margin:0;max-width:22rem;color:rgba(219,228,248,.72)}
|
||||
.landing-callout{width:min(1240px,calc(100vw - 48px));margin:0 auto;padding:24px 26px}
|
||||
.landing-callout__eyebrow{margin:0 0 8px;color:#8aa0d0;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
|
||||
.landing-callout h2{margin:0 0 10px;font-size:2rem;color:#f4f7ff}
|
||||
.landing-callout p{margin:0;max-width:36rem;color:rgba(217,226,246,.8)}
|
||||
.landing-copy__lead{margin:0;max-width:34rem;font-size:1.08rem;line-height:1.65;color:rgba(219,228,248,.74)}
|
||||
.landing-copy__note{margin:0;max-width:32rem;color:rgba(193,205,232,.78);font-size:.96rem}
|
||||
.landing-actions{margin-top:10px}
|
||||
.landing-preview,.landing-section,.landing-callout{border:1px solid rgba(163,183,255,.12);border-radius:20px;background:rgba(14,20,34,.86);box-shadow:0 16px 40px rgba(2,5,12,.34)}
|
||||
.landing-preview{padding:20px;display:grid;gap:12px}
|
||||
.landing-preview__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid rgba(163,183,255,.12)}
|
||||
.landing-preview__title{margin:0;font-size:1.1rem;color:#f4f7ff}
|
||||
.landing-preview__line{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.04);color:rgba(216,225,246,.74);font-weight:600}
|
||||
.landing-preview__line strong{color:#f4f7ff}
|
||||
.landing-preview__stack{display:grid;gap:12px}
|
||||
.landing-section{padding:24px 26px}
|
||||
.landing-section__head{display:grid;gap:8px;margin-bottom:18px}
|
||||
.landing-section__eyebrow{margin:0;color:#8aa0d0;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
|
||||
.landing-section__title{margin:0;font-size:1.9rem;color:#f4f7ff}
|
||||
.landing-section__lead{margin:0;max-width:48rem;color:rgba(217,226,246,.8)}
|
||||
.landing-feature-grid,.landing-step-grid,.landing-use-grid,.landing-proof-grid{display:grid;gap:12px}
|
||||
.landing-feature-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
|
||||
.landing-step-grid,.landing-use-grid,.landing-proof-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
|
||||
.landing-card{padding:18px;border-radius:18px;border:1px solid rgba(163,183,255,.12);background:rgba(255,255,255,.035)}
|
||||
.landing-card__number{display:inline-flex;align-items:center;justify-content:center;min-width:2.15rem;height:2.15rem;margin-bottom:14px;border-radius:999px;background:rgba(88,122,255,.16);color:#dfe8ff;font-size:.78rem;font-weight:800;letter-spacing:.06em}
|
||||
.landing-card h3{margin:0 0 8px;font-size:1.12rem;color:#f4f7ff}
|
||||
.landing-card p{margin:0;color:rgba(219,228,246,.74)}
|
||||
.landing-callout{padding:24px 26px}
|
||||
.landing-cta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:20px;margin-top:22px;border-top:1px solid rgba(163,183,255,.12)}
|
||||
.landing-cta__copy{display:grid;gap:6px}
|
||||
.landing-cta__copy strong{font-size:1.05rem;color:#f4f7ff}
|
||||
.landing-cta__copy span{color:rgba(217,226,246,.72)}
|
||||
.marketing-footer{position:fixed;left:0;right:0;bottom:0;z-index:25;margin-top:0;padding:10px 24px;border-top:1px solid rgba(137,154,188,.14);background:rgba(8,10,18,.88);backdrop-filter:blur(18px);color:rgba(209,217,235,.68);font-size:.92rem}
|
||||
.marketing-footer__inner{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;width:min(1240px,calc(100% - 48px));margin:0 auto}
|
||||
@media(max-width:960px){.marketing-main,.landing-hero,.landing-columns,.landing-callout{width:calc(100vw - 24px)}.marketing-bar{height:72px;min-height:72px;margin:0 0 16px;padding:0 12px}.marketing-nav,.marketing-actions{display:none}.marketing-mobile{display:block}.landing-hero,.landing-columns{grid-template-columns:1fr}.landing-hero{gap:24px;padding-top:0}.landing-column{padding:20px 0}.landing-column + .landing-column{border-left:0;border-top:1px solid rgba(163,183,255,.12)}.landing-callout{padding:20px}.marketing-shell{padding:0 0 88px}.marketing-footer{padding:10px 12px}.marketing-footer__inner{width:100%}}
|
||||
@media(max-width:960px){.page-shell{width:min(100vw - 20px,1460px)}.site-header__inner{align-items:flex-start;padding:14px 16px}.site-nav{display:none}.site-mobile{display:block}.grid-2,.grid-3,.grid-4,form.grid{grid-template-columns:1fr}.table table{min-width:0}}
|
||||
@media(max-width:960px){.marketing-main,.landing-hero,.landing-section,.landing-callout{width:calc(100vw - 24px)}.marketing-bar{height:72px;min-height:72px;margin-bottom:16px;padding:0 12px}.marketing-nav,.marketing-actions{display:none}.marketing-mobile{display:block}.landing-hero,.landing-feature-grid,.landing-step-grid,.landing-use-grid,.landing-proof-grid{grid-template-columns:1fr}.landing-hero{gap:24px;padding-top:0}.landing-section,.landing-callout{padding:20px}.marketing-shell{padding:0 0 88px}.marketing-footer{padding:10px 12px}.marketing-footer__inner{width:100%}}
|
||||
@media(max-width:960px){.site-header{margin-bottom:20px}.site-header__inner{min-height:68px;width:100%;align-items:center;padding:0 16px}.site-nav{display:none}.site-mobile{display:block}.content{width:min(100vw - 20px,1460px)}.grid-2,.grid-3,.grid-4,form.grid{grid-template-columns:1fr}.table table{min-width:0}}
|
||||
@media(min-width:961px){.site-mobile{display:none}}
|
||||
</style>
|
||||
</head>
|
||||
@@ -400,25 +425,26 @@ $landingPreview = [
|
||||
<section class="alert alert-<?= h((string) ($flash['type'] ?? 'info')) ?>" style="width:min(1240px,calc(100vw - 48px));margin:0 auto;"><?= h((string) ($flash['message'] ?? '')) ?></section>
|
||||
<?php endif; ?>
|
||||
|
||||
<section class="marketing-hero landing-hero">
|
||||
<section class="landing-hero">
|
||||
<div class="landing-copy">
|
||||
<p class="landing-copy__eyebrow">Die Kaffeeliste</p>
|
||||
<h1>Kaffee im Team. Klar organisiert.</h1>
|
||||
<p>Für Mitglieder, Verantwortliche und Standorte.</p>
|
||||
<p class="landing-copy__eyebrow"><?= h($heroEyebrow) ?></p>
|
||||
<h1><?= h($heroTitle) ?></h1>
|
||||
<p class="landing-copy__lead"><?= h($heroCopy) ?></p>
|
||||
<p class="landing-copy__note">Für Mitglieder, Verantwortliche und Standorte. Mobil nutzbar, klar geführt und ohne unnötige Umwege.</p>
|
||||
<div class="landing-actions">
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
<a class="button secondary" href="#bereiche">Mehr erfahren</a>
|
||||
<a class="button secondary" href="#funktionen">Funktionen ansehen</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside class="landing-visual" aria-label="Produktvorschau">
|
||||
<div class="landing-visual__top">
|
||||
<h2 class="landing-visual__title">Übersicht</h2>
|
||||
<aside class="landing-preview" aria-label="Vorschau">
|
||||
<div class="landing-preview__header">
|
||||
<h2 class="landing-preview__title">Übersicht</h2>
|
||||
<span>Heute</span>
|
||||
</div>
|
||||
<div class="landing-visual__stack">
|
||||
<div class="landing-preview__stack">
|
||||
<?php foreach ($landingPreview as $item): ?>
|
||||
<div class="landing-visual__row">
|
||||
<div class="landing-preview__line">
|
||||
<span><?= h((string) ($item['label'] ?? '')) ?></span>
|
||||
<strong><?= h((string) ($item['value'] ?? '')) ?></strong>
|
||||
</div>
|
||||
@@ -427,26 +453,88 @@ $landingPreview = [
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section class="landing-columns" id="bereiche">
|
||||
<?php foreach ($landingColumns as $column): ?>
|
||||
<article class="landing-column">
|
||||
<p class="landing-column__eyebrow"><?= h((string) ($column['eyebrow'] ?? '')) ?></p>
|
||||
<h2><?= h((string) ($column['title'] ?? '')) ?></h2>
|
||||
<p><?= h((string) ($column['copy'] ?? '')) ?></p>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
<section class="landing-section" id="funktionen" aria-label="Funktionen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Produkt</p>
|
||||
<h2 class="landing-section__title">Was die Kaffeeliste im Alltag abdeckt</h2>
|
||||
<p class="landing-section__lead">Vom Überblick bis zur Auswertung bleibt alles in einer Oberfläche, die sofort verständlich wirkt.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-feature-grid">
|
||||
<?php foreach ($landingFeatures as $feature): ?>
|
||||
<article class="landing-card">
|
||||
<h3><?= h((string) ($feature['title'] ?? '')) ?></h3>
|
||||
<p><?= h((string) ($feature['copy'] ?? '')) ?></p>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-callout marketing-cta">
|
||||
<p class="landing-callout__eyebrow">Einfach im Alltag</p>
|
||||
<h2>Ein gemeinsamer Ort für die Kaffeeliste.</h2>
|
||||
<p>Weniger suchen. Weniger erklären. Klar durch den Tag.</p>
|
||||
<section class="landing-section" id="ablauf" aria-label="Ablauf">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Ablauf</p>
|
||||
<h2 class="landing-section__title">So funktioniert es</h2>
|
||||
<p class="landing-section__lead">Vom ersten Login bis zum täglichen Einsatz bleibt der Weg kurz und nachvollziehbar.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-step-grid">
|
||||
<?php foreach ($landingSteps as $step): ?>
|
||||
<article class="landing-card">
|
||||
<span class="landing-card__number"><?= h((string) ($step['number'] ?? '')) ?></span>
|
||||
<h3><?= h((string) ($step['title'] ?? '')) ?></h3>
|
||||
<p><?= h((string) ($step['copy'] ?? '')) ?></p>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-section" id="zielgruppen" aria-label="Zielgruppen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Für wen</p>
|
||||
<h2 class="landing-section__title">Für Mitglieder, Verantwortliche und Standorte</h2>
|
||||
<p class="landing-section__lead">Jede Rolle bekommt genau die Informationen und Wege, die sie im Alltag braucht.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-use-grid">
|
||||
<?php foreach ($landingUseCases as $useCase): ?>
|
||||
<article class="landing-card">
|
||||
<h3><?= h((string) ($useCase['title'] ?? '')) ?></h3>
|
||||
<p><?= h((string) ($useCase['copy'] ?? '')) ?></p>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-section" id="vertrauen" aria-label="Vertrauen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Warum es passt</p>
|
||||
<h2 class="landing-section__title">Klar genug für den Alltag, ruhig genug für gutes Produktdesign</h2>
|
||||
<p class="landing-section__lead">Reduziert gestaltet, aber mit genug Tiefe für Teams, die mehr als nur eine einfache Liste brauchen.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-proof-grid">
|
||||
<?php foreach ($landingProof as $item): ?>
|
||||
<article class="landing-card">
|
||||
<h3><?= h((string) ($item['title'] ?? '')) ?></h3>
|
||||
<p><?= h((string) ($item['copy'] ?? '')) ?></p>
|
||||
</article>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-callout">
|
||||
<p class="landing-section__eyebrow">Zum Start</p>
|
||||
<h2>Ein gemeinsamer Einstieg für Teams, die Kaffee einfach organisieren wollen.</h2>
|
||||
<p>Klar im Aufbau, direkt in der Nutzung und bereit für den täglichen Einsatz im Team.</p>
|
||||
<div class="landing-cta">
|
||||
<div class="landing-cta__copy">
|
||||
<strong>Bereit für den Start?</strong>
|
||||
<span>Direkt zur Anmeldung.</span>
|
||||
<strong>Direkt loslegen</strong>
|
||||
<span>Ohne Umwege zur Anmeldung.</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
<a class="button secondary" href="#funktionen">Funktionen ansehen</a>
|
||||
</div>
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -574,7 +662,7 @@ $landingPreview = [
|
||||
<article class="card">
|
||||
<?php if ($loginStep === 'choose-tenant'): ?>
|
||||
<div class="eyebrow">Schritt 2</div>
|
||||
<h2>Bereich waehlen</h2>
|
||||
<h2>Bereich wählen</h2>
|
||||
<div class="stack">
|
||||
<?php foreach (($loginState['memberships'] ?? []) as $membership): ?>
|
||||
<form method="post" action="/login/" class="card">
|
||||
@@ -614,7 +702,7 @@ $landingPreview = [
|
||||
<h2>Wenn es nicht direkt klappt</h2>
|
||||
<ul class="list">
|
||||
<li>Prüfe zuerst, ob du die richtige berufliche E-Mail-Adresse verwendest.</li>
|
||||
<li>Wenn du in mehreren Bereichen arbeitest, waehle den passenden aus.</li>
|
||||
<li>Wenn du in mehreren Bereichen arbeitest, wähle den passenden aus.</li>
|
||||
<li>Falls kein Zugang gefunden wird, brauchst du meist nur eine Einladung oder den Kontakt zur verantwortlichen Person.</li>
|
||||
</ul>
|
||||
</article>
|
||||
@@ -661,7 +749,7 @@ $landingPreview = [
|
||||
<?php endif; ?>
|
||||
<?php elseif ($page === 'dashboard'): ?>
|
||||
<section class="hero">
|
||||
<div class="eyebrow">Uebersicht</div>
|
||||
<div class="eyebrow">Übersicht</div>
|
||||
<h1><?= h((string) $auth['tenant_name']) ?></h1>
|
||||
<p>Alles Wichtige auf einen Blick.</p>
|
||||
<?php if (app_is_platform_admin($auth) && app_admin_user() !== null): ?>
|
||||
@@ -687,7 +775,7 @@ $landingPreview = [
|
||||
<div class="eyebrow">Heute</div>
|
||||
<h2>Schnell weiter</h2>
|
||||
<div class="section-mini">
|
||||
<p class="section-mini__copy">Mitglieder, Buchungen und weitere Bereiche oeffnest du direkt ueber das Menue.</p>
|
||||
<p class="section-mini__copy">Mitglieder, Buchungen und weitere Bereiche öffnest du direkt über das Menü.</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="card">
|
||||
@@ -732,14 +820,14 @@ $landingPreview = [
|
||||
<h2>Dein Bereich</h2>
|
||||
<ul class="list">
|
||||
<li>Hier siehst du deinen Kontostand, letzte Buchungen und aktuelle Hinweise.</li>
|
||||
<li>Weitere Bereiche findest du direkt im Menue.</li>
|
||||
<li>Weitere Bereiche findest du direkt im Menü.</li>
|
||||
<li>Wenn dir etwas fehlt, wende dich an den Betreiber deines Bereichs.</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article class="card">
|
||||
<div class="eyebrow">Naechster Schritt</div>
|
||||
<div class="eyebrow">Nächster Schritt</div>
|
||||
<h2>Direkt weiter</h2>
|
||||
<p>Nutze das Menue fuer den naechsten Bereich.</p>
|
||||
<p>Nutze das Menü für den nächsten Bereich.</p>
|
||||
</article>
|
||||
<?php endif; ?>
|
||||
</section>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
'message' => 'Auswahl vor dem Einstieg.',
|
||||
'matches' => [
|
||||
['name' => 'Werk Berlin', 'domain' => 'berlin.kaffeeliste.de', 'login_mode' => 'oidc-first'],
|
||||
['name' => 'Werk Koeln', 'domain' => 'koeln.kaffeeliste.de', 'login_mode' => 'oidc-first'],
|
||||
['name' => 'Werk Köln', 'domain' => 'koeln.kaffeeliste.de', 'login_mode' => 'oidc-first'],
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -27,7 +27,7 @@
|
||||
<p class="hero__kicker">Anmeldung</p>
|
||||
<h2 class="hero__title">Einfach einsteigen.</h2>
|
||||
<p class="hero__lead">
|
||||
E-Mail eingeben, kurz pruefen, weitermachen.
|
||||
E-Mail eingeben, kurz prüfen, weitermachen.
|
||||
</p>
|
||||
</div>
|
||||
<div class="hero__meta">
|
||||
@@ -80,7 +80,7 @@
|
||||
<p class="timeline__meta">Die Anmeldung startet mit der Adresse.</p>
|
||||
</div>
|
||||
<div class="timeline__item">
|
||||
<p class="timeline__title">2. Pruefen</p>
|
||||
<p class="timeline__title">2. Prüfen</p>
|
||||
<p class="timeline__meta">Der passende Zugang wird zugeordnet.</p>
|
||||
</div>
|
||||
<div class="timeline__item">
|
||||
@@ -128,11 +128,11 @@
|
||||
|
||||
<article class="card">
|
||||
<p class="card__eyebrow">Kein Treffer</p>
|
||||
<h3>Sauberer Rueckweg</h3>
|
||||
<h3>Sauberer Rückweg</h3>
|
||||
<p class="muted">Wenn keine Zuordnung passt, geht es klar weiter statt im Leeren zu enden.</p>
|
||||
<div class="callout" style="margin-top: 16px;">
|
||||
<strong>Kontakt oder Einladung</strong>
|
||||
Die Anmeldung zeigt dann den naechsten klaren Schritt.
|
||||
Die Anmeldung zeigt dann den nächsten klaren Schritt.
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<section class="hero hero--split">
|
||||
<div class="hero__content">
|
||||
<div>
|
||||
<p class="hero__kicker">Uebersicht</p>
|
||||
<p class="hero__kicker">Übersicht</p>
|
||||
<h2 class="hero__title">Dein Bereich</h2>
|
||||
<p class="hero__lead">
|
||||
Die wichtigsten Werte auf einen Blick.
|
||||
@@ -23,12 +23,12 @@
|
||||
<article class="card metric metric--compact">
|
||||
<p class="metric__label">Status</p>
|
||||
<div class="metric__value">OK</div>
|
||||
<p class="muted">Alles laeuft normal.</p>
|
||||
<p class="muted">Alles läuft normal.</p>
|
||||
</article>
|
||||
<article class="card metric metric--compact">
|
||||
<p class="metric__label">Letzte Aktivitaet</p>
|
||||
<p class="metric__label">Letzte Aktivität</p>
|
||||
<div class="metric__value">Heute</div>
|
||||
<p class="muted">Neueste Aenderungen im Bereich.</p>
|
||||
<p class="muted">Neueste Änderungen im Bereich.</p>
|
||||
</article>
|
||||
</aside>
|
||||
</section>
|
||||
@@ -52,7 +52,7 @@
|
||||
<article class="card metric">
|
||||
<p class="metric__label">Letzte Buchung</p>
|
||||
<div class="metric__value">Heute</div>
|
||||
<p class="muted">Aktuelle Aktivitaet.</p>
|
||||
<p class="muted">Aktuelle Aktivität.</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<article class="table-card">
|
||||
<div class="table-card__header">
|
||||
<div>
|
||||
<p class="card__eyebrow">Aktivitaet</p>
|
||||
<p class="card__eyebrow">Aktivität</p>
|
||||
<h3>Letzte Buchungen</h3>
|
||||
</div>
|
||||
<span class="pill">Live</span>
|
||||
@@ -101,7 +101,7 @@
|
||||
|
||||
<article class="panel">
|
||||
<h3>Bereiche</h3>
|
||||
<p class="muted">Im Menue liegen die zentralen Arbeitsbereiche.</p>
|
||||
<p class="muted">Im Menü liegen die zentralen Arbeitsbereiche.</p>
|
||||
<div class="timeline timeline--tight">
|
||||
<div class="timeline__item">
|
||||
<p class="timeline__title">Mitglieder</p>
|
||||
@@ -117,7 +117,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="note" style="margin-top: 18px;">
|
||||
Die wichtigsten Zahlen sind hier, der Rest bleibt im Menue.
|
||||
Die wichtigsten Zahlen sind hier, der Rest bleibt im Menü.
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="color-scheme" content="light">
|
||||
<meta name="color-scheme" content="dark">
|
||||
<title>@yield('page_title', $title ?? 'Die Kaffeeliste')</title>
|
||||
@php
|
||||
$layoutAuth = $auth ?? (function_exists('app_auth_user') ? app_auth_user() : null);
|
||||
@@ -45,14 +45,22 @@
|
||||
<style>
|
||||
:root {
|
||||
{!! $layoutThemeCss !!}
|
||||
--line: rgba(44, 32, 23, 0.14);
|
||||
--line-strong: rgba(44, 32, 23, 0.2);
|
||||
--shadow: 0 18px 42px rgba(68, 48, 34, 0.08);
|
||||
--shadow-soft: 0 12px 26px rgba(68, 48, 34, 0.05);
|
||||
--radius-xl: 24px;
|
||||
--radius-lg: 18px;
|
||||
--line: rgba(143, 158, 191, 0.16);
|
||||
--line-strong: rgba(174, 189, 223, 0.26);
|
||||
--shadow: 0 24px 64px rgba(1, 6, 18, 0.36);
|
||||
--shadow-soft: 0 16px 34px rgba(1, 6, 18, 0.2);
|
||||
--radius-xl: 20px;
|
||||
--radius-lg: 14px;
|
||||
--sidebar-width: 292px;
|
||||
--content-width: 1260px;
|
||||
--surface-0: #05070d;
|
||||
--surface-1: rgba(8, 12, 22, 0.84);
|
||||
--surface-2: rgba(13, 18, 31, 0.92);
|
||||
--surface-3: rgba(17, 24, 40, 0.96);
|
||||
--surface-soft: rgba(255, 255, 255, 0.04);
|
||||
--text-strong: #f4f7ff;
|
||||
--text-soft: rgba(219, 228, 248, 0.74);
|
||||
--text-faint: rgba(190, 202, 226, 0.52);
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
@@ -60,21 +68,22 @@
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
color: var(--text);
|
||||
color: var(--text-strong);
|
||||
background:
|
||||
radial-gradient(circle at top left, rgba(var(--brand-rgb), 0.08), transparent 32%),
|
||||
linear-gradient(180deg, #f8f1e6 0%, var(--bg) 100%);
|
||||
font-family: "Trebuchet MS", "Aptos", "Segoe UI", sans-serif;
|
||||
radial-gradient(circle at top center, rgba(88, 122, 255, 0.2), transparent 26%),
|
||||
radial-gradient(circle at 18% 18%, rgba(var(--brand-rgb), 0.16), transparent 22%),
|
||||
linear-gradient(180deg, #05070d 0%, #0a0f1a 48%, #0d1320 100%);
|
||||
font-family: "Aptos", "Segoe UI", sans-serif;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, .hero__title, .brand__title {
|
||||
font-family: "Palatino Linotype", "Book Antiqua", Georgia, serif;
|
||||
letter-spacing: -0.02em;
|
||||
font-family: "Inter Tight", "Aptos", "Segoe UI", sans-serif;
|
||||
letter-spacing: -0.04em;
|
||||
}
|
||||
|
||||
a { color: var(--brand-strong); text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
a { color: inherit; text-decoration: none; }
|
||||
a:hover { text-decoration: none; }
|
||||
img { max-width: 100%; }
|
||||
|
||||
.app-shell {
|
||||
@@ -82,7 +91,7 @@
|
||||
margin: 14px auto;
|
||||
min-height: calc(100vh - 28px);
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.brand {
|
||||
@@ -93,52 +102,62 @@
|
||||
}
|
||||
|
||||
.brand__mark {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 14px;
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
border-radius: 10px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, var(--brand) 0%, #115e59 55%, var(--accent) 100%);
|
||||
box-shadow: 0 12px 26px rgba(45, 106, 79, 0.2);
|
||||
background: linear-gradient(135deg, #587aff 0%, #243a91 100%);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.brand__text { display: grid; gap: 3px; min-width: 0; }
|
||||
.brand__title { margin: 0; font-size: 1.06rem; font-weight: 700; letter-spacing: 0.01em; }
|
||||
.brand__subtitle { margin: 0; color: var(--muted); font-size: 0.92rem; }
|
||||
.brand__title { margin: 0; font-size: 1rem; font-weight: 700; letter-spacing: -0.03em; }
|
||||
.brand__subtitle { margin: 0; color: var(--text-soft); font-size: 0.88rem; }
|
||||
.brand--link { color: inherit; text-decoration: none; }
|
||||
.brand--link:hover { text-decoration: none; }
|
||||
|
||||
.site-shell {
|
||||
min-height: 100vh;
|
||||
padding: 14px 0 24px;
|
||||
padding: 0 0 24px;
|
||||
}
|
||||
|
||||
.site-header,
|
||||
.site-main,
|
||||
.app-footer {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.site-main {
|
||||
width: min(var(--content-width), calc(100% - 28px));
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.site-header {
|
||||
position: sticky;
|
||||
top: 14px;
|
||||
top: 0;
|
||||
z-index: 30;
|
||||
margin-bottom: 18px;
|
||||
width: 100vw;
|
||||
margin-left: calc(50% - 50vw);
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.site-header__inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 18px;
|
||||
padding: 16px 18px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 22px;
|
||||
background: rgba(255, 251, 244, 0.92);
|
||||
gap: 16px;
|
||||
width: 100%;
|
||||
min-height: 74px;
|
||||
margin: 0;
|
||||
padding: 0 24px;
|
||||
border: 0;
|
||||
border-bottom: 1px solid var(--line);
|
||||
border-radius: 0;
|
||||
background: rgba(8, 10, 18, 0.82);
|
||||
box-shadow: var(--shadow);
|
||||
backdrop-filter: blur(18px);
|
||||
}
|
||||
|
||||
.top-nav {
|
||||
@@ -152,26 +171,27 @@
|
||||
.top-nav__link {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.62rem 0.92rem;
|
||||
border-radius: 999px;
|
||||
min-height: 34px;
|
||||
padding: 0 0.34rem;
|
||||
border-radius: 6px;
|
||||
border: 1px solid transparent;
|
||||
color: var(--muted);
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
color: var(--text-soft);
|
||||
font-size: 0.96rem;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.top-nav__link:hover {
|
||||
text-decoration: none;
|
||||
color: var(--brand-strong);
|
||||
background: rgba(255, 255, 255, 0.78);
|
||||
border-color: rgba(var(--brand-rgb), 0.12);
|
||||
color: var(--text-strong);
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border-color: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
|
||||
.top-nav__link.is-active {
|
||||
color: var(--brand-strong);
|
||||
background: rgba(var(--brand-rgb), 0.08);
|
||||
border-color: rgba(var(--brand-rgb), 0.14);
|
||||
color: var(--text-strong);
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-color: rgba(255, 255, 255, 0.12);
|
||||
}
|
||||
|
||||
.site-actions {
|
||||
@@ -197,14 +217,14 @@
|
||||
gap: 8px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--line);
|
||||
background: var(--bg-soft);
|
||||
background: var(--surface-soft);
|
||||
padding: 0.42rem 0.75rem;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
color: var(--brand-strong);
|
||||
color: var(--text-strong);
|
||||
}
|
||||
|
||||
.badge--solid { background: var(--brand); color: #fff; border-color: transparent; }
|
||||
.badge--solid { background: linear-gradient(135deg, #587aff 0%, #243a91 100%); color: #fff; border-color: transparent; }
|
||||
|
||||
.sidebar-nav { display: grid; gap: 6px; align-content: start; }
|
||||
|
||||
@@ -282,13 +302,14 @@
|
||||
gap: 10px;
|
||||
list-style: none;
|
||||
cursor: pointer;
|
||||
padding: 0.78rem 1rem;
|
||||
border-radius: 999px;
|
||||
min-height: 38px;
|
||||
padding: 0.45rem 0.72rem;
|
||||
border-radius: 10px;
|
||||
border: 1px solid var(--line-strong);
|
||||
background: rgba(255, 255, 255, 0.94);
|
||||
color: var(--text);
|
||||
font-size: 0.94rem;
|
||||
font-weight: 700;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
color: var(--text-strong);
|
||||
font-size: 0.92rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.mobile-nav__toggle::-webkit-details-marker { display: none; }
|
||||
@@ -309,9 +330,9 @@
|
||||
top: calc(100% + 12px);
|
||||
width: min(320px, calc(100vw - 32px));
|
||||
padding: 16px;
|
||||
border-radius: 24px;
|
||||
border-radius: 18px;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(255, 252, 246, 0.98);
|
||||
background: var(--surface-3);
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
@@ -323,9 +344,9 @@
|
||||
.mobile-nav__stack .top-nav__link {
|
||||
justify-content: flex-start;
|
||||
padding: 0.78rem 0.92rem;
|
||||
border: 1px solid rgba(44, 32, 23, 0.08);
|
||||
background: rgba(255, 255, 255, 0.78);
|
||||
color: var(--text);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
color: var(--text-strong);
|
||||
}
|
||||
|
||||
.mobile-nav__footer {
|
||||
@@ -339,20 +360,20 @@
|
||||
input[type="submit"] {
|
||||
appearance: none;
|
||||
border: 0;
|
||||
border-radius: 12px;
|
||||
padding: 0.78rem 1.05rem;
|
||||
background: linear-gradient(135deg, var(--brand) 0%, var(--brand-strong) 100%);
|
||||
border-radius: 10px;
|
||||
padding: 0.72rem 1rem;
|
||||
background: linear-gradient(135deg, #587aff 0%, #243a91 100%);
|
||||
color: #fff;
|
||||
font: inherit;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 12px 24px rgba(var(--brand-rgb), 0.18);
|
||||
box-shadow: 0 12px 24px rgba(36, 58, 145, 0.22);
|
||||
}
|
||||
|
||||
.button--ghost {
|
||||
background: transparent;
|
||||
color: var(--brand-strong);
|
||||
border: 1px solid rgba(var(--brand-rgb), 0.18);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
color: var(--text-strong);
|
||||
border: 1px solid rgba(255, 255, 255, 0.12);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
@@ -362,11 +383,10 @@
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
margin-bottom: 28px;
|
||||
padding: 22px;
|
||||
padding: 20px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 22px;
|
||||
background:
|
||||
linear-gradient(135deg, rgba(255, 251, 244, 0.98), rgba(252, 247, 240, 0.95));
|
||||
border-radius: 18px;
|
||||
background: linear-gradient(135deg, rgba(14, 20, 34, 0.98), rgba(10, 15, 26, 0.96));
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
@@ -386,7 +406,7 @@
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.15em;
|
||||
font-size: 0.8rem;
|
||||
color: var(--accent);
|
||||
color: #8aa0d0;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
@@ -400,7 +420,7 @@
|
||||
.hero__lead {
|
||||
margin: 0;
|
||||
max-width: 68ch;
|
||||
color: var(--muted);
|
||||
color: var(--text-soft);
|
||||
font-size: 1.02rem;
|
||||
}
|
||||
|
||||
@@ -416,10 +436,10 @@
|
||||
.form-panel,
|
||||
.table-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 16px;
|
||||
background: var(--bg-elevated);
|
||||
border-radius: 14px;
|
||||
background: var(--surface-2);
|
||||
box-shadow: var(--shadow);
|
||||
padding: 18px;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.card__eyebrow {
|
||||
@@ -427,7 +447,7 @@
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
color: var(--accent);
|
||||
color: #8aa0d0;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
@@ -439,7 +459,7 @@
|
||||
}
|
||||
|
||||
.metric__label,
|
||||
.muted { color: var(--muted); }
|
||||
.muted { color: var(--text-soft); }
|
||||
|
||||
.list-reset { margin: 0; padding: 0; list-style: none; }
|
||||
.list-reset li + li { margin-top: 12px; }
|
||||
@@ -452,9 +472,9 @@
|
||||
gap: 12px;
|
||||
align-items: flex-start;
|
||||
padding: 12px 14px;
|
||||
border-radius: 14px;
|
||||
background: rgba(255, 255, 255, 0.78);
|
||||
border: 1px solid rgba(31, 41, 51, 0.08);
|
||||
border-radius: 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
.feature-list__badge {
|
||||
@@ -464,8 +484,8 @@
|
||||
border-radius: 12px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: rgba(15, 118, 110, 0.1);
|
||||
color: var(--brand-strong);
|
||||
background: rgba(88, 122, 255, 0.12);
|
||||
color: #d9e2ff;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
@@ -476,7 +496,7 @@
|
||||
|
||||
.feature-list__copy {
|
||||
margin: 0;
|
||||
color: var(--muted);
|
||||
color: var(--text-soft);
|
||||
font-size: 0.94rem;
|
||||
}
|
||||
|
||||
@@ -488,9 +508,9 @@
|
||||
|
||||
.auth-summary__card {
|
||||
padding: 16px;
|
||||
border-radius: 18px;
|
||||
background: rgba(255, 255, 255, 0.75);
|
||||
border: 1px solid rgba(31, 41, 51, 0.08);
|
||||
border-radius: 14px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
.tenant-grid { display: grid; gap: 12px; }
|
||||
@@ -501,21 +521,21 @@
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
padding: 12px 14px;
|
||||
border-radius: 14px;
|
||||
background: rgba(255, 255, 255, 0.82);
|
||||
border: 1px solid rgba(31, 41, 51, 0.08);
|
||||
border-radius: 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
.tenant-row__meta { display: grid; gap: 4px; }
|
||||
.tenant-row__title { margin: 0; font-weight: 700; }
|
||||
.tenant-row__copy { margin: 0; color: var(--muted); font-size: 0.92rem; }
|
||||
.tenant-row__copy { margin: 0; color: var(--text-soft); font-size: 0.92rem; }
|
||||
|
||||
.callout {
|
||||
padding: 14px 16px;
|
||||
border-radius: 16px;
|
||||
background: rgba(45, 106, 79, 0.06);
|
||||
border: 1px solid rgba(45, 106, 79, 0.12);
|
||||
color: var(--brand-strong);
|
||||
border-radius: 14px;
|
||||
background: rgba(88, 122, 255, 0.08);
|
||||
border: 1px solid rgba(88, 122, 255, 0.14);
|
||||
color: var(--text-strong);
|
||||
}
|
||||
|
||||
.callout strong {
|
||||
@@ -525,7 +545,7 @@
|
||||
|
||||
.metric--compact { padding: 18px 20px; }
|
||||
.toolbar { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }
|
||||
.toolbar .badge { background: #fff; }
|
||||
.toolbar .badge { background: rgba(255, 255, 255, 0.05); }
|
||||
|
||||
.table-card { overflow: hidden; padding: 0; }
|
||||
|
||||
@@ -560,9 +580,9 @@
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--muted);
|
||||
color: var(--text-soft);
|
||||
font-weight: 700;
|
||||
background: rgba(249, 242, 231, 0.6);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
tr:last-child td { border-bottom: 0; }
|
||||
@@ -573,14 +593,14 @@
|
||||
gap: 8px;
|
||||
padding: 0.38rem 0.65rem;
|
||||
border-radius: 999px;
|
||||
background: rgba(15, 118, 110, 0.11);
|
||||
color: var(--brand-strong);
|
||||
background: rgba(88, 122, 255, 0.12);
|
||||
color: #d9e2ff;
|
||||
font-weight: 700;
|
||||
font-size: 0.82rem;
|
||||
}
|
||||
|
||||
.status--warning { background: rgba(180, 83, 9, 0.12); color: #92400e; }
|
||||
.status--danger { background: rgba(185, 28, 28, 0.12); color: #991b1b; }
|
||||
.status--warning { background: rgba(224, 154, 70, 0.14); color: #ffd7a1; }
|
||||
.status--danger { background: rgba(195, 82, 82, 0.16); color: #ffd1d1; }
|
||||
|
||||
.form-grid { display: grid; gap: 16px; }
|
||||
.field { display: grid; gap: 8px; }
|
||||
@@ -590,12 +610,12 @@
|
||||
select,
|
||||
textarea {
|
||||
width: 100%;
|
||||
border: 1px solid rgba(31, 41, 51, 0.14);
|
||||
border-radius: 16px;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
padding: 0.85rem 0.95rem;
|
||||
font: inherit;
|
||||
color: var(--text);
|
||||
color: var(--text-strong);
|
||||
}
|
||||
|
||||
textarea { min-height: 120px; resize: vertical; }
|
||||
@@ -603,9 +623,9 @@
|
||||
.note {
|
||||
padding: 14px 16px;
|
||||
border-radius: 16px;
|
||||
background: rgba(15, 118, 110, 0.08);
|
||||
border: 1px solid rgba(15, 118, 110, 0.12);
|
||||
color: var(--brand-strong);
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
color: var(--text-soft);
|
||||
}
|
||||
|
||||
.timeline { display: grid; gap: 14px; }
|
||||
@@ -615,25 +635,27 @@
|
||||
display: grid;
|
||||
gap: 6px;
|
||||
padding: 14px 16px;
|
||||
border-radius: 16px;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
border: 1px solid rgba(31, 41, 51, 0.08);
|
||||
border-radius: 14px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
.timeline__title { margin: 0; font-weight: 700; }
|
||||
.timeline__meta { margin: 0; color: var(--muted); font-size: 0.92rem; }
|
||||
.timeline__meta { margin: 0; color: var(--text-soft); font-size: 0.92rem; }
|
||||
|
||||
.app-footer { padding: 0 0 12px; }
|
||||
.app-footer { padding: 6px 0 12px; }
|
||||
|
||||
.app-footer__inner {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
flex-wrap: wrap;
|
||||
width: min(var(--content-width), calc(100% - 28px));
|
||||
margin: 0 auto;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 18px;
|
||||
color: var(--muted);
|
||||
font-size: 0.92rem;
|
||||
padding-top: 14px;
|
||||
color: var(--text-faint);
|
||||
font-size: 0.88rem;
|
||||
}
|
||||
|
||||
.marketing-shell {
|
||||
@@ -657,8 +679,9 @@
|
||||
gap: 14px;
|
||||
height: 88px;
|
||||
min-height: 88px;
|
||||
width: 100%;
|
||||
margin: 0 0 20px;
|
||||
width: 100vw;
|
||||
margin-left: calc(50% - 50vw);
|
||||
margin-bottom: 20px;
|
||||
padding: 0 18px;
|
||||
border: 0;
|
||||
border-bottom: 1px solid rgba(137, 154, 188, 0.18);
|
||||
@@ -838,18 +861,14 @@
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.site-shell {
|
||||
padding: 10px 0 18px;
|
||||
}
|
||||
|
||||
.site-header,
|
||||
.site-main,
|
||||
.app-footer {
|
||||
width: calc(100% - 20px);
|
||||
padding: 0 0 18px;
|
||||
}
|
||||
|
||||
.site-header__inner {
|
||||
padding: 14px 16px;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
min-height: 68px;
|
||||
padding: 0 16px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.top-nav { display: none; }
|
||||
@@ -878,7 +897,7 @@
|
||||
.marketing-bar {
|
||||
height: 72px;
|
||||
min-height: 72px;
|
||||
margin: 0 0 16px;
|
||||
margin-bottom: 16px;
|
||||
padding: 0 12px;
|
||||
}
|
||||
.marketing-nav,
|
||||
@@ -890,6 +909,10 @@
|
||||
.marketing-footer__inner {
|
||||
width: 100%;
|
||||
}
|
||||
.site-main,
|
||||
.app-footer__inner {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.app-body { gap: 14px; }
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<h2 class="hero__title">Mitglieder</h2>
|
||||
<p class="hero__lead">
|
||||
Hier sind aktive Mitglieder, Rollen und Status klar gegliedert. Diese Sicht entspricht der alten
|
||||
Mitgliederverwaltung, nur als SaaS-taugliche, aufgeraeumte Oberflaeche.
|
||||
Mitgliederverwaltung, nur als SaaS-taugliche, aufgeräumte Oberfläche.
|
||||
</p>
|
||||
</div>
|
||||
<div class="toolbar">
|
||||
@@ -23,7 +23,7 @@
|
||||
<article class="card metric">
|
||||
<p class="metric__label">Aktive Mitglieder</p>
|
||||
<div class="metric__value">18</div>
|
||||
<p class="muted">Fuer Buchungen, Auswertungen und Benachrichtigungen freigeschaltet.</p>
|
||||
<p class="muted">Für Buchungen, Auswertungen und Benachrichtigungen freigeschaltet.</p>
|
||||
</article>
|
||||
<article class="card metric">
|
||||
<p class="metric__label">Sperrstatus</p>
|
||||
|
||||
@@ -19,9 +19,12 @@
|
||||
body{
|
||||
margin:0;
|
||||
min-height:100vh;
|
||||
color:var(--ink);
|
||||
color:#edf2ff;
|
||||
font-family:"Aptos","Segoe UI",sans-serif;
|
||||
background:linear-gradient(180deg,#f9f6ef 0%,var(--bg) 100%);
|
||||
background:
|
||||
radial-gradient(circle at top center, rgba(88,122,255,.18), transparent 26%),
|
||||
radial-gradient(circle at 18% 12%, rgba(var(--brand-rgb),.16), transparent 22%),
|
||||
linear-gradient(180deg,#05070d 0%,#0b1220 48%,#0d1524 100%);
|
||||
}
|
||||
a{color:inherit;text-decoration:none}
|
||||
.button,button{
|
||||
@@ -29,7 +32,7 @@
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
padding:10px 14px;
|
||||
border-radius:999px;
|
||||
border-radius:10px;
|
||||
border:1px solid transparent;
|
||||
background:var(--brand);
|
||||
color:#fff;
|
||||
@@ -38,66 +41,80 @@
|
||||
cursor:pointer;
|
||||
}
|
||||
.button--ghost{
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
border-color:rgba(var(--brand-rgb),.18);
|
||||
background:transparent;
|
||||
color:#f4f7ff;
|
||||
border-color:rgba(201,214,255,.16);
|
||||
}
|
||||
.page-shell{
|
||||
width:min(1460px,calc(100vw - 32px));
|
||||
margin:20px auto 40px;
|
||||
margin:0 auto 40px;
|
||||
display:grid;
|
||||
gap:20px;
|
||||
gap:18px;
|
||||
}
|
||||
.site-header{
|
||||
position:sticky;
|
||||
top:0;
|
||||
z-index:30;
|
||||
width:100vw;
|
||||
margin-left:calc(50% - 50vw);
|
||||
}
|
||||
.site-header{position:sticky;top:20px;z-index:20}
|
||||
.site-header__inner{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:space-between;
|
||||
gap:18px;
|
||||
padding:16px 18px;
|
||||
border:1px solid var(--line);
|
||||
border-radius:24px;
|
||||
background:rgba(255,251,244,.96);
|
||||
box-shadow:var(--shadow);
|
||||
width:100%;
|
||||
margin:0;
|
||||
min-height:72px;
|
||||
padding:12px 24px;
|
||||
border:0;
|
||||
border-bottom:1px solid rgba(137,154,188,.18);
|
||||
border-radius:0;
|
||||
background:rgba(8,10,18,.86);
|
||||
box-shadow:none;
|
||||
backdrop-filter:blur(16px);
|
||||
}
|
||||
.site-brand{display:flex;align-items:center;gap:14px;min-width:0}
|
||||
.site-brand{display:flex;align-items:center;gap:12px;min-width:0}
|
||||
.site-brand__mark{
|
||||
width:44px;
|
||||
height:44px;
|
||||
border-radius:16px;
|
||||
width:36px;
|
||||
height:36px;
|
||||
border-radius:10px;
|
||||
display:grid;
|
||||
place-items:center;
|
||||
background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);
|
||||
background:linear-gradient(135deg,#587aff 0%,#243a91 100%);
|
||||
color:#fff;
|
||||
font-weight:800;
|
||||
box-shadow:0 14px 28px rgba(var(--brand-rgb),.18);
|
||||
box-shadow:none;
|
||||
}
|
||||
.site-brand__title{margin:0;font-family:Georgia,serif;font-size:1.1rem;letter-spacing:-.02em}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:var(--muted);font-size:.92rem}
|
||||
.site-brand__title{margin:0;font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;font-size:1.08rem;letter-spacing:-.04em;color:#f4f7ff}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:rgba(219,228,248,.72);font-size:.9rem}
|
||||
.site-nav,.site-actions,.actions,.context{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
|
||||
.site-nav__link{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
padding:10px 14px;
|
||||
border-radius:999px;
|
||||
min-height:34px;
|
||||
padding:0 .3rem;
|
||||
border-radius:8px;
|
||||
border:1px solid transparent;
|
||||
color:var(--muted);
|
||||
color:rgba(231,238,255,.8);
|
||||
font-weight:700;
|
||||
font-size:.96rem;
|
||||
}
|
||||
.site-nav__link:hover{text-decoration:none;color:var(--brand);background:rgba(255,255,255,.82);border-color:rgba(var(--brand-rgb),.14)}
|
||||
.site-nav__link.active{background:rgba(var(--brand-rgb),.10);color:var(--brand);border-color:rgba(var(--brand-rgb),.18)}
|
||||
.site-nav__link:hover{text-decoration:none;color:#f4f7ff;background:rgba(255,255,255,.06);border-color:rgba(201,214,255,.12)}
|
||||
.site-nav__link.active{background:rgba(255,255,255,.08);color:#f4f7ff;border-color:rgba(201,214,255,.12)}
|
||||
.hero,.card,.alert{
|
||||
border:1px solid var(--line);
|
||||
border-radius:var(--radius);
|
||||
background:var(--card);
|
||||
box-shadow:var(--shadow);
|
||||
border:1px solid rgba(163,183,255,.12);
|
||||
border-radius:16px;
|
||||
background:rgba(14,20,34,.86);
|
||||
box-shadow:0 16px 40px rgba(2,5,12,.34);
|
||||
}
|
||||
.hero__title,.card h2,.card h3{
|
||||
font-family:Georgia,serif;
|
||||
letter-spacing:-.02em;
|
||||
font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;
|
||||
letter-spacing:-.04em;
|
||||
color:#f4f7ff;
|
||||
}
|
||||
.muted,p{color:var(--muted)}
|
||||
.muted,p{color:rgba(219,228,246,.74)}
|
||||
.site-mobile{display:none;position:relative}
|
||||
.site-mobile[open]{z-index:20}
|
||||
.site-toggle{
|
||||
@@ -106,11 +123,11 @@
|
||||
gap:12px;
|
||||
cursor:pointer;
|
||||
list-style:none;
|
||||
padding:12px 14px;
|
||||
border-radius:16px;
|
||||
border:1px solid rgba(var(--brand-rgb),.12);
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
padding:10px 12px;
|
||||
border-radius:10px;
|
||||
border:1px solid rgba(201,214,255,.14);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#f4f7ff;
|
||||
font-weight:700;
|
||||
}
|
||||
.site-toggle::-webkit-details-marker{display:none}
|
||||
@@ -129,24 +146,24 @@
|
||||
top:calc(100% + 12px);
|
||||
width:min(320px,calc(100vw - 32px));
|
||||
padding:14px;
|
||||
border-radius:18px;
|
||||
border:1px solid var(--line);
|
||||
background:#fffdf9;
|
||||
box-shadow:var(--shadow);
|
||||
border-radius:16px;
|
||||
border:1px solid rgba(163,183,255,.14);
|
||||
background:rgba(8,10,18,.96);
|
||||
box-shadow:0 18px 36px rgba(1,5,13,.45);
|
||||
}
|
||||
.site-stack{display:grid;gap:10px}
|
||||
.site-stack .site-nav__link{justify-content:flex-start;background:rgba(255,255,255,.78);border-color:rgba(37,24,15,.08);color:var(--ink)}
|
||||
.site-stack .site-nav__link{justify-content:flex-start;padding:.6rem .75rem;background:rgba(255,255,255,.04);border-color:rgba(201,214,255,.1);color:#f4f7ff}
|
||||
.site-footer-actions{display:flex;justify-content:flex-end;margin-top:12px}
|
||||
.content{min-width:0;display:grid;gap:18px}
|
||||
.hero{
|
||||
padding:24px;
|
||||
display:grid;
|
||||
gap:18px;
|
||||
background:linear-gradient(180deg,#fffdf8 0%,#f9f4ea 100%);
|
||||
background:linear-gradient(180deg,rgba(18,25,42,.96),rgba(13,19,33,.92));
|
||||
}
|
||||
.hero__kicker{
|
||||
margin:0 0 10px;
|
||||
color:var(--accent);
|
||||
color:#8aa0d0;
|
||||
text-transform:uppercase;
|
||||
letter-spacing:.16em;
|
||||
font-size:.8rem;
|
||||
@@ -176,8 +193,8 @@
|
||||
.metric{
|
||||
padding:18px;
|
||||
border-radius:16px;
|
||||
border:1px solid var(--line);
|
||||
background:#fff;
|
||||
border:1px solid rgba(163,183,255,.12);
|
||||
background:rgba(255,255,255,.04);
|
||||
display:grid;
|
||||
gap:8px;
|
||||
}
|
||||
@@ -189,40 +206,40 @@
|
||||
border-radius:999px;
|
||||
font-size:.86rem;
|
||||
font-weight:700;
|
||||
border:1px solid rgba(var(--brand-rgb),.12);
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
border:1px solid rgba(201,214,255,.12);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#dfe8ff;
|
||||
}
|
||||
.badge--neutral{background:rgba(var(--brand-rgb),.1);color:var(--brand)}
|
||||
.badge--success{background:rgba(17,98,61,.12);color:#11623d}
|
||||
.badge--warning{background:rgba(163,75,18,.12);color:#98510c}
|
||||
.badge--danger{background:rgba(154,31,31,.12);color:#9a1f1f}
|
||||
.badge--neutral{background:rgba(88,122,255,.14);color:#dfe8ff}
|
||||
.badge--success{background:rgba(88,122,255,.14);color:#dfe8ff}
|
||||
.badge--warning{background:rgba(180,83,9,.18);color:#f5c68a}
|
||||
.badge--danger{background:rgba(185,28,28,.18);color:#f2a2a2}
|
||||
.alert{padding:16px 18px}
|
||||
.alert-success{background:rgba(17,98,61,.08)}
|
||||
.alert-warning{background:rgba(163,75,18,.08)}
|
||||
.alert-error{background:rgba(154,31,31,.08)}
|
||||
.alert-info{background:rgba(var(--brand-rgb),.06)}
|
||||
.alert-success{background:rgba(88,122,255,.12)}
|
||||
.alert-warning{background:rgba(180,83,9,.16)}
|
||||
.alert-error{background:rgba(185,28,28,.16)}
|
||||
.alert-info{background:rgba(88,122,255,.1)}
|
||||
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:18px}
|
||||
.stack{display:grid;gap:12px}
|
||||
.table{overflow-x:auto}
|
||||
table{width:100%;border-collapse:collapse;min-width:860px}
|
||||
th,td{padding:13px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
|
||||
th{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
|
||||
th,td{padding:13px 10px;border-bottom:1px solid rgba(163,183,255,.1);text-align:left;vertical-align:top}
|
||||
th{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:rgba(193,205,232,.7)}
|
||||
label{display:flex;flex-direction:column;gap:8px;font-weight:700}
|
||||
input,select,textarea{width:100%;padding:12px 14px;border-radius:16px;border:1px solid rgba(36,22,14,.15);font:inherit;background:#fffdfa;color:var(--ink)}
|
||||
input,select,textarea{width:100%;padding:12px 14px;border-radius:14px;border:1px solid rgba(163,183,255,.14);font:inherit;background:rgba(9,13,24,.82);color:#f4f7ff}
|
||||
textarea{min-height:120px}
|
||||
.timeline{display:grid;gap:12px}
|
||||
.timeline__item{padding:14px 16px;border-radius:16px;background:#fff;border:1px solid rgba(31,41,51,.08)}
|
||||
.timeline__meta{margin:0;color:var(--muted);font-size:.94rem;line-height:1.6}
|
||||
.timeline__item{padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid rgba(163,183,255,.12)}
|
||||
.timeline__meta{margin:0;color:rgba(219,228,246,.74);font-size:.94rem;line-height:1.6}
|
||||
.timeline__title{margin:0 0 6px;font-weight:800}
|
||||
.pill{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
padding:7px 12px;
|
||||
border-radius:999px;
|
||||
border:1px solid rgba(var(--brand-rgb),.15);
|
||||
background:rgba(var(--brand-rgb),.07);
|
||||
color:var(--brand);
|
||||
border:1px solid rgba(201,214,255,.12);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#dfe8ff;
|
||||
font-size:.84rem;
|
||||
font-weight:700;
|
||||
}
|
||||
@@ -233,10 +250,10 @@
|
||||
.status.is-waiting::before{background:#9a1f1f}
|
||||
.status.is-closed::before{background:#11623d}
|
||||
.mono{font-family:Consolas,monospace}
|
||||
.footer{margin-top:18px;text-align:center;color:var(--muted);font-size:.92rem}
|
||||
.footer{margin-top:18px;text-align:center;color:rgba(209,217,235,.68);font-size:.92rem}
|
||||
@media(max-width:1040px){
|
||||
.page-shell{width:min(100vw - 20px,1460px)}
|
||||
.site-header__inner{align-items:flex-start;padding:14px 16px}
|
||||
.site-header__inner{align-items:center;padding:12px 16px;min-height:68px;width:100%}
|
||||
.site-nav{display:none}
|
||||
.site-mobile{display:block}
|
||||
.split,.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}
|
||||
|
||||
@@ -20,17 +20,20 @@
|
||||
margin:0;
|
||||
min-height:100vh;
|
||||
font-family:"Aptos","Segoe UI",sans-serif;
|
||||
color:var(--ink);
|
||||
background:linear-gradient(180deg,#f9f6ef 0%,var(--bg) 100%);
|
||||
color:#edf2ff;
|
||||
background:
|
||||
radial-gradient(circle at top center, rgba(88,122,255,.18), transparent 26%),
|
||||
radial-gradient(circle at 18% 12%, rgba(var(--brand-rgb),.16), transparent 22%),
|
||||
linear-gradient(180deg,#05070d 0%,#0b1220 48%,#0d1524 100%);
|
||||
}
|
||||
a{color:inherit;text-decoration:none}
|
||||
h1,h2,h3{font-family:Georgia,serif;letter-spacing:-.02em}
|
||||
h1,h2,h3{font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;letter-spacing:-.04em}
|
||||
.button,button{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
padding:10px 14px;
|
||||
border-radius:999px;
|
||||
border-radius:10px;
|
||||
border:1px solid transparent;
|
||||
background:var(--brand);
|
||||
color:#fff;
|
||||
@@ -39,55 +42,68 @@
|
||||
cursor:pointer;
|
||||
}
|
||||
.button--ghost{
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
border-color:rgba(var(--brand-rgb),.18);
|
||||
background:transparent;
|
||||
color:#f4f7ff;
|
||||
border-color:rgba(201,214,255,.16);
|
||||
}
|
||||
.page-shell{
|
||||
width:min(1460px,calc(100vw - 32px));
|
||||
margin:20px auto 40px;
|
||||
margin:0 auto 40px;
|
||||
display:grid;
|
||||
gap:20px;
|
||||
gap:18px;
|
||||
}
|
||||
.site-header{
|
||||
position:sticky;
|
||||
top:0;
|
||||
z-index:30;
|
||||
width:100vw;
|
||||
margin-left:calc(50% - 50vw);
|
||||
}
|
||||
.site-header{position:sticky;top:20px;z-index:20}
|
||||
.site-header__inner{
|
||||
width:100%;
|
||||
margin:0;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:space-between;
|
||||
gap:18px;
|
||||
padding:16px 18px;
|
||||
border:1px solid var(--line);
|
||||
border-radius:24px;
|
||||
background:rgba(255,251,244,.96);
|
||||
box-shadow:var(--shadow);
|
||||
min-height:72px;
|
||||
padding:12px 24px;
|
||||
border:0;
|
||||
border-bottom:1px solid rgba(137,154,188,.18);
|
||||
border-radius:0;
|
||||
background:rgba(8,10,18,.86);
|
||||
box-shadow:none;
|
||||
backdrop-filter:blur(16px);
|
||||
}
|
||||
.site-brand{display:flex;align-items:center;gap:14px;min-width:0}
|
||||
.site-brand{display:flex;align-items:center;gap:12px;min-width:0}
|
||||
.site-brand__mark{
|
||||
width:44px;
|
||||
height:44px;
|
||||
border-radius:16px;
|
||||
width:36px;
|
||||
height:36px;
|
||||
border-radius:10px;
|
||||
display:grid;
|
||||
place-items:center;
|
||||
background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);
|
||||
background:linear-gradient(135deg,#587aff 0%,#243a91 100%);
|
||||
color:#fff;
|
||||
font-weight:800;
|
||||
box-shadow:0 14px 28px rgba(var(--brand-rgb),.18);
|
||||
box-shadow:none;
|
||||
}
|
||||
.site-brand__title{margin:0;font-size:1.1rem}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:var(--muted);font-size:.92rem}
|
||||
.site-brand__title{margin:0;font-size:1.08rem;color:#f4f7ff}
|
||||
.site-brand__subtitle{margin:2px 0 0;color:rgba(219,228,248,.72);font-size:.9rem}
|
||||
.site-nav,.site-actions,.actions,.context,.meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
|
||||
.site-nav__link{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
padding:10px 14px;
|
||||
border-radius:999px;
|
||||
min-height:34px;
|
||||
padding:0 .3rem;
|
||||
border-radius:8px;
|
||||
border:1px solid transparent;
|
||||
color:var(--muted);
|
||||
color:rgba(231,238,255,.8);
|
||||
font-weight:700;
|
||||
font-size:.96rem;
|
||||
}
|
||||
.site-nav__link:hover{text-decoration:none;color:var(--brand);background:rgba(255,255,255,.82);border-color:rgba(var(--brand-rgb),.14)}
|
||||
.site-nav__link.active{background:rgba(var(--brand-rgb),.10);color:var(--brand);border-color:rgba(var(--brand-rgb),.18)}
|
||||
.site-nav__link:hover{text-decoration:none;color:#f4f7ff;background:rgba(255,255,255,.06);border-color:rgba(201,214,255,.12)}
|
||||
.site-nav__link.active{background:rgba(255,255,255,.08);color:#f4f7ff;border-color:rgba(201,214,255,.12)}
|
||||
.site-mobile{display:none;position:relative}
|
||||
.site-mobile[open]{z-index:20}
|
||||
.site-toggle{
|
||||
@@ -96,11 +112,11 @@
|
||||
gap:12px;
|
||||
cursor:pointer;
|
||||
list-style:none;
|
||||
padding:12px 14px;
|
||||
border-radius:16px;
|
||||
border:1px solid rgba(var(--brand-rgb),.12);
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
padding:10px 12px;
|
||||
border-radius:10px;
|
||||
border:1px solid rgba(201,214,255,.14);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#f4f7ff;
|
||||
font-weight:700;
|
||||
}
|
||||
.site-toggle::-webkit-details-marker{display:none}
|
||||
@@ -119,95 +135,96 @@
|
||||
top:calc(100% + 12px);
|
||||
width:min(320px,calc(100vw - 32px));
|
||||
padding:14px;
|
||||
border-radius:18px;
|
||||
border:1px solid var(--line);
|
||||
background:#fffdf9;
|
||||
box-shadow:var(--shadow);
|
||||
border-radius:16px;
|
||||
border:1px solid rgba(163,183,255,.14);
|
||||
background:rgba(8,10,18,.96);
|
||||
box-shadow:0 18px 36px rgba(1,5,13,.45);
|
||||
}
|
||||
.site-stack{display:grid;gap:10px}
|
||||
.site-stack .site-nav__link{
|
||||
justify-content:flex-start;
|
||||
background:rgba(255,255,255,.78);
|
||||
border-color:rgba(37,24,15,.08);
|
||||
color:var(--ink);
|
||||
padding:.6rem .75rem;
|
||||
background:rgba(255,255,255,.04);
|
||||
border-color:rgba(201,214,255,.1);
|
||||
color:#f4f7ff;
|
||||
}
|
||||
.site-footer-actions{display:flex;justify-content:flex-end;margin-top:12px}
|
||||
.hero,.card,.table-card,.note{
|
||||
border:1px solid var(--line);
|
||||
border-radius:var(--radius);
|
||||
background:var(--card);
|
||||
box-shadow:var(--shadow);
|
||||
border:1px solid rgba(163,183,255,.12);
|
||||
border-radius:16px;
|
||||
background:rgba(14,20,34,.86);
|
||||
box-shadow:0 16px 40px rgba(2,5,12,.34);
|
||||
}
|
||||
.hero__title,.card h2,.card h3{font-family:Georgia,serif;letter-spacing:-.02em}
|
||||
.sidebar__subtitle,.muted{color:var(--muted)}
|
||||
.hero__title,.card h2,.card h3{font-family:"Inter Tight","Aptos","Segoe UI",sans-serif;letter-spacing:-.04em;color:#f4f7ff}
|
||||
.sidebar__subtitle,.muted{color:rgba(219,228,246,.74)}
|
||||
.content{min-width:0;display:grid;gap:18px}
|
||||
.hero{
|
||||
display:grid;
|
||||
grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);
|
||||
gap:20px;
|
||||
padding:24px;
|
||||
background:linear-gradient(180deg,#fffdf8 0%,#f9f4ea 100%);
|
||||
background:linear-gradient(180deg,rgba(18,25,42,.96),rgba(13,19,33,.92));
|
||||
}
|
||||
.hero__kicker{
|
||||
margin:0 0 10px;
|
||||
color:var(--accent);
|
||||
color:#8aa0d0;
|
||||
text-transform:uppercase;
|
||||
letter-spacing:.15em;
|
||||
font-size:.8rem;
|
||||
font-weight:800;
|
||||
}
|
||||
.hero__title{margin:0 0 12px;font-size:clamp(1.9rem,4vw,3rem);line-height:1.05}
|
||||
.hero__lead{margin:0;color:var(--muted);max-width:70ch;line-height:1.7}
|
||||
.hero__lead{margin:0;color:rgba(219,228,246,.74);max-width:70ch;line-height:1.7}
|
||||
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}
|
||||
.grid{display:grid;gap:18px}
|
||||
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
|
||||
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
|
||||
.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
|
||||
.metric{padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff}
|
||||
.metric__label{color:var(--muted)}
|
||||
.metric{padding:18px;border:1px solid rgba(163,183,255,.12);border-radius:16px;background:rgba(255,255,255,.04)}
|
||||
.metric__label{color:rgba(219,228,246,.74)}
|
||||
.metric__value{font-size:1.9rem;font-weight:800;margin:6px 0 8px}
|
||||
.table-card,.card{padding:22px}
|
||||
.table-card__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:16px;flex-wrap:wrap}
|
||||
table{width:100%;border-collapse:collapse}
|
||||
th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
|
||||
th{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
|
||||
.status{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:rgba(var(--brand-rgb),.1);color:var(--brand);font-weight:700;font-size:.84rem}
|
||||
.status--warning{background:rgba(var(--accent-rgb),.14);color:#8c6500}
|
||||
.status--success{background:rgba(var(--brand-rgb),.12);color:var(--brand)}
|
||||
th,td{padding:12px 10px;border-bottom:1px solid rgba(163,183,255,.1);text-align:left;vertical-align:top}
|
||||
th{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(193,205,232,.7)}
|
||||
.status{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:rgba(88,122,255,.14);color:#dfe8ff;font-weight:700;font-size:.84rem}
|
||||
.status--warning{background:rgba(180,83,9,.18);color:#f5c68a}
|
||||
.status--success{background:rgba(88,122,255,.14);color:#dfe8ff}
|
||||
.list-reset{margin:0;padding-left:18px}
|
||||
.list-reset li+li{margin-top:10px}
|
||||
.note{padding:16px 18px;background:rgba(var(--brand-rgb),.06)}
|
||||
.note{padding:16px 18px;background:rgba(88,122,255,.08);color:#dfe8ff}
|
||||
.stack{display:grid;gap:12px}
|
||||
.chip-list{display:flex;flex-wrap:wrap;gap:8px}
|
||||
.chip{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:rgba(var(--brand-rgb),.08);color:var(--brand);font-size:.84rem;font-weight:700}
|
||||
.chip{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.04);color:#dfe8ff;font-size:.84rem;font-weight:700}
|
||||
.badge{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
padding:7px 12px;
|
||||
border-radius:999px;
|
||||
background:#fff;
|
||||
color:var(--brand);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#dfe8ff;
|
||||
font-weight:700;
|
||||
font-size:.86rem;
|
||||
border:1px solid rgba(var(--brand-rgb),.12);
|
||||
border:1px solid rgba(201,214,255,.12);
|
||||
white-space:nowrap;
|
||||
}
|
||||
.badge--solid{background:var(--brand);color:#fff}
|
||||
.badge--solid{background:linear-gradient(135deg,#587aff 0%,#243a91 100%);color:#fff}
|
||||
.pill{
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
padding:7px 12px;
|
||||
border-radius:999px;
|
||||
border:1px solid rgba(var(--brand-rgb),.15);
|
||||
background:rgba(var(--brand-rgb),.07);
|
||||
color:var(--brand);
|
||||
border:1px solid rgba(201,214,255,.12);
|
||||
background:rgba(255,255,255,.04);
|
||||
color:#dfe8ff;
|
||||
font-size:.84rem;
|
||||
font-weight:700;
|
||||
white-space:nowrap;
|
||||
}
|
||||
@media(max-width:960px){
|
||||
.page-shell{width:min(100vw - 20px,1460px)}
|
||||
.site-header__inner{align-items:flex-start;padding:14px 16px}
|
||||
.site-header__inner{align-items:center;padding:12px 16px;min-height:68px;width:100%}
|
||||
.site-nav{display:none}
|
||||
.site-mobile{display:block}
|
||||
.hero,.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}
|
||||
|
||||
@@ -5,27 +5,76 @@
|
||||
@section('body_class', 'landing-preview')
|
||||
|
||||
@php
|
||||
$columns = $landingColumns ?? [
|
||||
$heroEyebrow = $heroEyebrow ?? 'Für Teams, Büros und Standorte';
|
||||
$heroTitle = $heroTitle ?? 'Die Kaffeeliste für einen klaren Kaffee-Alltag.';
|
||||
$heroCopy = $heroCopy ?? 'Mitglieder, Buchungen, Rollen und Hinweise laufen in einer klaren Oberfläche zusammen. Für Teams, die weniger Listen-Chaos und weniger Rückfragen wollen.';
|
||||
$preview = $landingPreview ?? [
|
||||
['label' => 'Mitglieder', 'value' => '48 aktiv'],
|
||||
['label' => 'Buchungen', 'value' => 'Heute 12'],
|
||||
['label' => 'Support', 'value' => '2 offen'],
|
||||
];
|
||||
$features = $landingFeatures ?? [
|
||||
[
|
||||
'eyebrow' => 'Für Mitglieder',
|
||||
'title' => 'Schnell starten',
|
||||
'copy' => 'Einloggen und direkt weiter.',
|
||||
'title' => 'Dashboard',
|
||||
'copy' => 'Wichtige Zahlen, Hinweise und offene Themen direkt auf der Startseite.',
|
||||
],
|
||||
[
|
||||
'eyebrow' => 'Für Verantwortliche',
|
||||
'title' => 'Alles im Blick',
|
||||
'copy' => 'Bereiche, Hinweise und Verwaltung an einem Ort.',
|
||||
'title' => 'Mitglieder und Rollen',
|
||||
'copy' => 'Zugänge, Zuständigkeiten und Bereiche sauber an einem Ort verwalten.',
|
||||
],
|
||||
[
|
||||
'eyebrow' => 'Für Standorte',
|
||||
'title' => 'Gemeinsam organisiert',
|
||||
'copy' => 'Ein klarer Ablauf für Teams und Bereiche.',
|
||||
'title' => 'Buchungen',
|
||||
'copy' => 'Einzahlungen, Verbrauch und Korrekturen nachvollziehbar dokumentieren.',
|
||||
],
|
||||
[
|
||||
'title' => 'Support und Exporte',
|
||||
'copy' => 'Rückfragen, Listen und Auswertungen ohne Wechsel zwischen mehreren Tools.',
|
||||
],
|
||||
];
|
||||
$preview = $landingPreview ?? [
|
||||
['label' => 'Start', 'value' => 'Klar'],
|
||||
['label' => 'Team', 'value' => 'Gemeinsam'],
|
||||
['label' => 'Zugang', 'value' => 'Direkt'],
|
||||
$steps = $landingSteps ?? [
|
||||
[
|
||||
'number' => '01',
|
||||
'title' => 'Anmelden und Bereich öffnen',
|
||||
'copy' => 'Ohne Installation direkt im Browser starten.',
|
||||
],
|
||||
[
|
||||
'number' => '02',
|
||||
'title' => 'Mitglieder und Zuständigkeiten ordnen',
|
||||
'copy' => 'Rollen, Standorte und Zugänge klar strukturieren.',
|
||||
],
|
||||
[
|
||||
'number' => '03',
|
||||
'title' => 'Im Alltag damit arbeiten',
|
||||
'copy' => 'Buchungen pflegen, Fragen klären und den Überblick behalten.',
|
||||
],
|
||||
];
|
||||
$useCases = $landingUseCases ?? [
|
||||
[
|
||||
'title' => 'Für Mitglieder',
|
||||
'copy' => 'Schnell sehen, was wichtig ist, ohne sich durch Verwaltungsthemen zu arbeiten.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für Verantwortliche',
|
||||
'copy' => 'Buchungen prüfen, Bereiche steuern und Abläufe sauber organisieren.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für mehrere Standorte',
|
||||
'copy' => 'Getrennte Bereiche bleiben übersichtlich, folgen aber derselben Logik.',
|
||||
],
|
||||
];
|
||||
$proof = $landingProof ?? [
|
||||
[
|
||||
'title' => 'Schnell verständlich',
|
||||
'copy' => 'Die wichtigsten Bereiche sind sofort erkennbar und klar benannt.',
|
||||
],
|
||||
[
|
||||
'title' => 'Im Browser und mobil',
|
||||
'copy' => 'Die Oberfläche funktioniert ohne Installation auf Desktop und Handy.',
|
||||
],
|
||||
[
|
||||
'title' => 'Für den Alltag gebaut',
|
||||
'copy' => 'Kaffeeliste, Support, Buchungen und Verwaltung greifen sinnvoll ineinander.',
|
||||
],
|
||||
];
|
||||
@endphp
|
||||
|
||||
@@ -48,20 +97,25 @@
|
||||
|
||||
.landing-wrap {
|
||||
display: grid;
|
||||
gap: 56px;
|
||||
gap: 28px;
|
||||
padding: 8px 0 12px;
|
||||
}
|
||||
|
||||
.hero {
|
||||
.landing-hero {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.08fr) minmax(280px, 0.92fr);
|
||||
gap: 40px;
|
||||
grid-template-columns: minmax(0, 1.12fr) minmax(290px, 0.88fr);
|
||||
gap: 36px;
|
||||
align-items: start;
|
||||
padding-top: 12px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.landing-copy {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.kicker {
|
||||
margin: 0 0 10px;
|
||||
margin: 0;
|
||||
font-size: 0.78rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.16em;
|
||||
@@ -69,28 +123,36 @@
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.hero h1 {
|
||||
.landing-copy h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(3.2rem, 7vw, 6.4rem);
|
||||
line-height: 0.9;
|
||||
}
|
||||
|
||||
.hero p {
|
||||
margin: 14px 0 0;
|
||||
max-width: 30rem;
|
||||
font-size: 1.05rem;
|
||||
.landing-copy__lead {
|
||||
margin: 0;
|
||||
max-width: 34rem;
|
||||
font-size: 1.08rem;
|
||||
line-height: 1.65;
|
||||
color: rgba(219, 228, 248, 0.72);
|
||||
color: rgba(219, 228, 248, 0.74);
|
||||
}
|
||||
|
||||
.landing-copy__note {
|
||||
margin: 0;
|
||||
max-width: 32rem;
|
||||
color: rgba(193, 205, 232, 0.78);
|
||||
font-size: 0.96rem;
|
||||
}
|
||||
|
||||
.actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 12px;
|
||||
margin-top: 24px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.landing-preview,
|
||||
.landing-section,
|
||||
.landing-callout {
|
||||
border: 1px solid rgba(163, 183, 255, 0.12);
|
||||
border-radius: 20px;
|
||||
@@ -127,7 +189,7 @@
|
||||
padding: 12px 14px;
|
||||
border-radius: 16px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
color: rgba(216, 225, 246, 0.72);
|
||||
color: rgba(216, 225, 246, 0.74);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@@ -135,24 +197,18 @@
|
||||
color: #f4f7ff;
|
||||
}
|
||||
|
||||
.landing-columns {
|
||||
.landing-section {
|
||||
padding: 24px 26px;
|
||||
}
|
||||
|
||||
.landing-section__head {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 0;
|
||||
border-top: 1px solid rgba(163, 183, 255, 0.12);
|
||||
border-bottom: 1px solid rgba(163, 183, 255, 0.12);
|
||||
gap: 8px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.landing-column {
|
||||
padding: 24px 18px;
|
||||
}
|
||||
|
||||
.landing-column + .landing-column {
|
||||
border-left: 1px solid rgba(163, 183, 255, 0.12);
|
||||
}
|
||||
|
||||
.landing-column__eyebrow {
|
||||
margin: 0 0 10px;
|
||||
.landing-section__eyebrow {
|
||||
margin: 0;
|
||||
color: #8aa0d0;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
@@ -160,43 +216,73 @@
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.landing-column h2 {
|
||||
margin: 0 0 10px;
|
||||
font-size: 1.45rem;
|
||||
.landing-section__title {
|
||||
margin: 0;
|
||||
font-size: 1.9rem;
|
||||
color: #f4f7ff;
|
||||
}
|
||||
|
||||
.landing-column p {
|
||||
.landing-section__lead {
|
||||
margin: 0;
|
||||
max-width: 22rem;
|
||||
color: rgba(219, 228, 248, 0.72);
|
||||
max-width: 48rem;
|
||||
color: rgba(217, 226, 246, 0.8);
|
||||
}
|
||||
|
||||
.landing-feature-grid,
|
||||
.landing-step-grid,
|
||||
.landing-use-grid,
|
||||
.landing-proof-grid {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.landing-feature-grid {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.landing-step-grid,
|
||||
.landing-use-grid,
|
||||
.landing-proof-grid {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.landing-card {
|
||||
padding: 18px;
|
||||
border-radius: 18px;
|
||||
border: 1px solid rgba(163, 183, 255, 0.12);
|
||||
background: rgba(255, 255, 255, 0.035);
|
||||
}
|
||||
|
||||
.landing-card__number {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 2.15rem;
|
||||
height: 2.15rem;
|
||||
margin-bottom: 14px;
|
||||
border-radius: 999px;
|
||||
background: rgba(88, 122, 255, 0.16);
|
||||
color: #dfe8ff;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
.landing-card h3 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 1.12rem;
|
||||
color: #f4f7ff;
|
||||
}
|
||||
|
||||
.landing-card p {
|
||||
margin: 0;
|
||||
color: rgba(219, 228, 246, 0.74);
|
||||
}
|
||||
|
||||
.landing-callout {
|
||||
padding: 24px 26px;
|
||||
}
|
||||
|
||||
.landing-callout__eyebrow {
|
||||
margin: 0 0 8px;
|
||||
color: #8aa0d0;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.14em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.landing-callout h2 {
|
||||
margin: 0 0 10px;
|
||||
font-size: 2rem;
|
||||
color: #f4f7ff;
|
||||
}
|
||||
|
||||
.landing-callout p {
|
||||
margin: 0;
|
||||
max-width: 36rem;
|
||||
color: rgba(217, 226, 246, 0.8);
|
||||
}
|
||||
|
||||
.landing-cta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -224,28 +310,23 @@
|
||||
|
||||
@media (max-width: 960px) {
|
||||
.landing-wrap {
|
||||
gap: 36px;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.hero,
|
||||
.landing-columns {
|
||||
.landing-hero,
|
||||
.landing-feature-grid,
|
||||
.landing-step-grid,
|
||||
.landing-use-grid,
|
||||
.landing-proof-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.hero {
|
||||
.landing-hero {
|
||||
gap: 24px;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.landing-column {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.landing-column + .landing-column {
|
||||
border-left: 0;
|
||||
border-top: 1px solid rgba(163, 183, 255, 0.12);
|
||||
}
|
||||
|
||||
.landing-section,
|
||||
.landing-callout {
|
||||
padding: 20px;
|
||||
}
|
||||
@@ -255,15 +336,16 @@
|
||||
|
||||
@section('content')
|
||||
<div class="landing-wrap">
|
||||
<section class="hero">
|
||||
<div>
|
||||
<p class="kicker">Die Kaffeeliste</p>
|
||||
<h1>Kaffee im Team. Klar organisiert.</h1>
|
||||
<p>Für Mitglieder, Verantwortliche und Standorte.</p>
|
||||
<section class="landing-hero">
|
||||
<div class="landing-copy">
|
||||
<p class="kicker">{{ $heroEyebrow }}</p>
|
||||
<h1>{{ $heroTitle }}</h1>
|
||||
<p class="landing-copy__lead">{{ $heroCopy }}</p>
|
||||
<p class="landing-copy__note">Für Mitglieder, Verantwortliche und Standorte. Mobil nutzbar, klar geführt und ohne unnötige Umwege.</p>
|
||||
|
||||
<div class="actions">
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
<a class="button button--ghost" href="#bereiche">Mehr erfahren</a>
|
||||
<a class="button button--ghost" href="#funktionen">Funktionen ansehen</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -281,27 +363,89 @@
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section class="landing-columns" id="bereiche" aria-label="Bereiche">
|
||||
@foreach ($columns as $column)
|
||||
<article class="landing-column">
|
||||
<p class="landing-column__eyebrow">{{ $column['eyebrow'] ?? '' }}</p>
|
||||
<h2>{{ $column['title'] ?? '' }}</h2>
|
||||
<p>{{ $column['copy'] ?? '' }}</p>
|
||||
</article>
|
||||
@endforeach
|
||||
<section class="landing-section" id="funktionen" aria-label="Funktionen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Produkt</p>
|
||||
<h2 class="landing-section__title">Was die Kaffeeliste im Alltag abdeckt</h2>
|
||||
<p class="landing-section__lead">Vom Überblick bis zur Auswertung bleibt alles in einer Oberfläche, die sofort verständlich wirkt.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-feature-grid">
|
||||
@foreach ($features as $feature)
|
||||
<article class="landing-card">
|
||||
<h3>{{ $feature['title'] ?? '' }}</h3>
|
||||
<p>{{ $feature['copy'] ?? '' }}</p>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-section" id="ablauf" aria-label="Ablauf">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Ablauf</p>
|
||||
<h2 class="landing-section__title">So funktioniert es</h2>
|
||||
<p class="landing-section__lead">Vom ersten Login bis zum täglichen Einsatz bleibt der Weg kurz und nachvollziehbar.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-step-grid">
|
||||
@foreach ($steps as $step)
|
||||
<article class="landing-card">
|
||||
<span class="landing-card__number">{{ $step['number'] ?? '' }}</span>
|
||||
<h3>{{ $step['title'] ?? '' }}</h3>
|
||||
<p>{{ $step['copy'] ?? '' }}</p>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-section" id="zielgruppen" aria-label="Zielgruppen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Für wen</p>
|
||||
<h2 class="landing-section__title">Für Mitglieder, Verantwortliche und Standorte</h2>
|
||||
<p class="landing-section__lead">Jede Rolle bekommt genau die Informationen und Wege, die sie im Alltag braucht.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-use-grid">
|
||||
@foreach ($useCases as $useCase)
|
||||
<article class="landing-card">
|
||||
<h3>{{ $useCase['title'] ?? '' }}</h3>
|
||||
<p>{{ $useCase['copy'] ?? '' }}</p>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-section" id="vertrauen" aria-label="Vertrauen">
|
||||
<div class="landing-section__head">
|
||||
<p class="landing-section__eyebrow">Warum es passt</p>
|
||||
<h2 class="landing-section__title">Klar genug für den Alltag, ruhig genug für gutes Produktdesign</h2>
|
||||
<p class="landing-section__lead">Reduziert gestaltet, aber mit genug Tiefe für Teams, die mehr als nur eine einfache Liste brauchen.</p>
|
||||
</div>
|
||||
|
||||
<div class="landing-proof-grid">
|
||||
@foreach ($proof as $item)
|
||||
<article class="landing-card">
|
||||
<h3>{{ $item['title'] ?? '' }}</h3>
|
||||
<p>{{ $item['copy'] ?? '' }}</p>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="landing-callout">
|
||||
<p class="landing-callout__eyebrow">Einfach im Alltag</p>
|
||||
<h2>Ein gemeinsamer Ort für die Kaffeeliste.</h2>
|
||||
<p>Weniger suchen. Weniger erklären. Klar durch den Tag.</p>
|
||||
<p class="landing-section__eyebrow">Zum Start</p>
|
||||
<h2>Ein gemeinsamer Einstieg für Teams, die Kaffee einfach organisieren wollen.</h2>
|
||||
<p>Klar im Aufbau, direkt in der Nutzung und bereit für den täglichen Einsatz im Team.</p>
|
||||
|
||||
<div class="landing-cta">
|
||||
<div class="landing-cta__copy">
|
||||
<strong>Bereit für den Start?</strong>
|
||||
<span>Direkt zur Anmeldung.</span>
|
||||
<strong>Direkt loslegen</strong>
|
||||
<span>Ohne Umwege zur Anmeldung.</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
<a class="button button--ghost" href="#funktionen">Funktionen ansehen</a>
|
||||
</div>
|
||||
<a class="button" href="/login/">Anmelden</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user