grasepard2 commited on
Commit
1de3481
·
verified ·
1 Parent(s): 0f3251c

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +306 -207
style.css CHANGED
@@ -1,359 +1,458 @@
1
- /* --- Target the Gradio app wrapper for backgrounds --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  gradio-app,
3
  .gradio-app,
4
  .main,
5
  #app,
6
  [data-testid="app"] {
7
- background-color: rgb(40,9,109) !important;
8
  background-image:
 
9
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_top.png'),
10
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_mid.png'),
11
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_bottom.png') !important;
12
  background-position:
 
13
  top center,
14
  0 913px,
15
  bottom center !important;
16
  background-repeat:
 
17
  no-repeat,
18
  repeat-y,
19
  no-repeat !important;
20
  background-size:
 
21
  100% auto,
22
  100% auto,
23
  100% auto !important;
 
24
  min-height: 100vh !important;
25
  }
26
 
27
- /* --- Fallback on html/body --- */
28
  html, body {
29
- background-color: rgb(40,9,109) !important;
30
  margin: 0 !important;
31
  padding: 0 !important;
32
  min-height: 100vh !important;
 
 
33
  }
34
 
35
- /* Bottom image is now part of the main background layers (positioned at bottom center) */
36
-
37
  /* --- Main container --- */
38
  .gradio-container {
39
- max-width: 1400px !important;
40
- width: 94vw !important;
41
  margin: 0 auto !important;
42
- padding-top: 220px !important;
43
- padding-bottom: 150px !important;
44
  background: transparent !important;
45
  }
46
 
47
- /* --- Title in ESCP gold --- */
 
 
 
 
 
48
  #escp_title h1 {
49
- color: rgb(242,198,55) !important;
50
- font-size: 3rem !important;
51
  font-weight: 800 !important;
 
52
  text-align: center !important;
53
  margin: 0 0 12px 0 !important;
 
 
 
 
54
  }
55
 
56
- /* --- Subtitle --- */
57
  #escp_title p, #escp_title em {
58
- color: rgba(255,255,255,0.85) !important;
59
  text-align: center !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  }
61
 
62
- /* --- Tab bar background --- */
63
  .tabs > .tab-nav,
64
  .tab-nav,
65
  div[role="tablist"],
66
  .svelte-tabs > .tab-nav {
67
- background: rgba(40,9,109,0.6) !important;
68
- border-radius: 10px 10px 0 0 !important;
69
- padding: 4px !important;
 
 
 
 
 
70
  }
71
 
72
- /* --- ALL tab buttons: force white text --- */
73
  .tabs > .tab-nav button,
74
  .tab-nav button,
75
  div[role="tablist"] button,
76
  button[role="tab"],
77
- .svelte-tabs button,
78
- .tab-nav > button,
79
- .tabs button {
80
- color: #ffffff !important;
81
- font-weight: 600 !important;
82
  border: none !important;
83
  background: transparent !important;
84
- padding: 10px 20px !important;
85
- border-radius: 8px 8px 0 0 !important;
 
 
86
  opacity: 1 !important;
 
 
 
 
 
 
 
87
  }
88
 
89
- /* --- Selected tab: ESCP gold --- */
90
  .tabs > .tab-nav button.selected,
91
  .tab-nav button.selected,
92
  button[role="tab"][aria-selected="true"],
93
  button[role="tab"].selected,
94
- div[role="tablist"] button[aria-selected="true"],
95
  .svelte-tabs button.selected {
96
- color: rgb(242,198,55) !important;
97
- background: rgba(255,255,255,0.12) !important;
98
- }
99
-
100
- /* --- Unselected tabs: ensure visibility --- */
101
- .tabs > .tab-nav button:not(.selected),
102
- .tab-nav button:not(.selected),
103
- button[role="tab"][aria-selected="false"],
104
- button[role="tab"]:not(.selected),
105
- div[role="tablist"] button:not([aria-selected="true"]) {
106
- color: #ffffff !important;
107
- opacity: 1 !important;
108
  }
109
 
110
- /* --- White card panels --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  .gradio-container .gr-block,
112
  .gradio-container .gr-box,
113
  .gradio-container .gr-panel,
114
  .gradio-container .gr-group {
115
- background: #ffffff !important;
116
- border-radius: 10px !important;
 
 
117
  }
118
 
119
- /* --- Tab content area --- */
120
- .tabitem {
121
- background: rgba(255,255,255,0.95) !important;
122
- border-radius: 0 0 10px 10px !important;
123
- padding: 16px !important;
 
 
 
 
124
  }
125
 
126
  /* --- Inputs --- */
127
  .gradio-container input,
128
  .gradio-container textarea,
129
  .gradio-container select {
130
- background: #ffffff !important;
131
- border: 1px solid #d1d5db !important;
132
- border-radius: 8px !important;
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
134
 
135
- /* --- Buttons: ESCP purple primary --- */
 
 
 
 
 
136
  .gradio-container button:not([role="tab"]) {
137
  font-weight: 600 !important;
138
- padding: 10px 16px !important;
139
  border-radius: 10px !important;
 
 
 
140
  }
141
 
142
  button.primary {
143
- background-color: rgb(40,9,109) !important;
144
  color: #ffffff !important;
145
- border: none !important;
 
146
  }
147
 
148
  button.primary:hover {
149
- background-color: rgb(60,20,140) !important;
 
 
 
150
  }
151
 
152
  button.secondary {
153
- background-color: #ffffff !important;
154
- color: rgb(40,9,109) !important;
155
- border: 2px solid rgb(40,9,109) !important;
156
  }
157
 
158
  button.secondary:hover {
159
- background-color: rgb(240,238,250) !important;
160
- }
161
-
162
- /* --- Dataframes --- */
163
- [data-testid="dataframe"] {
164
- background-color: #ffffff !important;
165
- border-radius: 10px !important;
166
- }
167
-
168
- table {
169
- font-size: 0.85rem !important;
170
  }
171
 
172
- /* --- Chatbot (AI Dashboard tab) --- */
173
- .gr-chatbot {
174
- min-height: 380px !important;
175
- background-color: #ffffff !important;
176
- border-radius: 12px !important;
177
  }
178
 
179
- .gr-chatbot .message.user {
180
- background-color: rgb(232,225,250) !important;
181
- border-radius: 12px !important;
 
 
 
182
  }
183
 
184
- .gr-chatbot .message.bot {
185
- background-color: #f3f4f6 !important;
186
- border-radius: 12px !important;
 
 
 
 
 
187
  }
188
 
189
- /* --- Gallery --- */
190
- .gallery {
191
- background: #ffffff !important;
192
- border-radius: 10px !important;
193
  }
194
 
195
- /* --- Log textbox --- */
196
- textarea {
197
- font-family: monospace !important;
198
- font-size: 0.8rem !important;
199
  }
200
 
201
- /* --- Markdown headings inside tabs --- */
202
- .tabitem h3 {
203
- color: rgb(40,9,109) !important;
204
- font-weight: 700 !important;
 
 
 
205
  }
206
 
207
- .tabitem h4 {
208
- color: #374151 !important;
 
 
 
 
209
  }
210
 
211
- /* --- Examples row (AI Dashboard) --- */
212
- .examples-row button {
213
- background: rgb(240,238,250) !important;
214
- color: rgb(40,9,109) !important;
215
- border: 1px solid rgb(40,9,109) !important;
216
- border-radius: 8px !important;
217
  font-size: 0.85rem !important;
 
218
  }
219
 
220
- .examples-row button:hover {
221
- background: rgb(232,225,250) !important;
 
 
 
 
 
 
222
  }
223
 
224
- /* --- Header / footer: transparent over banner --- */
225
- header, header *,
226
- footer, footer * {
227
- background: transparent !important;
228
- box-shadow: none !important;
229
  }
230
 
231
- footer a, footer button,
232
- header a, header button {
233
- background: transparent !important;
234
- border: none !important;
235
- box-shadow: none !important;
236
  }
237
 
238
- #footer, #footer *,
239
- [class*="footer"], [class*="footer"] *,
240
- [class*="chip"], [class*="pill"], [class*="chip"] *, [class*="pill"] * {
241
- background: transparent !important;
242
- border: none !important;
243
- box-shadow: none !important;
244
  }
245
 
246
- [data-testid*="api"], [data-testid*="settings"],
247
- [id*="api"], [id*="settings"],
248
- [class*="api"], [class*="settings"],
249
- [class*="bottom"], [class*="toolbar"], [class*="controls"] {
250
- background: transparent !important;
251
- box-shadow: none !important;
252
  }
253
 
254
- [data-testid*="api"] *, [data-testid*="settings"] *,
255
- [id*="api"] *, [id*="settings"] *,
256
- [class*="api"] *, [class*="settings"] * {
257
- background: transparent !important;
258
- box-shadow: none !important;
259
  }
260
 
261
- section footer {
262
- background: transparent !important;
 
 
 
 
 
 
 
 
 
263
  }
264
 
265
- section footer button,
266
- section footer a {
267
- background: transparent !important;
268
- background-color: transparent !important;
269
- border: none !important;
270
- box-shadow: none !important;
271
- color: white !important;
272
  }
273
 
274
- section footer button:hover,
275
- section footer button:focus,
276
- section footer a:hover,
277
- section footer a:focus {
278
- background: transparent !important;
279
- background-color: transparent !important;
280
- box-shadow: none !important;
281
  }
282
 
283
- section footer button,
284
- section footer button * {
285
- background: transparent !important;
286
- background-color: transparent !important;
287
- background-image: none !important;
288
- box-shadow: none !important;
289
- filter: none !important;
290
  }
291
 
292
- section footer button::before,
293
- section footer button::after {
294
- background: transparent !important;
295
- background-color: transparent !important;
296
- background-image: none !important;
297
- box-shadow: none !important;
298
- filter: none !important;
299
  }
300
 
301
- section footer a,
302
- section footer a * {
 
303
  background: transparent !important;
304
- background-color: transparent !important;
305
  box-shadow: none !important;
 
306
  }
307
 
308
- .gradio-container footer button,
309
- .gradio-container footer button *,
310
- .gradio-container .footer button,
311
- .gradio-container .footer button * {
312
- background: transparent !important;
313
- background-color: transparent !important;
314
- background-image: none !important;
315
- box-shadow: none !important;
316
  }
317
 
318
- .gradio-container footer button::before,
319
- .gradio-container footer button::after,
320
- .gradio-container .footer button::before,
321
- .gradio-container .footer button::after {
322
- background: transparent !important;
323
- background-color: transparent !important;
324
- background-image: none !important;
325
- box-shadow: none !important;
326
  }
327
 
328
- /* Force readable text in all inputs regardless of system theme */
329
  .gradio-container input,
330
  .gradio-container textarea,
331
  .gradio-container select,
332
- .gradio-container .gr-text-input,
333
  .gradio-container [data-testid="textbox"] textarea {
334
- color: #1a1a1a !important;
335
- background: #ffffff !important;
336
- caret-color: #1a1a1a !important;
337
- }
338
-
339
- .gradio-container input::placeholder,
340
- .gradio-container textarea::placeholder {
341
- color: #888 !important;
342
- }
343
-
344
- /* Force readable text in score/risk number boxes */
345
- .gradio-container [data-testid="number-input"] input,
346
- .gradio-container [type="number"] {
347
- color: #1a1a1a !important;
348
- }
349
-
350
- /* Markdown output should be dark text on white */
351
- .gradio-container .prose,
352
- .gradio-container .markdown,
353
- .gradio-container .gr-markdown {
354
- color: #1a1a1a !important;
355
- }
356
-
357
- .gradio-container .prose * {
358
- color: inherit !important;
359
  }
 
1
+ /* =========================================================
2
+ MINIMAL PRO — CS1 Group 14
3
+ White + Charcoal + Indigo accent, animated gradient borders
4
+ ========================================================= */
5
+
6
+ /* --- Color tokens --- */
7
+ :root {
8
+ --bg: #fafafa;
9
+ --surface: #ffffff;
10
+ --ink: #0f172a;
11
+ --ink-soft: #475569;
12
+ --ink-mute: #94a3b8;
13
+ --border: #e2e8f0;
14
+ --accent: #4f46e5;
15
+ --accent-soft: #eef2ff;
16
+ --accent-2: #06b6d4;
17
+ --danger: #dc2626;
18
+ --warn: #ea580c;
19
+ --ok: #059669;
20
+ --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04), 0 1px 3px rgba(15, 23, 42, 0.06);
21
+ --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.06), 0 2px 4px rgba(15, 23, 42, 0.04);
22
+ --shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.08), 0 4px 8px rgba(15, 23, 42, 0.04);
23
+ --radius: 14px;
24
+ --radius-lg: 20px;
25
+ }
26
+
27
+ /* --- Background: clean off-white with ESCP imagery faded out --- */
28
  gradio-app,
29
  .gradio-app,
30
  .main,
31
  #app,
32
  [data-testid="app"] {
33
+ background-color: var(--bg) !important;
34
  background-image:
35
+ linear-gradient(rgba(250,250,250,0.92), rgba(250,250,250,0.92)),
36
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_top.png'),
37
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_mid.png'),
38
  url('https://huggingface.co/spaces/atascioglu/SE21AppTemplate/resolve/main/background_bottom.png') !important;
39
  background-position:
40
+ center,
41
  top center,
42
  0 913px,
43
  bottom center !important;
44
  background-repeat:
45
+ no-repeat,
46
  no-repeat,
47
  repeat-y,
48
  no-repeat !important;
49
  background-size:
50
+ cover,
51
  100% auto,
52
  100% auto,
53
  100% auto !important;
54
+ background-attachment: fixed, scroll, scroll, scroll !important;
55
  min-height: 100vh !important;
56
  }
57
 
 
58
  html, body {
59
+ background-color: var(--bg) !important;
60
  margin: 0 !important;
61
  padding: 0 !important;
62
  min-height: 100vh !important;
63
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif !important;
64
+ color: var(--ink) !important;
65
  }
66
 
 
 
67
  /* --- Main container --- */
68
  .gradio-container {
69
+ max-width: 1280px !important;
70
+ width: 92vw !important;
71
  margin: 0 auto !important;
72
+ padding-top: 60px !important;
73
+ padding-bottom: 80px !important;
74
  background: transparent !important;
75
  }
76
 
77
+ /* --- Title block --- */
78
+ #escp_title {
79
+ text-align: center !important;
80
+ margin-bottom: 48px !important;
81
+ }
82
+
83
  #escp_title h1 {
84
+ color: var(--ink) !important;
85
+ font-size: 3.5rem !important;
86
  font-weight: 800 !important;
87
+ letter-spacing: -0.04em !important;
88
  text-align: center !important;
89
  margin: 0 0 12px 0 !important;
90
+ background: linear-gradient(135deg, var(--ink) 0%, var(--accent) 100%) !important;
91
+ -webkit-background-clip: text !important;
92
+ background-clip: text !important;
93
+ -webkit-text-fill-color: transparent !important;
94
  }
95
 
 
96
  #escp_title p, #escp_title em {
97
+ color: var(--ink-soft) !important;
98
  text-align: center !important;
99
+ font-style: normal !important;
100
+ font-size: 1.05rem !important;
101
+ font-weight: 500 !important;
102
+ }
103
+
104
+ /* =========================================================
105
+ ANIMATED GRADIENT BORDER — used on tab content + KPI grid
106
+ ========================================================= */
107
+ @keyframes gradient-rotate {
108
+ 0% { background-position: 0% 50%; }
109
+ 50% { background-position: 100% 50%; }
110
+ 100% { background-position: 0% 50%; }
111
+ }
112
+
113
+ @keyframes gradient-rotate-slow {
114
+ 0% { background-position: 0% 50%; }
115
+ 100% { background-position: 200% 50%; }
116
  }
117
 
118
+ /* --- Tab bar --- */
119
  .tabs > .tab-nav,
120
  .tab-nav,
121
  div[role="tablist"],
122
  .svelte-tabs > .tab-nav {
123
+ background: transparent !important;
124
+ border: none !important;
125
+ padding: 0 !important;
126
+ margin-bottom: 24px !important;
127
+ display: flex !important;
128
+ gap: 4px !important;
129
+ border-bottom: 1px solid var(--border) !important;
130
+ border-radius: 0 !important;
131
  }
132
 
133
+ /* --- Tab buttons (unselected) --- */
134
  .tabs > .tab-nav button,
135
  .tab-nav button,
136
  div[role="tablist"] button,
137
  button[role="tab"],
138
+ .svelte-tabs button {
139
+ color: var(--ink-soft) !important;
140
+ font-weight: 500 !important;
141
+ font-size: 0.95rem !important;
 
142
  border: none !important;
143
  background: transparent !important;
144
+ padding: 14px 20px !important;
145
+ border-radius: 0 !important;
146
+ border-bottom: 2px solid transparent !important;
147
+ transition: color 0.2s, border-color 0.2s !important;
148
  opacity: 1 !important;
149
+ margin-bottom: -1px !important;
150
+ }
151
+
152
+ .tabs > .tab-nav button:hover,
153
+ .tab-nav button:hover,
154
+ button[role="tab"]:hover {
155
+ color: var(--ink) !important;
156
  }
157
 
158
+ /* --- Selected tab --- */
159
  .tabs > .tab-nav button.selected,
160
  .tab-nav button.selected,
161
  button[role="tab"][aria-selected="true"],
162
  button[role="tab"].selected,
 
163
  .svelte-tabs button.selected {
164
+ color: var(--accent) !important;
165
+ background: transparent !important;
166
+ border-bottom: 2px solid var(--accent) !important;
167
+ font-weight: 600 !important;
 
 
 
 
 
 
 
 
168
  }
169
 
170
+ /* --- Tab content area with animated border --- */
171
+ .tabitem {
172
+ position: relative !important;
173
+ background: var(--surface) !important;
174
+ border-radius: var(--radius-lg) !important;
175
+ padding: 32px !important;
176
+ box-shadow: var(--shadow-md) !important;
177
+ border: 1px solid var(--border) !important;
178
+ }
179
+
180
+ .tabitem::before {
181
+ content: '' !important;
182
+ position: absolute !important;
183
+ inset: -2px !important;
184
+ border-radius: var(--radius-lg) !important;
185
+ padding: 2px !important;
186
+ background: linear-gradient(
187
+ 115deg,
188
+ transparent 0%,
189
+ transparent 35%,
190
+ var(--accent) 50%,
191
+ var(--accent-2) 60%,
192
+ transparent 75%,
193
+ transparent 100%
194
+ ) !important;
195
+ background-size: 300% 100% !important;
196
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;
197
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;
198
+ -webkit-mask-composite: xor !important;
199
+ mask-composite: exclude !important;
200
+ animation: gradient-rotate-slow 8s linear infinite !important;
201
+ pointer-events: none !important;
202
+ z-index: 0 !important;
203
+ }
204
+
205
+ /* --- All elements inside tabitem need to render above the ::before --- */
206
+ .tabitem > * {
207
+ position: relative !important;
208
+ z-index: 1 !important;
209
+ }
210
+
211
+ /* --- Inner cards / blocks --- */
212
  .gradio-container .gr-block,
213
  .gradio-container .gr-box,
214
  .gradio-container .gr-panel,
215
  .gradio-container .gr-group {
216
+ background: var(--surface) !important;
217
+ border: 1px solid var(--border) !important;
218
+ border-radius: var(--radius) !important;
219
+ box-shadow: none !important;
220
  }
221
 
222
+ /* --- Form labels --- */
223
+ .gradio-container label,
224
+ .gradio-container .gr-label,
225
+ .gradio-container span[data-testid="block-info"] {
226
+ color: var(--ink) !important;
227
+ font-weight: 600 !important;
228
+ font-size: 0.85rem !important;
229
+ text-transform: uppercase !important;
230
+ letter-spacing: 0.04em !important;
231
  }
232
 
233
  /* --- Inputs --- */
234
  .gradio-container input,
235
  .gradio-container textarea,
236
  .gradio-container select {
237
+ background: var(--surface) !important;
238
+ border: 1px solid var(--border) !important;
239
+ border-radius: 10px !important;
240
+ color: var(--ink) !important;
241
+ font-size: 0.95rem !important;
242
+ padding: 12px 14px !important;
243
+ transition: border-color 0.15s, box-shadow 0.15s !important;
244
+ }
245
+
246
+ .gradio-container input:focus,
247
+ .gradio-container textarea:focus,
248
+ .gradio-container select:focus {
249
+ border-color: var(--accent) !important;
250
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12) !important;
251
+ outline: none !important;
252
  }
253
 
254
+ .gradio-container input::placeholder,
255
+ .gradio-container textarea::placeholder {
256
+ color: var(--ink-mute) !important;
257
+ }
258
+
259
+ /* --- Buttons --- */
260
  .gradio-container button:not([role="tab"]) {
261
  font-weight: 600 !important;
262
+ padding: 12px 22px !important;
263
  border-radius: 10px !important;
264
+ font-size: 0.95rem !important;
265
+ letter-spacing: -0.01em !important;
266
+ transition: transform 0.1s, box-shadow 0.15s, background 0.15s !important;
267
  }
268
 
269
  button.primary {
270
+ background: var(--ink) !important;
271
  color: #ffffff !important;
272
+ border: 1px solid var(--ink) !important;
273
+ box-shadow: var(--shadow-sm) !important;
274
  }
275
 
276
  button.primary:hover {
277
+ background: var(--accent) !important;
278
+ border-color: var(--accent) !important;
279
+ transform: translateY(-1px) !important;
280
+ box-shadow: var(--shadow-md) !important;
281
  }
282
 
283
  button.secondary {
284
+ background: var(--surface) !important;
285
+ color: var(--ink) !important;
286
+ border: 1px solid var(--border) !important;
287
  }
288
 
289
  button.secondary:hover {
290
+ background: var(--accent-soft) !important;
291
+ border-color: var(--accent) !important;
292
+ color: var(--accent) !important;
 
 
 
 
 
 
 
 
293
  }
294
 
295
+ /* --- Markdown headings --- */
296
+ .tabitem h1, .tabitem h2 {
297
+ color: var(--ink) !important;
298
+ font-weight: 700 !important;
299
+ letter-spacing: -0.02em !important;
300
  }
301
 
302
+ .tabitem h3 {
303
+ color: var(--ink) !important;
304
+ font-weight: 700 !important;
305
+ font-size: 1.15rem !important;
306
+ letter-spacing: -0.01em !important;
307
+ margin-top: 24px !important;
308
  }
309
 
310
+ .tabitem h4 {
311
+ color: var(--ink-soft) !important;
312
+ font-weight: 600 !important;
313
+ font-size: 0.95rem !important;
314
+ text-transform: uppercase !important;
315
+ letter-spacing: 0.05em !important;
316
+ margin-top: 20px !important;
317
+ margin-bottom: 12px !important;
318
  }
319
 
320
+ .tabitem p, .tabitem li {
321
+ color: var(--ink-soft) !important;
322
+ line-height: 1.6 !important;
 
323
  }
324
 
325
+ .tabitem strong {
326
+ color: var(--ink) !important;
327
+ font-weight: 700 !important;
 
328
  }
329
 
330
+ .tabitem code {
331
+ background: var(--accent-soft) !important;
332
+ color: var(--accent) !important;
333
+ padding: 2px 6px !important;
334
+ border-radius: 4px !important;
335
+ font-size: 0.9em !important;
336
+ font-weight: 600 !important;
337
  }
338
 
339
+ /* --- Dataframes --- */
340
+ [data-testid="dataframe"] {
341
+ background: var(--surface) !important;
342
+ border: 1px solid var(--border) !important;
343
+ border-radius: var(--radius) !important;
344
+ overflow: hidden !important;
345
  }
346
 
347
+ table {
 
 
 
 
 
348
  font-size: 0.85rem !important;
349
+ color: var(--ink) !important;
350
  }
351
 
352
+ table thead th {
353
+ background: var(--bg) !important;
354
+ color: var(--ink) !important;
355
+ font-weight: 600 !important;
356
+ text-transform: uppercase !important;
357
+ font-size: 0.75rem !important;
358
+ letter-spacing: 0.04em !important;
359
+ border-bottom: 1px solid var(--border) !important;
360
  }
361
 
362
+ table tbody td {
363
+ border-bottom: 1px solid var(--border) !important;
364
+ color: var(--ink-soft) !important;
 
 
365
  }
366
 
367
+ table tbody tr:hover td {
368
+ background: var(--accent-soft) !important;
369
+ color: var(--ink) !important;
 
 
370
  }
371
 
372
+ /* --- Chatbot --- */
373
+ .gr-chatbot {
374
+ min-height: 380px !important;
375
+ background: var(--surface) !important;
376
+ border: 1px solid var(--border) !important;
377
+ border-radius: var(--radius) !important;
378
  }
379
 
380
+ .gr-chatbot .message.user {
381
+ background: var(--ink) !important;
382
+ color: #ffffff !important;
383
+ border-radius: 14px 14px 4px 14px !important;
 
 
384
  }
385
 
386
+ .gr-chatbot .message.bot {
387
+ background: var(--accent-soft) !important;
388
+ color: var(--ink) !important;
389
+ border-radius: 14px 14px 14px 4px !important;
 
390
  }
391
 
392
+ /* --- Examples row (chatbot suggestions) --- */
393
+ .examples-row button {
394
+ background: var(--surface) !important;
395
+ color: var(--ink-soft) !important;
396
+ border: 1px solid var(--border) !important;
397
+ border-radius: 999px !important;
398
+ font-size: 0.85rem !important;
399
+ font-weight: 500 !important;
400
+ text-transform: none !important;
401
+ letter-spacing: 0 !important;
402
+ padding: 8px 14px !important;
403
  }
404
 
405
+ .examples-row button:hover {
406
+ background: var(--accent-soft) !important;
407
+ color: var(--accent) !important;
408
+ border-color: var(--accent) !important;
 
 
 
409
  }
410
 
411
+ /* --- Plotly charts --- */
412
+ .js-plotly-plot {
413
+ border-radius: var(--radius) !important;
414
+ overflow: hidden !important;
 
 
 
415
  }
416
 
417
+ /* --- Number / score displays --- */
418
+ [data-testid="number-input"] input,
419
+ .gradio-container [type="number"] {
420
+ font-family: 'JetBrains Mono', 'SF Mono', 'Menlo', monospace !important;
421
+ font-size: 1.5rem !important;
422
+ font-weight: 700 !important;
423
+ color: var(--ink) !important;
424
  }
425
 
426
+ /* --- Markdown response (analyze result) --- */
427
+ .gradio-container .prose,
428
+ .gradio-container .markdown,
429
+ .gradio-container .gr-markdown {
430
+ color: var(--ink) !important;
 
 
431
  }
432
 
433
+ /* --- Gradio default footer styling cleanup --- */
434
+ header, header *,
435
+ footer, footer * {
436
  background: transparent !important;
 
437
  box-shadow: none !important;
438
+ color: var(--ink-mute) !important;
439
  }
440
 
441
+ footer a:hover {
442
+ color: var(--accent) !important;
 
 
 
 
 
 
443
  }
444
 
445
+ /* --- Force readable text everywhere (dark-mode override safety net) --- */
446
+ .gradio-container,
447
+ .gradio-container * {
448
+ color-scheme: light !important;
 
 
 
 
449
  }
450
 
 
451
  .gradio-container input,
452
  .gradio-container textarea,
453
  .gradio-container select,
 
454
  .gradio-container [data-testid="textbox"] textarea {
455
+ color: var(--ink) !important;
456
+ background: var(--surface) !important;
457
+ caret-color: var(--ink) !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  }