grasepard2 commited on
Commit
400cb90
·
verified ·
1 Parent(s): 330cd4e

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +375 -226
style.css CHANGED
@@ -1,253 +1,301 @@
1
  /* =========================================================
2
- MINIMAL PROCS1 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
 
@@ -256,203 +304,304 @@ button[role="tab"].selected,
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
  }
 
1
  /* =========================================================
2
+ CS1 GROUP 14 JOB RISK ANALYZER
3
+ Dark AI-product aesthetic Vercel × OpenAI Platform
4
  ========================================================= */
5
 
6
+ @import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500;600&display=swap');
7
+
8
  /* --- Color tokens --- */
9
  :root {
10
+ --bg: #0a0a0a;
11
+ --bg-1: #111111;
12
+ --bg-2: #161616;
13
+ --bg-3: #1c1c1c;
14
+ --surface: #131313;
15
+ --surface-elev: #181818;
16
+ --border: #262626;
17
+ --border-soft: #1f1f1f;
18
+ --border-hi: #333333;
19
+
20
+ --ink: #ededed;
21
+ --ink-soft: #a1a1a1;
22
+ --ink-mute: #666666;
23
+ --ink-faint: #444444;
24
+
25
+ --accent: #34d399;
26
+ --accent-glow: rgba(52, 211, 153, 0.15);
27
+ --accent-line: rgba(52, 211, 153, 0.4);
28
+ --accent-soft: rgba(52, 211, 153, 0.08);
29
+
30
+ --warn: #f59e0b;
31
+ --warn-glow: rgba(245, 158, 11, 0.12);
32
+ --danger: #ef4444;
33
+ --danger-glow: rgba(239, 68, 68, 0.15);
34
+ --info: #60a5fa;
35
+
36
+ --radius: 8px;
37
+ --radius-lg: 12px;
38
+
39
+ --font-display: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
40
+ --font-mono: 'Geist Mono', 'SF Mono', 'JetBrains Mono', Menlo, monospace;
41
+ }
42
+
43
+ /* =========================================================
44
+ GLOBAL RESET — kill the ESCP branding entirely
45
+ ========================================================= */
46
+
47
  gradio-app,
48
  .gradio-app,
49
  .main,
50
  #app,
51
  [data-testid="app"] {
52
+ background: var(--bg) !important;
53
  background-image:
54
+ radial-gradient(ellipse 80% 50% at 50% -10%, rgba(52, 211, 153, 0.06), transparent 60%),
55
+ radial-gradient(ellipse 60% 40% at 50% 100%, rgba(96, 165, 250, 0.04), transparent 60%) !important;
56
+ background-attachment: fixed !important;
57
+ background-repeat: no-repeat !important;
58
+ background-size: 100% 100%, 100% 100% !important;
59
+ background-position: center top, center bottom !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  min-height: 100vh !important;
61
  }
62
 
63
  html, body {
64
+ background: var(--bg) !important;
65
+ color: var(--ink) !important;
66
  margin: 0 !important;
67
  padding: 0 !important;
68
+ font-family: var(--font-display) !important;
69
+ font-feature-settings: 'cv11', 'ss01', 'ss03' !important;
70
+ -webkit-font-smoothing: antialiased !important;
71
+ -moz-osx-font-smoothing: grayscale !important;
72
+ letter-spacing: -0.011em !important;
73
  min-height: 100vh !important;
74
+ }
75
+
76
+ /* Subtle grid texture overlay */
77
+ body::before {
78
+ content: '';
79
+ position: fixed;
80
+ inset: 0;
81
+ background-image:
82
+ linear-gradient(to right, rgba(255,255,255,0.015) 1px, transparent 1px),
83
+ linear-gradient(to bottom, rgba(255,255,255,0.015) 1px, transparent 1px);
84
+ background-size: 64px 64px;
85
+ pointer-events: none;
86
+ z-index: 0;
87
  }
88
 
89
  /* --- Main container --- */
90
  .gradio-container {
91
+ max-width: 1200px !important;
92
  width: 92vw !important;
93
  margin: 0 auto !important;
94
+ padding-top: 56px !important;
95
+ padding-bottom: 96px !important;
96
  background: transparent !important;
97
+ position: relative !important;
98
+ z-index: 1 !important;
99
  }
100
 
101
+ /* =========================================================
102
+ HEADER
103
+ ========================================================= */
104
+
105
  #escp_title {
106
+ text-align: left !important;
107
+ margin-bottom: 56px !important;
108
+ padding-bottom: 32px !important;
109
+ border-bottom: 1px solid var(--border-soft) !important;
110
+ position: relative !important;
111
+ }
112
+
113
+ #escp_title::before {
114
+ content: 'CS1.GROUP_14 / v1.2.0' !important;
115
+ display: block !important;
116
+ font-family: var(--font-mono) !important;
117
+ font-size: 11px !important;
118
+ color: var(--ink-mute) !important;
119
+ letter-spacing: 0.05em !important;
120
+ margin-bottom: 16px !important;
121
+ text-transform: uppercase !important;
122
  }
123
 
124
  #escp_title h1 {
125
  color: var(--ink) !important;
126
+ font-family: var(--font-display) !important;
127
+ font-size: 2.5rem !important;
128
+ font-weight: 600 !important;
129
+ letter-spacing: -0.035em !important;
130
+ text-align: left !important;
131
  margin: 0 0 12px 0 !important;
132
+ background: none !important;
133
+ -webkit-text-fill-color: var(--ink) !important;
134
+ line-height: 1.1 !important;
 
135
  }
136
 
137
  #escp_title p, #escp_title em {
138
  color: var(--ink-soft) !important;
139
+ text-align: left !important;
140
  font-style: normal !important;
141
+ font-size: 0.95rem !important;
142
+ font-weight: 400 !important;
143
+ margin: 0 !important;
144
+ letter-spacing: -0.005em !important;
145
  }
146
 
147
+ /* Status indicator dot in header */
148
+ #escp_title::after {
149
+ content: '' !important;
150
+ position: absolute !important;
151
+ top: 22px !important;
152
+ right: 0 !important;
153
+ width: 8px !important;
154
+ height: 8px !important;
155
+ border-radius: 50% !important;
156
+ background: var(--accent) !important;
157
+ box-shadow: 0 0 0 4px var(--accent-glow), 0 0 12px var(--accent) !important;
158
+ animation: pulse-dot 2s ease-in-out infinite !important;
159
  }
160
 
161
+ @keyframes pulse-dot {
162
+ 0%, 100% { opacity: 1; }
163
+ 50% { opacity: 0.5; }
164
  }
165
 
166
+ /* =========================================================
167
+ TABS — segmented control
168
+ ========================================================= */
169
+
170
  .tabs > .tab-nav,
171
  .tab-nav,
172
  div[role="tablist"],
173
  .svelte-tabs > .tab-nav {
174
+ background: var(--bg-1) !important;
175
+ border: 1px solid var(--border) !important;
176
+ border-radius: 10px !important;
177
+ padding: 4px !important;
178
+ margin-bottom: 32px !important;
179
+ display: inline-flex !important;
180
+ gap: 2px !important;
181
+ width: auto !important;
182
+ max-width: fit-content !important;
183
  }
184
 
 
185
  .tabs > .tab-nav button,
186
  .tab-nav button,
187
  div[role="tablist"] button,
188
  button[role="tab"],
189
  .svelte-tabs button {
190
  color: var(--ink-soft) !important;
191
+ font-family: var(--font-display) !important;
192
  font-weight: 500 !important;
193
+ font-size: 0.875rem !important;
194
  border: none !important;
195
  background: transparent !important;
196
+ padding: 8px 16px !important;
197
+ border-radius: 6px !important;
198
+ border-bottom: none !important;
199
+ transition: color 0.15s, background 0.15s !important;
200
  opacity: 1 !important;
201
+ letter-spacing: -0.005em !important;
202
  }
203
 
204
  .tabs > .tab-nav button:hover,
205
  .tab-nav button:hover,
206
  button[role="tab"]:hover {
207
  color: var(--ink) !important;
208
+ background: var(--bg-2) !important;
209
  }
210
 
 
211
  .tabs > .tab-nav button.selected,
212
  .tab-nav button.selected,
213
  button[role="tab"][aria-selected="true"],
214
  button[role="tab"].selected,
215
  .svelte-tabs button.selected {
216
+ color: var(--ink) !important;
217
+ background: var(--surface-elev) !important;
218
+ box-shadow: 0 0 0 1px var(--border-hi), 0 1px 2px rgba(0,0,0,0.4) !important;
219
+ font-weight: 500 !important;
220
+ border-bottom: none !important;
221
  }
222
 
223
+ /* =========================================================
224
+ TAB CONTENT — the canvas
225
+ ========================================================= */
226
+
227
  .tabitem {
228
+ background: transparent !important;
229
+ border-radius: 0 !important;
230
+ padding: 0 !important;
231
+ box-shadow: none !important;
232
+ border: none !important;
233
  position: relative !important;
 
 
 
 
 
234
  }
235
 
236
  .tabitem::before {
237
+ display: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  }
239
 
240
+ /* =========================================================
241
+ BLOCKS / CARDS
242
+ ========================================================= */
243
+
244
  .gradio-container .gr-block,
245
  .gradio-container .gr-box,
246
  .gradio-container .gr-panel,
247
  .gradio-container .gr-group {
248
  background: var(--surface) !important;
249
  border: 1px solid var(--border) !important;
250
+ border-radius: var(--radius-lg) !important;
251
+ box-shadow: 0 1px 0 rgba(255,255,255,0.02) inset, 0 0 0 1px rgba(0,0,0,0.4) !important;
252
  }
253
 
254
+ /* =========================================================
255
+ FORM LABELS
256
+ ========================================================= */
257
+
258
  .gradio-container label,
259
  .gradio-container .gr-label,
260
  .gradio-container span[data-testid="block-info"] {
261
+ color: var(--ink-soft) !important;
262
+ font-family: var(--font-mono) !important;
263
+ font-weight: 500 !important;
264
+ font-size: 0.7rem !important;
265
  text-transform: uppercase !important;
266
+ letter-spacing: 0.08em !important;
267
  }
268
 
269
+ /* =========================================================
270
+ INPUTS
271
+ ========================================================= */
272
+
273
  .gradio-container input,
274
  .gradio-container textarea,
275
  .gradio-container select {
276
+ background: var(--bg-1) !important;
277
  border: 1px solid var(--border) !important;
278
+ border-radius: var(--radius) !important;
279
  color: var(--ink) !important;
280
+ font-family: var(--font-display) !important;
281
+ font-size: 0.9rem !important;
282
+ padding: 10px 14px !important;
283
+ transition: border-color 0.15s, box-shadow 0.15s, background 0.15s !important;
284
+ letter-spacing: -0.005em !important;
285
+ }
286
+
287
+ .gradio-container input:hover,
288
+ .gradio-container textarea:hover {
289
+ background: var(--bg-2) !important;
290
+ border-color: var(--border-hi) !important;
291
  }
292
 
293
  .gradio-container input:focus,
294
  .gradio-container textarea:focus,
295
  .gradio-container select:focus {
296
  border-color: var(--accent) !important;
297
+ background: var(--bg-1) !important;
298
+ box-shadow: 0 0 0 3px var(--accent-glow) !important;
299
  outline: none !important;
300
  }
301
 
 
304
  color: var(--ink-mute) !important;
305
  }
306
 
307
+ textarea {
308
+ font-family: var(--font-display) !important;
309
+ font-size: 0.85rem !important;
310
+ line-height: 1.6 !important;
311
+ }
312
+
313
+ /* =========================================================
314
+ BUTTONS
315
+ ========================================================= */
316
+
317
  .gradio-container button:not([role="tab"]) {
318
+ font-family: var(--font-display) !important;
319
+ font-weight: 500 !important;
320
+ padding: 10px 16px !important;
321
+ border-radius: var(--radius) !important;
322
+ font-size: 0.875rem !important;
323
+ letter-spacing: -0.005em !important;
324
+ transition: all 0.15s ease !important;
325
  }
326
 
327
  button.primary {
328
  background: var(--ink) !important;
329
+ color: var(--bg) !important;
330
  border: 1px solid var(--ink) !important;
331
+ box-shadow: 0 1px 2px rgba(0,0,0,0.5) !important;
332
  }
333
 
334
  button.primary:hover {
335
+ background: #ffffff !important;
336
+ border-color: #ffffff !important;
337
  transform: translateY(-1px) !important;
338
+ box-shadow: 0 4px 8px rgba(0,0,0,0.5) !important;
339
  }
340
 
341
  button.secondary {
342
+ background: var(--surface-elev) !important;
343
  color: var(--ink) !important;
344
  border: 1px solid var(--border) !important;
345
  }
346
 
347
  button.secondary:hover {
348
+ background: var(--bg-3) !important;
349
+ border-color: var(--border-hi) !important;
 
350
  }
351
 
352
+ /* =========================================================
353
+ MARKDOWN TYPOGRAPHY
354
+ ========================================================= */
355
+
356
  .tabitem h1, .tabitem h2 {
357
  color: var(--ink) !important;
358
+ font-weight: 600 !important;
359
+ letter-spacing: -0.025em !important;
360
+ }
361
+
362
+ .tabitem h2 {
363
+ font-size: 1.5rem !important;
364
+ margin-top: 0 !important;
365
  }
366
 
367
  .tabitem h3 {
368
  color: var(--ink) !important;
369
+ font-weight: 500 !important;
370
+ font-size: 0.95rem !important;
371
+ letter-spacing: -0.005em !important;
372
+ margin-top: 28px !important;
373
+ margin-bottom: 12px !important;
374
+ padding-bottom: 8px !important;
375
+ border-bottom: 1px solid var(--border-soft) !important;
376
  }
377
 
378
  .tabitem h4 {
379
  color: var(--ink-soft) !important;
380
+ font-family: var(--font-mono) !important;
381
+ font-weight: 500 !important;
382
+ font-size: 0.7rem !important;
383
  text-transform: uppercase !important;
384
+ letter-spacing: 0.08em !important;
385
+ margin-top: 24px !important;
386
+ margin-bottom: 14px !important;
387
  }
388
 
389
  .tabitem p, .tabitem li {
390
  color: var(--ink-soft) !important;
391
+ line-height: 1.65 !important;
392
+ font-size: 0.92rem !important;
393
  }
394
 
395
  .tabitem strong {
396
  color: var(--ink) !important;
397
+ font-weight: 600 !important;
398
  }
399
 
400
  .tabitem code {
401
+ background: var(--bg-2) !important;
402
  color: var(--accent) !important;
403
  padding: 2px 6px !important;
404
  border-radius: 4px !important;
405
+ font-size: 0.85em !important;
406
+ font-family: var(--font-mono) !important;
407
+ border: 1px solid var(--border-soft) !important;
408
  }
409
 
410
+ /* =========================================================
411
+ DATAFRAMES
412
+ ========================================================= */
413
+
414
  [data-testid="dataframe"] {
415
  background: var(--surface) !important;
416
  border: 1px solid var(--border) !important;
417
+ border-radius: var(--radius-lg) !important;
418
  overflow: hidden !important;
419
  }
420
 
421
  table {
422
+ font-size: 0.825rem !important;
423
  color: var(--ink) !important;
424
+ font-family: var(--font-display) !important;
425
  }
426
 
427
  table thead th {
428
+ background: var(--bg-1) !important;
429
+ color: var(--ink-soft) !important;
430
+ font-family: var(--font-mono) !important;
431
+ font-weight: 500 !important;
432
  text-transform: uppercase !important;
433
+ font-size: 0.7rem !important;
434
+ letter-spacing: 0.08em !important;
435
  border-bottom: 1px solid var(--border) !important;
436
+ padding: 12px 14px !important;
437
  }
438
 
439
  table tbody td {
440
+ border-bottom: 1px solid var(--border-soft) !important;
441
  color: var(--ink-soft) !important;
442
+ padding: 11px 14px !important;
443
  }
444
 
445
  table tbody tr:hover td {
446
+ background: var(--bg-1) !important;
447
  color: var(--ink) !important;
448
  }
449
 
450
+ /* =========================================================
451
+ CHATBOT
452
+ ========================================================= */
453
+
454
  .gr-chatbot {
455
  min-height: 380px !important;
456
+ background: var(--bg-1) !important;
457
  border: 1px solid var(--border) !important;
458
+ border-radius: var(--radius-lg) !important;
459
+ padding: 8px !important;
460
+ }
461
+
462
+ .gr-chatbot .message {
463
+ border: 1px solid var(--border-soft) !important;
464
+ font-size: 0.9rem !important;
465
+ line-height: 1.6 !important;
466
  }
467
 
468
  .gr-chatbot .message.user {
469
+ background: var(--bg-2) !important;
470
+ color: var(--ink) !important;
471
+ border-radius: 12px 12px 4px 12px !important;
472
+ border-color: var(--border) !important;
473
  }
474
 
475
  .gr-chatbot .message.bot {
476
+ background: var(--surface-elev) !important;
477
  color: var(--ink) !important;
478
+ border-radius: 12px 12px 12px 4px !important;
479
+ border-left: 2px solid var(--accent) !important;
480
  }
481
 
482
+ /* =========================================================
483
+ EXAMPLES (chatbot pills)
484
+ ========================================================= */
485
+
486
  .examples-row button {
487
+ background: var(--bg-1) !important;
488
  color: var(--ink-soft) !important;
489
  border: 1px solid var(--border) !important;
490
  border-radius: 999px !important;
491
+ font-family: var(--font-display) !important;
492
+ font-size: 0.8rem !important;
493
+ font-weight: 400 !important;
494
  text-transform: none !important;
495
+ letter-spacing: -0.005em !important;
496
+ padding: 6px 12px !important;
497
+ transition: all 0.15s !important;
498
  }
499
 
500
  .examples-row button:hover {
501
+ background: var(--bg-2) !important;
502
+ color: var(--ink) !important;
503
+ border-color: var(--border-hi) !important;
504
  }
505
 
506
+ /* =========================================================
507
+ PLOTLY
508
+ ========================================================= */
509
+
510
  .js-plotly-plot {
511
+ border-radius: var(--radius-lg) !important;
512
  overflow: hidden !important;
513
+ background: var(--surface) !important;
514
+ border: 1px solid var(--border) !important;
515
+ }
516
+
517
+ .gradio-container .gr-plot {
518
+ background: transparent !important;
519
+ border: none !important;
520
+ padding: 0 !important;
521
  }
522
 
523
+ /* =========================================================
524
+ NUMBER INPUT (Score display)
525
+ ========================================================= */
526
+
527
  [data-testid="number-input"] input,
528
  .gradio-container [type="number"] {
529
+ font-family: var(--font-mono) !important;
530
+ font-size: 1.75rem !important;
531
+ font-weight: 600 !important;
532
  color: var(--ink) !important;
533
+ background: var(--bg-1) !important;
534
+ letter-spacing: -0.02em !important;
535
  }
536
 
537
+ /* =========================================================
538
+ FOOTER / GRADIO CHROME
539
+ ========================================================= */
 
 
 
540
 
541
+ footer, footer *,
542
+ header, header * {
 
543
  background: transparent !important;
544
  box-shadow: none !important;
545
  color: var(--ink-mute) !important;
546
+ font-family: var(--font-mono) !important;
547
+ font-size: 0.75rem !important;
548
  }
549
 
550
  footer a:hover {
551
  color: var(--accent) !important;
552
  }
553
 
554
+ /* =========================================================
555
+ FORCE LIGHT TEXT EVERYWHERE
556
+ ========================================================= */
557
+
558
  .gradio-container,
559
  .gradio-container * {
560
+ color-scheme: dark !important;
561
  }
562
 
563
+ .gradio-container .prose,
564
+ .gradio-container .markdown,
565
+ .gradio-container .gr-markdown {
 
566
  color: var(--ink) !important;
567
+ }
568
+
569
+ .gradio-container .prose * {
570
+ color: inherit !important;
571
+ }
572
+
573
+ /* =========================================================
574
+ SCROLLBARS
575
+ ========================================================= */
576
+
577
+ * {
578
+ scrollbar-width: thin;
579
+ scrollbar-color: var(--border-hi) transparent;
580
+ }
581
+
582
+ *::-webkit-scrollbar {
583
+ width: 8px;
584
+ height: 8px;
585
+ }
586
+
587
+ *::-webkit-scrollbar-track {
588
+ background: transparent;
589
+ }
590
+
591
+ *::-webkit-scrollbar-thumb {
592
+ background: var(--border);
593
+ border-radius: 4px;
594
+ }
595
+
596
+ *::-webkit-scrollbar-thumb:hover {
597
+ background: var(--border-hi);
598
+ }
599
+
600
+ /* =========================================================
601
+ SELECTION
602
+ ========================================================= */
603
+
604
+ ::selection {
605
+ background: var(--accent-glow);
606
+ color: var(--ink);
607
  }