LLM_Comparison_Tool / frontend /src /styles /components.css
NeonClary's picture
Upload folder using huggingface_hub
060fd46 verified
Raw History Blame Contribute Delete
7.93 kB
/* ── Theme variables ─────────────────────────────────────────────── */
:root[data-theme="light"] {
/* Warm cream canvas so white surfaces/controls read clearly */
--bg-primary: #FAF7F1;
--bg-secondary: #F3EEE6;
--bg-tertiary: #EBE4D8;
--bg-gradient: linear-gradient(165deg, #FBF8F3 0%, #F5EFE6 55%, #F0E9DF 100%);
--text-primary: #1A1714;
--text-secondary: #4A453E;
--text-tertiary: #6A645C;
--text-muted: #6A645C;
--accent-primary: #5558E3;
--accent-secondary: #7C4FE8;
--accent-gradient: linear-gradient(135deg, #5558E3, #7C4FE8);
--accent-light: #EDEBFA;
/* Soft surfaces — brand color lives on accents/chips, not big washes */
--neon-accent: #7C4FE8;
--neon-bg: #FFFFFF;
--neon-border: #C9BCEF;
--comp-bg: #FFFFFF;
--comp-border: #C2D2EA;
--query-accent: #0D9668;
--border-primary: #DDD5C8;
--border-muted: #E8E1D6;
--shadow-sm: 0 1px 2px rgba(40, 30, 10, 0.06);
--shadow-md: 0 4px 10px -2px rgba(40, 30, 10, 0.08), 0 2px 4px -2px rgba(40, 30, 10, 0.05);
--shadow-lg: 0 12px 24px -6px rgba(40, 30, 10, 0.12), 0 4px 8px -4px rgba(40, 30, 10, 0.06);
--card-bg: #FFFFFF;
--card-hover: #F7F3EC;
--sidebar-bg: #E8E0D4;
/* Soft cream chrome — lighter than the page wash, not white like cards */
--header-bg: #FBF9F5;
--provider-fireworks: #F97316;
--provider-openai: #10A37F;
--provider-gemini: #4285F4;
--provider-neon: #7C4FE8;
--font-body: 15px;
--font-sm: 13px;
--font-xs: 12px;
--font-lg: 18px;
--space-1: 8px;
--space-2: 16px;
--space-3: 24px;
--focus-ring: 0 0 0 2px var(--card-bg), 0 0 0 4px var(--accent-primary);
}
:root[data-theme="dark"] {
--bg-primary: #1F2937;
--bg-secondary: #111827;
--bg-tertiary: #374151;
--bg-gradient: linear-gradient(135deg, #1F2937 0%, #111827 50%, #374151 100%);
--text-primary: #F9FAFB;
--text-secondary: #D1D5DB;
--text-tertiary: #9CA3AF;
--text-muted: #7C8595;
--accent-primary: #818CF8;
--accent-secondary: #A78BFA;
--accent-gradient: linear-gradient(135deg, #818CF8, #A78BFA);
--accent-light: #312E81;
--neon-accent: #A78BFA;
--neon-bg: #1F2937;
--neon-border: #8B77C0;
--comp-bg: #1F2937;
--comp-border: #3D5A80;
--query-accent: #34D399;
--border-primary: #374151;
--border-muted: #1F2937;
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5);
--card-bg: #1F2937;
--card-hover: #374151;
--sidebar-bg: #151B26;
--header-bg: #1A2332;
--provider-fireworks: #FB923C;
--provider-openai: #34D399;
--provider-gemini: #60A5FA;
--provider-neon: #A78BFA;
--font-body: 15px;
--font-sm: 13px;
--font-xs: 12px;
--font-lg: 18px;
--space-1: 8px;
--space-2: 16px;
--space-3: 24px;
--focus-ring: 0 0 0 2px var(--card-bg), 0 0 0 4px var(--accent-primary);
}
/* ── Base reset ─────────────────────────────────────────────────── */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
font-size: var(--font-body);
background: var(--bg-gradient);
color: var(--text-primary);
min-height: 100vh;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/* ── Focus + a11y ───────────────────────────────────────────────── */
:focus {
outline: none;
}
:focus-visible {
outline: none;
box-shadow: var(--focus-ring);
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
box-shadow: var(--focus-ring);
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.spin {
animation: none !important;
}
}
/* ── Utility ────────────────────────────────────────────────────── */
.card {
background: var(--card-bg);
border: 1px solid var(--border-primary);
border-radius: 12px;
box-shadow: var(--shadow-sm);
transition: box-shadow 0.2s, border-color 0.2s;
}
:root[data-theme="light"] .card {
box-shadow: var(--shadow-md);
}
.card:hover {
box-shadow: var(--shadow-md);
}
.badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 8px;
border-radius: 9999px;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.02em;
text-transform: uppercase;
background: var(--card-bg);
border: 1px solid var(--border-primary);
color: var(--text-secondary);
}
.badge::before {
content: '';
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
flex-shrink: 0;
}
.badge-neon {
color: var(--provider-neon);
border-color: var(--neon-border);
}
.badge-comp {
color: var(--text-secondary);
border-color: var(--comp-border);
}
.badge-fireworks {
color: var(--provider-fireworks);
border-color: color-mix(in srgb, var(--provider-fireworks) 40%, var(--border-primary));
}
.badge-openai {
color: var(--provider-openai);
border-color: color-mix(in srgb, var(--provider-openai) 40%, var(--border-primary));
}
.badge-gemini {
color: var(--provider-gemini);
border-color: color-mix(in srgb, var(--provider-gemini) 40%, var(--border-primary));
}
:root[data-theme="dark"] .badge {
background: var(--bg-tertiary);
}
button {
cursor: pointer;
font-family: inherit;
}
.btn-primary {
background: var(--accent-gradient);
color: #FFFFFF;
border: none;
font-weight: 600;
}
.btn-secondary {
background: var(--card-bg);
color: var(--text-secondary);
border: 1px solid var(--border-primary);
font-weight: 500;
}
.btn-secondary:hover {
background: var(--card-hover);
color: var(--text-primary);
}
.skeleton-block {
border-radius: 8px;
background: linear-gradient(
90deg,
var(--bg-tertiary) 0%,
var(--card-hover) 50%,
var(--bg-tertiary) 100%
);
background-size: 200% 100%;
animation: skeleton-shimmer 1.2s ease-in-out infinite;
}
@keyframes skeleton-shimmer {
0% { background-position: 100% 0; }
100% { background-position: -100% 0; }
}
.empty-state {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: var(--space-1);
padding: var(--space-3);
border: 1px dashed var(--border-primary);
border-radius: 12px;
background: var(--card-bg);
box-shadow: var(--shadow-sm);
}
.empty-state-title {
font-size: var(--font-lg);
font-weight: 600;
color: var(--text-primary);
margin: 0;
}
.empty-state-body {
font-size: var(--font-sm);
color: var(--text-secondary);
margin: 0;
line-height: 1.55;
}
/* ── Scrollbar ──────────────────────────────────────────────────── */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--text-muted);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--text-tertiary);
}