Spaces:
Running
Running
/* ===== 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 ; | |
transition: none ; | |
} | |
/* 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 ; | |
transition: revert ; | |
} | |
/* 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 ; | |
transition: revert ; | |
} | |
/* 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; | |
} | |