Spaces:
Running
Running
| @import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); | |
| :root { | |
| --sage-50: #ecfdf5; | |
| --sage-100: #d1fae5; | |
| --sage-200: #a7f3d0; | |
| --sage-300: #6ee7b7; | |
| --sage-400: #34d399; | |
| --sage-500: #10b981; | |
| --sage-600: #059669; | |
| --sage-700: #047857; | |
| --sage-800: #065f46; | |
| --terra-50: #fff7ed; | |
| --terra-100: #ffedd5; | |
| --terra-200: #fed7aa; | |
| --terra-300: #fdba74; | |
| --terra-400: #fb923c; | |
| --terra-500: #f97316; | |
| --terra-600: #ea580c; | |
| --terra-700: #c2410c; | |
| --stone-50: #fafaf9; | |
| --stone-100: #f5f5f4; | |
| --stone-200: #e7e5e4; | |
| --stone-300: #d6d3d1; | |
| --stone-400: #a8a29e; | |
| --stone-500: #78716c; | |
| --stone-600: #57534e; | |
| --stone-700: #44403c; | |
| --stone-800: #292524; | |
| --stone-900: #1c1917; | |
| --bg: var(--stone-50); | |
| --bg-card: #ffffff; | |
| --bg-hover: var(--sage-50); | |
| --bg-input: var(--stone-100); | |
| --text-primary: var(--stone-800); | |
| --text-secondary: var(--stone-500); | |
| --text-muted: var(--stone-400); | |
| --border: var(--stone-200); | |
| --border-hover: var(--sage-200); | |
| --border-accent: var(--sage-300); | |
| --border-focus: var(--sage-400); | |
| --shadow-sm: 0 1px 2px rgba(0,0,0,0.03); | |
| --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.04), 0 2px 4px -2px rgba(0,0,0,0.03); | |
| --shadow-lg: 0 10px 15px -3px rgba(16,185,129,0.06), 0 4px 6px -4px rgba(16,185,129,0.04); | |
| --shadow-hover: 0 8px 30px rgba(16,185,129,0.1); | |
| --radius-sm: 8px; | |
| --radius-md: 12px; | |
| --radius-lg: 16px; | |
| --radius-xl: 24px; | |
| --red-100: #fee2e2; | |
| --red-700: #b91c1c; | |
| } | |
| /* ββ Dark Theme Variables ββ */ | |
| .dark, :root[data-theme="dark"] { | |
| --bg: #0f172a; | |
| --bg-card: #1e293b; | |
| --bg-hover: rgba(16, 185, 129, 0.04); | |
| --bg-input: #0f172a; | |
| --text-primary: #f8fafc; | |
| --text-secondary: #cbd5e1; | |
| --text-muted: #64748b; | |
| --border: #334155; | |
| --border-hover: #475569; | |
| --border-accent: var(--sage-600); | |
| --border-focus: var(--sage-500); | |
| --shadow-sm: 0 1px 2px rgba(0,0,0,0.2); | |
| --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.3), 0 2px 4px -2px rgba(0,0,0,0.2); | |
| --shadow-lg: 0 10px 15px -3px rgba(16,185,129,0.15), 0 4px 6px -4px rgba(16,185,129,0.1); | |
| --shadow-hover: 0 8px 30px rgba(16,185,129,0.25); | |
| --red-100: #450a0a; | |
| --red-700: #fca5a5; | |
| /* Muted brand colors for dark mode backgrounds */ | |
| --sage-50: rgba(16, 185, 129, 0.05); | |
| --sage-100: rgba(16, 185, 129, 0.15); | |
| --sage-200: rgba(16, 185, 129, 0.3); | |
| --sage-300: rgba(16, 185, 129, 0.45); | |
| --terra-50: rgba(249, 115, 22, 0.05); | |
| --terra-100: rgba(249, 115, 22, 0.15); | |
| --terra-200: rgba(249, 115, 22, 0.3); | |
| --terra-300: rgba(249, 115, 22, 0.45); | |
| } | |
| .dark .loading-overlay { | |
| background: rgba(15, 23, 42, 0.85) ; | |
| } | |
| *, *::before, *::after { box-sizing: border-box; } | |
| body, .gradio-container, grad-container { | |
| font-family: 'DM Sans', system-ui, -apple-system, sans-serif ; | |
| background: var(--bg) ; | |
| color: var(--text-primary) ; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| .gradio-container { | |
| max-width: 1400px ; | |
| margin: 0 auto ; | |
| padding: 20px 32px 40px ; | |
| background: transparent ; | |
| } | |
| h1, h2, h3, h4, h5, h6, .app-title, .candidate-name, .metric-value, .score-badge-value { | |
| font-family: 'Space Grotesk', sans-serif ; | |
| letter-spacing: -0.02em; | |
| } | |
| code, pre, .mono { | |
| font-family: 'JetBrains Mono', monospace ; | |
| } | |
| .app-header { | |
| text-align: center; | |
| padding: 36px 20px 28px; | |
| position: relative; | |
| margin-bottom: 8px; | |
| } | |
| .app-header::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| width: 80px; | |
| height: 4px; | |
| background: linear-gradient(90deg, var(--sage-300), var(--terra-300), var(--sage-300)); | |
| border-radius: 2px; | |
| background-size: 200% 100%; | |
| animation: shimmer 3s ease-in-out infinite; | |
| } | |
| @keyframes shimmer { | |
| 0%, 100% { background-position: 0% 50%; } | |
| 50% { background-position: 100% 50%; } | |
| } | |
| .app-title { | |
| font-size: 42px; | |
| font-weight: 800; | |
| color: var(--sage-600) ; | |
| line-height: 1.1; | |
| margin: 0; | |
| text-shadow: 0 1px 3px rgba(0,0,0,0.04); | |
| } | |
| .app-subtitle { | |
| font-size: 15px; | |
| color: var(--text-secondary); | |
| font-weight: 400; | |
| margin-top: 8px; | |
| } | |
| /* ββ Gradio Overrides (Modern & Backward Compatible) ββββββββββββββββββ */ | |
| .gr-box, .gr-form, .panel, .tab-nav, .tabs, .tabitem, .block, .fieldset, .form { | |
| border-color: var(--border) ; | |
| border-radius: var(--radius-md) ; | |
| background: transparent ; | |
| } | |
| input:not([type="checkbox"]):not([type="radio"]), textarea, select, .gr-input, .gr-text-input, .block input, .block textarea { | |
| background: var(--bg-input) ; | |
| border: 1.5px solid var(--border) ; | |
| border-radius: var(--radius-sm) ; | |
| font-family: 'DM Sans', sans-serif ; | |
| font-size: 14px ; | |
| color: var(--text-primary) ; | |
| transition: all 0.2s ease; | |
| } | |
| input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, .gr-input:focus-within, .gr-text-input:focus-within, .block input:focus, .block textarea:focus { | |
| border-color: var(--border-focus) ; | |
| box-shadow: 0 0 0 3px var(--sage-100) ; | |
| outline: none ; | |
| } | |
| .gr-box, label, .gr-label, .block-label, span.block-label, label span { | |
| font-family: 'DM Sans', sans-serif ; | |
| font-size: 13px ; | |
| font-weight: 600 ; | |
| color: var(--text-secondary) ; | |
| letter-spacing: 0.02em; | |
| } | |
| .gr-button, button, .gr-btn, .btn { | |
| font-family: 'DM Sans', sans-serif ; | |
| font-weight: 600 ; | |
| border-radius: var(--radius-sm) ; | |
| transition: all 0.2s ease ; | |
| border: 1.5px solid transparent ; | |
| } | |
| .gr-button-primary, button.gr-button-lg, button.primary, .primary { | |
| background: linear-gradient(135deg, var(--sage-400), var(--sage-500)) ; | |
| color: white ; | |
| border: none ; | |
| box-shadow: var(--shadow-md) ; | |
| } | |
| .gr-button-primary:hover, button.primary:hover, .primary:hover { | |
| transform: translateY(-1px) ; | |
| box-shadow: var(--shadow-hover) ; | |
| background: linear-gradient(135deg, var(--sage-500), var(--sage-600)) ; | |
| } | |
| .gr-button-secondary, button.secondary, .secondary { | |
| background: var(--bg-card) ; | |
| color: var(--sage-600) ; | |
| border: 1.5px solid var(--sage-200) ; | |
| } | |
| .gr-button-secondary:hover, button.secondary:hover, .secondary:hover { | |
| background: var(--sage-50) ; | |
| border-color: var(--sage-300) ; | |
| } | |
| .gr-accordion, .accordion, details { | |
| border: 1.5px solid var(--border) ; | |
| border-radius: var(--radius-md) ; | |
| background: var(--bg-card) ; | |
| } | |
| .gr-checkbox, input[type="checkbox"] { | |
| accent-color: var(--sage-400) ; | |
| } | |
| .gr-slider input[type="range"], input[type="range"] { | |
| accent-color: var(--sage-400) ; | |
| } | |
| /* Examples styling (formatted as beautiful cards) */ | |
| .examples, .examples-table, table.examples, .examples-list { | |
| background: transparent ; | |
| border: none ; | |
| margin-top: 8px ; | |
| } | |
| .examples button, .examples-table tr, table.examples tr, .examples-list button, .gr-examples-button { | |
| background: var(--bg-card) ; | |
| border: 1.5px solid var(--border) ; | |
| border-radius: var(--radius-sm) ; | |
| padding: 10px 14px ; | |
| margin: 6px 0 ; | |
| font-size: 13px ; | |
| text-align: left ; | |
| color: var(--text-secondary) ; | |
| box-shadow: var(--shadow-sm) ; | |
| transition: all 0.2s ease ; | |
| cursor: pointer ; | |
| display: block ; | |
| width: 100% ; | |
| } | |
| .examples button:hover, .examples-table tr:hover, table.examples tr:hover, .examples-list button:hover, .gr-examples-button:hover { | |
| border-color: var(--sage-300) ; | |
| background: var(--sage-50) ; | |
| color: var(--sage-700) ; | |
| transform: translateY(-1px) ; | |
| box-shadow: var(--shadow-md) ; | |
| } | |
| .tabs, .tab-nav { | |
| border-bottom: 1.5px solid var(--border) ; | |
| } | |
| button.tab-nav { | |
| font-family: 'DM Sans', sans-serif ; | |
| font-size: 14px ; | |
| font-weight: 500 ; | |
| color: var(--text-secondary) ; | |
| border-bottom: 2px solid transparent ; | |
| transition: all 0.2s; | |
| } | |
| button.tab-nav.selected { | |
| color: var(--sage-500) ; | |
| border-bottom-color: var(--sage-400) ; | |
| } | |
| /* ββ Progress / Loading βββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .progress-container { | |
| background: var(--bg-card); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-lg); | |
| padding: 24px 28px; | |
| margin-bottom: 20px; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .progress-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 16px; | |
| } | |
| .progress-title { | |
| font-size: 15px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-family: 'Space Grotesk', sans-serif; | |
| } | |
| .progress-step-label { font-size: 13px; color: var(--text-secondary); font-weight: 400; } | |
| .progress-track { | |
| width: 100%; | |
| height: 8px; | |
| background: var(--stone-200); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| border-radius: 4px; | |
| background: linear-gradient(90deg, var(--sage-300), var(--sage-400), var(--terra-300), var(--sage-400)); | |
| background-size: 300% 100%; | |
| animation: progressGlow 2s ease-in-out infinite; | |
| transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| } | |
| .progress-fill::after { | |
| content: ''; | |
| position: absolute; | |
| right: 0; | |
| top: 0; | |
| height: 100%; | |
| width: 20px; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4)); | |
| border-radius: 4px; | |
| } | |
| @keyframes progressGlow { | |
| 0%, 100% { background-position: 0% 50%; } | |
| 50% { background-position: 100% 50%; } | |
| } | |
| .progress-steps { | |
| display: flex; | |
| justify-content: space-between; | |
| margin-top: 16px; | |
| gap: 4px; | |
| } | |
| .progress-step { | |
| flex: 1; | |
| text-align: center; | |
| padding: 10px 4px; | |
| border-radius: var(--radius-sm); | |
| font-size: 11px; | |
| font-weight: 500; | |
| color: var(--text-muted); | |
| transition: all 0.4s ease; | |
| position: relative; | |
| } | |
| .progress-step.active { | |
| color: var(--sage-500); | |
| background: var(--sage-50); | |
| transform: scale(1.02); | |
| } | |
| .progress-step.completed { color: var(--sage-500); } | |
| .progress-step .step-icon { | |
| display: block; | |
| font-size: 20px; | |
| margin-bottom: 4px; | |
| transition: transform 0.3s ease; | |
| } | |
| .progress-step.active .step-icon { | |
| animation: stepBounce 1s ease-in-out infinite; | |
| } | |
| @keyframes stepBounce { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-4px); } | |
| } | |
| /* ββ Loading Overlay ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .loading-overlay { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 400px; | |
| background: var(--bg-card); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-lg); | |
| gap: 24px; | |
| animation: fadeIn 0.3s ease; | |
| width: 100%; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| .loading-ring-container { | |
| position: relative; | |
| width: 80px; | |
| height: 80px; | |
| } | |
| .loading-ring { | |
| position: absolute; | |
| inset: 0; | |
| border-radius: 50%; | |
| border: 3px solid transparent; | |
| animation: ringSpin 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite; | |
| } | |
| .loading-ring:nth-child(1) { border-top-color: var(--sage-400); animation-delay: 0s; } | |
| .loading-ring:nth-child(2) { inset: 8px; border-right-color: var(--terra-400); animation-delay: 0.2s; animation-direction: reverse; } | |
| .loading-ring:nth-child(3) { inset: 16px; border-bottom-color: var(--sage-300); animation-delay: 0.4s; } | |
| @keyframes ringSpin { | |
| to { transform: rotate(360deg); } | |
| } | |
| .loading-text { | |
| font-family: 'Space Grotesk', sans-serif; | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| animation: textPulse 2s ease-in-out infinite; | |
| } | |
| @keyframes textPulse { | |
| 0%, 100% { opacity: 0.7; } | |
| 50% { opacity: 1; } | |
| } | |
| .loading-sub { font-size: 13px; color: var(--text-muted); font-weight: 400; } | |
| .loading-particles { | |
| display: flex; | |
| gap: 8px; | |
| align-items: center; | |
| } | |
| .loading-particle { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| animation: particleFloat 1.2s ease-in-out infinite; | |
| } | |
| .loading-particle:nth-child(1) { background: var(--sage-400); animation-delay: 0s; } | |
| .loading-particle:nth-child(2) { background: var(--terra-400); animation-delay: 0.2s; } | |
| .loading-particle:nth-child(3) { background: var(--sage-300); animation-delay: 0.4s; } | |
| .loading-particle:nth-child(4) { background: var(--terra-300); animation-delay: 0.6s; } | |
| .loading-particle:nth-child(5) { background: var(--sage-400); animation-delay: 0.8s; } | |
| @keyframes particleFloat { | |
| 0%, 100% { transform: translateY(0) scale(1); opacity: 0.4; } | |
| 50% { transform: translateY(-12px) scale(1.3); opacity: 1; } | |
| } | |
| /* ββ Candidate Card ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .candidate-card { | |
| background: var(--bg-card); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-lg); | |
| padding: 24px; | |
| margin-bottom: 14px; | |
| box-shadow: var(--shadow-sm); | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .candidate-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 4px; | |
| height: 100%; | |
| background: var(--sage-300); | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| border-radius: 0 4px 4px 0; | |
| } | |
| .candidate-card:hover { | |
| border-color: var(--border-hover); | |
| box-shadow: var(--shadow-hover); | |
| transform: translateY(-2px); | |
| background: var(--bg-hover); | |
| } | |
| .candidate-card:hover::before { opacity: 1; } | |
| .candidate-rank { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 28px; | |
| height: 28px; | |
| border-radius: 6px; | |
| font-size: 12px; | |
| font-weight: 700; | |
| color: var(--sage-600); | |
| background: var(--sage-100); | |
| margin-right: 10px; | |
| font-family: 'Space Grotesk', sans-serif; | |
| transition: all 0.2s; | |
| } | |
| .candidate-card:hover .candidate-rank { | |
| background: var(--sage-200); | |
| color: var(--sage-700); | |
| } | |
| .candidate-name { | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| letter-spacing: -0.3px; | |
| transition: color 0.2s; | |
| } | |
| .candidate-card:hover .candidate-name { color: var(--sage-600); } | |
| .candidate-role { | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| margin-top: 2px; | |
| } | |
| .candidate-meta { | |
| font-size: 13px; | |
| color: var(--text-muted); | |
| margin-top: 4px; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| /* ββ Score Badge βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .score-badge { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-width: 72px; | |
| height: 72px; | |
| border-radius: var(--radius-md); | |
| font-weight: 700; | |
| text-align: center; | |
| transition: all 0.3s ease; | |
| } | |
| .candidate-card:hover .score-badge { transform: scale(1.05); } | |
| .score-badge-value { font-size: 22px; font-weight: 700; line-height: 1; } | |
| .score-badge-label { | |
| font-size: 9px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.8px; | |
| margin-top: 2px; | |
| opacity: 0.8; | |
| } | |
| .score-strong { | |
| background: var(--sage-100) ; | |
| color: var(--sage-700) ; | |
| border: 1px solid var(--sage-200) ; | |
| } | |
| .score-good { | |
| background: #dbeafe ; | |
| color: #1d4ed8 ; | |
| border: 1px solid #bfdbfe ; | |
| } | |
| .score-potential { | |
| background: var(--terra-100) ; | |
| color: var(--terra-600) ; | |
| border: 1px solid var(--terra-200) ; | |
| } | |
| .score-weak { | |
| background: #fee2e2 ; | |
| color: #b91c1c ; | |
| border: 1px solid #fecaca ; | |
| } | |
| /* ββ Score Bars ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .score-bar-row { | |
| display: flex; | |
| align-items: center; | |
| margin: 6px 0; | |
| gap: 8px; | |
| } | |
| .score-bar-label { | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| width: 90px; | |
| text-align: right; | |
| flex-shrink: 0; | |
| letter-spacing: 0.02em; | |
| } | |
| .score-bar-track { | |
| flex: 1; | |
| height: 6px; | |
| background: var(--stone-200); | |
| border-radius: 3px; | |
| overflow: hidden; | |
| } | |
| .score-bar-fill { | |
| height: 100%; | |
| border-radius: 3px; | |
| transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); | |
| position: relative; | |
| } | |
| .score-bar-fill::after { | |
| content: ''; | |
| position: absolute; | |
| right: 0; | |
| top: 0; | |
| height: 100%; | |
| width: 12px; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3)); | |
| border-radius: 3px; | |
| } | |
| .candidate-card:hover .score-bar-fill { filter: brightness(1.1); } | |
| .score-bar-pct { | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| width: 36px; | |
| text-align: right; | |
| flex-shrink: 0; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| /* ββ Skill Chips βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .skill-chip { | |
| display: inline-block; | |
| padding: 4px 12px; | |
| margin: 2px; | |
| border-radius: 8px; | |
| font-size: 11px; | |
| font-weight: 500; | |
| letter-spacing: 0.2px; | |
| transition: all 0.2s ease; | |
| cursor: default; | |
| } | |
| .skill-chip.matched { | |
| background: var(--sage-100); | |
| color: var(--sage-700); | |
| border: 1px solid var(--sage-200); | |
| } | |
| .skill-chip.matched:hover { | |
| background: var(--sage-200); | |
| transform: translateY(-1px); | |
| box-shadow: 0 2px 8px rgba(16,185,129,0.15); | |
| } | |
| .skill-chip.missing { | |
| background: #fee2e2; | |
| color: #b91c1c; | |
| border: 1px solid #fecaca; | |
| } | |
| .skill-chip.missing:hover { | |
| background: #fecaca; | |
| transform: translateY(-1px); | |
| } | |
| /* ββ Status Badges βββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 4px 14px; | |
| border-radius: 999px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.3px; | |
| transition: all 0.2s ease; | |
| cursor: default; | |
| } | |
| .badge:hover { transform: translateY(-1px); } | |
| .badge-listwise { | |
| background: var(--sage-100); | |
| color: var(--sage-700); | |
| border: 1px solid var(--sage-200); | |
| } | |
| .badge-pii { | |
| background: #dbeafe; | |
| color: #1d4ed8; | |
| border: 1px solid #bfdbfe; | |
| } | |
| .badge-method { | |
| background: var(--terra-100); | |
| color: var(--terra-600); | |
| border: 1px solid var(--terra-200); | |
| } | |
| .badge-turbo { | |
| background: var(--stone-100); | |
| color: var(--stone-600); | |
| border: 1px solid var(--stone-200); | |
| } | |
| /* ββ Metric Cards ββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .metric-card { | |
| background: var(--bg-card); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-md); | |
| padding: 20px; | |
| text-align: center; | |
| transition: all 0.3s ease; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .metric-card:hover { | |
| border-color: var(--sage-200); | |
| box-shadow: var(--shadow-hover); | |
| transform: translateY(-2px); | |
| } | |
| .metric-label { | |
| font-size: 11px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.8px; | |
| color: var(--text-muted); | |
| margin-bottom: 8px; | |
| } | |
| .metric-value { | |
| font-size: 30px; | |
| font-weight: 700; | |
| color: var(--sage-500); | |
| } | |
| /* ββ Empty State βββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .empty-state { | |
| text-align: center; | |
| padding: 60px 20px; | |
| } | |
| .empty-state-icon { | |
| font-size: 48px; | |
| margin-bottom: 16px; | |
| animation: float 3s ease-in-out infinite; | |
| } | |
| @keyframes float { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-8px); } | |
| } | |
| .empty-state-title { | |
| font-family: 'Space Grotesk', sans-serif; | |
| font-size: 22px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 8px; | |
| } | |
| .empty-state-desc { | |
| font-size: 14px; | |
| color: var(--text-secondary); | |
| line-height: 1.6; | |
| max-width: 400px; | |
| margin: 0 auto; | |
| } | |
| .empty-state-hint { font-size: 12px; color: var(--text-muted); margin-top: 8px; } | |
| /* ββ Rationale Panel ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .rationale-panel { border-left: 4px solid var(--sage-300); } | |
| /* ββ About Section ββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .about-section { padding: 8px 0; } | |
| .about-section h2 { | |
| font-family: 'Space Grotesk', sans-serif; | |
| font-size: 28px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| margin: 0 0 8px; | |
| } | |
| .about-section h3 { | |
| font-family: 'Space Grotesk', sans-serif; | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin: 28px 0 12px; | |
| } | |
| .about-feature-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 14px; | |
| margin: 16px 0; | |
| } | |
| .about-feature-card { | |
| background: var(--bg-card); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-md); | |
| padding: 18px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| transition: all 0.3s ease; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .about-feature-card:hover { | |
| border-color: var(--sage-200); | |
| box-shadow: var(--shadow-hover); | |
| transform: translateY(-2px); | |
| } | |
| .about-feature-card strong { font-size: 14px; color: var(--sage-600); } | |
| .about-feature-card span { font-size: 13px; color: var(--text-secondary); line-height: 1.5; } | |
| /* ββ Scrollbar ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| ::-webkit-scrollbar { width: 6px; height: 6px; } | |
| ::-webkit-scrollbar-track { background: var(--stone-100); border-radius: 3px; } | |
| ::-webkit-scrollbar-thumb { background: var(--sage-200); border-radius: 3px; } | |
| ::-webkit-scrollbar-thumb:hover { background: var(--sage-300); } | |
| /* ββ Responsive ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| @media (max-width: 768px) { | |
| .gradio-container { padding: 12px 16px ; } | |
| .app-title { font-size: 28px; } | |
| .candidate-card { padding: 16px; } | |
| .progress-steps { flex-wrap: wrap; gap: 8px; } | |
| .progress-step { flex: 0 0 calc(50% - 4px); } | |
| } | |