Spaces:
Sleeping
Sleeping
| /* Root Variables */ | |
| :root { | |
| /* Light Mode Colors */ | |
| --primary-color: #3498db; | |
| --primary-dark: #2980b9; | |
| --secondary-color: #2ecc71; | |
| --secondary-dark: #27ae60; | |
| --accent-color: #9b59b6; | |
| --accent-dark: #8e44ad; | |
| --background-color: #f8f9fa; | |
| --surface-color: #ffffff; | |
| --text-primary: #2c3e50; | |
| --text-secondary: #7f8c8d; | |
| --border-color: #e0e0e0; | |
| --shadow-sm: 0 2px 4px rgba(0,0,0,0.05); | |
| --shadow-md: 0 4px 6px rgba(0,0,0,0.1); | |
| --shadow-lg: 0 10px 15px rgba(0,0,0,0.1); | |
| --radius-sm: 4px; | |
| --radius-md: 8px; | |
| --radius-lg: 12px; | |
| /* Enhanced Typography */ | |
| --font-heading: 'Montserrat', 'Segoe UI', system-ui, -apple-system, sans-serif; | |
| --font-body: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif; | |
| --font-mono: 'JetBrains Mono', 'Courier New', monospace; | |
| } | |
| /* Dark Mode Colors */ | |
| [data-theme="dark"] { | |
| --primary-color: #60a5fa; | |
| --primary-dark: #3b82f6; | |
| --secondary-color: #10b981; | |
| --secondary-dark: #059669; | |
| --accent-color: #c084fc; | |
| --accent-dark: #a855f7; | |
| --background-color: #111827; | |
| --surface-color: #1f2937; | |
| --text-primary: #f9fafb; | |
| --text-secondary: #e5e7eb; | |
| --border-color: #374151; | |
| --shadow-sm: 0 2px 4px rgba(0,0,0,0.3); | |
| --shadow-md: 0 4px 6px rgba(0,0,0,0.4); | |
| --shadow-lg: 0 10px 15px rgba(0,0,0,0.5); | |
| } | |
| /* Reset & Base Styles */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| /* Font imports */ | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Montserrat:wght@500;600;700&display=swap'); | |
| body { | |
| font-family: var(--font-body); | |
| background-color: var(--background-color); | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| transition: background-color 0.3s ease, color 0.3s ease; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| line-height: 1.3; | |
| margin-bottom: 0.5em; | |
| color: var(--text-primary); | |
| } | |
| code, pre { | |
| font-family: var(--font-mono); | |
| font-size: 0.9em; | |
| } | |
| /* Theme Toggle */ | |
| .theme-toggle { | |
| position: fixed; | |
| top: 1rem; | |
| right: 1rem; | |
| z-index: 1001; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| background-color: var(--surface-color); | |
| border-radius: 2rem; | |
| padding: 0.35rem; | |
| box-shadow: var(--shadow-md); | |
| cursor: pointer; | |
| border: 1px solid var(--border-color); | |
| transition: all 0.2s ease; | |
| } | |
| .theme-toggle:hover { | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .theme-toggle-icon { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 2rem; | |
| height: 2rem; | |
| font-size: 1.2rem; | |
| border-radius: 50%; | |
| color: var(--text-primary); | |
| transition: all 0.3s ease; | |
| } | |
| .theme-toggle-icon.light-icon { | |
| background-color: var(--primary-color); | |
| color: white; | |
| transform: var(--theme-light-transform, scale(1)); | |
| opacity: var(--theme-light-opacity, 1); | |
| } | |
| .theme-toggle-icon.dark-icon { | |
| background-color: transparent; | |
| transform: var(--theme-dark-transform, scale(0.8)); | |
| opacity: var(--theme-dark-opacity, 0.5); | |
| } | |
| [data-theme="dark"] .theme-toggle-icon.light-icon { | |
| background-color: transparent; | |
| transform: scale(0.8); | |
| opacity: 0.5; | |
| } | |
| [data-theme="dark"] .theme-toggle-icon.dark-icon { | |
| background-color: var(--accent-color); | |
| color: white; | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| /* Layout */ | |
| .app-container { | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .app-header { | |
| background-color: var(--surface-color); | |
| padding: 1rem 2rem; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .logo-container { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .logo-icon { | |
| font-size: 2rem; | |
| color: var(--primary-color); | |
| } | |
| .main-content { | |
| flex: 1; | |
| max-width: 1400px; | |
| margin: 2rem auto; | |
| padding: 0 2rem; | |
| display: grid; | |
| gap: 2rem; | |
| grid-template-rows: auto minmax(0, 1fr); | |
| } | |
| /* Upload Panel */ | |
| .upload-panel { | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-lg); | |
| padding: 2rem; | |
| box-shadow: var(--shadow-md); | |
| max-height: fit-content; | |
| overflow: hidden; | |
| } | |
| .upload-section { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr; | |
| gap: 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| .upload-container { | |
| border: 2px dashed rgba(52, 152, 219, 0.3); | |
| border-radius: var(--radius-lg); | |
| padding: 2.5rem; | |
| text-align: center; | |
| transition: all 0.3s ease; | |
| cursor: pointer; | |
| background: linear-gradient(135deg, rgba(52, 152, 219, 0.02) 0%, rgba(52, 152, 219, 0.08) 100%); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .upload-container::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: radial-gradient(circle at center, rgba(52, 152, 219, 0.1) 0%, transparent 70%); | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .upload-container:hover { | |
| border-color: var(--primary-color); | |
| transform: translateY(-5px); | |
| box-shadow: 0 15px 30px -10px rgba(52, 152, 219, 0.15); | |
| } | |
| .upload-container:hover::before { | |
| opacity: 1; | |
| } | |
| .upload-icon-container { | |
| width: 80px; | |
| height: 80px; | |
| border-radius: 50%; | |
| background-color: rgba(52, 152, 219, 0.1); | |
| margin: 0 auto 1.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all 0.3s ease; | |
| } | |
| .upload-container:hover .upload-icon-container { | |
| background-color: rgba(52, 152, 219, 0.2); | |
| transform: scale(1.1); | |
| } | |
| .upload-icon { | |
| font-size: 2.5rem; | |
| color: var(--primary-color); | |
| transition: all 0.3s ease; | |
| } | |
| .upload-container:hover .upload-icon { | |
| transform: translateY(-5px); | |
| } | |
| .upload-text { | |
| font-family: var(--font-heading); | |
| font-size: 1.25rem; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 0.5rem; | |
| } | |
| .upload-subtext { | |
| font-size: 0.95rem; | |
| color: var(--text-secondary); | |
| max-width: 80%; | |
| margin: 0 auto; | |
| } | |
| /* Upload file particles */ | |
| .particles { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| pointer-events: none; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .particle { | |
| position: absolute; | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background-color: var(--primary-color); | |
| opacity: 0; | |
| } | |
| .upload-container:hover .particles { | |
| opacity: 1; | |
| } | |
| @keyframes particleAnimation { | |
| 0% { transform: translateY(0) scale(0); opacity: 0; } | |
| 50% { opacity: 0.8; } | |
| 100% { transform: translateY(-100px) scale(1); opacity: 0; } | |
| } | |
| /* Upload Progress Animations */ | |
| .upload-progress { | |
| width: 100%; | |
| height: 4px; | |
| margin-top: 1.5rem; | |
| background-color: rgba(52, 152, 219, 0.1); | |
| border-radius: 2px; | |
| overflow: hidden; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .upload-progress-bar { | |
| height: 100%; | |
| width: 0; | |
| background: linear-gradient(90deg, var(--primary-color), var(--primary-dark)); | |
| border-radius: 2px; | |
| transition: width 0.3s ease; | |
| } | |
| .upload-container.uploading .upload-progress { | |
| opacity: 1; | |
| } | |
| /* Dark Mode Adjustments */ | |
| [data-theme="dark"] .upload-container { | |
| border-color: rgba(96, 165, 250, 0.3); | |
| background: linear-gradient(135deg, rgba(30, 41, 59, 0.5) 0%, rgba(30, 41, 59, 0.8) 100%); | |
| } | |
| [data-theme="dark"] .upload-container::before { | |
| background: radial-gradient(circle at center, rgba(96, 165, 250, 0.15) 0%, transparent 70%); | |
| } | |
| [data-theme="dark"] .upload-icon-container { | |
| background-color: rgba(96, 165, 250, 0.15); | |
| } | |
| /* Model Selector */ | |
| .model-selector { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .model-label { | |
| font-weight: 500; | |
| color: var(--text-primary); | |
| } | |
| .select-wrapper { | |
| position: relative; | |
| } | |
| .select-wrapper select { | |
| width: 100%; | |
| padding: 0.75rem; | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-sm); | |
| appearance: none; | |
| background-color: var(--surface-color); | |
| font-size: 1rem; | |
| color: var(--text-primary); | |
| } | |
| .select-icon { | |
| position: absolute; | |
| right: 1rem; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: var(--text-secondary); | |
| pointer-events: none; | |
| } | |
| .model-status { | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| } | |
| /* Video Preview */ | |
| .video-preview { | |
| margin: 2rem 0; | |
| border-radius: var(--radius-md); | |
| overflow: hidden; | |
| background-color: #000; | |
| position: relative; | |
| box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.15), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.05); | |
| } | |
| .video-preview video { | |
| width: 100%; | |
| object-fit: contain; | |
| display: block; | |
| } | |
| .video-preview::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: 90px; | |
| background: linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 100%); | |
| pointer-events: none; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .video-preview:hover::after { | |
| opacity: 1; | |
| } | |
| .video-controls { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 100%; | |
| padding: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| z-index: 10; | |
| opacity: 0; | |
| transform: translateY(10px); | |
| transition: all 0.3s ease; | |
| } | |
| .video-preview:hover .video-controls { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| .video-progress { | |
| flex: 1; | |
| height: 4px; | |
| background-color: rgba(255, 255, 255, 0.2); | |
| border-radius: 2px; | |
| overflow: hidden; | |
| cursor: pointer; | |
| position: relative; | |
| } | |
| .video-progress-bar { | |
| height: 100%; | |
| width: 0; | |
| background-color: var(--primary-color); | |
| border-radius: 2px; | |
| position: relative; | |
| } | |
| .video-progress-handle { | |
| position: absolute; | |
| right: -6px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| width: 12px; | |
| height: 12px; | |
| border-radius: 50%; | |
| background-color: white; | |
| box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); | |
| opacity: 0; | |
| transition: opacity 0.2s ease; | |
| } | |
| .video-progress:hover .video-progress-handle { | |
| opacity: 1; | |
| } | |
| .video-control-button { | |
| background: transparent; | |
| border: none; | |
| color: white; | |
| cursor: pointer; | |
| width: 36px; | |
| height: 36px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 50%; | |
| transition: all 0.2s ease; | |
| } | |
| .video-control-button:hover { | |
| background-color: rgba(255, 255, 255, 0.2); | |
| } | |
| .video-time { | |
| color: white; | |
| font-family: var(--font-mono); | |
| font-size: 0.85rem; | |
| min-width: 50px; | |
| text-align: center; | |
| } | |
| .video-preview.playing .video-play-icon { | |
| display: none; | |
| } | |
| .video-preview:not(.playing) .video-pause-icon { | |
| display: none; | |
| } | |
| /* Action Buttons */ | |
| .action-buttons { | |
| display: flex; | |
| gap: 1rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .primary-button, .secondary-button { | |
| padding: 0.75rem 1.5rem; | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| font-size: 1rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| transition: all 0.2s ease; | |
| } | |
| .primary-button { | |
| background-color: var(--primary-color); | |
| color: white; | |
| } | |
| .primary-button:hover { | |
| background-color: var(--primary-dark); | |
| } | |
| .secondary-button { | |
| background-color: var(--secondary-color); | |
| color: white; | |
| } | |
| .secondary-button:hover { | |
| background-color: var(--secondary-dark); | |
| } | |
| .primary-button:disabled, .secondary-button:disabled { | |
| background-color: var(--text-secondary); | |
| cursor: not-allowed; | |
| opacity: 0.7; | |
| } | |
| /* Progress Bar */ | |
| .progress-container { | |
| background-color: var(--background-color); | |
| padding: 1.5rem; | |
| border-radius: var(--radius-md); | |
| } | |
| .status-text { | |
| margin-bottom: 0.75rem; | |
| color: var(--text-secondary); | |
| } | |
| .progress-bar { | |
| height: 0.5rem; | |
| background-color: var(--border-color); | |
| border-radius: 999px; | |
| overflow: hidden; | |
| } | |
| .progress { | |
| height: 100%; | |
| background-color: var(--primary-color); | |
| transition: width 0.3s ease; | |
| } | |
| /* Results Panel */ | |
| .results-panel { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2rem; | |
| max-height: calc(100vh - 600px); | |
| min-height: 500px; | |
| overflow: hidden; | |
| } | |
| .transcription-container, .topics-container { | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-lg); | |
| padding: 1.5rem; | |
| box-shadow: var(--shadow-md); | |
| display: flex; | |
| flex-direction: column; | |
| max-height: 100%; | |
| overflow: hidden; | |
| } | |
| h2 { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| margin-bottom: 1rem; | |
| padding-bottom: 0.75rem; | |
| border-bottom: 2px solid var(--border-color); | |
| } | |
| .transcription-content, .topics-content { | |
| max-height: 500px; | |
| overflow-y: auto; | |
| padding: 1rem; | |
| background-color: var(--background-color); | |
| border-radius: var(--radius-md); | |
| font-size: 0.95rem; | |
| line-height: 1.7; | |
| height: 500px; | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| word-wrap: break-word; | |
| } | |
| /* Topic Styles */ | |
| .topic { | |
| margin-bottom: 1.5rem; | |
| padding: 1rem; | |
| background-color: var(--surface-color); | |
| border-left: 4px solid var(--primary-color); | |
| border-radius: 0 var(--radius-sm) var(--radius-sm) 0; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .topic-header { | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 0.5rem; | |
| } | |
| .topic-content { | |
| color: var(--text-secondary); | |
| } | |
| /* Mindmap Overlay */ | |
| .mindmap-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background-color: var(--background-color); | |
| z-index: 1000; | |
| display: none; | |
| } | |
| .mindmap-overlay.active { | |
| display: block; | |
| } | |
| .mindmap-content { | |
| display: flex; | |
| height: 100vh; | |
| } | |
| /* Video Section */ | |
| .video-section { | |
| width: 40%; | |
| padding: 2rem; | |
| background-color: var(--surface-color); | |
| border-right: 1px solid var(--border-color); | |
| display: none; | |
| } | |
| .video-section.active { | |
| display: block; | |
| } | |
| .video-player-container { | |
| border-radius: var(--radius-md); | |
| overflow: hidden; | |
| background-color: #000; | |
| margin-bottom: 1rem; | |
| } | |
| .video-player-container video { | |
| width: 100%; | |
| object-fit: contain; | |
| display: block; | |
| } | |
| .video-info { | |
| padding: 1rem; | |
| background-color: var(--background-color); | |
| border-radius: var(--radius-md); | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| } | |
| /* Mindmap Section */ | |
| .mindmap-section { | |
| flex: 1; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .mindmap-toolbar { | |
| position: absolute; | |
| top: 1rem; | |
| left: 1rem; | |
| z-index: 100; | |
| display: flex; | |
| gap: 0.5rem; | |
| background-color: var(--surface-color); | |
| padding: 0.5rem; | |
| border-radius: var(--radius-md); | |
| box-shadow: var(--shadow-md); | |
| } | |
| .tool-button { | |
| padding: 0.5rem 1rem; | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| background-color: var(--surface-color); | |
| color: var(--text-primary); | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| transition: all 0.2s ease; | |
| } | |
| .tool-button:hover { | |
| background-color: var(--background-color); | |
| color: var(--primary-color); | |
| } | |
| .tool-button.active { | |
| background-color: var(--primary-color); | |
| color: white; | |
| } | |
| .fullscreen-mindmap { | |
| width: 100%; | |
| height: calc(100vh - 4rem); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 1200px) { | |
| .main-content { | |
| padding: 0 1rem; | |
| } | |
| .results-panel { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .upload-section { | |
| grid-template-columns: 1fr; | |
| } | |
| .mindmap-content { | |
| flex-direction: column; | |
| } | |
| .video-section { | |
| width: 100%; | |
| border-right: none; | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .tool-button { | |
| padding: 0.5rem; | |
| } | |
| .tool-button span { | |
| display: none; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .action-buttons { | |
| flex-direction: column; | |
| } | |
| .primary-button, .secondary-button { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| } | |
| /* Custom Mindmap Node Styles */ | |
| jmnode { | |
| box-shadow: var(--shadow-sm); | |
| border-radius: var(--radius-md); | |
| padding: 8px 12px ; | |
| transition: all 0.2s ease; | |
| } | |
| jmnode:hover { | |
| box-shadow: var(--shadow-md); | |
| transform: translateY(-1px); | |
| } | |
| /* Improved Expand/Collapse Buttons */ | |
| jmexpander { | |
| width: 20px ; | |
| height: 20px ; | |
| border-radius: 50% ; | |
| background-color: var(--surface-color) ; | |
| box-shadow: 0 1px 3px rgba(0,0,0,0.2); | |
| display: flex ; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 16px ; | |
| font-weight: bold; | |
| color: var(--primary-color) ; | |
| transition: all 0.2s ease; | |
| text-indent: -9999px ; | |
| overflow: hidden ; | |
| font-size: 0 ; | |
| } | |
| jmexpander:hover { | |
| background-color: var(--primary-color) ; | |
| color: white ; | |
| transform: scale(1.1); | |
| } | |
| /* Custom icons for expander instead of +/- */ | |
| jmexpander.expand { | |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%233498db" width="24px" height="24px"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/></svg>') ; | |
| background-position: center ; | |
| background-repeat: no-repeat ; | |
| background-size: 12px ; | |
| } | |
| jmexpander.collapse { | |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%233498db" width="24px" height="24px"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 13H5v-2h14v2z"/></svg>') ; | |
| background-position: center ; | |
| background-repeat: no-repeat ; | |
| background-size: 12px ; | |
| } | |
| jmexpander.expand:hover, jmexpander.collapse:hover { | |
| background-color: var(--primary-color) ; | |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="24px" height="24px"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/></svg>') ; | |
| background-size: 12px ; | |
| } | |
| jmexpander.collapse:hover { | |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="24px" height="24px"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 13H5v-2h14v2z"/></svg>') ; | |
| } | |
| /* Video Close Button */ | |
| .video-close-button { | |
| position: absolute; | |
| top: 1rem; | |
| right: 1rem; | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 50%; | |
| background-color: var(--surface-color); | |
| color: var(--text-primary); | |
| border: none; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| box-shadow: var(--shadow-sm); | |
| transition: all 0.2s ease; | |
| z-index: 10; | |
| } | |
| .video-close-button:hover { | |
| background-color: #f8f9fa; | |
| color: var(--primary-color); | |
| box-shadow: var(--shadow-md); | |
| } | |
| /* Line style improvements */ | |
| jmnode.root { | |
| background-color: var(--primary-color) ; | |
| color: white ; | |
| } | |
| jmnode.root jmexpander { | |
| background-color: white ; | |
| } | |
| /* Connection lines styling */ | |
| jmexpander::before { | |
| border-color: var(--primary-color) ; | |
| } | |
| /* Node Context Menu */ | |
| .node-context-menu { | |
| position: absolute; | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-md); | |
| box-shadow: var(--shadow-lg); | |
| padding: 0.5rem 0; | |
| z-index: 2000; | |
| min-width: 180px; | |
| font-size: 0.9rem; | |
| opacity: 0; | |
| transform: scale(0.95); | |
| transform-origin: top left; | |
| transition: opacity 0.15s ease, transform 0.15s ease; | |
| pointer-events: none; | |
| } | |
| .node-context-menu.visible { | |
| opacity: 1; | |
| transform: scale(1); | |
| pointer-events: auto; | |
| } | |
| .context-menu-item { | |
| padding: 0.6rem 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| color: var(--text-primary); | |
| } | |
| .context-menu-item:hover { | |
| background-color: rgba(52, 152, 219, 0.1); | |
| color: var(--primary-color); | |
| } | |
| .context-menu-item i { | |
| width: 16px; | |
| text-align: center; | |
| } | |
| .context-menu-separator { | |
| height: 1px; | |
| background-color: var(--border-color); | |
| margin: 0.5rem 0; | |
| } | |
| /* Node color picker */ | |
| .color-picker-container { | |
| padding: 0.5rem 1rem; | |
| } | |
| .color-picker-label { | |
| display: block; | |
| margin-bottom: 0.5rem; | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| } | |
| .color-options { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.5rem; | |
| } | |
| .color-option { | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| cursor: pointer; | |
| position: relative; | |
| transition: transform 0.2s ease; | |
| } | |
| .color-option:hover { | |
| transform: scale(1.15); | |
| } | |
| .color-option.selected::after { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| background-color: white; | |
| } | |
| /* Node edit input */ | |
| .node-edit-input { | |
| position: absolute; | |
| z-index: 2000; | |
| padding: 8px 12px; | |
| border: 2px solid var(--primary-color); | |
| border-radius: var(--radius-md); | |
| box-shadow: var(--shadow-md); | |
| font-family: inherit; | |
| font-size: 14px; | |
| background-color: var(--surface-color); | |
| width: auto; | |
| min-width: 150px; | |
| } | |
| /* Custom node colors */ | |
| jmnode.node-blue { | |
| background-color: #3498db ; | |
| color: white ; | |
| } | |
| jmnode.node-green { | |
| background-color: #2ecc71 ; | |
| color: white ; | |
| } | |
| jmnode.node-red { | |
| background-color: #e74c3c ; | |
| color: white ; | |
| } | |
| jmnode.node-purple { | |
| background-color: #9b59b6 ; | |
| color: white ; | |
| } | |
| jmnode.node-orange { | |
| background-color: #e67e22 ; | |
| color: white ; | |
| } | |
| jmnode.node-yellow { | |
| background-color: #f1c40f ; | |
| color: #34495e ; | |
| } | |
| jmnode.node-teal { | |
| background-color: #1abc9c ; | |
| color: white ; | |
| } | |
| jmnode.node-gray { | |
| background-color: #95a5a6 ; | |
| color: white ; | |
| } | |
| /* Node hover states with color indication */ | |
| jmnode.node-blue:hover, jmnode.node-green:hover, jmnode.node-red:hover, | |
| jmnode.node-purple:hover, jmnode.node-orange:hover, jmnode.node-yellow:hover, | |
| jmnode.node-teal:hover, jmnode.node-gray:hover { | |
| filter: brightness(1.1); | |
| } | |
| /* Floating Action Button (FAB) */ | |
| .fab-container { | |
| position: fixed; | |
| bottom: 2rem; | |
| right: 2rem; | |
| z-index: 999; | |
| display: flex; | |
| flex-direction: column-reverse; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .fab-button { | |
| width: 3.5rem; | |
| height: 3.5rem; | |
| border-radius: 50%; | |
| background-color: var(--primary-color); | |
| color: white; | |
| border: none; | |
| box-shadow: var(--shadow-lg); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| cursor: pointer; | |
| transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); | |
| } | |
| .fab-button:hover { | |
| transform: scale(1.1); | |
| background-color: var(--primary-dark); | |
| } | |
| .fab-button:active { | |
| transform: scale(0.95); | |
| } | |
| .fab-options { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| opacity: 0; | |
| pointer-events: none; | |
| transform: translateY(1rem); | |
| transition: all 0.3s ease; | |
| } | |
| .fab-container.active .fab-options { | |
| opacity: 1; | |
| pointer-events: auto; | |
| transform: translateY(0); | |
| } | |
| .fab-container.active .fab-button { | |
| transform: rotate(45deg); | |
| background-color: var(--accent-color); | |
| } | |
| .fab-option { | |
| width: 2.5rem; | |
| height: 2.5rem; | |
| border-radius: 50%; | |
| background-color: var(--surface-color); | |
| color: var(--text-primary); | |
| border: none; | |
| box-shadow: var(--shadow-md); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1rem; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| position: relative; | |
| } | |
| .fab-option:hover { | |
| transform: scale(1.1); | |
| color: var(--primary-color); | |
| } | |
| .fab-option:hover::after { | |
| content: attr(title); | |
| position: absolute; | |
| right: calc(100% + 0.75rem); | |
| background-color: var(--surface-color); | |
| color: var(--text-primary); | |
| padding: 0.25rem 0.5rem; | |
| border-radius: var(--radius-sm); | |
| font-size: 0.8rem; | |
| white-space: nowrap; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* Results Gallery */ | |
| .gallery-container { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-color: rgba(0, 0, 0, 0.5); | |
| z-index: 2000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| opacity: 0; | |
| pointer-events: none; | |
| transition: opacity 0.3s ease; | |
| } | |
| .gallery-container.active { | |
| opacity: 1; | |
| pointer-events: auto; | |
| } | |
| .gallery-content { | |
| width: 90%; | |
| max-width: 1200px; | |
| height: 80%; | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-lg); | |
| box-shadow: var(--shadow-lg); | |
| overflow: hidden; | |
| display: flex; | |
| flex-direction: column; | |
| transform: scale(0.95); | |
| transition: transform 0.3s ease; | |
| } | |
| .gallery-container.active .gallery-content { | |
| transform: scale(1); | |
| } | |
| .gallery-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 1rem 1.5rem; | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .gallery-header h2 { | |
| margin: 0; | |
| font-size: 1.5rem; | |
| color: var(--text-primary); | |
| } | |
| .gallery-close { | |
| width: 2rem; | |
| height: 2rem; | |
| border-radius: 50%; | |
| background-color: transparent; | |
| color: var(--text-primary); | |
| border: none; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.2rem; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .gallery-close:hover { | |
| background-color: rgba(0, 0, 0, 0.1); | |
| color: var(--primary-color); | |
| } | |
| .gallery-content { | |
| padding: 1.5rem; | |
| overflow-y: auto; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .gallery-item { | |
| border-radius: var(--radius-md); | |
| overflow: hidden; | |
| box-shadow: var(--shadow-md); | |
| background-color: var(--background-color); | |
| transition: all 0.2s ease; | |
| cursor: pointer; | |
| aspect-ratio: 16/9; | |
| position: relative; | |
| } | |
| .gallery-item:hover { | |
| transform: translateY(-0.5rem); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .gallery-item-preview { | |
| width: 100%; | |
| height: 75%; | |
| object-fit: cover; | |
| background-color: var(--primary-color); | |
| opacity: 0.8; | |
| } | |
| .gallery-item-info { | |
| padding: 0.75rem; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .gallery-item-title { | |
| font-weight: 600; | |
| font-size: 1rem; | |
| color: var(--text-primary); | |
| margin-bottom: 0.25rem; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 1; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| } | |
| .gallery-item-date { | |
| font-size: 0.8rem; | |
| color: var(--text-secondary); | |
| } | |
| /* Dark Mode Adjustments for existing components */ | |
| [data-theme="dark"] .app-header { | |
| background-color: var(--surface-color); | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| [data-theme="dark"] .logo-icon { | |
| color: var(--primary-color); | |
| } | |
| [data-theme="dark"] .transcription-content, | |
| [data-theme="dark"] .topics-content { | |
| background-color: #2d3748; | |
| border: 1px solid var(--border-color); | |
| } | |
| [data-theme="dark"] .progress-container { | |
| background-color: #2d3748; | |
| } | |
| [data-theme="dark"] .topic { | |
| background-color: #2d3748; | |
| border-left: 4px solid var(--primary-color); | |
| } | |
| [data-theme="dark"] jmnode { | |
| background-color: #2d3748 ; | |
| color: var(--text-primary) ; | |
| } | |
| [data-theme="dark"] jmnode.root { | |
| background-color: var(--primary-color) ; | |
| color: white ; | |
| } | |
| [data-theme="dark"] jmexpander { | |
| background-color: #4a5568 ; | |
| } | |
| [data-theme="dark"] .node-context-menu { | |
| background-color: #2d3748; | |
| border: 1px solid var(--border-color); | |
| } | |
| [data-theme="dark"] .context-menu-separator { | |
| background-color: var(--border-color); | |
| } | |
| [data-theme="dark"] .context-menu-item:hover { | |
| background-color: #4a5568; | |
| } | |
| /* 1. Elevated Card Design System */ | |
| .card { | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-lg); | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), | |
| 0 8px 10px -6px rgba(0, 0, 0, 0.02); | |
| overflow: hidden; | |
| border: 1px solid rgba(0, 0, 0, 0.04); | |
| transition: all 0.3s ease; | |
| } | |
| .card:hover { | |
| box-shadow: 0 15px 30px -5px rgba(0, 0, 0, 0.07), | |
| 0 10px 15px -3px rgba(0, 0, 0, 0.04); | |
| transform: translateY(-2px); | |
| } | |
| .card-header { | |
| padding: 1.25rem 1.5rem; | |
| border-bottom: 1px solid var(--border-color); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .card-title { | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| font-size: 1.2rem; | |
| margin: 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| color: var(--text-primary); | |
| } | |
| .card-title i { | |
| color: var(--primary-color); | |
| font-size: 1.3rem; | |
| } | |
| .card-body { | |
| padding: 1.5rem; | |
| } | |
| .card-footer { | |
| padding: 1.25rem 1.5rem; | |
| border-top: 1px solid var(--border-color); | |
| background-color: rgba(0, 0, 0, 0.01); | |
| } | |
| /* 2. Micro-Interactions & Transitions */ | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes pulse { | |
| 0% { transform: scale(1); } | |
| 50% { transform: scale(1.05); } | |
| 100% { transform: scale(1); } | |
| } | |
| @keyframes shimmer { | |
| 0% { background-position: -1000px 0; } | |
| 100% { background-position: 1000px 0; } | |
| } | |
| .animate-fade-in { | |
| animation: fadeIn 0.4s ease forwards; | |
| } | |
| .animate-pulse { | |
| animation: pulse 2s infinite ease-in-out; | |
| } | |
| /* 4. Custom Video Player Controls */ | |
| .video-preview { | |
| margin: 2rem 0; | |
| border-radius: var(--radius-md); | |
| overflow: hidden; | |
| background-color: #000; | |
| position: relative; | |
| box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.15), | |
| 0 10px 10px -5px rgba(0, 0, 0, 0.05); | |
| } | |
| .video-preview::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: 90px; | |
| background: linear-gradient(to top, rgba(0,0,0,0.5) 0%, transparent 100%); | |
| pointer-events: none; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .video-preview:hover::after { | |
| opacity: 1; | |
| } | |
| .video-controls { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 100%; | |
| padding: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| z-index: 10; | |
| opacity: 0; | |
| transform: translateY(10px); | |
| transition: all 0.3s ease; | |
| } | |
| .video-preview:hover .video-controls { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| .video-progress { | |
| flex: 1; | |
| height: 4px; | |
| background-color: rgba(255, 255, 255, 0.2); | |
| border-radius: 2px; | |
| overflow: hidden; | |
| cursor: pointer; | |
| position: relative; | |
| } | |
| .video-progress-bar { | |
| height: 100%; | |
| width: 0; | |
| background-color: var(--primary-color); | |
| border-radius: 2px; | |
| position: relative; | |
| } | |
| .video-progress-handle { | |
| position: absolute; | |
| right: -6px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| width: 12px; | |
| height: 12px; | |
| border-radius: 50%; | |
| background-color: white; | |
| box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); | |
| opacity: 0; | |
| transition: opacity 0.2s ease; | |
| } | |
| .video-progress:hover .video-progress-handle { | |
| opacity: 1; | |
| } | |
| .video-control-button { | |
| background: transparent; | |
| border: none; | |
| color: white; | |
| cursor: pointer; | |
| width: 36px; | |
| height: 36px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 50%; | |
| transition: all 0.2s ease; | |
| } | |
| .video-control-button:hover { | |
| background-color: rgba(255, 255, 255, 0.2); | |
| } | |
| .video-time { | |
| color: white; | |
| font-family: var(--font-mono); | |
| font-size: 0.85rem; | |
| min-width: 50px; | |
| text-align: center; | |
| } | |
| .video-preview.playing .video-play-icon { | |
| display: none; | |
| } | |
| .video-preview:not(.playing) .video-pause-icon { | |
| display: none; | |
| } | |
| /* 5. Streamlined Action Buttons */ | |
| .action-button { | |
| padding: 0.9rem 1.8rem; | |
| border: none; | |
| border-radius: var(--radius-md); | |
| font-size: 1rem; | |
| font-weight: 600; | |
| font-family: var(--font-heading); | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); | |
| position: relative; | |
| overflow: hidden; | |
| box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), | |
| 0 2px 4px -1px rgba(0, 0, 0, 0.06); | |
| } | |
| .action-button::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,0.3) 50%, rgba(255,255,255,0) 70%); | |
| transform: translateX(-100%); | |
| transition: all 0.6s ease; | |
| } | |
| .action-button:hover::before { | |
| transform: translateX(100%); | |
| } | |
| .action-button i { | |
| font-size: 1.1rem; | |
| transition: transform 0.3s ease; | |
| } | |
| .action-button:hover i { | |
| transform: scale(1.2); | |
| } | |
| .action-button:active { | |
| transform: translateY(2px); | |
| box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); | |
| } | |
| .action-button.primary { | |
| background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); | |
| color: white; | |
| } | |
| .action-button.primary:hover { | |
| background: linear-gradient(135deg, var(--primary-dark), var(--primary-color)); | |
| box-shadow: 0 10px 15px -3px rgba(52, 152, 219, 0.3), | |
| 0 4px 6px -2px rgba(52, 152, 219, 0.15); | |
| } | |
| .action-button.secondary { | |
| background: linear-gradient(135deg, var(--secondary-color), var(--secondary-dark)); | |
| color: white; | |
| } | |
| .action-button.secondary:hover { | |
| background: linear-gradient(135deg, var(--secondary-dark), var(--secondary-color)); | |
| box-shadow: 0 10px 15px -3px rgba(46, 204, 113, 0.3), | |
| 0 4px 6px -2px rgba(46, 204, 113, 0.15); | |
| } | |
| .action-button.disabled { | |
| opacity: 0.7; | |
| cursor: not-allowed; | |
| background: #95a5a6; | |
| } | |
| .action-button.disabled::before { | |
| display: none; | |
| } | |
| .action-button.processing { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .action-button.processing::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, | |
| transparent 25%, | |
| rgba(255, 255, 255, 0.3) 50%, | |
| transparent 75%); | |
| background-size: 200% 100%; | |
| animation: shimmer 1.5s infinite linear; | |
| } | |
| /* 6. Content Container Improvements */ | |
| .content-container { | |
| background-color: var(--surface-color); | |
| border-radius: var(--radius-lg); | |
| overflow: hidden; | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), | |
| 0 8px 10px -6px rgba(0, 0, 0, 0.02); | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| transition: all 0.3s ease; | |
| border: 1px solid var(--border-color); | |
| } | |
| .content-header { | |
| padding: 1.25rem 1.5rem; | |
| border-bottom: 1px solid var(--border-color); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .content-title { | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| font-size: 1.2rem; | |
| margin: 0; | |
| color: var(--text-primary); | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .content-title i { | |
| color: var(--primary-color); | |
| font-size: 1.3rem; | |
| } | |
| .content-body { | |
| flex: 1; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .content-scroll { | |
| height: 100%; | |
| overflow-y: auto; | |
| padding: 1.5rem; | |
| scrollbar-width: thin; | |
| scrollbar-color: var(--border-color) transparent; | |
| } | |
| .content-scroll::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .content-scroll::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .content-scroll::-webkit-scrollbar-thumb { | |
| background-color: var(--border-color); | |
| border-radius: 20px; | |
| } | |
| .empty-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 3rem 1.5rem; | |
| color: var(--text-secondary); | |
| text-align: center; | |
| } | |
| .empty-state i { | |
| font-size: 3rem; | |
| margin-bottom: 1rem; | |
| opacity: 0.5; | |
| } | |
| .empty-state-title { | |
| font-weight: 600; | |
| margin-bottom: 0.5rem; | |
| color: var(--text-primary); | |
| } | |
| .empty-state-description { | |
| max-width: 300px; | |
| margin: 0 auto; | |
| font-size: 0.95rem; | |
| } | |
| /* 7. Status/Progress Visualization */ | |
| .status-progress { | |
| margin-top: 1.5rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| } | |
| .status-text { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| color: var(--text-secondary); | |
| font-size: 0.95rem; | |
| } | |
| .status-text i { | |
| color: var(--primary-color); | |
| } | |
| .progress-container { | |
| background-color: var(--background-color); | |
| padding: 1.5rem; | |
| border-radius: var(--radius-md); | |
| overflow: hidden; | |
| } | |
| .progress-steps { | |
| display: flex; | |
| margin-bottom: 1rem; | |
| position: relative; | |
| } | |
| .progress-step { | |
| flex: 1; | |
| text-align: center; | |
| position: relative; | |
| padding-bottom: 1.5rem; | |
| } | |
| .progress-step-indicator { | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| background-color: var(--surface-color); | |
| border: 2px solid var(--border-color); | |
| margin: 0 auto 0.5rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| z-index: 2; | |
| transition: all 0.3s ease; | |
| } | |
| .progress-step-line { | |
| position: absolute; | |
| top: 12px; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background-color: var(--border-color); | |
| z-index: 1; | |
| } | |
| .progress-step-icon { | |
| color: var(--text-secondary); | |
| font-size: 0.8rem; | |
| opacity: 0; | |
| transition: all 0.3s ease; | |
| } | |
| .progress-step-label { | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| transition: all 0.3s ease; | |
| } | |
| .progress-step.active .progress-step-indicator { | |
| background-color: var(--primary-color); | |
| border-color: var(--primary-color); | |
| transform: scale(1.1); | |
| box-shadow: 0 0 0 4px rgba(52, 152, 219, 0.2); | |
| } | |
| .progress-step.active .progress-step-icon { | |
| opacity: 1; | |
| color: white; | |
| } | |
| .progress-step.active .progress-step-label { | |
| color: var(--primary-color); | |
| font-weight: 600; | |
| } | |
| .progress-step.completed .progress-step-indicator { | |
| background-color: var(--primary-color); | |
| border-color: var(--primary-color); | |
| } | |
| .progress-step.completed .progress-step-icon { | |
| opacity: 1; | |
| color: white; | |
| } | |
| .progress-step.completed + .progress-step .progress-step-line, | |
| .progress-step.active + .progress-step .progress-step-line { | |
| background: linear-gradient(to right, var(--primary-color) 0%, var(--border-color) 100%); | |
| } | |
| .progress-step.completed .progress-step-line { | |
| background-color: var(--primary-color); | |
| } | |
| .progress-bar { | |
| height: 6px; | |
| background-color: var(--border-color); | |
| border-radius: 3px; | |
| overflow: hidden; | |
| margin: 0.5rem 0; | |
| } | |
| .progress-bar-fill { | |
| height: 100%; | |
| background: linear-gradient(90deg, var(--primary-color), var(--primary-dark)); | |
| border-radius: 3px; | |
| transition: width 0.3s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .progress-bar-fill::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: linear-gradient( | |
| 90deg, | |
| rgba(255, 255, 255, 0) 0%, | |
| rgba(255, 255, 255, 0.4) 50%, | |
| rgba(255, 255, 255, 0) 100% | |
| ); | |
| animation: shimmer 2s infinite linear; | |
| transform: translateX(-100%); | |
| } | |
| /* Dark mode adjustments */ | |
| [data-theme="dark"] .content-container { | |
| border-color: var(--border-color); | |
| } | |
| [data-theme="dark"] .progress-container { | |
| background-color: #2d3748; | |
| } | |
| [data-theme="dark"] .progress-step-indicator { | |
| background-color: #4a5568; | |
| border-color: #4a5568; | |
| } | |
| [data-theme="dark"] .progress-step-line { | |
| background-color: #4a5568; | |
| } | |
| [data-theme="dark"] .progress-bar { | |
| background-color: #4a5568; | |
| } | |
| .transcription-content { | |
| width: 100%; | |
| line-height: 1.6; | |
| } | |
| .transcription-content p { | |
| margin-bottom: 8px; | |
| padding: 8px; | |
| border-radius: var(--radius-sm); | |
| transition: background-color 0.2s ease; | |
| } | |
| .transcription-content p:hover { | |
| background-color: rgba(52, 152, 219, 0.1); | |
| } |