"""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, )