diff --git a/README.md b/README.md
index e69de29..263f4df 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,181 @@
+# BotKonzept Frontend
+
+Modernes, responsives Frontend für die BotKonzept SaaS-Plattform.
+
+## 📁 Projektstruktur
+
+```
+customer-frontend/
+├── index.html # Landing Page mit Registrierung
+├── dashboard.html # Kunden-Dashboard
+├── css/
+│ ├── style.css # Haupt-Stylesheet
+│ └── dashboard.css # Dashboard-spezifische Styles
+├── js/
+│ ├── main.js # Landing Page JavaScript
+│ └── dashboard.js # Dashboard JavaScript
+└── logo/
+ └── 20250119_Logo_Botkozept.svg
+```
+
+## 🚀 Features
+
+### Landing Page (index.html)
+- ✅ Modernes, responsives Design
+- ✅ Hero-Section mit animiertem Chat-Preview
+- ✅ Feature-Übersicht
+- ✅ "So funktioniert's" Sektion
+- ✅ Pricing-Tabelle mit Rabatt-Timeline
+- ✅ Registrierungsformular
+- ✅ FAQ-Akkordeon
+- ✅ Mobile-optimiert
+
+### Dashboard (dashboard.html)
+- ✅ Übersicht mit Statistiken
+- ✅ PDF-Upload mit Drag & Drop
+- ✅ Dokumenten-Verwaltung
+- ✅ Chatbot-Test-Interface
+- ✅ Embed-Code Generator
+- ✅ Einstellungen
+- ✅ Trial-Status & Upgrade-Banner
+
+## 🎨 Design-System
+
+### Farben
+```css
+--primary: #6366f1; /* Indigo */
+--secondary: #0ea5e9; /* Sky Blue */
+--accent: #f59e0b; /* Amber */
+--success: #10b981; /* Emerald */
+--error: #ef4444; /* Red */
+```
+
+### Typografie
+- Font: Inter (Google Fonts)
+- Responsive Schriftgrößen mit `clamp()`
+
+### Komponenten
+- Buttons (Primary, Outline, White)
+- Cards
+- Forms
+- Modals
+- Notifications
+
+## 🔧 Konfiguration
+
+### API-Endpunkte
+
+In `js/main.js`:
+```javascript
+const CONFIG = {
+ WEBHOOK_URL: 'https://n8n.userman.de/webhook/botkonzept-registration',
+ API_BASE_URL: 'https://api.botkonzept.de',
+};
+```
+
+### Webhook-Integration
+
+Das Registrierungsformular sendet folgende Daten an den Webhook:
+```json
+{
+ "firstName": "Max",
+ "lastName": "Mustermann",
+ "email": "max@beispiel.de",
+ "company": "Muster GmbH",
+ "website": "https://beispiel.de",
+ "newsletter": true,
+ "timestamp": "2025-01-25T10:00:00.000Z",
+ "source": "website"
+}
+```
+
+## 📱 Responsive Breakpoints
+
+- Desktop: > 1024px
+- Tablet: 768px - 1024px
+- Mobile: < 768px
+- Small Mobile: < 480px
+
+## 🚀 Deployment
+
+### Lokales Testen
+```bash
+cd customer-frontend
+python3 -m http.server 8000
+# Öffnen: http://localhost:8000
+```
+
+### Produktion
+```bash
+# Dateien auf Webserver kopieren
+rsync -avz . user@botkonzept.de:/var/www/botkonzept/
+```
+
+### NGINX Konfiguration
+```nginx
+server {
+ listen 80;
+ server_name botkonzept.de www.botkonzept.de;
+
+ root /var/www/botkonzept;
+ index index.html;
+
+ location / {
+ try_files $uri $uri/ /index.html;
+ }
+
+ # Cache static assets
+ location ~* \.(css|js|svg|png|jpg|jpeg|gif|ico)$ {
+ expires 30d;
+ add_header Cache-Control "public, immutable";
+ }
+}
+```
+
+## 🔒 Sicherheit
+
+- HTTPS erforderlich für Produktion
+- CORS-Header für API-Calls
+- Input-Validierung auf Client-Seite
+- XSS-Schutz durch HTML-Escaping
+
+## 📊 Analytics
+
+Google Analytics 4 Integration vorbereitet:
+```html
+
+```
+
+Conversion-Tracking:
+```javascript
+trackConversion('registration_complete', { email: '...' });
+```
+
+## 🎯 Customer Journey
+
+1. **Besucher** kommt auf botkonzept.de
+2. **Registrierung** über Formular
+3. **Instanz-Erstellung** (automatisch via n8n Workflow)
+4. **Dashboard-Zugang** per E-Mail
+5. **PDF-Upload** in Wissensdatenbank
+6. **Embed-Code** für Website kopieren
+7. **Trial-Reminder** (Tag 3, 5, 7)
+8. **Upgrade** oder Ablauf
+
+## 📝 TODO
+
+- [ ] Stripe/PayPal Integration
+- [ ] E-Mail-Verifizierung
+- [ ] Passwort-Reset
+- [ ] Multi-Language Support
+- [ ] Dark Mode
+- [ ] PWA Support
+
+## 📄 Lizenz
+
+Proprietär - Alle Rechte vorbehalten
+
+---
+
+**Version:** 1.0.0
+**Erstellt:** Januar 2025
diff --git a/css/dashboard.css b/css/dashboard.css
new file mode 100644
index 0000000..2c02c13
--- /dev/null
+++ b/css/dashboard.css
@@ -0,0 +1,1128 @@
+/* ============================================
+ BotKonzept Dashboard Styles
+ ============================================ */
+
+/* Dashboard Body */
+.dashboard-body {
+ background: var(--gray-100);
+ min-height: 100vh;
+}
+
+/* Dashboard Navigation */
+.dashboard-nav {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 64px;
+ background: var(--white);
+ border-bottom: 1px solid var(--gray-200);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 24px;
+ z-index: 1000;
+}
+
+.nav-brand .logo {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ font-size: 1.25rem;
+ font-weight: 700;
+ color: var(--gray-900);
+}
+
+.nav-brand .logo img {
+ height: 32px;
+}
+
+.nav-user {
+ display: flex;
+ align-items: center;
+ gap: 24px;
+}
+
+.trial-badge {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 16px;
+ background: var(--accent);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ font-size: 0.875rem;
+}
+
+.trial-badge i {
+ font-size: 0.75rem;
+}
+
+.user-menu {
+ position: relative;
+}
+
+.user-btn {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 8px 12px;
+ background: none;
+ border: 1px solid var(--gray-200);
+ border-radius: var(--radius);
+ cursor: pointer;
+ transition: var(--transition-fast);
+}
+
+.user-btn:hover {
+ background: var(--gray-50);
+}
+
+.user-avatar {
+ width: 32px;
+ height: 32px;
+ background: var(--gradient-primary);
+ border-radius: var(--radius-full);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: var(--white);
+ font-size: 0.875rem;
+}
+
+.user-btn span {
+ font-weight: 500;
+ color: var(--gray-700);
+}
+
+.user-btn i.fa-chevron-down {
+ font-size: 0.75rem;
+ color: var(--gray-400);
+}
+
+.user-dropdown {
+ position: absolute;
+ top: 100%;
+ right: 0;
+ margin-top: 8px;
+ background: var(--white);
+ border: 1px solid var(--gray-200);
+ border-radius: var(--radius);
+ box-shadow: var(--shadow-lg);
+ min-width: 200px;
+ display: none;
+ z-index: 100;
+}
+
+.user-dropdown.active {
+ display: block;
+}
+
+.user-dropdown a {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 16px;
+ color: var(--gray-700);
+ transition: var(--transition-fast);
+}
+
+.user-dropdown a:hover {
+ background: var(--gray-50);
+ color: var(--primary);
+}
+
+.user-dropdown a.logout {
+ color: var(--error);
+}
+
+.user-dropdown hr {
+ border: none;
+ border-top: 1px solid var(--gray-200);
+ margin: 4px 0;
+}
+
+/* Dashboard Layout */
+.dashboard-layout {
+ display: flex;
+ padding-top: 64px;
+ min-height: 100vh;
+}
+
+/* Sidebar */
+.dashboard-sidebar {
+ position: fixed;
+ left: 0;
+ top: 64px;
+ bottom: 0;
+ width: 260px;
+ background: var(--white);
+ border-right: 1px solid var(--gray-200);
+ display: flex;
+ flex-direction: column;
+ padding: 24px 0;
+ overflow-y: auto;
+}
+
+.sidebar-nav {
+ flex: 1;
+}
+
+.sidebar-nav .nav-item {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 24px;
+ color: var(--gray-600);
+ font-weight: 500;
+ transition: var(--transition-fast);
+ border-left: 3px solid transparent;
+}
+
+.sidebar-nav .nav-item:hover {
+ background: var(--gray-50);
+ color: var(--primary);
+}
+
+.sidebar-nav .nav-item.active {
+ background: rgba(99, 102, 241, 0.1);
+ color: var(--primary);
+ border-left-color: var(--primary);
+}
+
+.sidebar-nav .nav-item i {
+ width: 20px;
+ text-align: center;
+}
+
+/* Sidebar CTA */
+.sidebar-cta {
+ margin: 24px 16px 0;
+ padding: 20px;
+ background: var(--gradient-primary);
+ border-radius: var(--radius-lg);
+ color: var(--white);
+ text-align: center;
+}
+
+.sidebar-cta .cta-icon {
+ width: 48px;
+ height: 48px;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: var(--radius-full);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 0 auto 12px;
+ font-size: 1.25rem;
+}
+
+.sidebar-cta h4 {
+ color: var(--white);
+ margin-bottom: 8px;
+}
+
+.sidebar-cta p {
+ font-size: 0.875rem;
+ opacity: 0.9;
+ margin-bottom: 16px;
+}
+
+.sidebar-cta .btn {
+ position: relative;
+}
+
+.sidebar-cta .discount-badge {
+ position: absolute;
+ top: -8px;
+ right: -8px;
+ background: var(--accent);
+ color: var(--white);
+ font-size: 0.625rem;
+ padding: 2px 6px;
+ border-radius: var(--radius-full);
+ font-weight: 600;
+}
+
+/* Main Content */
+.dashboard-main {
+ flex: 1;
+ margin-left: 260px;
+ padding: 32px;
+ max-width: calc(100% - 260px);
+}
+
+/* Dashboard Sections */
+.dashboard-section {
+ display: none;
+}
+
+.dashboard-section.active {
+ display: block;
+}
+
+.section-header {
+ margin-bottom: 32px;
+}
+
+.section-header h1 {
+ font-size: 1.75rem;
+ margin-bottom: 8px;
+}
+
+.section-header p {
+ color: var(--gray-600);
+}
+
+/* Stats Grid */
+.stats-grid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 24px;
+ margin-bottom: 32px;
+}
+
+.stat-card {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ box-shadow: var(--shadow-sm);
+}
+
+.stat-icon {
+ width: 56px;
+ height: 56px;
+ border-radius: var(--radius-md);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.5rem;
+}
+
+.stat-icon.blue {
+ background: rgba(99, 102, 241, 0.1);
+ color: var(--primary);
+}
+
+.stat-icon.green {
+ background: rgba(16, 185, 129, 0.1);
+ color: var(--success);
+}
+
+.stat-icon.purple {
+ background: rgba(139, 92, 246, 0.1);
+ color: #8b5cf6;
+}
+
+.stat-icon.orange {
+ background: rgba(245, 158, 11, 0.1);
+ color: var(--accent);
+}
+
+.stat-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.stat-value {
+ font-size: 1.75rem;
+ font-weight: 700;
+ color: var(--gray-900);
+}
+
+.stat-label {
+ font-size: 0.875rem;
+ color: var(--gray-500);
+}
+
+/* Quick Actions */
+.quick-actions {
+ margin-bottom: 32px;
+}
+
+.quick-actions h2 {
+ font-size: 1.25rem;
+ margin-bottom: 16px;
+}
+
+.actions-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24px;
+}
+
+.action-card {
+ background: var(--white);
+ border: 1px solid var(--gray-200);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ text-align: center;
+ transition: var(--transition);
+ cursor: pointer;
+}
+
+.action-card:hover {
+ border-color: var(--primary);
+ box-shadow: var(--shadow-md);
+ transform: translateY(-2px);
+}
+
+.action-icon {
+ width: 64px;
+ height: 64px;
+ background: var(--gradient-primary);
+ border-radius: var(--radius-lg);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 0 auto 16px;
+ font-size: 1.5rem;
+ color: var(--white);
+}
+
+.action-card h3 {
+ font-size: 1.125rem;
+ margin-bottom: 8px;
+ color: var(--gray-900);
+}
+
+.action-card p {
+ font-size: 0.875rem;
+ color: var(--gray-600);
+}
+
+/* Trial Banner */
+.trial-banner {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ margin-bottom: 32px;
+}
+
+.banner-content {
+ display: flex;
+ align-items: center;
+ gap: 24px;
+}
+
+.banner-icon {
+ width: 64px;
+ height: 64px;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: var(--radius-lg);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 2rem;
+ color: var(--white);
+ flex-shrink: 0;
+}
+
+.banner-text {
+ flex: 1;
+ color: var(--white);
+}
+
+.banner-text h3 {
+ color: var(--white);
+ margin-bottom: 4px;
+}
+
+.banner-text p {
+ opacity: 0.9;
+}
+
+.banner-content .btn {
+ flex-shrink: 0;
+}
+
+/* Upload Area */
+.upload-area {
+ background: var(--white);
+ border: 2px dashed var(--gray-300);
+ border-radius: var(--radius-lg);
+ padding: 48px;
+ text-align: center;
+ margin-bottom: 32px;
+ transition: var(--transition);
+}
+
+.upload-area:hover,
+.upload-area.dragover {
+ border-color: var(--primary);
+ background: rgba(99, 102, 241, 0.05);
+}
+
+.upload-icon {
+ font-size: 3rem;
+ color: var(--primary);
+ margin-bottom: 16px;
+}
+
+.upload-area h3 {
+ margin-bottom: 8px;
+}
+
+.upload-area > p {
+ color: var(--gray-600);
+ margin-bottom: 24px;
+}
+
+.upload-hint {
+ font-size: 0.75rem;
+ color: var(--gray-500);
+ margin-top: 16px;
+}
+
+/* Upload Progress */
+.upload-progress {
+ background: var(--white);
+ border-radius: var(--radius);
+ padding: 16px;
+ margin-bottom: 24px;
+}
+
+.progress-header {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 8px;
+ font-size: 0.875rem;
+}
+
+.progress-bar {
+ height: 8px;
+ background: var(--gray-200);
+ border-radius: var(--radius-full);
+ overflow: hidden;
+}
+
+.progress-fill {
+ height: 100%;
+ background: var(--gradient-primary);
+ border-radius: var(--radius-full);
+ width: 0%;
+ transition: width 0.3s ease;
+}
+
+/* Documents List */
+.documents-list {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+}
+
+.list-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 24px;
+ border-bottom: 1px solid var(--gray-200);
+}
+
+.list-header h2 {
+ font-size: 1.125rem;
+}
+
+.doc-count {
+ font-size: 0.875rem;
+ color: var(--gray-500);
+}
+
+.documents-table {
+ min-height: 200px;
+}
+
+.empty-state {
+ text-align: center;
+ padding: 48px;
+ color: var(--gray-500);
+}
+
+.empty-state i {
+ font-size: 3rem;
+ margin-bottom: 16px;
+ opacity: 0.5;
+}
+
+.empty-state h3 {
+ color: var(--gray-700);
+ margin-bottom: 8px;
+}
+
+/* Document Row */
+.document-row {
+ display: flex;
+ align-items: center;
+ padding: 16px 24px;
+ border-bottom: 1px solid var(--gray-100);
+ transition: var(--transition-fast);
+}
+
+.document-row:hover {
+ background: var(--gray-50);
+}
+
+.document-row:last-child {
+ border-bottom: none;
+}
+
+.doc-icon {
+ width: 40px;
+ height: 40px;
+ background: rgba(239, 68, 68, 0.1);
+ color: #ef4444;
+ border-radius: var(--radius);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 16px;
+}
+
+.doc-info {
+ flex: 1;
+}
+
+.doc-name {
+ font-weight: 500;
+ color: var(--gray-900);
+ margin-bottom: 2px;
+}
+
+.doc-meta {
+ font-size: 0.75rem;
+ color: var(--gray-500);
+}
+
+.doc-status {
+ padding: 4px 12px;
+ border-radius: var(--radius-full);
+ font-size: 0.75rem;
+ font-weight: 500;
+ margin-right: 16px;
+}
+
+.doc-status.indexed {
+ background: rgba(16, 185, 129, 0.1);
+ color: var(--success);
+}
+
+.doc-status.processing {
+ background: rgba(245, 158, 11, 0.1);
+ color: var(--accent);
+}
+
+.doc-actions {
+ display: flex;
+ gap: 8px;
+}
+
+.doc-actions button {
+ width: 32px;
+ height: 32px;
+ border: none;
+ background: var(--gray-100);
+ border-radius: var(--radius);
+ cursor: pointer;
+ color: var(--gray-600);
+ transition: var(--transition-fast);
+}
+
+.doc-actions button:hover {
+ background: var(--gray-200);
+ color: var(--gray-900);
+}
+
+.doc-actions button.delete:hover {
+ background: rgba(239, 68, 68, 0.1);
+ color: var(--error);
+}
+
+/* Chatbot Test */
+.chatbot-test-container {
+ display: grid;
+ grid-template-columns: 1fr 300px;
+ gap: 24px;
+}
+
+.chat-window {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+ box-shadow: var(--shadow-md);
+ display: flex;
+ flex-direction: column;
+ height: 500px;
+}
+
+.chat-window .chat-header {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 16px 20px;
+ background: var(--gradient-primary);
+ color: var(--white);
+}
+
+.chat-window .chat-messages {
+ flex: 1;
+ padding: 20px;
+ overflow-y: auto;
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.chat-input-area {
+ display: flex;
+ padding: 16px 20px;
+ border-top: 1px solid var(--gray-200);
+ gap: 12px;
+}
+
+.chat-input-area input {
+ flex: 1;
+ padding: 12px 16px;
+ border: 1px solid var(--gray-300);
+ border-radius: var(--radius-full);
+ font-size: 0.9375rem;
+ outline: none;
+}
+
+.chat-input-area input:focus {
+ border-color: var(--primary);
+}
+
+.send-btn {
+ width: 44px;
+ height: 44px;
+ background: var(--gradient-primary);
+ color: var(--white);
+ border: none;
+ border-radius: var(--radius-full);
+ cursor: pointer;
+ transition: var(--transition);
+}
+
+.send-btn:hover {
+ transform: scale(1.05);
+}
+
+.chat-tips {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ height: fit-content;
+}
+
+.chat-tips h3 {
+ margin-bottom: 16px;
+}
+
+.chat-tips ul {
+ list-style: none;
+}
+
+.chat-tips li {
+ padding: 8px 0;
+ color: var(--gray-600);
+ font-size: 0.875rem;
+ padding-left: 20px;
+ position: relative;
+}
+
+.chat-tips li::before {
+ content: '•';
+ position: absolute;
+ left: 0;
+ color: var(--primary);
+}
+
+/* Embed Section */
+.embed-container {
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+}
+
+.embed-card {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+}
+
+.embed-card h2 {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ font-size: 1.25rem;
+ margin-bottom: 16px;
+}
+
+.embed-card h2 i {
+ color: var(--primary);
+}
+
+.code-block {
+ position: relative;
+ background: var(--gray-900);
+ border-radius: var(--radius);
+ padding: 20px;
+ margin: 16px 0;
+}
+
+.code-block pre {
+ color: var(--success);
+ font-family: 'Monaco', 'Menlo', monospace;
+ font-size: 0.875rem;
+ overflow-x: auto;
+ margin: 0;
+}
+
+.copy-btn {
+ position: absolute;
+ top: 12px;
+ right: 12px;
+ padding: 8px 16px;
+ background: var(--gray-700);
+ color: var(--white);
+ border: none;
+ border-radius: var(--radius);
+ cursor: pointer;
+ font-size: 0.75rem;
+ transition: var(--transition-fast);
+}
+
+.copy-btn:hover {
+ background: var(--gray-600);
+}
+
+.copy-success {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ color: var(--success);
+ font-size: 0.875rem;
+}
+
+.endpoint-list {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+}
+
+.endpoint-item label {
+ display: block;
+ font-size: 0.875rem;
+ font-weight: 500;
+ margin-bottom: 8px;
+}
+
+.endpoint-url {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ background: var(--gray-100);
+ padding: 12px 16px;
+ border-radius: var(--radius);
+}
+
+.endpoint-url code {
+ flex: 1;
+ font-size: 0.8125rem;
+ color: var(--gray-700);
+ word-break: break-all;
+}
+
+.copy-btn-sm {
+ padding: 6px 10px;
+ background: var(--white);
+ border: 1px solid var(--gray-300);
+ border-radius: var(--radius-sm);
+ cursor: pointer;
+ color: var(--gray-600);
+ transition: var(--transition-fast);
+}
+
+.copy-btn-sm:hover {
+ background: var(--gray-50);
+ color: var(--primary);
+}
+
+/* Installation Steps */
+.install-steps {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ margin-bottom: 24px;
+}
+
+.install-step {
+ display: flex;
+ gap: 16px;
+ align-items: flex-start;
+}
+
+.step-num {
+ width: 32px;
+ height: 32px;
+ background: var(--gradient-primary);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 600;
+ flex-shrink: 0;
+}
+
+.install-step h4 {
+ margin-bottom: 4px;
+}
+
+.install-step p {
+ font-size: 0.875rem;
+ color: var(--gray-600);
+}
+
+.platform-guides h4 {
+ margin-bottom: 12px;
+}
+
+.platform-links {
+ display: flex;
+ gap: 12px;
+ flex-wrap: wrap;
+}
+
+.platform-link {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 16px;
+ background: var(--gray-100);
+ border-radius: var(--radius);
+ color: var(--gray-700);
+ font-size: 0.875rem;
+ transition: var(--transition-fast);
+}
+
+.platform-link:hover {
+ background: var(--primary);
+ color: var(--white);
+}
+
+/* Analytics Placeholder */
+.analytics-placeholder {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ padding: 48px;
+ text-align: center;
+}
+
+.placeholder-icon {
+ font-size: 4rem;
+ color: var(--gray-300);
+ margin-bottom: 24px;
+}
+
+.analytics-placeholder h3 {
+ margin-bottom: 16px;
+}
+
+.analytics-placeholder p {
+ color: var(--gray-600);
+ margin-bottom: 24px;
+}
+
+.analytics-placeholder ul {
+ list-style: none;
+ display: inline-block;
+ text-align: left;
+ margin-bottom: 24px;
+}
+
+.analytics-placeholder li {
+ padding: 8px 0;
+ color: var(--gray-600);
+}
+
+.analytics-placeholder li i {
+ color: var(--success);
+ margin-right: 8px;
+}
+
+/* Settings */
+.settings-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 24px;
+}
+
+.settings-card {
+ background: var(--white);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+}
+
+.settings-card h2 {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ font-size: 1.25rem;
+ margin-bottom: 24px;
+}
+
+.settings-card h2 i {
+ color: var(--primary);
+}
+
+.setting-group {
+ margin-bottom: 20px;
+}
+
+.setting-group label {
+ display: block;
+ font-size: 0.875rem;
+ font-weight: 500;
+ margin-bottom: 8px;
+ color: var(--gray-700);
+}
+
+.setting-group input[type="text"],
+.setting-group input[type="email"],
+.setting-group textarea {
+ width: 100%;
+ padding: 12px 16px;
+ border: 1px solid var(--gray-300);
+ border-radius: var(--radius);
+ font-size: 0.9375rem;
+ transition: var(--transition-fast);
+}
+
+.setting-group input:focus,
+.setting-group textarea:focus {
+ outline: none;
+ border-color: var(--primary);
+}
+
+.color-picker {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.color-picker input[type="color"] {
+ width: 48px;
+ height: 48px;
+ border: none;
+ border-radius: var(--radius);
+ cursor: pointer;
+}
+
+.plan-info {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.plan-badge {
+ padding: 4px 12px;
+ border-radius: var(--radius-full);
+ font-size: 0.75rem;
+ font-weight: 600;
+}
+
+.plan-badge.trial {
+ background: rgba(245, 158, 11, 0.1);
+ color: var(--accent);
+}
+
+/* Responsive */
+@media (max-width: 1200px) {
+ .stats-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .actions-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .chatbot-test-container {
+ grid-template-columns: 1fr;
+ }
+
+ .chat-tips {
+ display: none;
+ }
+}
+
+@media (max-width: 1024px) {
+ .dashboard-sidebar {
+ width: 200px;
+ }
+
+ .dashboard-main {
+ margin-left: 200px;
+ max-width: calc(100% - 200px);
+ }
+
+ .sidebar-cta {
+ display: none;
+ }
+
+ .settings-grid {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (max-width: 768px) {
+ .dashboard-nav {
+ padding: 0 16px;
+ }
+
+ .trial-badge {
+ display: none;
+ }
+
+ .user-btn span {
+ display: none;
+ }
+
+ .dashboard-sidebar {
+ position: fixed;
+ left: -260px;
+ width: 260px;
+ transition: left 0.3s ease;
+ z-index: 999;
+ }
+
+ .dashboard-sidebar.active {
+ left: 0;
+ }
+
+ .dashboard-main {
+ margin-left: 0;
+ max-width: 100%;
+ padding: 16px;
+ }
+
+ .stats-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .actions-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .banner-content {
+ flex-direction: column;
+ text-align: center;
+ }
+
+ .banner-icon {
+ margin: 0 auto;
+ }
+}
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..a3dc603
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,1573 @@
+/* ============================================
+ BotKonzept - Modern CSS Stylesheet
+ ============================================ */
+
+/* CSS Variables */
+:root {
+ /* Colors */
+ --primary: #6366f1;
+ --primary-dark: #4f46e5;
+ --primary-light: #818cf8;
+ --secondary: #0ea5e9;
+ --accent: #f59e0b;
+
+ /* Neutrals */
+ --white: #ffffff;
+ --gray-50: #f9fafb;
+ --gray-100: #f3f4f6;
+ --gray-200: #e5e7eb;
+ --gray-300: #d1d5db;
+ --gray-400: #9ca3af;
+ --gray-500: #6b7280;
+ --gray-600: #4b5563;
+ --gray-700: #374151;
+ --gray-800: #1f2937;
+ --gray-900: #111827;
+
+ /* Status Colors */
+ --success: #10b981;
+ --warning: #f59e0b;
+ --error: #ef4444;
+
+ /* Gradients */
+ --gradient-primary: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
+ --gradient-hero: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+
+ /* Shadows */
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+ --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
+
+ /* Typography */
+ --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+
+ /* Spacing */
+ --container-max: 1200px;
+ --section-padding: 100px;
+
+ /* Border Radius */
+ --radius-sm: 4px;
+ --radius: 8px;
+ --radius-md: 12px;
+ --radius-lg: 16px;
+ --radius-xl: 24px;
+ --radius-full: 9999px;
+
+ /* Transitions */
+ --transition: all 0.3s ease;
+ --transition-fast: all 0.15s ease;
+}
+
+/* Reset & Base */
+*, *::before, *::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+html {
+ scroll-behavior: smooth;
+}
+
+body {
+ font-family: var(--font-family);
+ font-size: 16px;
+ line-height: 1.6;
+ color: var(--gray-700);
+ background-color: var(--white);
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+img {
+ max-width: 100%;
+ height: auto;
+}
+
+a {
+ color: var(--primary);
+ text-decoration: none;
+ transition: var(--transition-fast);
+}
+
+a:hover {
+ color: var(--primary-dark);
+}
+
+/* Container */
+.container {
+ max-width: var(--container-max);
+ margin: 0 auto;
+ padding: 0 24px;
+}
+
+/* Typography */
+h1, h2, h3, h4, h5, h6 {
+ color: var(--gray-900);
+ font-weight: 700;
+ line-height: 1.2;
+}
+
+h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
+h2 { font-size: clamp(2rem, 4vw, 3rem); }
+h3 { font-size: clamp(1.5rem, 3vw, 1.75rem); }
+h4 { font-size: 1.25rem; }
+
+.gradient-text {
+ background: var(--gradient-primary);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+
+/* Buttons */
+.btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ padding: 12px 24px;
+ font-size: 1rem;
+ font-weight: 600;
+ border-radius: var(--radius);
+ border: 2px solid transparent;
+ cursor: pointer;
+ transition: var(--transition);
+ text-decoration: none;
+}
+
+.btn-sm {
+ padding: 8px 16px;
+ font-size: 0.875rem;
+}
+
+.btn-lg {
+ padding: 16px 32px;
+ font-size: 1.125rem;
+}
+
+.btn-block {
+ width: 100%;
+}
+
+.btn-primary {
+ background: var(--gradient-primary);
+ color: var(--white);
+ border-color: transparent;
+}
+
+.btn-primary:hover {
+ transform: translateY(-2px);
+ box-shadow: var(--shadow-lg);
+ color: var(--white);
+}
+
+.btn-outline {
+ background: transparent;
+ color: var(--primary);
+ border-color: var(--primary);
+}
+
+.btn-outline:hover {
+ background: var(--primary);
+ color: var(--white);
+}
+
+.btn-white {
+ background: var(--white);
+ color: var(--primary);
+ border-color: var(--white);
+}
+
+.btn-white:hover {
+ background: var(--gray-100);
+ color: var(--primary-dark);
+}
+
+/* ============================================
+ Navigation
+ ============================================ */
+.navbar {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 1000;
+ background: rgba(255, 255, 255, 0.95);
+ backdrop-filter: blur(10px);
+ border-bottom: 1px solid var(--gray-200);
+ transition: var(--transition);
+}
+
+.navbar .container {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 72px;
+}
+
+.navbar .logo {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--gray-900);
+}
+
+.navbar .logo img {
+ height: 40px;
+ width: auto;
+}
+
+.nav-links {
+ display: flex;
+ align-items: center;
+ gap: 32px;
+}
+
+.nav-links a {
+ color: var(--gray-600);
+ font-weight: 500;
+ transition: var(--transition-fast);
+}
+
+.nav-links a:hover {
+ color: var(--primary);
+}
+
+.mobile-menu-btn {
+ display: none;
+ background: none;
+ border: none;
+ font-size: 1.5rem;
+ color: var(--gray-700);
+ cursor: pointer;
+}
+
+/* ============================================
+ Hero Section
+ ============================================ */
+.hero {
+ position: relative;
+ padding: 160px 0 100px;
+ overflow: hidden;
+ background: linear-gradient(180deg, var(--gray-50) 0%, var(--white) 100%);
+}
+
+.hero .container {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 60px;
+ align-items: center;
+}
+
+.hero-content {
+ position: relative;
+ z-index: 2;
+}
+
+.hero-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 16px;
+ background: var(--primary-light);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ font-size: 0.875rem;
+ font-weight: 600;
+ margin-bottom: 24px;
+}
+
+.hero-badge i {
+ font-size: 0.75rem;
+}
+
+.hero h1 {
+ margin-bottom: 24px;
+}
+
+.hero-subtitle {
+ font-size: 1.25rem;
+ color: var(--gray-600);
+ margin-bottom: 32px;
+ max-width: 540px;
+}
+
+.hero-cta {
+ display: flex;
+ gap: 16px;
+ margin-bottom: 48px;
+}
+
+.hero-stats {
+ display: flex;
+ gap: 48px;
+}
+
+.stat {
+ text-align: center;
+}
+
+.stat-number {
+ display: block;
+ font-size: 2rem;
+ font-weight: 800;
+ color: var(--gray-900);
+}
+
+.stat-label {
+ font-size: 0.875rem;
+ color: var(--gray-500);
+}
+
+/* Hero Visual - Chat Preview */
+.hero-visual {
+ position: relative;
+ z-index: 2;
+}
+
+.chat-preview {
+ background: var(--white);
+ border-radius: var(--radius-xl);
+ box-shadow: var(--shadow-xl);
+ overflow: hidden;
+ max-width: 400px;
+ margin-left: auto;
+}
+
+.chat-header {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 16px 20px;
+ background: var(--gradient-primary);
+ color: var(--white);
+}
+
+.chat-avatar {
+ width: 44px;
+ height: 44px;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: var(--radius-full);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.25rem;
+}
+
+.chat-info {
+ display: flex;
+ flex-direction: column;
+}
+
+.chat-name {
+ font-weight: 600;
+}
+
+.chat-status {
+ font-size: 0.75rem;
+ opacity: 0.9;
+}
+
+.chat-status i {
+ font-size: 0.5rem;
+ color: var(--success);
+ margin-right: 4px;
+}
+
+.chat-messages {
+ padding: 20px;
+ min-height: 280px;
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.message {
+ max-width: 85%;
+ padding: 12px 16px;
+ border-radius: var(--radius-lg);
+ font-size: 0.9375rem;
+}
+
+.message.bot {
+ background: var(--gray-100);
+ align-self: flex-start;
+ border-bottom-left-radius: 4px;
+}
+
+.message.user {
+ background: var(--primary);
+ color: var(--white);
+ align-self: flex-end;
+ border-bottom-right-radius: 4px;
+}
+
+.message.typing {
+ padding: 16px 20px;
+}
+
+.typing-indicator {
+ display: flex;
+ gap: 4px;
+}
+
+.typing-indicator span {
+ width: 8px;
+ height: 8px;
+ background: var(--gray-400);
+ border-radius: 50%;
+ animation: typing 1.4s infinite ease-in-out;
+}
+
+.typing-indicator span:nth-child(2) {
+ animation-delay: 0.2s;
+}
+
+.typing-indicator span:nth-child(3) {
+ animation-delay: 0.4s;
+}
+
+@keyframes typing {
+ 0%, 60%, 100% { transform: translateY(0); }
+ 30% { transform: translateY(-8px); }
+}
+
+.chat-input {
+ display: flex;
+ padding: 16px 20px;
+ border-top: 1px solid var(--gray-200);
+ gap: 12px;
+}
+
+.chat-input input {
+ flex: 1;
+ padding: 12px 16px;
+ border: 1px solid var(--gray-300);
+ border-radius: var(--radius-full);
+ font-size: 0.9375rem;
+ outline: none;
+ transition: var(--transition-fast);
+}
+
+.chat-input input:focus {
+ border-color: var(--primary);
+}
+
+.chat-input button {
+ width: 44px;
+ height: 44px;
+ background: var(--gradient-primary);
+ color: var(--white);
+ border: none;
+ border-radius: var(--radius-full);
+ cursor: pointer;
+ transition: var(--transition);
+}
+
+.chat-input button:hover {
+ transform: scale(1.05);
+}
+
+/* Hero Background */
+.hero-bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+ pointer-events: none;
+}
+
+.gradient-orb {
+ position: absolute;
+ border-radius: 50%;
+ filter: blur(80px);
+ opacity: 0.4;
+}
+
+.orb-1 {
+ width: 600px;
+ height: 600px;
+ background: var(--primary-light);
+ top: -200px;
+ right: -100px;
+}
+
+.orb-2 {
+ width: 400px;
+ height: 400px;
+ background: var(--secondary);
+ bottom: -100px;
+ left: -100px;
+}
+
+.orb-3 {
+ width: 300px;
+ height: 300px;
+ background: var(--accent);
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+/* ============================================
+ Trusted By Section
+ ============================================ */
+.trusted-by {
+ padding: 60px 0;
+ background: var(--white);
+ border-bottom: 1px solid var(--gray-200);
+}
+
+.trusted-label {
+ text-align: center;
+ color: var(--gray-500);
+ font-size: 0.875rem;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ margin-bottom: 24px;
+}
+
+.trusted-logos {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 48px;
+ flex-wrap: wrap;
+}
+
+.logo-placeholder {
+ color: var(--gray-400);
+ font-size: 0.875rem;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+/* ============================================
+ Section Header
+ ============================================ */
+.section-header {
+ text-align: center;
+ max-width: 700px;
+ margin: 0 auto 60px;
+}
+
+.section-badge {
+ display: inline-block;
+ padding: 6px 16px;
+ background: var(--primary-light);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ font-size: 0.75rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ margin-bottom: 16px;
+}
+
+.section-header h2 {
+ margin-bottom: 16px;
+}
+
+.section-header p {
+ font-size: 1.125rem;
+ color: var(--gray-600);
+}
+
+/* ============================================
+ Features Section
+ ============================================ */
+.features {
+ padding: var(--section-padding) 0;
+ background: var(--white);
+}
+
+.features-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 32px;
+}
+
+.feature-card {
+ padding: 32px;
+ background: var(--white);
+ border: 1px solid var(--gray-200);
+ border-radius: var(--radius-lg);
+ transition: var(--transition);
+}
+
+.feature-card:hover {
+ transform: translateY(-4px);
+ box-shadow: var(--shadow-lg);
+ border-color: var(--primary-light);
+}
+
+.feature-icon {
+ width: 56px;
+ height: 56px;
+ background: var(--gradient-primary);
+ border-radius: var(--radius-md);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.5rem;
+ color: var(--white);
+ margin-bottom: 20px;
+}
+
+.feature-card h3 {
+ margin-bottom: 12px;
+ font-size: 1.25rem;
+}
+
+.feature-card p {
+ color: var(--gray-600);
+ font-size: 0.9375rem;
+}
+
+/* ============================================
+ How It Works Section
+ ============================================ */
+.how-it-works {
+ padding: var(--section-padding) 0;
+ background: var(--gray-50);
+}
+
+.steps {
+ display: flex;
+ align-items: flex-start;
+ justify-content: center;
+ gap: 0;
+ margin-bottom: 60px;
+}
+
+.step {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ max-width: 280px;
+ padding: 0 20px;
+}
+
+.step-number {
+ width: 48px;
+ height: 48px;
+ background: var(--gradient-primary);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.25rem;
+ font-weight: 700;
+ margin-bottom: 20px;
+}
+
+.step-content h3 {
+ margin-bottom: 8px;
+}
+
+.step-content p {
+ color: var(--gray-600);
+ font-size: 0.9375rem;
+}
+
+.step-icon {
+ margin-top: 20px;
+ font-size: 2.5rem;
+ color: var(--primary-light);
+}
+
+.step-connector {
+ width: 100px;
+ height: 2px;
+ background: var(--gray-300);
+ margin-top: 24px;
+}
+
+/* Code Preview */
+.code-preview {
+ max-width: 600px;
+ margin: 0 auto;
+ background: var(--gray-900);
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+ box-shadow: var(--shadow-xl);
+}
+
+.code-header {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 12px 16px;
+ background: var(--gray-800);
+}
+
+.code-dot {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+}
+
+.code-dot.red { background: #ff5f56; }
+.code-dot.yellow { background: #ffbd2e; }
+.code-dot.green { background: #27ca40; }
+
+.code-title {
+ margin-left: auto;
+ color: var(--gray-400);
+ font-size: 0.75rem;
+}
+
+.code-preview pre {
+ padding: 20px;
+ margin: 0;
+ overflow-x: auto;
+}
+
+.code-preview code {
+ color: var(--success);
+ font-family: 'Monaco', 'Menlo', monospace;
+ font-size: 0.875rem;
+}
+
+/* ============================================
+ Pricing Section
+ ============================================ */
+.pricing {
+ padding: var(--section-padding) 0;
+ background: var(--white);
+}
+
+.pricing-grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 32px;
+ margin-bottom: 60px;
+}
+
+.pricing-card {
+ position: relative;
+ padding: 40px 32px;
+ background: var(--white);
+ border: 2px solid var(--gray-200);
+ border-radius: var(--radius-xl);
+ transition: var(--transition);
+}
+
+.pricing-card:hover {
+ border-color: var(--primary-light);
+}
+
+.pricing-card.featured {
+ border-color: var(--primary);
+ transform: scale(1.05);
+ box-shadow: var(--shadow-xl);
+}
+
+.pricing-badge {
+ position: absolute;
+ top: -12px;
+ left: 50%;
+ transform: translateX(-50%);
+ padding: 6px 20px;
+ background: var(--gradient-primary);
+ color: var(--white);
+ border-radius: var(--radius-full);
+ font-size: 0.75rem;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+.pricing-header {
+ text-align: center;
+ margin-bottom: 32px;
+}
+
+.pricing-header h3 {
+ margin-bottom: 16px;
+ font-size: 1.5rem;
+}
+
+.price {
+ display: flex;
+ align-items: baseline;
+ justify-content: center;
+ gap: 4px;
+ margin-bottom: 8px;
+}
+
+.price .currency {
+ font-size: 1.5rem;
+ font-weight: 600;
+ color: var(--gray-600);
+}
+
+.price .amount {
+ font-size: 3.5rem;
+ font-weight: 800;
+ color: var(--gray-900);
+ line-height: 1;
+}
+
+.price .period {
+ font-size: 1rem;
+ color: var(--gray-500);
+}
+
+.pricing-description {
+ color: var(--gray-600);
+ font-size: 0.9375rem;
+}
+
+.pricing-features {
+ list-style: none;
+ margin-bottom: 32px;
+}
+
+.pricing-features li {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 0;
+ border-bottom: 1px solid var(--gray-100);
+ font-size: 0.9375rem;
+}
+
+.pricing-features li:last-child {
+ border-bottom: none;
+}
+
+.pricing-features li i {
+ font-size: 0.875rem;
+}
+
+.pricing-features li i.fa-check {
+ color: var(--success);
+}
+
+.pricing-features li i.fa-times {
+ color: var(--gray-400);
+}
+
+.pricing-features li.disabled {
+ color: var(--gray-400);
+}
+
+.pricing-note {
+ text-align: center;
+ margin-top: 16px;
+ font-size: 0.875rem;
+ color: var(--gray-600);
+}
+
+.pricing-note i {
+ color: var(--accent);
+}
+
+.discount-tag {
+ background: var(--accent);
+ color: var(--white);
+ padding: 2px 8px;
+ border-radius: var(--radius-sm);
+ font-weight: 600;
+}
+
+/* Discount Timeline */
+.discount-timeline {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 40px;
+ background: var(--gray-50);
+ border-radius: var(--radius-xl);
+}
+
+.discount-timeline h3 {
+ text-align: center;
+ margin-bottom: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 12px;
+}
+
+.discount-timeline h3 i {
+ color: var(--primary);
+}
+
+.timeline {
+ display: flex;
+ justify-content: space-between;
+ position: relative;
+}
+
+.timeline::before {
+ content: '';
+ position: absolute;
+ top: 12px;
+ left: 50px;
+ right: 50px;
+ height: 4px;
+ background: var(--gray-300);
+ z-index: 0;
+}
+
+.timeline-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+ position: relative;
+ z-index: 1;
+}
+
+.timeline-marker {
+ width: 24px;
+ height: 24px;
+ background: var(--gray-300);
+ border: 4px solid var(--white);
+ border-radius: 50%;
+ margin-bottom: 16px;
+}
+
+.timeline-marker.active {
+ background: var(--success);
+}
+
+.timeline-content {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.timeline-day {
+ font-weight: 600;
+ color: var(--gray-700);
+}
+
+.timeline-discount {
+ color: var(--primary);
+ font-weight: 600;
+}
+
+.timeline-price {
+ font-size: 1.25rem;
+ font-weight: 700;
+ color: var(--gray-900);
+}
+
+/* ============================================
+ Registration Section
+ ============================================ */
+.register {
+ padding: var(--section-padding) 0;
+ background: var(--gray-50);
+}
+
+.register-wrapper {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 60px;
+ align-items: center;
+}
+
+.register-info h2 {
+ margin-bottom: 16px;
+}
+
+.register-info > p {
+ color: var(--gray-600);
+ font-size: 1.125rem;
+ margin-bottom: 32px;
+}
+
+.register-benefits {
+ list-style: none;
+}
+
+.register-benefits li {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 0;
+ font-size: 1rem;
+ color: var(--gray-700);
+}
+
+.register-benefits li i {
+ color: var(--success);
+ font-size: 1.25rem;
+}
+
+/* Registration Form */
+.register-form-wrapper {
+ background: var(--white);
+ padding: 40px;
+ border-radius: var(--radius-xl);
+ box-shadow: var(--shadow-lg);
+}
+
+.register-form {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+}
+
+.form-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 16px;
+}
+
+.form-group {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+
+.form-group label {
+ font-size: 0.875rem;
+ font-weight: 500;
+ color: var(--gray-700);
+}
+
+.form-group input[type="text"],
+.form-group input[type="email"],
+.form-group input[type="url"] {
+ padding: 12px 16px;
+ border: 1px solid var(--gray-300);
+ border-radius: var(--radius);
+ font-size: 1rem;
+ transition: var(--transition-fast);
+}
+
+.form-group input:focus {
+ outline: none;
+ border-color: var(--primary);
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
+}
+
+.checkbox-group {
+ flex-direction: row;
+ align-items: flex-start;
+ gap: 12px;
+}
+
+.checkbox-group input[type="checkbox"] {
+ width: 18px;
+ height: 18px;
+ margin-top: 2px;
+ accent-color: var(--primary);
+}
+
+.checkbox-group label {
+ font-size: 0.875rem;
+ color: var(--gray-600);
+ line-height: 1.4;
+}
+
+.checkbox-group label a {
+ color: var(--primary);
+}
+
+/* Form States */
+.form-success,
+.form-error {
+ text-align: center;
+ padding: 40px 20px;
+}
+
+.success-icon,
+.error-icon {
+ font-size: 4rem;
+ margin-bottom: 20px;
+}
+
+.success-icon {
+ color: var(--success);
+}
+
+.error-icon {
+ color: var(--error);
+}
+
+.form-success h3,
+.form-error h3 {
+ margin-bottom: 12px;
+}
+
+.form-success p,
+.form-error p {
+ color: var(--gray-600);
+ margin-bottom: 20px;
+}
+
+.success-details {
+ text-align: left;
+ background: var(--gray-50);
+ padding: 20px;
+ border-radius: var(--radius);
+ margin-top: 20px;
+}
+
+.success-details ol {
+ margin-left: 20px;
+ margin-top: 12px;
+}
+
+.success-details li {
+ padding: 4px 0;
+ color: var(--gray-600);
+}
+
+/* ============================================
+ FAQ Section
+ ============================================ */
+.faq {
+ padding: var(--section-padding) 0;
+ background: var(--white);
+}
+
+.faq-grid {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.faq-item {
+ border-bottom: 1px solid var(--gray-200);
+}
+
+.faq-question {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 24px 0;
+ background: none;
+ border: none;
+ cursor: pointer;
+ text-align: left;
+ font-size: 1.125rem;
+ font-weight: 600;
+ color: var(--gray-900);
+ transition: var(--transition-fast);
+}
+
+.faq-question:hover {
+ color: var(--primary);
+}
+
+.faq-question i {
+ font-size: 0.875rem;
+ color: var(--gray-400);
+ transition: var(--transition);
+}
+
+.faq-item.active .faq-question i {
+ transform: rotate(180deg);
+}
+
+.faq-answer {
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.3s ease;
+}
+
+.faq-item.active .faq-answer {
+ max-height: 500px;
+}
+
+.faq-answer p {
+ padding-bottom: 24px;
+ color: var(--gray-600);
+ line-height: 1.7;
+}
+
+/* ============================================
+ CTA Section
+ ============================================ */
+.cta {
+ padding: 80px 0;
+ background: var(--gradient-primary);
+}
+
+.cta-content {
+ text-align: center;
+ color: var(--white);
+}
+
+.cta-content h2 {
+ color: var(--white);
+ margin-bottom: 16px;
+}
+
+.cta-content p {
+ font-size: 1.25rem;
+ opacity: 0.9;
+ margin-bottom: 32px;
+}
+
+/* ============================================
+ Footer
+ ============================================ */
+.footer {
+ padding: 80px 0 40px;
+ background: var(--gray-900);
+ color: var(--gray-400);
+}
+
+.footer-grid {
+ display: grid;
+ grid-template-columns: 2fr 1fr 1fr 1fr;
+ gap: 48px;
+ margin-bottom: 48px;
+}
+
+.footer-brand .logo {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--white);
+ margin-bottom: 16px;
+}
+
+.footer-brand .logo img {
+ height: 40px;
+ filter: brightness(0) invert(1);
+}
+
+.footer-brand p {
+ margin-bottom: 24px;
+ line-height: 1.6;
+}
+
+.social-links {
+ display: flex;
+ gap: 16px;
+}
+
+.social-links a {
+ width: 40px;
+ height: 40px;
+ background: var(--gray-800);
+ border-radius: var(--radius);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: var(--gray-400);
+ transition: var(--transition);
+}
+
+.social-links a:hover {
+ background: var(--primary);
+ color: var(--white);
+}
+
+.footer-links h4 {
+ color: var(--white);
+ font-size: 1rem;
+ margin-bottom: 20px;
+}
+
+.footer-links ul {
+ list-style: none;
+}
+
+.footer-links li {
+ margin-bottom: 12px;
+}
+
+.footer-links a {
+ color: var(--gray-400);
+ transition: var(--transition-fast);
+}
+
+.footer-links a:hover {
+ color: var(--white);
+}
+
+.footer-bottom {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-top: 32px;
+ border-top: 1px solid var(--gray-800);
+ font-size: 0.875rem;
+}
+
+.footer-bottom i {
+ color: var(--error);
+}
+
+/* ============================================
+ Responsive Design
+ ============================================ */
+@media (max-width: 1024px) {
+ .hero .container {
+ grid-template-columns: 1fr;
+ text-align: center;
+ }
+
+ .hero-content {
+ order: 1;
+ }
+
+ .hero-visual {
+ order: 2;
+ }
+
+ .hero-subtitle {
+ margin: 0 auto 32px;
+ }
+
+ .hero-cta {
+ justify-content: center;
+ }
+
+ .hero-stats {
+ justify-content: center;
+ }
+
+ .chat-preview {
+ margin: 0 auto;
+ }
+
+ .features-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .pricing-grid {
+ grid-template-columns: 1fr;
+ max-width: 400px;
+ margin: 0 auto 60px;
+ }
+
+ .pricing-card.featured {
+ transform: none;
+ }
+
+ .register-wrapper {
+ grid-template-columns: 1fr;
+ }
+
+ .register-info {
+ text-align: center;
+ }
+
+ .register-benefits {
+ display: inline-block;
+ text-align: left;
+ }
+
+ .footer-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+
+@media (max-width: 768px) {
+ :root {
+ --section-padding: 60px;
+ }
+
+ .navbar .container {
+ height: 64px;
+ }
+
+ .nav-links {
+ display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ background: var(--white);
+ flex-direction: column;
+ padding: 20px;
+ gap: 16px;
+ border-bottom: 1px solid var(--gray-200);
+ box-shadow: var(--shadow-lg);
+ }
+
+ .nav-links.active {
+ display: flex;
+ }
+
+ .mobile-menu-btn {
+ display: block;
+ }
+
+ .hero {
+ padding: 120px 0 60px;
+ }
+
+ .hero-cta {
+ flex-direction: column;
+ }
+
+ .hero-stats {
+ flex-direction: column;
+ gap: 24px;
+ }
+
+ .features-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .steps {
+ flex-direction: column;
+ gap: 32px;
+ }
+
+ .step-connector {
+ width: 2px;
+ height: 40px;
+ margin: 0;
+ }
+
+ .timeline {
+ flex-direction: column;
+ gap: 24px;
+ }
+
+ .timeline::before {
+ display: none;
+ }
+
+ .form-row {
+ grid-template-columns: 1fr;
+ }
+
+ .register-form-wrapper {
+ padding: 24px;
+ }
+
+ .footer-grid {
+ grid-template-columns: 1fr;
+ text-align: center;
+ }
+
+ .social-links {
+ justify-content: center;
+ }
+
+ .footer-bottom {
+ flex-direction: column;
+ gap: 12px;
+ text-align: center;
+ }
+}
+
+@media (max-width: 480px) {
+ .container {
+ padding: 0 16px;
+ }
+
+ h1 {
+ font-size: 2rem;
+ }
+
+ h2 {
+ font-size: 1.75rem;
+ }
+
+ .btn-lg {
+ padding: 14px 24px;
+ font-size: 1rem;
+ }
+
+ .chat-preview {
+ max-width: 100%;
+ }
+
+ .discount-timeline {
+ padding: 24px;
+ }
+}
+
+/* ============================================
+ Animations
+ ============================================ */
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ transform: translateY(30px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
+.animate-fade-in-up {
+ animation: fadeInUp 0.6s ease forwards;
+}
+
+.animate-fade-in {
+ animation: fadeIn 0.6s ease forwards;
+}
+
+/* Scroll animations */
+.scroll-animate {
+ opacity: 0;
+ transform: translateY(30px);
+ transition: opacity 0.6s ease, transform 0.6s ease;
+}
+
+.scroll-animate.visible {
+ opacity: 1;
+ transform: translateY(0);
+}
+
+/* Loading spinner */
+.spinner {
+ width: 20px;
+ height: 20px;
+ border: 2px solid rgba(255, 255, 255, 0.3);
+ border-top-color: var(--white);
+ border-radius: 50%;
+ animation: spin 0.8s linear infinite;
+}
+
+@keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+/* ============================================
+ Utility Classes
+ ============================================ */
+.text-center { text-align: center; }
+.text-left { text-align: left; }
+.text-right { text-align: right; }
+
+.mt-1 { margin-top: 8px; }
+.mt-2 { margin-top: 16px; }
+.mt-3 { margin-top: 24px; }
+.mt-4 { margin-top: 32px; }
+
+.mb-1 { margin-bottom: 8px; }
+.mb-2 { margin-bottom: 16px; }
+.mb-3 { margin-bottom: 24px; }
+.mb-4 { margin-bottom: 32px; }
+
+.hidden { display: none !important; }
+.visible { display: block !important; }
diff --git a/dashboard.html b/dashboard.html
new file mode 100644
index 0000000..62ef39d
--- /dev/null
+++ b/dashboard.html
@@ -0,0 +1,480 @@
+
+
+
+
+
+
+ Dashboard - BotKonzept
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trial: 7 Tage übrig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ Dokumente
+
+
+
+
+
+
+
+ 0
+ Nachrichten
+
+
+
+
+
+
+
+ 0
+ Besucher
+
+
+
+
+
+
+
+ -
+ Zufriedenheit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
🎉 Exklusives Angebot: 30% Frühbucher-Rabatt!
+
Upgraden Sie jetzt und sparen Sie €176,40 im ersten Jahr. Angebot endet in 48:00:00
+
+
+ Jetzt für €34,30/Monat upgraden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PDF-Dateien hochladen
+
Ziehen Sie Dateien hierher oder klicken Sie zum Auswählen
+
+
+ Dateien auswählen
+
+
Unterstützt: PDF (max. 10MB pro Datei)
+
+
+
+
+
+
+
+
+
+
+
+
+
Noch keine Dokumente
+
Laden Sie Ihr erstes PDF hoch, um zu beginnen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hallo! Ich bin Ihr KI-Assistent. Wie kann ich Ihnen helfen?
+
+
+
+
+
+
+
+
+
+
+
💡 Tipps
+
+ Stellen Sie Fragen zu Ihren hochgeladenen Dokumenten
+ Der Bot antwortet basierend auf Ihrer Wissensdatenbank
+ Je mehr Dokumente, desto besser die Antworten
+
+
+
+
+
+
+
+
+
+
+
+
+
Embed-Code
+
Kopieren Sie diesen Code und fügen Sie ihn vor dem </body>-Tag Ihrer Website ein:
+
+
+
<script src="https://botkonzept.de/embed/IHRE-ID .js"></script>
+
+ Kopieren
+
+
+
+
+ Code kopiert!
+
+
+
+
+
+
API-Endpunkte
+
Für fortgeschrittene Integrationen:
+
+
+
+
Chat-Webhook:
+
+ https://sb-XXXXX.userman.de/webhook/rag-chat-webhook/chat
+
+
+
+
+
+
+
Upload-Formular:
+
+ https://sb-XXXXX.userman.de/form/rag-upload-form
+
+
+
+
+
+
+
+
+
+
+
Installationsanleitung
+
+
+
+
1
+
+
Code kopieren
+
Klicken Sie auf "Kopieren" um den Embed-Code in die Zwischenablage zu kopieren.
+
+
+
+
2
+
+
In Website einfügen
+
Fügen Sie den Code vor dem schließenden </body>-Tag ein.
+
+
+
+
3
+
+
Fertig!
+
Der Chatbot erscheint automatisch unten rechts auf Ihrer Website.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Analytics verfügbar im Starter-Plan
+
Upgraden Sie, um detaillierte Statistiken zu sehen:
+
+ Häufigste Fragen
+ Antwortqualität
+ Besucherstatistiken
+ Conversion-Tracking
+
+
+ Jetzt upgraden
+
+
+
+
+
+
+
+
+
+
+
+
Erscheinungsbild
+
+
+
Primärfarbe
+
+
+ #6366f1
+
+
+
+
+ Chatbot-Name
+
+
+
+
+ Begrüßungsnachricht
+
+
+
+
+ Speichern
+
+
+
+
+
+
Konto
+
+
+ E-Mail
+
+
+
+
+
Plan
+
+ Trial
+ Endet am 01.02.2025
+
+
+
+
+ Plan upgraden
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..8cceef2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,595 @@
+
+
+
+
+
+
+
+ BotKonzept - KI-Chatbot für Ihre Website
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7 Tage kostenlos testen
+
+
Ihr intelligenter KI-Chatbot für die Website
+
+ Laden Sie einfach Ihre PDFs hoch und Ihr Chatbot beantwortet Kundenfragen automatisch.
+ Keine Programmierung erforderlich – in 5 Minuten einsatzbereit.
+
+
+
+
+ 5 Min
+ Setup-Zeit
+
+
+ 100%
+ DSGVO-konform
+
+
+ 24/7
+ Verfügbar
+
+
+
+
+
+
+
+
+
Hallo! 👋 Wie kann ich Ihnen heute helfen?
+
+
+
Was sind Ihre Öffnungszeiten?
+
+
+
Unsere Öffnungszeiten sind Montag bis Freitag von 9:00 bis 18:00 Uhr. Am Wochenende sind wir geschlossen.
+
+
+
Wie kann ich eine Bestellung aufgeben?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Vertraut von innovativen Unternehmen
+
+
Unternehmen A
+
Unternehmen B
+
Unternehmen C
+
Unternehmen D
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PDF-Upload
+
Laden Sie einfach Ihre Dokumente hoch. Der Chatbot lernt automatisch aus Ihren Inhalten.
+
+
+
+
+
+
KI-gestützte Antworten
+
Modernste KI-Technologie für natürliche und präzise Antworten auf Kundenfragen.
+
+
+
+
+
+
Einfache Integration
+
Ein Zeile Code – mehr brauchen Sie nicht. Funktioniert mit jeder Website.
+
+
+
+
+
+
DSGVO-konform
+
Alle Daten werden in Deutschland gehostet. 100% DSGVO-konform.
+
+
+
+
+
+
Anpassbares Design
+
Passen Sie Farben und Stil an Ihre Marke an. Ihr Chatbot, Ihr Look.
+
+
+
+
+
+
Analytics Dashboard
+
Verstehen Sie, was Ihre Kunden fragen. Detaillierte Statistiken und Insights.
+
+
+
+
+
+
+
+
+
+
+
+
1
+
+
Registrieren
+
Erstellen Sie Ihr kostenloses Konto in weniger als einer Minute. Keine Kreditkarte erforderlich.
+
+
+
+
+
+
+
+
2
+
+
PDFs hochladen
+
Laden Sie Ihre Dokumente hoch – FAQs, Produktinfos, Anleitungen. Der Bot lernt automatisch.
+
+
+
+
+
+
+
+
3
+
+
Code einbinden
+
Kopieren Sie den Code-Snippet und fügen Sie ihn in Ihre Website ein. Fertig!
+
+
+
+
+
+
+
+
+
<script src="https://botkonzept.de/embed/IHRE-ID.js"></script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100 Dokumente
+ 1.000 Nachrichten
+ 1 Chatbot
+ Standard Support
+ Custom Branding
+ Analytics
+
+
Kostenlos starten
+
+
+
+
+
Beliebt
+
+
+ Unbegrenzte Dokumente
+ 10.000 Nachrichten/Monat
+ 1 Chatbot
+ Prioritäts-Support
+ Custom Branding
+ Analytics Dashboard
+
+
Jetzt starten
+
+
+ 30% Rabatt bei Upgrade innerhalb von 3 Tagen
+
+
+
+
+
+
+
+ Unbegrenzte Dokumente
+ 50.000 Nachrichten/Monat
+ 5 Chatbots
+ Dedizierter Support
+ API-Zugriff
+ SLA-Garantie
+
+
Kontakt aufnehmen
+
+
+
+
+
+
Frühbucher-Rabatte
+
+
+
+
+ Tag 1-3
+ 30% Rabatt
+ €34,30/Monat
+
+
+
+
+
+ Tag 4-5
+ 15% Rabatt
+ €41,65/Monat
+
+
+
+
+
+ Tag 6-7
+ Normalpreis
+ €49/Monat
+
+
+
+
+
+
+
+
+
+
+
+
+
Starten Sie Ihre 7-Tage Trial
+
Keine Kreditkarte erforderlich. Voller Funktionsumfang. Jederzeit kündbar.
+
+ Sofortiger Zugang
+ Keine Zahlungsdaten nötig
+ Persönlicher Support
+ Alle Features inklusive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wie funktioniert der KI-Chatbot?
+
+
+
+
Unser Chatbot nutzt modernste KI-Technologie (RAG - Retrieval Augmented Generation).
+ Sie laden Ihre Dokumente hoch, und der Bot durchsucht diese, um präzise Antworten auf
+ Kundenfragen zu geben. Die KI versteht den Kontext und formuliert natürliche Antworten.
+
+
+
+
+ Welche Dateiformate werden unterstützt?
+
+
+
+
Aktuell unterstützen wir PDF-Dateien. Weitere Formate wie Word, Excel und
+ Textdateien sind in Planung. Sie können beliebig viele PDFs hochladen –
+ FAQs, Produktkataloge, Anleitungen, etc.
+
+
+
+
+ Ist der Service DSGVO-konform?
+
+
+
+
Ja, 100%! Alle Daten werden ausschließlich auf Servern in Deutschland gehostet.
+ Wir verarbeiten keine Daten außerhalb der EU. Sie erhalten einen
+ Auftragsverarbeitungsvertrag (AVV) auf Anfrage.
+
+
+
+
+ Kann ich den Chatbot an mein Design anpassen?
+
+
+
+
Ja! Im Starter- und Business-Plan können Sie Farben, Logo und Begrüßungstext
+ anpassen. Der Chatbot fügt sich nahtlos in Ihr Website-Design ein.
+
+
+
+
+ Was passiert nach der Trial-Phase?
+
+
+
+
Nach 7 Tagen endet Ihre Trial automatisch. Sie können jederzeit auf einen
+ bezahlten Plan upgraden. Wenn Sie innerhalb der ersten 3 Tage upgraden,
+ erhalten Sie 30% Rabatt!
+
+
+
+
+ Wie integriere ich den Chatbot in meine Website?
+
+
+
+
Ganz einfach! Sie erhalten einen Code-Snippet, den Sie vor dem </body>-Tag
+ Ihrer Website einfügen. Das funktioniert mit WordPress, Shopify, Wix,
+ und jeder anderen Website.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/dashboard.js b/js/dashboard.js
new file mode 100644
index 0000000..7662a11
--- /dev/null
+++ b/js/dashboard.js
@@ -0,0 +1,744 @@
+/**
+ * BotKonzept Dashboard JavaScript
+ * ================================
+ * Handles all dashboard functionality
+ */
+
+// Configuration
+const DASHBOARD_CONFIG = {
+ // API Endpoints - Update for production
+ API_BASE_URL: 'https://api.botkonzept.de',
+ CHAT_WEBHOOK_URL: '', // Will be set from customer data
+ UPLOAD_URL: '', // Will be set from customer data
+
+ // Customer data (loaded from localStorage or API)
+ customerId: null,
+ customerData: null,
+
+ // Trial settings
+ trialDays: 7,
+ discountDay3: 0.30, // 30% discount
+ discountDay5: 0.15, // 15% discount
+};
+
+// ============================================
+// DOM Ready
+// ============================================
+document.addEventListener('DOMContentLoaded', () => {
+ initDashboard();
+ initNavigation();
+ initUserMenu();
+ initFileUpload();
+ initChatbot();
+ initSectionNavigation();
+ loadCustomerData();
+ updateTrialStatus();
+});
+
+// ============================================
+// Dashboard Initialization
+// ============================================
+function initDashboard() {
+ // Check if user is logged in (for demo, we'll simulate this)
+ const isLoggedIn = localStorage.getItem('botkonzept_session') || true; // Demo mode
+
+ if (!isLoggedIn) {
+ window.location.href = 'index.html';
+ return;
+ }
+
+ // Load customer data from localStorage or use demo data
+ const storedData = localStorage.getItem('botkonzept_customer');
+ if (storedData) {
+ DASHBOARD_CONFIG.customerData = JSON.parse(storedData);
+ } else {
+ // Demo data
+ DASHBOARD_CONFIG.customerData = {
+ id: 'demo-' + Date.now(),
+ firstName: 'Max',
+ lastName: 'Mustermann',
+ email: 'max@beispiel.de',
+ company: 'Muster GmbH',
+ trialStartDate: new Date().toISOString(),
+ instanceUrl: 'https://sb-demo.userman.de',
+ chatWebhook: 'https://sb-demo.userman.de/webhook/rag-chat-webhook/chat',
+ uploadUrl: 'https://sb-demo.userman.de/form/rag-upload-form',
+ };
+ }
+
+ // Update UI with customer data
+ updateCustomerUI();
+}
+
+// ============================================
+// Navigation
+// ============================================
+function initNavigation() {
+ // Sidebar navigation
+ const navItems = document.querySelectorAll('.sidebar-nav .nav-item');
+ const sections = document.querySelectorAll('.dashboard-section');
+
+ navItems.forEach(item => {
+ item.addEventListener('click', (e) => {
+ e.preventDefault();
+ const sectionId = item.getAttribute('data-section');
+
+ // Update active states
+ navItems.forEach(nav => nav.classList.remove('active'));
+ item.classList.add('active');
+
+ // Show corresponding section
+ sections.forEach(section => {
+ section.classList.remove('active');
+ if (section.id === sectionId) {
+ section.classList.add('active');
+ }
+ });
+
+ // Update URL hash
+ window.location.hash = sectionId;
+ });
+ });
+
+ // Handle initial hash
+ const hash = window.location.hash.slice(1);
+ if (hash) {
+ const targetNav = document.querySelector(`[data-section="${hash}"]`);
+ if (targetNav) {
+ targetNav.click();
+ }
+ }
+}
+
+function initSectionNavigation() {
+ // Quick action cards
+ const actionCards = document.querySelectorAll('.action-card');
+ actionCards.forEach(card => {
+ card.addEventListener('click', (e) => {
+ e.preventDefault();
+ const sectionId = card.getAttribute('data-section');
+ const targetNav = document.querySelector(`[data-section="${sectionId}"]`);
+ if (targetNav) {
+ targetNav.click();
+ }
+ });
+ });
+}
+
+// ============================================
+// User Menu
+// ============================================
+function initUserMenu() {
+ const userBtn = document.getElementById('userMenuBtn');
+ const userDropdown = document.getElementById('userDropdown');
+
+ if (!userBtn || !userDropdown) return;
+
+ userBtn.addEventListener('click', () => {
+ userDropdown.classList.toggle('active');
+ });
+
+ // Close on outside click
+ document.addEventListener('click', (e) => {
+ if (!userBtn.contains(e.target) && !userDropdown.contains(e.target)) {
+ userDropdown.classList.remove('active');
+ }
+ });
+}
+
+// ============================================
+// Customer Data
+// ============================================
+function loadCustomerData() {
+ const data = DASHBOARD_CONFIG.customerData;
+ if (!data) return;
+
+ // Update customer ID in embed code
+ const customerIdEl = document.getElementById('customerId');
+ if (customerIdEl) {
+ customerIdEl.textContent = data.id;
+ }
+
+ // Update webhook URLs
+ const chatWebhookEl = document.getElementById('chatWebhook');
+ if (chatWebhookEl && data.chatWebhook) {
+ chatWebhookEl.textContent = data.chatWebhook;
+ }
+
+ const uploadUrlEl = document.getElementById('uploadUrl');
+ if (uploadUrlEl && data.uploadUrl) {
+ uploadUrlEl.textContent = data.uploadUrl;
+ }
+
+ // Update user name
+ const userNameEl = document.getElementById('userName');
+ if (userNameEl) {
+ userNameEl.textContent = `${data.firstName} ${data.lastName}`;
+ }
+
+ // Update account email
+ const accountEmailEl = document.getElementById('accountEmail');
+ if (accountEmailEl) {
+ accountEmailEl.value = data.email;
+ }
+}
+
+function updateCustomerUI() {
+ loadCustomerData();
+
+ // Update stats (demo data)
+ updateStats({
+ documents: 0,
+ messages: 0,
+ visitors: 0,
+ satisfaction: '-'
+ });
+}
+
+function updateStats(stats) {
+ const docCountEl = document.getElementById('docCount');
+ const messageCountEl = document.getElementById('messageCount');
+ const visitorCountEl = document.getElementById('visitorCount');
+ const satisfactionEl = document.getElementById('satisfactionRate');
+
+ if (docCountEl) docCountEl.textContent = stats.documents;
+ if (messageCountEl) messageCountEl.textContent = stats.messages;
+ if (visitorCountEl) visitorCountEl.textContent = stats.visitors;
+ if (satisfactionEl) satisfactionEl.textContent = stats.satisfaction;
+}
+
+// ============================================
+// Trial Status
+// ============================================
+function updateTrialStatus() {
+ const data = DASHBOARD_CONFIG.customerData;
+ if (!data || !data.trialStartDate) return;
+
+ const trialStart = new Date(data.trialStartDate);
+ const now = new Date();
+ const daysPassed = Math.floor((now - trialStart) / (1000 * 60 * 60 * 24));
+ const daysRemaining = Math.max(0, DASHBOARD_CONFIG.trialDays - daysPassed);
+
+ // Update trial badge
+ const trialDaysEl = document.getElementById('trialDays');
+ if (trialDaysEl) {
+ trialDaysEl.textContent = daysRemaining;
+ }
+
+ // Update trial end date
+ const trialEndDateEl = document.getElementById('trialEndDate');
+ if (trialEndDateEl) {
+ const endDate = new Date(trialStart);
+ endDate.setDate(endDate.getDate() + DASHBOARD_CONFIG.trialDays);
+ trialEndDateEl.textContent = formatDate(endDate);
+ }
+
+ // Show/hide discount banner based on days
+ const trialBanner = document.getElementById('trialBanner');
+ if (trialBanner) {
+ if (daysPassed <= 3) {
+ // Show 30% discount
+ trialBanner.querySelector('h3').textContent = '🎉 Exklusives Angebot: 30% Frühbucher-Rabatt!';
+ trialBanner.querySelector('.btn').textContent = 'Jetzt für €34,30/Monat upgraden';
+ } else if (daysPassed <= 5) {
+ // Show 15% discount
+ trialBanner.querySelector('h3').textContent = '⏰ Nur noch 2 Tage: 15% Rabatt!';
+ trialBanner.querySelector('.btn').textContent = 'Jetzt für €41,65/Monat upgraden';
+ } else {
+ // Show normal price
+ trialBanner.querySelector('h3').textContent = '⚠️ Ihre Trial endet bald!';
+ trialBanner.querySelector('.btn').textContent = 'Jetzt für €49/Monat upgraden';
+ }
+ }
+
+ // Start countdown timer
+ startOfferCountdown();
+}
+
+function startOfferCountdown() {
+ const countdownEl = document.getElementById('offerCountdown');
+ if (!countdownEl) return;
+
+ // Set countdown to 48 hours from now (for demo)
+ let timeRemaining = 48 * 60 * 60; // 48 hours in seconds
+
+ const updateCountdown = () => {
+ const hours = Math.floor(timeRemaining / 3600);
+ const minutes = Math.floor((timeRemaining % 3600) / 60);
+ const seconds = timeRemaining % 60;
+
+ countdownEl.textContent = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
+
+ if (timeRemaining > 0) {
+ timeRemaining--;
+ setTimeout(updateCountdown, 1000);
+ }
+ };
+
+ updateCountdown();
+}
+
+// ============================================
+// File Upload
+// ============================================
+function initFileUpload() {
+ const uploadArea = document.getElementById('uploadArea');
+ const fileInput = document.getElementById('fileInput');
+
+ if (!uploadArea || !fileInput) return;
+
+ // Drag and drop
+ uploadArea.addEventListener('dragover', (e) => {
+ e.preventDefault();
+ uploadArea.classList.add('dragover');
+ });
+
+ uploadArea.addEventListener('dragleave', () => {
+ uploadArea.classList.remove('dragover');
+ });
+
+ uploadArea.addEventListener('drop', (e) => {
+ e.preventDefault();
+ uploadArea.classList.remove('dragover');
+
+ const files = e.dataTransfer.files;
+ handleFiles(files);
+ });
+
+ // File input change
+ fileInput.addEventListener('change', () => {
+ handleFiles(fileInput.files);
+ });
+}
+
+function handleFiles(files) {
+ const validFiles = Array.from(files).filter(file => {
+ if (file.type !== 'application/pdf') {
+ showNotification('Nur PDF-Dateien werden unterstützt', 'error');
+ return false;
+ }
+ if (file.size > 10 * 1024 * 1024) { // 10MB
+ showNotification(`${file.name} ist zu groß (max. 10MB)`, 'error');
+ return false;
+ }
+ return true;
+ });
+
+ if (validFiles.length === 0) return;
+
+ validFiles.forEach(file => uploadFile(file));
+}
+
+async function uploadFile(file) {
+ const uploadProgress = document.getElementById('uploadProgress');
+ const progressFill = document.getElementById('progressFill');
+ const uploadPercent = document.getElementById('uploadPercent');
+
+ // Show progress
+ if (uploadProgress) uploadProgress.style.display = 'block';
+
+ try {
+ // Simulate upload progress (replace with actual upload)
+ for (let i = 0; i <= 100; i += 10) {
+ await new Promise(resolve => setTimeout(resolve, 200));
+ if (progressFill) progressFill.style.width = `${i}%`;
+ if (uploadPercent) uploadPercent.textContent = `${i}%`;
+ }
+
+ // Add document to list
+ addDocumentToList({
+ name: file.name,
+ size: formatFileSize(file.size),
+ date: new Date().toLocaleDateString('de-DE'),
+ status: 'processing'
+ });
+
+ showNotification(`${file.name} wurde hochgeladen`, 'success');
+
+ // Simulate processing
+ setTimeout(() => {
+ updateDocumentStatus(file.name, 'indexed');
+ updateDocCount();
+ }, 3000);
+
+ } catch (error) {
+ console.error('Upload error:', error);
+ showNotification('Fehler beim Hochladen', 'error');
+ } finally {
+ // Hide progress
+ setTimeout(() => {
+ if (uploadProgress) uploadProgress.style.display = 'none';
+ if (progressFill) progressFill.style.width = '0%';
+ }, 500);
+ }
+}
+
+function addDocumentToList(doc) {
+ const documentsTable = document.getElementById('documentsTable');
+ if (!documentsTable) return;
+
+ // Remove empty state if present
+ const emptyState = documentsTable.querySelector('.empty-state');
+ if (emptyState) emptyState.remove();
+
+ const docRow = document.createElement('div');
+ docRow.className = 'document-row';
+ docRow.dataset.name = doc.name;
+ docRow.innerHTML = `
+
+
+
+
+
${doc.name}
+
${doc.size} • ${doc.date}
+
+ ${doc.status === 'indexed' ? 'Indexiert' : 'Verarbeitung...'}
+
+
+
+
+ `;
+
+ documentsTable.appendChild(docRow);
+}
+
+function updateDocumentStatus(name, status) {
+ const docRow = document.querySelector(`.document-row[data-name="${name}"]`);
+ if (!docRow) return;
+
+ const statusEl = docRow.querySelector('.doc-status');
+ if (statusEl) {
+ statusEl.className = `doc-status ${status}`;
+ statusEl.textContent = status === 'indexed' ? 'Indexiert' : 'Verarbeitung...';
+ }
+}
+
+function deleteDocument(name) {
+ if (!confirm(`Möchten Sie "${name}" wirklich löschen?`)) return;
+
+ const docRow = document.querySelector(`.document-row[data-name="${name}"]`);
+ if (docRow) {
+ docRow.remove();
+ updateDocCount();
+ showNotification('Dokument gelöscht', 'success');
+ }
+
+ // Show empty state if no documents
+ const documentsTable = document.getElementById('documentsTable');
+ if (documentsTable && documentsTable.children.length === 0) {
+ documentsTable.innerHTML = `
+
+
+
Noch keine Dokumente
+
Laden Sie Ihr erstes PDF hoch, um zu beginnen
+
+ `;
+ }
+}
+
+function updateDocCount() {
+ const documentsTable = document.getElementById('documentsTable');
+ const totalDocsEl = document.getElementById('totalDocs');
+ const docCountEl = document.getElementById('docCount');
+
+ if (!documentsTable) return;
+
+ const count = documentsTable.querySelectorAll('.document-row').length;
+
+ if (totalDocsEl) totalDocsEl.textContent = `${count} Dokument${count !== 1 ? 'e' : ''}`;
+ if (docCountEl) docCountEl.textContent = count;
+}
+
+// Make deleteDocument available globally
+window.deleteDocument = deleteDocument;
+
+// ============================================
+// Chatbot
+// ============================================
+function initChatbot() {
+ const chatInput = document.getElementById('chatInput');
+ const sendBtn = document.getElementById('sendBtn');
+ const clearBtn = document.getElementById('clearChat');
+
+ if (!chatInput || !sendBtn) return;
+
+ // Send message on button click
+ sendBtn.addEventListener('click', () => sendMessage());
+
+ // Send message on Enter
+ chatInput.addEventListener('keypress', (e) => {
+ if (e.key === 'Enter') {
+ sendMessage();
+ }
+ });
+
+ // Clear chat
+ if (clearBtn) {
+ clearBtn.addEventListener('click', () => {
+ const chatMessages = document.getElementById('chatMessages');
+ if (chatMessages) {
+ chatMessages.innerHTML = `
+
+
Hallo! Ich bin Ihr KI-Assistent. Wie kann ich Ihnen helfen?
+
+ `;
+ }
+ });
+ }
+}
+
+async function sendMessage() {
+ const chatInput = document.getElementById('chatInput');
+ const chatMessages = document.getElementById('chatMessages');
+
+ if (!chatInput || !chatMessages) return;
+
+ const message = chatInput.value.trim();
+ if (!message) return;
+
+ // Add user message
+ addChatMessage(message, 'user');
+ chatInput.value = '';
+
+ // Show typing indicator
+ const typingId = showTypingIndicator();
+
+ try {
+ // Send to chat webhook (if configured)
+ const webhookUrl = DASHBOARD_CONFIG.customerData?.chatWebhook;
+
+ if (webhookUrl && webhookUrl !== 'https://sb-demo.userman.de/webhook/rag-chat-webhook/chat') {
+ const response = await fetch(webhookUrl, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ chatInput: message,
+ sessionId: getSessionId(),
+ }),
+ });
+
+ const data = await response.json();
+ removeTypingIndicator(typingId);
+ addChatMessage(data.output || data.response || 'Keine Antwort erhalten', 'bot');
+ } else {
+ // Demo response
+ await new Promise(resolve => setTimeout(resolve, 1500));
+ removeTypingIndicator(typingId);
+
+ const demoResponses = [
+ 'Das ist eine Demo-Antwort. Laden Sie Dokumente hoch, um echte Antworten zu erhalten.',
+ 'Ich kann Ihnen helfen, sobald Sie Ihre Wissensdatenbank mit PDFs gefüllt haben.',
+ 'Bitte laden Sie zunächst einige Dokumente hoch, damit ich Ihre Fragen beantworten kann.',
+ ];
+
+ addChatMessage(demoResponses[Math.floor(Math.random() * demoResponses.length)], 'bot');
+ }
+ } catch (error) {
+ console.error('Chat error:', error);
+ removeTypingIndicator(typingId);
+ addChatMessage('Entschuldigung, es gab einen Fehler. Bitte versuchen Sie es erneut.', 'bot');
+ }
+}
+
+function addChatMessage(text, type) {
+ const chatMessages = document.getElementById('chatMessages');
+ if (!chatMessages) return;
+
+ const messageDiv = document.createElement('div');
+ messageDiv.className = `message ${type}`;
+ messageDiv.innerHTML = `${escapeHtml(text)}
`;
+
+ chatMessages.appendChild(messageDiv);
+ chatMessages.scrollTop = chatMessages.scrollHeight;
+}
+
+function showTypingIndicator() {
+ const chatMessages = document.getElementById('chatMessages');
+ if (!chatMessages) return null;
+
+ const id = 'typing-' + Date.now();
+ const typingDiv = document.createElement('div');
+ typingDiv.className = 'message bot typing';
+ typingDiv.id = id;
+ typingDiv.innerHTML = `
+
+
+
+ `;
+
+ chatMessages.appendChild(typingDiv);
+ chatMessages.scrollTop = chatMessages.scrollHeight;
+
+ return id;
+}
+
+function removeTypingIndicator(id) {
+ if (!id) return;
+ const typingDiv = document.getElementById(id);
+ if (typingDiv) typingDiv.remove();
+}
+
+function getSessionId() {
+ let sessionId = sessionStorage.getItem('chat_session_id');
+ if (!sessionId) {
+ sessionId = 'session-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9);
+ sessionStorage.setItem('chat_session_id', sessionId);
+ }
+ return sessionId;
+}
+
+// ============================================
+// Embed Code
+// ============================================
+function copyEmbedCode() {
+ const embedCode = document.getElementById('embedCode');
+ if (!embedCode) return;
+
+ const text = embedCode.textContent;
+ copyToClipboard('embedCode');
+
+ // Show success message
+ const copySuccess = document.getElementById('copySuccess');
+ if (copySuccess) {
+ copySuccess.style.display = 'flex';
+ setTimeout(() => {
+ copySuccess.style.display = 'none';
+ }, 2000);
+ }
+}
+
+function copyToClipboard(elementId) {
+ const element = document.getElementById(elementId);
+ if (!element) return;
+
+ const text = element.textContent;
+
+ navigator.clipboard.writeText(text).then(() => {
+ showNotification('In Zwischenablage kopiert', 'success');
+ }).catch(err => {
+ console.error('Copy failed:', err);
+ // Fallback
+ const textarea = document.createElement('textarea');
+ textarea.value = text;
+ document.body.appendChild(textarea);
+ textarea.select();
+ document.execCommand('copy');
+ document.body.removeChild(textarea);
+ showNotification('In Zwischenablage kopiert', 'success');
+ });
+}
+
+// Make functions available globally
+window.copyEmbedCode = copyEmbedCode;
+window.copyToClipboard = copyToClipboard;
+
+// ============================================
+// Settings
+// ============================================
+function saveSettings() {
+ const primaryColor = document.getElementById('primaryColor')?.value;
+ const botName = document.getElementById('botName')?.value;
+ const welcomeMessage = document.getElementById('welcomeMessage')?.value;
+
+ // Save to localStorage (in production, save to API)
+ const settings = {
+ primaryColor,
+ botName,
+ welcomeMessage,
+ };
+
+ localStorage.setItem('botkonzept_settings', JSON.stringify(settings));
+ showNotification('Einstellungen gespeichert', 'success');
+}
+
+// Make saveSettings available globally
+window.saveSettings = saveSettings;
+
+// ============================================
+// Utility Functions
+// ============================================
+function showNotification(message, type = 'info') {
+ // Create notification element
+ const notification = document.createElement('div');
+ notification.className = `notification ${type}`;
+ notification.innerHTML = `
+
+ ${message}
+ `;
+
+ // Add styles
+ notification.style.cssText = `
+ position: fixed;
+ bottom: 24px;
+ right: 24px;
+ padding: 16px 24px;
+ background: ${type === 'success' ? '#10b981' : type === 'error' ? '#ef4444' : '#6366f1'};
+ color: white;
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
+ z-index: 9999;
+ animation: slideIn 0.3s ease;
+ `;
+
+ document.body.appendChild(notification);
+
+ // Remove after 3 seconds
+ setTimeout(() => {
+ notification.style.animation = 'slideOut 0.3s ease';
+ setTimeout(() => notification.remove(), 300);
+ }, 3000);
+}
+
+function formatDate(date) {
+ return new Intl.DateTimeFormat('de-DE', {
+ day: '2-digit',
+ month: '2-digit',
+ year: 'numeric'
+ }).format(date);
+}
+
+function formatFileSize(bytes) {
+ if (bytes === 0) return '0 Bytes';
+ const k = 1024;
+ const sizes = ['Bytes', 'KB', 'MB', 'GB'];
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
+}
+
+function escapeHtml(text) {
+ const div = document.createElement('div');
+ div.textContent = text;
+ return div.innerHTML;
+}
+
+// Add notification animations
+const style = document.createElement('style');
+style.textContent = `
+ @keyframes slideIn {
+ from {
+ transform: translateX(100%);
+ opacity: 0;
+ }
+ to {
+ transform: translateX(0);
+ opacity: 1;
+ }
+ }
+
+ @keyframes slideOut {
+ from {
+ transform: translateX(0);
+ opacity: 1;
+ }
+ to {
+ transform: translateX(100%);
+ opacity: 0;
+ }
+ }
+`;
+document.head.appendChild(style);
diff --git a/js/main.js b/js/main.js
new file mode 100644
index 0000000..d0b214a
--- /dev/null
+++ b/js/main.js
@@ -0,0 +1,468 @@
+/**
+ * BotKonzept - Main JavaScript
+ * ============================
+ * Handles all interactive functionality for the BotKonzept website
+ */
+
+// Configuration
+const CONFIG = {
+ // API Endpoints - Update these for production
+ WEBHOOK_URL: 'https://n8n.userman.de/webhook/botkonzept-registration',
+ API_BASE_URL: 'https://api.botkonzept.de',
+
+ // Validation
+ MIN_NAME_LENGTH: 2,
+ MAX_NAME_LENGTH: 50,
+
+ // Animation
+ SCROLL_OFFSET: 100,
+ ANIMATION_DELAY: 100,
+};
+
+// ============================================
+// DOM Ready
+// ============================================
+document.addEventListener('DOMContentLoaded', () => {
+ initNavigation();
+ initMobileMenu();
+ initSmoothScroll();
+ initFAQ();
+ initRegistrationForm();
+ initScrollAnimations();
+ initTypingAnimation();
+});
+
+// ============================================
+// Navigation
+// ============================================
+function initNavigation() {
+ const navbar = document.getElementById('navbar');
+ let lastScroll = 0;
+
+ window.addEventListener('scroll', () => {
+ const currentScroll = window.pageYOffset;
+
+ // Add shadow on scroll
+ if (currentScroll > 50) {
+ navbar.style.boxShadow = '0 4px 6px -1px rgb(0 0 0 / 0.1)';
+ } else {
+ navbar.style.boxShadow = 'none';
+ }
+
+ // Hide/show navbar on scroll (optional)
+ // if (currentScroll > lastScroll && currentScroll > 200) {
+ // navbar.style.transform = 'translateY(-100%)';
+ // } else {
+ // navbar.style.transform = 'translateY(0)';
+ // }
+
+ lastScroll = currentScroll;
+ });
+}
+
+// ============================================
+// Mobile Menu
+// ============================================
+function initMobileMenu() {
+ const mobileMenuBtn = document.getElementById('mobileMenuBtn');
+ const navLinks = document.getElementById('navLinks');
+
+ if (!mobileMenuBtn || !navLinks) return;
+
+ mobileMenuBtn.addEventListener('click', () => {
+ navLinks.classList.toggle('active');
+
+ // Toggle icon
+ const icon = mobileMenuBtn.querySelector('i');
+ if (navLinks.classList.contains('active')) {
+ icon.classList.remove('fa-bars');
+ icon.classList.add('fa-times');
+ } else {
+ icon.classList.remove('fa-times');
+ icon.classList.add('fa-bars');
+ }
+ });
+
+ // Close menu when clicking a link
+ navLinks.querySelectorAll('a').forEach(link => {
+ link.addEventListener('click', () => {
+ navLinks.classList.remove('active');
+ const icon = mobileMenuBtn.querySelector('i');
+ icon.classList.remove('fa-times');
+ icon.classList.add('fa-bars');
+ });
+ });
+}
+
+// ============================================
+// Smooth Scroll
+// ============================================
+function initSmoothScroll() {
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function(e) {
+ e.preventDefault();
+ const targetId = this.getAttribute('href');
+
+ if (targetId === '#') return;
+
+ const targetElement = document.querySelector(targetId);
+ if (targetElement) {
+ const navbarHeight = document.getElementById('navbar').offsetHeight;
+ const targetPosition = targetElement.offsetTop - navbarHeight - 20;
+
+ window.scrollTo({
+ top: targetPosition,
+ behavior: 'smooth'
+ });
+ }
+ });
+ });
+}
+
+// ============================================
+// FAQ Accordion
+// ============================================
+function initFAQ() {
+ const faqItems = document.querySelectorAll('.faq-item');
+
+ faqItems.forEach(item => {
+ const question = item.querySelector('.faq-question');
+
+ question.addEventListener('click', () => {
+ // Close other items
+ faqItems.forEach(otherItem => {
+ if (otherItem !== item && otherItem.classList.contains('active')) {
+ otherItem.classList.remove('active');
+ }
+ });
+
+ // Toggle current item
+ item.classList.toggle('active');
+ });
+ });
+}
+
+// ============================================
+// Registration Form
+// ============================================
+function initRegistrationForm() {
+ const form = document.getElementById('registerForm');
+ const submitBtn = document.getElementById('submitBtn');
+ const formSuccess = document.getElementById('formSuccess');
+ const formError = document.getElementById('formError');
+
+ if (!form) return;
+
+ form.addEventListener('submit', async (e) => {
+ e.preventDefault();
+
+ // Validate form
+ if (!validateForm(form)) {
+ return;
+ }
+
+ // Show loading state
+ setLoadingState(submitBtn, true);
+
+ // Collect form data
+ const formData = {
+ firstName: form.firstName.value.trim(),
+ lastName: form.lastName.value.trim(),
+ email: form.email.value.trim(),
+ company: form.company.value.trim() || null,
+ website: form.website.value.trim() || null,
+ newsletter: form.newsletter.checked,
+ timestamp: new Date().toISOString(),
+ source: 'website',
+ userAgent: navigator.userAgent,
+ language: navigator.language,
+ };
+
+ try {
+ // Send registration request
+ const response = await fetch(CONFIG.WEBHOOK_URL, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(formData),
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+
+ const result = await response.json();
+
+ // Show success message
+ form.style.display = 'none';
+ formSuccess.style.display = 'block';
+
+ // Track conversion (if analytics is set up)
+ trackConversion('registration_complete', formData);
+
+ } catch (error) {
+ console.error('Registration error:', error);
+
+ // Show error message
+ form.style.display = 'none';
+ formError.style.display = 'block';
+
+ const errorMessage = document.getElementById('errorMessage');
+ if (errorMessage) {
+ errorMessage.textContent = getErrorMessage(error);
+ }
+ } finally {
+ setLoadingState(submitBtn, false);
+ }
+ });
+}
+
+// Form validation
+function validateForm(form) {
+ let isValid = true;
+
+ // Clear previous errors
+ form.querySelectorAll('.error').forEach(el => el.classList.remove('error'));
+ form.querySelectorAll('.error-message').forEach(el => el.remove());
+
+ // Validate first name
+ const firstName = form.firstName.value.trim();
+ if (firstName.length < CONFIG.MIN_NAME_LENGTH) {
+ showFieldError(form.firstName, 'Bitte geben Sie Ihren Vornamen ein');
+ isValid = false;
+ }
+
+ // Validate last name
+ const lastName = form.lastName.value.trim();
+ if (lastName.length < CONFIG.MIN_NAME_LENGTH) {
+ showFieldError(form.lastName, 'Bitte geben Sie Ihren Nachnamen ein');
+ isValid = false;
+ }
+
+ // Validate email
+ const email = form.email.value.trim();
+ if (!isValidEmail(email)) {
+ showFieldError(form.email, 'Bitte geben Sie eine gültige E-Mail-Adresse ein');
+ isValid = false;
+ }
+
+ // Validate website (if provided)
+ const website = form.website.value.trim();
+ if (website && !isValidURL(website)) {
+ showFieldError(form.website, 'Bitte geben Sie eine gültige URL ein (z.B. https://beispiel.de)');
+ isValid = false;
+ }
+
+ // Validate privacy checkbox
+ if (!form.privacy.checked) {
+ showFieldError(form.privacy, 'Bitte akzeptieren Sie die Datenschutzerklärung');
+ isValid = false;
+ }
+
+ return isValid;
+}
+
+// Show field error
+function showFieldError(field, message) {
+ field.classList.add('error');
+ field.style.borderColor = '#ef4444';
+
+ const errorDiv = document.createElement('div');
+ errorDiv.className = 'error-message';
+ errorDiv.style.color = '#ef4444';
+ errorDiv.style.fontSize = '0.75rem';
+ errorDiv.style.marginTop = '4px';
+ errorDiv.textContent = message;
+
+ field.parentNode.appendChild(errorDiv);
+}
+
+// Email validation
+function isValidEmail(email) {
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ return emailRegex.test(email);
+}
+
+// URL validation
+function isValidURL(url) {
+ try {
+ new URL(url);
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+// Set loading state
+function setLoadingState(button, isLoading) {
+ const btnText = button.querySelector('.btn-text');
+ const btnLoading = button.querySelector('.btn-loading');
+
+ if (isLoading) {
+ button.disabled = true;
+ if (btnText) btnText.style.display = 'none';
+ if (btnLoading) btnLoading.style.display = 'inline-flex';
+ } else {
+ button.disabled = false;
+ if (btnText) btnText.style.display = 'inline';
+ if (btnLoading) btnLoading.style.display = 'none';
+ }
+}
+
+// Get user-friendly error message
+function getErrorMessage(error) {
+ if (error.message.includes('Failed to fetch')) {
+ return 'Verbindungsfehler. Bitte überprüfen Sie Ihre Internetverbindung.';
+ }
+ if (error.message.includes('500')) {
+ return 'Serverfehler. Bitte versuchen Sie es später erneut.';
+ }
+ if (error.message.includes('400')) {
+ return 'Ungültige Eingabe. Bitte überprüfen Sie Ihre Daten.';
+ }
+ return 'Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.';
+}
+
+// Reset form
+function resetForm() {
+ const form = document.getElementById('registerForm');
+ const formSuccess = document.getElementById('formSuccess');
+ const formError = document.getElementById('formError');
+
+ if (form) {
+ form.reset();
+ form.style.display = 'flex';
+ }
+ if (formSuccess) formSuccess.style.display = 'none';
+ if (formError) formError.style.display = 'none';
+}
+
+// Make resetForm available globally
+window.resetForm = resetForm;
+
+// ============================================
+// Scroll Animations
+// ============================================
+function initScrollAnimations() {
+ const animatedElements = document.querySelectorAll('.feature-card, .step, .pricing-card, .faq-item');
+
+ const observer = new IntersectionObserver((entries) => {
+ entries.forEach((entry, index) => {
+ if (entry.isIntersecting) {
+ setTimeout(() => {
+ entry.target.classList.add('visible');
+ entry.target.style.opacity = '1';
+ entry.target.style.transform = 'translateY(0)';
+ }, index * CONFIG.ANIMATION_DELAY);
+
+ observer.unobserve(entry.target);
+ }
+ });
+ }, {
+ threshold: 0.1,
+ rootMargin: '0px 0px -50px 0px'
+ });
+
+ animatedElements.forEach(el => {
+ el.style.opacity = '0';
+ el.style.transform = 'translateY(20px)';
+ el.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
+ observer.observe(el);
+ });
+}
+
+// ============================================
+// Typing Animation (Chat Preview)
+// ============================================
+function initTypingAnimation() {
+ const typingMessage = document.querySelector('.message.typing');
+ if (!typingMessage) return;
+
+ // Simulate typing response
+ setTimeout(() => {
+ typingMessage.innerHTML = 'Sie können Ihre Bestellung ganz einfach über unser Online-Formular aufgeben. Alternativ können Sie uns auch telefonisch unter 0800-123456 erreichen.
';
+ typingMessage.classList.remove('typing');
+ }, 3000);
+}
+
+// ============================================
+// Analytics & Tracking
+// ============================================
+function trackConversion(eventName, data = {}) {
+ // Google Analytics 4
+ if (typeof gtag !== 'undefined') {
+ gtag('event', eventName, {
+ 'event_category': 'conversion',
+ 'event_label': 'registration',
+ ...data
+ });
+ }
+
+ // Facebook Pixel
+ if (typeof fbq !== 'undefined') {
+ fbq('track', 'Lead', data);
+ }
+
+ // Console log for debugging
+ console.log('Conversion tracked:', eventName, data);
+}
+
+// ============================================
+// Utility Functions
+// ============================================
+
+// Debounce function
+function debounce(func, wait) {
+ let timeout;
+ return function executedFunction(...args) {
+ const later = () => {
+ clearTimeout(timeout);
+ func(...args);
+ };
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ };
+}
+
+// Throttle function
+function throttle(func, limit) {
+ let inThrottle;
+ return function(...args) {
+ if (!inThrottle) {
+ func.apply(this, args);
+ inThrottle = true;
+ setTimeout(() => inThrottle = false, limit);
+ }
+ };
+}
+
+// Format currency
+function formatCurrency(amount, currency = 'EUR') {
+ return new Intl.NumberFormat('de-DE', {
+ style: 'currency',
+ currency: currency
+ }).format(amount);
+}
+
+// Format date
+function formatDate(date) {
+ return new Intl.DateTimeFormat('de-DE', {
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric'
+ }).format(new Date(date));
+}
+
+// ============================================
+// Export for testing
+// ============================================
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports = {
+ validateForm,
+ isValidEmail,
+ isValidURL,
+ formatCurrency,
+ formatDate
+ };
+}
diff --git a/logo/20250119_Logo_Botkozept.svg b/logo/20250119_Logo_Botkozept.svg
new file mode 100644
index 0000000..8318377
--- /dev/null
+++ b/logo/20250119_Logo_Botkozept.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+