Spaces:
Sleeping
Sleeping
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); | |
| /* Atman β Linguistic Demo Β· Gradio 6 stylesheet. | |
| * | |
| * Load like this: | |
| * with open(_HERE / "style.css") as f: | |
| * css = f.read() | |
| * with gr.Blocks(title="...", theme=theme, css=css) as demo: | |
| * | |
| * Selectors target Gradio 6 rendered DOM. Where the class name moved between | |
| * minor versions (e.g. .block / .gr-block, .gr-button-primary / button.primary) | |
| * we list both so the rule still bites. | |
| */ | |
| /* ββ Root: font, page bg, smoothing ββββββββββββββββββββββββββββββββββββ */ | |
| body, html { overflow-x: hidden ; } | |
| .gradio-container { | |
| font-family: 'Inter', system-ui, -apple-system, sans-serif ; | |
| font-feature-settings: "ss01", "cv02", "cv11"; /* Inter numeral variants */ | |
| -webkit-font-smoothing: antialiased; | |
| max-width: 100% ; | |
| width: 100% ; | |
| overflow-x: hidden ; | |
| padding-left: 40px ; | |
| padding-right: 40px ; | |
| margin: 0 auto ; | |
| } | |
| .gradio-container, .gradio-container * { letter-spacing: -0.003em; } | |
| /* ββ Header row (#atman-header-row β lang pill, sits ABOVE hero) βββββββ */ | |
| #atman-header-row { | |
| display: flex ; | |
| justify-content: flex-end ; | |
| align-items: center ; | |
| padding: 16px 24px 0 ; | |
| margin: 0 ; | |
| gap: 0 ; | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| #atman-header-row > .block, | |
| #atman-header-row > .gr-block, | |
| #atman-header-row > .form, | |
| #atman-header-row > div { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| flex: 0 0 auto ; | |
| min-width: 0 ; | |
| width: auto ; | |
| } | |
| /* ββ Hero column (#atman-hero β wraps H1 + header_md) ββββββββββββββββββ */ | |
| #atman-hero { padding: 32px 0 16px; text-align: center; } | |
| /* Strip card chrome from descriptive Markdown blocks inside hero */ | |
| #atman-hero > .block, | |
| #atman-hero > .gr-block, | |
| #atman-hero .markdown, | |
| #atman-hero > div > .markdown { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| } | |
| /* The H1 lives inside the first gr.Markdown β target its rendered h1 */ | |
| #atman-hero .gr-block:first-child h1, | |
| #atman-hero .markdown h1, | |
| #atman-hero h1 { | |
| font-size: clamp(34px, 4.6vw, 50px) ; | |
| font-weight: 700 ; | |
| letter-spacing: -0.02em ; | |
| line-height: 1.05 ; | |
| margin: 0 auto 18px ; | |
| background: linear-gradient(120deg, #4F46E5 0%, #8B5CF6 100%); | |
| -webkit-background-clip: text; background-clip: text; | |
| color: transparent ; | |
| display: inline-block ; | |
| } | |
| /* The blurb (#atman-header-md) β neutral grey, larger line-height */ | |
| #atman-header-md, #atman-header-md p { | |
| font-size: 15.5px ; | |
| line-height: 1.7 ; | |
| color: #64748B ; | |
| max-width: 720px; | |
| margin: 0 auto ; | |
| } | |
| :is(.dark, html.dark, body.dark) #atman-header-md, | |
| :is(.dark, html.dark, body.dark) #atman-header-md p { color: #94A3B8 ; } | |
| #atman-header-md em { | |
| color: var(--body-text-color-subdued, #94A3B8) ; | |
| display: block ; margin-top: 10px; | |
| font-size: 14px ; font-style: italic ; | |
| } | |
| /* Strong contrast for bold/emph text β uses Gradio theme var so it auto-swaps | |
| between light and dark mode without relying on .dark/html.dark selectors. */ | |
| .atman-emph, | |
| #atman-header-md b, | |
| #atman-header-md strong, | |
| #atman-header-md [class*="bold"] { | |
| color: var(--body-text-color, #F8FAFC) ; | |
| font-weight: 700 ; | |
| } | |
| /* ββ Hero inline-SVG diagram (#atman-hero-diagram-wrap > .atman-hero-diagram) ββ */ | |
| #atman-hero-diagram-wrap { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| } | |
| .atman-hero-diagram { | |
| max-width: 100%; | |
| width: 100%; | |
| margin: 36px auto 0; | |
| padding: 22px; | |
| background: var(--block-background-fill, #13131F) ; | |
| border: 1px solid var(--block-border-color, #1F2937) ; | |
| border-radius: 14px; | |
| box-shadow: var(--shadow-card, 0 1px 2px rgba(0,0,0,0.30)); | |
| color: var(--body-text-color-subdued, #94A3B8); | |
| } | |
| .atman-hero-diagram svg { display: block; width: 100%; height: auto; } | |
| .atman-hero-diagram-caption { | |
| font: 500 11px/1 'JetBrains Mono', 'SF Mono', Menlo, monospace; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: #94A3B8; | |
| margin-top: 14px; | |
| text-align: center; | |
| } | |
| :is(.dark, html.dark, body.dark) .atman-hero-diagram-caption { color: #64748B; } | |
| /* Language radio pill β sits in its own row above hero, no absolute position */ | |
| #atman-lang { | |
| background: #FFFFFF; border: 1px solid #E5E7EB; | |
| border-radius: 999px; padding: 3px; | |
| box-shadow: 0 1px 2px rgba(15,23,42,0.04); | |
| min-width: 0 ; width: auto ; | |
| } | |
| .dark #atman-lang { background: #13131F; border-color: #1F2937; } | |
| #atman-lang label { | |
| font-family: 'JetBrains Mono', monospace ; | |
| font-size: 12px ; letter-spacing: 0.03em ; | |
| padding: 7px 14px ; border-radius: 999px ; | |
| border: none ; background: transparent ; | |
| color: #64748B ; margin: 0 ; cursor: pointer; | |
| } | |
| #atman-lang label.selected, | |
| #atman-lang label:has(input:checked) { | |
| background: #4F46E5 ; color: #FFFFFF ; | |
| } | |
| .dark #atman-lang label:has(input:checked) { background: #6366F1 ; } | |
| #atman-lang input[type="radio"] { display: none ; } | |
| #atman-lang > .label, | |
| #atman-lang > div > .block-label, | |
| #atman-lang > div > .block-info { display: none ; } | |
| #atman-lang .form, #atman-lang .wrap, #atman-lang .options { | |
| background: transparent ; | |
| border: none ; | |
| padding: 0 ; | |
| } | |
| /* ββ Warmup row (#atman-warmup-row) ββββββββββββββββββββββββββββββββββββ */ | |
| #atman-warmup-row { | |
| margin: 8px 0 24px ; | |
| display: grid ; | |
| grid-template-columns: auto 1fr ; | |
| gap: 12px ; | |
| align-items: stretch ; | |
| } | |
| #atman-warmup-btn { | |
| background: transparent ; | |
| color: #4F46E5 ; | |
| border: 1px solid #4F46E5 ; | |
| border-radius: 8px ; | |
| padding: 12px 20px ; | |
| font-weight: 500 ; | |
| height: auto ; | |
| min-height: 0 ; | |
| } | |
| .dark #atman-warmup-btn { | |
| color: #A5B4FC ; | |
| border-color: #6366F1 ; | |
| } | |
| #atman-warmup-btn:hover { background: rgba(79,70,229,0.08) ; } | |
| .dark #atman-warmup-btn:hover { background: rgba(99,102,241,0.12) ; } | |
| /* Status Textbox β strip textarea chrome, render as inline info pill */ | |
| #atman-warmup-log textarea { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| font: 500 13px/1.4 'Inter', sans-serif ; | |
| color: #0F172A ; | |
| resize: none ; | |
| min-height: 0 ; | |
| overflow: hidden ; | |
| } | |
| .dark #atman-warmup-log textarea { color: #E2E8F0 ; } | |
| #atman-warmup-log { | |
| display: flex ; | |
| align-items: center ; | |
| padding: 12px 16px ; | |
| } | |
| #atman-warmup-log > .block-label { | |
| text-transform: uppercase ; | |
| letter-spacing: 0.06em ; | |
| font-size: 11px ; | |
| color: #64748B ; | |
| background: transparent ; | |
| padding: 0 12px 0 0 ; | |
| margin: 0 ; | |
| border-right: 1px solid #E5E7EB ; | |
| display: inline-flex ; | |
| align-items: center ; | |
| height: 100%; | |
| } | |
| .dark #atman-warmup-log > .block-label { | |
| color: #94A3B8 ; | |
| border-right-color: #1F2937 ; | |
| } | |
| /* ββ Tabs (.tabs > .tab-nav) βββββββββββββββββββββββββββββββββββββββββββ */ | |
| .tabs > .tab-nav { | |
| border-bottom: 1px solid #E5E7EB ; | |
| gap: 4px ; | |
| padding: 0 4px ; | |
| } | |
| .dark .tabs > .tab-nav { border-bottom-color: #1F2937 ; } | |
| .tabs > .tab-nav button { | |
| background: transparent ; | |
| border: none ; | |
| border-bottom: 2px solid transparent ; | |
| margin-bottom: -1px ; | |
| padding: 16px 20px ; | |
| font-size: 14px ; | |
| font-weight: 500 ; | |
| color: #64748B ; | |
| transition: color .15s, border-color .15s; | |
| } | |
| .tabs > .tab-nav button:hover { color: #0F172A ; } | |
| .dark .tabs > .tab-nav button:hover { color: #E2E8F0 ; } | |
| .tabs > .tab-nav button.selected, | |
| .tabs > .tab-nav button[aria-selected="true"] { | |
| color: #4F46E5 ; | |
| border-bottom-color: #4F46E5 ; | |
| font-weight: 600 ; | |
| } | |
| .dark .tabs > .tab-nav button.selected, | |
| .dark .tabs > .tab-nav button[aria-selected="true"] { | |
| color: #818CF8 ; | |
| border-bottom-color: #6366F1 ; | |
| } | |
| .tabs > .tabitem, | |
| .tabs .tabitem-content { padding: 32px 0 ; } | |
| /* ββ About-this-tab accordions (.atman-about-accordion) ββββββββββββββββ */ | |
| .atman-about-accordion, | |
| .gr-accordion.atman-about-accordion { | |
| border: 1px solid #E5E7EB ; | |
| border-radius: 8px ; | |
| background: #FFFFFF ; | |
| margin-bottom: 10px ; | |
| overflow: hidden ; | |
| width: 100% ; | |
| max-width: 100% ; | |
| box-sizing: border-box ; | |
| } | |
| /* Target the exact Gradio accordion content panel (display:none β block on open) */ | |
| .atman-about-accordion [data-testid="accordion-content"] { | |
| overflow: hidden ; | |
| max-width: 100% ; | |
| box-sizing: border-box ; | |
| } | |
| /* Constrain the Gradio column wrapper inside the content panel */ | |
| .atman-about-accordion [data-testid="accordion-content"] > .column, | |
| .atman-about-accordion .column { | |
| max-width: 100% ; | |
| overflow: hidden ; | |
| min-width: 0 ; | |
| box-sizing: border-box ; | |
| } | |
| /* Constrain inner block wrappers */ | |
| .atman-about-accordion .block, | |
| .atman-about-accordion .wrap, | |
| .atman-about-accordion .html-container { | |
| max-width: 100% ; | |
| overflow-x: hidden ; | |
| min-width: 0 ; | |
| box-sizing: border-box ; | |
| } | |
| /* Prevent long prose lines from pushing layout */ | |
| .atman-about-accordion .prose, | |
| .atman-about-accordion .markdown, | |
| .atman-about-accordion p, | |
| .atman-about-accordion li, | |
| .atman-about-accordion pre { | |
| max-width: 100% ; | |
| overflow-wrap: break-word ; | |
| word-break: break-word ; | |
| } | |
| .dark .atman-about-accordion, | |
| html.dark .atman-about-accordion { | |
| border-color: #1F2937 ; | |
| background: #13131F ; | |
| } | |
| html.dark .atman-about-accordion .markdown, | |
| html.dark .atman-about-accordion p, | |
| html.dark .atman-about-accordion li { color: #94A3B8 ; } | |
| html.dark .atman-about-accordion b, | |
| html.dark .atman-about-accordion strong { color: #E2E8F0 ; } | |
| html.dark .atman-about-accordion summary, | |
| html.dark .atman-about-accordion > .label-wrap { color: #E2E8F0 ; } | |
| html.dark .atman-about-accordion blockquote { background: rgba(99,102,241,0.10) ; } | |
| .atman-about-accordion summary, | |
| .atman-about-accordion > .label-wrap, | |
| .atman-about-accordion > button { | |
| padding: 7px 12px ; | |
| gap: 8px ; | |
| font-size: 12px ; | |
| font-weight: 500 ; | |
| min-height: 34px ; | |
| color: var(--body-text-color, #0F172A) ; | |
| cursor: pointer; | |
| } | |
| .atman-about-accordion summary svg, | |
| .atman-about-accordion .label-wrap svg { | |
| color: #4F46E5 ; | |
| width: 14px ; | |
| height: 14px ; | |
| transition: transform .18s ease; | |
| } | |
| .atman-about-accordion[open] summary svg, | |
| .atman-about-accordion.open .label-wrap svg { transform: rotate(90deg); } | |
| .atman-about-accordion > div:not(.label-wrap), | |
| .atman-about-accordion .accordion-content { | |
| padding: 4px 12px 12px 28px ; | |
| } | |
| .atman-about-accordion .markdown, | |
| .atman-about-accordion p, | |
| .atman-about-accordion li { | |
| font-size: 14px ; | |
| line-height: 1.65 ; | |
| color: var(--body-text-color-subdued, #475569) ; | |
| } | |
| .atman-about-accordion b, | |
| .atman-about-accordion strong, | |
| .atman-about-accordion [class*="bold"] { | |
| color: var(--body-text-color, #F8FAFC) ; | |
| font-weight: 700 ; | |
| } | |
| .atman-about-accordion blockquote { | |
| margin: 14px 0 0 ; | |
| padding: 12px 16px ; | |
| border-left: 2px solid #4F46E5 ; | |
| background: rgba(79,70,229,0.06) ; | |
| border-radius: 0 6px 6px 0 ; | |
| font-size: 13px ; | |
| color: #1E293B ; | |
| } | |
| :is(.dark, html.dark, body.dark) .atman-about-accordion blockquote { | |
| background: rgba(99,102,241,0.12) ; | |
| color: #E2E8F0 ; | |
| } | |
| /* Kill nested .block chrome inside accordions β single container, no doubled rims */ | |
| .atman-about-accordion .block, | |
| .atman-about-accordion .gr-block, | |
| .atman-about-accordion .markdown, | |
| .atman-about-accordion .html, | |
| .atman-about-accordion .prose { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| } | |
| /* ββ Dropdowns (preset selectors) ββββββββββββββββββββββββββββββββββββββ */ | |
| .gr-dropdown, .gradio-dropdown, .dropdown { | |
| padding: 12px 14px ; | |
| border-radius: 8px ; | |
| border: 1px solid #E5E7EB ; | |
| background: #FFFFFF ; | |
| transition: border-color .15s, box-shadow .15s; | |
| } | |
| .dark .gr-dropdown, | |
| .dark .gradio-dropdown, | |
| .dark .dropdown { | |
| border-color: #1F2937 ; | |
| background: #13131F ; | |
| } | |
| .gr-dropdown:focus-within, | |
| .gradio-dropdown:focus-within, | |
| .dropdown:focus-within { | |
| border-color: #4F46E5 ; | |
| box-shadow: 0 0 0 2px rgba(79,70,229,0.28) ; | |
| outline: none ; | |
| } | |
| .dark .gr-dropdown:focus-within, | |
| .dark .dropdown:focus-within { | |
| border-color: #6366F1 ; | |
| box-shadow: 0 0 0 2px rgba(99,102,241,0.36) ; | |
| } | |
| .gr-dropdown ul li, | |
| .gradio-dropdown ul li, | |
| .dropdown ul li { | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace ; | |
| font-size: 13px ; | |
| } | |
| /* ββ Result blocks (every Textbox/Markdown/JSON/etc) βββββββββββββββββββ */ | |
| .block, .gr-block { | |
| border-radius: 12px ; | |
| border: 1px solid #E5E7EB ; | |
| box-shadow: 0 1px 2px rgba(15,23,42,0.04) ; | |
| padding: 20px 22px ; | |
| } | |
| .dark .block, .dark .gr-block { | |
| border-color: #1F2937 ; | |
| box-shadow: 0 1px 2px rgba(0,0,0,0.3) ; | |
| } | |
| /* Block labels float ABOVE the block card β only for top-level blocks, not inside report group */ | |
| .gradio-container .block:has([data-testid="block-label"]):not(.atman-report-group *):not(.atman-about-accordion):not(.atman-about-accordion *) { | |
| position: relative ; | |
| overflow: visible ; | |
| margin-top: 26px ; | |
| } | |
| /* Kill block-labels inside the report group β no floating artifacts */ | |
| .atman-report-group [data-testid="block-label"], | |
| .atman-report-group .block-label { | |
| display: none ; | |
| } | |
| /* Label: position above the border, text-only */ | |
| .gradio-container [data-testid="block-label"], | |
| .gradio-container .block > .block-label, | |
| .gradio-container .block > label.block-label { | |
| position: absolute ; | |
| top: -20px ; | |
| left: 0 ; | |
| text-transform: uppercase ; | |
| letter-spacing: 0.06em ; | |
| font-size: 10px ; | |
| font-weight: 500 ; | |
| color: var(--body-text-color-subdued, #64748B) ; | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace ; | |
| background: transparent ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| border: none ; | |
| border-radius: 0 ; | |
| box-shadow: none ; | |
| display: block ; | |
| white-space: nowrap ; | |
| line-height: 1 ; | |
| } | |
| /* Kill SVG/icon artifact β text label only */ | |
| .gradio-container [data-testid="block-label"] > span, | |
| .gradio-container [data-testid="block-label"] svg { | |
| display: none ; | |
| } | |
| /* HighlightedText β Gradio 6 actual svelte class names */ | |
| /* Reorder: text first, legend second (DOM has legend before textfield) */ | |
| .atman-highlight .container.svelte-1akrbo3 { | |
| display: flex ; | |
| flex-direction: column ; | |
| } | |
| /* Text block floats to top */ | |
| .atman-highlight .textfield.svelte-1akrbo3 { | |
| order: 1 ; | |
| line-height: 1.6 ; | |
| font-size: 14px ; | |
| } | |
| /* Token pill */ | |
| .atman-highlight .token.svelte-1akrbo3 { | |
| border-radius: 4px ; | |
| padding: 1px 6px ; | |
| font-size: 13.5px ; | |
| box-shadow: none ; | |
| } | |
| /* Legend moves to bottom with separator */ | |
| .atman-highlight .legend.svelte-1akrbo3 { | |
| order: 2 ; | |
| display: flex ; | |
| gap: 8px ; | |
| flex-wrap: wrap ; | |
| align-items: center ; | |
| margin-top: 10px ; | |
| padding-top: 8px ; | |
| border-top: 1px solid var(--block-border-color, #2D2F3E) ; | |
| } | |
| /* Legend chips β keep inline background-color (set by Gradio), just tighten appearance */ | |
| .atman-highlight .legend-item.svelte-1akrbo3 { | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace ; | |
| font-size: 10px ; | |
| font-weight: 600 ; | |
| letter-spacing: 0.07em ; | |
| text-transform: uppercase ; | |
| color: var(--body-text-color) ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 2px 8px ; | |
| border-radius: 4px ; | |
| cursor: default ; | |
| } | |
| /* ββ gr.JSON output (replaces gr.Label for classification) βββββββββββββ */ | |
| .json-holder, | |
| .gr-json, | |
| [data-testid="json"] { | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace ; | |
| font-size: 13px ; | |
| line-height: 1.75 ; | |
| background: #F8FAFC ; | |
| border: 1px solid #E5E7EB ; | |
| border-radius: 8px ; | |
| padding: 16px 18px ; | |
| color: #0F172A ; | |
| } | |
| .dark .json-holder, | |
| .dark .gr-json, | |
| .dark [data-testid="json"] { | |
| background: #0F0F1B ; | |
| border-color: #1F2937 ; | |
| color: #E2E8F0 ; | |
| } | |
| /* react-json-tree node colours */ | |
| .json-holder .object-key, | |
| .json-holder [class*="object-key"] { color: #64748B ; } | |
| .dark .json-holder .object-key { color: #94A3B8 ; } | |
| .json-holder .string, | |
| .json-holder [class*="string-value"] { color: #059669 ; } | |
| .dark .json-holder .string { color: #10B981 ; } | |
| .json-holder .number { color: #F59E0B ; } | |
| .json-holder .punctuation, | |
| .json-holder span[role="presentation"] { color: #94A3B8 ; } | |
| /* ββ Dataframe (Relations tab) βββββββββββββββββββββββββββββββββββββββββ */ | |
| .gr-dataframe table { | |
| border-collapse: separate ; | |
| border-spacing: 0; | |
| } | |
| .gr-dataframe th { | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-size: 11px; | |
| font-weight: 500; | |
| color: #64748B ; | |
| background: #F8FAFC ; | |
| border-bottom: 1px solid #E5E7EB ; | |
| } | |
| .dark .gr-dataframe th { | |
| background: #0F0F1B ; | |
| color: #94A3B8 ; | |
| border-bottom-color: #1F2937 ; | |
| } | |
| .gr-dataframe td { | |
| font-size: 13px; | |
| padding: 10px 14px ; | |
| } | |
| /* ββ Buttons βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .gr-button, | |
| button.lg, | |
| button.primary, | |
| button.secondary { | |
| font-weight: 500 ; | |
| border-radius: 8px ; | |
| padding: 7px 18px ; | |
| min-height: 36px ; | |
| letter-spacing: -0.005em ; | |
| transition: background .18s, box-shadow .18s, transform .05s ; | |
| } | |
| .gr-button:active, button.lg:active { transform: translateY(1px); } | |
| .gr-button-primary, | |
| button.primary, | |
| [data-variant="primary"] { | |
| background: #4F46E5 ; | |
| color: #FFFFFF ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .dark .gr-button-primary, | |
| .dark button.primary, | |
| .dark [data-variant="primary"] { background: #6366F1 ; } | |
| .gr-button-primary:hover, | |
| button.primary:hover { | |
| background: linear-gradient(135deg, #4F46E5 0%, #8B5CF6 100%) ; | |
| box-shadow: 0 2px 8px rgba(79,70,229,0.18) ; | |
| } | |
| .dark .gr-button-primary:hover, | |
| .dark button.primary:hover { | |
| background: linear-gradient(135deg, #6366F1 0%, #A78BFA 100%) ; | |
| box-shadow: 0 2px 12px rgba(99,102,241,0.24) ; | |
| } | |
| .gr-button-secondary, | |
| button.secondary { | |
| background: transparent ; | |
| border: 1px solid #4F46E5 ; | |
| color: #4F46E5 ; | |
| } | |
| .dark .gr-button-secondary, | |
| .dark button.secondary { | |
| border-color: #6366F1 ; | |
| color: #A5B4FC ; | |
| } | |
| .gr-button-secondary:hover, | |
| button.secondary:hover { background: rgba(79,70,229,0.08) ; } | |
| .dark .gr-button-secondary:hover { background: rgba(99,102,241,0.12) ; } | |
| /* ββ Detailed Analysis Report group (.atman-report-group) ββββββββββββββ */ | |
| .atman-report-group, | |
| .atman-report-group.generating, | |
| .atman-report-group[data-loading], | |
| .atman-report-group:has(.generating) { | |
| padding: 22px ; | |
| border: 1px solid var(--block-border-color, #1F2937) ; | |
| border-radius: 12px ; | |
| background: var(--block-background-fill, #13131F) ; | |
| box-shadow: var(--shadow-card, none) ; | |
| } | |
| /* Kill loading shimmer overlay on the group */ | |
| .atman-report-group::before, | |
| .atman-report-group::after { | |
| display: none ; | |
| } | |
| /* The parent .block wrapper around our Group β make it transparent so we | |
| don't get a doubled card frame (Gradio adds its own block chrome). */ | |
| .gradio-container > * .block:has(> .atman-report-group), | |
| .gradio-container .block:has(.atman-report-group) { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| } | |
| /* The Group's inner .styler div gets --form-background-fill from Gradio β make transparent */ | |
| .atman-report-group > .styler, | |
| .atman-report-group .styler.svelte-1p9262q { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| } | |
| /* Kill nested .block chrome inside the report group β single card, no doubled rims. */ | |
| .atman-report-group .block, | |
| .atman-report-group .gr-block, | |
| .atman-report-group .styler > .block, | |
| .atman-report-group .markdown, | |
| .atman-report-group .prose { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| overflow: visible ; | |
| max-height: none ; | |
| min-height: 0 ; | |
| } | |
| .atman-report-group .block.padded, | |
| .atman-report-group .styler > .block.padded { | |
| padding: 0 ; | |
| margin: 0 ; | |
| } | |
| /* Kill scrollbars on every Markdown subsection inside the report group */ | |
| .atman-report-group .atman-sec-hdr, | |
| .atman-report-group .atman-sec-body, | |
| .atman-report-group .atman-sec-hdr *, | |
| .atman-report-group .atman-sec-body * { | |
| overflow: visible ; | |
| max-height: none ; | |
| } | |
| /* Same fix globally for any block-level markdown */ | |
| .gradio-container .markdown, | |
| .gradio-container .prose, | |
| .gradio-container .md { | |
| overflow: visible ; | |
| max-height: none ; | |
| } | |
| .atman-report-group h3, | |
| .atman-report-group > .markdown:first-child h3 { | |
| font-size: 14px ; | |
| font-weight: 600 ; | |
| margin: 0 0 14px ; | |
| color: var(--body-text-color) ; | |
| padding-bottom: 12px ; | |
| border-bottom: 1px solid var(--block-border-color) ; | |
| } | |
| /* Section-header markdown elements (a_boundary_hdr, a_divergence_hdr, a_meta_hdr) */ | |
| .atman-report-group .atman-sec-hdr, | |
| .atman-report-group .atman-sec-hdr p { | |
| font-family: 'JetBrains Mono', monospace ; | |
| font-size: 11px ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.05em ; | |
| text-transform: uppercase ; | |
| color: var(--body-text-color-subdued, #64748B) ; | |
| margin: 10px 0 2px ; | |
| line-height: 1.3 ; | |
| } | |
| .atman-report-group .atman-sec-body, | |
| .atman-report-group .atman-sec-body p { | |
| font-size: 13px ; | |
| line-height: 1.5 ; | |
| color: var(--body-text-color, #E2E8F0) ; | |
| margin: 0 ; | |
| } | |
| .atman-meta-block, | |
| .atman-report-group .atman-sec-body.atman-meta-block, | |
| .atman-report-group .atman-sec-body.atman-meta-block p { | |
| font-family: 'JetBrains Mono', monospace ; | |
| font-size: 12px ; | |
| color: var(--body-text-color-subdued, #94A3B8) ; | |
| letter-spacing: 0.02em ; | |
| line-height: 1.4 ; | |
| } | |
| /* ββ gr.Code (JSON output) β flat <pre> on block background ββββββββββββ */ | |
| /* Outer wrapper takes the theme background β CodeMirror internals are | |
| transparent so they can't override with their own injected styles. */ | |
| .atman-json-code { | |
| background: var(--block-background-fill, #1e1e2e) ; | |
| border: 1px solid var(--block-border-color, #E5E7EB) ; | |
| border-radius: 8px ; | |
| } | |
| .atman-json-code > .block { | |
| background: transparent ; | |
| border: none ; | |
| } | |
| .atman-json-code .codemirror-wrapper, | |
| .atman-json-code .code-wrap, | |
| .atman-json-code .cm-editor, | |
| .atman-json-code .cm-scroller, | |
| .atman-json-code .cm-content, | |
| .atman-json-code .cm-gutters, | |
| .atman-json-code pre { | |
| background: transparent ; | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace ; | |
| font-size: 13px ; | |
| line-height: 1.6 ; | |
| color: var(--body-text-color, #E2E8F0) ; | |
| } | |
| /* Hide all chrome inside gr.Code: line numbers, copy/fullscreen buttons, | |
| language tag, internal block label (we use the wrapper block-label only) */ | |
| .atman-json-code .cm-gutters, | |
| .atman-json-code .cm-lineNumbers, | |
| .atman-json-code .cm-foldGutter, | |
| .atman-json-code button, | |
| .atman-json-code .copy-button, | |
| .atman-json-code [aria-label*="opy"], | |
| .atman-json-code [aria-label*="ull"], | |
| .atman-json-code [aria-label*="creen"], | |
| .atman-json-code .language-select, | |
| .atman-json-code [data-testid="code-language"] { | |
| display: none ; | |
| } | |
| /* String values green, keys muted grey */ | |
| .atman-json-code .cm-string, | |
| .atman-json-code .token.string, | |
| .atman-json-code .hljs-string { color: #059669 ; } | |
| :is(.dark, html.dark, body.dark) .atman-json-code .cm-string, | |
| :is(.dark, html.dark, body.dark) .atman-json-code .token.string, | |
| :is(.dark, html.dark, body.dark) .atman-json-code .hljs-string { color: #10B981 ; } | |
| .atman-json-code .cm-property, | |
| .atman-json-code .token.property, | |
| .atman-json-code .hljs-attr { color: #64748B ; } | |
| :is(.dark, html.dark, body.dark) .atman-json-code .cm-property, | |
| :is(.dark, html.dark, body.dark) .atman-json-code .token.property, | |
| :is(.dark, html.dark, body.dark) .atman-json-code .hljs-attr { color: #94A3B8 ; } | |
| /* ββ Generic meta-text markdown (k_meta, r_meta, af_meta) ββββββββββββββ */ | |
| .atman-meta p, .atman-meta { | |
| font-family: 'JetBrains Mono', monospace ; | |
| font-size: 12px ; | |
| font-weight: 500 ; | |
| color: #94A3B8 ; | |
| letter-spacing: 0.02em ; | |
| } | |
| .dark .atman-meta p, .dark .atman-meta { color: #64748B ; } | |
| /* ββ Tab intro markdown (optional, for any tab-top description) ββββββββ */ | |
| .tab-intro p, .tab-intro { | |
| font-size: 14px ; | |
| line-height: 1.65 ; | |
| color: #64748B ; | |
| max-width: 720px; | |
| } | |
| .dark .tab-intro p, .dark .tab-intro { color: #94A3B8 ; } | |
| .tab-intro b { color: #0F172A ; font-weight: 600 ; } | |
| .dark .tab-intro b { color: #E2E8F0 ; } | |
| /* ββ Whitespace rhythm β tight, just enough to keep block borders distinct ββ */ | |
| .gradio-container .gr-form > * + * { margin-top: 6px ; } | |
| .gradio-container > .block + .block, | |
| .gradio-container > .gr-form + .gr-form { margin-top: 8px ; } | |
| .gradio-container .row, | |
| .gradio-container .gr-row { gap: 16px ; } | |
| .gradio-container .column, | |
| .gradio-container .gr-column { gap: 6px ; } | |
| .tabs > .tabitem, | |
| .tabs .tabitem-content { padding: 12px 0 ; } | |
| .atman-about-accordion { margin-bottom: 10px ; } | |
| #atman-hero + * { margin-top: 4px ; } | |
| /* ββ Kill empty-state placeholders (aa / </> icons) βββββββββββββββββββββ | |
| Gradio 6 scopes .empty with a svelte hash (.empty.svelte-v95lt3 { display: flex }) | |
| which beats a plain attribute selector. Must include the scoped class OR | |
| use !important on a more specific rule. Belt-and-suspenders: all known forms. */ | |
| div[aria-label="Empty value"], | |
| div[aria-label="Empty value"].svelte-v95lt3, | |
| .empty.svelte-v95lt3, | |
| .gradio-container .empty, | |
| .gradio-container [class*="empty-state"], | |
| .gradio-container .empty-holder { | |
| display: none ; | |
| } | |
| /* ββ Footer (gr.HTML #atman-footer) ββββββββββββββββββββββββββββββββββββ */ | |
| #atman-footer { | |
| text-align: center; | |
| padding: 32px 0 24px; | |
| border-top: 1px solid #E5E7EB; | |
| margin-top: 48px; | |
| font-size: 13px; | |
| color: #94A3B8; | |
| } | |
| .dark #atman-footer { | |
| border-top-color: #1F2937; | |
| color: #64748B; | |
| } | |
| #atman-footer a { | |
| color: #4F46E5; | |
| text-decoration: none; | |
| font-weight: 500; | |
| } | |
| .dark #atman-footer a { color: #818CF8; } | |
| #atman-footer a:hover { text-decoration: underline; } | |
| #atman-footer em { | |
| font-style: italic; | |
| color: #94A3B8; | |
| display: block; | |
| max-width: 560px; | |
| margin: 0 auto 8px; | |
| } | |
| .dark #atman-footer em { color: #64748B; } | |
| #atman-footer .atman-privacy { | |
| display: block; | |
| max-width: 640px; | |
| margin: 14px auto 16px; | |
| font-size: 11px; | |
| line-height: 1.5; | |
| color: #B0B8C4; | |
| opacity: 0.85; | |
| } | |
| .dark #atman-footer .atman-privacy { color: #475569; } | |
| /* βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| * Pair diagram (.apd-*) β used inside About accordions per tab. | |
| * Mirrors the full architecture diagram, one row per tab. | |
| * βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .apd-pair { | |
| display: grid; | |
| grid-template-columns: 1fr 64px 1fr; | |
| gap: 0; | |
| align-items: stretch; | |
| margin: 4px 0 18px; | |
| max-width: 720px; | |
| } | |
| .apd-card { | |
| position: relative; | |
| background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%); | |
| border: 1px solid #E5E7EB; | |
| border-radius: 10px; | |
| padding: 12px 14px 12px 18px; | |
| box-shadow: 0 1px 2px rgba(15,23,42,0.04); | |
| display: flex; | |
| align-items: center; | |
| } | |
| .dark .apd-card { | |
| background: linear-gradient(180deg, #131826 0%, #0F1421 100%); | |
| border-color: #2B3447; | |
| box-shadow: 0 2px 4px rgba(0,0,0,0.25), 0 1px 0 rgba(255,255,255,0.03) inset; | |
| } | |
| .apd-stripe { | |
| position: absolute; | |
| left: 0; top: 0; bottom: 0; | |
| width: 3px; | |
| border-radius: 10px 0 0 10px; | |
| } | |
| .apd-left .apd-stripe { background: #4F46E5; box-shadow: 0 0 12px rgba(79,70,229,0.35); } | |
| .apd-right .apd-stripe { background: #8B5CF6; box-shadow: 0 0 12px rgba(139,92,246,0.35); } | |
| .dark .apd-left .apd-stripe { background: #6366F1; box-shadow: 0 0 12px rgba(99,102,241,0.45); } | |
| .dark .apd-right .apd-stripe { background: #A78BFA; box-shadow: 0 0 12px rgba(167,139,250,0.45); } | |
| .apd-card-body { width: 100%; } | |
| .apd-card-head { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 8px; | |
| } | |
| .apd-name { | |
| font-family: 'Inter', system-ui, sans-serif; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: #0F172A; | |
| letter-spacing: -0.01em; | |
| line-height: 1.2; | |
| } | |
| .dark .apd-name { color: #F3F4F6; } | |
| .apd-sub { | |
| margin-top: 4px; | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace; | |
| font-size: 11px; | |
| color: #64748B; | |
| letter-spacing: 0.01em; | |
| } | |
| .dark .apd-sub { color: #9CA3AF; } | |
| .apd-tag { | |
| font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace; | |
| font-size: 10px; | |
| color: #64748B; | |
| padding: 2px 6px; | |
| border: 1px solid #E5E7EB; | |
| border-radius: 4px; | |
| background: #FFFFFF; | |
| flex-shrink: 0; | |
| letter-spacing: 0.02em; | |
| white-space: nowrap; | |
| } | |
| .dark .apd-tag { | |
| color: #6B7280; | |
| border-color: #2B3447; | |
| background: rgba(255,255,255,0.02); | |
| } | |
| .apd-arrow { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0; | |
| padding: 0 4px; | |
| } | |
| .apd-arrow-line { | |
| flex: 1 1 auto; | |
| height: 2px; | |
| background: linear-gradient(90deg, #6366F1 0%, #A855F7 100%); | |
| border-radius: 1px; | |
| box-shadow: 0 0 8px rgba(139,92,246,0.25); | |
| margin-right: -1px; | |
| } | |
| .dark .apd-arrow-line { | |
| background: linear-gradient(90deg, #818CF8 0%, #C084FC 100%); | |
| box-shadow: 0 0 10px rgba(167,139,250,0.40); | |
| } | |
| .apd-arrow-head { | |
| width: 0; | |
| height: 0; | |
| border-top: 5px solid transparent; | |
| border-bottom: 5px solid transparent; | |
| border-left: 7px solid #A855F7; | |
| flex-shrink: 0; | |
| } | |
| .dark .apd-arrow-head { border-left-color: #C084FC; } | |
| /* Responsive: stack on narrow viewports */ | |
| @media (max-width: 640px) { | |
| .apd-pair { | |
| grid-template-columns: 1fr; | |
| gap: 8px; | |
| } | |
| .apd-arrow { | |
| transform: rotate(90deg); | |
| width: 56px; | |
| height: 16px; | |
| margin: 0 auto; | |
| } | |
| } | |