Asmitha-28 commited on
Commit
cc657e4
·
verified ·
1 Parent(s): 1d63d0f

Upload dashboard/web/style.css with huggingface_hub

Browse files
Files changed (1) hide show
  1. dashboard/web/style.css +676 -676
dashboard/web/style.css CHANGED
@@ -1,676 +1,676 @@
1
- /* SupportMind Dashboard style.css */
2
- :root {
3
- /* AetherFlow Design Tokens */
4
- --bg: #0d0d15;
5
- --surface: #13131b;
6
- --surface-container: #1f1f27;
7
- --surface-bright: #393841;
8
- --surface2: var(--surface-container);
9
- --primary: #c0c1ff;
10
- --primary-container: #8083ff;
11
- --on-primary: #1000a9;
12
- --secondary: #89ceff;
13
- --accent: #8b5cf6;
14
- --text: #e4e1ed;
15
- --text-dim: #c7c4d7;
16
- --text2: var(--text-dim);
17
- --on-surface-variant: var(--text-dim);
18
- --border: rgba(255, 255, 255, 0.08);
19
- --glass: rgba(255, 255, 255, 0.05);
20
- --glass-border: rgba(255, 255, 255, 0.1);
21
-
22
- --green: #4ade80;
23
- --yellow: #facc15;
24
- --red: #f87171;
25
- --orange: #fb923c;
26
-
27
- --font: 'Inter', system-ui, -apple-system, sans-serif;
28
- --mono: 'JetBrains Mono', monospace;
29
- --radius: 12px;
30
- --radius-lg: 24px;
31
- --radius-xl: 32px;
32
- }
33
-
34
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
35
-
36
- html { scroll-behavior: smooth; }
37
-
38
- body {
39
- font-family: var(--font);
40
- background: var(--bg);
41
- color: var(--text);
42
- line-height: 1.6;
43
- overflow-x: hidden;
44
- }
45
-
46
- /* Glassmorphism */
47
- .glass-panel {
48
- background: var(--glass);
49
- backdrop-filter: blur(12px);
50
- -webkit-backdrop-filter: blur(12px);
51
- border: 1px solid var(--glass-border);
52
- }
53
-
54
- .shimmer-border {
55
- position: relative;
56
- overflow: hidden;
57
- }
58
-
59
- .shimmer-border::after {
60
- content: "";
61
- position: absolute;
62
- top: 0; left: 0; right: 0;
63
- height: 1px;
64
- background: linear-gradient(90deg, transparent, var(--primary), transparent);
65
- opacity: 0.3;
66
- animation: shimmer 3s infinite linear;
67
- }
68
-
69
- @keyframes shimmer {
70
- 0% { transform: translateX(-100%); }
71
- 100% { transform: translateX(100%); }
72
- }
73
-
74
- /* Nav */
75
- .navbar {
76
- position: fixed; top: 0; left: 0; right: 0; z-index: 100;
77
- display: flex; align-items: center; justify-content: space-between;
78
- padding: 16px 40px;
79
- background: rgba(13, 13, 21, 0.8);
80
- backdrop-filter: blur(20px);
81
- border-bottom: 1px solid var(--border);
82
- height: 64px;
83
- }
84
- .nav-brand { display: flex; align-items: center; gap: 10px; }
85
- .brand-icon { display: flex; }
86
- .brand-text { font-weight: 700; font-size: 18px; }
87
- .brand-badge {
88
- font-size: 10px; padding: 2px 8px; border-radius: 20px;
89
- background: var(--surface2); color: var(--text2); font-weight: 600;
90
- }
91
- .nav-links { display: flex; gap: 8px; }
92
- .nav-link {
93
- color: var(--text2); text-decoration: none; font-size: 14px; font-weight: 500;
94
- padding: 6px 14px; border-radius: 8px; transition: all 0.2s;
95
- }
96
- .nav-link:hover { color: var(--text); background: var(--surface2); }
97
- .nav-status { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--green); }
98
- .status-dot {
99
- width: 8px; height: 8px; border-radius: 50%; background: var(--green);
100
- animation: pulse 2s ease-in-out infinite;
101
- }
102
- @keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
103
-
104
- /* Hero */
105
- .hero {
106
- position: relative; z-index: 1;
107
- padding: 120px 40px 80px;
108
- max-width: 1400px; margin: 0 auto;
109
- }
110
-
111
- .hero-container {
112
- display: grid;
113
- grid-template-columns: 1.2fr 1fr;
114
- gap: 80px;
115
- align-items: center;
116
- }
117
-
118
- .hero-content { text-align: left; }
119
-
120
- .hero-eyebrow {
121
- display: inline-flex; align-items: center; gap: 8px;
122
- padding: 6px 16px; border-radius: 100px;
123
- background: rgba(192, 193, 255, 0.1);
124
- color: var(--primary);
125
- font-size: 12px; font-weight: 700;
126
- text-transform: uppercase; letter-spacing: 1px;
127
- margin-bottom: 32px;
128
- }
129
-
130
- .hero-title {
131
- font-size: clamp(48px, 5vw, 72px); font-weight: 800;
132
- line-height: 1.05; margin-bottom: 24px;
133
- color: #fff;
134
- letter-spacing: -0.04em;
135
- }
136
-
137
- .gradient-text {
138
- background: linear-gradient(135deg, var(--primary), var(--secondary), var(--accent));
139
- -webkit-background-clip: text; -webkit-text-fill-color: transparent;
140
- background-clip: text;
141
- }
142
-
143
- .hero-subtitle {
144
- font-size: 18px; color: var(--text-dim); max-width: 600px; margin: 0 0 48px;
145
- line-height: 1.6;
146
- }
147
-
148
- .hero-actions { display: flex; gap: 16px; justify-content: flex-start; margin-bottom: 0; }
149
-
150
- /* Hero Visual (Bento Preview) */
151
- .hero-visual {
152
- position: relative;
153
- }
154
-
155
- .pipeline-card {
156
- border-radius: 24px;
157
- padding: 24px;
158
- position: relative;
159
- z-index: 10;
160
- box-shadow: 0 40px 80px rgba(0, 0, 0, 0.5);
161
- }
162
-
163
- .pipeline-header {
164
- display: flex; justify-content: space-between; align-items: center;
165
- margin-bottom: 24px; padding-bottom: 16px;
166
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
167
- }
168
-
169
- .window-controls { display: flex; gap: 6px; }
170
- .dot { width: 10px; height: 10px; border-radius: 50%; opacity: 0.5; }
171
- .dot-red { background: var(--red); }
172
- .dot-amber { background: var(--yellow); }
173
- .dot-green { background: var(--green); }
174
-
175
- .pipeline-status { font-family: var(--mono); font-size: 12px; color: #666; }
176
-
177
- .pipeline-tiers { display: flex; flex-direction: column; gap: 16px; }
178
-
179
- .tier-card {
180
- padding: 16px; border-radius: 16px;
181
- background: rgba(255, 255, 255, 0.03);
182
- border: 1px solid rgba(255, 255, 255, 0.05);
183
- display: flex; justify-content: space-between; align-items: center;
184
- transition: all 0.3s;
185
- }
186
-
187
- .tier-card.active {
188
- background: rgba(192, 193, 255, 0.08);
189
- border-color: rgba(192, 193, 255, 0.2);
190
- }
191
-
192
- .tier-info { display: flex; align-items: center; gap: 16px; }
193
- .tier-icon {
194
- width: 40px; height: 40px; border-radius: 10px;
195
- background: rgba(192, 193, 255, 0.15);
196
- display: flex; align-items: center; justify-content: center;
197
- color: var(--primary);
198
- }
199
-
200
- .tier-name { font-size: 14px; font-weight: 600; color: #fff; }
201
- .tier-meta { font-size: 12px; color: #666; }
202
- .tier-indicator { font-size: 20px; }
203
-
204
- .explain-source {
205
- display: inline-flex;
206
- align-items: center;
207
- margin: 0 0 10px;
208
- padding: 4px 8px;
209
- border-radius: 6px;
210
- background: rgba(192, 193, 255, 0.08);
211
- color: var(--primary);
212
- font-size: 11px;
213
- font-weight: 700;
214
- text-transform: uppercase;
215
- }
216
-
217
-
218
- /* Buttons */
219
- .btn {
220
- display: inline-flex; align-items: center; gap: 10px;
221
- padding: 14px 32px; border-radius: 12px; font-size: 15px; font-weight: 700;
222
- text-decoration: none; cursor: pointer; border: none;
223
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
224
- font-family: var(--font);
225
- }
226
-
227
- .btn-primary {
228
- background: var(--primary);
229
- color: var(--on-primary);
230
- box-shadow: 0 8px 24px rgba(192, 193, 255, 0.2);
231
- }
232
-
233
- .btn-primary:hover {
234
- transform: translateY(-2px);
235
- box-shadow: 0 12px 32px rgba(192, 193, 255, 0.3);
236
- filter: brightness(1.1);
237
- }
238
-
239
- .btn-ghost {
240
- background: rgba(255, 255, 255, 0.03);
241
- color: #fff;
242
- border: 1px solid rgba(255, 255, 255, 0.1);
243
- }
244
-
245
- .btn-ghost:hover {
246
- background: rgba(255, 255, 255, 0.08);
247
- border-color: var(--primary);
248
- }
249
-
250
- /* Stats Section */
251
- .hero-stats {
252
- display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px;
253
- max-width: 1400px; margin: 0 auto;
254
- padding: 0 40px 80px;
255
- }
256
-
257
- .stat-card {
258
- padding: 32px;
259
- border-radius: 20px;
260
- transition: all 0.3s;
261
- }
262
-
263
- .stat-card:hover {
264
- border-color: rgba(192, 193, 255, 0.2);
265
- transform: translateY(-4px);
266
- background: rgba(192, 193, 255, 0.03);
267
- }
268
-
269
- .stat-label {
270
- font-size: 12px; font-weight: 600; color: #666;
271
- text-transform: uppercase; letter-spacing: 1px;
272
- margin-bottom: 8px;
273
- }
274
-
275
- .stat-value {
276
- font-size: 40px; font-weight: 800; color: #fff;
277
- line-height: 1; margin-bottom: 12px;
278
- }
279
-
280
- .stat-delta {
281
- font-size: 13px; font-weight: 600;
282
- display: flex; align-items: center; gap: 4px;
283
- }
284
-
285
- .btn-full { width: 100%; justify-content: center; padding: 14px; font-size: 16px; margin-top: 16px; }
286
- .btn-icon { font-size: 20px; }
287
-
288
-
289
- /* Sections */
290
- .section {
291
- position: relative; z-index: 1;
292
- padding: 100px 40px;
293
- max-width: 1400px; margin: 0 auto;
294
- }
295
- .section-dark { max-width: none; background: #0a0a0f; }
296
- .section-dark > * { max-width: 1400px; margin-left: auto; margin-right: auto; }
297
- .section-header { text-align: center; margin-bottom: 60px; }
298
- .section-badge {
299
- display: inline-block; font-size: 12px; font-weight: 700; text-transform: uppercase;
300
- letter-spacing: 2px; color: var(--primary); background: rgba(192, 193, 255, 0.1);
301
- padding: 6px 18px; border-radius: 20px; margin-bottom: 16px;
302
- }
303
- .section-title { font-size: 40px; font-weight: 800; margin-bottom: 16px; color: #fff; }
304
- .section-desc { font-size: 17px; color: var(--text-dim); max-width: 700px; margin: 0 auto; }
305
-
306
- /* Demo */
307
- .demo-container {
308
- display: grid; grid-template-columns: 1fr 1fr; gap: 24px;
309
- }
310
- .demo-input-panel, .demo-results-panel {
311
- background: var(--surface); border: 1px solid var(--border);
312
- border-radius: var(--radius2); padding: 28px;
313
- }
314
- .input-label { font-size: 14px; font-weight: 600; color: var(--text2); margin-bottom: 10px; display: block; }
315
- .ticket-textarea {
316
- width: 100%; background: var(--bg); border: 1px solid var(--border);
317
- border-radius: var(--radius); padding: 14px; color: var(--text);
318
- font-family: var(--font); font-size: 14px; resize: vertical;
319
- transition: border-color 0.2s; line-height: 1.6;
320
- }
321
- .ticket-textarea:focus { outline: none; border-color: var(--primary); }
322
- .demo-presets { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; align-items: center; }
323
- .preset-label { font-size: 13px; color: var(--text3); font-weight: 500; }
324
- .preset-btn {
325
- font-size: 12px; padding: 4px 12px; border-radius: 6px;
326
- background: var(--surface2); border: 1px solid var(--border);
327
- color: var(--text2); cursor: pointer; font-family: var(--font);
328
- transition: all 0.2s;
329
- }
330
- .preset-btn:hover { border-color: var(--primary); color: var(--primary2); }
331
-
332
- /* Result placeholder */
333
- .result-placeholder {
334
- display: flex; flex-direction: column; align-items: center; justify-content: center;
335
- height: 100%; min-height: 300px; color: var(--text3); text-align: center;
336
- }
337
- .placeholder-icon { font-size: 48px; margin-bottom: 16px; opacity: 0.5; }
338
-
339
- /* Action badge */
340
- .action-badge-container { text-align: center; margin-bottom: 20px; }
341
- .action-badge {
342
- display: inline-block; padding: 8px 24px; border-radius: 8px;
343
- font-size: 18px; font-weight: 800; font-family: var(--mono);
344
- letter-spacing: 2px;
345
- animation: badgePop 0.4s ease;
346
- }
347
- @keyframes badgePop { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
348
- .action-badge.route { background: rgba(74, 222, 128, 0.1); color: var(--green); border: 1px solid rgba(74, 222, 128, 0.2); }
349
- .action-badge.clarify { background: rgba(250, 204, 21, 0.1); color: var(--yellow); border: 1px solid rgba(250, 204, 21, 0.2); }
350
- .action-badge.escalate { background: rgba(248, 113, 113, 0.1); color: var(--red); border: 1px solid rgba(248, 113, 113, 0.2); }
351
- .action-queue { font-size: 13px; color: var(--text2); margin-top: 8px; }
352
-
353
- /* Gauges */
354
- .gauge-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-bottom: 20px; }
355
- .gauge-container { position: relative; }
356
- .gauge-label { font-size: 12px; font-weight: 600; color: var(--text2); margin-bottom: 6px; display: block; }
357
- .gauge-track {
358
- height: 10px; background: var(--bg); border-radius: 5px;
359
- overflow: hidden; position: relative;
360
- }
361
- .gauge-fill {
362
- height: 100%; border-radius: 5px; transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
363
- background: linear-gradient(90deg, var(--green), var(--primary));
364
- position: relative; z-index: 2;
365
- }
366
- .entropy-fill { background: linear-gradient(90deg, var(--cyan), var(--yellow), var(--red)); }
367
- .gauge-zones { position: absolute; inset: 0; display: flex; opacity: 0.15; }
368
- .zone { height: 100%; }
369
- .zone-red { background: var(--red); }
370
- .zone-yellow { background: var(--yellow); }
371
- .zone-green { background: var(--green); }
372
- .gauge-value { font-size: 20px; font-weight: 700; font-family: var(--mono); margin-top: 6px; }
373
-
374
- /* Probability chart */
375
- .prob-chart { margin-bottom: 20px; }
376
- .prob-row {
377
- display: flex; align-items: center; gap: 10px; margin-bottom: 6px;
378
- font-size: 12px;
379
- }
380
- .prob-label { width: 130px; color: var(--text2); text-align: right; font-family: var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
381
- .prob-bar-track { flex: 1; height: 6px; background: var(--bg); border-radius: 3px; overflow: hidden; }
382
- .prob-bar-fill { height: 100%; border-radius: 3px; transition: width 0.6s ease; background: var(--primary); }
383
- .prob-val { width: 50px; font-family: var(--mono); color: var(--text3); font-size: 11px; }
384
-
385
- /* Clarification */
386
- .clarification-box {
387
- background: rgba(234,179,8,0.06); border: 1px solid rgba(234,179,8,0.2);
388
- border-radius: var(--radius); padding: 20px; margin-bottom: 20px;
389
- }
390
- .clarify-header { font-weight: 700; font-size: 14px; margin-bottom: 10px; color: var(--yellow); }
391
- .clarify-question { font-size: 15px; line-height: 1.6; margin-bottom: 12px; }
392
- .clarify-options { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
393
- .clarify-options .option-btn {
394
- padding: 6px 16px; border-radius: 6px; font-size: 13px;
395
- background: var(--surface2); border: 1px solid var(--border);
396
- color: var(--text); cursor: pointer; font-family: var(--font);
397
- }
398
- .clarify-gain { font-size: 12px; color: var(--text3); }
399
-
400
- /* Signals */
401
- .signals-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
402
- .signal-card {
403
- background: var(--bg); border-radius: 8px; padding: 14px; text-align: center;
404
- }
405
- .signal-label { font-size: 11px; color: var(--text3); font-weight: 600; text-transform: uppercase; letter-spacing: 1px; }
406
- .signal-value { font-size: 18px; font-weight: 700; font-family: var(--mono); margin-top: 4px; }
407
- .signal-subvalue { font-size: 11px; color: var(--text-dim); font-family: var(--mono); margin-top: 2px; min-height: 16px; }
408
- .signal-bar { height: 4px; background: var(--surface); border-radius: 2px; margin-top: 8px; overflow: hidden; }
409
- .signal-fill { height: 100%; border-radius: 2px; background: var(--orange); transition: width 0.6s; }
410
- .signal-evidence-grid {
411
- display: grid;
412
- grid-template-columns: repeat(2, minmax(0, 1fr));
413
- gap: 12px;
414
- margin-bottom: 16px;
415
- }
416
- .evidence-panel {
417
- background: rgba(255, 255, 255, 0.025);
418
- border: 1px solid var(--border);
419
- border-radius: 8px;
420
- padding: 14px;
421
- min-width: 0;
422
- }
423
- .evidence-header {
424
- display: flex;
425
- align-items: center;
426
- gap: 6px;
427
- color: var(--primary);
428
- font-size: 11px;
429
- font-weight: 700;
430
- letter-spacing: 1px;
431
- text-transform: uppercase;
432
- margin-bottom: 10px;
433
- }
434
- .evidence-header .material-symbols-outlined { font-size: 16px; }
435
- .evidence-list {
436
- display: flex;
437
- flex-direction: column;
438
- gap: 6px;
439
- }
440
- .evidence-item {
441
- display: grid;
442
- grid-template-columns: minmax(92px, 0.42fr) minmax(0, 1fr);
443
- gap: 8px;
444
- align-items: start;
445
- padding: 8px;
446
- border-radius: 8px;
447
- background: rgba(192, 193, 255, 0.045);
448
- border: 1px solid rgba(192, 193, 255, 0.08);
449
- }
450
- .evidence-type {
451
- color: var(--secondary);
452
- font-size: 10px;
453
- font-weight: 800;
454
- letter-spacing: 0.6px;
455
- text-transform: uppercase;
456
- overflow-wrap: anywhere;
457
- }
458
- .evidence-phrase {
459
- color: var(--text-dim);
460
- font-size: 12px;
461
- line-height: 1.35;
462
- overflow-wrap: anywhere;
463
- }
464
- .evidence-empty {
465
- color: var(--text-dim);
466
- font-size: 12px;
467
- padding: 8px;
468
- border-radius: 8px;
469
- background: rgba(255, 255, 255, 0.02);
470
- }
471
- .result-reason {
472
- font-size: 13px; color: var(--text3); text-align: center;
473
- padding: 12px; background: var(--bg); border-radius: 8px;
474
- font-style: italic;
475
- }
476
-
477
- /* Architecture */
478
- .arch-pipeline {
479
- display: flex; align-items: stretch; gap: 0; margin-bottom: 80px;
480
- justify-content: center;
481
- }
482
- .arch-stage {
483
- padding: 32px; flex: 1; max-width: 340px;
484
- text-align: center; transition: all 0.3s;
485
- border-radius: 24px;
486
- }
487
- .arch-stage:hover { border-color: var(--primary); transform: translateY(-6px); }
488
- .stage-highlight { border-color: var(--primary); background: rgba(192, 193, 255, 0.05); }
489
- .stage-number {
490
- width: 40px; height: 40px; border-radius: 50%;
491
- background: var(--primary);
492
- color: var(--on-primary); font-weight: 800; font-size: 18px;
493
- display: inline-flex; align-items: center; justify-content: center;
494
- margin-bottom: 16px;
495
- }
496
- .stage-title { font-size: 18px; font-weight: 700; margin-bottom: 12px; color: #fff; }
497
- .stage-details { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 12px; }
498
- .tech-tag {
499
- font-size: 11px; padding: 4px 12px; border-radius: 6px;
500
- background: rgba(192, 193, 255, 0.1); color: var(--primary); font-weight: 700;
501
- }
502
- .stage-desc { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
503
- .arch-arrow {
504
- display: flex; align-items: center; font-size: 28px; color: #333;
505
- padding: 0 16px;
506
- }
507
-
508
- /* MC Dropout Viz */
509
- .mc-dropout-viz {
510
- text-align: center; margin-bottom: 60px;
511
- background: var(--surface); border: 1px solid var(--border);
512
- border-radius: var(--radius2); padding: 36px;
513
- }
514
- .viz-title { font-size: 20px; font-weight: 700; margin-bottom: 8px; }
515
- .viz-desc { font-size: 14px; color: var(--text2); margin-bottom: 24px; max-width: 600px; margin-left: auto; margin-right: auto; }
516
- .dropout-grid { display: flex; gap: 4px; justify-content: center; flex-wrap: wrap; margin-bottom: 16px; }
517
- .dropout-col { display: flex; flex-direction: column; gap: 3px; }
518
- .dropout-cell {
519
- width: 10px; height: 10px; border-radius: 2px; transition: all 0.3s;
520
- }
521
- .dropout-legend { display: flex; gap: 20px; justify-content: center; font-size: 12px; color: var(--text3); }
522
- .legend-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: middle; margin-right: 4px; }
523
-
524
- /* Competitor Table */
525
- .competitor-table-wrap { overflow-x: auto; }
526
- .competitor-table {
527
- width: 100%; border-collapse: collapse; font-size: 14px;
528
- }
529
- .competitor-table th {
530
- text-align: left; padding: 14px 16px; color: var(--text2);
531
- font-weight: 600; font-size: 12px; text-transform: uppercase;
532
- letter-spacing: 1px; border-bottom: 1px solid var(--border);
533
- }
534
- .competitor-table td { padding: 14px 16px; border-bottom: 1px solid var(--border); }
535
- .cell-no { color: var(--red); }
536
- .cell-yes { color: var(--green); font-weight: 600; }
537
- .cell-partial { color: var(--yellow); }
538
- .row-highlight { background: rgba(99,102,241,0.06); }
539
-
540
- /* Benchmarks */
541
- .benchmark-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-bottom: 48px; }
542
- .bench-card {
543
- background: var(--surface); border: 1px solid var(--border);
544
- border-radius: var(--radius2); padding: 24px;
545
- }
546
- .bench-metric { font-size: 15px; font-weight: 700; margin-bottom: 16px; }
547
- .bench-bar-group { margin-bottom: 8px; }
548
- .bench-label { font-size: 12px; color: var(--text3); margin-bottom: 4px; font-weight: 500; }
549
- .bench-bar { height: 28px; background: var(--bg); border-radius: 6px; overflow: hidden; }
550
- .bench-fill {
551
- height: 100%; border-radius: 6px; display: flex; align-items: center;
552
- padding-left: 12px; font-size: 13px; font-weight: 700; font-family: var(--mono);
553
- transition: width 1s ease;
554
- }
555
- .bench-fill.baseline { background: rgba(148,163,184,0.2); color: var(--text2); }
556
- .bench-fill.ours { background: linear-gradient(90deg, var(--primary), var(--accent)); color: white; }
557
- .bench-fill.bad { background: rgba(239,68,68,0.2); color: var(--red); }
558
- .bench-delta { font-size: 14px; font-weight: 700; color: var(--green); margin-top: 8px; text-align: right; }
559
-
560
- /* Ops Grid */
561
- .ops-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
562
- .ops-card {
563
- background: var(--surface); border: 1px solid var(--border);
564
- border-radius: var(--radius); padding: 24px; text-align: center;
565
- }
566
- .ops-icon { font-size: 28px; margin-bottom: 10px; }
567
- .ops-metric { font-size: 13px; color: var(--text2); font-weight: 600; margin-bottom: 12px; }
568
- .ops-before { font-size: 18px; font-weight: 700; color: var(--text3); font-family: var(--mono); }
569
- .ops-arrow { color: var(--text3); margin: 6px 0; }
570
- .ops-after { font-size: 22px; font-weight: 800; color: white; font-family: var(--mono); }
571
- .ops-delta { font-size: 13px; font-weight: 700; color: var(--green); margin-top: 8px; }
572
- .ops-delta.positive { color: var(--green); }
573
-
574
- /* API */
575
- .api-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
576
- .api-card {
577
- background: var(--surface); border: 1px solid var(--border);
578
- border-radius: var(--radius); padding: 20px;
579
- }
580
- .api-method {
581
- display: inline-block; font-size: 11px; font-weight: 800; padding: 3px 10px;
582
- border-radius: 4px; font-family: var(--mono); margin-bottom: 8px;
583
- }
584
- .api-method.post { background: rgba(99,102,241,0.15); color: var(--primary2); }
585
- .api-method.get { background: rgba(34,197,94,0.15); color: var(--green); }
586
- .api-path { font-family: var(--mono); font-size: 16px; font-weight: 600; display: block; margin-bottom: 8px; }
587
- .api-desc { font-size: 13px; color: var(--text3); }
588
-
589
- /* Footer */
590
- .footer {
591
- position: relative; z-index: 1;
592
- border-top: 1px solid var(--border); padding: 80px 40px;
593
- background: #050508;
594
- }
595
- .footer-brand { font-size: 24px; font-weight: 800; color: #fff; margin-bottom: 8px; letter-spacing: -1px; }
596
- .footer-author { font-size: 14px; color: #666; margin-bottom: 8px; }
597
- .footer-tech { font-size: 14px; color: #666; font-weight: 500; cursor: pointer; }
598
- .footer-tech span:hover { color: var(--primary); }
599
-
600
- /* Responsive */
601
- @media (max-width: 900px) {
602
- .hero-stats { grid-template-columns: repeat(2, 1fr); }
603
- .demo-container { grid-template-columns: 1fr; }
604
- .arch-pipeline { flex-direction: column; align-items: center; }
605
- .arch-arrow { transform: rotate(90deg); padding: 8px; }
606
- .benchmark-grid, .ops-grid, .api-grid { grid-template-columns: 1fr; }
607
- .signals-grid { grid-template-columns: repeat(2, 1fr); }
608
- .signal-evidence-grid { grid-template-columns: 1fr; }
609
- .gauge-row { grid-template-columns: 1fr; }
610
- .navbar { padding: 12px 16px; }
611
- .nav-links { display: none; }
612
- }
613
-
614
- /* Animations */
615
- .fade-in { opacity: 0; transform: translateY(20px); transition: all 0.6s ease; }
616
- .fade-in.visible { opacity: 1; transform: translateY(0); }
617
-
618
- /* Loading spinner */
619
- .spinner {
620
- display: inline-block; width: 20px; height: 20px;
621
- border: 2px solid rgba(255,255,255,0.2); border-top-color: white;
622
- border-radius: 50%; animation: spin 0.6s linear infinite;
623
- }
624
- /* SHAP Interpretability */
625
- .explanation-box {
626
- background: rgba(192, 193, 255, 0.03);
627
- border: 1px solid var(--border);
628
- border-radius: var(--radius);
629
- padding: 20px;
630
- margin-bottom: 20px;
631
- animation: fadeIn 0.4s ease;
632
- }
633
- .explain-header {
634
- font-weight: 700;
635
- font-size: 14px;
636
- margin-bottom: 12px;
637
- color: var(--primary);
638
- display: flex;
639
- align-items: center;
640
- gap: 8px;
641
- }
642
- .explain-text {
643
- font-family: var(--font);
644
- font-size: 15px;
645
- line-height: 2.2;
646
- color: var(--text);
647
- margin-bottom: 16px;
648
- }
649
- .shap-token {
650
- padding: 2px 4px;
651
- margin: 0 1px;
652
- border-radius: 4px;
653
- display: inline-block;
654
- transition: all 0.3s;
655
- }
656
- .explain-legend {
657
- display: flex;
658
- gap: 16px;
659
- font-size: 11px;
660
- color: var(--text3);
661
- }
662
- .legend-item { display: flex; align-items: center; gap: 6px; }
663
- .highlight-box {
664
- width: 12px;
665
- height: 12px;
666
- border-radius: 2px;
667
- }
668
- .highlight-box.pos { background: rgba(74, 222, 128, 0.4); border: 1px solid var(--green); }
669
- .highlight-box.neg { background: rgba(248, 113, 113, 0.4); border: 1px solid var(--red); }
670
-
671
- @keyframes fadeIn {
672
- from { opacity: 0; transform: translateY(10px); }
673
- to { opacity: 1; transform: translateY(0); }
674
- }
675
-
676
- @keyframes spin { to { transform: rotate(360deg); } }
 
1
+ /* SupportMind Dashboard - style.css */
2
+ :root {
3
+ /* AetherFlow Design Tokens */
4
+ --bg: #0d0d15;
5
+ --surface: #13131b;
6
+ --surface-container: #1f1f27;
7
+ --surface-bright: #393841;
8
+ --surface2: var(--surface-container);
9
+ --primary: #c0c1ff;
10
+ --primary-container: #8083ff;
11
+ --on-primary: #1000a9;
12
+ --secondary: #89ceff;
13
+ --accent: #8b5cf6;
14
+ --text: #e4e1ed;
15
+ --text-dim: #c7c4d7;
16
+ --text2: var(--text-dim);
17
+ --on-surface-variant: var(--text-dim);
18
+ --border: rgba(255, 255, 255, 0.08);
19
+ --glass: rgba(255, 255, 255, 0.05);
20
+ --glass-border: rgba(255, 255, 255, 0.1);
21
+
22
+ --green: #4ade80;
23
+ --yellow: #facc15;
24
+ --red: #f87171;
25
+ --orange: #fb923c;
26
+
27
+ --font: 'Inter', system-ui, -apple-system, sans-serif;
28
+ --mono: 'JetBrains Mono', monospace;
29
+ --radius: 12px;
30
+ --radius-lg: 24px;
31
+ --radius-xl: 32px;
32
+ }
33
+
34
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
35
+
36
+ html { scroll-behavior: smooth; }
37
+
38
+ body {
39
+ font-family: var(--font);
40
+ background: var(--bg);
41
+ color: var(--text);
42
+ line-height: 1.6;
43
+ overflow-x: hidden;
44
+ }
45
+
46
+ /* Glassmorphism */
47
+ .glass-panel {
48
+ background: var(--glass);
49
+ backdrop-filter: blur(12px);
50
+ -webkit-backdrop-filter: blur(12px);
51
+ border: 1px solid var(--glass-border);
52
+ }
53
+
54
+ .shimmer-border {
55
+ position: relative;
56
+ overflow: hidden;
57
+ }
58
+
59
+ .shimmer-border::after {
60
+ content: "";
61
+ position: absolute;
62
+ top: 0; left: 0; right: 0;
63
+ height: 1px;
64
+ background: linear-gradient(90deg, transparent, var(--primary), transparent);
65
+ opacity: 0.3;
66
+ animation: shimmer 3s infinite linear;
67
+ }
68
+
69
+ @keyframes shimmer {
70
+ 0% { transform: translateX(-100%); }
71
+ 100% { transform: translateX(100%); }
72
+ }
73
+
74
+ /* Nav */
75
+ .navbar {
76
+ position: fixed; top: 0; left: 0; right: 0; z-index: 100;
77
+ display: flex; align-items: center; justify-content: space-between;
78
+ padding: 16px 40px;
79
+ background: rgba(13, 13, 21, 0.8);
80
+ backdrop-filter: blur(20px);
81
+ border-bottom: 1px solid var(--border);
82
+ height: 64px;
83
+ }
84
+ .nav-brand { display: flex; align-items: center; gap: 10px; }
85
+ .brand-icon { display: flex; }
86
+ .brand-text { font-weight: 700; font-size: 18px; }
87
+ .brand-badge {
88
+ font-size: 10px; padding: 2px 8px; border-radius: 20px;
89
+ background: var(--surface2); color: var(--text2); font-weight: 600;
90
+ }
91
+ .nav-links { display: flex; gap: 8px; }
92
+ .nav-link {
93
+ color: var(--text2); text-decoration: none; font-size: 14px; font-weight: 500;
94
+ padding: 6px 14px; border-radius: 8px; transition: all 0.2s;
95
+ }
96
+ .nav-link:hover { color: var(--text); background: var(--surface2); }
97
+ .nav-status { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--green); }
98
+ .status-dot {
99
+ width: 8px; height: 8px; border-radius: 50%; background: var(--green);
100
+ animation: pulse 2s ease-in-out infinite;
101
+ }
102
+ @keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
103
+
104
+ /* Hero */
105
+ .hero {
106
+ position: relative; z-index: 1;
107
+ padding: 120px 40px 80px;
108
+ max-width: 1400px; margin: 0 auto;
109
+ }
110
+
111
+ .hero-container {
112
+ display: grid;
113
+ grid-template-columns: 1.2fr 1fr;
114
+ gap: 80px;
115
+ align-items: center;
116
+ }
117
+
118
+ .hero-content { text-align: left; }
119
+
120
+ .hero-eyebrow {
121
+ display: inline-flex; align-items: center; gap: 8px;
122
+ padding: 6px 16px; border-radius: 100px;
123
+ background: rgba(192, 193, 255, 0.1);
124
+ color: var(--primary);
125
+ font-size: 12px; font-weight: 700;
126
+ text-transform: uppercase; letter-spacing: 1px;
127
+ margin-bottom: 32px;
128
+ }
129
+
130
+ .hero-title {
131
+ font-size: clamp(48px, 5vw, 72px); font-weight: 800;
132
+ line-height: 1.05; margin-bottom: 24px;
133
+ color: #fff;
134
+ letter-spacing: -0.04em;
135
+ }
136
+
137
+ .gradient-text {
138
+ background: linear-gradient(135deg, var(--primary), var(--secondary), var(--accent));
139
+ -webkit-background-clip: text; -webkit-text-fill-color: transparent;
140
+ background-clip: text;
141
+ }
142
+
143
+ .hero-subtitle {
144
+ font-size: 18px; color: var(--text-dim); max-width: 600px; margin: 0 0 48px;
145
+ line-height: 1.6;
146
+ }
147
+
148
+ .hero-actions { display: flex; gap: 16px; justify-content: flex-start; margin-bottom: 0; }
149
+
150
+ /* Hero Visual (Bento Preview) */
151
+ .hero-visual {
152
+ position: relative;
153
+ }
154
+
155
+ .pipeline-card {
156
+ border-radius: 24px;
157
+ padding: 24px;
158
+ position: relative;
159
+ z-index: 10;
160
+ box-shadow: 0 40px 80px rgba(0, 0, 0, 0.5);
161
+ }
162
+
163
+ .pipeline-header {
164
+ display: flex; justify-content: space-between; align-items: center;
165
+ margin-bottom: 24px; padding-bottom: 16px;
166
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
167
+ }
168
+
169
+ .window-controls { display: flex; gap: 6px; }
170
+ .dot { width: 10px; height: 10px; border-radius: 50%; opacity: 0.5; }
171
+ .dot-red { background: var(--red); }
172
+ .dot-amber { background: var(--yellow); }
173
+ .dot-green { background: var(--green); }
174
+
175
+ .pipeline-status { font-family: var(--mono); font-size: 12px; color: #666; }
176
+
177
+ .pipeline-tiers { display: flex; flex-direction: column; gap: 16px; }
178
+
179
+ .tier-card {
180
+ padding: 16px; border-radius: 16px;
181
+ background: rgba(255, 255, 255, 0.03);
182
+ border: 1px solid rgba(255, 255, 255, 0.05);
183
+ display: flex; justify-content: space-between; align-items: center;
184
+ transition: all 0.3s;
185
+ }
186
+
187
+ .tier-card.active {
188
+ background: rgba(192, 193, 255, 0.08);
189
+ border-color: rgba(192, 193, 255, 0.2);
190
+ }
191
+
192
+ .tier-info { display: flex; align-items: center; gap: 16px; }
193
+ .tier-icon {
194
+ width: 40px; height: 40px; border-radius: 10px;
195
+ background: rgba(192, 193, 255, 0.15);
196
+ display: flex; align-items: center; justify-content: center;
197
+ color: var(--primary);
198
+ }
199
+
200
+ .tier-name { font-size: 14px; font-weight: 600; color: #fff; }
201
+ .tier-meta { font-size: 12px; color: #666; }
202
+ .tier-indicator { font-size: 20px; }
203
+
204
+ .explain-source {
205
+ display: inline-flex;
206
+ align-items: center;
207
+ margin: 0 0 10px;
208
+ padding: 4px 8px;
209
+ border-radius: 6px;
210
+ background: rgba(192, 193, 255, 0.08);
211
+ color: var(--primary);
212
+ font-size: 11px;
213
+ font-weight: 700;
214
+ text-transform: uppercase;
215
+ }
216
+
217
+
218
+ /* Buttons */
219
+ .btn {
220
+ display: inline-flex; align-items: center; gap: 10px;
221
+ padding: 14px 32px; border-radius: 12px; font-size: 15px; font-weight: 700;
222
+ text-decoration: none; cursor: pointer; border: none;
223
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
224
+ font-family: var(--font);
225
+ }
226
+
227
+ .btn-primary {
228
+ background: var(--primary);
229
+ color: var(--on-primary);
230
+ box-shadow: 0 8px 24px rgba(192, 193, 255, 0.2);
231
+ }
232
+
233
+ .btn-primary:hover {
234
+ transform: translateY(-2px);
235
+ box-shadow: 0 12px 32px rgba(192, 193, 255, 0.3);
236
+ filter: brightness(1.1);
237
+ }
238
+
239
+ .btn-ghost {
240
+ background: rgba(255, 255, 255, 0.03);
241
+ color: #fff;
242
+ border: 1px solid rgba(255, 255, 255, 0.1);
243
+ }
244
+
245
+ .btn-ghost:hover {
246
+ background: rgba(255, 255, 255, 0.08);
247
+ border-color: var(--primary);
248
+ }
249
+
250
+ /* Stats Section */
251
+ .hero-stats {
252
+ display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px;
253
+ max-width: 1400px; margin: 0 auto;
254
+ padding: 0 40px 80px;
255
+ }
256
+
257
+ .stat-card {
258
+ padding: 32px;
259
+ border-radius: 20px;
260
+ transition: all 0.3s;
261
+ }
262
+
263
+ .stat-card:hover {
264
+ border-color: rgba(192, 193, 255, 0.2);
265
+ transform: translateY(-4px);
266
+ background: rgba(192, 193, 255, 0.03);
267
+ }
268
+
269
+ .stat-label {
270
+ font-size: 12px; font-weight: 600; color: #666;
271
+ text-transform: uppercase; letter-spacing: 1px;
272
+ margin-bottom: 8px;
273
+ }
274
+
275
+ .stat-value {
276
+ font-size: 40px; font-weight: 800; color: #fff;
277
+ line-height: 1; margin-bottom: 12px;
278
+ }
279
+
280
+ .stat-delta {
281
+ font-size: 13px; font-weight: 600;
282
+ display: flex; align-items: center; gap: 4px;
283
+ }
284
+
285
+ .btn-full { width: 100%; justify-content: center; padding: 14px; font-size: 16px; margin-top: 16px; }
286
+ .btn-icon { font-size: 20px; }
287
+
288
+
289
+ /* Sections */
290
+ .section {
291
+ position: relative; z-index: 1;
292
+ padding: 100px 40px;
293
+ max-width: 1400px; margin: 0 auto;
294
+ }
295
+ .section-dark { max-width: none; background: #0a0a0f; }
296
+ .section-dark > * { max-width: 1400px; margin-left: auto; margin-right: auto; }
297
+ .section-header { text-align: center; margin-bottom: 60px; }
298
+ .section-badge {
299
+ display: inline-block; font-size: 12px; font-weight: 700; text-transform: uppercase;
300
+ letter-spacing: 2px; color: var(--primary); background: rgba(192, 193, 255, 0.1);
301
+ padding: 6px 18px; border-radius: 20px; margin-bottom: 16px;
302
+ }
303
+ .section-title { font-size: 40px; font-weight: 800; margin-bottom: 16px; color: #fff; }
304
+ .section-desc { font-size: 17px; color: var(--text-dim); max-width: 700px; margin: 0 auto; }
305
+
306
+ /* Demo */
307
+ .demo-container {
308
+ display: grid; grid-template-columns: 1fr 1fr; gap: 24px;
309
+ }
310
+ .demo-input-panel, .demo-results-panel {
311
+ background: var(--surface); border: 1px solid var(--border);
312
+ border-radius: var(--radius2); padding: 28px;
313
+ }
314
+ .input-label { font-size: 14px; font-weight: 600; color: var(--text2); margin-bottom: 10px; display: block; }
315
+ .ticket-textarea {
316
+ width: 100%; background: var(--bg); border: 1px solid var(--border);
317
+ border-radius: var(--radius); padding: 14px; color: var(--text);
318
+ font-family: var(--font); font-size: 14px; resize: vertical;
319
+ transition: border-color 0.2s; line-height: 1.6;
320
+ }
321
+ .ticket-textarea:focus { outline: none; border-color: var(--primary); }
322
+ .demo-presets { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; align-items: center; }
323
+ .preset-label { font-size: 13px; color: var(--text3); font-weight: 500; }
324
+ .preset-btn {
325
+ font-size: 12px; padding: 4px 12px; border-radius: 6px;
326
+ background: var(--surface2); border: 1px solid var(--border);
327
+ color: var(--text2); cursor: pointer; font-family: var(--font);
328
+ transition: all 0.2s;
329
+ }
330
+ .preset-btn:hover { border-color: var(--primary); color: var(--primary2); }
331
+
332
+ /* Result placeholder */
333
+ .result-placeholder {
334
+ display: flex; flex-direction: column; align-items: center; justify-content: center;
335
+ height: 100%; min-height: 300px; color: var(--text3); text-align: center;
336
+ }
337
+ .placeholder-icon { font-size: 48px; margin-bottom: 16px; opacity: 0.5; }
338
+
339
+ /* Action badge */
340
+ .action-badge-container { text-align: center; margin-bottom: 20px; }
341
+ .action-badge {
342
+ display: inline-block; padding: 8px 24px; border-radius: 8px;
343
+ font-size: 18px; font-weight: 800; font-family: var(--mono);
344
+ letter-spacing: 2px;
345
+ animation: badgePop 0.4s ease;
346
+ }
347
+ @keyframes badgePop { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
348
+ .action-badge.route { background: rgba(74, 222, 128, 0.1); color: var(--green); border: 1px solid rgba(74, 222, 128, 0.2); }
349
+ .action-badge.clarify { background: rgba(250, 204, 21, 0.1); color: var(--yellow); border: 1px solid rgba(250, 204, 21, 0.2); }
350
+ .action-badge.escalate { background: rgba(248, 113, 113, 0.1); color: var(--red); border: 1px solid rgba(248, 113, 113, 0.2); }
351
+ .action-queue { font-size: 13px; color: var(--text2); margin-top: 8px; }
352
+
353
+ /* Gauges */
354
+ .gauge-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-bottom: 20px; }
355
+ .gauge-container { position: relative; }
356
+ .gauge-label { font-size: 12px; font-weight: 600; color: var(--text2); margin-bottom: 6px; display: block; }
357
+ .gauge-track {
358
+ height: 10px; background: var(--bg); border-radius: 5px;
359
+ overflow: hidden; position: relative;
360
+ }
361
+ .gauge-fill {
362
+ height: 100%; border-radius: 5px; transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
363
+ background: linear-gradient(90deg, var(--green), var(--primary));
364
+ position: relative; z-index: 2;
365
+ }
366
+ .entropy-fill { background: linear-gradient(90deg, var(--cyan), var(--yellow), var(--red)); }
367
+ .gauge-zones { position: absolute; inset: 0; display: flex; opacity: 0.15; }
368
+ .zone { height: 100%; }
369
+ .zone-red { background: var(--red); }
370
+ .zone-yellow { background: var(--yellow); }
371
+ .zone-green { background: var(--green); }
372
+ .gauge-value { font-size: 20px; font-weight: 700; font-family: var(--mono); margin-top: 6px; }
373
+
374
+ /* Probability chart */
375
+ .prob-chart { margin-bottom: 20px; }
376
+ .prob-row {
377
+ display: flex; align-items: center; gap: 10px; margin-bottom: 6px;
378
+ font-size: 12px;
379
+ }
380
+ .prob-label { width: 130px; color: var(--text2); text-align: right; font-family: var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
381
+ .prob-bar-track { flex: 1; height: 6px; background: var(--bg); border-radius: 3px; overflow: hidden; }
382
+ .prob-bar-fill { height: 100%; border-radius: 3px; transition: width 0.6s ease; background: var(--primary); }
383
+ .prob-val { width: 50px; font-family: var(--mono); color: var(--text3); font-size: 11px; }
384
+
385
+ /* Clarification */
386
+ .clarification-box {
387
+ background: rgba(234,179,8,0.06); border: 1px solid rgba(234,179,8,0.2);
388
+ border-radius: var(--radius); padding: 20px; margin-bottom: 20px;
389
+ }
390
+ .clarify-header { font-weight: 700; font-size: 14px; margin-bottom: 10px; color: var(--yellow); }
391
+ .clarify-question { font-size: 15px; line-height: 1.6; margin-bottom: 12px; }
392
+ .clarify-options { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
393
+ .clarify-options .option-btn {
394
+ padding: 6px 16px; border-radius: 6px; font-size: 13px;
395
+ background: var(--surface2); border: 1px solid var(--border);
396
+ color: var(--text); cursor: pointer; font-family: var(--font);
397
+ }
398
+ .clarify-gain { font-size: 12px; color: var(--text3); }
399
+
400
+ /* Signals */
401
+ .signals-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
402
+ .signal-card {
403
+ background: var(--bg); border-radius: 8px; padding: 14px; text-align: center;
404
+ }
405
+ .signal-label { font-size: 11px; color: var(--text3); font-weight: 600; text-transform: uppercase; letter-spacing: 1px; }
406
+ .signal-value { font-size: 18px; font-weight: 700; font-family: var(--mono); margin-top: 4px; }
407
+ .signal-subvalue { font-size: 11px; color: var(--text-dim); font-family: var(--mono); margin-top: 2px; min-height: 16px; }
408
+ .signal-bar { height: 4px; background: var(--surface); border-radius: 2px; margin-top: 8px; overflow: hidden; }
409
+ .signal-fill { height: 100%; border-radius: 2px; background: var(--orange); transition: width 0.6s; }
410
+ .signal-evidence-grid {
411
+ display: grid;
412
+ grid-template-columns: repeat(2, minmax(0, 1fr));
413
+ gap: 12px;
414
+ margin-bottom: 16px;
415
+ }
416
+ .evidence-panel {
417
+ background: rgba(255, 255, 255, 0.025);
418
+ border: 1px solid var(--border);
419
+ border-radius: 8px;
420
+ padding: 14px;
421
+ min-width: 0;
422
+ }
423
+ .evidence-header {
424
+ display: flex;
425
+ align-items: center;
426
+ gap: 6px;
427
+ color: var(--primary);
428
+ font-size: 11px;
429
+ font-weight: 700;
430
+ letter-spacing: 1px;
431
+ text-transform: uppercase;
432
+ margin-bottom: 10px;
433
+ }
434
+ .evidence-header .material-symbols-outlined { font-size: 16px; }
435
+ .evidence-list {
436
+ display: flex;
437
+ flex-direction: column;
438
+ gap: 6px;
439
+ }
440
+ .evidence-item {
441
+ display: grid;
442
+ grid-template-columns: minmax(92px, 0.42fr) minmax(0, 1fr);
443
+ gap: 8px;
444
+ align-items: start;
445
+ padding: 8px;
446
+ border-radius: 8px;
447
+ background: rgba(192, 193, 255, 0.045);
448
+ border: 1px solid rgba(192, 193, 255, 0.08);
449
+ }
450
+ .evidence-type {
451
+ color: var(--secondary);
452
+ font-size: 10px;
453
+ font-weight: 800;
454
+ letter-spacing: 0.6px;
455
+ text-transform: uppercase;
456
+ overflow-wrap: anywhere;
457
+ }
458
+ .evidence-phrase {
459
+ color: var(--text-dim);
460
+ font-size: 12px;
461
+ line-height: 1.35;
462
+ overflow-wrap: anywhere;
463
+ }
464
+ .evidence-empty {
465
+ color: var(--text-dim);
466
+ font-size: 12px;
467
+ padding: 8px;
468
+ border-radius: 8px;
469
+ background: rgba(255, 255, 255, 0.02);
470
+ }
471
+ .result-reason {
472
+ font-size: 13px; color: var(--text3); text-align: center;
473
+ padding: 12px; background: var(--bg); border-radius: 8px;
474
+ font-style: italic;
475
+ }
476
+
477
+ /* Architecture */
478
+ .arch-pipeline {
479
+ display: flex; align-items: stretch; gap: 0; margin-bottom: 80px;
480
+ justify-content: center;
481
+ }
482
+ .arch-stage {
483
+ padding: 32px; flex: 1; max-width: 340px;
484
+ text-align: center; transition: all 0.3s;
485
+ border-radius: 24px;
486
+ }
487
+ .arch-stage:hover { border-color: var(--primary); transform: translateY(-6px); }
488
+ .stage-highlight { border-color: var(--primary); background: rgba(192, 193, 255, 0.05); }
489
+ .stage-number {
490
+ width: 40px; height: 40px; border-radius: 50%;
491
+ background: var(--primary);
492
+ color: var(--on-primary); font-weight: 800; font-size: 18px;
493
+ display: inline-flex; align-items: center; justify-content: center;
494
+ margin-bottom: 16px;
495
+ }
496
+ .stage-title { font-size: 18px; font-weight: 700; margin-bottom: 12px; color: #fff; }
497
+ .stage-details { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 12px; }
498
+ .tech-tag {
499
+ font-size: 11px; padding: 4px 12px; border-radius: 6px;
500
+ background: rgba(192, 193, 255, 0.1); color: var(--primary); font-weight: 700;
501
+ }
502
+ .stage-desc { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
503
+ .arch-arrow {
504
+ display: flex; align-items: center; font-size: 28px; color: #333;
505
+ padding: 0 16px;
506
+ }
507
+
508
+ /* MC Dropout Viz */
509
+ .mc-dropout-viz {
510
+ text-align: center; margin-bottom: 60px;
511
+ background: var(--surface); border: 1px solid var(--border);
512
+ border-radius: var(--radius2); padding: 36px;
513
+ }
514
+ .viz-title { font-size: 20px; font-weight: 700; margin-bottom: 8px; }
515
+ .viz-desc { font-size: 14px; color: var(--text2); margin-bottom: 24px; max-width: 600px; margin-left: auto; margin-right: auto; }
516
+ .dropout-grid { display: flex; gap: 4px; justify-content: center; flex-wrap: wrap; margin-bottom: 16px; }
517
+ .dropout-col { display: flex; flex-direction: column; gap: 3px; }
518
+ .dropout-cell {
519
+ width: 10px; height: 10px; border-radius: 2px; transition: all 0.3s;
520
+ }
521
+ .dropout-legend { display: flex; gap: 20px; justify-content: center; font-size: 12px; color: var(--text3); }
522
+ .legend-dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: middle; margin-right: 4px; }
523
+
524
+ /* Competitor Table */
525
+ .competitor-table-wrap { overflow-x: auto; }
526
+ .competitor-table {
527
+ width: 100%; border-collapse: collapse; font-size: 14px;
528
+ }
529
+ .competitor-table th {
530
+ text-align: left; padding: 14px 16px; color: var(--text2);
531
+ font-weight: 600; font-size: 12px; text-transform: uppercase;
532
+ letter-spacing: 1px; border-bottom: 1px solid var(--border);
533
+ }
534
+ .competitor-table td { padding: 14px 16px; border-bottom: 1px solid var(--border); }
535
+ .cell-no { color: var(--red); }
536
+ .cell-yes { color: var(--green); font-weight: 600; }
537
+ .cell-partial { color: var(--yellow); }
538
+ .row-highlight { background: rgba(99,102,241,0.06); }
539
+
540
+ /* Benchmarks */
541
+ .benchmark-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-bottom: 48px; }
542
+ .bench-card {
543
+ background: var(--surface); border: 1px solid var(--border);
544
+ border-radius: var(--radius2); padding: 24px;
545
+ }
546
+ .bench-metric { font-size: 15px; font-weight: 700; margin-bottom: 16px; }
547
+ .bench-bar-group { margin-bottom: 8px; }
548
+ .bench-label { font-size: 12px; color: var(--text3); margin-bottom: 4px; font-weight: 500; }
549
+ .bench-bar { height: 28px; background: var(--bg); border-radius: 6px; overflow: hidden; }
550
+ .bench-fill {
551
+ height: 100%; border-radius: 6px; display: flex; align-items: center;
552
+ padding-left: 12px; font-size: 13px; font-weight: 700; font-family: var(--mono);
553
+ transition: width 1s ease;
554
+ }
555
+ .bench-fill.baseline { background: rgba(148,163,184,0.2); color: var(--text2); }
556
+ .bench-fill.ours { background: linear-gradient(90deg, var(--primary), var(--accent)); color: white; }
557
+ .bench-fill.bad { background: rgba(239,68,68,0.2); color: var(--red); }
558
+ .bench-delta { font-size: 14px; font-weight: 700; color: var(--green); margin-top: 8px; text-align: right; }
559
+
560
+ /* Ops Grid */
561
+ .ops-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
562
+ .ops-card {
563
+ background: var(--surface); border: 1px solid var(--border);
564
+ border-radius: var(--radius); padding: 24px; text-align: center;
565
+ }
566
+ .ops-icon { font-size: 28px; margin-bottom: 10px; }
567
+ .ops-metric { font-size: 13px; color: var(--text2); font-weight: 600; margin-bottom: 12px; }
568
+ .ops-before { font-size: 18px; font-weight: 700; color: var(--text3); font-family: var(--mono); }
569
+ .ops-arrow { color: var(--text3); margin: 6px 0; }
570
+ .ops-after { font-size: 22px; font-weight: 800; color: white; font-family: var(--mono); }
571
+ .ops-delta { font-size: 13px; font-weight: 700; color: var(--green); margin-top: 8px; }
572
+ .ops-delta.positive { color: var(--green); }
573
+
574
+ /* API */
575
+ .api-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
576
+ .api-card {
577
+ background: var(--surface); border: 1px solid var(--border);
578
+ border-radius: var(--radius); padding: 20px;
579
+ }
580
+ .api-method {
581
+ display: inline-block; font-size: 11px; font-weight: 800; padding: 3px 10px;
582
+ border-radius: 4px; font-family: var(--mono); margin-bottom: 8px;
583
+ }
584
+ .api-method.post { background: rgba(99,102,241,0.15); color: var(--primary2); }
585
+ .api-method.get { background: rgba(34,197,94,0.15); color: var(--green); }
586
+ .api-path { font-family: var(--mono); font-size: 16px; font-weight: 600; display: block; margin-bottom: 8px; }
587
+ .api-desc { font-size: 13px; color: var(--text3); }
588
+
589
+ /* Footer */
590
+ .footer {
591
+ position: relative; z-index: 1;
592
+ border-top: 1px solid var(--border); padding: 80px 40px;
593
+ background: #050508;
594
+ }
595
+ .footer-brand { font-size: 24px; font-weight: 800; color: #fff; margin-bottom: 8px; letter-spacing: -1px; }
596
+ .footer-author { font-size: 14px; color: #666; margin-bottom: 8px; }
597
+ .footer-tech { font-size: 14px; color: #666; font-weight: 500; cursor: pointer; }
598
+ .footer-tech span:hover { color: var(--primary); }
599
+
600
+ /* Responsive */
601
+ @media (max-width: 900px) {
602
+ .hero-stats { grid-template-columns: repeat(2, 1fr); }
603
+ .demo-container { grid-template-columns: 1fr; }
604
+ .arch-pipeline { flex-direction: column; align-items: center; }
605
+ .arch-arrow { transform: rotate(90deg); padding: 8px; }
606
+ .benchmark-grid, .ops-grid, .api-grid { grid-template-columns: 1fr; }
607
+ .signals-grid { grid-template-columns: repeat(2, 1fr); }
608
+ .signal-evidence-grid { grid-template-columns: 1fr; }
609
+ .gauge-row { grid-template-columns: 1fr; }
610
+ .navbar { padding: 12px 16px; }
611
+ .nav-links { display: none; }
612
+ }
613
+
614
+ /* Animations */
615
+ .fade-in { opacity: 0; transform: translateY(20px); transition: all 0.6s ease; }
616
+ .fade-in.visible { opacity: 1; transform: translateY(0); }
617
+
618
+ /* Loading spinner */
619
+ .spinner {
620
+ display: inline-block; width: 20px; height: 20px;
621
+ border: 2px solid rgba(255,255,255,0.2); border-top-color: white;
622
+ border-radius: 50%; animation: spin 0.6s linear infinite;
623
+ }
624
+ /* SHAP Interpretability */
625
+ .explanation-box {
626
+ background: rgba(192, 193, 255, 0.03);
627
+ border: 1px solid var(--border);
628
+ border-radius: var(--radius);
629
+ padding: 20px;
630
+ margin-bottom: 20px;
631
+ animation: fadeIn 0.4s ease;
632
+ }
633
+ .explain-header {
634
+ font-weight: 700;
635
+ font-size: 14px;
636
+ margin-bottom: 12px;
637
+ color: var(--primary);
638
+ display: flex;
639
+ align-items: center;
640
+ gap: 8px;
641
+ }
642
+ .explain-text {
643
+ font-family: var(--font);
644
+ font-size: 15px;
645
+ line-height: 2.2;
646
+ color: var(--text);
647
+ margin-bottom: 16px;
648
+ }
649
+ .shap-token {
650
+ padding: 2px 4px;
651
+ margin: 0 1px;
652
+ border-radius: 4px;
653
+ display: inline-block;
654
+ transition: all 0.3s;
655
+ }
656
+ .explain-legend {
657
+ display: flex;
658
+ gap: 16px;
659
+ font-size: 11px;
660
+ color: var(--text3);
661
+ }
662
+ .legend-item { display: flex; align-items: center; gap: 6px; }
663
+ .highlight-box {
664
+ width: 12px;
665
+ height: 12px;
666
+ border-radius: 2px;
667
+ }
668
+ .highlight-box.pos { background: rgba(74, 222, 128, 0.4); border: 1px solid var(--green); }
669
+ .highlight-box.neg { background: rgba(248, 113, 113, 0.4); border: 1px solid var(--red); }
670
+
671
+ @keyframes fadeIn {
672
+ from { opacity: 0; transform: translateY(10px); }
673
+ to { opacity: 1; transform: translateY(0); }
674
+ }
675
+
676
+ @keyframes spin { to { transform: rotate(360deg); } }