CS1_Group_14_2.0 / style.css
grasepard2's picture
Update style.css
3e9f7e1 verified
/* 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) !important;
background-color: var(--bg) !important;
color: var(--ink) !important;
}
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%) !important;
background-attachment: fixed !important;
background-repeat: no-repeat !important;
min-height: 100vh !important;
}
html, body {
margin: 0 !important;
padding: 0 !important;
font-family: var(--font-display) !important;
-webkit-font-smoothing: antialiased !important;
letter-spacing: -0.011em !important;
}
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 !important;
width: 92vw !important;
margin: 0 auto !important;
padding-top: 56px !important;
padding-bottom: 96px !important;
position: relative !important;
z-index: 1 !important;
}
#escp_title {
text-align: left !important;
margin-bottom: 40px !important;
padding-bottom: 28px !important;
border-bottom: 1px solid var(--border) !important;
position: relative !important;
}
#escp_title::before {
content: 'CS1.GROUP_14 / v1.2.0' !important;
display: block !important;
font-family: var(--font-mono) !important;
font-size: 11px !important;
color: var(--coral) !important;
letter-spacing: 0.05em !important;
margin-bottom: 16px !important;
text-transform: uppercase !important;
font-weight: 600 !important;
}
#escp_title h1 {
font-size: 2.75rem !important;
font-weight: 700 !important;
letter-spacing: -0.04em !important;
text-align: left !important;
margin: 0 0 12px 0 !important;
line-height: 1.05 !important;
color: var(--ink) !important;
}
#escp_title p {
color: var(--ink-soft) !important;
text-align: left !important;
font-size: 1rem !important;
margin: 0 !important;
}
#escp_title::after {
content: '' !important;
position: absolute !important;
top: 22px !important;
right: 0 !important;
width: 8px !important;
height: 8px !important;
border-radius: 50% !important;
background: var(--teal) !important;
box-shadow: 0 0 0 4px var(--teal-glow), 0 0 12px var(--teal) !important;
animation: pulse-dot 2s ease-in-out infinite !important;
}
@keyframes pulse-dot {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.tab-nav,
div[role="tablist"] {
background: var(--bg-1) !important;
border: 1px solid var(--border) !important;
border-radius: 10px !important;
padding: 4px !important;
margin-bottom: 24px !important;
display: flex !important;
flex-wrap: wrap !important;
gap: 2px !important;
width: fit-content !important;
max-width: 100% !important;
}
.tab-nav button,
button[role="tab"] {
display: inline-flex !important;
visibility: visible !important;
opacity: 1 !important;
color: var(--ink-soft) !important;
font-weight: 500 !important;
font-size: 0.875rem !important;
border: none !important;
background: transparent !important;
padding: 8px 18px !important;
border-radius: 6px !important;
border-bottom: none !important;
white-space: nowrap !important;
}
.tab-nav button:hover,
button[role="tab"]:hover {
color: var(--ink) !important;
background: var(--bg-2) !important;
}
.tab-nav button.selected,
button[role="tab"][aria-selected="true"],
button[role="tab"].selected {
color: #ffffff !important;
background: var(--ink) !important;
font-weight: 600 !important;
box-shadow: 0 1px 3px rgba(26, 34, 56, 0.25) !important;
}
.tabitem {
background: transparent !important;
border: none !important;
padding: 0 !important;
box-shadow: none !important;
}
.gr-block, .gr-box, .gr-panel, .gr-group,
.block, .form, .panel {
background: var(--surface) !important;
border: 1px solid var(--border) !important;
border-radius: 12px !important;
}
label, .gr-label {
color: var(--coral) !important;
font-family: var(--font-mono) !important;
font-weight: 600 !important;
font-size: 0.7rem !important;
text-transform: uppercase !important;
letter-spacing: 0.08em !important;
}
input, textarea, select {
background: var(--surface-elev) !important;
border: 1px solid var(--border) !important;
border-radius: 8px !important;
color: var(--ink) !important;
font-family: var(--font-display) !important;
font-size: 0.95rem !important;
padding: 11px 14px !important;
caret-color: var(--coral) !important;
}
input:focus, textarea:focus, select:focus {
border-color: var(--coral) !important;
box-shadow: 0 0 0 3px var(--coral-glow) !important;
outline: none !important;
}
input::placeholder, textarea::placeholder {
color: var(--ink-mute) !important;
}
button:not([role="tab"]) {
font-family: var(--font-display) !important;
font-weight: 600 !important;
padding: 11px 20px !important;
border-radius: 8px !important;
font-size: 0.9rem !important;
}
button.primary {
background: var(--coral) !important;
color: #ffffff !important;
border: 1px solid var(--coral) !important;
box-shadow: 0 2px 6px var(--coral-glow) !important;
}
button.primary:hover {
background: #d94a3f !important;
transform: translateY(-1px) !important;
}
button.secondary {
background: var(--surface-elev) !important;
color: var(--ink) !important;
border: 1px solid var(--border) !important;
}
h1, h2 {
color: var(--ink) !important;
font-weight: 700 !important;
}
h3 {
color: var(--ink) !important;
font-weight: 600 !important;
font-size: 1.05rem !important;
margin-top: 28px !important;
margin-bottom: 12px !important;
padding-bottom: 8px !important;
border-bottom: 1px solid var(--border) !important;
}
p, li {
color: var(--ink-soft) !important;
line-height: 1.65 !important;
font-size: 0.95rem !important;
}
strong {
color: var(--ink) !important;
font-weight: 700 !important;
}
code {
background: var(--bg-1) !important;
color: var(--plum) !important;
padding: 2px 6px !important;
border-radius: 4px !important;
font-size: 0.85em !important;
font-family: var(--font-mono) !important;
border: 1px solid var(--border-soft) !important;
}
table {
font-size: 0.85rem !important;
color: var(--ink) !important;
background: var(--surface) !important;
}
table thead th {
background: var(--bg-1) !important;
color: var(--ink) !important;
font-family: var(--font-mono) !important;
font-weight: 600 !important;
text-transform: uppercase !important;
font-size: 0.7rem !important;
letter-spacing: 0.08em !important;
border-bottom: 2px solid var(--ink) !important;
padding: 12px 14px !important;
}
table tbody td {
border-bottom: 1px solid var(--border-soft) !important;
color: var(--ink-soft) !important;
padding: 11px 14px !important;
}
table tbody tr:hover td {
background: var(--bg-1) !important;
}
.chatbot, .gr-chatbot {
background: var(--bg-1) !important;
border: 1px solid var(--border) !important;
border-radius: 12px !important;
}
.chatbot .message,
.gr-chatbot .message {
font-size: 0.92rem !important;
line-height: 1.6 !important;
color: var(--ink) !important;
}
.chatbot .message.user,
.gr-chatbot .message.user {
background: var(--ink) !important;
color: #ffffff !important;
}
.chatbot .message.user *,
.gr-chatbot .message.user * {
color: #ffffff !important;
}
.chatbot .message.bot,
.gr-chatbot .message.bot {
background: var(--surface-elev) !important;
color: var(--ink) !important;
border-left: 3px solid var(--coral) !important;
}
.examples-row button {
background: var(--surface-elev) !important;
color: var(--ink) !important;
border: 1px solid var(--border) !important;
border-radius: 999px !important;
font-size: 0.85rem !important;
font-weight: 500 !important;
text-transform: none !important;
letter-spacing: -0.005em !important;
padding: 7px 14px !important;
}
.examples-row button:hover {
background: var(--coral-soft) !important;
color: var(--coral) !important;
border-color: var(--coral) !important;
}
.js-plotly-plot {
border-radius: 12px !important;
background: var(--surface) !important;
border: 1px solid var(--border) !important;
}
[type="number"] {
font-family: var(--font-mono) !important;
font-size: 1.75rem !important;
font-weight: 700 !important;
color: var(--coral) !important;
text-align: center !important;
}
footer, footer * {
background: transparent !important;
color: var(--ink-mute) !important;
font-family: var(--font-mono) !important;
font-size: 0.75rem !important;
}
footer a:hover {
color: var(--coral) !important;
}
::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 !important;
max-height: 480px !important;
min-height: 320px !important;
}
/* Specifically the inline-style div Plotly creates */
.js-plotly-plot > div,
.plotly > div,
.plot-container > div {
height: 100% !important;
max-height: 480px !important;
}
/* Some Gradio 6 plot wrappers use 'svelte-...' classes */
div[class*="plot"][class*="svelte"] {
height: 480px !important;
max-height: 480px !important;
}
/* AI Dashboard chart specifically — make sure visualization slot has dimensions */
#component-ai_chart,
[id*="ai_chart"] {
min-height: 400px !important;
height: 480px !important;
}