Spaces:
Sleeping
Sleeping
| """Autumn theme. Colors derived from the project logo (orange-to-red on black).""" | |
| from __future__ import annotations | |
| import gradio as gr | |
| AMBER = "#d97706" | |
| AMBER_DEEP = "#b45309" | |
| ORANGE = "#ea580c" | |
| RED = "#dc2626" | |
| CRIMSON = "#991b1b" | |
| EMBER = "#f59e0b" | |
| INK = "#0c0a09" | |
| INK_SOFT = "#1c1917" | |
| PARCHMENT = "#fef3c7" | |
| PARCHMENT_DEEP = "#fde68a" | |
| SLATE = "#44403c" | |
| THEME_CSS = f""" | |
| :root {{ | |
| --halide-amber: {AMBER}; | |
| --halide-amber-deep: {AMBER_DEEP}; | |
| --halide-orange: {ORANGE}; | |
| --halide-red: {RED}; | |
| --halide-crimson: {CRIMSON}; | |
| --halide-ember: {EMBER}; | |
| --halide-ink: {INK}; | |
| --halide-ink-soft: {INK_SOFT}; | |
| --halide-parchment: {PARCHMENT}; | |
| --halide-parchment-deep: {PARCHMENT_DEEP}; | |
| --halide-slate: {SLATE}; | |
| }} | |
| body, .gradio-container {{ | |
| background: linear-gradient(180deg, #0c0a09 0%, #1c1917 50%, #0c0a09 100%); | |
| color: var(--halide-parchment); | |
| font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; | |
| }} | |
| #halide-header {{ | |
| background: linear-gradient(90deg, var(--halide-crimson) 0%, var(--halide-orange) 50%, var(--halide-amber) 100%); | |
| padding: 1.4rem 2rem; | |
| border-radius: 0 0 18px 18px; | |
| margin-bottom: 1.5rem; | |
| box-shadow: 0 8px 32px rgba(217, 119, 6, 0.25); | |
| border-bottom: 1px solid var(--halide-amber); | |
| }} | |
| #halide-header h1 {{ | |
| color: var(--halide-parchment); | |
| font-size: 2.4rem; | |
| margin: 0; | |
| letter-spacing: 0.02em; | |
| text-shadow: 0 2px 4px rgba(0,0,0,0.4); | |
| }} | |
| #halide-header p {{ | |
| color: var(--halide-parchment-deep); | |
| margin: 0.4rem 0 0 0; | |
| font-size: 1.05rem; | |
| font-style: italic; | |
| }} | |
| .halide-card {{ | |
| background: rgba(28, 25, 23, 0.85); | |
| border: 1px solid var(--halide-amber-deep); | |
| border-radius: 12px; | |
| padding: 1.2rem; | |
| box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); | |
| }} | |
| .halide-section-title {{ | |
| color: var(--halide-amber); | |
| font-size: 1.15rem; | |
| font-weight: 600; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| margin-bottom: 0.6rem; | |
| border-bottom: 1px solid var(--halide-amber-deep); | |
| padding-bottom: 0.3rem; | |
| }} | |
| .halide-stat {{ | |
| display: flex; | |
| justify-content: space-between; | |
| padding: 0.4rem 0; | |
| border-bottom: 1px dotted var(--halide-slate); | |
| color: var(--halide-parchment); | |
| }} | |
| .halide-stat-label {{ | |
| color: var(--halide-amber); | |
| font-weight: 600; | |
| }} | |
| .halide-diagnosis {{ | |
| background: rgba(217, 119, 6, 0.08); | |
| border-left: 4px solid var(--halide-amber); | |
| padding: 1rem 1.2rem; | |
| border-radius: 6px; | |
| white-space: pre-wrap; | |
| font-size: 0.98rem; | |
| line-height: 1.6; | |
| color: var(--halide-parchment); | |
| }} | |
| .halide-defect-pill {{ | |
| display: inline-block; | |
| background: var(--halide-amber); | |
| color: var(--halide-ink); | |
| padding: 0.2rem 0.7rem; | |
| border-radius: 999px; | |
| font-size: 0.85rem; | |
| font-weight: 600; | |
| margin: 0 0.3rem 0.3rem 0; | |
| }} | |
| .halide-defect-pill.dust {{ background: var(--halide-amber); color: var(--halide-ink); }} | |
| .halide-defect-pill.dirt {{ background: var(--halide-orange); color: var(--halide-parchment); }} | |
| .halide-defect-pill.scratch {{ background: var(--halide-red); color: var(--halide-parchment); }} | |
| .halide-defect-pill.long_hair {{ background: var(--halide-crimson); color: var(--halide-parchment); }} | |
| .halide-defect-pill.short_hair {{ background: var(--halide-ember); color: var(--halide-ink); }} | |
| button.primary, .primary button {{ | |
| background: linear-gradient(135deg, var(--halide-orange), var(--halide-red)) !important; | |
| color: var(--halide-parchment) !important; | |
| border: 1px solid var(--halide-amber) !important; | |
| font-weight: 600 !important; | |
| letter-spacing: 0.02em !important; | |
| box-shadow: 0 2px 12px rgba(234, 88, 12, 0.4) !important; | |
| }} | |
| button.primary:hover, .primary button:hover {{ | |
| background: linear-gradient(135deg, var(--halide-red), var(--halide-crimson)) !important; | |
| }} | |
| input, textarea, select {{ | |
| background: var(--halide-ink-soft) !important; | |
| color: var(--halide-parchment) !important; | |
| border: 1px solid var(--halide-amber-deep) !important; | |
| }} | |
| input:focus, textarea:focus, select:focus {{ | |
| border-color: var(--halide-amber) !important; | |
| box-shadow: 0 0 0 2px rgba(217, 119, 6, 0.3) !important; | |
| }} | |
| label, .label, .gradio-radio label, .gradio-checkbox label {{ | |
| color: var(--halide-parchment-deep) !important; | |
| font-weight: 500 !important; | |
| }} | |
| footer {{ | |
| color: var(--halide-slate) !important; | |
| text-align: center; | |
| padding: 1rem; | |
| font-size: 0.85rem; | |
| }} | |
| """ | |
| def build_theme() -> gr.Theme: | |
| """Build the autumn-themed Gradio theme.""" | |
| return gr.themes.Base( | |
| primary_hue=gr.themes.Color( | |
| c50="#fef3c7", | |
| c100="#fde68a", | |
| c200="#fcd34d", | |
| c300="#fbbf24", | |
| c400="#f59e0b", | |
| c500=AMBER, | |
| c600=AMBER_DEEP, | |
| c700="#92400e", | |
| c800="#78350f", | |
| c900=CRIMSON, | |
| c950="#7c2d12", | |
| ), | |
| secondary_hue=gr.themes.Color( | |
| c50="#fef3c7", | |
| c100="#fde68a", | |
| c200="#fcd34d", | |
| c300="#fbbf24", | |
| c400=EMBER, | |
| c500=AMBER, | |
| c600=ORANGE, | |
| c700=RED, | |
| c800=CRIMSON, | |
| c900="#7c2d12", | |
| c950="#431407", | |
| ), | |
| neutral_hue=gr.themes.Color( | |
| c50="#fafaf9", | |
| c100="#f5f5f4", | |
| c200="#e7e5e4", | |
| c300="#d6d3d1", | |
| c400=SLATE, | |
| c500="#57534e", | |
| c600="#44403c", | |
| c700="#292524", | |
| c800=INK_SOFT, | |
| c900=INK, | |
| c950="#0c0a09", | |
| ), | |
| font=gr.themes.GoogleFont("Iowan Old Style"), | |
| font_mono=gr.themes.GoogleFont("JetBrains Mono"), | |
| ).set( | |
| body_background_fill=INK, | |
| body_background_fill_dark=INK, | |
| body_text_color=PARCHMENT, | |
| body_text_color_dark=PARCHMENT, | |
| button_primary_background_fill=ORANGE, | |
| button_primary_background_fill_dark=ORANGE, | |
| button_primary_text_color=PARCHMENT, | |
| button_primary_text_color_dark=PARCHMENT, | |
| block_background_fill=INK_SOFT, | |
| block_background_fill_dark=INK_SOFT, | |
| block_border_color=AMBER_DEEP, | |
| block_border_color_dark=AMBER_DEEP, | |
| input_background_fill=INK, | |
| input_background_fill_dark=INK, | |
| input_border_color=AMBER_DEEP, | |
| input_border_color_dark=AMBER_DEEP, | |
| ) | |