Spaces:
Sleeping
Sleeping
| /* CS1 Group 14 — Job Risk Analyzer | |
| Cream + navy + coral light theme */ | |
| @import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500;600&display=swap'); | |
| :root { | |
| --bg: #f7f3ec; | |
| --bg-1: #f1ebe0; | |
| --bg-2: #ebe3d4; | |
| --surface: #fdfaf3; | |
| --surface-elev: #ffffff; | |
| --border: #d9cfb9; | |
| --border-soft: #e6dcc7; | |
| --border-hi: #c4b89f; | |
| --ink: #1a2238; | |
| --ink-soft: #4a5475; | |
| --ink-mute: #8a9099; | |
| --coral: #e85a4f; | |
| --coral-glow: rgba(232, 90, 79, 0.15); | |
| --coral-soft: rgba(232, 90, 79, 0.08); | |
| --teal: #2a9d8f; | |
| --teal-glow: rgba(42, 157, 143, 0.18); | |
| --amber: #e9a23b; | |
| --plum: #7d4e8a; | |
| --red: #c53030; | |
| --green: #2f855a; | |
| --font-display: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; | |
| --font-mono: 'Geist Mono', 'SF Mono', Menlo, monospace; | |
| } | |
| html, body, | |
| gradio-app, .gradio-app, | |
| .main, #app, | |
| [data-testid="app"], | |
| .gradio-container, | |
| .contain, main { | |
| background: var(--bg) ; | |
| background-color: var(--bg) ; | |
| color: var(--ink) ; | |
| } | |
| gradio-app, .gradio-app, [data-testid="app"] { | |
| background-image: | |
| radial-gradient(ellipse 60% 40% at 15% 0%, rgba(232, 90, 79, 0.08), transparent 60%), | |
| radial-gradient(ellipse 50% 35% at 85% 10%, rgba(42, 157, 143, 0.06), transparent 60%) ; | |
| background-attachment: fixed ; | |
| background-repeat: no-repeat ; | |
| min-height: 100vh ; | |
| } | |
| html, body { | |
| margin: 0 ; | |
| padding: 0 ; | |
| font-family: var(--font-display) ; | |
| -webkit-font-smoothing: antialiased ; | |
| letter-spacing: -0.011em ; | |
| } | |
| body::before { | |
| content: ''; | |
| position: fixed; | |
| inset: 0; | |
| background-image: radial-gradient(circle, rgba(26, 34, 56, 0.045) 1px, transparent 1px); | |
| background-size: 22px 22px; | |
| pointer-events: none; | |
| z-index: 0; | |
| } | |
| .gradio-container { | |
| max-width: 1240px ; | |
| width: 92vw ; | |
| margin: 0 auto ; | |
| padding-top: 56px ; | |
| padding-bottom: 96px ; | |
| position: relative ; | |
| z-index: 1 ; | |
| } | |
| #escp_title { | |
| text-align: left ; | |
| margin-bottom: 40px ; | |
| padding-bottom: 28px ; | |
| border-bottom: 1px solid var(--border) ; | |
| position: relative ; | |
| } | |
| #escp_title::before { | |
| content: 'CS1.GROUP_14 / v1.2.0' ; | |
| display: block ; | |
| font-family: var(--font-mono) ; | |
| font-size: 11px ; | |
| color: var(--coral) ; | |
| letter-spacing: 0.05em ; | |
| margin-bottom: 16px ; | |
| text-transform: uppercase ; | |
| font-weight: 600 ; | |
| } | |
| #escp_title h1 { | |
| font-size: 2.75rem ; | |
| font-weight: 700 ; | |
| letter-spacing: -0.04em ; | |
| text-align: left ; | |
| margin: 0 0 12px 0 ; | |
| line-height: 1.05 ; | |
| color: var(--ink) ; | |
| } | |
| #escp_title p { | |
| color: var(--ink-soft) ; | |
| text-align: left ; | |
| font-size: 1rem ; | |
| margin: 0 ; | |
| } | |
| #escp_title::after { | |
| content: '' ; | |
| position: absolute ; | |
| top: 22px ; | |
| right: 0 ; | |
| width: 8px ; | |
| height: 8px ; | |
| border-radius: 50% ; | |
| background: var(--teal) ; | |
| box-shadow: 0 0 0 4px var(--teal-glow), 0 0 12px var(--teal) ; | |
| animation: pulse-dot 2s ease-in-out infinite ; | |
| } | |
| @keyframes pulse-dot { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| .tab-nav, | |
| div[role="tablist"] { | |
| background: var(--bg-1) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 10px ; | |
| padding: 4px ; | |
| margin-bottom: 24px ; | |
| display: flex ; | |
| flex-wrap: wrap ; | |
| gap: 2px ; | |
| width: fit-content ; | |
| max-width: 100% ; | |
| } | |
| .tab-nav button, | |
| button[role="tab"] { | |
| display: inline-flex ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| color: var(--ink-soft) ; | |
| font-weight: 500 ; | |
| font-size: 0.875rem ; | |
| border: none ; | |
| background: transparent ; | |
| padding: 8px 18px ; | |
| border-radius: 6px ; | |
| border-bottom: none ; | |
| white-space: nowrap ; | |
| } | |
| .tab-nav button:hover, | |
| button[role="tab"]:hover { | |
| color: var(--ink) ; | |
| background: var(--bg-2) ; | |
| } | |
| .tab-nav button.selected, | |
| button[role="tab"][aria-selected="true"], | |
| button[role="tab"].selected { | |
| color: #ffffff ; | |
| background: var(--ink) ; | |
| font-weight: 600 ; | |
| box-shadow: 0 1px 3px rgba(26, 34, 56, 0.25) ; | |
| } | |
| .tabitem { | |
| background: transparent ; | |
| border: none ; | |
| padding: 0 ; | |
| box-shadow: none ; | |
| } | |
| .gr-block, .gr-box, .gr-panel, .gr-group, | |
| .block, .form, .panel { | |
| background: var(--surface) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 12px ; | |
| } | |
| label, .gr-label { | |
| color: var(--coral) ; | |
| font-family: var(--font-mono) ; | |
| font-weight: 600 ; | |
| font-size: 0.7rem ; | |
| text-transform: uppercase ; | |
| letter-spacing: 0.08em ; | |
| } | |
| input, textarea, select { | |
| background: var(--surface-elev) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 8px ; | |
| color: var(--ink) ; | |
| font-family: var(--font-display) ; | |
| font-size: 0.95rem ; | |
| padding: 11px 14px ; | |
| caret-color: var(--coral) ; | |
| } | |
| input:focus, textarea:focus, select:focus { | |
| border-color: var(--coral) ; | |
| box-shadow: 0 0 0 3px var(--coral-glow) ; | |
| outline: none ; | |
| } | |
| input::placeholder, textarea::placeholder { | |
| color: var(--ink-mute) ; | |
| } | |
| button:not([role="tab"]) { | |
| font-family: var(--font-display) ; | |
| font-weight: 600 ; | |
| padding: 11px 20px ; | |
| border-radius: 8px ; | |
| font-size: 0.9rem ; | |
| } | |
| button.primary { | |
| background: var(--coral) ; | |
| color: #ffffff ; | |
| border: 1px solid var(--coral) ; | |
| box-shadow: 0 2px 6px var(--coral-glow) ; | |
| } | |
| button.primary:hover { | |
| background: #d94a3f ; | |
| transform: translateY(-1px) ; | |
| } | |
| button.secondary { | |
| background: var(--surface-elev) ; | |
| color: var(--ink) ; | |
| border: 1px solid var(--border) ; | |
| } | |
| h1, h2 { | |
| color: var(--ink) ; | |
| font-weight: 700 ; | |
| } | |
| h3 { | |
| color: var(--ink) ; | |
| font-weight: 600 ; | |
| font-size: 1.05rem ; | |
| margin-top: 28px ; | |
| margin-bottom: 12px ; | |
| padding-bottom: 8px ; | |
| border-bottom: 1px solid var(--border) ; | |
| } | |
| p, li { | |
| color: var(--ink-soft) ; | |
| line-height: 1.65 ; | |
| font-size: 0.95rem ; | |
| } | |
| strong { | |
| color: var(--ink) ; | |
| font-weight: 700 ; | |
| } | |
| code { | |
| background: var(--bg-1) ; | |
| color: var(--plum) ; | |
| padding: 2px 6px ; | |
| border-radius: 4px ; | |
| font-size: 0.85em ; | |
| font-family: var(--font-mono) ; | |
| border: 1px solid var(--border-soft) ; | |
| } | |
| table { | |
| font-size: 0.85rem ; | |
| color: var(--ink) ; | |
| background: var(--surface) ; | |
| } | |
| table thead th { | |
| background: var(--bg-1) ; | |
| color: var(--ink) ; | |
| font-family: var(--font-mono) ; | |
| font-weight: 600 ; | |
| text-transform: uppercase ; | |
| font-size: 0.7rem ; | |
| letter-spacing: 0.08em ; | |
| border-bottom: 2px solid var(--ink) ; | |
| padding: 12px 14px ; | |
| } | |
| table tbody td { | |
| border-bottom: 1px solid var(--border-soft) ; | |
| color: var(--ink-soft) ; | |
| padding: 11px 14px ; | |
| } | |
| table tbody tr:hover td { | |
| background: var(--bg-1) ; | |
| } | |
| .chatbot, .gr-chatbot { | |
| background: var(--bg-1) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 12px ; | |
| } | |
| .chatbot .message, | |
| .gr-chatbot .message { | |
| font-size: 0.92rem ; | |
| line-height: 1.6 ; | |
| color: var(--ink) ; | |
| } | |
| .chatbot .message.user, | |
| .gr-chatbot .message.user { | |
| background: var(--ink) ; | |
| color: #ffffff ; | |
| } | |
| .chatbot .message.user *, | |
| .gr-chatbot .message.user * { | |
| color: #ffffff ; | |
| } | |
| .chatbot .message.bot, | |
| .gr-chatbot .message.bot { | |
| background: var(--surface-elev) ; | |
| color: var(--ink) ; | |
| border-left: 3px solid var(--coral) ; | |
| } | |
| .examples-row button { | |
| background: var(--surface-elev) ; | |
| color: var(--ink) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 999px ; | |
| font-size: 0.85rem ; | |
| font-weight: 500 ; | |
| text-transform: none ; | |
| letter-spacing: -0.005em ; | |
| padding: 7px 14px ; | |
| } | |
| .examples-row button:hover { | |
| background: var(--coral-soft) ; | |
| color: var(--coral) ; | |
| border-color: var(--coral) ; | |
| } | |
| .js-plotly-plot { | |
| border-radius: 12px ; | |
| background: var(--surface) ; | |
| border: 1px solid var(--border) ; | |
| } | |
| [type="number"] { | |
| font-family: var(--font-mono) ; | |
| font-size: 1.75rem ; | |
| font-weight: 700 ; | |
| color: var(--coral) ; | |
| text-align: center ; | |
| } | |
| footer, footer * { | |
| background: transparent ; | |
| color: var(--ink-mute) ; | |
| font-family: var(--font-mono) ; | |
| font-size: 0.75rem ; | |
| } | |
| footer a:hover { | |
| color: var(--coral) ; | |
| } | |
| ::selection { | |
| background: var(--coral-glow); | |
| color: var(--ink); | |
| } | |
| /* ========================================================= | |
| FIX: lock plot heights (Gradio 6 has runaway plots) | |
| ========================================================= */ | |
| /* Target every possible plot container with a hard height lock */ | |
| .js-plotly-plot, | |
| .plot-container, | |
| .plotly, | |
| .plotly-graph-div, | |
| [data-testid="plot"], | |
| .gradio-container .gr-plot, | |
| .gradio-container [class*="plot"] { | |
| height: 480px ; | |
| max-height: 480px ; | |
| min-height: 320px ; | |
| } | |
| /* Specifically the inline-style div Plotly creates */ | |
| .js-plotly-plot > div, | |
| .plotly > div, | |
| .plot-container > div { | |
| height: 100% ; | |
| max-height: 480px ; | |
| } | |
| /* Some Gradio 6 plot wrappers use 'svelte-...' classes */ | |
| div[class*="plot"][class*="svelte"] { | |
| height: 480px ; | |
| max-height: 480px ; | |
| } | |
| /* AI Dashboard chart specifically — make sure visualization slot has dimensions */ | |
| #component-ai_chart, | |
| [id*="ai_chart"] { | |
| min-height: 400px ; | |
| height: 480px ; | |
| } |