Download static/style.css from VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM: direct link, hf CLI and curl.
- Browser
- Download file 25.5 kB
-
https://huggingface.co/spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/resolve/main/static/style.css
- Command line
-
hf download hf://spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/static/style.css
-
curl -L -o style.css https://huggingface.co/spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/resolve/main/static/style.css
25.5 kB
| /* ========================================================== | |
| Google Fonts | |
| ========================================================== */ | |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap'); | |
| /* ========================================================== | |
| RAG Learning System — Design Tokens | |
| ========================================================== */ | |
| :root, | |
| #gradio-app { | |
| --font-sans: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif; | |
| --c-primary: #4361ee; | |
| --c-primary-dk: #2d4bde; | |
| --c-primary-lt: #667af9; | |
| --c-primary-pale: #e8ecfd; | |
| --c-accent: #7c3aed; | |
| --c-accent-pale: #f0ebfd; | |
| --c-bg: #edf0fb; | |
| --c-bg-2: #e1e8f7; | |
| --c-surface: #ffffff; | |
| --c-surface-2: #f4f6fd; | |
| --c-surface-tint: rgba(255, 255, 255, 0.80); | |
| --c-text: #18213f; | |
| --c-text-2: #384268; | |
| --c-text-muted: #697aaa; | |
| --c-border: #c4ceee; | |
| --c-border-strong: #a3b2e3; | |
| --c-note-bg: #fffbea; | |
| --c-note-bd: #f5c430; | |
| --c-note-txt: #7a4f00; | |
| --c-status-bg: #f2f5ff; | |
| --r-lg: 18px; | |
| --r-md: 12px; | |
| --r-sm: 8px; | |
| --r-xs: 6px; | |
| --r-pill: 999px; | |
| --shadow-card: 0 4px 20px rgba(38, 56, 152, .10), 0 1px 6px rgba(38, 56, 152, .05); | |
| --shadow-panel: 0 8px 32px rgba(38, 56, 152, .09), 0 2px 10px rgba(38, 56, 152, .04); | |
| --shadow-btn: 0 4px 18px rgba(67, 97, 238, .38), 0 1px 4px rgba(67, 97, 238, .18); | |
| --shadow-foc: 0 0 0 3px rgba(67, 97, 238, .22); | |
| --app-max-width: 1440px; | |
| } | |
| /* ========================================================== | |
| Gradio variable bridge | |
| ========================================================== */ | |
| #gradio-app { | |
| --background-fill-primary: var(--c-bg); | |
| --background-fill-secondary: var(--c-bg-2); | |
| --block-background-fill: transparent; | |
| --block-border-color: transparent; | |
| --block-border-width: 0px; | |
| --input-background-fill: var(--c-surface); | |
| } | |
| /* ========================================================== | |
| Page shell | |
| ========================================================== */ | |
| html, | |
| body { | |
| margin: 0; | |
| padding: 0; | |
| font-family: var(--font-sans) ; | |
| background: linear-gradient(145deg, #dde6ff 0%, #edf0fb 45%, #ede8ff 100%) fixed ; | |
| color: var(--c-text); | |
| min-height: 100vh; | |
| } | |
| #gradio-app, | |
| .gradio-container, | |
| .main, | |
| .contain, | |
| .html-container { | |
| background: transparent ; | |
| } | |
| .gradio-container { | |
| max-width: var(--app-max-width) ; | |
| margin: 0 auto ; | |
| padding: 0px 18px 10px ; | |
| } | |
| /* ========================================================== | |
| Header | |
| ========================================================== */ | |
| .header-row { | |
| gap: 14px ; | |
| padding: 0 0 4px ; | |
| align-items: center ; | |
| background: transparent ; | |
| overflow: visible ; | |
| } | |
| .header-row img { | |
| height: 96px; | |
| width: auto; | |
| object-fit: contain; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .header-row .header-logo, | |
| .header-row .header-text, | |
| .header-row .header-logo .html-container, | |
| .header-row .header-text .html-container { | |
| overflow: visible ; | |
| } | |
| .header-row .header-text { | |
| margin-left: -65px ; | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .header-meta { | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| min-width: 0; | |
| flex: 1 1 auto; | |
| } | |
| .header-title { | |
| margin: 0; | |
| font-size: 1.85rem; | |
| line-height: 1.15; | |
| font-weight: 900; | |
| letter-spacing: -0.03em; | |
| color: #1e3a8a; | |
| filter: drop-shadow(0 1px 0 rgba(255, 255, 255, 0.65)) drop-shadow(0 2px 8px rgba(24, 33, 63, 0.12)); | |
| } | |
| .header-sub { | |
| margin: 4px 0 0; | |
| font-size: 1.0rem; | |
| color: var(--c-text-muted); | |
| font-weight: 500; | |
| } | |
| /* Tight vertical rhythm: pull toward header + toward content below (Gradio block gap) */ | |
| .site-info-note { | |
| margin-top: -12px ; | |
| margin-bottom: -2px ; | |
| } | |
| /* ========================================================== | |
| Info card (warning note) | |
| ========================================================== */ | |
| .info-card { | |
| background: var(--c-note-bg) ; | |
| border: 1px solid var(--c-note-bd) ; | |
| border-left: 4px solid var(--c-note-bd) ; | |
| border-radius: var(--r-md); | |
| padding: 8px 12px; | |
| margin: 0 0 8px; | |
| } | |
| .site-info-note .info-card { | |
| margin-bottom: 0; | |
| } | |
| .info-card-title, | |
| .info-card-list, | |
| .info-card-list li { | |
| color: var(--c-note-txt) ; | |
| } | |
| .info-card-title { | |
| margin-bottom: 4px; | |
| font-size: 0.93rem; | |
| font-weight: 700; | |
| } | |
| .info-card-list { | |
| margin: 0; | |
| padding-left: 18px; | |
| font-size: 0.88rem; | |
| line-height: 1.55; | |
| } | |
| .info-card-list li+li { | |
| margin-top: 3px; | |
| } | |
| /* ========================================================== | |
| 2-Column main layout | |
| ========================================================== */ | |
| .main-layout { | |
| display: flex ; | |
| flex-direction: row ; | |
| flex-wrap: wrap ; | |
| gap: 12px ; | |
| align-items: flex-start ; | |
| background: transparent ; | |
| margin-top: -6px ; | |
| } | |
| .control-stack { | |
| display: flex ; | |
| flex-direction: column ; | |
| gap: 10px ; | |
| flex: 4 1 320px ; | |
| min-width: 300px ; | |
| background: var(--c-surface-tint) ; | |
| backdrop-filter: blur(14px) saturate(160%); | |
| -webkit-backdrop-filter: blur(14px) saturate(160%); | |
| border: 1.5px solid rgba(255, 255, 255, 0.65) ; | |
| border-radius: var(--r-lg) ; | |
| box-shadow: var(--shadow-panel) ; | |
| padding: 14px 16px ; | |
| } | |
| .preview-col { | |
| display: flex ; | |
| flex-direction: column ; | |
| gap: 10px ; | |
| flex: 7 1 480px ; | |
| min-width: 420px ; | |
| background: var(--c-surface-tint) ; | |
| backdrop-filter: blur(14px) saturate(160%); | |
| -webkit-backdrop-filter: blur(14px) saturate(160%); | |
| border: 1.5px solid rgba(255, 255, 255, 0.65) ; | |
| border-radius: var(--r-lg) ; | |
| box-shadow: var(--shadow-panel) ; | |
| padding: 14px 16px ; | |
| } | |
| /* ========================================================== | |
| Typography | |
| ========================================================== */ | |
| label, | |
| .gr-label, | |
| .block-title { | |
| color: var(--c-text-2) ; | |
| font-size: 0.93rem ; | |
| font-weight: 600 ; | |
| } | |
| .help-markdown p, | |
| .help-markdown li, | |
| .doc-summary, | |
| .doc-summary p, | |
| .doc-summary li { | |
| font-size: 0.91rem; | |
| line-height: 1.65; | |
| color: var(--c-text-2) ; | |
| } | |
| /* ========================================================== | |
| Inputs & textareas | |
| ========================================================== */ | |
| textarea, | |
| input:not([type="range"]):not([type="checkbox"]) { | |
| background: var(--c-surface) ; | |
| color: var(--c-text) ; | |
| font-weight: 500 ; | |
| border: 1.5px solid var(--c-border) ; | |
| border-radius: var(--r-sm) ; | |
| box-shadow: none ; | |
| transition: border-color 0.15s, box-shadow 0.15s ; | |
| } | |
| select { | |
| background: var(--c-surface) ; | |
| color: var(--c-text) ; | |
| font-weight: 600 ; | |
| border: 1.5px solid var(--c-border) ; | |
| border-radius: var(--r-sm) ; | |
| box-shadow: none ; | |
| } | |
| select:focus { | |
| border-color: var(--c-primary) ; | |
| box-shadow: var(--shadow-foc) ; | |
| outline: none ; | |
| } | |
| textarea:focus, | |
| input:focus { | |
| border-color: var(--c-primary) ; | |
| box-shadow: var(--shadow-foc) ; | |
| outline: none ; | |
| } | |
| ::placeholder { | |
| color: var(--c-text-muted) ; | |
| opacity: 1 ; | |
| } | |
| /* ========================================================== | |
| Gradio form wrappers | |
| ========================================================== */ | |
| .gradio-container fieldset, | |
| .gradio-container .fieldset, | |
| .gradio-container .panel, | |
| .gradio-container .gr-panel, | |
| .gradio-container .form, | |
| .gradio-container .gr-form, | |
| .gradio-container .wrap { | |
| background: transparent ; | |
| } | |
| .gradio-container fieldset { | |
| border: 1.5px solid var(--c-border-strong) ; | |
| border-radius: var(--r-md) ; | |
| padding: 12px 12px 10px ; | |
| } | |
| .gradio-container fieldset legend { | |
| color: var(--c-text-2) ; | |
| font-weight: 700 ; | |
| padding: 0 8px ; | |
| } | |
| /* ========================================================== | |
| Panel inner overrides | |
| ========================================================== */ | |
| .control-stack .gr-file, | |
| .control-stack .gr-file *, | |
| .preview-col .gr-file, | |
| .preview-col .gr-file * { | |
| box-shadow: none ; | |
| } | |
| .control-stack fieldset, | |
| .control-stack .gr-checkboxgroup fieldset, | |
| .control-stack .gr-radiogroup fieldset, | |
| .preview-col fieldset, | |
| .preview-col .gr-checkboxgroup fieldset, | |
| .preview-col .gr-radiogroup fieldset { | |
| border: none ; | |
| background: transparent ; | |
| } | |
| .control-stack fieldset legend, | |
| .preview-col fieldset legend { | |
| padding: 0 8px ; | |
| } | |
| .control-stack .gr-checkboxgroup, | |
| .control-stack .gr-dropdown, | |
| .control-stack .gr-file, | |
| .preview-col .gr-checkboxgroup, | |
| .preview-col .gr-dropdown, | |
| .preview-col .gr-file { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .control-stack .gr-file button:not(.gen-btn), | |
| .preview-col .gr-file button:not(.gen-btn) { | |
| border: none ; | |
| background: var(--c-surface-2) ; | |
| } | |
| .preview-col .gr-dropdown input.border-none, | |
| .preview-col .gr-dropdown input[role="listbox"], | |
| .preview-col .wrap-inner input.border-none, | |
| .preview-col .wrap-inner input[role="listbox"] { | |
| border: none ; | |
| outline: none ; | |
| box-shadow: none ; | |
| background: transparent ; | |
| } | |
| .preview-col .gr-dropdown input.border-none:focus, | |
| .preview-col .gr-dropdown input[role="listbox"]:focus, | |
| .preview-col .wrap-inner input.border-none:focus, | |
| .preview-col .wrap-inner input[role="listbox"]:focus, | |
| .preview-col .gr-dropdown input.border-none:focus-visible, | |
| .preview-col .gr-dropdown input[role="listbox"]:focus-visible, | |
| .preview-col .wrap-inner input.border-none:focus-visible, | |
| .preview-col .wrap-inner input[role="listbox"]:focus-visible { | |
| border: none ; | |
| outline: none ; | |
| box-shadow: none ; | |
| } | |
| .gradio-container input[type="checkbox"] { | |
| accent-color: var(--c-primary); | |
| } | |
| .gradio-container .gr-dropdown, | |
| .gradio-container .gr-checkboxgroup, | |
| .gradio-container .gr-radiogroup, | |
| .gradio-container .gr-slider, | |
| .gradio-container .gr-text-input, | |
| .gradio-container .gr-textbox, | |
| .gradio-container .gr-code { | |
| background: transparent ; | |
| } | |
| .tabs, | |
| .tabs .tabitem, | |
| .tabs .tabitem>.block, | |
| .tabs .tabitem>.wrap, | |
| .tabs .tabitem>.panel { | |
| background: transparent ; | |
| } | |
| /* ========================================================== | |
| Slider | |
| ========================================================== */ | |
| input[type="range"] { | |
| border: none ; | |
| box-shadow: none ; | |
| accent-color: var(--c-primary); | |
| } | |
| /* ========================================================== | |
| Primary button (.gen-btn) | |
| ========================================================== */ | |
| .gen-btn { | |
| width: 100% ; | |
| height: 46px ; | |
| font-size: 15px ; | |
| font-weight: 700 ; | |
| border-radius: var(--r-md) ; | |
| border: none ; | |
| background: linear-gradient(135deg, var(--c-primary-lt) 0%, var(--c-primary) 50%, var(--c-primary-dk) 100%) ; | |
| color: #fff ; | |
| cursor: pointer ; | |
| box-shadow: var(--shadow-btn) ; | |
| transition: opacity 0.14s, box-shadow 0.14s, transform 0.10s ; | |
| position: relative ; | |
| overflow: hidden ; | |
| } | |
| /* shimmer sweep */ | |
| .gen-btn::after { | |
| content: ''; | |
| position: absolute; | |
| top: -50%; | |
| left: -80%; | |
| width: 50%; | |
| height: 200%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.28), transparent); | |
| transform: skewX(-20deg); | |
| transition: left 0.45s ease; | |
| pointer-events: none; | |
| } | |
| .gen-btn:hover::after { | |
| left: 140%; | |
| } | |
| .gen-btn:hover { | |
| opacity: 0.90 ; | |
| box-shadow: 0 6px 24px rgba(67, 97, 238, .42) ; | |
| transform: translateY(-1px) ; | |
| } | |
| .gen-btn:active { | |
| transform: translateY(0) ; | |
| opacity: 1 ; | |
| } | |
| /* Secondary buttons */ | |
| button:not(.gen-btn):not(.label-wrap) { | |
| border-radius: var(--r-sm) ; | |
| border: 1.5px solid var(--c-border) ; | |
| background: var(--c-surface-2) ; | |
| color: var(--c-text-2) ; | |
| font-weight: 600 ; | |
| font-size: 0.92rem ; | |
| transition: background 0.14s, border-color 0.14s, color 0.14s ; | |
| } | |
| button:not(.gen-btn):hover { | |
| background: var(--c-primary-pale) ; | |
| border-color: var(--c-primary) ; | |
| color: var(--c-primary-dk) ; | |
| } | |
| /* Tab nav buttons override secondary button rules */ | |
| .tabs>.tab-nav button, | |
| .tabs>.tab-nav button:not(.gen-btn) { | |
| border: none ; | |
| background: transparent ; | |
| border-bottom: 2px solid transparent ; | |
| border-radius: var(--r-xs) var(--r-xs) 0 0 ; | |
| color: var(--c-text-muted) ; | |
| font-weight: 600 ; | |
| font-size: 0.93rem ; | |
| padding: 9px 16px ; | |
| margin-bottom: -2px ; | |
| box-shadow: none ; | |
| transition: color 0.14s, border-color 0.14s, background 0.14s ; | |
| } | |
| .tabs>.tab-nav button.selected, | |
| .tabs>.tab-nav button[aria-selected="true"] { | |
| color: var(--c-primary) ; | |
| border-bottom-color: var(--c-primary) ; | |
| background: var(--c-primary-pale) ; | |
| border-radius: var(--r-sm) var(--r-sm) 0 0 ; | |
| } | |
| .tabs>.tab-nav button:not(.selected):not([aria-selected="true"]):hover { | |
| color: var(--c-text-2) ; | |
| background: var(--c-surface-2) ; | |
| } | |
| /* Gradio footer link-style buttons */ | |
| #gradio-app footer button.show-api, | |
| #gradio-app footer button.how-api, | |
| #gradio-app footer button.settings { | |
| appearance: none ; | |
| -webkit-appearance: none ; | |
| border: none ; | |
| outline: none ; | |
| background: transparent ; | |
| box-shadow: none ; | |
| border-radius: 0 ; | |
| padding: 0 8px ; | |
| height: auto ; | |
| min-height: 0 ; | |
| color: var(--c-text-muted) ; | |
| font-weight: 700 ; | |
| font-size: 0.88rem ; | |
| } | |
| #gradio-app footer button.show-api:hover, | |
| #gradio-app footer button.how-api:hover, | |
| #gradio-app footer button.settings:hover { | |
| background: transparent ; | |
| color: var(--c-primary) ; | |
| } | |
| #gradio-app footer button.show-api:focus, | |
| #gradio-app footer button.how-api:focus, | |
| #gradio-app footer button.settings:focus, | |
| #gradio-app footer button.show-api:focus-visible, | |
| #gradio-app footer button.how-api:focus-visible, | |
| #gradio-app footer button.settings:focus-visible { | |
| outline: none ; | |
| box-shadow: none ; | |
| } | |
| /* ========================================================== | |
| Status bar | |
| ========================================================== */ | |
| .status-bar { | |
| background: var(--c-status-bg) ; | |
| border: 1.5px solid var(--c-border) ; | |
| border-left: 3px solid var(--c-primary) ; | |
| border-radius: var(--r-sm) ; | |
| padding: 9px 12px ; | |
| font-size: 0.90rem ; | |
| line-height: 1.5 ; | |
| color: var(--c-text-2) ; | |
| } | |
| /* ========================================================== | |
| Accordion | |
| ========================================================== */ | |
| .control-stack .block.padded.auto-margin { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .control-stack .block.padded.auto-margin:has(.gradio-accordion) { | |
| background: var(--c-surface-2) ; | |
| border: 1.5px solid var(--c-border) ; | |
| border-radius: var(--r-md) ; | |
| overflow: hidden ; | |
| } | |
| .control-stack .gradio-accordion, | |
| .control-stack .gradio-accordion>div, | |
| .control-stack .gradio-accordion details { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .control-stack .gradio-accordion summary, | |
| .control-stack .gradio-accordion button, | |
| .control-stack .gradio-accordion .label-wrap { | |
| background: transparent ; | |
| color: var(--c-text-2) ; | |
| font-weight: 700 ; | |
| font-size: 0.93rem ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 10px 14px ; | |
| transition: background 0.14s ; | |
| } | |
| .control-stack .gradio-accordion summary:hover, | |
| .control-stack .gradio-accordion button:not(.gen-btn):hover, | |
| .control-stack .gradio-accordion .label-wrap:hover { | |
| background: var(--c-primary-pale) ; | |
| border-color: transparent ; | |
| } | |
| .control-stack button.label-wrap, | |
| .control-stack .block.padded.auto-margin:has(.gradio-accordion) button.label-wrap { | |
| border: none ; | |
| outline: none ; | |
| box-shadow: none ; | |
| background: transparent ; | |
| } | |
| .control-stack .block.padded.auto-margin:has(.gradio-accordion) .status-bar { | |
| border: none ; | |
| border-left: none ; | |
| background: transparent ; | |
| padding: 8px 12px ; | |
| } | |
| /* Document selection checkbox options container */ | |
| .preview-col .wrap-inner, | |
| .preview-col .gr-checkboxgroup .wrap-inner { | |
| border: 1.5px solid var(--c-border-strong) ; | |
| border-radius: var(--r-md) ; | |
| background: var(--c-surface) ; | |
| } | |
| /* Tab buttons borderless */ | |
| .tab-container button[role="tab"], | |
| .tab-container button[role="tab"].selected, | |
| .tab-wrapper button[role="tab"] { | |
| border: none ; | |
| box-shadow: none ; | |
| outline: none ; | |
| } | |
| /* ========================================================== | |
| Preview header | |
| ========================================================== */ | |
| .preview-header { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 8px; | |
| margin: 0 0 10px; | |
| padding-bottom: 10px; | |
| border-bottom: 1.5px solid var(--c-border); | |
| } | |
| .preview-title { | |
| margin: 0; | |
| font-size: 1.05rem; | |
| font-weight: 700; | |
| color: var(--c-text) ; | |
| } | |
| .preview-sub { | |
| margin: 3px 0 0; | |
| font-size: 0.86rem; | |
| color: var(--c-text-muted) ; | |
| } | |
| /* ========================================================== | |
| Result markdown | |
| ========================================================== */ | |
| .result-markdown { | |
| background: var(--c-surface) ; | |
| border: none ; | |
| border-radius: var(--r-md) ; | |
| padding: 14px 16px ; | |
| min-height: 60px; | |
| box-shadow: none ; | |
| } | |
| .result-markdown h1, | |
| .result-markdown h2, | |
| .result-markdown h3 { | |
| color: var(--c-primary-dk) ; | |
| } | |
| .result-markdown p, | |
| .result-markdown li, | |
| .result-markdown strong { | |
| color: var(--c-text) ; | |
| } | |
| .result-markdown a { | |
| color: var(--c-primary) ; | |
| } | |
| .result-markdown code { | |
| background: var(--c-surface-2) ; | |
| color: var(--c-accent) ; | |
| border-radius: 4px ; | |
| padding: 1px 5px ; | |
| font-size: 0.87em ; | |
| } | |
| .result-markdown pre { | |
| background: var(--c-surface-2) ; | |
| border-radius: var(--r-md) ; | |
| } | |
| /* ========================================================== | |
| Inline citations (HTML <details>) inside result markdown | |
| ========================================================== */ | |
| .result-markdown details { | |
| background: var(--c-surface-2); | |
| border: 1px solid var(--c-border); | |
| border-radius: var(--r-sm); | |
| padding: 8px 10px; | |
| margin-top: 8px; | |
| } | |
| .result-markdown summary { | |
| cursor: pointer; | |
| font-weight: 700; | |
| color: var(--c-text-2); | |
| outline: none; | |
| } | |
| .result-markdown details[open] summary { | |
| color: var(--c-primary-dk); | |
| } | |
| /* ========================================================== | |
| Tabs | |
| ========================================================== */ | |
| .tabs { | |
| background: var(--c-surface-tint) ; | |
| backdrop-filter: blur(14px) saturate(160%); | |
| -webkit-backdrop-filter: blur(14px) saturate(160%); | |
| border: 1.5px solid rgba(255, 255, 255, 0.65) ; | |
| border-radius: var(--r-lg) ; | |
| box-shadow: var(--shadow-panel) ; | |
| padding: 10px 12px 12px ; | |
| } | |
| .tabs>.tab-nav { | |
| border-bottom: 2px solid var(--c-border) ; | |
| gap: 2px ; | |
| padding: 0 2px ; | |
| background: transparent ; | |
| } | |
| /* ========================================================== | |
| Feature tabs (Tóm tắt, Quiz, Flashcards) | |
| ========================================================== */ | |
| .feature-sub { | |
| margin: 6px 0 10px; | |
| font-size: 0.92rem; | |
| color: var(--c-text-muted) ; | |
| } | |
| .feature-layout { | |
| gap: 12px ; | |
| align-items: flex-start ; | |
| } | |
| .feature-controls, | |
| .feature-output { | |
| background: rgba(255, 255, 255, 0.72) ; | |
| border: 1.5px solid rgba(255, 255, 255, 0.60) ; | |
| border-radius: var(--r-lg) ; | |
| box-shadow: var(--shadow-card) ; | |
| padding: 12px ; | |
| } | |
| .feature-controls .gen-btn { | |
| margin-top: 6px ; | |
| } | |
| .feature-output .result-markdown { | |
| background: var(--c-surface) ; | |
| border-radius: var(--r-md) ; | |
| } | |
| .feature-output .gr-file, | |
| .feature-output .gr-file .wrap, | |
| .feature-output .gr-file .wrap-inner { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .feature-output .gr-file button:not(.gen-btn) { | |
| margin-top: 10px ; | |
| } | |
| /* ========================================================== | |
| Q&A chatbot | |
| ========================================================== */ | |
| .qa-chat { | |
| height: 520px; | |
| background: transparent ; | |
| border: none ; | |
| border-radius: 0 ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| overflow: hidden ; | |
| } | |
| .qa-chat .wrap, | |
| .qa-chat .wrap-inner, | |
| .qa-chat .bubble-wrap { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .qa-chat .wrap-inner { | |
| padding: 0 ; | |
| } | |
| .qa-chat :is(.panel, .gr-panel, .container, .scrollable, .messages) { | |
| border: none ; | |
| box-shadow: none ; | |
| background: transparent ; | |
| } | |
| .qa-chat .message { | |
| line-height: 1.55; | |
| gap: 8px ; | |
| } | |
| .qa-chat .bubble { | |
| border-radius: 16px ; | |
| padding: 10px 14px ; | |
| border: none ; | |
| box-shadow: 0 2px 8px rgba(38, 56, 152, .08) ; | |
| } | |
| .qa-chat .bubble.user, | |
| .qa-chat .bubble[data-testid="user"] { | |
| background: linear-gradient(135deg, var(--c-primary-pale) 0%, var(--c-accent-pale) 100%) ; | |
| } | |
| .qa-chat .bubble.bot, | |
| .qa-chat .bubble[data-testid="bot"] { | |
| background: var(--c-surface) ; | |
| } | |
| .qa-chat .bubble :is(p, li) { | |
| font-size: 0.95rem; | |
| color: var(--c-text-2) ; | |
| } | |
| .qa-chat .bubble strong { | |
| color: var(--c-text) ; | |
| } | |
| .qa-chat .bubble a { | |
| color: var(--c-primary) ; | |
| } | |
| /* Message action buttons */ | |
| .qa-chat :is(.message-actions, .actions, .btn-row, .icon-buttons) { | |
| gap: 6px ; | |
| } | |
| .qa-chat :is(.message-actions, .actions, .btn-row, .icon-buttons) button { | |
| height: 30px ; | |
| padding: 0 10px ; | |
| border-radius: var(--r-pill) ; | |
| border: 1px solid var(--c-border) ; | |
| background: var(--c-surface-2) ; | |
| color: var(--c-text-muted) ; | |
| font-weight: 700 ; | |
| font-size: 0.82rem ; | |
| box-shadow: none ; | |
| transition: background 0.14s, border-color 0.14s, color 0.14s ; | |
| } | |
| .qa-chat :is(.message-actions, .actions, .btn-row, .icon-buttons) button:hover { | |
| background: var(--c-primary-pale) ; | |
| border-color: var(--c-primary) ; | |
| color: var(--c-primary-dk) ; | |
| } | |
| .qa-chat :is(.message-actions, .actions, .btn-row, .icon-buttons) button svg { | |
| color: currentColor ; | |
| } | |
| .qa-input { | |
| margin-top: 10px; | |
| } | |
| .qa-input textarea, | |
| .qa-input input { | |
| border-radius: var(--r-pill) ; | |
| padding: 12px 18px ; | |
| font-size: 0.98rem ; | |
| } | |
| .qa-input textarea { | |
| border-radius: 16px ; | |
| } | |
| /* ========================================================== | |
| Footer | |
| ========================================================== */ | |
| .footer-text { | |
| text-align: center; | |
| font-size: 0.88rem; | |
| color: var(--c-text-muted) ; | |
| padding: 10px 0 6px; | |
| margin-top: 14px; | |
| border-top: 1px solid var(--c-border); | |
| } | |
| .footer-text a { | |
| color: var(--c-primary) ; | |
| text-decoration: none; | |
| font-weight: 600; | |
| } | |
| .footer-text a:hover { | |
| text-decoration: underline; | |
| } | |
| /* ========================================================== | |
| Responsive | |
| ========================================================== */ | |
| @media (max-width: 860px) { | |
| .main-layout { | |
| flex-direction: column ; | |
| } | |
| .control-stack, | |
| .preview-col { | |
| flex: 1 1 100% ; | |
| min-width: 0 ; | |
| padding: 12px ; | |
| } | |
| .gradio-container { | |
| padding: 0px 8px 6px ; | |
| } | |
| .header-row { | |
| gap: 8px ; | |
| padding: 0 0 4px ; | |
| } | |
| .header-row img { | |
| height: 56px; | |
| } | |
| .header-row .header-text { | |
| margin-left: -12px ; | |
| } | |
| .header-title { | |
| font-size: 1.4rem; | |
| } | |
| .header-sub { | |
| font-size: 0.92rem; | |
| } | |
| .tabs { | |
| padding: 8px 8px 10px ; | |
| } | |
| .feature-sub { | |
| margin: 4px 0 8px; | |
| } | |
| .feature-layout { | |
| flex-direction: column ; | |
| } | |
| .feature-controls, | |
| .feature-output { | |
| padding: 10px ; | |
| } | |
| } |