Spaces:
Sleeping
Sleeping
| /* ββ Design tokens ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| :root { | |
| --mw-bg: #0d1109; | |
| --mw-panel: #141910; | |
| --mw-panel2: #1c2216; | |
| --mw-border: #2e3a23; | |
| --mw-text: #f2ead7; | |
| --mw-muted: #96a882; | |
| --mw-green: #7fb069; | |
| --mw-amber: #d8a657; | |
| --mw-cap: #c0405a; | |
| --mw-line: #2e3a23; | |
| --mw-forest: #3a7c55; | |
| --mw-ink: #f2ead7; | |
| } | |
| /* ββ Base ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| body { | |
| background: | |
| repeating-linear-gradient( | |
| 90deg, | |
| rgba(127, 176, 105, 0.03) 0, rgba(127, 176, 105, 0.03) 1px, | |
| transparent 1px, transparent 80px | |
| ), | |
| repeating-linear-gradient( | |
| 0deg, | |
| rgba(127, 176, 105, 0.03) 0, rgba(127, 176, 105, 0.03) 1px, | |
| transparent 1px, transparent 80px | |
| ), | |
| linear-gradient(160deg, #0d1109 0%, #0f1510 55%, #0b110a 100%) ; | |
| min-height: 100vh; | |
| } | |
| /* ββ Gradio container + CSS variable overrides ββββββββββββββββββββββββββββ */ | |
| /* These CSS variables are consumed by Gradio's own internal components. */ | |
| /* Setting them here overrides the theme for inputs, panels, text colours. */ | |
| .gradio-container { | |
| max-width: 1240px ; | |
| margin: 0 auto ; | |
| padding-bottom: 24px ; | |
| font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| /* Solid dark fill so transparent-row gaps show this colour, not the body grid. */ | |
| background: #0e1410 ; | |
| color: var(--mw-text) ; | |
| /* Belt-and-suspenders overrides for Gradio CSS variables. */ | |
| /* Do NOT override --neutral-* here β Gradio uses those for its own */ | |
| /* color-scale maths; wrong values cascade into table cell text. */ | |
| /* Use THEME.set() in app.py for colour propagation instead. */ | |
| --background-fill-primary: #141910; | |
| --background-fill-secondary: #1c2216; | |
| --input-background-fill: #1c2216; | |
| --body-text-color: #cec6ae; /* matches THEME.set(body_text_color) */ | |
| --block-label-text-color: #8a9e7a; | |
| --block-border-color: #2e3a23; | |
| --input-border-color: #2e3a23; | |
| --color-accent: #7fb069; | |
| --border-color-accent: #7fb069; | |
| --table-odd-background-fill: #141910; | |
| --table-even-background-fill: #192114; | |
| } | |
| /* ββ Broad Gradio component backgrounds ββββββββββββββββββββββββββββββββββ */ | |
| /* Avoid .wrap here β that class is also used by dropdowns */ | |
| .gradio-container .block, | |
| .gradio-container .form, | |
| .gradio-container .tabitem, | |
| .gradio-container .panel, | |
| .gradio-container .prose { | |
| background: var(--mw-panel) ; | |
| border-color: var(--mw-border) ; | |
| color: var(--mw-text) ; | |
| } | |
| /* ββ Hero ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .mw-hero { | |
| position: relative; | |
| overflow: hidden; | |
| padding: 38px 42px; | |
| margin: 10px 0 18px; | |
| border: 1px solid var(--mw-border); | |
| border-radius: 10px; | |
| background: linear-gradient(135deg, rgba(14, 20, 10, 0.98) 0%, rgba(24, 36, 16, 0.97) 100%); | |
| box-shadow: 0 4px 40px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(127, 176, 105, 0.1); | |
| } | |
| .mw-hero::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| background: | |
| radial-gradient(ellipse at 85% 40%, rgba(127, 176, 105, 0.1), transparent 55%), | |
| radial-gradient(ellipse at 5% 85%, rgba(216, 166, 87, 0.07), transparent 45%); | |
| pointer-events: none; | |
| } | |
| .mw-hero::after { | |
| content: ""; | |
| position: absolute; | |
| right: -20px; | |
| bottom: -55px; | |
| width: 280px; | |
| height: 280px; | |
| border-radius: 50%; | |
| border: 46px solid rgba(127, 176, 105, 0.07); | |
| pointer-events: none; | |
| } | |
| .mw-kicker { | |
| position: relative; | |
| color: var(--mw-amber) ; | |
| font-size: 0.72rem; | |
| font-weight: 800; | |
| letter-spacing: 0.16em; | |
| text-transform: uppercase ; | |
| } | |
| .mw-hero h1 { | |
| position: relative; | |
| margin: 10px 0 12px; | |
| color: var(--mw-text) ; | |
| font-size: 2.6rem; | |
| line-height: 1.05; | |
| letter-spacing: -0.01em; | |
| } | |
| .mw-hero p { | |
| position: relative; | |
| max-width: 760px; | |
| color: #c8d8ba ; | |
| font-size: 1.02rem; | |
| line-height: 1.58; | |
| } | |
| /* ββ Badges ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .mw-badges { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| margin-top: 18px; | |
| position: relative; | |
| } | |
| .mw-badge { | |
| background: rgba(13, 17, 9, 0.78) ; | |
| border: 1px solid rgba(216, 166, 87, 0.42) ; | |
| color: #f0dfa8 ; | |
| border-radius: 999px ; | |
| padding: 5px 13px ; | |
| font-size: 0.72rem ; | |
| font-weight: 700 ; | |
| letter-spacing: 0.04em ; | |
| display: inline-block ; | |
| } | |
| /* ββ Metrics grid ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .mw-metrics { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| gap: 10px; | |
| max-width: 820px; | |
| margin-top: 22px; | |
| position: relative; | |
| } | |
| .mw-metrics span { | |
| display: block; | |
| padding: 11px 13px; | |
| border: 1px solid rgba(127, 176, 105, 0.18) ; | |
| border-top: 3px solid rgba(127, 176, 105, 0.5) ; | |
| border-radius: 8px; | |
| background: rgba(13, 17, 9, 0.65) ; | |
| color: var(--mw-muted) ; | |
| font-size: 0.82rem; | |
| } | |
| .mw-metrics strong { | |
| display: block; | |
| color: var(--mw-green) ; | |
| font-size: 1.22rem; | |
| font-weight: 700; | |
| margin-top: 2px; | |
| } | |
| /* ββ Safety notice βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* .gradio-container .block has specificity (0,2,0). To win, we must match */ | |
| /* that specificity β so we target both the .block and .mw-safety classes. */ | |
| .gradio-container .block.mw-safety { | |
| background: rgba(22, 4, 8, 0.92) ; | |
| border-left: 3px solid #e0506a ; | |
| border-top: none ; | |
| border-right: none ; | |
| border-bottom: none ; | |
| border-radius: 6px ; | |
| padding: 10px 14px ; | |
| margin-bottom: 14px ; | |
| } | |
| /* Markdown renders text inside .prose > p β target all text children. */ | |
| .gradio-container .mw-safety, | |
| .gradio-container .mw-safety .prose, | |
| .gradio-container .mw-safety p, | |
| .gradio-container .mw-safety strong { | |
| color: #f5bfc9 ; | |
| background: transparent ; | |
| font-size: 0.87rem ; | |
| font-weight: 500 ; | |
| } | |
| /* ββ Panel cards (mw-panel class on gr.Column) ββββββββββββββββββββββββββββ */ | |
| .mw-panel { | |
| padding: 14px ; | |
| border: 1px solid var(--mw-border) ; | |
| border-top: 3px solid var(--mw-green) ; | |
| border-radius: 8px ; | |
| background: var(--mw-panel) ; | |
| box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3) ; | |
| } | |
| /* ββ Section headers βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .mw-section-header { | |
| font-size: 0.92rem; | |
| font-weight: 700; | |
| color: var(--mw-green); | |
| margin: 18px 0 4px; | |
| padding-bottom: 6px; | |
| border-bottom: 1px solid var(--mw-border); | |
| } | |
| /* ββ Results area: unified background βββββββββββββββββββββββββββββββββββββ */ | |
| /* Wraps the final-ranking row and the tabs so the whole section reads as */ | |
| /* one connected panel rather than floating islands on a transparent gap. */ | |
| .mw-results-row { | |
| background: rgba(20, 28, 16, 0.75) ; | |
| border: 1px solid var(--mw-border) ; | |
| border-radius: 10px ; | |
| padding: 14px 14px 10px ; | |
| gap: 12px ; | |
| } | |
| .mw-results-tabs { | |
| background: rgba(20, 28, 16, 0.75) ; | |
| border: 1px solid var(--mw-border) ; | |
| border-top: none ; | |
| border-radius: 0 0 10px 10px ; | |
| padding: 0 14px 14px ; | |
| margin-top: -6px ; /* visually merges with the row above */ | |
| } | |
| /* ββ Primary button ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| button.primary { | |
| min-height: 42px ; | |
| border-radius: 8px ; | |
| background: var(--mw-green) ; | |
| border: 1px solid rgba(127, 176, 105, 0.45) ; | |
| color: #0d1109 ; | |
| font-weight: 800 ; | |
| letter-spacing: 0.01em ; | |
| } | |
| button.primary:hover { | |
| filter: brightness(1.12); | |
| } | |
| /* ββ Compact form labels βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .block > label > span, | |
| .gradio-container .label-wrap span { | |
| font-size: 0.78rem ; | |
| font-weight: 600 ; | |
| color: var(--mw-muted) ; | |
| letter-spacing: 0.03em ; | |
| text-transform: uppercase ; | |
| } | |
| /* ββ Number inputs βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container input[type="number"], | |
| .gradio-container input[type="text"] { | |
| background: var(--mw-panel2) ; | |
| color: var(--mw-text) ; | |
| border-color: var(--mw-border) ; | |
| border-radius: 7px ; | |
| min-height: 36px ; | |
| height: 36px ; | |
| padding: 4px 10px ; | |
| font-size: 0.875rem ; | |
| } | |
| /* ββ Dropdown component ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Gradio renders dropdowns as a svelte custom component with these classes. */ | |
| .gradio-container .wrap-inner { | |
| background: var(--mw-panel2) ; | |
| border-color: var(--mw-border) ; | |
| color: var(--mw-text) ; | |
| min-height: 36px ; | |
| max-height: 36px ; | |
| padding: 0 8px ; | |
| border-radius: 7px ; | |
| } | |
| /* The text value shown in a closed dropdown */ | |
| .gradio-container .wrap-inner input, | |
| .gradio-container .wrap-inner span:not(.icon):not(.mw-badge) { | |
| color: var(--mw-text) ; | |
| background: transparent ; | |
| font-size: 0.875rem ; | |
| } | |
| /* Dropdown chevron icon */ | |
| .gradio-container .wrap-inner .icon, | |
| .gradio-container .wrap-inner svg { | |
| color: var(--mw-muted) ; | |
| fill: var(--mw-muted) ; | |
| } | |
| /* Open dropdown list */ | |
| .gradio-container ul.options { | |
| background: #111710 ; | |
| border: 1px solid var(--mw-border) ; | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5) ; | |
| border-radius: 8px ; | |
| padding: 4px ; | |
| z-index: 50 ; | |
| } | |
| /* Dropdown list items */ | |
| .gradio-container ul.options li, | |
| .gradio-container .options .item { | |
| color: var(--mw-text) ; | |
| background: transparent ; | |
| border-radius: 5px ; | |
| padding: 6px 10px ; | |
| font-size: 0.875rem ; | |
| cursor: pointer; | |
| } | |
| .gradio-container ul.options li:hover, | |
| .gradio-container .options .item:hover { | |
| background: rgba(127, 176, 105, 0.14) ; | |
| color: var(--mw-text) ; | |
| } | |
| .gradio-container ul.options li.selected, | |
| .gradio-container .options .item.selected { | |
| background: rgba(127, 176, 105, 0.22) ; | |
| color: var(--mw-green) ; | |
| font-weight: 600 ; | |
| } | |
| /* ββ Textarea ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| textarea { | |
| border-radius: 8px ; | |
| background: var(--mw-panel2) ; | |
| color: var(--mw-text) ; | |
| border-color: var(--mw-border) ; | |
| } | |
| .mw-explanation textarea { | |
| line-height: 1.55 ; | |
| } | |
| /* ββ Focus ring ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| input:focus, | |
| .wrap-inner:focus-within, | |
| textarea:focus { | |
| outline: 2px solid var(--mw-green) ; | |
| outline-offset: 1px; | |
| box-shadow: 0 0 0 3px rgba(127, 176, 105, 0.14) ; | |
| } | |
| /* ββ Dataframe / table βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Gradio 5/6 renders Dataframes WITHOUT a <tbody> element. */ | |
| /* Use tr:not(:first-child) to target data rows regardless of tbody. */ | |
| .gradio-container .table-wrap, | |
| .gradio-container [data-testid="dataframe"] { | |
| background: var(--mw-panel) ; | |
| border-color: var(--mw-border) ; | |
| border-radius: 8px ; | |
| overflow: hidden; | |
| } | |
| .gradio-container .table-wrap table { | |
| background: var(--mw-panel) ; | |
| border-collapse: collapse; | |
| width: 100%; | |
| } | |
| /* ββ Header cells βββββ near-black bg, muted green labels */ | |
| .gradio-container .table-wrap table th { | |
| background: #090d07 ; | |
| color: #8fba78 ; | |
| font-weight: 700; | |
| font-size: 0.72rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.08em; | |
| padding: 9px 12px; | |
| border-bottom: 2px solid #2e3a23 ; | |
| white-space: nowrap; | |
| } | |
| /* ββ All data cells βββ warm tan, high contrast on dark background */ | |
| /* tr:not(:first-child) covers both with-tbody and without-tbody cases. */ | |
| .gradio-container .table-wrap table tr:not(:first-child) td { | |
| color: #cec6ae ; | |
| background: transparent ; | |
| font-size: 0.875rem ; | |
| padding: 8px 12px ; | |
| border-bottom: 1px solid rgba(46, 58, 35, 0.4) ; | |
| } | |
| /* Zebra rows */ | |
| .gradio-container .table-wrap table tr:nth-child(even) td { | |
| background: rgba(25, 33, 20, 0.6) ; | |
| } | |
| .gradio-container .table-wrap table tr:hover td { | |
| background: rgba(127, 176, 105, 0.09) ; | |
| transition: background 0.12s; | |
| } | |
| /* ββ Rank-1 data row βββ slightly brighter + bold as top-result highlight */ | |
| .gradio-container .table-wrap table tr:nth-child(2) td { | |
| color: #e8dfc5 ; | |
| font-weight: 600 ; | |
| } | |
| /* ββ Rank number (first td per row) βββ dimmed, doesn't compete */ | |
| .gradio-container .table-wrap table tr:not(:first-child) td:first-child { | |
| color: #7a8f6e ; | |
| font-size: 0.8rem ; | |
| } | |
| /* ββ Tabs ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .tab-nav { | |
| border-bottom: 1px solid var(--mw-border) ; | |
| background: transparent ; | |
| } | |
| .tab-nav button { | |
| border-radius: 8px 8px 0 0 ; | |
| color: var(--mw-muted) ; | |
| background: transparent ; | |
| border: none ; | |
| font-size: 0.875rem ; | |
| } | |
| .tab-nav button.selected { | |
| border-bottom: 2px solid var(--mw-green) ; | |
| color: var(--mw-green) ; | |
| font-weight: 600 ; | |
| background: rgba(127, 176, 105, 0.07) ; | |
| } | |
| /* ββ Accordion βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container .accordion > .label-wrap, | |
| .gradio-container details > summary { | |
| background: var(--mw-panel2) ; | |
| color: var(--mw-text) ; | |
| border-color: var(--mw-border) ; | |
| border-radius: 7px ; | |
| font-size: 0.875rem ; | |
| } | |
| /* ββ Checkbox ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gradio-container input[type="checkbox"] { | |
| accent-color: var(--mw-green); | |
| width: 16px; | |
| height: 16px; | |
| } | |
| /* ββ Gallery hover βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gallery-item img { | |
| transition: transform 0.18s, box-shadow 0.18s; | |
| } | |
| .gallery-item:hover img { | |
| transform: scale(1.03); | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); | |
| } | |
| /* ββ Responsive ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 760px) { | |
| .mw-hero { | |
| padding: 26px 22px; | |
| } | |
| .mw-hero h1 { | |
| font-size: 2rem; | |
| } | |
| .mw-metrics { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .mw-badges { | |
| gap: 6px; | |
| } | |
| } | |