claude-desktop/pwa/client/src/app.css
Eddy 4e36b04cc9
All checks were successful
Build AppImage / build (push) Has been skipped
PWA Mobile-App: API-Server + SvelteKit-Frontend (Phase 1+2)
Backend (pwa/server/):
- Express + WebSocket API-Server auf Port 3100
- Claude Agent SDK Bridge mit Streaming
- Bearer-Token Authentifizierung
- REST: /api/status, /api/models, /api/sessions, /api/stop
- WebSocket: /ws mit Live-Text-Streaming
- Dockerfile für Container-Deployment

Frontend (pwa/client/):
- SvelteKit 5 PWA mit Dark Theme
- Mobil-optimierter Chat (WhatsApp/Telegram-Feeling)
- Message-Bubbles mit Markdown + Live-Streaming
- Session-Drawer (Swipe von links)
- Settings-Modal (Server/Token/Modell)
- Service Worker für Auto-Updates
- PWA-Manifest für "Add to Homescreen"
- Safe-Area-Insets für Notch-Handys

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 06:38:12 +02:00

113 lines
2.3 KiB
CSS

/* Claude Chat PWA — Globales Dark Theme */
:root {
--bg-primary: #1a1a2e;
--bg-secondary: #16213e;
--bg-tertiary: #0f3460;
--text-primary: #e0e0e0;
--text-secondary: #a0a0a0;
--accent: #7c3aed;
--accent-hover: #6d28d9;
--user-bubble: #2563eb;
--assistant-bubble: #2d2d44;
--danger: #c53030;
--success: #38a169;
--warning: #d69e2e;
--border: #333355;
--radius: 12px;
--radius-sm: 6px;
--radius-lg: 18px;
--spacing-xs: 4px;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
--font-mono: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
/* Safe-Area fuer Notch-Handys */
--safe-top: env(safe-area-inset-top, 0px);
--safe-bottom: env(safe-area-inset-bottom, 0px);
--safe-left: env(safe-area-inset-left, 0px);
--safe-right: env(safe-area-inset-right, 0px);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html, body {
height: 100%;
overflow: hidden;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
font-size: 16px;
background: var(--bg-primary);
color: var(--text-primary);
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overscroll-behavior: none;
touch-action: manipulation;
}
/* Scrollbar-Styling */
::-webkit-scrollbar {
width: 4px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--border);
border-radius: 2px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--text-secondary);
}
/* Input-/Textarea-Reset */
input, textarea, select, button {
font-family: inherit;
font-size: inherit;
color: inherit;
border: none;
outline: none;
background: none;
}
button {
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
a {
color: var(--accent);
text-decoration: none;
}
/* Globale Animationen */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes slideInLeft {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
@keyframes slideOutLeft {
from { transform: translateX(0); }
to { transform: translateX(-100%); }
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}