Virtual-Kimi / kimi-css /kimi-style.css
VirtualKimi's picture
Upload 38 files
798bcc6 verified
/* ===== CONSOLIDATED CSS VARIABLES - ENHANCED DYNAMIC THEMING ===== */
:root {
/* Core Theme Colors - Default Pink Passion */
--primary-color: #ff6b9d;
--secondary-color: #ffeaa7;
--accent-color: #fd79a8;
--background-overlay: rgba(255, 107, 157, 0.15);
--interface-opacity: 0.7;
--gradient-start: #ff6b9d;
--gradient-end: #fd79a8;
--text-glow: 0 0 10px rgba(255, 107, 157, 0.5);
--button-hover: rgba(255, 107, 157, 0.3);
--animations-enabled: 1;
--switch-color: var(--primary-color);
/* Contrast and Accessibility */
--contrast-ratio: 4.5; /* WCAG AA standard */
--text-on-primary: #ffffff;
--text-on-secondary: #222222;
--text-on-accent: #ffffff;
--text-on-background: #ffffff;
--border-opacity: 0.3;
--hover-opacity: 0.15;
--active-opacity: 0.25;
/* UI Component Colors - Chat Interface */
--chat-bg: rgba(255, 107, 157, 0.9);
--chat-text: var(--text-on-primary);
--chat-header-bg: rgba(255, 255, 255, 0.05);
--chat-border: var(--primary-color);
--chat-input-bg: rgba(255, 255, 255, 0.1);
--chat-input-text: var(--text-on-background);
--chat-input-placeholder: rgba(255, 255, 255, 0.6);
--chat-message-user-bg: var(--primary-color);
--chat-message-user-text: var(--text-on-primary);
--chat-message-kimi-bg: rgba(255, 255, 255, 0.15);
--chat-message-kimi-text: var(--text-on-background);
/* Modal & Overlay Colors */
--modal-bg: rgba(255, 107, 157, 0.95);
--modal-border: var(--primary-color);
--modal-header-bg: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
--modal-text: var(--text-on-primary);
--modal-title-color: var(--text-on-secondary);
--modal-overlay-bg: rgba(0, 0, 0, 0.8);
--modal-close-hover-bg: rgba(255, 255, 255, 0.2);
/* Settings Panel & Tabs */
--settings-bg: #181018;
--settings-text: var(--text-on-background);
--settings-tab-bg: #1a1a1a;
--settings-tab-color: #bfa6b6;
--settings-tab-hover-bg: rgba(255, 255, 255, var(--hover-opacity));
--settings-tab-hover-color: rgba(255, 255, 255, 0.9);
--settings-tab-active-bg: var(--primary-color);
--settings-tab-active-color: var(--text-on-primary);
--settings-tab-border: var(--primary-color);
--settings-section-bg: #22121a;
--settings-section-border: rgba(255, 107, 157, var(--border-opacity));
--settings-section-header-color: var(--text-on-background);
/* Form Element Colors */
--input-bg: rgba(255, 255, 255, 0.1);
--input-text: var(--text-on-background);
--input-border: var(--primary-color);
--input-focus-bg: rgba(255, 255, 255, var(--hover-opacity));
--input-focus-border: var(--accent-color);
--input-placeholder: rgba(255, 255, 255, 0.6);
/* Button Colors */
--button-primary-bg: var(--primary-color);
--button-primary-text: var(--text-on-primary);
--button-primary-hover-bg: var(--accent-color);
--button-secondary-bg: rgba(255, 255, 255, 0.1);
--button-secondary-text: var(--text-on-background);
--button-secondary-hover-bg: rgba(255, 255, 255, var(--hover-opacity));
--button-danger-bg: #e74c3c;
--button-danger-text: #ffffff;
--button-danger-hover-bg: #c0392b;
/* Select & Dropdown Options */
--select-bg: var(--input-bg);
--select-text: var(--input-text);
--select-border: var(--input-border);
--select-option-bg: rgba(40, 44, 52, 0.95);
--select-option-text: white;
--select-option-hover-bg: var(--primary-color);
--select-option-hover-text: var(--text-on-primary);
--select-option-checked-bg: var(--accent-color);
--select-option-checked-text: var(--text-on-accent);
--select-option-disabled-bg: rgba(40, 44, 52, 0.5);
--select-option-disabled-text: #666;
/* Slider Components */
--slider-track-bg: rgba(255, 255, 255, 0.1);
--slider-track-active-bg: var(--primary-color);
--slider-thumb-bg: var(--primary-color);
--slider-thumb-hover-bg: var(--accent-color);
--slider-value-bg: #181018;
--slider-value-border: var(--primary-color);
--slider-value-color: var(--text-on-background);
/* Toggle Switch */
--switch-bg-inactive: rgba(255, 255, 255, 0.15);
--switch-bg-active: linear-gradient(90deg, var(--primary-color), var(--accent-color));
--switch-thumb-color: #ffffff;
--switch-thumb-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
/* Mic Button & Pulse Effect */
--mic-button-bg: var(--button-hover);
--mic-button-border: var(--primary-color);
--mic-button-shadow: 0 0 15px var(--primary-color);
--mic-button-hover-bg: var(--primary-color);
--mic-button-hover-shadow: var(--text-glow);
--mic-button-icon-color: var(--text-on-primary);
--mic-listening-border: #27ae60;
--mic-listening-shadow: 0 0 15px #27ae60;
--mic-pulse-color: rgba(39, 174, 96, 0.5);
--mic-pulse-listening-color: rgba(39, 174, 96, 0.4);
/* Video crossfade timing */
--video-fade-duration: 400ms;
/* Cards & Stats */
--card-bg: rgba(255, 255, 255, 0.05);
--card-border: rgba(255, 255, 255, 0.1);
--card-hover-bg: rgba(255, 255, 255, 0.08);
--card-text: var(--text-on-background);
--stat-value-color: var(--primary-color);
--stat-label-color: rgba(255, 255, 255, 0.7);
/* Plugin Cards */
--plugin-card-bg: linear-gradient(135deg, #22121a 80%, var(--modal-bg) 100%);
--plugin-card-border: var(--primary-color);
--plugin-card-title-color: var(--text-on-background);
--plugin-card-desc-color: #e0cfe6;
--plugin-card-author-color: #bfa6b6;
--plugin-type-badge-bg: var(--accent-color);
--plugin-type-badge-text: var(--text-on-accent);
--plugin-active-badge-bg: linear-gradient(90deg, var(--primary-color), var(--accent-color));
--plugin-active-badge-text: var(--text-on-primary);
/* Help Modal */
--help-modal-bg: var(--modal-bg);
--help-modal-border: var(--modal-border);
--help-content-color: var(--text-on-background);
--help-section-border: rgba(255, 255, 255, 0.1);
--creator-card-bg: rgba(255, 255, 255, 0.05);
--creator-card-border: rgba(255, 255, 255, 0.1);
--creator-avatar-bg: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
--creator-name-color: var(--primary-color);
--creator-role-bg: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
--creator-role-color: var(--text-on-secondary);
--philosophy-bg: rgba(255, 154, 158, 0.1);
--philosophy-border: rgba(255, 154, 158, var(--border-opacity));
--philosophy-border-left: var(--primary-color);
--feature-item-bg: rgba(255, 255, 255, 0.05);
--feature-item-border: rgba(255, 255, 255, 0.1);
--feature-icon-color: #ffeaa7;
--feature-title-color: #ffeaa7;
--feature-text-color: rgba(255, 255, 255, 0.7);
--guide-step-bg: rgba(255, 255, 255, 0.05);
--guide-step-number-bg: rgba(255, 107, 157, var(--hover-opacity));
--guide-step-number-color: var(--primary-color);
--tip-item-bg: var(--feature-item-bg);
--tip-item-border: var(--feature-item-border);
/* Unified Scrollbar System */
--scrollbar-width: 8px;
--scrollbar-track-bg: rgba(255, 255, 255, 0.05);
--scrollbar-thumb-bg: rgba(255, 107, 157, 0.4);
--scrollbar-thumb-hover-bg: rgba(255, 107, 157, 0.6);
--scrollbar-thumb-active-bg: rgba(255, 107, 157, 0.8);
--scrollbar-corner-bg: rgba(255, 255, 255, 0.05);
/* Model Colors */
--model-card-bg: var(--card-bg);
--model-card-border: var(--card-border);
--model-card-hover-bg: var(--card-hover-bg);
--model-card-selected-border: var(--primary-color);
--model-card-selected-shadow: 0 0 0 2px rgba(255, 154, 158, var(--border-opacity));
--model-name-color: var(--text-on-background);
--model-description-color: rgba(255, 255, 255, 0.7);
--model-strength-color: var(--primary-color);
--model-strength-text: var(--text-on-primary);
--model-provider-color: var(--accent-color);
--model-provider-text: var(--text-on-accent);
/* Text Colors */
--text-primary: var(--text-on-background);
--text-secondary: #aaa;
--text-muted: rgba(255, 255, 255, 0.6);
/* Character Selection Colors */
--character-card-bg: var(--card-bg);
--character-card-border: var(--card-border);
--character-card-hover-bg: var(--card-hover-bg);
--character-selected-border: var(--primary-color);
--character-selected-bg: rgba(255, 107, 157, 0.13);
--character-name-color: var(--text-on-background);
/* Waiting Indicator */
--waiting-indicator-color: var(--primary-color);
--loading-spinner-color: var(--primary-color);
/* Progress Bar */
--progress-bg: rgba(255, 255, 255, 0.1);
--progress-fill-bg: linear-gradient(90deg, var(--primary-color), var(--accent-color));
--progress-text-color: var(--text-on-background);
/* Transcript */
--transcript-bg: rgba(0, 0, 0, 0.7);
--transcript-text: var(--text-on-background);
--transcript-border: var(--primary-color);
}
/* ===== OPTIMIZED THEME VARIATIONS ===== */
[data-theme="blue"] {
--primary-color: #74b9ff;
--secondary-color: #81ecec;
--accent-color: #0984e3;
--background-overlay: rgba(116, 185, 255, 0.15);
--gradient-start: #74b9ff;
--gradient-end: #0984e3;
--text-glow: 0 0 10px rgba(116, 185, 255, 0.5);
--button-hover: rgba(116, 185, 255, 0.3);
--modal-title-color: #0a2340;
--switch-color: #3498db;
/* UI Component Colors */
--chat-bg: rgba(116, 185, 255, 0.9);
--chat-border: #74b9ff;
--chat-message-user-bg: #74b9ff;
--input-border: #74b9ff;
--input-focus-border: #0984e3;
/* Modal & Overlay Colors */
--modal-bg: rgba(116, 185, 255, 0.95);
--modal-border: #74b9ff;
--modal-header-bg: linear-gradient(135deg, #74b9ff, #81ecec);
/* Settings Panel & Tabs */
--settings-tab-active-bg: #74b9ff;
--settings-section-border: #3a4a7a;
--settings-tab-border: #74b9ff;
/* Slider Components */
--slider-value-border: #0984e3;
/* Toggle Switch */
--switch-bg-active: linear-gradient(90deg, #74b9ff, #0984e3);
/* Mic Button & Pulse Effect */
--mic-button-border: #74b9ff;
--mic-button-shadow: 0 0 15px #74b9ff;
--mic-button-hover-bg: #74b9ff;
--mic-button-hover-shadow: 0 0 10px rgba(116, 185, 255, 0.5);
--mic-listening-border: #0984e3;
--mic-listening-shadow: 0 0 15px #0984e3;
--mic-pulse-color: rgba(9, 132, 227, 0.5);
/* Cards & Stats */
--stat-value-color: #0984e3;
/* Plugin Cards */
--plugin-card-border: #74b9ff;
--plugin-type-badge-bg: #0984e3;
--plugin-active-badge-bg: linear-gradient(90deg, #74b9ff, #0984e3);
/* Help Modal */
--creator-name-color: #0984e3;
--creator-avatar-bg: linear-gradient(135deg, #74b9ff, #81ecec);
--creator-role-bg: linear-gradient(135deg, #74b9ff, #81ecec);
--creator-role-color: #0a2340;
--philosophy-bg: rgba(116, 185, 255, 0.1);
--philosophy-border: rgba(116, 185, 255, 0.3);
--philosophy-border-left: #74b9ff;
--feature-icon-color: #0984e3;
--feature-title-color: #0984e3;
/* Select Options */
--select-option-hover-bg: #74b9ff;
--select-option-checked-bg: #0984e3;
/* Scrollbar */
--scrollbar-thumb-bg: rgba(116, 185, 255, 0.4);
--scrollbar-thumb-hover-bg: rgba(116, 185, 255, 0.6);
--scrollbar-thumb-active-bg: rgba(116, 185, 255, 0.8);
/* Model Colors */
--model-strength-color: #0984e3;
--model-strength-text: #fff;
--model-provider-color: #00b894;
--model-provider-text: #fff;
/* Text Colors */
--text-primary: #222;
--text-secondary: #555;
/* Character Selection Colors */
--character-selected-border: #0984e3;
--character-selected-bg: rgba(116, 185, 255, 0.13);
}
[data-theme="purple"] {
--primary-color: #a29bfe;
--secondary-color: #fd79a8;
--accent-color: #6c5ce7;
--background-overlay: rgba(162, 155, 254, 0.15);
--gradient-start: #a29bfe;
--gradient-end: #6c5ce7;
--text-glow: 0 0 10px rgba(162, 155, 254, 0.5);
--button-hover: rgba(162, 155, 254, 0.3);
--modal-title-color: #2d2250;
--switch-color: #a259ff;
/* UI Component Colors */
--chat-bg: rgba(162, 155, 254, 0.9);
--chat-border: #a29bfe;
--chat-message-user-bg: #a29bfe;
--input-border: #a29bfe;
--input-focus-border: #6c5ce7;
/* Modal & Overlay Colors */
--modal-bg: rgba(162, 155, 254, 0.95);
--modal-border: #a29bfe;
--modal-header-bg: linear-gradient(135deg, #a29bfe, #fd79a8);
/* Settings Panel & Tabs */
--settings-tab-active-bg: #a29bfe;
--settings-section-border: #4a3a7a;
--settings-tab-border: #a29bfe;
--settings-bg: #2d2250;
/* Slider Components */
--slider-value-border: #6c5ce7;
/* Toggle Switch */
--switch-bg-active: linear-gradient(90deg, #a29bfe, #6c5ce7);
/* Mic Button & Pulse Effect */
--mic-button-border: #a29bfe;
--mic-button-shadow: 0 0 15px #a29bfe;
--mic-button-hover-bg: #a29bfe;
--mic-button-hover-shadow: 0 0 10px rgba(162, 155, 254, 0.5);
--mic-listening-border: #6c5ce7;
--mic-listening-shadow: 0 0 15px #6c5ce7;
--mic-pulse-color: rgba(108, 92, 231, 0.5);
/* Cards & Stats */
--stat-value-color: #6c5ce7;
/* Plugin Cards */
--plugin-card-border: #a29bfe;
--plugin-type-badge-bg: #6c5ce7;
--plugin-active-badge-bg: linear-gradient(90deg, #a29bfe, #6c5ce7);
/* Help Modal */
--creator-name-color: #6c5ce7;
--creator-avatar-bg: linear-gradient(135deg, #a29bfe, #fd79a8);
--creator-role-bg: linear-gradient(135deg, #a29bfe, #fd79a8);
--creator-role-color: #2d2250;
--philosophy-bg: rgba(162, 155, 254, 0.1);
--philosophy-border: rgba(162, 155, 254, 0.3);
--philosophy-border-left: #a29bfe;
--feature-icon-color: #6c5ce7;
--feature-title-color: #6c5ce7;
/* Select Options */
--select-option-hover-bg: #a29bfe;
--select-option-checked-bg: #6c5ce7;
/* Scrollbar */
--scrollbar-thumb-bg: rgba(162, 155, 254, 0.4);
--scrollbar-thumb-hover-bg: rgba(162, 155, 254, 0.6);
--scrollbar-thumb-active-bg: rgba(162, 155, 254, 0.8);
/* Model Colors */
--model-strength-color: #6c5ce7;
--model-strength-text: #fff;
--model-provider-color: #fd79a8;
--model-provider-text: #fff;
/* Text Colors */
--text-primary: #2d2250;
--text-secondary: #555;
/* Character Selection Colors */
--character-selected-border: #6c5ce7;
--character-selected-bg: rgba(162, 155, 254, 0.13);
/* Additional Purple Theme Variables */
--button-primary-bg: var(--primary-color);
--button-primary-text: var(--text-on-primary);
--button-primary-hover-bg: var(--accent-color);
--button-secondary-bg: rgba(255, 255, 255, 0.1);
--button-secondary-text: var(--text-on-background);
--guide-step-number-color: var(--primary-color);
--guide-step-number-bg: rgba(162, 155, 254, var(--hover-opacity));
--waiting-indicator-color: var(--primary-color);
--progress-fill-bg: linear-gradient(90deg, var(--primary-color), var(--accent-color));
}
[data-theme="green"] {
--primary-color: #27ae60;
--secondary-color: #2ecc71;
--accent-color: #16a085;
--background-overlay: rgba(39, 174, 96, 0.15);
--gradient-start: #27ae60;
--gradient-end: #16a085;
--text-glow: 0 0 10px rgba(39, 174, 96, 0.5);
--button-hover: rgba(39, 174, 96, 0.3);
--modal-title-color: #1a3d2e;
--switch-color: #27ae60;
/* Contrast and Accessibility for Green Theme */
--text-on-primary: #ffffff;
--text-on-secondary: #1a3d2e;
--text-on-accent: #ffffff;
--text-on-background: #ffffff;
/* UI Component Colors */
--chat-bg: rgba(39, 174, 96, 0.9);
--chat-border: #27ae60;
--chat-text: var(--text-on-primary);
--chat-message-user-bg: #27ae60;
--chat-message-user-text: var(--text-on-primary);
--chat-message-kimi-bg: rgba(255, 255, 255, 0.15);
--chat-message-kimi-text: var(--text-on-background);
--input-border: #27ae60;
--input-focus-border: #16a085;
--input-text: var(--text-on-background);
/* Modal & Overlay Colors */
--modal-bg: rgba(39, 174, 96, 0.95);
--modal-border: #27ae60;
--modal-header-bg: linear-gradient(135deg, #27ae60, #2ecc71);
--modal-text: var(--text-on-primary);
/* Settings Panel & Tabs */
--settings-text: var(--text-on-background);
--settings-tab-active-bg: #27ae60;
--settings-tab-active-color: var(--text-on-primary);
--settings-section-border: #27ae60;
--settings-tab-border: #27ae60;
--settings-section-header-color: var(--text-on-background);
/* Button Colors */
--button-primary-bg: var(--primary-color);
--button-primary-text: var(--text-on-primary);
--button-primary-hover-bg: var(--accent-color);
--button-secondary-bg: rgba(255, 255, 255, 0.1);
--button-secondary-text: var(--text-on-background);
/* Slider Components */
--slider-value-border: #16a085;
--slider-thumb-bg: var(--primary-color);
--slider-thumb-hover-bg: var(--accent-color);
/* Toggle Switch */
--switch-bg-active: linear-gradient(90deg, #27ae60, #16a085);
/* Mic Button & Pulse Effect */
--mic-button-border: #27ae60;
--mic-button-shadow: 0 0 15px #27ae60;
--mic-button-hover-bg: #27ae60;
--mic-button-hover-shadow: 0 0 10px rgba(39, 174, 96, 0.5);
--mic-button-icon-color: var(--text-on-primary);
--mic-listening-border: #16a085;
--mic-listening-shadow: 0 0 15px #16a085;
--mic-pulse-color: rgba(22, 160, 133, 0.5);
--mic-pulse-listening-color: rgba(22, 160, 133, 0.4);
/* Cards & Stats */
--card-text: var(--text-on-background);
--stat-value-color: #16a085;
/* Plugin Cards */
--plugin-card-border: #27ae60;
--plugin-card-title-color: var(--text-on-background);
--plugin-card-desc-color: #e0cfe6;
--plugin-card-author-color: #bfa6b6;
--plugin-type-badge-bg: #16a085;
--plugin-type-badge-text: var(--text-on-accent);
--plugin-active-badge-bg: linear-gradient(90deg, #27ae60, #16a085);
--plugin-active-badge-text: var(--text-on-primary);
/* Help Modal */
--creator-name-color: #16a085;
--creator-avatar-bg: linear-gradient(135deg, #27ae60, #2ecc71);
--creator-role-bg: linear-gradient(135deg, #27ae60, #2ecc71);
--creator-role-color: var(--text-on-secondary);
--philosophy-bg: rgba(39, 174, 96, 0.1);
--philosophy-border: rgba(39, 174, 96, var(--border-opacity));
--philosophy-border-left: #27ae60;
--feature-icon-color: #147190;
--feature-title-color: #147190;
--guide-step-number-color: var(--primary-color);
--guide-step-number-bg: rgba(39, 174, 96, var(--hover-opacity));
/* Select Options */
--select-option-hover-bg: #27ae60;
--select-option-checked-bg: #16a085;
/* Scrollbar */
--scrollbar-thumb-bg: rgba(39, 174, 96, 0.4);
--scrollbar-thumb-hover-bg: rgba(39, 174, 96, 0.6);
--scrollbar-thumb-active-bg: rgba(39, 174, 96, 0.8);
/* Model Colors */
--model-strength-color: #27ae60;
--model-strength-text: var(--text-on-primary);
--model-provider-color: #2ecc71;
--model-provider-text: var(--text-on-primary);
/* Text Colors */
--text-primary: var(--text-on-background);
--text-secondary: #4e6151;
--text-muted: rgba(255, 255, 255, 0.6);
/* Character Selection Colors */
--character-selected-border: #16a085;
--character-selected-bg: rgba(39, 174, 96, 0.13);
--character-name-color: var(--text-on-background);
/* Additional Green Theme Variables */
--waiting-indicator-color: var(--primary-color);
--loading-spinner-color: var(--primary-color);
--progress-fill-bg: linear-gradient(90deg, var(--primary-color), var(--accent-color));
}
[data-theme="dark"] {
--primary-color: #5e60ce;
--secondary-color: #23262f;
--accent-color: #8b5cf6;
--background-overlay: rgba(24, 26, 32, 0.85);
--gradient-start: #5e60ce;
--gradient-end: #8b5cf6;
--text-glow: 0 0 10px rgba(94, 96, 206, 0.3);
--button-hover: rgba(94, 96, 206, 0.15);
--modal-title-color: #e0e0e0;
--switch-color: #5e60ce;
/* Contrast and Accessibility for Dark Theme */
--text-on-primary: #ffffff;
--text-on-secondary: #e0e0e0;
--text-on-accent: #ffffff;
--text-on-background: #e0e0e0;
/* UI Component Colors */
--chat-bg: rgba(24, 26, 32, 0.95);
--chat-border: #5e60ce;
--chat-text: var(--text-on-background);
--chat-message-user-bg: #23262f;
--chat-message-user-text: var(--text-on-background);
--chat-message-kimi-bg: #181a20;
--chat-message-kimi-text: var(--text-on-background);
--input-border: #5e60ce;
--input-focus-border: #8b5cf6;
--input-text: var(--text-on-background);
/* Modal & Overlay Colors */
--modal-bg: rgba(24, 26, 32, 0.98);
--modal-border: #5e60ce;
--modal-header-bg: linear-gradient(135deg, #5e60ce, #8b5cf6);
--modal-text: var(--text-on-background);
/* Settings Panel & Tabs */
--settings-bg: #0f1114;
--settings-text: var(--text-on-background);
--settings-tab-bg: #181a20;
--settings-tab-active-bg: #5e60ce;
--settings-tab-active-color: var(--text-on-primary);
--settings-section-bg: #1a1d23;
--settings-section-border: rgba(94, 96, 206, var(--border-opacity));
--settings-tab-border: #5e60ce;
--settings-section-header-color: var(--text-on-background);
/* Button Colors */
--button-primary-bg: var(--primary-color);
--button-primary-text: var(--text-on-primary);
--button-primary-hover-bg: var(--accent-color);
--button-secondary-bg: rgba(255, 255, 255, 0.05);
--button-secondary-text: var(--text-on-background);
/* Slider Components */
--slider-value-bg: #0f1114;
--slider-value-border: #5e60ce;
--slider-value-color: var(--text-on-background);
--slider-thumb-bg: var(--primary-color);
--slider-thumb-hover-bg: var(--accent-color);
/* Toggle Switch */
--switch-bg-inactive: rgba(255, 255, 255, 0.05);
--switch-bg-active: linear-gradient(90deg, #5e60ce, #8b5cf6);
/* Mic Button & Pulse Effect */
--mic-button-border: #5e60ce;
--mic-button-shadow: 0 0 15px #5e60ce;
--mic-button-hover-bg: #5e60ce;
--mic-button-hover-shadow: 0 0 10px rgba(94, 96, 206, 0.5);
--mic-button-icon-color: var(--text-on-primary);
--mic-listening-border: #8b5cf6;
--mic-listening-shadow: 0 0 15px #8b5cf6;
--mic-pulse-color: rgba(139, 92, 246, 0.5);
--mic-pulse-listening-color: rgba(139, 92, 246, 0.4);
/* Cards & Stats */
--card-bg: rgba(255, 255, 255, 0.02);
--card-border: rgba(255, 255, 255, 0.05);
--card-hover-bg: rgba(255, 255, 255, 0.05);
--card-text: var(--text-on-background);
--stat-value-color: #8b5cf6;
/* Plugin Cards */
--plugin-card-bg: linear-gradient(135deg, #1a1d23 80%, rgba(24, 26, 32, 0.98) 100%);
--plugin-card-border: #5e60ce;
--plugin-card-title-color: var(--text-on-background);
--plugin-card-desc-color: rgba(224, 224, 224, 0.7);
--plugin-card-author-color: rgba(224, 224, 224, 0.5);
--plugin-type-badge-bg: #8b5cf6;
--plugin-type-badge-text: var(--text-on-accent);
--plugin-active-badge-bg: linear-gradient(90deg, #5e60ce, #8b5cf6);
--plugin-active-badge-text: var(--text-on-primary);
/* Help Modal */
--help-modal-bg: rgba(24, 26, 32, 0.98);
--help-modal-border: #5e60ce;
--creator-card-bg: rgba(255, 255, 255, 0.02);
--creator-card-border: rgba(255, 255, 255, 0.05);
--creator-name-color: #8b5cf6;
--creator-avatar-bg: linear-gradient(135deg, #5e60ce, #8b5cf6);
--creator-role-bg: linear-gradient(135deg, #5e60ce, #8b5cf6);
--creator-role-color: var(--text-on-primary);
--philosophy-bg: rgba(94, 96, 206, 0.05);
--philosophy-border: rgba(94, 96, 206, var(--border-opacity));
--philosophy-border-left: #5e60ce;
--feature-item-bg: rgba(255, 255, 255, 0.02);
--feature-item-border: rgba(94, 96, 206, var(--border-opacity));
--feature-icon-color: #8b5cf6;
--feature-title-color: #8b5cf6;
--feature-text-color: rgba(224, 224, 224, 0.7);
--guide-step-bg: rgba(255, 255, 255, 0.02);
--guide-step-number-color: var(--primary-color);
--guide-step-number-bg: rgba(94, 96, 206, var(--hover-opacity));
--tip-item-bg: rgba(255, 255, 255, 0.02);
/* Select Options */
--select-option-bg: rgba(24, 26, 32, 0.95);
--select-option-text: var(--text-on-background);
--select-option-hover-bg: #5e60ce;
--select-option-checked-bg: #8b5cf6;
/* Scrollbar */
--scrollbar-track-bg: rgba(255, 255, 255, 0.02);
--scrollbar-thumb-bg: rgba(94, 96, 206, 0.4);
--scrollbar-thumb-hover-bg: rgba(94, 96, 206, 0.6);
--scrollbar-thumb-active-bg: rgba(94, 96, 206, 0.8);
/* Model Colors */
--model-card-bg: rgba(255, 255, 255, 0.02);
--model-card-border: rgba(255, 255, 255, 0.05);
--model-card-hover-bg: rgba(255, 255, 255, 0.05);
--model-card-selected-border: var(--primary-color);
--model-name-color: var(--text-on-background);
--model-description-color: rgba(224, 224, 224, 0.7);
--model-strength-color: #5e60ce;
--model-strength-text: var(--text-on-primary);
--model-provider-color: #8b5cf6;
--model-provider-text: var(--text-on-accent);
/* Text Colors */
--text-primary: var(--text-on-background);
--text-secondary: #9ca3af;
--text-muted: rgba(224, 224, 224, 0.6);
/* Character Selection Colors */
--character-card: rgba(255, 255, 255, 0.02);
--character-card-border: rgba(255, 255, 255, 0.05);
--character-card-hover-bg: rgba(255, 255, 255, 0.05);
--character-selected-border: #8b5cf6;
--character-selected-bg: rgba(94, 96, 206, 0.1);
--character-name-color: var(--text-on-background);
/* Additional Dark Theme Variables */
--waiting-indicator-color: var(--primary-color);
--loading-spinner-color: var(--primary-color);
--progress-bg: rgba(255, 255, 255, 0.05);
--progress-fill-bg: linear-gradient(90deg, var(--primary-color), var(--accent-color));
--progress-text-color: var(--text-on-background);
--transcript-bg: rgba(0, 0, 0, 0.9);
--transcript-text: var(--text-on-background);
--transcript-border: var(--primary-color);
}
/* ===== ANIMATION MANAGEMENT ===== */
/* Disable animations when requested */
body.no-animations *,
[data-animations="false"] * {
animation: none !important;
transition: none !important;
}
/* Important: Keep mic button animations even when animations are disabled */
body.no-animations .mic-button,
body.no-animations .mic-button *,
body.no-animations .mic-button::after,
[data-animations="false"] .mic-button,
[data-animations="false"] .mic-button *,
[data-animations="false"] .mic-button::after {
animation: revert !important;
transition: revert !important;
}
/* Keep loading screen animations */
body.no-animations #loading-screen,
body.no-animations #loading-screen *,
[data-animations="false"] #loading-screen,
[data-animations="false"] #loading-screen * {
animation: revert !important;
transition: revert !important;
}
/* Ensure critical hover effects remain functional */
body.animations-enabled .kimi-button:hover,
body.animations-enabled .control-button-unified:hover {
transform: translateY(-2px);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
body.animations-enabled .mic-button:hover {
transform: scale(1.1);
transition: all 0.2s ease;
}
/* ===== GLOBAL STYLES ===== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
color: white;
overflow: hidden;
}
.video-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background-color: #1a1a1a;
}
.bg-video.active {
opacity: 1;
}
.bg-video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: contain;
opacity: 0;
transition: opacity var(--video-fade-duration) cubic-bezier(0.4, 0, 0.2, 1);
background-color: #1a1a1a;
will-change: opacity;
backface-visibility: hidden;
}
.bg-video.transitioning {
opacity: 0;
transition: opacity var(--video-fade-duration) cubic-bezier(0.4, 0, 0.2, 1);
pointer-events: none;
}
@media (max-width: 600px) {
.bg-video {
object-fit: cover;
object-position: center center;
}
}
.content-overlay {
position: relative;
height: 100vh;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
padding: 20px;
background-color: var(--background-overlay);
opacity: var(--interface-opacity);
z-index: 1;
}
.top-bar {
width: 100%;
max-width: 500px;
text-align: center;
margin-top: 10px;
}
.top-bar label {
font-size: 1rem;
font-weight: 600;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
margin-bottom: 8px;
display: block;
}
.progress-container {
width: 100%;
height: 12px;
background-color: var(--progress-bg);
border-radius: 10px;
overflow: hidden;
}
.progress-fill {
height: 100%;
width: 50%; /* Changed from 65% to match new default favorability level */
background: var(--progress-fill-bg);
border-radius: 10px;
transition: width 0.5s ease-in-out;
box-shadow: var(--text-glow);
}
/* Center content styles can be added here if needed */
.transcript-container {
position: absolute;
bottom: 180px;
left: 50%;
transform: translateX(-50%);
width: 80%;
max-width: 600px;
padding: 15px;
background: var(--transcript-bg);
backdrop-filter: blur(10px);
border-radius: 10px;
border: 1px solid var(--transcript-border);
text-align: center;
opacity: 0;
transition: opacity 0.3s ease-in-out;
pointer-events: none;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.transcript-container.visible {
opacity: 1;
}
#transcript {
font-size: 1.2rem;
color: var(--transcript-text);
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.7);
}
/* Interface de Chat avec Kimi - STYLE UNIFIÉ */
.chat-container {
position: fixed;
top: 20px;
right: 20px;
width: 350px;
max-width: calc(100vw - 40px);
height: 500px;
max-height: 80vh;
background: var(--chat-bg);
backdrop-filter: blur(20px);
border-radius: 15px;
border: 1px solid var(--chat-border);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
display: none;
flex-direction: column;
z-index: 1000;
overflow: hidden;
transform: translateX(400px);
opacity: 0;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.chat-container.visible {
display: flex;
flex-direction: column;
transform: translateX(0);
opacity: 1;
}
.chat-header {
padding: 15px 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
background: var(--chat-header-bg);
}
.chat-header h3 {
margin: 0;
color: var(--chat-text);
font-size: 1.1rem;
font-weight: 600;
}
.chat-header h3 i {
margin-right: 8px;
color: var(--accent-color);
}
.chat-toggle {
background: none;
border: none;
color: var(--chat-text);
cursor: pointer;
width: 30px;
height: 30px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
font-size: 1.1rem;
}
.chat-toggle:hover {
background: rgba(255, 255, 255, 0.1);
transform: scale(1.1);
}
.chat-messages {
flex: 1;
padding: 18px;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 15px;
}
.message {
max-width: 92%;
padding: 10px 14px;
border-radius: 16px;
word-wrap: break-word;
position: relative;
}
.message.user {
align-self: flex-end;
background: var(--chat-message-user-bg);
color: var(--chat-message-user-text);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.message.kimi {
align-self: flex-start;
background: var(--chat-message-kimi-bg);
color: var(--chat-message-kimi-text);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.message-time {
font-size: 0.75rem;
opacity: 0.7;
margin-top: 5px;
}
.chat-input-container {
padding: 15px 20px;
background: var(--chat-header-bg);
border-top: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
gap: 10px;
align-items: center;
}
#chat-input {
flex: 1;
padding: 12px 15px;
background: var(--chat-input-bg);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 25px;
color: var(--chat-input-text);
font-size: 0.95rem;
outline: none;
transition: all 0.3s ease;
}
#chat-input:focus {
background: rgba(255, 255, 255, 0.15);
border-color: var(--accent-color);
box-shadow: 0 0 10px var(--primary-color);
}
#chat-input::placeholder {
color: var(--chat-input-placeholder);
}
#send-button {
width: 45px;
height: 45px;
background: var(--chat-message-user-bg);
border: none;
border-radius: 50%;
color: white;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
#send-button:hover {
transform: scale(1.1);
box-shadow:
var(--text-glow),
0 4px 15px rgba(0, 0, 0, 0.3);
background: var(--accent-color);
}
#send-button:active {
transform: scale(0.95);
transition: all 0.1s ease;
}
#chat-delete {
background: none;
border: none;
color: #d9534f;
font-size: 1.2em;
cursor: pointer;
margin-left: 8px;
transition: color 0.2s;
}
#chat-delete:hover {
color: #b52a1a;
}
#chat-delete i {
pointer-events: none;
}
.delete-message-btn {
background: none;
border: none;
color: #aaa;
cursor: pointer;
padding: 0 0 0 8px;
display: flex;
align-items: center;
transition: color 0.2s;
}
.delete-message-btn:hover {
color: #e74c3c;
}
.delete-message-btn i {
pointer-events: none;
}
/* ===== UNIFIED BUTTON COMPONENTS ===== */
.kimi-button,
.control-button-unified {
background: var(--button-primary-bg);
border: none;
border-radius: 8px;
color: var(--button-primary-text);
padding: 10px 20px;
font-size: 0.9rem;
font-weight: 500;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
position: relative;
overflow: hidden;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.kimi-button::before,
.control-button-unified::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.kimi-button:hover,
.control-button-unified:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
background: var(--button-primary-hover-bg);
}
.kimi-button:hover::before,
.control-button-unified:hover::before {
left: 100%;
}
.kimi-button:active,
.control-button-unified:active {
transform: translateY(0);
transition: all 0.1s ease;
}
.kimi-button:disabled,
.control-button-unified:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
/* Button Variants */
.kimi-button.danger {
background: var(--button-danger-bg);
color: var(--button-danger-text);
}
.kimi-button.danger:hover {
background: var(--button-danger-hover-bg);
}
.kimi-button.success {
background: linear-gradient(135deg, #26de81, #20bf6b);
}
.kimi-button.success:hover {
background: linear-gradient(135deg, #20bf6b, #26de81);
}
.kimi-button.secondary {
background: var(--button-secondary-bg);
color: var(--button-secondary-text);
}
.kimi-button.secondary:hover {
background: var(--button-secondary-hover-bg);
}
/* Circular Control Buttons */
.control-button-unified {
width: 50px;
height: 50px;
border-radius: 50%;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
background: var(--button-hover);
box-shadow: var(--mic-button-shadow);
border: 1px solid var(--primary-color);
}
.control-button-unified:hover {
transform: translateY(-2px) scale(1.05);
background: var(--primary-color);
box-shadow: var(--text-glow);
}
.control-button-unified i {
font-size: 1.2rem;
transition: transform 0.3s ease;
}
.control-button-unified:hover i {
transform: scale(1.1);
}
/* ===== UNIFIED FORM COMPONENTS ===== */
/* Select Elements */
.kimi-select,
.kimi-select-unified {
background: var(--select-bg);
border: 1px solid var(--select-border);
border-radius: 8px;
color: var(--select-text);
padding: 8px 12px;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
cursor: pointer;
width: 100%;
box-sizing: border-box;
}
.kimi-select:hover,
.kimi-select-unified:hover {
background: var(--input-focus-bg);
border-color: var(--accent-color);
box-shadow: 0 0 10px var(--primary-color);
}
.kimi-select:focus,
.kimi-select-unified:focus {
background: var(--input-focus-bg);
border-color: var(--input-focus-border);
box-shadow: 0 0 15px var(--primary-color);
}
.kimi-select option,
.kimi-select-unified option {
background: var(--select-option-bg);
color: var(--select-option-text);
padding: 12px 15px;
border: none;
font-size: 0.9rem;
transition: all 0.3s ease;
}
.kimi-select option:hover,
.kimi-select-unified option:hover,
.kimi-select option:focus,
.kimi-select-unified option:focus {
background: var(--select-option-hover-bg);
color: var(--select-option-hover-text);
}
.kimi-select option:checked,
.kimi-select-unified option:checked,
.kimi-select option:selected,
.kimi-select-unified option:selected {
background: var(--select-option-checked-bg);
color: var(--select-option-checked-text);
font-weight: 600;
box-shadow: 0 0 10px var(--primary-color);
}
/* Input Elements */
.kimi-input,
.kimi-input-unified {
background: var(--input-bg);
border: 1px solid var(--input-border);
border-radius: 8px;
color: var(--input-text);
padding: 8px 12px;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
backdrop-filter: blur(10px);
width: 100%;
box-sizing: border-box;
}
.kimi-input:focus,
.kimi-input-unified:focus {
background: var(--input-focus-bg);
border-color: var(--input-focus-border);
box-shadow: 0 0 15px var(--primary-color);
}
.kimi-input::placeholder,
.kimi-input-unified::placeholder {
color: var(--input-placeholder);
}
/* Slider Elements */
.kimi-slider,
.kimi-slider-unified {
-webkit-appearance: none;
appearance: none;
height: 6px;
border-radius: 3px;
background: var(--slider-track-bg);
outline: none;
transition: all 0.3s ease;
cursor: pointer;
}
.kimi-slider::-webkit-slider-thumb,
.kimi-slider-unified::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--slider-thumb-bg);
cursor: pointer;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
transition: all 0.3s ease;
}
.kimi-slider::-webkit-slider-thumb:hover,
.kimi-slider-unified::-webkit-slider-thumb:hover {
transform: scale(1.2);
background: var(--slider-thumb-hover-bg);
box-shadow:
0 4px 15px rgba(0, 0, 0, 0.4),
var(--text-glow);
}
.kimi-slider::-moz-range-thumb,
.kimi-slider-unified::-moz-range-thumb {
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--slider-thumb-bg);
cursor: pointer;
border: none;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
transition: all 0.3s ease;
}
.kimi-slider::-moz-range-thumb:hover,
.kimi-slider-unified::-moz-range-thumb:hover {
transform: scale(1.2);
background: var(--slider-thumb-hover-bg);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4);
}
/* ===== CONSOLIDATED SCROLLBAR SYSTEM ===== */
* {
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb-bg) var(--scrollbar-track-bg);
}
*::-webkit-scrollbar {
width: var(--scrollbar-width);
height: var(--scrollbar-width);
}
*::-webkit-scrollbar-track {
background: var(--scrollbar-track-bg);
border-radius: 4px;
}
*::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb-bg);
border-radius: 4px;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.1);
}
*::-webkit-scrollbar-thumb:hover {
background: var(--scrollbar-thumb-hover-bg);
transform: scale(1.1);
}
*::-webkit-scrollbar-thumb:active {
background: var(--scrollbar-thumb-active-bg);
}
*::-webkit-scrollbar-corner {
background: var(--scrollbar-corner-bg);
}
/* ===== MAIN LAYOUT AND CONTROLS ===== */
.control-buttons {
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
margin-bottom: 10px;
}
.bottom-bar {
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
}
.favorability-text {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
font-size: 0.85rem;
font-weight: 600;
color: var(--progress-text-color);
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.progress-container {
position: relative;
}
.mic-button {
position: relative;
width: 90px;
height: 90px;
background: var(--mic-button-bg);
backdrop-filter: blur(10px);
border: 1px solid var(--mic-button-border);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: var(--mic-button-shadow);
}
.mic-button:not(.is-listening)::after {
display: none;
}
.mic-button.is-listening.mic-pulse-active::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 120px;
height: 120px;
border-radius: 50%;
background: var(--mic-pulse-color);
opacity: 0.6;
z-index: -1;
animation: micPulseRed 1.2s infinite cubic-bezier(0.66, 0, 0, 1);
pointer-events: none;
}
.mic-button:hover {
transform: scale(1.1);
background: var(--mic-button-hover-bg);
box-shadow: var(--mic-button-hover-shadow);
}
.mic-button:active {
transform: scale(0.95);
}
.mic-button i {
font-size: 28px;
color: var(--mic-button-icon-color);
transition: all 0.3s ease;
}
.mic-button.is-listening {
animation: pulse 1.5s infinite;
border: 1px solid #27ae60;
box-shadow: 0 0 15px #27ae60;
}
.mic-button.is-listening i {
animation: micPulse 0.8s infinite alternate;
}
.mic-pulse-active {
position: relative;
box-shadow: 0 0 0 0 var(--primary-color);
animation: micPulse 1.2s infinite cubic-bezier(0.66, 0, 0, 1);
}
.mic-button.mic-pulse-active {
position: relative;
z-index: 1;
}
.mic-button.mic-pulse-active::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 120px;
height: 120px;
border-radius: 50%;
background: var(--mic-pulse-color);
opacity: 0.6;
z-index: -1;
animation: micPulseRed 1.2s infinite cubic-bezier(0.66, 0, 0, 1);
pointer-events: none;
}
@keyframes micPulseRed {
0% {
transform: translate(-50%, -50%) scale(0.8);
opacity: 0.6;
}
70% {
transform: translate(-50%, -50%) scale(1.2);
opacity: 0;
}
100% {
transform: translate(-50%, -50%) scale(0.8);
opacity: 0;
}
}
/* ===== CONSOLIDATED RESPONSIVE DESIGN ===== */
@media (max-width: 768px) {
.content-overlay {
padding: 20px;
}
.chat-container {
top: 10px;
right: 10px;
left: 10px;
width: auto;
max-width: none;
height: calc(100vh - 20px);
max-height: none;
border-radius: 10px;
}
.chat-header {
padding: 12px 15px;
}
.chat-header h3 {
font-size: 1rem;
}
.control-buttons {
gap: 15px;
}
.control-button-unified {
width: 45px;
height: 45px;
}
.control-button-unified i {
font-size: 1.1rem;
}
.top-bar {
margin-top: 15px;
}
.top-bar label {
font-size: 0.9rem;
}
.progress-container {
height: 10px;
}
.mic-button {
width: 80px;
height: 80px;
}
.mic-button i {
font-size: 34px;
}
.transcript-container {
bottom: 200px;
width: 90%;
}
#transcript {
font-size: 1rem;
}
.message {
max-width: 85%;
padding: 10px 14px;
font-size: 0.9rem;
}
.favorability-text {
font-size: 0.75rem;
}
.control-buttons {
gap: 10px;
justify-content: space-around;
}
.kimi-select,
.kimi-select-unified,
.kimi-input,
.kimi-input-unified {
font-size: 16px; /* Prevents zoom on iOS */
}
}
@media (max-width: 600px) {
.content-overlay {
padding: 10px;
}
.chat-container {
top: 10px;
right: 10px;
left: 10px;
width: auto;
max-width: none;
height: calc(100vh - 20px);
max-height: none;
border-radius: 10px;
}
.chat-header {
padding: 12px 15px;
}
.chat-header h3 {
font-size: 1rem;
}
.control-buttons {
gap: 15px;
}
.chat-button,
.settings-button {
width: 50px;
height: 50px;
}
.chat-button i,
.settings-button i {
font-size: 20px;
}
.top-bar {
margin-top: 15px;
}
.top-bar label {
font-size: 0.9rem;
}
.progress-container {
height: 10px;
}
.mic-button {
width: 80px;
height: 80px;
}
.mic-button i {
font-size: 34px;
}
.transcript-container {
bottom: 200px;
width: 90%;
}
#transcript {
font-size: 1rem;
}
.message {
max-width: 92%;
padding: 10px 14px;
font-size: 0.9rem;
}
.favorability-text {
font-size: 0.75rem;
}
}
/* Animation pour l'indicateur d'attente */
.waiting-indicator {
display: block;
text-align: center;
width: 100%;
box-sizing: border-box;
margin: 6px 0 4px 0; /* discret au-dessus de l'input */
opacity: 0;
transition: opacity 0.25s ease-in-out;
pointer-events: none;
}
.waiting-indicator.visible {
opacity: 1;
}
.waiting-indicator span {
display: inline-block;
width: 8px;
height: 8px;
margin: 0 2px;
background: var(--waiting-indicator-color);
border-radius: 50%;
opacity: 0.5;
animation: waiting-bounce 1.4s infinite both;
}
.waiting-indicator span:nth-child(2) {
animation-delay: 0.2s;
}
.waiting-indicator span:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes waiting-bounce {
0%,
80%,
100% {
transform: scale(0.7);
opacity: 0.5;
}
40% {
transform: scale(1);
opacity: 1;
}
}
/* Global typing indicator near mic button */
.global-typing-indicator {
display: none;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
margin: 0 6px;
border-radius: 18px;
background: rgba(0, 0, 0, 0.2);
backdrop-filter: blur(6px);
transition: opacity 0.25s ease-in-out;
opacity: 0;
}
.global-typing-indicator.visible {
display: inline-flex;
opacity: 1;
}
.global-typing-indicator span {
display: inline-block;
width: 6px;
height: 6px;
margin: 0 1.5px;
background: var(--waiting-indicator-color);
border-radius: 50%;
opacity: 0.6;
animation: waiting-bounce 1.4s infinite both;
}
.global-typing-indicator span:nth-child(2) {
animation-delay: 0.2s;
}
.global-typing-indicator span:nth-child(3) {
animation-delay: 0.4s;
}