Download css.py from clemson-computing/VANTAGE-Bench-Leaderboard: direct link, hf CLI and curl.
- Browser
- Download file 90.8 kB
-
https://huggingface.co/spaces/clemson-computing/VANTAGE-Bench-Leaderboard/resolve/refs%2Fpr%2F3/css.py
- Command line
-
hf download hf://spaces/clemson-computing/VANTAGE-Bench-Leaderboard@refs/pr/3/css.py
-
curl -L -o css.py https://huggingface.co/spaces/clemson-computing/VANTAGE-Bench-Leaderboard/resolve/refs%2Fpr%2F3/css.py
90.8 kB
| """VANTAGE-Bench Leaderboard β complete CSS bundle. | |
| Single source of truth for all visual styling. | |
| Imported by app.py and passed directly to demo.launch(css=CSS). | |
| """ | |
| CSS = """ | |
| @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"); | |
| /* ββ Force light theme ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| The leaderboard is designed as a light-themed, paper-like research UI. | |
| Gradio's default theme inherits browser/system dark mode through CSS | |
| variables (--body-text-color, --background-fill-primary, --neutral-*, | |
| etc.) and Hugging Face Spaces applies its own dark theme on top. | |
| Either path inverts our text to white-on-white. We neutralize both by: | |
| 1. Declaring color-scheme: light on the root so the UA paints form | |
| controls (scrollbars, native selects, checkboxes) in light style. | |
| 2. Overriding Gradio's CSS custom properties at :root AND inside | |
| .gradio-container, both unconditionally and inside the | |
| prefers-color-scheme: dark media query, so dark mode cannot | |
| re-assign them. | |
| 3. Forcing explicit, dark-on-light color/background on every text- | |
| bearing leaderboard element below (header, tabs, filters, tables, | |
| legend, footer, about, side panel). Search for `!important color:` | |
| in this file β those rules are what survives theme inversion. */ | |
| :root, | |
| .gradio-container, | |
| .gradio-container.dark, | |
| .dark .gradio-container, | |
| html.dark, | |
| body.dark { | |
| color-scheme: light !important; | |
| /* Gradio core surface tokens (Default theme) */ | |
| --body-background-fill: #ffffff !important; | |
| --body-text-color: #111827 !important; | |
| --body-text-color-subdued: #6b7280 !important; | |
| --background-fill-primary: #ffffff !important; | |
| --background-fill-secondary: #fafafa !important; | |
| --block-background-fill: #ffffff !important; | |
| --block-label-background-fill: #ffffff !important; | |
| --block-label-text-color: #374151 !important; | |
| --block-title-text-color: #111827 !important; | |
| --block-border-color: #e5e7eb !important; | |
| --block-info-text-color: #6b7280 !important; | |
| --border-color-primary: #e5e7eb !important; | |
| --border-color-accent: #e5e7eb !important; | |
| --color-accent: #2563eb !important; | |
| --color-accent-soft: #eff6ff !important; | |
| --link-text-color: #2563eb !important; | |
| --link-text-color-hover: #1d4ed8 !important; | |
| --link-text-color-visited: #2563eb !important; | |
| --link-text-color-active: #1d4ed8 !important; | |
| /* Inputs */ | |
| --input-background-fill: #ffffff !important; | |
| --input-background-fill-focus: #ffffff !important; | |
| --input-border-color: #d1d5db !important; | |
| --input-border-color-focus: #2563eb !important; | |
| --input-text-size: 13px !important; | |
| --input-placeholder-color: #9ca3af !important; | |
| --checkbox-background-color: #ffffff !important; | |
| --checkbox-background-color-focus: #ffffff !important; | |
| --checkbox-background-color-hover: #f9fafb !important; | |
| --checkbox-background-color-selected: #2563eb !important; | |
| --checkbox-border-color: #d1d5db !important; | |
| --checkbox-border-color-focus: #2563eb !important; | |
| --checkbox-border-color-hover: #9ca3af !important; | |
| --checkbox-border-color-selected: #2563eb !important; | |
| --checkbox-label-background-fill: transparent !important; | |
| --checkbox-label-background-fill-hover: transparent !important; | |
| --checkbox-label-background-fill-selected: transparent !important; | |
| --checkbox-label-text-color: #374151 !important; | |
| --checkbox-label-text-color-selected: #111827 !important; | |
| /* Tables */ | |
| --table-even-background-fill: #fafafa !important; | |
| --table-odd-background-fill: #ffffff !important; | |
| --table-row-focus: #F3EEF9 !important; | |
| --table-border-color: #e5e7eb !important; | |
| --table-text-color: #111827 !important; | |
| /* Buttons (we override the close button explicitly elsewhere) */ | |
| --button-secondary-background-fill: #ffffff !important; | |
| --button-secondary-background-fill-hover: #f9fafb !important; | |
| --button-secondary-text-color: #111827 !important; | |
| --button-secondary-text-color-hover: #111827 !important; | |
| --button-secondary-border-color: #d1d5db !important; | |
| /* Neutral ramp β Gradio's dark theme reassigns these to dark surfaces */ | |
| --neutral-50: #fafafa !important; | |
| --neutral-100: #f3f4f6 !important; | |
| --neutral-200: #e5e7eb !important; | |
| --neutral-300: #d1d5db !important; | |
| --neutral-400: #9ca3af !important; | |
| --neutral-500: #6b7280 !important; | |
| --neutral-600: #4b5563 !important; | |
| --neutral-700: #374151 !important; | |
| --neutral-800: #1f2937 !important; | |
| --neutral-900: #111827 !important; | |
| --neutral-950: #030712 !important; | |
| } | |
| /* Re-apply the same overrides inside any dark-mode media query so that | |
| Gradio (and HF Spaces) cannot re-assign the variables when the user's | |
| system is set to dark. We don't want responsive dark theming here. */ | |
| @media (prefers-color-scheme: dark) { | |
| :root, | |
| .gradio-container, | |
| .gradio-container.dark, | |
| .dark .gradio-container, | |
| html.dark, | |
| body.dark { | |
| color-scheme: light !important; | |
| --body-background-fill: #ffffff !important; | |
| --body-text-color: #111827 !important; | |
| --body-text-color-subdued: #6b7280 !important; | |
| --background-fill-primary: #ffffff !important; | |
| --background-fill-secondary: #fafafa !important; | |
| --block-background-fill: #ffffff !important; | |
| --block-label-text-color: #374151 !important; | |
| --block-title-text-color: #111827 !important; | |
| --block-border-color: #e5e7eb !important; | |
| --block-info-text-color: #6b7280 !important; | |
| --border-color-primary: #e5e7eb !important; | |
| --input-background-fill: #ffffff !important; | |
| --input-border-color: #d1d5db !important; | |
| --input-placeholder-color: #9ca3af !important; | |
| --table-even-background-fill: #fafafa !important; | |
| --table-odd-background-fill: #ffffff !important; | |
| --table-border-color: #e5e7eb !important; | |
| --table-text-color: #111827 !important; | |
| --neutral-50: #fafafa !important; | |
| --neutral-100: #f3f4f6 !important; | |
| --neutral-200: #e5e7eb !important; | |
| --neutral-300: #d1d5db !important; | |
| --neutral-400: #9ca3af !important; | |
| --neutral-500: #6b7280 !important; | |
| --neutral-600: #4b5563 !important; | |
| --neutral-700: #374151 !important; | |
| --neutral-800: #1f2937 !important; | |
| --neutral-900: #111827 !important; | |
| --neutral-950: #030712 !important; | |
| } | |
| /* HF Spaces sometimes scopes dark mode under `.dark` rather than the | |
| media query; force the inner gradio surface to stay light there too. */ | |
| html, body, .gradio-container, .gradio-container .main { | |
| background: #ffffff !important; | |
| color: #111827 !important; | |
| } | |
| } | |
| /* HF Spaces / Gradio also toggle a `.dark` class on <html> / <body> / | |
| .gradio-container directly. Override those surfaces unconditionally. */ | |
| html.dark, body.dark, | |
| .dark, .dark body, | |
| .gradio-container.dark, | |
| .dark .gradio-container, | |
| .dark .gradio-container .main, | |
| .dark .gradio-container .app, | |
| .dark .gradio-container .contain, | |
| .dark .gradio-container .fillable, | |
| .dark .gradio-container .wrap, | |
| .dark .gradio-container .block, | |
| .dark .gradio-container .form { | |
| background: #ffffff !important; | |
| background-color: #ffffff !important; | |
| color: #111827 !important; | |
| } | |
| /* ββ Reset ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| *, *::before, *::after { box-sizing: border-box; } | |
| body, .gradio-container { | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", sans-serif; | |
| color: #111827 !important; | |
| font-size: 13px; | |
| background: #ffffff !important; | |
| color-scheme: light !important; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| /* Belt-and-suspenders: keep the outer page surfaces explicitly light even | |
| if Gradio injects a wrapper we don't otherwise touch. */ | |
| html, body, | |
| .gradio-container, | |
| .gradio-container .main, | |
| .gradio-container .app, | |
| .gradio-container .contain, | |
| .gradio-container .fillable { | |
| background: #ffffff !important; | |
| color: #111827 !important; | |
| } | |
| /* ββ Width / layout βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container, | |
| .gradio-container .main, | |
| .gradio-container .app, | |
| .gradio-container .contain, | |
| .gradio-container .wrap, | |
| .gradio-container .fillable { | |
| max-width: min(95vw, 1800px) !important; | |
| width: 100% !important; | |
| margin: 0 auto !important; | |
| } | |
| /* Keep hero text from spanning the full wide-screen width */ | |
| .lb-header { | |
| max-width: 960px; | |
| margin-left: auto !important; | |
| margin-right: auto !important; | |
| } | |
| .gradio-container { padding: 0 24px 40px !important; } | |
| /* Kill default Gradio cards / shadows */ | |
| .gradio-container .block, | |
| .gradio-container .form, | |
| .gradio-container .gap, | |
| .gradio-container .panel { | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| } | |
| /* ββ Header βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-header { | |
| text-align: center; | |
| padding: 0 0 12px; | |
| margin-bottom: 4px; | |
| } | |
| .lb-nav { | |
| font-size: 12px; | |
| color: #6b7280; | |
| display: flex; | |
| gap: 14px; | |
| justify-content: center; | |
| align-items: center; | |
| padding: 4px 0 2px; | |
| } | |
| .lb-nav a { | |
| color: #9ca3af; | |
| text-decoration: none; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 3px; | |
| font-weight: 400; | |
| } | |
| .lb-nav a:hover { color: #6b7280; } | |
| .lb-nav .lb-sep { color: #d1d5db; } | |
| /* Hero-position nav: prominent, centered links beneath the subtitle. | |
| Sized to be clearly readable alongside the title; weight 600 for | |
| visual presence without becoming heavy. */ | |
| .lb-nav-hero { | |
| margin: 16px auto 0; | |
| font-size: 19px; | |
| gap: 24px; | |
| flex-wrap: wrap; | |
| } | |
| .lb-nav-hero a { | |
| color: #374151; | |
| font-weight: 600; | |
| text-decoration: none; | |
| letter-spacing: 0.01em; | |
| transition: color 120ms ease; | |
| } | |
| .lb-nav-hero a:hover { color: #111827; text-decoration: underline; } | |
| .lb-nav-hero .lb-sep { | |
| color: #d1d5db; | |
| font-size: 19px; | |
| font-weight: 300; | |
| } | |
| /* Footer nav: clearly clickable, blue, with diagonal arrow */ | |
| .lb-footer-nav { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 11px; | |
| } | |
| .lb-footer-nav a { | |
| color: #2563eb; | |
| text-decoration: none; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 2px; | |
| font-weight: 500; | |
| } | |
| .lb-footer-nav a:hover { color: #1d4ed8; text-decoration: underline; } | |
| .lb-footer-nav .lb-nav-arrow { font-size: 10px; opacity: 0.75; margin-left: 1px; } | |
| .lb-footer-nav a:hover .lb-nav-arrow { opacity: 1; } | |
| .lb-footer-nav .lb-sep { color: #d1d5db; } | |
| .lb-hero { padding-top: 4px; text-align: center; } | |
| /* Hero title β large primary anchor. The `.gradio-container` prefix + | |
| !important is intentional: HF Spaces injects extra Gradio/theme CSS | |
| that otherwise wins on specificity and shrinks/reflows the wordmark. */ | |
| .gradio-container .lb-hero .lb-wordmark, | |
| .gradio-container .lb-wordmark { | |
| font-size: 68px !important; | |
| font-weight: 700 !important; | |
| letter-spacing: -1.6px !important; | |
| margin: 8px 0 8px !important; | |
| line-height: 1.04 !important; | |
| text-align: center !important; | |
| display: block !important; | |
| width: 100% !important; | |
| } | |
| /* Clemson palette: Orange #F66733, Regalia (Purple) #522D80 */ | |
| .gradio-container .lb-vantage { color: #F66733 !important; } | |
| .gradio-container .lb-dash { color: #000000 !important; } | |
| .gradio-container .lb-bench-label { color: #522D80 !important; } | |
| .gradio-container .lb-summary { | |
| font-size: 16px !important; | |
| color: #111827 !important; | |
| max-width: 940px !important; | |
| margin-left: auto !important; | |
| margin-right: auto !important; | |
| margin-top: 10px !important; | |
| margin-bottom: 0 !important; | |
| line-height: 1.6 !important; | |
| text-align: center !important; | |
| display: block !important; | |
| } | |
| .gradio-container .lb-acronym { | |
| font-size: 17px !important; | |
| color: #111827 !important; | |
| text-align: center !important; | |
| margin-left: auto !important; | |
| margin-right: auto !important; | |
| margin-top: 10px !important; | |
| margin-bottom: 0 !important; | |
| max-width: 680px !important; | |
| letter-spacing: 0.02em !important; | |
| display: block !important; | |
| width: auto !important; | |
| } | |
| .gradio-container .lb-acronym b { | |
| color: #522D80 !important; | |
| font-weight: 600 !important; | |
| } | |
| /* ββ Controls panel βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* The Column wrapper gets .lb-controls-wrap; override the global .block killer */ | |
| .gradio-container .lb-controls-wrap { | |
| border: none !important; | |
| border-radius: 0 !important; | |
| background: transparent !important; | |
| padding: 6px 0 4px !important; | |
| margin-bottom: 4px !important; | |
| box-shadow: none !important; | |
| gap: 6px !important; | |
| } | |
| /* Children of the panel: remove any Gradio card styling */ | |
| .lb-controls-wrap .block, | |
| .lb-controls-wrap .form { | |
| border: none !important; | |
| border-radius: 0 !important; | |
| background: transparent !important; | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| box-shadow: none !important; | |
| } | |
| /* Dropdown labels */ | |
| .lb-filters .label-wrap span, | |
| .lb-filters label span { | |
| font-size: 12px !important; | |
| font-weight: 500 !important; | |
| color: #6b7280 !important; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| } | |
| .lb-filters .label-wrap { margin-bottom: 2px !important; } | |
| /* Search box */ | |
| .lb-filters input[type="text"] { | |
| padding: 6px 10px !important; | |
| font-size: 12px !important; | |
| border-radius: 8px !important; | |
| border: 1px solid #d1d5db !important; | |
| background: #fff !important; | |
| box-shadow: none !important; | |
| width: 100% !important; | |
| outline: none !important; | |
| } | |
| .lb-filters input[type="text"]:focus { border-color: #2563eb !important; } | |
| .gradio-container .lb-filters input[type="text"] { height: 38px !important; } | |
| /* Search input β visually match dropdown filter boxes | |
| Target both <input> AND <textarea> because Gradio Textbox may render as either. */ | |
| .gradio-container .lb-search-box, | |
| .gradio-container .lb-search-box > div, | |
| .gradio-container .lb-search-box .wrap, | |
| .gradio-container .lb-search-box .form { | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| padding: 0 !important; | |
| } | |
| .gradio-container .lb-filters .lb-search-box input, | |
| .gradio-container .lb-filters .lb-search-box input[type="text"], | |
| .gradio-container .lb-filters .lb-search-box textarea, | |
| .gradio-container .lb-search-box input, | |
| .gradio-container .lb-search-box input[type="text"], | |
| .gradio-container .lb-search-box textarea { | |
| height: 38px !important; | |
| min-height: 38px !important; | |
| max-height: 38px !important; | |
| padding: 8px 12px !important; | |
| font-size: 12px !important; | |
| line-height: 1.4 !important; | |
| border-radius: 8px !important; | |
| border: 1px solid #d1d5db !important; | |
| background: #ffffff !important; | |
| box-shadow: none !important; | |
| width: 100% !important; | |
| outline: none !important; | |
| color: #111 !important; | |
| resize: none !important; | |
| overflow: hidden !important; | |
| font-family: inherit !important; | |
| display: block !important; | |
| } | |
| .gradio-container .lb-search-box input::placeholder, | |
| .gradio-container .lb-search-box textarea::placeholder { | |
| color: #9ca3af !important; | |
| opacity: 1 !important; | |
| } | |
| .gradio-container .lb-search-box input:focus, | |
| .gradio-container .lb-search-box textarea:focus, | |
| .gradio-container .lb-search-box input:focus-visible, | |
| .gradio-container .lb-search-box textarea:focus-visible { | |
| border-color: #2563eb !important; | |
| box-shadow: 0 0 0 1px #2563eb !important; | |
| } | |
| /* Dropdown select elements */ | |
| .lb-filters select, | |
| .lb-filters .secondary-wrap, | |
| .lb-filters [class*="dropdown"] input, | |
| .lb-filters [class*="Dropdown"] input { | |
| font-size: 11px !important; | |
| border-radius: 8px !important; | |
| border: 1px solid #d1d5db !important; | |
| background: #fff !important; | |
| color: #111 !important; | |
| box-shadow: none !important; | |
| padding: 6px 10px !important; | |
| height: 38px !important; | |
| min-height: 38px !important; | |
| box-sizing: border-box !important; | |
| line-height: 1.4 !important; | |
| } | |
| /* Filter row: single horizontal line, tight label-to-control spacing. | |
| - flex + align-items: flex-end β every control sits on the same baseline | |
| even if Gradio wrappers around the Textbox vs Dropdown have different | |
| intrinsic heights. | |
| - column-gap controls horizontal spacing between filters; row-gap kicks | |
| in only when the row wraps on narrow widths. | |
| - .lb-filter-col internal gap:6px is the only space between label and | |
| its input (replaces the previous wrapper-driven whitespace stack). */ | |
| .gradio-container .lb-filters { | |
| display: flex !important; | |
| flex-wrap: wrap !important; | |
| align-items: flex-end !important; | |
| justify-content: flex-start !important; | |
| column-gap: 10px !important; | |
| row-gap: 8px !important; | |
| margin-top: 4px !important; | |
| margin-bottom: 8px !important; | |
| } | |
| /* Each filter column is sized to its content + a small breathing margin, | |
| instead of expanding via Gradio's `scale=` prop (which sets flex-grow | |
| inline). Overriding flex-grow:0 stops the columns from absorbing the | |
| leftover row width, so the filter cluster sits at the row's left edge | |
| with `column-gap: 10px` between groups; the remaining horizontal space | |
| on wide viewports is intentionally empty. flex-shrink:1 keeps the | |
| responsive collapse behaviour on narrow widths. */ | |
| .gradio-container .lb-filter-col { | |
| display: flex !important; | |
| flex-direction: column !important; | |
| justify-content: flex-end !important; | |
| gap: 6px !important; | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| flex-grow: 0 !important; | |
| flex-shrink: 1 !important; | |
| } | |
| .gradio-container .lb-filters .lb-filter-col:nth-child(1) { flex-basis: 340px !important; } /* SEARCH */ | |
| .gradio-container .lb-filters .lb-filter-col:nth-child(2) { flex-basis: 170px !important; } /* SUBMISSION TYPE */ | |
| .gradio-container .lb-filters .lb-filter-col:nth-child(3) { flex-basis: 130px !important; } /* ACCESS */ | |
| .gradio-container .lb-filters .lb-filter-col:nth-child(4) { flex-basis: 140px !important; } /* PARAMETERS */ | |
| .gradio-container .lb-filters .lb-filter-col.lb-filter-verified { flex-basis: auto !important; } /* VERIFIED ONLY */ | |
| .gradio-container .lb-filters .lb-search-box input, | |
| .gradio-container .lb-filters .lb-search-box textarea { | |
| box-sizing: border-box !important; | |
| } | |
| /* Compact filter label sitting directly above its input β no extra | |
| margin/padding from Gradio's gr.HTML wrapper bleeds through. */ | |
| .gradio-container .filter-lbl { | |
| display: block !important; | |
| font-size: 12px !important; | |
| font-weight: 500 !important; | |
| color: #374151 !important; | |
| text-transform: uppercase !important; | |
| letter-spacing: 0.04em !important; | |
| line-height: 1.2 !important; | |
| margin: 0 !important; | |
| padding: 0 !important; | |
| } | |
| /* Strip Gradio's default block-level margins from every wrapper inside a | |
| filter column so the only vertical spacing comes from the .lb-filter-col | |
| `gap: 6px` above. Targets gr.HTML hosts, gr.Textbox/Dropdown/Checkbox | |
| blocks, and their inner .wrap / .form / .container divs. */ | |
| .gradio-container .lb-filter-col > .block, | |
| .gradio-container .lb-filter-col > .form, | |
| .gradio-container .lb-filter-col > .gr-html, | |
| .gradio-container .lb-filter-col > div, | |
| .gradio-container .lb-filter-col .wrap, | |
| .gradio-container .lb-filter-col .container { | |
| margin: 0 !important; | |
| } | |
| /* Root-cause fix for Search-vs-Dropdown misalignment: | |
| gr.Textbox's outer .block has more intrinsic padding-bottom than | |
| gr.Dropdown's, so even with `align-items: flex-end` on the row the | |
| columns' computed bottoms differed by a few pixels β the visible | |
| search input ended up sitting a touch higher than the dropdowns. | |
| Pin every NON-LABEL direct child of the filter column to exactly the | |
| visible control height (38px). The label block is excluded via | |
| :not(:has(.filter-lbl)) so it stays auto-height. */ | |
| .gradio-container .lb-filter-col > div:not(:has(.filter-lbl)) { | |
| height: 38px !important; | |
| min-height: 38px !important; | |
| box-sizing: border-box !important; | |
| display: flex !important; | |
| align-items: center !important; | |
| padding: 0 !important; | |
| } | |
| /* Checkbox column: the verified-only block also pins to 38px above, so the | |
| checkbox + its label sit vertically centered against the inputs' midline. */ | |
| .gradio-container .lb-filter-verified > div:not(:has(.filter-lbl)) { | |
| justify-content: flex-start !important; | |
| } | |
| /* ββ Tag / sort pills βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-col-toggle-inline .wrap, | |
| .lb-sort-pills .wrap { | |
| display: flex !important; | |
| flex-wrap: wrap !important; | |
| gap: 5px !important; | |
| padding: 2px 0 !important; | |
| } | |
| .lb-col-toggle-inline label, | |
| .lb-sort-pills label { | |
| background: none; | |
| border: 1px solid #d1d5db; | |
| border-radius: 999px; | |
| padding: 2px 8px; | |
| font-size: 11px; | |
| font-weight: 400; | |
| color: #6b7280; | |
| cursor: pointer; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| line-height: 1.6; | |
| user-select: none; | |
| transition: background 0.1s, border-color 0.1s, color 0.1s; | |
| } | |
| .lb-col-toggle-inline label:has(input:checked), | |
| .lb-sort-pills label:has(input:checked) { | |
| background: #fff; | |
| border-color: #9ca3af; | |
| color: #111; | |
| font-weight: 500; | |
| } | |
| /* Hide raw inputs behind pills */ | |
| .lb-col-toggle-inline input, | |
| .lb-sort-pills input, | |
| .lb-col-toggle-inline progress, | |
| .lb-sort-pills progress { display: none !important; } | |
| /* ββ Tab strip ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .tabs > .tab-nav, | |
| .gradio-container .tab-nav { | |
| border-bottom: 1px solid #e5e7eb !important; | |
| margin-bottom: 0 !important; | |
| padding: 0 !important; | |
| background: transparent !important; | |
| } | |
| /* Remove default padding between tab nav and table */ | |
| .gradio-container .tabitem { | |
| padding: 2px 0 0 0 !important; | |
| } | |
| .tab-nav button, | |
| .gradio-container .tab-nav button { | |
| background: transparent !important; | |
| border: none !important; | |
| border-bottom: 2px solid transparent !important; | |
| border-radius: 0 !important; | |
| padding: 10px 20px !important; | |
| margin: 0 !important; | |
| margin-bottom: -1px !important; | |
| font-size: 20px !important; | |
| line-height: 1.2 !important; | |
| font-weight: 400 !important; | |
| color: #6b7280 !important; | |
| box-shadow: none !important; | |
| transition: color 120ms ease, border-color 120ms ease; | |
| letter-spacing: 0.01em !important; | |
| } | |
| .tab-nav button:hover { color: #111 !important; } | |
| .tab-nav button.selected, | |
| .gradio-container .tab-nav button.selected { | |
| color: #111 !important; | |
| font-weight: 500 !important; | |
| border-bottom-color: #F66733 !important; | |
| } | |
| /* ββ Table container ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .table-wrap, | |
| .gradio-container [class*="dataframe"] { | |
| border: 1px solid #e5e7eb !important; | |
| border-radius: 12px !important; | |
| overflow: hidden !important; | |
| box-shadow: none !important; | |
| width: 100% !important; | |
| background: transparent !important; | |
| } | |
| /* User-resizable leaderboard table. | |
| Implemented in JS (see `_RESIZE_JS` in app.py) β browser-native | |
| CSS `resize: vertical` on .table-wrap was unreliable inside Gradio's | |
| Svelte wrapper, so a custom handle (.lb-resize-handle) is injected as | |
| a sibling of .lb-table and the JS writes `.table-wrap.style.height` | |
| directly on pointer drag. | |
| The CSS here only ensures: | |
| - .lb-table outer is natural block flow (no flex shenanigans), | |
| - .table-wrap is a top-anchored block-layout scroll viewport, | |
| - the .lb-resize-handle is visible and styled as a clean drag grip. */ | |
| .gradio-container .lb-table { | |
| resize: none !important; | |
| overflow: visible !important; | |
| display: block !important; | |
| min-height: 0 !important; | |
| max-height: none !important; | |
| } | |
| .gradio-container .lb-table > div, | |
| .gradio-container .lb-table > .container, | |
| .gradio-container .lb-table > .wrap { | |
| display: block !important; | |
| flex: none !important; | |
| min-height: 0 !important; | |
| height: auto !important; | |
| } | |
| .gradio-container .lb-table .table-wrap { | |
| overflow-x: auto !important; | |
| overflow-y: auto !important; | |
| display: block !important; | |
| box-sizing: border-box !important; | |
| /* Height is written inline by JS on drag. */ | |
| } | |
| /* Sticky header β pinned to the top of .table-wrap's scroll viewport while | |
| rows scroll beneath it. Single header row here (unlike the Overall tab's | |
| two-row grouped header), so no offset math is needed. */ | |
| .gradio-container .lb-table .table-wrap thead th { | |
| position: sticky !important; | |
| top: 0 !important; | |
| z-index: 2 !important; | |
| } | |
| .gradio-container .lb-table .table-wrap > table { | |
| margin: 0 !important; | |
| vertical-align: top !important; | |
| width: 100% !important; | |
| } | |
| /* Drag-grip element appended by JS as a sibling immediately after .lb-table. */ | |
| .gradio-container .lb-resize-handle { | |
| height: 14px; | |
| width: 100%; | |
| cursor: ns-resize; | |
| background: #f9fafb; | |
| border: 1px solid #e5e7eb; | |
| border-top: none; | |
| border-radius: 0 0 12px 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin-top: -1px; | |
| user-select: none; | |
| -webkit-user-select: none; | |
| transition: background 120ms ease; | |
| position: relative; | |
| z-index: 1; | |
| touch-action: none; | |
| } | |
| .gradio-container .lb-resize-handle::before { | |
| content: ""; | |
| width: 36px; | |
| height: 3px; | |
| background: #d1d5db; | |
| border-radius: 2px; | |
| transition: background 120ms ease; | |
| } | |
| .gradio-container .lb-resize-handle:hover { background: #f3f4f6; } | |
| .gradio-container .lb-resize-handle:hover::before { background: #9ca3af; } | |
| .gradio-container .lb-resize-handle:active::before { background: #6b7280; } | |
| /* Drop the lower corners on the dataframe shell so the handle attaches | |
| flush β non-mobile only, since the handle is hidden on mobile. */ | |
| @media (min-width: 769px) { | |
| .gradio-container .lb-table .table-wrap, | |
| .gradio-container .lb-table[class*="dataframe"] { | |
| border-bottom-left-radius: 0 !important; | |
| border-bottom-right-radius: 0 !important; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .gradio-container .lb-resize-handle { display: none !important; } | |
| .gradio-container .lb-table .table-wrap { | |
| height: auto !important; | |
| max-height: none !important; | |
| } | |
| } | |
| /* ββ Table ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container table, | |
| .gradio-container .table-wrap table, | |
| .gradio-container [class*="dataframe"] table { | |
| width: 100% !important; | |
| font-size: 11px !important; | |
| border-collapse: collapse !important; | |
| background: #fff !important; | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important; | |
| table-layout: fixed !important; | |
| } | |
| /* Column widths: #, Name are fixed; score cols share remaining space */ | |
| .gradio-container .lb-table thead th:nth-child(1) { width: 48px !important; } | |
| .gradio-container .lb-table thead th:nth-child(2) { width: 360px !important; } | |
| /* Hidden bridge Textbox (one per tab) for the row-click β side panel. | |
| Must remain in the DOM (so the JS in app.py's _RESIZE_JS can write the | |
| clicked model id into its <input> and fire .change), but takes zero | |
| visual space. Do NOT use display:none β Gradio's reactive update may | |
| skip non-rendered components. */ | |
| .gradio-container .lb-hidden-input { | |
| position: absolute !important; | |
| left: -9999px !important; | |
| width: 1px !important; | |
| height: 1px !important; | |
| opacity: 0 !important; | |
| pointer-events: none !important; | |
| overflow: hidden !important; | |
| } | |
| /* ββ Leaderboard tables: hand-rendered HTML, one shared visual style ββββ | |
| Every tab (Overall + the four pillars) is rendered by util.render as a | |
| plain HTML <table> instead of gr.Dataframe β gr.Dataframe can't express | |
| the Overall tab's two-row grouped pillar header, and once one tab | |
| needed hand-rolled markup, giving all five the same markup keeps their | |
| look and click/scroll behavior identical. | |
| Design intent: a CLEAN rectangular table. | |
| - Subtle 4px border-radius (not the 12px "card" look of gr.Dataframe) | |
| - Full visible border on all four sides β no overflow:hidden clipping | |
| - Readable font sizes (~15px body, 13β15px headers) β overrides the | |
| legacy 11px Gradio Dataframe defaults defined earlier in this file. */ | |
| /* Outer container = the gr.HTML element itself. Clean rectangular block: | |
| single subtle border on all four sides, small 4px radius, horizontal | |
| scroll only if the table exceeds the viewport, no vertical clipping. */ | |
| .gradio-container .lb-table-overall, | |
| .gradio-container .lb-table-spatial, | |
| .gradio-container .lb-table-st, | |
| .gradio-container .lb-table-temporal, | |
| .gradio-container .lb-table-semantic { | |
| border: 1px solid #e5e7eb !important; | |
| border-radius: 4px !important; | |
| background: #ffffff !important; | |
| box-shadow: none !important; | |
| overflow-x: auto !important; | |
| overflow-y: auto !important; | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| max-height: 480px; | |
| box-sizing: border-box !important; | |
| } | |
| /* Every table gets a resize handle (see _RESIZE_JS in app.py) attached as | |
| a sibling directly below it, so its bottom corners go square to sit | |
| flush against the handle. */ | |
| @media (min-width: 769px) { | |
| .gradio-container .lb-table-overall, | |
| .gradio-container .lb-table-spatial, | |
| .gradio-container .lb-table-st, | |
| .gradio-container .lb-table-temporal, | |
| .gradio-container .lb-table-semantic { | |
| border-bottom-left-radius: 0 !important; | |
| border-bottom-right-radius: 0 !important; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .gradio-container .lb-table-overall, | |
| .gradio-container .lb-table-spatial, | |
| .gradio-container .lb-table-st, | |
| .gradio-container .lb-table-temporal, | |
| .gradio-container .lb-table-semantic { | |
| max-height: none !important; | |
| height: auto !important; | |
| overflow-y: visible !important; | |
| } | |
| } | |
| /* Sticky header β pinned to the top of the scroll viewport while the body | |
| scrolls beneath it. The Overall tab has two header rows; `--lb-or-h` | |
| (the rendered height of its group-row) is measured and set by | |
| measureOverallHeaderOffset() in _RESIZE_JS so the task-row offset tracks | |
| actual font rendering instead of a guessed pixel value β the 34px | |
| fallback covers the pre-JS paint. The four pillar tabs have a single | |
| header row, so they just stick at top:0. */ | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th { | |
| position: sticky !important; | |
| top: 0 !important; | |
| z-index: 3 !important; | |
| } | |
| .gradio-container .lb-table-overall thead tr.lb-task-row th { | |
| position: sticky !important; | |
| top: var(--lb-or-h, 34px) !important; | |
| z-index: 3 !important; | |
| } | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th { | |
| position: sticky !important; | |
| top: 0 !important; | |
| z-index: 3 !important; | |
| } | |
| /* Strip any Gradio block padding/margin between the wrapper and the table. */ | |
| .gradio-container .lb-table-overall > *, | |
| .gradio-container .lb-table-spatial > *, | |
| .gradio-container .lb-table-st > *, | |
| .gradio-container .lb-table-temporal > *, | |
| .gradio-container .lb-table-semantic > * { | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| background: transparent !important; | |
| } | |
| /* The Overall table itself. | |
| min-width is the floor below which the container starts horizontally | |
| scrolling. The value is tuned so that every pillar super-header β | |
| including the long "Spatio-Temp" label sitting above a single task | |
| column β fits on one line without overflowing its cell. */ | |
| .gradio-container .lb-table-overall table.lb-overall-table { | |
| width: 100% !important; | |
| min-width: 1380px !important; | |
| table-layout: fixed !important; | |
| border-collapse: collapse !important; | |
| background: #ffffff !important; | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important; | |
| font-size: 15px !important; | |
| color: #111827 !important; | |
| margin: 0 !important; | |
| box-sizing: border-box !important; | |
| } | |
| /* Pillar tables: same font treatment as Overall, narrower min-width since | |
| they carry far fewer columns (rank + name + an aggregate score + 1β3 | |
| task scores). */ | |
| .gradio-container .lb-table-spatial table.lb-pillar-table, | |
| .gradio-container .lb-table-st table.lb-pillar-table, | |
| .gradio-container .lb-table-temporal table.lb-pillar-table, | |
| .gradio-container .lb-table-semantic table.lb-pillar-table { | |
| width: 100% !important; | |
| min-width: 640px !important; | |
| table-layout: fixed !important; | |
| border-collapse: collapse !important; | |
| background: #ffffff !important; | |
| font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important; | |
| font-size: 15px !important; | |
| color: #111827 !important; | |
| margin: 0 !important; | |
| box-sizing: border-box !important; | |
| } | |
| /* Column widths via <colgroup> (avoid nth-child collisions). All cells are | |
| border-box so padding doesn't bloat columns beyond their declared widths. | |
| IMPORTANT β border reset: Gradio's bundled CSS (Tailwind preflight in | |
| the HF Spaces build) sets `border-style: solid` + `border-width: 1px` on | |
| every element with a dark default color. With border-collapse:collapse | |
| that produces a fragmented near-black grid over every cell. We zero out | |
| top/left/right borders here; the specific rules below (with higher | |
| specificity) re-add only the intentional borders we want to see (row | |
| separators, header-bottom underlines, pillar-group dividers). */ | |
| .gradio-container .lb-table-overall thead th, | |
| .gradio-container .lb-table-overall tbody td, | |
| .gradio-container .lb-table-spatial thead th, | |
| .gradio-container .lb-table-spatial tbody td, | |
| .gradio-container .lb-table-st thead th, | |
| .gradio-container .lb-table-st tbody td, | |
| .gradio-container .lb-table-temporal thead th, | |
| .gradio-container .lb-table-temporal tbody td, | |
| .gradio-container .lb-table-semantic thead th, | |
| .gradio-container .lb-table-semantic tbody td { | |
| box-sizing: border-box !important; | |
| border-top: 0 none transparent !important; | |
| border-left: 0 none transparent !important; | |
| border-right: 1px solid rgba(82, 45, 128, 0.12) !important; | |
| } | |
| /* Strip the right-edge gridline from the last cell of each row so the | |
| container's outer border stands alone (no doubled line at the edge). */ | |
| .gradio-container .lb-table-overall thead tr > th:last-child, | |
| .gradio-container .lb-table-overall tbody tr > td:last-child, | |
| .gradio-container .lb-table-spatial thead tr > th:last-child, | |
| .gradio-container .lb-table-spatial tbody tr > td:last-child, | |
| .gradio-container .lb-table-st thead tr > th:last-child, | |
| .gradio-container .lb-table-st tbody tr > td:last-child, | |
| .gradio-container .lb-table-temporal thead tr > th:last-child, | |
| .gradio-container .lb-table-temporal tbody tr > td:last-child, | |
| .gradio-container .lb-table-semantic thead tr > th:last-child, | |
| .gradio-container .lb-table-semantic tbody tr > td:last-child { | |
| border-right: 0 none transparent !important; | |
| } | |
| .gradio-container .lb-table-overall colgroup col.col-rank { width: 64px; } | |
| .gradio-container .lb-table-overall colgroup col.col-name { width: 270px; } | |
| /* Overall: standalone (non-grouped) column between Name and the pillar | |
| task groups. Slightly wider than a task column to give the OVERALL | |
| header room to breathe. */ | |
| .gradio-container .lb-table-overall colgroup col.col-overall { width: 110px; } | |
| .gradio-container .lb-table-overall colgroup col.col-score { width: 110px; } | |
| /* Spatio-Temporal column: wider so the "Spatio-Temp" super-header fits | |
| on one line (its colspan=1, so no neighbor to share the width with). */ | |
| .gradio-container .lb-table-overall colgroup col.col-score-st { width: 150px; } | |
| .gradio-container .lb-table-overall thead th { width: auto !important; } | |
| /* Pillar tables: same rank/name column widths as Overall; the pillar's | |
| own aggregate score (col-agg) gets the same "headline" width as the | |
| Overall column, task columns share col-score. */ | |
| .gradio-container .lb-table-spatial colgroup col.col-rank, | |
| .gradio-container .lb-table-st colgroup col.col-rank, | |
| .gradio-container .lb-table-temporal colgroup col.col-rank, | |
| .gradio-container .lb-table-semantic colgroup col.col-rank { width: 64px; } | |
| .gradio-container .lb-table-spatial colgroup col.col-name, | |
| .gradio-container .lb-table-st colgroup col.col-name, | |
| .gradio-container .lb-table-temporal colgroup col.col-name, | |
| .gradio-container .lb-table-semantic colgroup col.col-name { width: 270px; } | |
| .gradio-container .lb-table-spatial colgroup col.col-agg, | |
| .gradio-container .lb-table-st colgroup col.col-agg, | |
| .gradio-container .lb-table-temporal colgroup col.col-agg, | |
| .gradio-container .lb-table-semantic colgroup col.col-agg { width: 140px; } | |
| .gradio-container .lb-table-spatial colgroup col.col-score, | |
| .gradio-container .lb-table-st colgroup col.col-score, | |
| .gradio-container .lb-table-temporal colgroup col.col-score, | |
| .gradio-container .lb-table-semantic colgroup col.col-score { width: 130px; } | |
| .gradio-container .lb-table-spatial thead th, | |
| .gradio-container .lb-table-st thead th, | |
| .gradio-container .lb-table-temporal thead th, | |
| .gradio-container .lb-table-semantic thead th { width: auto !important; } | |
| /* Row 1 β Pillar super-headers (Spatial / Spatio-Temp / Temporal / Semantic). | |
| Clemson-inspired light purple background with the deeper Clemson purple | |
| for the uppercase label text. Border colors are mid-purples that read as | |
| a subtle accent line, not a saturated rule. Overall-tab only β the four | |
| pillar tabs have no group-row grouping. */ | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-group { | |
| background: #E8E1F3 !important; /* Light Clemson purple */ | |
| color: #522D80 !important; /* Clemson purple */ | |
| font-size: 14px !important; | |
| font-weight: 700 !important; | |
| text-transform: uppercase !important; | |
| letter-spacing: 0.06em !important; | |
| padding: 8px 10px !important; | |
| border-bottom: 1px solid #C9B8E0 !important; | |
| text-align: center !important; | |
| cursor: default !important; | |
| white-space: nowrap !important; | |
| vertical-align: middle !important; | |
| } | |
| /* Row 1 β # / Name / Overall corner cells (rowspan=2, plain background). | |
| Shared with the pillar tables' # / Name header cells (single row there, | |
| same "corner" look). */ | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-corner, | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th.lb-corner { | |
| background: #f9fafb !important; | |
| color: #374151 !important; | |
| font-size: 13px !important; | |
| font-weight: 700 !important; | |
| text-transform: uppercase !important; | |
| letter-spacing: 0.05em !important; | |
| padding: 8px 10px !important; | |
| border-bottom: 1px solid #e5e7eb !important; | |
| text-align: left !important; | |
| cursor: default !important; | |
| vertical-align: middle !important; | |
| } | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th.lb-corner:first-child { | |
| text-align: center !important; | |
| } | |
| /* Overall corner header: same gray "corner" look as # and Name, centered | |
| above its centered numeric body cells. */ | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-corner-num { | |
| text-align: center !important; | |
| } | |
| /* OVERALL / pillar-aggregate column: continuous outer outline β no | |
| background fill, so the column inherits the neutral / zebra-striped | |
| background of the rest of the table. The four rails are assembled from | |
| per-cell borders that border-collapse:collapse merges into single | |
| continuous lines: | |
| - top = `border-top` on the header cell | |
| - left = `border-left` on header + every body cell (merge vertically) | |
| - right = `border-right` on header + every body cell (merge vertically) | |
| - bottom = `border-bottom` on the LAST body row's cell only | |
| Internal row separators (the 1px `#f3f4f6` between body rows from the | |
| shared tbody td rule) are left intact, so the box still shows row lines | |
| inside. No hover override β the cell joins the row-wide `#F3EEF9` hover | |
| wash like every other cell. `lb-overall` is the Overall tab's column; | |
| `lb-agg` / `lb-agg-th` is the equivalent pillar-tab aggregate-score | |
| column. */ | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-corner.lb-corner-num, | |
| .gradio-container .lb-table-spatial thead th.lb-agg-th, | |
| .gradio-container .lb-table-st thead th.lb-agg-th, | |
| .gradio-container .lb-table-temporal thead th.lb-agg-th, | |
| .gradio-container .lb-table-semantic thead th.lb-agg-th { | |
| border-top: 2px solid #522D80 !important; | |
| border-left: 2px solid #522D80 !important; | |
| border-right: 2px solid #522D80 !important; | |
| } | |
| .gradio-container .lb-table-overall tbody tr td.lb-overall, | |
| .gradio-container .lb-table-spatial tbody tr td.lb-agg, | |
| .gradio-container .lb-table-st tbody tr td.lb-agg, | |
| .gradio-container .lb-table-temporal tbody tr td.lb-agg, | |
| .gradio-container .lb-table-semantic tbody tr td.lb-agg { | |
| border-left: 2px solid #522D80 !important; | |
| border-right: 2px solid #522D80 !important; | |
| } | |
| .gradio-container .lb-table-overall tbody tr:last-child td.lb-overall, | |
| .gradio-container .lb-table-spatial tbody tr:last-child td.lb-agg, | |
| .gradio-container .lb-table-st tbody tr:last-child td.lb-agg, | |
| .gradio-container .lb-table-temporal tbody tr:last-child td.lb-agg, | |
| .gradio-container .lb-table-semantic tbody tr:last-child td.lb-agg { | |
| border-bottom: 2px solid #522D80 !important; | |
| } | |
| /* Row 2 β Task subheaders (Overall) / the only header row's non-corner | |
| columns (pillar tabs). Same look either way: gray background, uppercase, | |
| 600 weight. */ | |
| .gradio-container .lb-table-overall thead tr.lb-task-row th, | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th { | |
| background: #f9fafb !important; | |
| color: #4b5563 !important; | |
| font-size: 13px !important; | |
| font-weight: 600 !important; | |
| text-transform: uppercase !important; | |
| letter-spacing: 0.04em !important; | |
| padding: 6px 10px !important; | |
| border-bottom: 1px solid #e5e7eb !important; | |
| text-align: center !important; | |
| cursor: default !important; | |
| white-space: nowrap !important; | |
| } | |
| /* # / Name corner cells win the bold-700/left-align "corner" treatment | |
| back over the shared task-header rule above (extra .lb-corner class | |
| gives it higher specificity regardless of source order). */ | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th.lb-corner { | |
| font-weight: 700 !important; | |
| letter-spacing: 0.05em !important; | |
| text-align: left !important; | |
| } | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th.lb-corner:first-child, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th.lb-corner:first-child { | |
| text-align: center !important; | |
| } | |
| /* Body cells β identical across all five tabs. */ | |
| .gradio-container .lb-table-overall tbody td, | |
| .gradio-container .lb-table-spatial tbody td, | |
| .gradio-container .lb-table-st tbody td, | |
| .gradio-container .lb-table-temporal tbody td, | |
| .gradio-container .lb-table-semantic tbody td { | |
| padding: 10px 10px !important; | |
| border-bottom: 1px solid #f3f4f6 !important; | |
| vertical-align: middle !important; | |
| font-size: 15px !important; | |
| line-height: 1.4 !important; | |
| color: #111827 !important; | |
| background: #ffffff !important; | |
| } | |
| .gradio-container .lb-table-overall tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-spatial tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-st tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-temporal tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-semantic tbody tr:nth-child(even) td { | |
| background: #fafafa !important; | |
| } | |
| .gradio-container .lb-table-overall tbody tr:last-child td, | |
| .gradio-container .lb-table-spatial tbody tr:last-child td, | |
| .gradio-container .lb-table-st tbody tr:last-child td, | |
| .gradio-container .lb-table-temporal tbody tr:last-child td, | |
| .gradio-container .lb-table-semantic tbody tr:last-child td { | |
| border-bottom: none !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-rank, | |
| .gradio-container .lb-table-spatial tbody td.lb-rank, | |
| .gradio-container .lb-table-st tbody td.lb-rank, | |
| .gradio-container .lb-table-temporal tbody td.lb-rank, | |
| .gradio-container .lb-table-semantic tbody td.lb-rank { | |
| text-align: center !important; | |
| color: #6b7280 !important; | |
| font-variant-numeric: tabular-nums; | |
| font-size: 14px !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-name, | |
| .gradio-container .lb-table-spatial tbody td.lb-name, | |
| .gradio-container .lb-table-st tbody td.lb-name, | |
| .gradio-container .lb-table-temporal tbody td.lb-name, | |
| .gradio-container .lb-table-semantic tbody td.lb-name { | |
| text-align: left !important; | |
| font-size: 15px !important; | |
| vertical-align: top !important; | |
| padding-top: 12px !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-score, | |
| .gradio-container .lb-table-spatial tbody td.lb-score, | |
| .gradio-container .lb-table-st tbody td.lb-score, | |
| .gradio-container .lb-table-temporal tbody td.lb-score, | |
| .gradio-container .lb-table-semantic tbody td.lb-score { | |
| text-align: center !important; | |
| font-variant-numeric: tabular-nums; | |
| font-size: 15px !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-spatial tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-st tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-temporal tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-semantic tbody td.lb-score.lb-max { | |
| font-weight: 700 !important; | |
| color: #111827 !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-empty-row, | |
| .gradio-container .lb-table-spatial tbody td.lb-empty-row, | |
| .gradio-container .lb-table-st tbody td.lb-empty-row, | |
| .gradio-container .lb-table-temporal tbody td.lb-empty-row, | |
| .gradio-container .lb-table-semantic tbody td.lb-empty-row { | |
| text-align: center !important; | |
| padding: 28px 12px !important; | |
| color: #6b7280 !important; | |
| font-size: 14px !important; | |
| } | |
| .gradio-container .lb-table-overall tbody tr:hover td, | |
| .gradio-container .lb-table-spatial tbody tr:hover td, | |
| .gradio-container .lb-table-st tbody tr:hover td, | |
| .gradio-container .lb-table-temporal tbody tr:hover td, | |
| .gradio-container .lb-table-semantic tbody tr:hover td { | |
| background: #F3EEF9 !important; /* Very light Clemson purple */ | |
| } | |
| /* Bump readability of the model-name cell so it fills row whitespace. | |
| Sizes scale together (name β org β badges) so the visual hierarchy is | |
| preserved: name dominant, org subtly secondary, badges still lightweight. */ | |
| .gradio-container .lb-table-overall tbody td.lb-name .mc-name-row, | |
| .gradio-container .lb-table-spatial tbody td.lb-name .mc-name-row, | |
| .gradio-container .lb-table-st tbody td.lb-name .mc-name-row, | |
| .gradio-container .lb-table-temporal tbody td.lb-name .mc-name-row, | |
| .gradio-container .lb-table-semantic tbody td.lb-name .mc-name-row { font-size: 17px !important; } | |
| .gradio-container .lb-table-overall tbody td.lb-name .mc-org, | |
| .gradio-container .lb-table-spatial tbody td.lb-name .mc-org, | |
| .gradio-container .lb-table-st tbody td.lb-name .mc-org, | |
| .gradio-container .lb-table-temporal tbody td.lb-name .mc-org, | |
| .gradio-container .lb-table-semantic tbody td.lb-name .mc-org { font-size: 13px !important; } | |
| .gradio-container .lb-table-overall tbody td.lb-name .mc-badges .b, | |
| .gradio-container .lb-table-spatial tbody td.lb-name .mc-badges .b, | |
| .gradio-container .lb-table-st tbody td.lb-name .mc-badges .b, | |
| .gradio-container .lb-table-temporal tbody td.lb-name .mc-badges .b, | |
| .gradio-container .lb-table-semantic tbody td.lb-name .mc-badges .b { | |
| font-size: 12px !important; | |
| padding: 2px 7px !important; | |
| } | |
| .gradio-container .lb-table-overall tbody td.lb-name .mc-name-row .b-verified, | |
| .gradio-container .lb-table-spatial tbody td.lb-name .mc-name-row .b-verified, | |
| .gradio-container .lb-table-st tbody td.lb-name .mc-name-row .b-verified, | |
| .gradio-container .lb-table-temporal tbody td.lb-name .mc-name-row .b-verified, | |
| .gradio-container .lb-table-semantic tbody td.lb-name .mc-name-row .b-verified { | |
| font-size: 11px !important; | |
| padding: 2px 6px !important; | |
| } | |
| /* Header row */ | |
| .gradio-container thead th, | |
| .gradio-container .table-wrap thead th { | |
| background: #f9fafb !important; | |
| color: #374151 !important; | |
| font-size: 11px !important; | |
| font-weight: 600 !important; | |
| text-transform: uppercase !important; | |
| letter-spacing: 0.05em !important; | |
| padding: 6px 10px !important; | |
| border-bottom: 1px solid #e5e7eb !important; | |
| white-space: nowrap !important; | |
| text-align: left !important; | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| .gradio-container thead th:not(:first-child):not(:nth-child(2)) { | |
| text-align: right !important; | |
| } | |
| /* Data rows */ | |
| .gradio-container tbody tr { border-bottom: 1px solid #e5e7eb; } | |
| .gradio-container tbody tr:last-child { border-bottom: none; } | |
| .gradio-container tbody tr:nth-child(even) td { background: #fafafa !important; } | |
| .gradio-container tbody tr:nth-child(odd) td { background: #ffffff !important; } | |
| .gradio-container tbody tr:hover td { background: #F3EEF9 !important; } /* Clemson light purple hover */ | |
| /* Cells */ | |
| .gradio-container tbody td, | |
| .gradio-container .table-wrap tbody td { | |
| padding: 5px 10px !important; | |
| border-bottom: 1px solid #f3f4f6 !important; | |
| vertical-align: middle !important; | |
| font-size: 11px !important; | |
| line-height: 1.35 !important; | |
| text-align: right; | |
| } | |
| .gradio-container tbody td:first-child { | |
| text-align: center !important; | |
| font-size: 11px !important; | |
| color: #6b7280; | |
| } | |
| .gradio-container tbody td:nth-child(2) { text-align: left !important; } | |
| /* ββ Model cell (html datatype) ββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Vertical stack: model name β organization β badges, all left-anchored | |
| to the same column edge. align-items: flex-start collapses each child | |
| to its content width so nothing stretches and visually drifts. */ | |
| .gradio-container .mc { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 0; | |
| line-height: 1.3; | |
| padding: 0; | |
| } | |
| .gradio-container .mc-org { | |
| font-size: 11px; | |
| color: #9ca3af; | |
| font-weight: 400; | |
| line-height: 1.25; | |
| margin-top: 1px; | |
| } | |
| .gradio-container .mc-link { | |
| color: inherit; | |
| text-decoration: none; | |
| /* Hard-anchor the link to the same x=0 as the org line and badge row. | |
| Base styles from Gradio / HF Spaces can otherwise inject a few pixels | |
| of padding or shift the inline-link box, causing the name to drift | |
| right of the org/badge stack underneath. */ | |
| display: inline-block; | |
| margin: 0 !important; | |
| padding: 0 !important; | |
| border: 0 !important; | |
| background: transparent !important; | |
| text-indent: 0 !important; | |
| vertical-align: baseline; | |
| } | |
| .gradio-container .mc-link b { | |
| margin: 0 !important; | |
| padding: 0 !important; | |
| border: 0 !important; | |
| text-indent: 0 !important; | |
| font-weight: 700; | |
| } | |
| .gradio-container .mc-link:hover { | |
| text-decoration: underline; | |
| color: #2563eb; | |
| } | |
| /* Defensive: every direct child of the model cell anchors at x=0. */ | |
| .gradio-container .mc > .mc-name-row, | |
| .gradio-container .mc > .mc-org, | |
| .gradio-container .mc > .mc-badges { | |
| margin-left: 0 !important; | |
| padding-left: 0 !important; | |
| text-indent: 0 !important; | |
| } | |
| .gradio-container .mc-badges { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: flex-start; | |
| gap: 2px; | |
| margin-top: 4px; | |
| } | |
| .gradio-container .mc-badges .b { | |
| font-size: 9px !important; | |
| padding: 1px 4px !important; | |
| margin-left: 0 !important; | |
| } | |
| /* ββ Badges βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .b, .lb-badge { | |
| display: inline-block; | |
| border-radius: 999px; | |
| font-size: 9px; | |
| font-weight: 500; | |
| padding: 1px 5px; | |
| vertical-align: middle; | |
| white-space: nowrap; | |
| border: 1px solid transparent; | |
| margin-left: 4px; | |
| line-height: 1.5; | |
| } | |
| .b-verified, .lb-badge-verified { background: #dcfce7; color: #15803d; border-color: #86efac; } | |
| .b-ensemble, .lb-badge-ensemble { background: #dbeafe; color: #1d4ed8; border-color: #93c5fd; } | |
| .b-single, .lb-badge-single { background: #f3f4f6; color: #374151; border-color: #d1d5db; } | |
| .b-open, .lb-badge-open { background: #ccfbf1; color: #0f766e; border-color: #5eead4; } | |
| .b-prop, .lb-badge-prop, | |
| .lb-badge-proprietary { background: #fef3c7; color: #92400e; border-color: #fcd34d; } | |
| .b-new, .lb-badge-new { background: #ede9fe; color: #5b21b6; border-color: #c4b5fd; } | |
| /* ββ Badge legend (below table) ββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-badge-legend { | |
| border-top: 1px solid #f3f4f6; | |
| margin-top: 8px; | |
| padding: 10px 0 6px; | |
| font-size: 11px; | |
| } | |
| .lb-badge-legend .legend-title { | |
| font-weight: 600; | |
| color: #6b7280; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| font-size: 10px; | |
| margin-bottom: 6px; | |
| } | |
| .lb-badge-legend .legend-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, max-content)); | |
| column-gap: 32px; | |
| row-gap: 6px; | |
| max-width: 100%; | |
| } | |
| .lb-badge-legend .legend-item { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| min-width: 0; | |
| white-space: nowrap; | |
| } | |
| .lb-badge-legend .legend-desc { | |
| color: #9ca3af; | |
| font-size: 11px; | |
| white-space: nowrap; | |
| } | |
| @media (max-width: 720px) { | |
| .lb-badge-legend .legend-grid { grid-template-columns: 1fr; } | |
| .lb-badge-legend .legend-item, | |
| .lb-badge-legend .legend-desc { white-space: normal; } | |
| } | |
| /* ββ Status / legend / footer βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-status, p.lb-status { | |
| font-size: 12px; | |
| color: #6b7280; | |
| margin: 0 0 7px; | |
| min-height: 1em; | |
| display: flex; | |
| justify-content: space-between; | |
| } | |
| .lb-legend, p.lb-legend { | |
| font-size: 11px; | |
| color: #9ca3af; | |
| font-style: italic; | |
| margin: 8px 0 0; | |
| } | |
| .lb-footer { | |
| font-size: 11px; | |
| color: #6b7280; | |
| margin-top: 8px; | |
| font-style: italic; | |
| text-align: center; | |
| } | |
| /* ββ About / Submit tab βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-about { | |
| max-width: min(75%, 1280px); | |
| margin-left: 0 !important; | |
| margin-right: auto !important; | |
| font-size: 13px; | |
| color: #6b7280; | |
| line-height: 1.7; | |
| padding-bottom: 32px; | |
| } | |
| .lb-about h3 { | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: #111; | |
| margin: 14px 0 5px; | |
| } | |
| .lb-about p { margin-bottom: 8px; } | |
| .lb-about a { color: #2563eb; text-decoration: none; } | |
| .lb-about pre, | |
| .lb-about code { | |
| font-size: 11px; | |
| background: #f3f4f6; | |
| border: 1px solid #e5e7eb; | |
| border-radius: 8px; | |
| padding: 10px; | |
| display: block; | |
| line-height: 1.6; | |
| font-family: "SF Mono", Monaco, ui-monospace, monospace; | |
| } | |
| /* About-tab tables β crisp outlined grid (no rounded-card look). | |
| Uses border-collapse: collapse with explicit cell borders so the bottom | |
| row's edge is part of every cell, not relying on the row's :last-child | |
| border which the global rule strips. Specificity beats the global table | |
| rules thanks to the .lb-about prefix. */ | |
| .gradio-container .lb-about table { | |
| border: 1px solid #d1d5db !important; | |
| border-radius: 0 !important; | |
| border-collapse: collapse !important; | |
| border-spacing: 0 !important; | |
| overflow: visible !important; | |
| width: 100% !important; | |
| margin: 14px 0 20px !important; | |
| font-size: 12px !important; | |
| background: #ffffff !important; | |
| table-layout: auto !important; | |
| } | |
| .gradio-container .lb-about table th, | |
| .gradio-container .lb-about table td { | |
| border: 1px solid #e5e7eb !important; | |
| padding: 8px 12px !important; | |
| text-align: left !important; | |
| vertical-align: top !important; | |
| line-height: 1.55 !important; | |
| background: #ffffff !important; | |
| color: #374151 !important; | |
| font-size: 12px !important; | |
| white-space: normal !important; | |
| } | |
| .gradio-container .lb-about table thead th { | |
| background: #f3f4f6 !important; | |
| color: #111827 !important; | |
| font-size: 11px !important; | |
| font-weight: 600 !important; | |
| text-transform: none !important; | |
| letter-spacing: 0 !important; | |
| border-bottom: 1px solid #d1d5db !important; | |
| cursor: default !important; | |
| } | |
| /* Override the global `thead th:not(:first-child):not(:nth-child(2)) { | |
| text-align: right }` rule (intended for leaderboard score columns) so | |
| that 3rd+ headers in About tables ("Tasks", "Primary Metric") hug the | |
| left edge like the other headers. Specificity wins via the extra | |
| `.lb-about` class qualifier. */ | |
| .gradio-container .lb-about table thead th:not(:first-child):not(:nth-child(2)) { | |
| text-align: left !important; | |
| } | |
| /* Override global `tbody tr:last-child { border-bottom: none }` so the | |
| bottom row keeps a visible edge. */ | |
| .gradio-container .lb-about table tbody tr:last-child td { | |
| border-bottom: 1px solid #e5e7eb !important; | |
| } | |
| /* Subtle row striping for scannability β but background must yield to | |
| the border color, so no transparent tricks. */ | |
| .gradio-container .lb-about table tbody tr:nth-child(even) td { | |
| background: #fafafa !important; | |
| } | |
| .gradio-container .lb-about table tbody tr:hover td { | |
| background: #f9fafb !important; | |
| } | |
| /* About-page links β clear blue affordance, default underline so they | |
| read as links at a glance, with a subtle β on external URLs. */ | |
| .gradio-container .lb-about a { | |
| color: #1d4ed8; | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| font-weight: 500; | |
| } | |
| .gradio-container .lb-about a:hover { | |
| color: #1e40af; | |
| text-decoration-thickness: 2px; | |
| } | |
| /* No external-link arrow on About-page links β kept clean and minimal. */ | |
| .gradio-container .lb-about a::after, | |
| .gradio-container .lb-about a[href^="http"]::after { | |
| content: none !important; | |
| } | |
| /* Citation BibTeX block β research-grade, copy/paste friendly. | |
| Selectable text, monospaced, soft outline, horizontal scroll for long | |
| lines so the page width is preserved. */ | |
| .gradio-container .lb-about pre { | |
| background: #f9fafb !important; | |
| border: 1px solid #e5e7eb !important; | |
| border-radius: 6px !important; | |
| padding: 12px 14px !important; | |
| font-size: 12px !important; | |
| line-height: 1.6 !important; | |
| color: #111827 !important; | |
| overflow-x: auto !important; | |
| white-space: pre !important; | |
| user-select: text !important; | |
| -webkit-user-select: text !important; | |
| cursor: text !important; | |
| margin: 8px 0 16px !important; | |
| font-family: "SF Mono", Monaco, ui-monospace, Consolas, monospace !important; | |
| } | |
| .gradio-container .lb-about pre code, | |
| .gradio-container .lb-about pre code * { | |
| user-select: text !important; | |
| -webkit-user-select: text !important; | |
| background: transparent !important; | |
| border: none !important; | |
| padding: 0 !important; | |
| color: inherit !important; | |
| font-family: inherit !important; | |
| font-size: inherit !important; | |
| } | |
| /* Make sure the Gradio-rendered copy button on code blocks is visible. */ | |
| .gradio-container .lb-about pre + button, | |
| .gradio-container .lb-about .code_wrap button, | |
| .gradio-container .lb-about [class*="copy"] button { | |
| display: inline-flex !important; | |
| opacity: 1 !important; | |
| visibility: visible !important; | |
| } | |
| /* ββ Responsive βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 768px) { | |
| .gradio-container { padding: 16px !important; } | |
| .lb-nav { justify-content: center; padding: 8px 0 0; } | |
| .lb-nav-hero { font-size: 16px; gap: 16px; } | |
| .lb-nav-hero .lb-sep { font-size: 16px; } | |
| .gradio-container .lb-wordmark, | |
| .gradio-container .lb-hero .lb-wordmark { | |
| font-size: 42px !important; | |
| letter-spacing: -0.8px !important; | |
| } | |
| .lb-summary, .lb-acronym { max-width: 100% !important; padding: 0 8px; } | |
| .lb-about, .lb-tab-desc { max-width: 100% !important; } | |
| } | |
| @media (max-width: 480px) { | |
| .gradio-container .lb-wordmark, | |
| .gradio-container .lb-hero .lb-wordmark { | |
| font-size: 34px !important; | |
| letter-spacing: -0.4px !important; | |
| } | |
| } | |
| /* ββ Side panel layout βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-table-row { | |
| gap: 12px !important; | |
| align-items: flex-start !important; | |
| } | |
| /* Strip block decoration from Columns inside the table row */ | |
| .lb-table-row > div > .block { | |
| border: none !important; | |
| background: transparent !important; | |
| padding: 0 !important; | |
| box-shadow: none !important; | |
| } | |
| .lb-side-panel { | |
| width: 280px !important; | |
| min-width: 280px !important; | |
| max-width: 280px !important; | |
| flex-shrink: 0 !important; | |
| padding: 0 !important; | |
| } | |
| /* ββ Panel card βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .sp-wrap { | |
| border: 1px solid #e5e7eb; | |
| border-radius: 12px; | |
| background: #fff; | |
| font-size: 12px; | |
| overflow: hidden; | |
| line-height: 1.4; | |
| } | |
| .sp-hdr { | |
| padding: 12px 14px; | |
| border-bottom: 1px solid #f3f4f6; | |
| } | |
| .sp-name { | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: #111827; | |
| line-height: 1.3; | |
| margin-bottom: 2px; | |
| } | |
| .sp-org { font-size: 11px; color: #6b7280; } | |
| /* ββ Side-panel Gradio close button βββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .lb-side-panel .sp-close-btn { | |
| display: flex !important; | |
| justify-content: flex-end !important; | |
| padding: 0 !important; | |
| margin: 0 0 4px !important; | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| } | |
| .gradio-container .lb-side-panel .sp-close-btn button { | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| color: #9ca3af !important; | |
| font-size: 16px !important; | |
| line-height: 1 !important; | |
| padding: 4px 6px !important; | |
| cursor: pointer !important; | |
| border-radius: 4px !important; | |
| min-width: 0 !important; | |
| width: auto !important; | |
| } | |
| .gradio-container .lb-side-panel .sp-close-btn button:hover { | |
| background: #f3f4f6 !important; | |
| color: #374151 !important; | |
| } | |
| .sp-body { padding: 12px 14px 14px; } | |
| .sp-badges { | |
| display: flex; | |
| gap: 3px; | |
| flex-wrap: wrap; | |
| margin-bottom: 12px; | |
| } | |
| .sp-section { margin-bottom: 14px; } | |
| .sp-section-label { | |
| font-size: 10px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| color: #9ca3af; | |
| margin-bottom: 6px; | |
| } | |
| .sp-radar { text-align: center; } | |
| .sp-grid { | |
| display: grid; | |
| grid-template-columns: 1fr auto; | |
| gap: 3px 8px; | |
| } | |
| .sp-k { color: #6b7280; font-size: 11px; } | |
| .sp-v { | |
| font-weight: 500; | |
| text-align: right; | |
| font-variant-numeric: tabular-nums; | |
| font-size: 11px; | |
| color: #111827; | |
| } | |
| .sp-dom { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 6px; | |
| } | |
| .sp-dom-card { | |
| border: 1px solid #e5e7eb; | |
| border-radius: 8px; | |
| padding: 7px 6px; | |
| text-align: center; | |
| } | |
| .sp-dn { | |
| font-size: 9px; | |
| color: #9ca3af; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| margin-bottom: 3px; | |
| } | |
| .sp-dv { font-size: 14px; font-weight: 600; color: #111827; } | |
| .sp-date { | |
| font-size: 11px; | |
| color: #9ca3af; | |
| margin-top: 12px; | |
| padding-top: 10px; | |
| border-top: 1px solid #f3f4f6; | |
| } | |
| /* ββ Layout order: tabs above filter controls βββββββββββββββββββββββββββ */ | |
| .gradio-container .fillable { | |
| display: flex !important; | |
| flex-direction: column !important; | |
| } | |
| .gradio-container .lb-top-tabs { order: 1 !important; } | |
| .gradio-container .lb-status-wrap { order: 3 !important; } | |
| /* ββ Model cell β name row (name + verified badge inline) ββββββββββββββ */ | |
| .gradio-container .mc-name-row { | |
| display: flex; | |
| align-items: center; | |
| justify-content: flex-start; | |
| gap: 5px; | |
| line-height: 1.2; | |
| flex-wrap: wrap; | |
| } | |
| .gradio-container .mc-name-row .b-verified { | |
| font-size: 9px !important; | |
| padding: 1px 5px !important; | |
| margin-left: 0 !important; | |
| } | |
| /* ββ Search box label override (non-uppercase, darker) βββββββββββββββββ */ | |
| .lb-search-box .label-wrap span, | |
| .lb-search-box label span { | |
| text-transform: none !important; | |
| color: #374151 !important; | |
| font-size: 12px !important; | |
| letter-spacing: 0 !important; | |
| font-weight: 500 !important; | |
| } | |
| /* ββ Side panel additions βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .sp-card-link { | |
| font-size: 11px; | |
| color: #2563eb; | |
| text-decoration: none; | |
| margin-left: 6px; | |
| font-weight: 400; | |
| } | |
| .sp-card-link:hover { text-decoration: underline; } | |
| .sp-info-grid { | |
| display: grid; | |
| grid-template-columns: 1fr auto; | |
| gap: 3px 8px; | |
| } | |
| .sp-panel-badges { | |
| display: flex; | |
| gap: 3px; | |
| flex-wrap: wrap; | |
| margin-top: 6px; | |
| } | |
| /* ββ Tab description blocks ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-tab-desc { | |
| font-size: 12px; | |
| color: #6b7280; | |
| line-height: 1.6; | |
| padding: 0; | |
| margin-left: 0 !important; | |
| margin-right: auto !important; | |
| max-width: min(75%, 1280px); | |
| } | |
| .lb-tab-desc b, .lb-tab-desc strong { | |
| font-weight: 500; | |
| color: #374151; | |
| } | |
| /* Kill Gradio wrapper margins around HTML blocks inside tabs */ | |
| .gradio-container .gr-html { margin-top: 0 !important; margin-bottom: 0 !important; } | |
| .gradio-container .tabitem > .block { margin-top: 0 !important; margin-bottom: 0 !important; } | |
| /* ββ Stats bar βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-stats { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 8px 16px; | |
| margin-top: 10px; | |
| font-size: 16px; | |
| color: #111827; | |
| } | |
| .lb-stats b { color: #111827; font-weight: 600; } | |
| .lb-stat-sep { | |
| color: #111827; | |
| font-size: 18px; | |
| font-weight: 700; | |
| line-height: 1; | |
| display: inline-block; | |
| transform: translateY(-1px); | |
| } | |
| /* ββ Filter section header βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-filter-header { | |
| font-size: 11px !important; | |
| font-weight: 600 !important; | |
| color: #374151 !important; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| margin: 0 0 4px !important; | |
| padding: 0 !important; | |
| } | |
| /* ββ Pillar intro (above filters on pillar tabs) βββββββββββββββββββββββββ */ | |
| .gradio-container .lb-pillar-desc-wrap, | |
| .gradio-container .lb-pillar-desc-wrap > .block { | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| } | |
| .lb-pillar-desc { | |
| font-size: 13px; | |
| color: #6b7280; | |
| line-height: 1.6; | |
| padding: 10px 0 12px; | |
| margin: 0; | |
| } | |
| /* ββ Below-table descriptions (between dataframe and legend) ββββββββββββ */ | |
| .gradio-container .lb-desc-wrap, | |
| .gradio-container .lb-desc-wrap > .block { | |
| background: transparent !important; | |
| border: none !important; | |
| box-shadow: none !important; | |
| padding: 0 !important; | |
| margin: 0 !important; | |
| } | |
| .lb-desc { | |
| font-size: 12px; | |
| color: #6b7280; | |
| line-height: 1.6; | |
| padding: 12px 2px 4px; | |
| margin-top: 6px; | |
| } | |
| .lb-desc-overall p { | |
| margin: 0; | |
| } | |
| .lb-desc-tasks dl { | |
| display: grid; | |
| grid-template-columns: max-content 1fr; | |
| column-gap: 14px; | |
| row-gap: 6px; | |
| margin: 0; | |
| } | |
| .lb-desc-tasks dt { | |
| font-weight: 600; | |
| color: #374151; | |
| font-size: 12px; | |
| margin: 0; | |
| } | |
| .lb-desc-tasks dd { | |
| margin: 0; | |
| color: #6b7280; | |
| font-size: 12px; | |
| } | |
| @media (max-width: 720px) { | |
| .lb-desc-tasks dl { grid-template-columns: 1fr; row-gap: 2px; } | |
| .lb-desc-tasks dd { padding-bottom: 4px; } | |
| } | |
| /* ββ Task detail description below table βββββββββββββββββββββββββββββββββ */ | |
| .lb-detail-desc { | |
| font-size: 12px; | |
| color: #6b7280; | |
| line-height: 1.65; | |
| padding: 12px 0 0; | |
| border-top: 1px solid #f3f4f6; | |
| margin-top: 10px; | |
| } | |
| .lb-detail-desc b { font-weight: 500; color: #374151; } | |
| .gradio-container .lb-detail-wrap, | |
| .gradio-container .lb-detail-wrap > .block { | |
| padding: 0 !important; background: transparent !important; | |
| border: none !important; box-shadow: none !important; | |
| } | |
| /* ββ Table footer (version + date) βββββββββββββββββββββββββββββββββββββββ */ | |
| .lb-table-footer { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 8px 2px 0; | |
| margin-top: 6px; | |
| font-size: 11px; | |
| color: #9ca3af; | |
| } | |
| .lb-version { | |
| background: transparent; | |
| border: none; | |
| padding: 0; | |
| font-size: 11px; | |
| font-weight: 400; | |
| color: #9ca3af; | |
| letter-spacing: 0; | |
| } | |
| .lb-footer-left { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .lb-footer-left .lb-sep { color: #d1d5db; } | |
| .gradio-container .lb-footer-wrap, | |
| .gradio-container .lb-footer-wrap > .block { | |
| padding: 0 !important; background: transparent !important; | |
| border: none !important; box-shadow: none !important; | |
| } | |
| /* ββ Two-column desc + filter row βββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .lb-desc-filter-row { | |
| align-items: flex-start !important; | |
| gap: 16px !important; | |
| margin-bottom: 6px !important; | |
| margin-top: 6px !important; | |
| padding: 0 !important; | |
| } | |
| .gradio-container .lb-desc-filter-row > .block { padding: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; } | |
| .gradio-container .lb-tab-desc-col > .block { padding: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; } | |
| /* Tighten gap between desc/filter row and table */ | |
| .gradio-container .lb-table-row { margin-top: 0 !important; padding-top: 0 !important; } | |
| .gradio-container .lb-table-row > div > .block { padding-top: 0 !important; } | |
| /* ββ Hide status bar βββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .lb-status-wrap { display: none !important; } | |
| /* ββ Hide dataframe toolbar (copy / fullscreen buttons) ββββββββββββββββββ */ | |
| .gradio-container .table-wrap .table-menu, | |
| .gradio-container .table-wrap .icon-button-wrapper, | |
| .gradio-container [class*="dataframe"] .table-menu, | |
| .gradio-container [class*="dataframe"] .icon-button-wrapper, | |
| .icon-button-wrapper, | |
| [data-testid="block-info"], | |
| .gradio-container .copy-text, | |
| .gradio-container button.download { | |
| display: none !important; | |
| } | |
| /* ββ Kill gap between desc/filter row and table ββββββββββββββββββββββ */ | |
| .gradio-container .gradio-dataframe { margin-top: 0 !important; padding-top: 0 !important; } | |
| .gradio-container .lb-controls-wrap .block { gap: 6px !important; } | |
| /* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ββ Dark-mode hard overrides (must come last) βββββββββββββββββββββββββ | |
| These rules ensure every text-bearing leaderboard element has an | |
| EXPLICIT dark color even when Gradio/HF Spaces re-themes its CSS | |
| variables. They re-state foregrounds and backgrounds with !important | |
| so that inherited `color: var(--body-text-color)` from Gradio cannot | |
| turn the UI white-on-white in dark browsers or HF dark theme. | |
| Pairs with the :root/--neutral-* overrides at the top of this file: | |
| the top block disarms the inversion at the variable layer; this block | |
| restates colors on each component as a defense-in-depth fallback. | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Header / hero text */ | |
| .gradio-container .lb-header, | |
| .gradio-container .lb-header * { | |
| color: inherit; | |
| } | |
| .gradio-container .lb-header { color: #111827 !important; } | |
| .gradio-container .lb-header .lb-summary { color: #111827 !important; } | |
| .gradio-container .lb-header .lb-acronym { color: #111827 !important; } | |
| .gradio-container .lb-header .lb-acronym b { color: #522D80 !important; } | |
| .gradio-container .lb-header .lb-stats { color: #111827 !important; } | |
| .gradio-container .lb-header .lb-stats b { color: #111827 !important; } | |
| .gradio-container .lb-header .lb-stat-sep { color: #111827 !important; } | |
| /* Header nav links */ | |
| .gradio-container .lb-nav-hero a { color: #374151 !important; } | |
| .gradio-container .lb-nav-hero a:hover { color: #111827 !important; } | |
| .gradio-container .lb-nav-hero .lb-sep { color: #d1d5db !important; } | |
| /* Tabs */ | |
| .gradio-container .tab-nav, | |
| .gradio-container .tabs > .tab-nav { | |
| background: transparent !important; | |
| border-bottom-color: #e5e7eb !important; | |
| } | |
| .gradio-container .tab-nav button { color: #6b7280 !important; background: transparent !important; } | |
| .gradio-container .tab-nav button:hover { color: #111827 !important; } | |
| .gradio-container .tab-nav button.selected { color: #111827 !important; } | |
| /* Tab panel surface */ | |
| .gradio-container .tabitem, | |
| .gradio-container .tabitem > div, | |
| .gradio-container .tab-container, | |
| .gradio-container [role="tabpanel"] { | |
| background: #ffffff !important; | |
| color: #111827 !important; | |
| } | |
| /* Filter labels and controls */ | |
| .gradio-container .lb-filters, | |
| .gradio-container .lb-filters * { color: inherit; } | |
| .gradio-container .filter-lbl { color: #374151 !important; } | |
| .gradio-container .lb-filters label, | |
| .gradio-container .lb-filters label span, | |
| .gradio-container .lb-filters .label-wrap span { | |
| color: #374151 !important; | |
| background: transparent !important; | |
| } | |
| /* Search box: input + textarea, in any state */ | |
| .gradio-container .lb-search-box input, | |
| .gradio-container .lb-search-box textarea, | |
| .gradio-container .lb-filters input[type="text"], | |
| .gradio-container .lb-filters textarea { | |
| color: #111827 !important; | |
| background: #ffffff !important; | |
| -webkit-text-fill-color: #111827 !important; | |
| caret-color: #111827 !important; | |
| } | |
| .gradio-container .lb-search-box input::placeholder, | |
| .gradio-container .lb-search-box textarea::placeholder, | |
| .gradio-container .lb-filters input::placeholder, | |
| .gradio-container .lb-filters textarea::placeholder { | |
| color: #9ca3af !important; | |
| -webkit-text-fill-color: #9ca3af !important; | |
| opacity: 1 !important; | |
| } | |
| /* Dropdown selected-value text + open menu */ | |
| .gradio-container .lb-filters [class*="dropdown"] input, | |
| .gradio-container .lb-filters [class*="Dropdown"] input, | |
| .gradio-container .lb-filters [class*="dropdown"] [data-testid="dropdown-value"], | |
| .gradio-container .lb-filters [class*="Dropdown"] [data-testid="dropdown-value"], | |
| .gradio-container .lb-filters select, | |
| .gradio-container .lb-filters select option { | |
| color: #111827 !important; | |
| background: #ffffff !important; | |
| -webkit-text-fill-color: #111827 !important; | |
| } | |
| .gradio-container .lb-filters [class*="dropdown"] ul, | |
| .gradio-container .lb-filters [class*="Dropdown"] ul, | |
| .gradio-container ul[role="listbox"], | |
| .gradio-container [role="listbox"] { | |
| background: #ffffff !important; | |
| color: #111827 !important; | |
| border: 1px solid #e5e7eb !important; | |
| } | |
| .gradio-container ul[role="listbox"] li, | |
| .gradio-container [role="listbox"] li, | |
| .gradio-container [role="option"] { | |
| background: #ffffff !important; | |
| color: #111827 !important; | |
| } | |
| .gradio-container [role="option"]:hover, | |
| .gradio-container [role="option"][aria-selected="true"] { | |
| background: #f3f4f6 !important; | |
| color: #111827 !important; | |
| } | |
| /* Verified-only checkbox label */ | |
| .gradio-container .lb-filter-verified label, | |
| .gradio-container .lb-filter-verified label span, | |
| .gradio-container .lb-verified-cb label, | |
| .gradio-container .lb-verified-cb label span { | |
| color: #374151 !important; | |
| background: transparent !important; | |
| } | |
| /* Pillar intro / tab description / status / below-table desc */ | |
| .gradio-container .lb-pillar-desc { color: #6b7280 !important; } | |
| .gradio-container .lb-tab-desc { color: #6b7280 !important; } | |
| .gradio-container .lb-tab-desc b, | |
| .gradio-container .lb-tab-desc strong { color: #374151 !important; } | |
| .gradio-container .lb-status, | |
| .gradio-container p.lb-status { color: #6b7280 !important; } | |
| .gradio-container .lb-desc { color: #6b7280 !important; } | |
| .gradio-container .lb-desc-tasks dt { color: #374151 !important; } | |
| .gradio-container .lb-desc-tasks dd { color: #6b7280 !important; } | |
| .gradio-container .lb-detail-desc { color: #6b7280 !important; } | |
| .gradio-container .lb-detail-desc b { color: #374151 !important; } | |
| /* Generic table cells β keep dark text on white/striped rows in EVERY | |
| Gradio Dataframe under our app, regardless of theme. */ | |
| .gradio-container table, | |
| .gradio-container .table-wrap table, | |
| .gradio-container [class*="dataframe"] table { | |
| color: #111827 !important; | |
| background: #ffffff !important; | |
| } | |
| .gradio-container thead th, | |
| .gradio-container .table-wrap thead th, | |
| .gradio-container [class*="dataframe"] thead th { | |
| color: #374151 !important; | |
| background: #f9fafb !important; | |
| } | |
| .gradio-container tbody tr, | |
| .gradio-container tbody td, | |
| .gradio-container .table-wrap tbody td, | |
| .gradio-container [class*="dataframe"] tbody td { | |
| color: #111827 !important; | |
| } | |
| .gradio-container tbody tr:nth-child(odd) td { background: #ffffff !important; color: #111827 !important; } | |
| .gradio-container tbody tr:nth-child(even) td { background: #fafafa !important; color: #111827 !important; } | |
| .gradio-container tbody tr:hover td { background: #F3EEF9 !important; color: #111827 !important; } | |
| .gradio-container tbody td:first-child { color: #6b7280 !important; } | |
| .gradio-container tbody td a { color: #2563eb !important; } | |
| .gradio-container tbody td a:hover { color: #1d4ed8 !important; } | |
| /* Leaderboard HTML tables (Overall + the four pillars) β restate every | |
| cell color explicitly */ | |
| .gradio-container .lb-table-overall, | |
| .gradio-container .lb-table-spatial, | |
| .gradio-container .lb-table-st, | |
| .gradio-container .lb-table-temporal, | |
| .gradio-container .lb-table-semantic { background: #ffffff !important; color: #111827 !important; } | |
| .gradio-container .lb-table-overall table.lb-overall-table, | |
| .gradio-container .lb-table-spatial table.lb-pillar-table, | |
| .gradio-container .lb-table-st table.lb-pillar-table, | |
| .gradio-container .lb-table-temporal table.lb-pillar-table, | |
| .gradio-container .lb-table-semantic table.lb-pillar-table { color: #111827 !important; background: #ffffff !important; } | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-group { color: #522D80 !important; background: #E8E1F3 !important; } | |
| .gradio-container .lb-table-overall thead tr.lb-group-row th.lb-corner, | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th.lb-corner, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th.lb-corner { color: #374151 !important; background: #f9fafb !important; } | |
| .gradio-container .lb-table-overall thead tr.lb-task-row th, | |
| .gradio-container .lb-table-spatial thead tr.lb-header-row th, | |
| .gradio-container .lb-table-st thead tr.lb-header-row th, | |
| .gradio-container .lb-table-temporal thead tr.lb-header-row th, | |
| .gradio-container .lb-table-semantic thead tr.lb-header-row th { color: #4b5563 !important; background: #f9fafb !important; } | |
| .gradio-container .lb-table-overall tbody td, | |
| .gradio-container .lb-table-spatial tbody td, | |
| .gradio-container .lb-table-st tbody td, | |
| .gradio-container .lb-table-temporal tbody td, | |
| .gradio-container .lb-table-semantic tbody td { color: #111827 !important; background: #ffffff !important; } | |
| .gradio-container .lb-table-overall tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-spatial tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-st tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-temporal tbody tr:nth-child(even) td, | |
| .gradio-container .lb-table-semantic tbody tr:nth-child(even) td { background: #fafafa !important; color: #111827 !important; } | |
| .gradio-container .lb-table-overall tbody tr:hover td, | |
| .gradio-container .lb-table-spatial tbody tr:hover td, | |
| .gradio-container .lb-table-st tbody tr:hover td, | |
| .gradio-container .lb-table-temporal tbody tr:hover td, | |
| .gradio-container .lb-table-semantic tbody tr:hover td { background: #F3EEF9 !important; color: #111827 !important; } | |
| .gradio-container .lb-table-overall tbody td.lb-rank, | |
| .gradio-container .lb-table-spatial tbody td.lb-rank, | |
| .gradio-container .lb-table-st tbody td.lb-rank, | |
| .gradio-container .lb-table-temporal tbody td.lb-rank, | |
| .gradio-container .lb-table-semantic tbody td.lb-rank { color: #6b7280 !important; } | |
| .gradio-container .lb-table-overall tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-spatial tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-st tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-temporal tbody td.lb-score.lb-max, | |
| .gradio-container .lb-table-semantic tbody td.lb-score.lb-max { color: #111827 !important; } | |
| .gradio-container .lb-table-overall tbody td.lb-empty-row, | |
| .gradio-container .lb-table-spatial tbody td.lb-empty-row, | |
| .gradio-container .lb-table-st tbody td.lb-empty-row, | |
| .gradio-container .lb-table-temporal tbody td.lb-empty-row, | |
| .gradio-container .lb-table-semantic tbody td.lb-empty-row { color: #6b7280 !important; } | |
| .gradio-container .lb-table-overall .mc-org, | |
| .gradio-container .lb-table-spatial .mc-org, | |
| .gradio-container .lb-table-st .mc-org, | |
| .gradio-container .lb-table-temporal .mc-org, | |
| .gradio-container .lb-table-semantic .mc-org { color: #9ca3af !important; } | |
| .gradio-container .lb-table-overall .mc-link, | |
| .gradio-container .lb-table-spatial .mc-link, | |
| .gradio-container .lb-table-st .mc-link, | |
| .gradio-container .lb-table-temporal .mc-link, | |
| .gradio-container .lb-table-semantic .mc-link { color: #111827 !important; } | |
| .gradio-container .lb-table-overall .mc-link:hover, | |
| .gradio-container .lb-table-spatial .mc-link:hover, | |
| .gradio-container .lb-table-st .mc-link:hover, | |
| .gradio-container .lb-table-temporal .mc-link:hover, | |
| .gradio-container .lb-table-semantic .mc-link:hover { color: #2563eb !important; } | |
| /* Model cell badges keep their colored pill backgrounds in either theme */ | |
| .gradio-container .b-verified, .gradio-container .lb-badge-verified { background: #dcfce7 !important; color: #15803d !important; border-color: #86efac !important; } | |
| .gradio-container .b-ensemble, .gradio-container .lb-badge-ensemble { background: #dbeafe !important; color: #1d4ed8 !important; border-color: #93c5fd !important; } | |
| .gradio-container .b-single, .gradio-container .lb-badge-single { background: #f3f4f6 !important; color: #374151 !important; border-color: #d1d5db !important; } | |
| .gradio-container .b-open, .gradio-container .lb-badge-open { background: #ccfbf1 !important; color: #0f766e !important; border-color: #5eead4 !important; } | |
| .gradio-container .b-prop, .gradio-container .lb-badge-prop, | |
| .gradio-container .lb-badge-proprietary { background: #fef3c7 !important; color: #92400e !important; border-color: #fcd34d !important; } | |
| .gradio-container .b-new, .gradio-container .lb-badge-new { background: #ede9fe !important; color: #5b21b6 !important; border-color: #c4b5fd !important; } | |
| /* Legend */ | |
| .gradio-container .lb-badge-legend { color: #6b7280 !important; background: transparent !important; } | |
| .gradio-container .lb-badge-legend .legend-title { color: #6b7280 !important; } | |
| .gradio-container .lb-badge-legend .legend-desc { color: #9ca3af !important; } | |
| /* Footer */ | |
| .gradio-container .lb-table-footer { color: #9ca3af !important; } | |
| .gradio-container .lb-footer-nav a { color: #2563eb !important; } | |
| .gradio-container .lb-footer-nav a:hover { color: #1d4ed8 !important; } | |
| .gradio-container .lb-footer-nav .lb-sep, | |
| .gradio-container .lb-footer-left .lb-sep { color: #d1d5db !important; } | |
| .gradio-container .lb-updated, | |
| .gradio-container .lb-version { color: #9ca3af !important; } | |
| /* About */ | |
| .gradio-container .lb-about { color: #374151 !important; background: transparent !important; } | |
| .gradio-container .lb-about p { color: #374151 !important; } | |
| .gradio-container .lb-about li { color: #374151 !important; } | |
| .gradio-container .lb-about h1, | |
| .gradio-container .lb-about h2, | |
| .gradio-container .lb-about h3, | |
| .gradio-container .lb-about h4 { color: #111827 !important; } | |
| .gradio-container .lb-about a { color: #1d4ed8 !important; } | |
| .gradio-container .lb-about pre, | |
| .gradio-container .lb-about code { color: #111827 !important; background: #f9fafb !important; } | |
| .gradio-container .lb-about table { background: #ffffff !important; color: #374151 !important; } | |
| .gradio-container .lb-about table thead th { color: #111827 !important; background: #f3f4f6 !important; } | |
| .gradio-container .lb-about table tbody td { color: #374151 !important; background: #ffffff !important; } | |
| .gradio-container .lb-about table tbody tr:nth-child(even) td { background: #fafafa !important; } | |
| /* Side panel */ | |
| .gradio-container .lb-side-panel { background: transparent !important; } | |
| .gradio-container .sp-wrap { background: #ffffff !important; color: #111827 !important; border-color: #e5e7eb !important; } | |
| .gradio-container .sp-name { color: #111827 !important; } | |
| .gradio-container .sp-org { color: #6b7280 !important; } | |
| .gradio-container .sp-section-label { color: #9ca3af !important; } | |
| .gradio-container .sp-k { color: #6b7280 !important; } | |
| .gradio-container .sp-v { color: #111827 !important; } | |
| .gradio-container .sp-dn { color: #9ca3af !important; } | |
| .gradio-container .sp-dv { color: #111827 !important; } | |
| .gradio-container .sp-date { color: #9ca3af !important; } | |
| .gradio-container .sp-card-link { color: #2563eb !important; } | |
| .gradio-container .sp-dom-card { background: #ffffff !important; border-color: #e5e7eb !important; } | |
| .gradio-container .lb-side-panel .sp-close-btn button { color: #9ca3af !important; background: transparent !important; } | |
| .gradio-container .lb-side-panel .sp-close-btn button:hover { color: #374151 !important; background: #f3f4f6 !important; } | |
| /* Resize handle */ | |
| .gradio-container .lb-resize-handle { background: #f9fafb !important; border-color: #e5e7eb !important; } | |
| .gradio-container .lb-resize-handle:hover { background: #f3f4f6 !important; } | |
| /* Pillar toggle pills */ | |
| .gradio-container .lb-col-toggle-inline label, | |
| .gradio-container .lb-sort-pills label { color: #6b7280 !important; background: transparent !important; border-color: #d1d5db !important; } | |
| .gradio-container .lb-col-toggle-inline label:has(input:checked), | |
| .gradio-container .lb-sort-pills label:has(input:checked) { color: #111827 !important; background: #ffffff !important; border-color: #9ca3af !important; } | |
| """ | |