Spaces:
Sleeping
Sleeping
| /* | |
| * Podcast Insights UI - Custom Styles | |
| * | |
| * Design: Modern, minimalistic interface with teal color palette | |
| * Typography: Poppins font family | |
| * Supports both light and dark themes automatically | |
| */ | |
| /* ============================================================ | |
| FONTS & BASE | |
| ============================================================ */ | |
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); | |
| * { | |
| font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif ; | |
| } | |
| /* ============================================================ | |
| CSS VARIABLES - Light & Dark Theme Support | |
| ============================================================ */ | |
| :root { | |
| /* Primary teal colors */ | |
| --teal-primary: #0091ad; | |
| --teal-hover: #007a94; | |
| --teal-light: #e0f7fa; | |
| --teal-soft: #f0fdfa; | |
| /* Light theme colors */ | |
| --text-primary: #0f172a; | |
| --text-secondary: #64748b; | |
| --text-muted: #94a3b8; | |
| --bg-surface: #f8fafc; | |
| --bg-input: #f8fafc; | |
| --border-color: #e2e8f0; | |
| --border-light: #f1f5f9; | |
| /* User bubble */ | |
| --user-bubble-bg: #e0f7fa; | |
| --user-bubble-border: #b2ebf2; | |
| /* Blockquote */ | |
| --quote-bg: #f0fdfa; | |
| /* Example buttons */ | |
| --example-bg: #f8fafc; | |
| --example-text: #475569; | |
| /* Feedback */ | |
| --feedback-bg: #f8fafc; | |
| /* New button */ | |
| --new-btn-bg: #f0fdfa; | |
| --new-btn-text: #0d9488; | |
| --new-btn-border: #99f6e4; | |
| --new-btn-hover-bg: #ccfbf1; | |
| --new-btn-hover-border: #5eead4; | |
| } | |
| /* Dark theme overrides */ | |
| @media (prefers-color-scheme: dark) { | |
| :root { | |
| --teal-primary: #22d3ee; | |
| --teal-hover: #67e8f9; | |
| --teal-light: #164e63; | |
| --teal-soft: #0f3d4c; | |
| --text-primary: #f1f5f9; | |
| --text-secondary: #94a3b8; | |
| --text-muted: #64748b; | |
| --bg-surface: #1e293b; | |
| --bg-input: #1e293b; | |
| --border-color: #334155; | |
| --border-light: #1e293b; | |
| --user-bubble-bg: #164e63; | |
| --user-bubble-border: #0e7490; | |
| --quote-bg: #0f3d4c; | |
| --example-bg: #1e293b; | |
| --example-text: #cbd5e1; | |
| --feedback-bg: #1e293b; | |
| --new-btn-bg: #0f3d4c; | |
| --new-btn-text: #22d3ee; | |
| --new-btn-border: #0e7490; | |
| --new-btn-hover-bg: #164e63; | |
| --new-btn-hover-border: #22d3ee; | |
| } | |
| } | |
| /* Gradio dark mode class support */ | |
| .dark { | |
| --teal-primary: #22d3ee; | |
| --teal-hover: #67e8f9; | |
| --teal-light: #164e63; | |
| --teal-soft: #0f3d4c; | |
| --text-primary: #f1f5f9; | |
| --text-secondary: #94a3b8; | |
| --text-muted: #64748b; | |
| --bg-surface: #1e293b; | |
| --bg-input: #1e293b; | |
| --border-color: #334155; | |
| --border-light: #1e293b; | |
| --user-bubble-bg: #164e63; | |
| --user-bubble-border: #0e7490; | |
| --quote-bg: #0f3d4c; | |
| --example-bg: #1e293b; | |
| --example-text: #cbd5e1; | |
| --feedback-bg: #1e293b; | |
| --new-btn-bg: #0f3d4c; | |
| --new-btn-text: #22d3ee; | |
| --new-btn-border: #0e7490; | |
| --new-btn-hover-bg: #164e63; | |
| --new-btn-hover-border: #22d3ee; | |
| } | |
| /* ============================================================ | |
| LAYOUT & CONTAINER | |
| ============================================================ */ | |
| .gradio-container { | |
| max-width: 900px ; | |
| margin: auto ; | |
| padding: 8px ; | |
| } | |
| .gradio-container .wrap { | |
| gap: 2px ; | |
| } | |
| .column { | |
| gap: 4px ; | |
| } | |
| .block { | |
| margin: 0 ; | |
| } | |
| .block.padded { | |
| padding: 0 ; | |
| } | |
| .gr-group, .gradio-group { | |
| padding: 0 ; | |
| background: transparent ; | |
| border: none ; | |
| gap: 2px ; | |
| } | |
| /* Hide Gradio default footer */ | |
| footer.svelte-zxu34v { | |
| display: none ; | |
| } | |
| /* ============================================================ | |
| COLOR THEME - Override Gradio orange with teal | |
| ============================================================ */ | |
| .orange, [class*="orange"], [style*="orange"] { | |
| background: var(--teal-primary) ; | |
| border-color: var(--teal-primary) ; | |
| } | |
| [style*="rgb(249"] { | |
| border-color: var(--teal-primary) ; | |
| } | |
| .progress-bar, .progress-level { | |
| background: var(--teal-primary) ; | |
| } | |
| *:focus { | |
| outline-color: var(--teal-primary) ; | |
| } | |
| /* ============================================================ | |
| HEADER | |
| ============================================================ */ | |
| .header-section { | |
| margin-bottom: 6px ; | |
| text-align: center ; | |
| } | |
| .header-content { | |
| text-align: center; | |
| } | |
| .header-section h1, | |
| .header-content h1 { | |
| font-weight: 700 ; | |
| font-size: 1.6rem ; | |
| margin-bottom: 2px ; | |
| color: var(--teal-primary) ; | |
| } | |
| .header-section p, | |
| .header-content p { | |
| color: var(--text-secondary) ; | |
| font-size: 0.85rem ; | |
| margin: 0 ; | |
| } | |
| /* ============================================================ | |
| CHAT CONTAINER | |
| ============================================================ */ | |
| #chatbot { | |
| border-radius: 12px ; | |
| border: 1px solid var(--border-color) ; | |
| box-shadow: 0 2px 8px rgba(0,145,173,0.06) ; | |
| min-height: 240px ; | |
| } | |
| .placeholder-content { | |
| height: 190px ; | |
| } | |
| /* Chat message text size - match input textarea */ | |
| #chatbot .message, | |
| #chatbot .message-content, | |
| #chatbot .bot, | |
| #chatbot .user, | |
| #chatbot .md, | |
| #chatbot p, | |
| #chatbot li, | |
| #chatbot blockquote, | |
| #chatbot blockquote p { | |
| font-size: 0.8rem ; | |
| line-height: 1.5 ; | |
| } | |
| /* User message bubbles */ | |
| #chatbot .user.message, | |
| .svelte-1nr59td.user { | |
| background: var(--user-bubble-bg) ; | |
| color: var(--text-primary) ; | |
| border: 1px solid var(--user-bubble-border) ; | |
| } | |
| /* Links in chat */ | |
| #chatbot a { | |
| color: var(--teal-primary) ; | |
| font-weight: 600 ; | |
| text-decoration: underline ; | |
| text-underline-offset: 2px ; | |
| } | |
| #chatbot a:hover { | |
| color: var(--teal-hover) ; | |
| } | |
| /* Blockquotes in chat */ | |
| #chatbot blockquote { | |
| border-left: 3px solid var(--teal-primary) ; | |
| background: var(--quote-bg) ; | |
| padding: 10px 14px ; | |
| margin: 8px 0 ; | |
| border-radius: 0 8px 8px 0 ; | |
| font-style: normal ; | |
| } | |
| /* ============================================================ | |
| INPUT AREA | |
| ============================================================ */ | |
| .input-row { | |
| margin-top: 4px ; | |
| gap: 8px ; | |
| align-items: center ; | |
| } | |
| .input-row .block { | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .input-row label.show_textbox_border { | |
| border: none ; | |
| box-shadow: none ; | |
| background: transparent ; | |
| } | |
| .input-row input, | |
| .input-row textarea { | |
| border-radius: 10px ; | |
| border: 1px solid var(--border-color) ; | |
| padding: 12px 16px ; | |
| font-size: 0.85rem ; | |
| min-height: 44px ; | |
| background: var(--bg-input) ; | |
| max-width: 700px ; | |
| color: var(--text-primary) ; | |
| } | |
| .input-row input:focus, | |
| .input-row textarea:focus { | |
| border-color: var(--teal-primary) ; | |
| box-shadow: none ; | |
| } | |
| .input-row input::placeholder, | |
| .input-row textarea::placeholder { | |
| color: var(--text-muted) ; | |
| } | |
| /* ============================================================ | |
| BUTTONS - Send & New | |
| ============================================================ */ | |
| .buttons-col { | |
| display: flex ; | |
| flex-direction: column ; | |
| gap: 4px ; | |
| min-width: 110px ; | |
| justify-content: center ; | |
| align-self: center ; | |
| } | |
| .buttons-col button { | |
| width: 100% ; | |
| min-width: 110px ; | |
| border-radius: 8px ; | |
| font-weight: 600 ; | |
| padding: 6px 16px ; | |
| font-size: 0.75rem ; | |
| height: 34px ; | |
| } | |
| /* Primary button (Send) */ | |
| button.primary { | |
| background: linear-gradient(135deg, #0091ad 0%, #00a8c6 100%) ; | |
| border: none ; | |
| border-radius: 10px ; | |
| font-weight: 600 ; | |
| color: white ; | |
| } | |
| button.primary:hover { | |
| background: linear-gradient(135deg, #007a94 0%, #0091ad 100%) ; | |
| } | |
| /* Dark mode primary button - brighter */ | |
| @media (prefers-color-scheme: dark) { | |
| button.primary { | |
| background: linear-gradient(135deg, #0891b2 0%, #22d3ee 100%) ; | |
| } | |
| button.primary:hover { | |
| background: linear-gradient(135deg, #0e7490 0%, #06b6d4 100%) ; | |
| } | |
| } | |
| .dark button.primary { | |
| background: linear-gradient(135deg, #0891b2 0%, #22d3ee 100%) ; | |
| } | |
| .dark button.primary:hover { | |
| background: linear-gradient(135deg, #0e7490 0%, #06b6d4 100%) ; | |
| } | |
| /* New button */ | |
| .new-btn { | |
| gap: 0 ; | |
| } | |
| .new-btn button { | |
| background: var(--new-btn-bg) ; | |
| color: var(--new-btn-text) ; | |
| border: 1px solid var(--new-btn-border) ; | |
| height: 30px ; | |
| font-size: 0.7rem ; | |
| } | |
| .new-btn button:hover { | |
| background: var(--new-btn-hover-bg) ; | |
| border-color: var(--new-btn-hover-border) ; | |
| } | |
| /* ============================================================ | |
| MESSAGE COUNTER & STATUS | |
| ============================================================ */ | |
| .message-counter { | |
| text-align: center ; | |
| margin: 4px 0 ; | |
| padding: 0 ; | |
| } | |
| .message-counter p { | |
| display: inline-block ; | |
| background: transparent ; | |
| color: var(--text-muted) ; | |
| font-size: 0.7rem ; | |
| font-weight: 500 ; | |
| padding: 2px 0 ; | |
| margin: 0 ; | |
| } | |
| .limit-msg { | |
| text-align: center ; | |
| margin: 4px 0 ; | |
| } | |
| .limit-msg p { | |
| color: var(--text-secondary) ; | |
| font-size: 0.75rem ; | |
| font-weight: 500 ; | |
| margin: 0 ; | |
| } | |
| .frozen-message { | |
| text-align: center ; | |
| padding: 6px ; | |
| margin-top: 4px ; | |
| } | |
| .frozen-message p { | |
| color: var(--teal-primary) ; | |
| font-size: 0.8rem ; | |
| font-weight: 500 ; | |
| margin: 0 ; | |
| } | |
| /* ============================================================ | |
| EXAMPLE BUTTONS | |
| ============================================================ */ | |
| .examples-section { | |
| margin-top: 8px ; | |
| padding: 0 ; | |
| gap: 8px ; | |
| align-items: stretch ; | |
| display: flex ; | |
| flex-direction: row ; | |
| flex-wrap: nowrap ; | |
| } | |
| .examples-section > .block { | |
| flex: 0 0 auto ; | |
| min-width: 0 ; | |
| width: auto ; | |
| } | |
| .examples-section > .block:first-child { | |
| flex: 0 0 auto ; | |
| max-width: fit-content ; | |
| align-self: center ; | |
| } | |
| .examples-section p { | |
| font-size: 0.7rem ; | |
| color: var(--text-muted) ; | |
| font-weight: 500 ; | |
| margin: 0 ; | |
| white-space: nowrap ; | |
| flex-shrink: 0 ; | |
| } | |
| .example-btn { | |
| font-size: 0.68rem ; | |
| font-weight: 500 ; | |
| background: var(--example-bg) ; | |
| border: 1px solid var(--border-color) ; | |
| border-radius: 8px ; | |
| padding: 8px 12px ; | |
| color: var(--example-text) ; | |
| transition: all 0.15s ease ; | |
| white-space: normal ; | |
| text-align: center ; | |
| line-height: 1.3 ; | |
| flex: 1 1 0 ; | |
| min-width: 0 ; | |
| height: auto ; | |
| min-height: 50px ; | |
| display: flex ; | |
| align-items: center ; | |
| justify-content: center ; | |
| } | |
| .example-btn:hover { | |
| background: var(--teal-soft) ; | |
| border-color: var(--teal-primary) ; | |
| color: var(--teal-primary) ; | |
| } | |
| /* ============================================================ | |
| FEEDBACK SECTION | |
| ============================================================ */ | |
| .feedback-section { | |
| margin-top: 8px ; | |
| padding: 8px 12px ; | |
| background: var(--feedback-bg) ; | |
| border-radius: 8px ; | |
| border: 1px solid var(--border-color) ; | |
| display: flex ; | |
| align-items: center ; | |
| gap: 10px ; | |
| } | |
| .feedback-section p { | |
| font-size: 0.75rem ; | |
| font-weight: 500 ; | |
| color: var(--text-secondary) ; | |
| margin: 0 ; | |
| white-space: nowrap ; | |
| } | |
| .feedback-section button { | |
| font-size: 0.7rem ; | |
| font-weight: 500 ; | |
| padding: 4px 12px ; | |
| border-radius: 5px ; | |
| background: var(--bg-surface) ; | |
| border: 1px solid var(--border-color) ; | |
| color: var(--text-primary) ; | |
| } | |
| .feedback-section button:hover { | |
| background: var(--teal-soft) ; | |
| border-color: var(--teal-primary) ; | |
| } | |
| .feedback-input { | |
| margin-top: 6px ; | |
| } | |
| .feedback-input textarea { | |
| border-radius: 6px ; | |
| font-size: 0.8rem ; | |
| border: 1px solid var(--border-color) ; | |
| background: var(--bg-input) ; | |
| color: var(--text-primary) ; | |
| } | |
| /* ============================================================ | |
| LOADING ANIMATION | |
| ============================================================ */ | |
| @keyframes shimmer { | |
| 0% { background-position: -200% center; } | |
| 100% { background-position: 200% center; } | |
| } | |
| @keyframes fadeInOut { | |
| 0%, 100% { opacity: 0.7; } | |
| 50% { opacity: 1; } | |
| } | |
| .loading-msg, | |
| .loading-msg * { | |
| border: none ; | |
| box-shadow: none ; | |
| outline: none ; | |
| } | |
| .loading-msg { | |
| text-align: center ; | |
| padding: 12px 20px ; | |
| background: linear-gradient(90deg, var(--teal-soft) 0%, var(--teal-light) 25%, var(--teal-soft) 50%, var(--teal-light) 75%, var(--teal-soft) 100%) ; | |
| background-size: 200% 100% ; | |
| animation: shimmer 2s ease-in-out infinite, fadeInOut 2s ease-in-out infinite ; | |
| border-radius: 10px ; | |
| } | |
| .loading-msg p { | |
| color: var(--teal-primary) ; | |
| font-size: 0.75rem ; | |
| font-weight: 500 ; | |
| margin: 0 ; | |
| } | |
| .block.loading-msg { | |
| border-width: 0 ; | |
| } | |
| /* ============================================================ | |
| FOOTER | |
| ============================================================ */ | |
| .footer { | |
| text-align: center ; | |
| margin-top: 12px ; | |
| padding: 8px ; | |
| } | |
| .footer p { | |
| color: var(--text-muted) ; | |
| font-size: 0.65rem ; | |
| font-weight: 400 ; | |
| margin: 0 ; | |
| } | |
| /* ============================================================ | |
| MOBILE RESPONSIVE | |
| ============================================================ */ | |
| @media (max-width: 768px) { | |
| /* Container padding for mobile */ | |
| .gradio-container { | |
| padding: 12px ; | |
| } | |
| /* Input textarea - smaller placeholder text, full width */ | |
| .input-row input, | |
| .input-row textarea { | |
| font-size: 0.8rem ; | |
| padding: 10px 12px ; | |
| max-width: 100% ; | |
| } | |
| /* Feedback section - wrap on mobile */ | |
| .feedback-section { | |
| flex-wrap: wrap ; | |
| justify-content: center ; | |
| padding: 10px ; | |
| gap: 8px ; | |
| } | |
| .feedback-section p { | |
| flex: 0 0 100% ; | |
| text-align: center ; | |
| margin-bottom: 4px ; | |
| } | |
| .feedback-section button { | |
| flex: 1 ; | |
| min-width: 80px ; | |
| } | |
| /* Example buttons - stack on mobile */ | |
| .examples-section { | |
| flex-wrap: wrap ; | |
| justify-content: center ; | |
| } | |
| .examples-section > .block:first-child { | |
| flex: 0 0 100% ; | |
| text-align: center ; | |
| } | |
| .example-btn { | |
| flex: 1 1 100% ; | |
| min-width: 100% ; | |
| max-width: 100% ; | |
| } | |
| /* Header smaller on mobile */ | |
| .header-section h1, | |
| .header-content h1 { | |
| font-size: 1.3rem ; | |
| } | |
| .header-section p, | |
| .header-content p { | |
| font-size: 0.75rem ; | |
| } | |
| /* Buttons column - narrower on mobile */ | |
| .buttons-col { | |
| min-width: 90px ; | |
| } | |
| .buttons-col button { | |
| min-width: 90px ; | |
| font-size: 0.7rem ; | |
| padding: 6px 10px ; | |
| } | |
| } | |