Spaces:
Running
Running
| @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,700;1,400&family=Inter:wght@400;500;600&display=swap"); | |
| /* βββ Palette ββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| :root { | |
| --ground: #f4efe6; | |
| --surface: #fffaf2; | |
| --surface-2: #f6edde; | |
| --surface-3: #ede0c8; | |
| --border: rgba(79, 59, 28, 0.14); | |
| --border-hi: rgba(184, 114, 21, 0.28); | |
| --amber: #b87215; | |
| --amber-bright:#d18a22; | |
| --amber-dim: rgba(184, 114, 21, 0.12); | |
| --amber-glow: rgba(184, 114, 21, 0.16); | |
| --text: #1f2937; | |
| --text-2: #475569; | |
| --text-3: #7c8798; | |
| --green: #15803d; | |
| --green-dim: rgba(21, 128, 61, 0.10); | |
| --red: #dc2626; | |
| --red-dim: rgba(220, 38, 38, 0.10); | |
| --mono: "JetBrains Mono", "Fira Code", monospace; | |
| --sans: "Inter", system-ui, sans-serif; | |
| --shadow: 0 18px 42px rgba(82, 59, 24, 0.12); | |
| --radius-panel: 20px; | |
| --radius-card: 16px; | |
| --radius-sm: 10px; | |
| } | |
| /* βββ Base βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| *, *::before, *::after { box-sizing: border-box; } | |
| body, | |
| .gradio-container, | |
| .gradio-container-6-19-0 { | |
| background: var(--ground) ; | |
| color: var(--text) ; | |
| font-family: var(--sans) ; | |
| } | |
| /* Subtle dot grid */ | |
| body::before { | |
| content: ""; | |
| position: fixed; | |
| inset: 0; | |
| background-image: radial-gradient(rgba(184, 114, 21, 0.06) 1px, transparent 1px); | |
| background-size: 24px 24px; | |
| pointer-events: none; | |
| z-index: 0; | |
| } | |
| .gradio-container { | |
| max-width: 1720px ; | |
| margin: 0 auto ; | |
| padding: 28px 20px 48px ; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| footer { display: none ; } | |
| /* βββ Shell layout βββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .app-shell { | |
| align-items: flex-start; | |
| gap: 20px; | |
| } | |
| /* βββ Sidebar ββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .sidebar-column { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-panel); | |
| padding: 24px ; | |
| position: sticky; | |
| top: 20px; | |
| box-shadow: var(--shadow); | |
| } | |
| .app-logo img { | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--border); | |
| } | |
| /* Section headings in sidebar */ | |
| .sidebar-title p, | |
| .sidebar-title h2 { | |
| font-family: var(--mono) ; | |
| font-size: 0.68rem ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.12em ; | |
| text-transform: uppercase ; | |
| color: var(--amber) ; | |
| margin-top: 20px ; | |
| margin-bottom: 6px ; | |
| padding-bottom: 6px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .sidebar-copy p { | |
| font-family: var(--sans) ; | |
| font-size: 0.84rem ; | |
| color: var(--text-2) ; | |
| line-height: 1.65; | |
| margin: 0 0 4px; | |
| } | |
| /* Model list in sidebar β monospace, minimal */ | |
| .sidebar-copy ul { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .sidebar-copy li { | |
| font-family: var(--mono); | |
| font-size: 0.8rem; | |
| color: var(--text-2); | |
| padding: 4px 0; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .sidebar-copy li::before { | |
| content: "$ "; | |
| color: var(--amber); | |
| opacity: 0.6; | |
| } | |
| /* βββ Sidebar links βββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .sidebar-links { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| margin-top: 4px; | |
| } | |
| .sidebar-link { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 6px 12px; | |
| color: var(--text-2); | |
| text-decoration: none; | |
| border-radius: 6px; | |
| border: 1px solid var(--border); | |
| background: var(--surface-2); | |
| font-family: var(--mono); | |
| font-size: 0.75rem; | |
| letter-spacing: 0.03em; | |
| transition: color 0.15s, border-color 0.15s, background 0.15s; | |
| } | |
| .sidebar-link::before { | |
| content: "β "; | |
| color: var(--amber); | |
| opacity: 0.7; | |
| margin-right: 2px; | |
| } | |
| .sidebar-link:hover { | |
| color: var(--text); | |
| border-color: var(--border-hi); | |
| background: var(--amber-dim); | |
| } | |
| .sidebar-empty { | |
| font-size: 0.8rem; | |
| color: var(--text-3); | |
| font-family: var(--mono); | |
| } | |
| /* βββ Cache panel ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .cache-wrapper { | |
| margin-top: 8px; | |
| } | |
| .cache-panel { | |
| margin-top: 4px; | |
| padding: 14px; | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--border); | |
| background: rgba(255, 250, 242, 0.92); | |
| } | |
| .cache-panel__header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| } | |
| .cache-panel__header h3 { | |
| margin: 0; | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| font-weight: 500; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-2); | |
| } | |
| .cache-panel__header span { | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| color: var(--amber); | |
| } | |
| .cache-panel ul { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .cache-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-family: var(--mono); | |
| font-size: 0.75rem; | |
| color: var(--text-3); | |
| } | |
| .cache-item--loaded { | |
| color: var(--green); | |
| } | |
| /* βββ Main column ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .main-column { | |
| background: var(--surface); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-panel); | |
| padding: 28px ; | |
| box-shadow: var(--shadow); | |
| } | |
| /* βββ Hero βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .hero-row { | |
| margin-bottom: 20px; | |
| } | |
| .hero-inner { | |
| padding: 4px 0 12px; | |
| } | |
| .hero-eyebrow { | |
| display: inline-block; | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| font-weight: 400; | |
| letter-spacing: 0.14em; | |
| text-transform: uppercase; | |
| color: var(--amber); | |
| margin-bottom: 12px; | |
| padding: 4px 10px; | |
| border: 1px solid var(--border-hi); | |
| border-radius: 4px; | |
| background: var(--amber-dim); | |
| } | |
| .hero-headline { | |
| font-family: var(--mono) ; | |
| font-size: clamp(2.4rem, 5vw, 3.8rem); | |
| font-weight: 700; | |
| line-height: 1.05; | |
| letter-spacing: -0.03em; | |
| color: var(--text) ; | |
| margin: 0 0 14px; | |
| } | |
| /* Blinking cursor β the single animated element */ | |
| .hero-cursor { | |
| color: var(--amber); | |
| animation: blink 1.1s step-end infinite; | |
| font-weight: 300; | |
| } | |
| @keyframes blink { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0; } | |
| } | |
| .hero-sub { | |
| font-family: var(--sans); | |
| font-size: 1rem; | |
| font-weight: 500; | |
| color: var(--text) ; | |
| margin: 0 0 6px; | |
| opacity: 0.85; | |
| } | |
| .hero-desc { | |
| font-family: var(--sans); | |
| font-size: 0.88rem; | |
| color: var(--text-2) ; | |
| line-height: 1.6; | |
| margin: 0; | |
| max-width: 56ch; | |
| } | |
| /* Kill Gradio's default hero markdown styling */ | |
| .hero-text p { margin: 0 ; } | |
| .hero-text h1, .hero-text h3 { color: var(--text) ; } | |
| /* βββ Input / Terminal window ββββββββββββββββββββββββββββββββββ */ | |
| .input-card { | |
| position: relative; | |
| background: var(--surface); | |
| --block-background-fill: transparent; | |
| --block-border-color: var(--border); | |
| --block-label-text-color: var(--text-2); | |
| --input-background-fill: var(--surface-2); | |
| --input-background-fill-focus: var(--surface-2); | |
| --input-border-color: var(--border); | |
| --input-border-color-focus: var(--border-hi); | |
| --input-placeholder-color: var(--text-3); | |
| --input-text-color: var(--text); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-card); | |
| padding: 0 ; | |
| margin: 0 0 20px; | |
| overflow: hidden; | |
| } | |
| /* Terminal title bar */ | |
| .input-card::before { | |
| content: "β β β\00a0\00a0\00a0\00a0\00a0$ nl2bash"; | |
| display: block; | |
| background: var(--surface-3); | |
| border-bottom: 1px solid var(--border); | |
| padding: 10px 16px; | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| letter-spacing: 0.06em; | |
| color: var(--text-2); | |
| } | |
| /* Pad the inner content */ | |
| .input-card > div { | |
| padding: 16px 16px 20px ; | |
| } | |
| /* Override Gradio's textbox inside input-card */ | |
| .input-card .block, | |
| .input-card .gradio-textbox, | |
| .input-card [data-testid="textbox"], | |
| .input-card [data-testid="textbox"] > label, | |
| .input-card [data-testid="textbox"] > label > div, | |
| .input-card [data-testid="textbox"] > label > div > textarea, | |
| .input-card textarea, | |
| .input-card input { | |
| background: var(--surface-2) ; | |
| color: var(--text) ; | |
| border-color: var(--border) ; | |
| font-family: var(--mono) ; | |
| font-size: 0.9rem ; | |
| border-radius: var(--radius-sm) ; | |
| } | |
| .input-card .block { | |
| background: transparent ; | |
| } | |
| .input-card [data-testid="textbox"], | |
| .input-card [data-testid="textbox"] > label, | |
| .input-card [data-testid="textbox"] > label > div { | |
| box-shadow: none ; | |
| } | |
| .input-card textarea::placeholder { | |
| color: var(--text-3) ; | |
| opacity: 1 ; | |
| } | |
| .input-card textarea:focus, | |
| .input-card input:focus, | |
| .input-card [data-testid="textbox"] > label > div:focus-within { | |
| background: var(--surface-2) ; | |
| border-color: var(--border-hi) ; | |
| box-shadow: 0 0 0 2px var(--amber-dim) ; | |
| outline: none; | |
| } | |
| .input-card label span, | |
| .input-card .label-wrap span { | |
| font-family: var(--mono) ; | |
| font-size: 0.72rem ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.08em ; | |
| text-transform: uppercase ; | |
| color: var(--text-2) ; | |
| } | |
| /* Examples chips */ | |
| .input-card .examples-row button, | |
| .input-card .examples button { | |
| font-family: var(--mono) ; | |
| font-size: 0.75rem ; | |
| background: var(--surface-2) ; | |
| border: 1px solid var(--border) ; | |
| color: var(--text-2) ; | |
| border-radius: 6px ; | |
| padding: 4px 10px ; | |
| transition: border-color 0.15s, color 0.15s ; | |
| } | |
| .input-card .examples-row button:hover, | |
| .input-card .examples button:hover { | |
| border-color: var(--border-hi) ; | |
| color: var(--amber) ; | |
| background: var(--amber-dim) ; | |
| } | |
| /* βββ Generate button ββββββββββββββββββββββββββββββββββββββββββ */ | |
| .generate-button button { | |
| min-height: 48px; | |
| border-radius: var(--radius-sm) ; | |
| font-family: var(--mono) ; | |
| font-size: 0.9rem ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.04em; | |
| background: var(--amber) ; | |
| color: #fffaf2 ; | |
| border: none ; | |
| box-shadow: 0 10px 24px rgba(184, 114, 21, 0.18); | |
| transition: transform 0.12s, box-shadow 0.12s; | |
| } | |
| .generate-button button:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: 0 14px 28px rgba(184, 114, 21, 0.24); | |
| background: var(--amber-bright) ; | |
| } | |
| .generate-button button:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| /* βββ Results grid βββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .results-grid { | |
| display: grid ; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 14px; | |
| width: 100%; | |
| } | |
| /* βββ Model card βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .model-card { | |
| background: var(--surface-2); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-card); | |
| padding: 0 ; | |
| min-height: 100%; | |
| overflow: hidden; | |
| transition: border-color 0.18s, box-shadow 0.18s; | |
| } | |
| .model-card:hover { | |
| border-color: var(--border-hi); | |
| box-shadow: 0 0 24px var(--amber-glow); | |
| } | |
| /* Card top accent strip */ | |
| .model-card::before { | |
| content: ""; | |
| display: block; | |
| height: 2px; | |
| background: linear-gradient(90deg, var(--amber) 0%, transparent 100%); | |
| opacity: 0.5; | |
| } | |
| /* Card inner padding (Gradio adds a div inside) */ | |
| .model-card > div { | |
| padding: 14px 14px 16px ; | |
| } | |
| .card-title p, | |
| .card-title h2 { | |
| font-family: var(--mono) ; | |
| font-size: 0.85rem ; | |
| font-weight: 500 ; | |
| letter-spacing: 0.04em ; | |
| color: var(--text) ; | |
| margin: 0 0 10px ; | |
| padding-bottom: 10px ; | |
| border-bottom: 1px solid var(--border) ; | |
| } | |
| /* βββ Status pill ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .status-wrapper { | |
| margin-bottom: 8px; | |
| } | |
| .status-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 4px 10px 4px 8px; | |
| border-radius: 6px; | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| font-weight: 500; | |
| letter-spacing: 0.05em; | |
| border: 1px solid transparent; | |
| } | |
| .status-pill::before { | |
| content: ""; | |
| display: inline-block; | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| flex-shrink: 0; | |
| } | |
| .status-pill--idle { | |
| background: rgba(124, 135, 152, 0.12); | |
| color: var(--text-2); | |
| border-color: rgba(124, 135, 152, 0.2); | |
| } | |
| .status-pill--idle::before { background: var(--text-3); } | |
| .status-pill--success { | |
| background: var(--green-dim); | |
| color: var(--green); | |
| border-color: rgba(21, 128, 61, 0.2); | |
| } | |
| .status-pill--success::before { background: var(--green); } | |
| .status-pill--loading { | |
| background: var(--amber-dim); | |
| color: var(--amber); | |
| border-color: var(--border-hi); | |
| } | |
| .status-pill--loading::before { | |
| background: var(--amber); | |
| animation: dot-pulse 1.2s ease-in-out infinite; | |
| } | |
| .status-pill--error { | |
| background: var(--red-dim); | |
| color: var(--red); | |
| border-color: rgba(220, 38, 38, 0.18); | |
| } | |
| .status-pill--error::before { background: var(--red); } | |
| @keyframes dot-pulse { | |
| 0%, 100% { opacity: 1; transform: scale(1); } | |
| 50% { opacity: 0.3; transform: scale(0.7); } | |
| } | |
| /* βββ Command box ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .command-box { | |
| margin-top: 10px; | |
| --block-background-fill: transparent; | |
| --block-border-color: var(--border); | |
| --block-label-text-color: var(--text-2); | |
| --input-background-fill: #fffdf8; | |
| --input-background-fill-focus: #fffdf8; | |
| --input-border-color: var(--border); | |
| --input-border-color-focus: var(--border-hi); | |
| --input-text-color: var(--text); | |
| } | |
| .command-box .wrap, | |
| .command-box > div, | |
| .command-box [data-testid="code"], | |
| .command-box [data-testid="code"] > div { | |
| border-radius: var(--radius-sm) ; | |
| border-color: var(--border) ; | |
| background: #fffdf8 ; | |
| } | |
| .command-box .cm-editor, | |
| .command-box .cm-content, | |
| .command-box .cm-line, | |
| .command-box .cm-line span, | |
| .command-box .cm-gutters, | |
| .command-box .cm-gutterElement, | |
| .command-box .cm-scroller, | |
| .command-box textarea, | |
| .command-box pre, | |
| .command-box code { | |
| font-family: var(--mono) ; | |
| font-size: 0.82rem ; | |
| color: var(--text) ; | |
| background: #fffdf8 ; | |
| } | |
| .command-box .cm-editor { | |
| border: 1px solid var(--border) ; | |
| } | |
| .command-box .cm-gutters, | |
| .command-box .cm-activeLineGutter { | |
| color: var(--text-3) ; | |
| border-right: 1px solid var(--border) ; | |
| } | |
| .command-box .cm-activeLine { | |
| background: rgba(31, 41, 55, 0.03) ; | |
| } | |
| .command-box .cm-selectionBackground, | |
| .command-box ::selection { | |
| background: rgba(232, 160, 32, 0.28) ; | |
| } | |
| /* Copy button */ | |
| .command-box button { | |
| font-family: var(--mono) ; | |
| font-size: 0.7rem ; | |
| border-radius: 6px ; | |
| background: var(--surface-3) ; | |
| border: 1px solid var(--border) ; | |
| color: var(--text-2) ; | |
| transition: color 0.12s, border-color 0.12s ; | |
| } | |
| .command-box button:hover { | |
| color: var(--amber) ; | |
| border-color: var(--border-hi) ; | |
| } | |
| /* Code label */ | |
| .command-box label span, | |
| .command-box .label-wrap span { | |
| font-family: var(--mono) ; | |
| font-size: 0.68rem ; | |
| letter-spacing: 0.08em ; | |
| text-transform: uppercase ; | |
| color: var(--text-2) ; | |
| } | |
| /* βββ Latency block ββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .latency-wrapper { margin-top: 4px; } | |
| .latency-block { | |
| display: flex; | |
| align-items: baseline; | |
| justify-content: space-between; | |
| padding: 8px 10px; | |
| border-radius: 6px; | |
| background: var(--surface-2); | |
| border: 1px solid var(--border); | |
| margin-top: 8px; | |
| } | |
| .latency-label { | |
| font-family: var(--mono); | |
| font-size: 0.68rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.10em; | |
| color: var(--text-3); | |
| } | |
| .latency-value { | |
| font-family: var(--mono); | |
| font-size: 0.82rem; | |
| font-weight: 500; | |
| color: var(--amber); | |
| } | |
| /* βββ Detail copy ββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .detail-copy { | |
| margin-top: 10px; | |
| } | |
| .detail-copy p, | |
| .detail-copy em { | |
| font-family: var(--sans) ; | |
| font-size: 0.80rem ; | |
| color: var(--text-2) ; | |
| line-height: 1.55; | |
| } | |
| /* βββ Footer βββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .app-footer { | |
| margin-top: 24px; | |
| text-align: center; | |
| padding-top: 18px; | |
| border-top: 1px solid var(--border); | |
| font-family: var(--mono); | |
| font-size: 0.72rem; | |
| letter-spacing: 0.06em; | |
| color: var(--text-3) ; | |
| } | |
| /* βββ Responsive βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 1200px) { | |
| .results-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } | |
| .sidebar-column { position: static; } | |
| } | |
| @media (max-width: 820px) { | |
| .gradio-container { padding: 14px 12px 32px ; } | |
| .results-grid { grid-template-columns: minmax(0, 1fr); } | |
| .main-column, | |
| .sidebar-column { border-radius: var(--radius-sm); padding: 16px ; } | |
| .hero-headline { font-size: 2rem; } | |
| } | |
| /* βββ Reduce motion ββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .hero-cursor, | |
| .status-pill--loading::before { animation: none ; opacity: 1 ; } | |
| } | |