Spaces:
Runtime error
Runtime error
| /* uglytool.dev — Clean Room theme (v1) | |
| * See README.md for drop-in instructions for Gradio + Streamlit. | |
| * You bought this file. Modify whatever you want — tweak the blue, | |
| * swap the font, remove the credit. It's yours now. | |
| */ | |
| @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); | |
| /* ============================================================ | |
| * Part 1 — Theme variables | |
| * ============================================================ */ | |
| :root, | |
| :root.dark, | |
| .gradio-container, | |
| .gradio-container.dark, | |
| body.dark { | |
| --cr-bg: #ffffff; | |
| --cr-surface: #f7f8fa; | |
| --cr-surface-2: #eceef1; | |
| --cr-border: rgba(17, 24, 39, 0.1); | |
| --cr-border-soft: rgba(17, 24, 39, 0.05); | |
| --cr-border-focus: #2563a8; | |
| --cr-blue: #2563a8; | |
| --cr-blue-soft: rgba(37, 99, 168, 0.08); | |
| --cr-blue-dim: rgba(37, 99, 168, 0.25); | |
| --cr-ink: #111827; | |
| --cr-muted: #6b7280; | |
| --cr-dim: #9ca3af; | |
| --body-background-fill: var(--cr-bg); | |
| --background-fill-primary: var(--cr-surface); | |
| --background-fill-secondary: var(--cr-surface-2); | |
| --body-text-color: var(--cr-ink); | |
| --body-text-color-subdued: var(--cr-muted); | |
| --color-accent: var(--cr-blue); | |
| --color-accent-soft: var(--cr-blue-soft); | |
| --border-color-primary: var(--cr-border); | |
| --border-color-accent: var(--cr-blue); | |
| --block-background-fill: var(--cr-surface); | |
| --block-border-color: var(--cr-border); | |
| --block-border-width: 1px; | |
| --block-radius: 3px; | |
| --block-shadow: none; | |
| --block-title-background-fill: transparent; | |
| --block-title-border-color: transparent; | |
| --block-title-text-color: var(--cr-ink); | |
| --block-title-text-size: 0.78rem; | |
| --block-title-text-weight: 600; | |
| --block-label-background-fill: transparent; | |
| --block-label-border-color: transparent; | |
| --block-label-text-color: var(--cr-ink); | |
| --block-label-text-size: 0.75rem; | |
| --block-label-text-weight: 600; | |
| --input-background-fill: var(--cr-bg); | |
| --input-background-fill-focus: var(--cr-bg); | |
| --input-border-color: var(--cr-border); | |
| --input-border-color-focus: var(--cr-blue); | |
| --input-text-size: 0.92rem; | |
| --input-radius: 3px; | |
| --button-primary-background-fill: var(--cr-blue); | |
| --button-primary-background-fill-hover: #1f5596; | |
| --button-primary-text-color: var(--cr-bg); | |
| --button-primary-text-color-hover: var(--cr-bg); | |
| --button-primary-border-color: var(--cr-blue); | |
| --button-secondary-background-fill: var(--cr-bg); | |
| --button-secondary-background-fill-hover: var(--cr-blue-soft); | |
| --button-secondary-text-color: var(--cr-blue); | |
| --button-secondary-text-color-hover: var(--cr-blue); | |
| --button-secondary-border-color: var(--cr-border); | |
| --button-large-text-size: 0.82rem; | |
| --button-large-text-weight: 600; | |
| --button-large-radius: 3px; | |
| --slider-color: var(--cr-blue); | |
| --font: 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif; | |
| --font-mono: 'JetBrains Mono', ui-monospace, monospace; | |
| --radius-xxs: 1px; | |
| --radius-xs: 2px; | |
| --radius-sm: 3px; | |
| --radius-md: 4px; | |
| --radius-lg: 6px; | |
| } | |
| /* ============================================================ | |
| * Part 2 — Root containers | |
| * ============================================================ */ | |
| html body, | |
| html body.dark, | |
| html body .gradio-container, | |
| html body .gradio-container.dark, | |
| html body .stApp, | |
| html body .stApp > div, | |
| html body [data-testid="stAppViewContainer"] { | |
| background: var(--cr-bg) ; | |
| color: var(--cr-ink) ; | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif ; | |
| -webkit-font-smoothing: antialiased ; | |
| } | |
| html body .main .block-container, | |
| html body .stApp [data-testid="stVerticalBlock"] { | |
| background: var(--cr-bg) ; | |
| } | |
| /* ============================================================ | |
| * Part 3 — Typography | |
| * Headings: Plus Jakarta bold, ink color. | |
| * Labels: all-caps Plus Jakarta at 0.75rem, ink color, 0.1em tracking. | |
| * Blue is reserved for indices, focus states, buttons. | |
| * ============================================================ */ | |
| html body h1, html body h2, html body h3, html body h4, html body h5, html body h6, | |
| html body .gradio-container h1, html body .gradio-container h2, html body .gradio-container h3, | |
| html body .gradio-container h4, html body .gradio-container h5, html body .gradio-container h6, | |
| html body .gradio-container h1 *, html body .gradio-container h2 *, html body .gradio-container h3 *, | |
| html body .prose h1, html body .prose h2, html body .prose h3, html body .prose h4, | |
| html body .prose h1 *, html body .prose h2 *, html body .prose h3 *, | |
| html body .markdown h1, html body .markdown h2, html body .markdown h3, | |
| html body .markdown h1 *, html body .markdown h2 *, html body .markdown h3 *, | |
| html body .gr-markdown h1, html body .gr-markdown h2, html body .gr-markdown h3, | |
| html body .gr-markdown h1 *, html body .gr-markdown h2 *, html body .gr-markdown h3 *, | |
| html body .stApp h1, html body .stApp h2, html body .stApp h3, | |
| html body [data-testid="stMarkdownContainer"] h1, | |
| html body [data-testid="stMarkdownContainer"] h2, | |
| html body [data-testid="stMarkdownContainer"] h3, | |
| html body [data-testid="stMarkdownContainer"] h1 *, | |
| html body [data-testid="stMarkdownContainer"] h2 *, | |
| html body [data-testid="stMarkdownContainer"] h3 * { | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| font-weight: 700 ; | |
| letter-spacing: -0.02em ; | |
| color: var(--cr-ink) ; | |
| -webkit-text-fill-color: var(--cr-ink) ; | |
| background-image: none ; | |
| background-clip: unset ; | |
| -webkit-background-clip: unset ; | |
| line-height: 1.15 ; | |
| } | |
| /* Labels — all-caps Plus Jakarta, ink, narrow tracking. */ | |
| html body .gradio-container .block-label, | |
| html body .gradio-container .block-label *, | |
| html body .gradio-container label, | |
| html body .gradio-container label > *, | |
| html body .gradio-container [class*="label-wrap"], | |
| html body .gradio-container [class*="label-wrap"] *, | |
| html body .gradio-container [data-testid*="label"], | |
| html body .gradio-container .wrap > label, | |
| html body .stApp label, | |
| html body .stApp [data-testid="stWidgetLabel"], | |
| html body .stApp [data-testid="stWidgetLabel"] > *, | |
| html body .stApp [data-testid="stWidgetLabel"] p { | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| font-size: 0.75rem ; | |
| color: var(--cr-ink) ; | |
| letter-spacing: 0.1em ; | |
| text-transform: uppercase ; | |
| font-weight: 600 ; | |
| background: transparent ; | |
| } | |
| /* ============================================================ | |
| * Part 4 — Blocks / cards | |
| * ============================================================ */ | |
| html body .gradio-container .block, | |
| html body .gradio-container .gr-block, | |
| html body .gradio-container .gr-padded, | |
| html body .gradio-container .gr-form, | |
| html body .gradio-container .gr-box, | |
| html body .gradio-container .wrap, | |
| html body .stApp [data-testid="stForm"], | |
| html body .stApp [data-testid="stExpander"] { | |
| background: var(--cr-surface) ; | |
| border: 1px solid var(--cr-border) ; | |
| border-radius: 3px ; | |
| } | |
| /* ============================================================ | |
| * Part 5 — Inputs | |
| * ============================================================ */ | |
| html body .gradio-container input[type="text"], | |
| html body .gradio-container input[type="number"], | |
| html body .gradio-container input[type="email"], | |
| html body .gradio-container input[type="password"], | |
| html body .gradio-container input[type="search"], | |
| html body .gradio-container textarea, | |
| html body .gradio-container select, | |
| html body .gradio-container .gr-textbox, | |
| html body .gradio-container .gr-textbox textarea, | |
| html body .gradio-container .gr-textbox input, | |
| html body .stApp input[type="text"], | |
| html body .stApp input[type="number"], | |
| html body .stApp textarea, | |
| html body .stApp [data-baseweb="select"] > div, | |
| html body .stApp [data-baseweb="input"] { | |
| background: var(--cr-bg) ; | |
| border: 1px solid var(--cr-border) ; | |
| border-radius: 3px ; | |
| color: var(--cr-ink) ; | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| font-size: 0.92rem ; | |
| caret-color: var(--cr-blue) ; | |
| padding: 10px 12px ; | |
| line-height: 1.5 ; | |
| } | |
| html body .gradio-container textarea, | |
| html body .stApp textarea { | |
| min-height: 130px ; | |
| background: var(--cr-surface) ; | |
| } | |
| html body .gradio-container input:focus, | |
| html body .gradio-container textarea:focus, | |
| html body .gradio-container select:focus, | |
| html body .stApp input:focus, | |
| html body .stApp textarea:focus { | |
| border-color: var(--cr-blue) ; | |
| outline: none ; | |
| box-shadow: 0 0 0 3px var(--cr-blue-soft) ; | |
| } | |
| html body .gradio-container ::placeholder, | |
| html body .stApp ::placeholder { | |
| color: var(--cr-dim) ; | |
| } | |
| /* ============================================================ | |
| * Part 6 — Buttons (blue, uppercase Plus Jakarta, small radius) | |
| * ============================================================ */ | |
| html body .gradio-container button, | |
| html body .gradio-container .gr-button, | |
| html body .gradio-container [class*="gr-button"], | |
| html body .gradio-container button.primary, | |
| html body .gradio-container .primary, | |
| html body .stApp .stButton > button, | |
| html body .stApp button[kind="primary"] { | |
| background: var(--cr-blue) ; | |
| color: var(--cr-bg) ; | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| font-weight: 600 ; | |
| font-size: 0.82rem ; | |
| letter-spacing: 0.12em ; | |
| text-transform: uppercase ; | |
| border: 1px solid var(--cr-blue) ; | |
| border-radius: 3px ; | |
| padding: 12px 20px ; | |
| cursor: pointer ; | |
| transition: background 150ms, transform 100ms ; | |
| } | |
| html body .gradio-container button:hover, | |
| html body .gradio-container .gr-button:hover, | |
| html body .stApp .stButton > button:hover { | |
| background: #1f5596 ; | |
| border-color: #1f5596 ; | |
| color: var(--cr-bg) ; | |
| } | |
| html body .gradio-container button:active, | |
| html body .stApp .stButton > button:active { | |
| transform: scale(0.996) ; | |
| } | |
| html body .gradio-container button.secondary, | |
| html body .gradio-container .secondary, | |
| html body .stApp button[kind="secondary"] { | |
| background: var(--cr-bg) ; | |
| color: var(--cr-blue) ; | |
| border: 1px solid var(--cr-border) ; | |
| } | |
| /* ============================================================ | |
| * Part 7 — Sliders, checkboxes, radios | |
| * ============================================================ */ | |
| html body input[type="range"] { accent-color: var(--cr-blue) ; } | |
| html body input[type="range"]::-webkit-slider-thumb { | |
| background: var(--cr-blue) ; | |
| border: 2px solid var(--cr-bg) ; | |
| box-shadow: 0 0 0 1px var(--cr-blue-dim) ; | |
| } | |
| html body input[type="range"]::-moz-range-thumb { | |
| background: var(--cr-blue) ; | |
| border: 2px solid var(--cr-bg) ; | |
| } | |
| html body input[type="checkbox"], | |
| html body input[type="radio"] { | |
| accent-color: var(--cr-blue) ; | |
| } | |
| /* ============================================================ | |
| * Part 8 — File uploads | |
| * ============================================================ */ | |
| html body .gradio-container .gr-file-upload, | |
| html body .gradio-container input[type="file"], | |
| html body .stApp [data-testid="stFileUploader"], | |
| html body .stApp [data-testid="stFileUploaderDropzone"] { | |
| background: var(--cr-surface) ; | |
| border: 1px dashed var(--cr-border) ; | |
| border-radius: 3px ; | |
| color: var(--cr-ink) ; | |
| } | |
| html body input[type="file"]::file-selector-button { | |
| background: var(--cr-bg) ; | |
| color: var(--cr-blue) ; | |
| border: 1px solid var(--cr-border) ; | |
| border-radius: 3px ; | |
| padding: 5px 12px ; | |
| margin-right: 12px ; | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| font-weight: 500 ; | |
| font-size: 0.78rem ; | |
| text-transform: uppercase ; | |
| letter-spacing: 0.08em ; | |
| cursor: pointer ; | |
| } | |
| /* ============================================================ | |
| * Part 9 — Markdown, code, links | |
| * ============================================================ */ | |
| html body .gradio-container .markdown, | |
| html body .gradio-container .gr-markdown, | |
| html body .gradio-container .prose, | |
| html body .stApp [data-testid="stMarkdownContainer"] { | |
| color: var(--cr-ink) ; | |
| font-family: 'Plus Jakarta Sans', ui-sans-serif, sans-serif ; | |
| line-height: 1.55 ; | |
| } | |
| html body .gradio-container a, | |
| html body .stApp a { | |
| color: var(--cr-blue) ; | |
| } | |
| html body code, | |
| html body .gradio-container code, | |
| html body .stApp code { | |
| background: var(--cr-blue-soft) ; | |
| color: var(--cr-blue) ; | |
| font-family: 'JetBrains Mono', ui-monospace, monospace ; | |
| padding: 2px 6px ; | |
| border-radius: 2px ; | |
| } | |
| /* ============================================================ | |
| * Part 10 — Scrollbars + Streamlit chrome | |
| * ============================================================ */ | |
| html body ::-webkit-scrollbar { width: 8px; height: 8px; } | |
| html body ::-webkit-scrollbar-track { background: var(--cr-bg); } | |
| html body ::-webkit-scrollbar-thumb { | |
| background: var(--cr-border); | |
| border-radius: 3px; | |
| } | |
| html body ::-webkit-scrollbar-thumb:hover { | |
| background: var(--cr-blue-dim); | |
| } | |
| html body .stApp header[data-testid="stHeader"] { | |
| background: var(--cr-bg) ; | |
| border-bottom: 1px solid var(--cr-border) ; | |
| } | |
| html body .stApp [data-testid="stSidebar"] { | |
| background: var(--cr-surface) ; | |
| border-right: 1px solid var(--cr-border) ; | |
| } | |