@auxiora/dashboard 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/dist/auth.d.ts +13 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +69 -0
- package/dist/auth.js.map +1 -0
- package/dist/cloud-types.d.ts +71 -0
- package/dist/cloud-types.d.ts.map +1 -0
- package/dist/cloud-types.js +2 -0
- package/dist/cloud-types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/router.d.ts +13 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +2250 -0
- package/dist/router.js.map +1 -0
- package/dist/types.d.ts +314 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist-ui/assets/index-BfY0i5jw.css +1 -0
- package/dist-ui/assets/index-CXpk9mvw.js +60 -0
- package/dist-ui/icon.svg +59 -0
- package/dist-ui/index.html +20 -0
- package/package.json +32 -0
- package/src/auth.ts +83 -0
- package/src/cloud-types.ts +63 -0
- package/src/index.ts +5 -0
- package/src/router.ts +2494 -0
- package/src/types.ts +269 -0
- package/tests/auth.test.ts +51 -0
- package/tests/cloud-router.test.ts +249 -0
- package/tests/desktop-router.test.ts +151 -0
- package/tests/router.test.ts +388 -0
- package/tests/trust-router.test.ts +170 -0
- package/tsconfig.json +12 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/ui/index.html +19 -0
- package/ui/node_modules/.bin/browserslist +17 -0
- package/ui/node_modules/.bin/tsc +17 -0
- package/ui/node_modules/.bin/tsserver +17 -0
- package/ui/node_modules/.bin/vite +17 -0
- package/ui/package.json +23 -0
- package/ui/public/icon.svg +59 -0
- package/ui/src/App.tsx +63 -0
- package/ui/src/api.ts +238 -0
- package/ui/src/components/ActivityFeed.tsx +123 -0
- package/ui/src/components/BehaviorHealth.tsx +105 -0
- package/ui/src/components/DataTable.tsx +39 -0
- package/ui/src/components/Layout.tsx +160 -0
- package/ui/src/components/PasswordStrength.tsx +31 -0
- package/ui/src/components/SetupProgress.tsx +26 -0
- package/ui/src/components/StatusBadge.tsx +12 -0
- package/ui/src/components/ThemeSelector.tsx +39 -0
- package/ui/src/contexts/ThemeContext.tsx +58 -0
- package/ui/src/hooks/useApi.ts +19 -0
- package/ui/src/hooks/usePolling.ts +8 -0
- package/ui/src/main.tsx +16 -0
- package/ui/src/pages/AuditLog.tsx +36 -0
- package/ui/src/pages/Behaviors.tsx +426 -0
- package/ui/src/pages/Chat.tsx +688 -0
- package/ui/src/pages/Login.tsx +64 -0
- package/ui/src/pages/Overview.tsx +56 -0
- package/ui/src/pages/Sessions.tsx +26 -0
- package/ui/src/pages/SettingsAmbient.tsx +185 -0
- package/ui/src/pages/SettingsConnections.tsx +201 -0
- package/ui/src/pages/SettingsNotifications.tsx +241 -0
- package/ui/src/pages/SetupAppearance.tsx +45 -0
- package/ui/src/pages/SetupChannels.tsx +143 -0
- package/ui/src/pages/SetupComplete.tsx +31 -0
- package/ui/src/pages/SetupConnections.tsx +80 -0
- package/ui/src/pages/SetupDashboardPassword.tsx +50 -0
- package/ui/src/pages/SetupIdentity.tsx +68 -0
- package/ui/src/pages/SetupPersonality.tsx +78 -0
- package/ui/src/pages/SetupProvider.tsx +65 -0
- package/ui/src/pages/SetupVault.tsx +50 -0
- package/ui/src/pages/SetupWelcome.tsx +19 -0
- package/ui/src/pages/UnlockVault.tsx +56 -0
- package/ui/src/pages/Webhooks.tsx +158 -0
- package/ui/src/pages/settings/Appearance.tsx +63 -0
- package/ui/src/pages/settings/Channels.tsx +138 -0
- package/ui/src/pages/settings/Identity.tsx +61 -0
- package/ui/src/pages/settings/Personality.tsx +54 -0
- package/ui/src/pages/settings/PersonalityEditor.tsx +577 -0
- package/ui/src/pages/settings/Provider.tsx +537 -0
- package/ui/src/pages/settings/Security.tsx +111 -0
- package/ui/src/styles/global.css +2308 -0
- package/ui/src/styles/themes/index.css +7 -0
- package/ui/src/styles/themes/monolith.css +125 -0
- package/ui/src/styles/themes/nebula.css +90 -0
- package/ui/src/styles/themes/neon.css +149 -0
- package/ui/src/styles/themes/polar.css +151 -0
- package/ui/src/styles/themes/signal.css +163 -0
- package/ui/src/styles/themes/terra.css +146 -0
- package/ui/tsconfig.json +14 -0
- package/ui/vite.config.ts +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Syne:wght@600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&family=JetBrains+Mono:wght@400;500&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;700&family=Inter:wght@400;500;600&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700;800&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600&family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&family=JetBrains+Mono:wght@400;500&display=swap";[data-theme=nebula]{--bg-primary: #080b16;--bg-secondary: rgba(255, 255, 255, .03);--bg-card: rgba(255, 255, 255, .04);--bg-hover: rgba(255, 255, 255, .06);--text-primary: #f0f0f5;--text-secondary: #6b7280;--accent: #8b5cf6;--accent-hover: #7c3aed;--accent-glow: rgba(139, 92, 246, .15);--accent-subtle: rgba(139, 92, 246, .08);--danger: #f43f5e;--danger-hover: #e11d48;--success: #10b981;--warning: #f59e0b;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .12);--radius: 12px;--radius-lg: 16px;--font-display: "Inter", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "JetBrains Mono", monospace}[data-theme=nebula] .card,[data-theme=nebula] .status-card,[data-theme=nebula] .setup-card,[data-theme=nebula] .create-form{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.08)}[data-theme=nebula] body{background:#080b16;background-image:radial-gradient(ellipse 900px 700px at 85% 8%,rgba(139,92,246,.12) 0%,transparent 70%),radial-gradient(ellipse 600px 500px at 75% 5%,rgba(59,130,246,.08) 0%,transparent 60%),radial-gradient(ellipse 400px 400px at 20% 90%,rgba(139,92,246,.05) 0%,transparent 60%)}[data-theme=nebula] .sidebar{background:#ffffff06;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}[data-theme=nebula] .nav-link.active{background:#8b5cf614;box-shadow:0 0 12px #8b5cf626}[data-theme=nebula] .chat-input:focus{border-color:#8b5cf666;box-shadow:0 0 0 3px #8b5cf614}[data-theme=nebula] .chat-message.user .chat-message-bubble{background:#8b5cf61f;border:1px solid rgba(139,92,246,.2)}[data-theme=nebula] .chat-message.assistant .chat-message-bubble{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-left:3px solid rgba(139,92,246,.4)}[data-theme=nebula] ::selection{background:#8b5cf64d;color:#f0f0f5}[data-theme=nebula] ::-webkit-scrollbar-thumb{background:#8b5cf626}[data-theme=nebula] ::-webkit-scrollbar-thumb:hover{background:#8b5cf640}[data-theme=monolith]{--bg-primary: #000000;--bg-secondary: #000000;--bg-card: #0a0a0a;--bg-hover: #111111;--text-primary: #ffffff;--text-secondary: #404040;--accent: #7c3aed;--accent-hover: #6d28d9;--accent-glow: rgba(124, 58, 237, .08);--accent-subtle: rgba(124, 58, 237, .04);--danger: #ef4444;--danger-hover: #dc2626;--success: #ffffff;--warning: #a3a3a3;--border: #1a1a1a;--border-strong: #222222;--radius: 4px;--radius-lg: 6px;--font-display: "Inter", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "Inter", sans-serif}[data-theme=monolith] body{background:#000}[data-theme=monolith] .stat-value,[data-theme=monolith] .overview-stat{font-weight:200}[data-theme=monolith] .sidebar{border-right:none;background:#000}[data-theme=monolith] .status-card{background:transparent;border:none;border-bottom:1px solid #111111;border-radius:0}[data-theme=monolith] .card{background:#0a0a0a;border:1px solid #111111}[data-theme=monolith] .nav-group-label{color:#333;font-weight:500;letter-spacing:.2em}[data-theme=monolith] .nav-link{color:#444;font-weight:400}[data-theme=monolith] .nav-link:hover{color:#888}[data-theme=monolith] .nav-link.active{color:#fff;border-left-color:#7c3aed}[data-theme=monolith] .page h2{font-weight:300;letter-spacing:-.02em}[data-theme=monolith] .chat-message.user .chat-message-bubble{background:#0a0a0a;border-radius:2px}[data-theme=monolith] .chat-message.assistant .chat-message-bubble{background:transparent;border-left:2px solid #7c3aed;border-radius:0;font-weight:300;color:#d4d4d4}[data-theme=monolith] .data-table th{color:#555;border-bottom-color:#111}[data-theme=monolith] .data-table td{border-bottom-color:#111}[data-theme=monolith] .badge{border-radius:2px}[data-theme=monolith] ::selection{background:#7c3aed4d;color:#fff}[data-theme=monolith] ::-webkit-scrollbar-thumb{background:#1a1a1a}[data-theme=monolith] ::-webkit-scrollbar-thumb:hover{background:#333}[data-theme=signal]{--bg-primary: #0c0c0c;--bg-secondary: #0a0a0a;--bg-card: #141414;--bg-hover: #1a1a1a;--text-primary: #e8e4dd;--text-secondary: #7a7568;--accent: #f59e0b;--accent-hover: #d97706;--accent-glow: rgba(245, 158, 11, .12);--accent-subtle: rgba(245, 158, 11, .06);--danger: #ef4444;--danger-hover: #dc2626;--success: #22c55e;--warning: #f59e0b;--border: rgba(245, 158, 11, .1);--border-strong: rgba(245, 158, 11, .18);--radius: 4px;--radius-lg: 6px;--font-display: "JetBrains Mono", monospace;--font-body: "Inter", sans-serif;--font-mono: "JetBrains Mono", monospace}[data-theme=signal] body{background:#0c0c0c}[data-theme=signal] body:after{content:"";position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px)}[data-theme=signal] .sidebar{background:#0e0e0e;border-right:1px solid rgba(245,158,11,.15)}[data-theme=signal] .sidebar-header h1{font-family:JetBrains Mono,monospace;font-weight:500}[data-theme=signal] .sidebar-header h1:before{content:">";background:none;color:var(--accent);border-radius:0;width:auto;height:auto;font-family:JetBrains Mono,monospace;margin-right:.4rem}[data-theme=signal] .card,[data-theme=signal] .status-card{border:1px solid rgba(245,158,11,.12);border-radius:2px}[data-theme=signal] .nav-group-label{font-family:JetBrains Mono,monospace;color:#4a4740;letter-spacing:.12em}[data-theme=signal] .nav-group-label:before{content:"// ";color:#3a3530}[data-theme=signal] .nav-link{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text-secondary)}[data-theme=signal] .nav-link:hover{background:#f59e0b0a}[data-theme=signal] .nav-link.active{color:var(--accent);background:#f59e0b0f;border-left-color:var(--accent)}[data-theme=signal] .page h2{font-family:JetBrains Mono,monospace}[data-theme=signal] .chat-message.user .chat-message-bubble{background:#181818;border:1px solid rgba(245,158,11,.15);border-radius:3px;font-family:JetBrains Mono,monospace;font-size:.85rem}[data-theme=signal] .chat-message.assistant .chat-message-bubble{border-left:3px solid var(--success);background:#22c55e05;border-radius:0 3px 3px 0}[data-theme=signal] .chat-input{font-family:JetBrains Mono,monospace;border-color:#f59e0b26;caret-color:var(--accent)}[data-theme=signal] .chat-input:focus{border-color:var(--accent)}[data-theme=signal] .data-table{font-family:JetBrains Mono,monospace;font-size:.8rem}[data-theme=signal] .badge{font-family:JetBrains Mono,monospace;border-radius:2px}[data-theme=signal] ::selection{background:#f59e0b4d;color:#e8e4dd}[data-theme=signal] ::-webkit-scrollbar-thumb{background:#f59e0b1f}[data-theme=signal] ::-webkit-scrollbar-thumb:hover{background:#f59e0b40}[data-theme=polar]{--bg-primary: #ffffff;--bg-secondary: #f8f9fb;--bg-card: #ffffff;--bg-hover: #f3f4f6;--text-primary: #111827;--text-secondary: #6b7280;--accent: #3b82f6;--accent-hover: #2563eb;--accent-glow: rgba(59, 130, 246, .1);--accent-subtle: rgba(59, 130, 246, .05);--danger: #dc2626;--danger-hover: #b91c1c;--success: #059669;--warning: #d97706;--border: #e5e7eb;--border-strong: #d1d5db;--radius: 10px;--radius-lg: 14px;--font-display: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}[data-theme=polar] body{background:#eef0f4;color:#374151}[data-theme=polar] .sidebar{background:#f8f9fb;border-right:1px solid #e5e7eb}[data-theme=polar] .sidebar-header h1{color:#111827}[data-theme=polar] .card,[data-theme=polar] .status-card,[data-theme=polar] .create-form{box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;border:1px solid #e5e7eb;background:#fff}[data-theme=polar] .card:hover,[data-theme=polar] .status-card:hover{box-shadow:0 4px 12px #00000014,0 2px 4px #0000000a}[data-theme=polar] .setup-card{background:#fff;box-shadow:0 1px 4px #0000000f,0 8px 24px #0000000a}[data-theme=polar] .nav-link{color:#6b7280}[data-theme=polar] .nav-link:hover{background:#f3f4f6;color:#111827}[data-theme=polar] .nav-link.active{background:#eff6ff;color:#3b82f6}[data-theme=polar] .nav-group-label{color:#9ca3af}[data-theme=polar] .page h2{color:#111827}[data-theme=polar] .data-table th{color:#9ca3af;border-bottom-color:#e5e7eb}[data-theme=polar] .data-table td{border-bottom-color:#f3f4f6}[data-theme=polar] .data-table tr:hover{background:#f9fafb}[data-theme=polar] .chat-message.user .chat-message-bubble{background:#3b82f6;color:#fff}[data-theme=polar] .chat-message.assistant .chat-message-bubble{background:#f8f9fb;color:#111827;border-left:3px solid #3b82f6}[data-theme=polar] .chat-input{background:#fff;border-color:#e5e7eb;color:#111827}[data-theme=polar] .chat-input::placeholder{color:#9ca3af}[data-theme=polar] .chat-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-theme=polar] .badge{border-radius:100px}[data-theme=polar] ::-webkit-scrollbar-thumb{background:#0000001f}[data-theme=polar] ::-webkit-scrollbar-thumb:hover{background:#0003}[data-theme=polar] ::selection{background:#3b82f633;color:#111827}[data-theme=polar] .btn-primary{background:#3b82f6;color:#fff}[data-theme=polar] .btn-primary:hover{background:#2563eb}[data-theme=neon]{--bg-primary: #09090b;--bg-secondary: #09090b;--bg-card: #111113;--bg-hover: #18181b;--text-primary: #e4e4e7;--text-secondary: #71717a;--accent: #06b6d4;--accent-hover: #0891b2;--accent-glow: rgba(6, 182, 212, .15);--accent-subtle: rgba(6, 182, 212, .06);--danger: #ef4444;--danger-hover: #dc2626;--success: #22c55e;--warning: #f97316;--border: rgba(228, 228, 231, .08);--border-strong: rgba(228, 228, 231, .12);--radius: 8px;--radius-lg: 12px;--font-display: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "JetBrains Mono", monospace;--neon-cyan: #06b6d4;--neon-magenta: #ec4899;--neon-green: #22c55e;--neon-orange: #f97316}[data-theme=neon] body{background:#09090b;background-image:radial-gradient(ellipse at 20% 50%,rgba(6,182,212,.03) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(236,72,153,.03) 0%,transparent 50%),radial-gradient(ellipse at 50% 80%,rgba(34,197,94,.02) 0%,transparent 50%)}[data-theme=neon] .sidebar{border-right:1px solid;border-image:linear-gradient(180deg,#06b6d4,#ec4899,#22c55e,#f97316,#06b6d4) 1}[data-theme=neon] .sidebar-header h1{font-family:Space Grotesk,sans-serif;font-weight:800;letter-spacing:.05em}[data-theme=neon] .page h2{background:linear-gradient(90deg,#06b6d4,#ec4899,#f97316);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=neon] .status-card:nth-child(1){border:1px solid rgba(6,182,212,.15);border-top:2px solid #06b6d4}[data-theme=neon] .status-card:nth-child(2){border:1px solid rgba(236,72,153,.15);border-top:2px solid #ec4899}[data-theme=neon] .status-card:nth-child(3){border:1px solid rgba(34,197,94,.15);border-top:2px solid #22c55e}[data-theme=neon] .status-card:nth-child(4){border:1px solid rgba(249,115,22,.15);border-top:2px solid #f97316}[data-theme=neon] .nav-group:nth-child(1) .nav-group-label{color:#e4e4e7}[data-theme=neon] .nav-group:nth-child(2) .nav-group-label{color:#06b6d4}[data-theme=neon] .nav-group:nth-child(3) .nav-group-label{color:#22c55e}[data-theme=neon] .nav-group:nth-child(4) .nav-group-label{color:#ec4899}[data-theme=neon] .nav-link{font-family:Space Grotesk,sans-serif;font-weight:500}[data-theme=neon] .nav-link.active{color:#e4e4e7;border-left-color:#06b6d4;background:#06b6d40d}[data-theme=neon] .chat-message.user .chat-message-bubble{background:#141416;border:1px solid transparent;background-clip:padding-box;position:relative}[data-theme=neon] .chat-message.assistant .chat-message-bubble{background:var(--bg-card);border:1px solid rgba(228,228,231,.06);border-left:3px solid;border-image:linear-gradient(180deg,#06b6d4,#ec4899,#22c55e) 1;border-image-slice:0 0 0 1}[data-theme=neon] .btn-primary{background:linear-gradient(135deg,#06b6d4,#ec4899);border:none;box-shadow:0 0 20px #06b6d426,0 0 20px #ec489926}[data-theme=neon] .btn-primary:hover{box-shadow:0 0 30px #06b6d44d,0 0 30px #ec48994d}[data-theme=neon] .badge{font-family:Space Grotesk,sans-serif}[data-theme=neon] ::selection{background:#06b6d44d;color:#e4e4e7}[data-theme=neon] ::-webkit-scrollbar-thumb{background:#3f3f46}[data-theme=neon] ::-webkit-scrollbar-thumb:hover{background:#71717a}[data-theme=terra]{--bg-primary: #1a1612;--bg-secondary: #161310;--bg-card: #211d18;--bg-hover: #2a2520;--text-primary: #e8e0d4;--text-secondary: #8a7e72;--accent: #c97b5c;--accent-hover: #b56a4a;--accent-glow: rgba(201, 123, 92, .12);--accent-subtle: rgba(201, 123, 92, .06);--danger: #c75c5c;--danger-hover: #b04a4a;--success: #8faa7b;--warning: #d4a054;--border: rgba(255, 235, 200, .06);--border-strong: rgba(255, 235, 200, .1);--radius: 12px;--radius-lg: 16px;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", sans-serif;--font-mono: "JetBrains Mono", monospace}[data-theme=terra] body{background:#1a1612;background-image:linear-gradient(180deg,#c97b5c0a,#1a1612 200px)}[data-theme=terra] .sidebar{background:linear-gradient(180deg,#c97b5c0a,#1a1612 200px);border-right:1px solid rgba(255,235,200,.06)}[data-theme=terra] .sidebar-header h1{font-family:Playfair Display,Georgia,serif;font-style:italic;font-weight:700}[data-theme=terra] .sidebar-header h1:before{background:var(--accent);border-radius:50%;width:6px;height:6px}[data-theme=terra] .page h2{font-family:Playfair Display,Georgia,serif;font-weight:700}[data-theme=terra] .nav-group-label{font-family:Playfair Display,Georgia,serif;font-style:italic;font-weight:400;text-transform:none;letter-spacing:0;font-size:.7rem;color:#5a5048}[data-theme=terra] .nav-link.active{background:#c97b5c1a;color:var(--accent);border-left-color:var(--accent)}[data-theme=terra] .card,[data-theme=terra] .status-card{border-radius:16px;border:1px solid rgba(255,235,200,.08)}[data-theme=terra] .setup-card{border-radius:20px}[data-theme=terra] .chat-message.user .chat-message-bubble{background:var(--accent);color:#faf5ef;box-shadow:0 2px 8px #c97b5c33}[data-theme=terra] .chat-message.assistant .chat-message-bubble{background:var(--bg-primary);border:1px solid rgba(255,235,200,.08);border-left:3px solid var(--accent)}[data-theme=terra] .chat-message.assistant .chat-message-bubble h3,[data-theme=terra] .chat-message.assistant .chat-message-bubble h4{font-family:Playfair Display,Georgia,serif;font-style:italic}[data-theme=terra] .chat-input{background:var(--bg-primary);border-color:#ffebc814}[data-theme=terra] .chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c97b5c26}[data-theme=terra] .data-table{border-radius:16px}[data-theme=terra] ::-webkit-scrollbar-thumb{background:#c97b5c26}[data-theme=terra] ::-webkit-scrollbar-thumb:hover{background:#c97b5c40}[data-theme=terra] ::selection{background:#c97b5c4d;color:#e8e0d4}[data-theme=terra] .btn-primary{background:var(--accent);color:#faf5ef}[data-theme=terra] .btn-primary:hover{background:#b86e50}:root{--bg-primary: #0a0a0a;--bg-secondary: #0f0f0f;--bg-card: #141414;--bg-hover: #1a1a1a;--text-primary: #f5f5f5;--text-secondary: #6b6b6b;--accent: #7c3aed;--accent-hover: #6d28d9;--accent-glow: rgba(124, 58, 237, .12);--accent-subtle: rgba(124, 58, 237, .08);--danger: #ef4444;--danger-hover: #dc2626;--success: #22c55e;--warning: #eab308;--border: rgba(255, 255, 255, .06);--border-strong: rgba(255, 255, 255, .1);--radius: 8px;--radius-lg: 12px;--font-display: "Syne", sans-serif;--font-body: "DM Sans", sans-serif;--font-mono: "JetBrains Mono", monospace;--transition-fast: .12s ease;--transition-base: .18s ease}*{margin:0;padding:0;box-sizing:border-box}::selection{background:var(--accent);color:#fff}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff24}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);line-height:1.55;font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--bg-secondary);padding:2rem .75rem 1.25rem;display:flex;flex-direction:column;border-right:1px solid var(--border);flex-shrink:0}.sidebar-header h1{font-family:var(--font-display);font-size:1.1rem;font-weight:800;color:var(--text-primary);margin-bottom:2rem;padding:0 .75rem;letter-spacing:-.02em}.sidebar-header h1:before{content:"";display:inline-block;width:8px;height:8px;background:var(--accent);border-radius:2px;margin-right:.5rem;vertical-align:middle;position:relative;top:-1px}.nav-list{list-style:none;flex:1;overflow-y:auto}.nav-group{margin-bottom:1.5rem}.nav-group-label{font-family:var(--font-mono);font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--text-secondary);padding:0 .75rem;margin-bottom:.35rem}.nav-link{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;color:var(--text-secondary);text-decoration:none;border-radius:6px;margin-bottom:1px;font-size:.875rem;font-weight:400;transition:color var(--transition-fast),background var(--transition-fast)}.nav-link:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-link.active{color:var(--text-primary);background:var(--accent-subtle);font-weight:500}.nav-link.active:before{content:"";width:3px;height:16px;background:var(--accent);border-radius:2px;margin-right:.25rem;flex-shrink:0}.channel-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-left:auto;transition:background var(--transition-base)}.channel-dot.connected{background:var(--success)}.channel-dot.disconnected{background:#ffffff1a}.status-bar{padding:.75rem;background:var(--bg-card);border-radius:var(--radius);margin-bottom:1rem;font-size:.75rem;border:1px solid var(--border)}.status-item{margin-bottom:.2rem;color:var(--text-secondary)}.logout-btn{padding:.5rem .75rem;background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-body);font-size:.8rem;transition:all var(--transition-fast)}.logout-btn:hover{color:var(--danger);border-color:#ef44444d;background:#ef44440f}.content{flex:1;padding:2.5rem 3rem;overflow-y:auto;max-height:100vh}.page h2{font-family:var(--font-display);font-size:1.75rem;font-weight:700;letter-spacing:-.03em;margin-bottom:1.75rem;color:var(--text-primary)}.status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1px;margin-bottom:2rem;background:var(--border);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.status-card{background:var(--bg-card);padding:1.25rem 1.5rem}.status-card h3{font-family:var(--font-mono);font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:.6rem}.status-card .value{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.status-card .sub{font-size:.75rem;color:var(--text-secondary);margin-top:.15rem}.data-table{width:100%;border-collapse:collapse;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.data-table th{text-align:left;padding:.75rem 1.25rem;background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-mono);font-weight:500;font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--border)}.data-table td{padding:.7rem 1.25rem;border-top:1px solid var(--border);font-size:.875rem;background:var(--bg-card)}.data-table tbody tr{transition:background var(--transition-fast)}.data-table tbody tr:hover td{background:var(--bg-hover)}.empty-row{text-align:center;color:var(--text-secondary);padding:3rem!important;font-size:.85rem}.actions-cell{white-space:nowrap}.badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-family:var(--font-mono);font-size:.65rem;font-weight:500;letter-spacing:.03em;text-transform:uppercase}.badge-green{background:#22c55e1a;color:var(--success)}.badge-yellow{background:#eab3081a;color:var(--warning)}.badge-red{background:#ef44441a;color:var(--danger)}.badge-gray{background:#ffffff0a;color:var(--text-secondary)}.badge-primary{background:var(--accent-glow);color:var(--accent)}.badge-fallback{background:#eab3081a;color:var(--warning)}.badge-pill{display:inline-block;padding:.1rem .4rem;border-radius:4px;font-family:var(--font-mono);font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em}.btn-sm{padding:.3rem .7rem;border:1px solid var(--border-strong);background:transparent;color:var(--text-primary);border-radius:6px;cursor:pointer;font-family:var(--font-body);font-size:.8rem;margin-right:.25rem;transition:all var(--transition-fast)}.btn-sm:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}.btn-danger{color:var(--danger);border-color:#ef44444d}.btn-danger:hover{background:#ef444414;border-color:var(--danger)}.filters{margin-bottom:1rem}.filters select{padding:.4rem .75rem;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.85rem;cursor:pointer;transition:border-color var(--transition-fast)}.filters select:hover{border-color:var(--accent)}.filters select:focus{outline:none;border-color:var(--accent)}.login-page{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg-primary)}.login-card{background:var(--bg-card);padding:3rem;border-radius:var(--radius-lg);width:380px;border:1px solid var(--border);animation:cardEnter .4s ease both}.login-card h1{font-family:var(--font-display);font-size:1.4rem;font-weight:800;margin-bottom:2rem;color:var(--text-primary);letter-spacing:-.02em}.login-card h1:before{content:"";display:block;width:24px;height:4px;background:var(--accent);border-radius:2px;margin-bottom:1rem}.login-card input{width:100%;padding:.7rem .85rem;margin-bottom:1rem;background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.875rem;transition:border-color var(--transition-fast)}.login-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.login-card input::placeholder{color:var(--text-secondary)}.login-card button{width:100%;padding:.7rem;background:var(--accent);border:none;color:#fff;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.875rem;transition:background var(--transition-fast),transform var(--transition-fast)}.login-card button:hover{background:var(--accent-hover)}.login-card button:active{transform:scale(.98)}.login-card button:disabled{opacity:.4;cursor:not-allowed;transform:none}.error{color:var(--danger);font-size:.8rem;margin-top:.5rem}.setup-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg-primary)}.setup-card{background:var(--bg-card);padding:2.5rem;border-radius:var(--radius-lg);width:100%;max-width:560px;border:1px solid var(--border);animation:cardEnter .35s ease both}.setup-card h1{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.4rem;letter-spacing:-.02em}.setup-card p.subtitle{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.9rem}.setup-card label{display:block;color:var(--text-secondary);font-size:.8rem;margin-bottom:.3rem;font-weight:500}.setup-card input,.setup-card select,.setup-card textarea{width:100%;padding:.65rem .85rem;margin-bottom:1rem;background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.875rem;transition:border-color var(--transition-fast)}.setup-card input:focus,.setup-card select:focus,.setup-card textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.setup-card input::placeholder,.setup-card textarea::placeholder{color:var(--text-secondary)}.setup-card textarea{resize:vertical;line-height:1.5}.setup-btn-primary,.setup-card button[type=submit]{width:100%;padding:.7rem;background:var(--accent);border:none;color:#fff;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.9rem;transition:background var(--transition-fast),transform var(--transition-fast)}.setup-btn-primary:hover{background:var(--accent-hover)}.setup-btn-primary:active{transform:scale(.98)}.setup-btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none}.setup-btn-secondary{width:100%;padding:.7rem;background:transparent;border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:6px;cursor:pointer;font-family:var(--font-body);font-size:.875rem;margin-top:.5rem;transition:all var(--transition-fast)}.setup-btn-secondary:hover{color:var(--text-primary);border-color:var(--accent);background:var(--accent-subtle)}.setup-progress{display:flex;align-items:center;justify-content:center;margin-bottom:2rem;gap:0}.setup-progress-step{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.7rem;font-weight:500;border:1px solid var(--border-strong);color:var(--text-secondary);background:var(--bg-secondary);transition:all var(--transition-base)}.setup-progress-step.active{border-color:var(--accent);color:var(--accent);background:var(--accent-glow);box-shadow:0 0 0 4px var(--accent-subtle)}.setup-progress-step.completed{border-color:var(--accent);color:#fff;background:var(--accent)}.setup-progress-line{width:32px;height:1px;background:var(--border-strong);transition:background var(--transition-base)}.setup-progress-line.completed{background:var(--accent)}.password-strength{height:3px;border-radius:2px;margin-bottom:1rem;background:#ffffff0a}.password-strength-bar{height:100%;border-radius:2px;transition:width .3s ease,background .3s ease}.password-strength-label{font-size:.7rem;font-family:var(--font-mono);margin-top:-.75rem;margin-bottom:.75rem;letter-spacing:.03em}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-bottom:1.5rem}.template-card{background:var(--bg-primary);padding:1rem;border-radius:var(--radius);border:1px solid var(--border-strong);cursor:pointer;transition:all var(--transition-fast)}.template-card:hover{border-color:var(--accent);background:var(--accent-subtle)}.template-card.selected{border-color:var(--accent);background:var(--accent-glow)}.template-card.recommended{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-glow)}.template-card h3{font-family:var(--font-display);font-size:.85rem;font-weight:600;margin-bottom:.25rem}.template-card p{font-size:.75rem;color:var(--text-secondary);line-height:1.4}.channel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;margin-bottom:1.5rem}.channel-card{background:var(--bg-primary);padding:1rem;border-radius:var(--radius);border:1px solid var(--border)}.channel-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.channel-card-header h3{font-size:.9rem;font-weight:500}.channel-card-fields{padding-top:.75rem;border-top:1px solid var(--border)}.channel-card-fields label{display:block;font-size:.75rem;color:var(--text-secondary);margin-bottom:.2rem}.channel-card-fields input{width:100%;padding:.45rem .6rem;margin-bottom:.75rem;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.8rem}.channel-card-fields input:focus{outline:none;border-color:var(--accent)}.toggle{position:relative;width:36px;height:20px;background:#ffffff14;border-radius:10px;cursor:pointer;transition:background var(--transition-fast)}.toggle.active{background:var(--accent)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform var(--transition-fast)}.toggle.active:after{transform:translate(16px)}.skip-link{display:block;text-align:center;color:var(--text-secondary);font-size:.8rem;margin-top:1rem;cursor:pointer;transition:color var(--transition-fast)}.skip-link:hover{color:var(--accent)}.setup-complete-check{font-size:2.5rem;color:var(--success);margin-bottom:1rem}.setup-complete-buttons{display:flex;gap:.75rem;margin-top:1.5rem}.setup-complete-buttons button{flex:1}.settings-form{max-width:560px}.settings-form label{display:block;color:var(--text-secondary);font-size:.8rem;margin-bottom:.3rem;font-weight:500}.settings-form input,.settings-form select{width:100%;padding:.65rem .85rem;margin-bottom:1rem;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.875rem;transition:border-color var(--transition-fast)}.settings-form input:focus,.settings-form select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.settings-form input::placeholder{color:var(--text-secondary)}.settings-section{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.settings-section:last-child{border-bottom:none}.settings-section h3{font-family:var(--font-display);font-size:1.1rem;font-weight:600;margin-bottom:1rem;letter-spacing:-.01em}.masked-key{font-family:var(--font-mono);color:var(--text-secondary);font-size:.8rem;margin-bottom:.5rem}.settings-success{color:var(--success);font-size:.8rem;margin-top:.5rem;font-weight:500}.settings-btn{padding:.6rem 1.5rem;background:var(--accent);border:none;color:#fff;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.875rem;transition:background var(--transition-fast),transform var(--transition-fast)}.settings-btn:hover{background:var(--accent-hover)}.settings-btn:active{transform:scale(.98)}.settings-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.create-form-toggle{margin-bottom:1rem}.create-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem;max-width:560px;animation:cardEnter .25s ease both}.create-form label{display:block;color:var(--text-secondary);font-size:.8rem;margin-bottom:.3rem;font-weight:500}.create-form input,.create-form select,.create-form textarea{width:100%;padding:.65rem .85rem;margin-bottom:1rem;background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.875rem;transition:border-color var(--transition-fast)}.create-form input:focus,.create-form select:focus,.create-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.create-form input::placeholder,.create-form textarea::placeholder{color:var(--text-secondary)}.create-form textarea{resize:vertical;font-family:var(--font-body);line-height:1.5}.create-form-group{padding:1rem;margin-bottom:1rem;background:var(--bg-hover);border-radius:var(--radius);border:1px solid var(--border)}.create-form-group label{margin-top:.5rem}.create-form-group label:first-child{margin-top:0}.form-hint{margin-top:.75rem;padding:.5rem .75rem;font-size:.85rem;color:var(--text-muted);background:var(--bg);border-radius:var(--radius);border:1px dashed var(--border)}.create-form-success{background:#22c55e0f;border:1px solid rgba(34,197,94,.2);color:var(--success);padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.85rem}.create-form-success code{font-family:var(--font-mono);font-size:.8rem;background:#22c55e1a;padding:.15rem .4rem;border-radius:4px;word-break:break-all}.provider-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem;margin-bottom:2rem}.provider-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;cursor:pointer;transition:all var(--transition-fast)}.provider-card:hover{border-color:var(--border-strong)}.provider-card.configured{border-color:#22c55e40}.provider-card.expanded{border-color:var(--accent);background:var(--bg-hover)}.provider-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.provider-card-header h3{font-size:.9rem;font-weight:500;display:flex;align-items:center;gap:.5rem}.provider-card .status-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.provider-card .status-dot.active{background:var(--success)}.provider-card .status-dot.inactive{background:#ffffff1a}.provider-card .provider-badges{display:flex;gap:.35rem}.provider-card .provider-model{font-size:.75rem;color:var(--text-secondary);margin-top:.2rem;font-family:var(--font-mono)}.provider-expand{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.provider-expand label{display:block;font-size:.75rem;color:var(--text-secondary);margin-bottom:.2rem;font-weight:500}.provider-expand input,.provider-expand select{width:100%;padding:.5rem .65rem;margin-bottom:.75rem;background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.8rem}.provider-expand input:focus,.provider-expand select:focus{outline:none;border-color:var(--accent)}.provider-expand .provider-actions{display:flex;gap:.5rem}.provider-expand .provider-actions button{padding:.45rem 1rem;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-size:.8rem;font-weight:600;border:none;transition:all var(--transition-fast)}.provider-expand .btn-save{background:var(--accent);color:#fff}.provider-expand .btn-save:hover{background:var(--accent-hover)}.provider-expand .btn-save:disabled{opacity:.4;cursor:not-allowed}.provider-expand .btn-remove{background:transparent;border:1px solid rgba(239,68,68,.3);color:var(--danger)}.provider-expand .btn-remove:hover{background:#ef444414;border-color:var(--danger)}.routing-config{display:flex;gap:1.25rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:2rem;padding:1rem 1.25rem;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border)}.routing-config .routing-field{flex:1;min-width:180px}.routing-config label{display:block;font-size:.75rem;color:var(--text-secondary);margin-bottom:.25rem;font-weight:500}.routing-config select{width:100%;padding:.5rem .65rem;background:var(--bg-primary);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.85rem}.routing-config button{padding:.5rem 1.25rem;background:var(--accent);border:none;color:#fff;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.85rem;align-self:flex-end;transition:background var(--transition-fast)}.routing-config button:hover{background:var(--accent-hover)}.routing-config button:disabled{opacity:.4;cursor:not-allowed}.cost-summary{display:flex;gap:1px;margin-bottom:2rem;flex-wrap:wrap;background:var(--border);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.cost-summary .cost-box{flex:1;min-width:140px;background:var(--bg-card);padding:1rem 1.25rem}.cost-summary .cost-box h4{font-family:var(--font-mono);font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:.25rem}.cost-summary .cost-box .cost-value{font-family:var(--font-display);font-size:1.25rem;font-weight:700;letter-spacing:-.02em}.cost-summary .cost-box.over-budget{border-left:2px solid var(--danger)}.cost-summary .cost-box.over-budget .cost-value{color:var(--danger)}.content:has(.chat-layout){overflow:hidden;max-height:none}.content:has(.chat-container){overflow:hidden;max-height:none}.chat-layout{display:flex;height:calc(100vh - 6rem);gap:0}.chat-layout .chat-container{flex:1;min-width:0}.chat-sidebar{width:260px;flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--bg-surface);transition:width .2s ease}.chat-sidebar.closed{width:48px}.chat-sidebar-header{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-bottom:1px solid var(--border)}.new-chat-btn{flex:1;padding:.5rem .75rem;border:1px dashed var(--border);border-radius:var(--radius);background:transparent;color:var(--text-primary);cursor:pointer;font-size:.85rem;transition:all .15s ease}.new-chat-btn:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.sidebar-toggle{padding:.5rem;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:1rem;border-radius:var(--radius)}.sidebar-toggle:hover{background:var(--bg-hover)}.sidebar-toggle-inline{padding:.3rem .5rem;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.9rem;border-radius:var(--radius)}.sidebar-toggle-inline:hover{background:var(--bg-hover)}.chat-sidebar-list{flex:1;overflow-y:auto;padding:.25rem 0}.chat-sidebar-item{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;cursor:pointer;border-left:3px solid transparent;transition:all .12s ease}.chat-sidebar-item:hover{background:var(--bg-hover)}.chat-sidebar-item.active{background:color-mix(in srgb,var(--accent) 12%,transparent);border-left-color:var(--accent)}.chat-sidebar-title{flex:1;font-size:.85rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-sidebar-time{font-size:.7rem;color:var(--text-secondary);margin-left:.5rem;flex-shrink:0}.chat-sidebar-empty{text-align:center;color:var(--text-secondary);padding:2rem 1rem;font-size:.85rem}.chat-rename-input{flex:1;padding:.25rem .4rem;font-size:.85rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--bg-primary);color:var(--text-primary);outline:none}.chat-context-menu{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px #0003;z-index:1000;min-width:120px;padding:.25rem 0}.chat-context-menu button{display:block;width:100%;text-align:left;padding:.5rem .75rem;border:none;background:transparent;color:var(--text-primary);cursor:pointer;font-size:.85rem}.chat-context-menu button:hover{background:var(--bg-hover)}.chat-context-menu button.danger{color:var(--status-error)}.chat-context-menu button.danger:hover{background:color-mix(in srgb,var(--status-error) 12%,transparent)}.chat-status-right{display:flex;align-items:center;gap:.5rem}.chat-container{display:flex;flex-direction:column;height:calc(100vh - 4rem)}.chat-status{font-size:.8rem;color:var(--text-secondary);display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.chat-status-left{display:flex;align-items:center;gap:.6rem}.chat-status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-secondary);flex-shrink:0}.chat-status-dot[data-connected=true]{background:var(--success)}.chat-agent-name{font-family:var(--font-display);font-weight:600;font-size:.85rem;color:var(--text-primary);letter-spacing:-.01em}.chat-status-sep{width:1px;height:.9rem;background:var(--border);flex-shrink:0}.chat-status-label{font-family:var(--font-body);font-size:.8rem;color:var(--text-secondary)}.chat-status-label strong{color:var(--text-primary);font-weight:600}.model-selector{display:flex;align-items:center;gap:.5rem}.model-selector select{padding:.25rem .5rem;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.75rem;cursor:pointer;transition:border-color var(--transition-fast)}.model-selector select:hover{border-color:var(--accent)}.model-selector select:focus{outline:none;border-color:var(--accent)}.model-label{font-family:var(--font-mono);font-size:.65rem;color:var(--text-secondary);margin-top:.2rem;text-align:right;letter-spacing:.02em}.chat-messages{flex:1;overflow-y:auto;overflow-x:hidden;padding:1rem 0}.chat-message{margin-bottom:.75rem;max-width:78%;font-size:.9rem;line-height:1.55;animation:messageIn .2s ease both}.chat-message.user{margin-left:auto;background:var(--accent);color:#fff;padding:.65rem 1rem;border-radius:var(--radius) var(--radius) 2px var(--radius)}.chat-message.assistant{background:var(--bg-card);padding:.65rem 1rem;border-radius:var(--radius) var(--radius) var(--radius) 2px;border:1px solid var(--border)}.chat-message.error{background:#ef44440f;color:var(--danger);padding:.6rem 1rem;border-radius:var(--radius);font-size:.85rem;border:1px solid rgba(239,68,68,.15)}.chat-input-area{display:flex;gap:.5rem;padding:1rem 0;border-top:1px solid var(--border)}.chat-input-area>.chat-input-wrapper{flex:1}.chat-input-wrapper{flex:1;position:relative}.chat-input-wrapper input{width:100%;padding:.7rem .85rem;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text-primary);border-radius:6px;font-family:var(--font-body);font-size:.875rem;transition:border-color var(--transition-fast)}.chat-input-wrapper input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.chat-input-wrapper input::placeholder{color:var(--text-secondary)}.chat-input-wrapper input:disabled{opacity:.4}.chat-input-area button{padding:.7rem 1.5rem;background:var(--accent);border:none;color:#fff;border-radius:6px;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.875rem;transition:background var(--transition-fast),transform var(--transition-fast)}.chat-input-area button:hover{background:var(--accent-hover)}.chat-input-area button:active{transform:scale(.97)}.chat-input-area button:disabled{opacity:.4;cursor:not-allowed;transform:none}.slash-autocomplete{position:absolute;bottom:100%;left:0;right:0;margin-bottom:4px;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius);max-height:240px;overflow-y:auto;z-index:10;box-shadow:0 -8px 32px #00000080}.slash-ac-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;cursor:pointer;transition:background var(--transition-fast)}.slash-ac-item:hover,.slash-ac-item.selected{background:var(--accent-subtle)}.slash-ac-cmd{font-family:var(--font-mono);font-size:.8rem;color:var(--accent);white-space:nowrap;min-width:140px}.slash-ac-desc{font-size:.75rem;color:var(--text-secondary)}.chat-markdown{line-height:1.6}.chat-markdown h2,.chat-markdown h3,.chat-markdown h4{margin:.75rem 0 .35rem;color:var(--text-primary);font-family:var(--font-display);letter-spacing:-.01em}.chat-markdown h2{font-size:1.1rem;font-weight:700}.chat-markdown h3{font-size:1rem;font-weight:600}.chat-markdown h4{font-size:.9rem;font-weight:600}.chat-markdown p{margin:.35rem 0}.chat-markdown .code-block{margin:.5rem 0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.chat-markdown .code-header{display:flex;align-items:center;justify-content:space-between;padding:.35rem .75rem;background:var(--bg-secondary);border-bottom:1px solid var(--border);font-size:.7rem}.chat-markdown .code-lang{font-family:var(--font-mono);color:var(--text-secondary);text-transform:uppercase;font-weight:500;letter-spacing:.08em;font-size:.6rem}.chat-markdown .code-copy{background:transparent;border:1px solid var(--border-strong);color:var(--text-secondary);font-family:var(--font-mono);font-size:.6rem;padding:.15rem .5rem;border-radius:4px;cursor:pointer;transition:all var(--transition-fast);letter-spacing:.02em}.chat-markdown .code-copy:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-subtle)}.chat-markdown pre{background:var(--bg-primary);padding:.75rem;overflow-x:auto;margin:0;font-size:.8rem;line-height:1.55}.chat-markdown code{font-family:var(--font-mono);font-size:.85em}.chat-markdown :not(pre)>code{background:var(--accent-subtle);color:var(--accent);padding:.15rem .4rem;border-radius:4px;font-size:.82em}.chat-markdown ul{margin:.35rem 0;padding-left:1.25rem}.chat-markdown li{margin:.15rem 0}.chat-markdown strong{color:var(--text-primary);font-weight:600}.chat-markdown em{font-style:italic;color:var(--text-secondary)}.chat-markdown hr{border:none;border-top:1px solid var(--border);margin:.75rem 0}.theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1rem}.theme-card{background:var(--bg-card);border:2px solid var(--border);border-radius:var(--radius-lg);padding:1rem;cursor:pointer;transition:border-color var(--transition-base),transform var(--transition-fast)}.theme-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}.theme-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.theme-swatches{display:flex;gap:6px;margin-bottom:.75rem}.theme-swatch{width:24px;height:24px;border-radius:50%;border:1px solid rgba(128,128,128,.2)}.theme-info{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.theme-info h3{font-family:var(--font-display);font-size:.9rem;font-weight:600;color:var(--text-primary);margin:0}.theme-mode-badge{font-family:var(--font-mono);font-size:.55rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;border-radius:4px}.theme-mode-badge.dark{background:#ffffff14;color:var(--text-secondary)}.theme-mode-badge.light{background:#3b82f61a;color:#3b82f6}.theme-description{font-size:.75rem;color:var(--text-secondary);margin:0}@keyframes cardEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes messageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.sidebar{display:none}.content{padding:1.5rem}.status-grid{grid-template-columns:repeat(2,1fr)}.chat-message{max-width:90%}.chat-sidebar{width:200px}.chat-sidebar.closed{width:0;border-right:none;overflow:hidden}.provider-grid,.channel-grid{grid-template-columns:1fr}.theme-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.content{padding:1rem}.status-grid{grid-template-columns:1fr}.page h2{font-size:1.4rem}.theme-grid{grid-template-columns:1fr}}.personality-editor .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.editor-section{margin-bottom:2rem;padding:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}.editor-section h3{margin:0 0 1rem;font-size:1rem;color:var(--text-primary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-field{display:flex;flex-direction:column;gap:.35rem}.form-field.full-width{grid-column:1 / -1}.form-field label{font-size:.8rem;color:var(--text-secondary);font-weight:500}.field-hint{font-size:.7rem;color:var(--text-secondary);opacity:.7;margin-top:.15rem}.tone-sliders{display:flex;flex-direction:column;gap:1rem}.tone-slider-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.tone-label{font-size:.85rem;color:var(--text-primary);font-weight:500}.tone-value{font-size:.75rem;color:var(--text-secondary);font-variant-numeric:tabular-nums}.tone-slider-row{display:flex;align-items:center;gap:.75rem}.tone-extreme{font-size:.7rem;color:var(--text-secondary);min-width:4rem}.tone-extreme:last-child{text-align:right}.slider{flex:1;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border);border-radius:3px;outline:none}.slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--surface);box-shadow:0 1px 3px #0000004d}.tag-input-container{display:flex;flex-wrap:wrap;gap:.35rem;padding:.4rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);min-height:38px;align-items:center}.tag{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .5rem;background:var(--accent);color:#fff;border-radius:4px;font-size:.75rem}.tag-remove{background:none;border:none;color:inherit;cursor:pointer;padding:0 .15rem;font-size:.7rem;opacity:.7}.tag-remove:hover{opacity:1}.tag-input{border:none;background:transparent;outline:none;flex:1;min-width:80px;font-size:.85rem;color:var(--text-primary)}.catchphrase-grid{display:flex;flex-direction:column;gap:.5rem}.catchphrase-row{display:flex;align-items:center;gap:.75rem}.catchphrase-label{min-width:5rem;font-size:.8rem;color:var(--text-secondary);text-transform:capitalize}.catchphrase-row input{flex:1}.custom-instructions-textarea,.soul-editor-textarea{width:100%;resize:vertical;font-family:inherit;font-size:.85rem;padding:.75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text-primary)}.soul-editor-textarea{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.8rem}.section-toggle{background:none;border:none;color:var(--text-secondary);font-size:.9rem;cursor:pointer;padding:0;font-weight:500}.section-toggle:hover{color:var(--text-primary)}.editor-footer{position:sticky;bottom:0;padding:1rem 0;background:var(--bg);border-top:1px solid var(--border);text-align:right}
|