shukdev3 commited on
Commit
760ff2c
·
verified ·
1 Parent(s): fd87dec

Create static/css/style.css

Browse files
Files changed (1) hide show
  1. static/css/style.css +412 -0
static/css/style.css ADDED
@@ -0,0 +1,412 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ============================================================
2
+ Text Vectorization Lab — design tokens
3
+ ============================================================ */
4
+ :root{
5
+ --bg: #0a0d13;
6
+ --bg-grid: #0c1019;
7
+ --surface: #131826;
8
+ --surface-2: #1a2133;
9
+ --surface-3: #212a40;
10
+ --border: #283149;
11
+ --border-soft: #1c2335;
12
+
13
+ --text-1: #eef1f7;
14
+ --text-2: #a4adc4;
15
+ --text-3: #6b7390;
16
+
17
+ --amber: #f2a93b;
18
+ --amber-dim: #f2a93b22;
19
+ --teal: #34d6b8;
20
+ --teal-dim: #34d6b822;
21
+ --pink: #ef5da8;
22
+ --pink-dim: #ef5da822;
23
+ --violet: #9b8cf2;
24
+ --violet-dim: #9b8cf222;
25
+
26
+ --font-display: 'Fraunces', Georgia, serif;
27
+ --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
28
+ --font-mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, monospace;
29
+
30
+ --radius-sm: 6px;
31
+ --radius-md: 10px;
32
+ --radius-lg: 16px;
33
+
34
+ --shadow-card: 0 1px 0 rgba(255,255,255,0.03) inset, 0 8px 24px -12px rgba(0,0,0,0.6);
35
+ }
36
+
37
+ *{ box-sizing: border-box; }
38
+ html,body{ margin:0; padding:0; }
39
+
40
+ body{
41
+ background: var(--bg);
42
+ background-image:
43
+ radial-gradient(circle at 0px 0px, rgba(255,255,255,0.035) 1px, transparent 1px);
44
+ background-size: 26px 26px;
45
+ color: var(--text-1);
46
+ font-family: var(--font-body);
47
+ font-size: 15px;
48
+ line-height: 1.55;
49
+ -webkit-font-smoothing: antialiased;
50
+ }
51
+
52
+ a{ color: var(--teal); text-decoration:none; }
53
+ ::selection{ background: var(--amber-dim); }
54
+
55
+ ::-webkit-scrollbar{ width:10px; height:10px; }
56
+ ::-webkit-scrollbar-track{ background: transparent; }
57
+ ::-webkit-scrollbar-thumb{ background: var(--surface-3); border-radius: 8px; }
58
+ ::-webkit-scrollbar-thumb:hover{ background: var(--border); }
59
+
60
+ h1,h2,h3,h4{ font-family: var(--font-display); font-weight: 600; margin: 0; color: var(--text-1); }
61
+ code, .mono{ font-family: var(--font-mono); }
62
+
63
+ button{ font-family: inherit; cursor: pointer; }
64
+
65
+ /* ============================================================
66
+ App shell
67
+ ============================================================ */
68
+ .app{
69
+ display:grid;
70
+ grid-template-columns: 272px 1fr;
71
+ min-height: 100vh;
72
+ }
73
+
74
+ /* ---- Sidebar ---- */
75
+ .sidebar{
76
+ border-right: 1px solid var(--border-soft);
77
+ background: linear-gradient(180deg, var(--bg-grid), var(--bg));
78
+ padding: 28px 18px;
79
+ position: sticky;
80
+ top: 0;
81
+ height: 100vh;
82
+ overflow-y: auto;
83
+ }
84
+
85
+ .brand{
86
+ display:flex;
87
+ align-items:center;
88
+ gap:10px;
89
+ padding: 0 8px 22px 8px;
90
+ border-bottom: 1px solid var(--border-soft);
91
+ margin-bottom: 18px;
92
+ }
93
+ .brand-mark{
94
+ width: 30px; height: 30px;
95
+ border-radius: 8px;
96
+ background: linear-gradient(135deg, var(--amber), var(--pink));
97
+ display:flex; align-items:center; justify-content:center;
98
+ font-family: var(--font-mono);
99
+ font-weight: 700;
100
+ font-size: 13px;
101
+ color: #1a1108;
102
+ flex: none;
103
+ }
104
+ .brand-text{ line-height:1.25; }
105
+ .brand-title{ font-family: var(--font-display); font-size: 16px; font-weight:600; }
106
+ .brand-sub{ font-family: var(--font-mono); font-size: 10.5px; color: var(--text-3); letter-spacing:.04em; text-transform:uppercase; }
107
+
108
+ .nav-group-label{
109
+ font-family: var(--font-mono);
110
+ font-size: 10.5px;
111
+ text-transform: uppercase;
112
+ letter-spacing: .08em;
113
+ color: var(--text-3);
114
+ padding: 14px 10px 8px;
115
+ }
116
+
117
+ .nav-item{
118
+ display:flex;
119
+ align-items:center;
120
+ gap: 11px;
121
+ width: 100%;
122
+ padding: 10px 10px;
123
+ border-radius: var(--radius-sm);
124
+ border: 1px solid transparent;
125
+ background: none;
126
+ color: var(--text-2);
127
+ font-size: 13.5px;
128
+ text-align:left;
129
+ margin-bottom: 2px;
130
+ transition: background .15s, color .15s, border-color .15s;
131
+ }
132
+ .nav-item .nav-idx{
133
+ font-family: var(--font-mono);
134
+ font-size: 10.5px;
135
+ color: var(--text-3);
136
+ width: 18px;
137
+ flex: none;
138
+ }
139
+ .nav-item:hover{ background: var(--surface); color: var(--text-1); }
140
+ .nav-item.active{
141
+ background: var(--surface-2);
142
+ border-color: var(--border);
143
+ color: var(--text-1);
144
+ }
145
+ .nav-item.active .nav-idx{ color: var(--amber); }
146
+ .nav-item.active::after{ content:''; }
147
+
148
+ .sidebar-foot{
149
+ margin-top: 22px;
150
+ padding: 12px 10px;
151
+ border-top: 1px solid var(--border-soft);
152
+ font-size: 11.5px;
153
+ color: var(--text-3);
154
+ }
155
+ .sidebar-foot .pulse-dot{
156
+ display:inline-block; width:7px; height:7px; border-radius:50%;
157
+ background: var(--teal); margin-right:6px;
158
+ box-shadow: 0 0 0 0 var(--teal-dim);
159
+ animation: pulse 2s infinite;
160
+ }
161
+ @keyframes pulse{
162
+ 0%{ box-shadow: 0 0 0 0 rgba(52,214,184,.5); }
163
+ 70%{ box-shadow: 0 0 0 6px rgba(52,214,184,0); }
164
+ 100%{ box-shadow: 0 0 0 0 rgba(52,214,184,0); }
165
+ }
166
+
167
+ /* ---- Main ---- */
168
+ .main{ padding: 36px 44px 80px; max-width: 1080px; }
169
+
170
+ .page-header{ margin-bottom: 26px; }
171
+ .eyebrow{
172
+ font-family: var(--font-mono);
173
+ font-size: 11px;
174
+ letter-spacing: .1em;
175
+ text-transform: uppercase;
176
+ color: var(--amber);
177
+ margin-bottom: 10px;
178
+ }
179
+ .page-title{ font-size: 32px; margin-bottom: 10px; }
180
+ .page-desc{ color: var(--text-2); max-width: 680px; font-size: 14.5px; }
181
+
182
+ .section{ display:none; }
183
+ .section.active{ display:block; animation: fadeUp .35s ease; }
184
+ @keyframes fadeUp{ from{ opacity:0; transform: translateY(6px);} to{ opacity:1; transform:none; } }
185
+
186
+ /* ============================================================
187
+ Pipeline tape — signature element
188
+ ============================================================ */
189
+ .tape{
190
+ display:flex;
191
+ align-items:center;
192
+ gap: 0;
193
+ background: var(--surface);
194
+ border: 1px solid var(--border-soft);
195
+ border-radius: var(--radius-lg);
196
+ padding: 6px;
197
+ margin-bottom: 26px;
198
+ overflow-x: auto;
199
+ }
200
+ .tape-stage{
201
+ flex: 1;
202
+ display:flex;
203
+ align-items:center;
204
+ gap:8px;
205
+ padding: 10px 16px;
206
+ border-radius: var(--radius-md);
207
+ white-space: nowrap;
208
+ color: var(--text-3);
209
+ font-size: 12.5px;
210
+ font-family: var(--font-mono);
211
+ position:relative;
212
+ transition: color .2s, background .2s;
213
+ }
214
+ .tape-stage .dot{ width:6px; height:6px; border-radius:50%; background: var(--text-3); flex:none; transition: background .2s, box-shadow .2s; }
215
+ .tape-stage.done{ color: var(--text-2); }
216
+ .tape-stage.done .dot{ background: var(--teal); }
217
+ .tape-stage.current{ color: var(--text-1); background: var(--surface-3); }
218
+ .tape-stage.current .dot{ background: var(--amber); box-shadow: 0 0 0 4px var(--amber-dim); }
219
+ .tape-arrow{ color: var(--text-3); flex: none; padding: 0 2px; font-size:13px; }
220
+
221
+ /* ============================================================
222
+ Cards / panels
223
+ ============================================================ */
224
+ .card{
225
+ background: var(--surface);
226
+ border: 1px solid var(--border-soft);
227
+ border-radius: var(--radius-lg);
228
+ padding: 22px;
229
+ margin-bottom: 22px;
230
+ box-shadow: var(--shadow-card);
231
+ }
232
+ .card-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom: 14px; flex-wrap: wrap; }
233
+ .card-title{ font-size: 15px; font-weight:600; font-family: var(--font-body); color: var(--text-1); display:flex; align-items:center; gap:8px; }
234
+ .card-title .step-num{
235
+ font-family: var(--font-mono); font-size: 11px; color: var(--amber);
236
+ border: 1px solid var(--amber-dim); background: var(--amber-dim);
237
+ border-radius: 5px; padding: 2px 6px;
238
+ }
239
+ .card-note{ font-size: 12.5px; color: var(--text-3); }
240
+
241
+ .field-row{ display:flex; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
242
+ .field{ flex: 1; min-width: 220px; }
243
+ .field label{ display:block; font-size: 11.5px; color: var(--text-3); margin-bottom:6px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }
244
+ textarea, input[type=text], input[type=number]{
245
+ width: 100%;
246
+ background: var(--bg-grid);
247
+ border: 1px solid var(--border);
248
+ border-radius: var(--radius-sm);
249
+ color: var(--text-1);
250
+ font-family: var(--font-mono);
251
+ font-size: 13px;
252
+ padding: 10px 12px;
253
+ resize: vertical;
254
+ }
255
+ textarea:focus, input:focus{ outline: 2px solid var(--teal-dim); border-color: var(--teal); }
256
+ textarea{ min-height: 92px; line-height: 1.5; }
257
+
258
+ .checkbox-row{ display:flex; align-items:center; gap:8px; font-size: 13px; color: var(--text-2); }
259
+ .checkbox-row input{ width:auto; accent-color: var(--teal); }
260
+
261
+ .btn{
262
+ display:inline-flex; align-items:center; gap:8px;
263
+ background: var(--amber);
264
+ color: #1a1108;
265
+ border: none;
266
+ border-radius: var(--radius-sm);
267
+ padding: 10px 18px;
268
+ font-size: 13.5px;
269
+ font-weight: 600;
270
+ transition: transform .12s, box-shadow .12s, opacity .12s;
271
+ }
272
+ .btn:hover{ transform: translateY(-1px); box-shadow: 0 6px 18px -8px var(--amber-dim); }
273
+ .btn:active{ transform: translateY(0); }
274
+ .btn:disabled{ opacity:.55; cursor: default; transform:none; }
275
+ .btn-ghost{
276
+ background: transparent; color: var(--text-2); border: 1px solid var(--border);
277
+ }
278
+ .btn-ghost:hover{ color: var(--text-1); border-color: var(--text-3); }
279
+ .btn-sm{ padding: 7px 12px; font-size: 12.5px; }
280
+
281
+ .btn-row{ display:flex; gap:10px; align-items:center; flex-wrap: wrap; }
282
+
283
+ .spinner{
284
+ width:14px; height:14px; border-radius:50%;
285
+ border: 2px solid rgba(0,0,0,.25); border-top-color: #1a1108;
286
+ animation: spin .7s linear infinite;
287
+ }
288
+ @keyframes spin{ to{ transform: rotate(360deg); } }
289
+
290
+ /* ============================================================
291
+ Steps output
292
+ ============================================================ */
293
+ .steps{ display:flex; flex-direction:column; gap: 16px; }
294
+ .step{
295
+ opacity: 0; transform: translateY(8px);
296
+ border-left: 2px solid var(--border);
297
+ padding-left: 16px;
298
+ transition: opacity .4s ease, transform .4s ease;
299
+ }
300
+ .step.show{ opacity:1; transform:none; }
301
+ .step-label{ font-family: var(--font-mono); font-size: 11.5px; color: var(--amber); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px; }
302
+ .step-body{ color: var(--text-2); font-size: 13.5px; }
303
+
304
+ /* token chips */
305
+ .chip-row{ display:flex; flex-wrap:wrap; gap:7px; }
306
+ .chip{
307
+ font-family: var(--font-mono); font-size: 12.5px;
308
+ background: var(--surface-2); border: 1px solid var(--border);
309
+ border-radius: 999px; padding: 5px 11px; color: var(--text-1);
310
+ opacity: 0; transform: scale(.85);
311
+ animation: chipIn .3s ease forwards;
312
+ }
313
+ @keyframes chipIn{ to{ opacity:1; transform:none; } }
314
+ .chip.amber{ border-color: var(--amber-dim); background: var(--amber-dim); color: var(--amber); }
315
+ .chip.teal{ border-color: var(--teal-dim); background: var(--teal-dim); color: var(--teal); }
316
+ .chip.pink{ border-color: var(--pink-dim); background: var(--pink-dim); color: var(--pink); }
317
+ .chip.violet{ border-color: var(--violet-dim); background: var(--violet-dim); color: var(--violet); }
318
+ .chip.muted{ color: var(--text-3); }
319
+
320
+ /* matrix tables */
321
+ .table-wrap{ overflow-x:auto; border-radius: var(--radius-md); border: 1px solid var(--border-soft); }
322
+ table.matrix{ border-collapse: collapse; width: 100%; font-family: var(--font-mono); font-size: 12.5px; }
323
+ table.matrix th, table.matrix td{
324
+ padding: 8px 11px; text-align:center; border-bottom: 1px solid var(--border-soft);
325
+ border-right: 1px solid var(--border-soft); white-space: nowrap;
326
+ }
327
+ table.matrix th{ background: var(--surface-2); color: var(--text-2); font-weight:500; }
328
+ table.matrix td.row-head{ background: var(--surface-2); color: var(--text-2); text-align:left; font-weight:500; }
329
+ table.matrix tr:last-child td{ border-bottom:none; }
330
+ table.matrix th:last-child, table.matrix td:last-child{ border-right:none; }
331
+ .cell{
332
+ opacity:0; animation: cellIn .3s ease forwards;
333
+ }
334
+ @keyframes cellIn{ to{ opacity:1; } }
335
+ .cell-fill{ display:inline-block; min-width: 22px; padding: 2px 6px; border-radius: 5px; }
336
+
337
+ /* heat coloring applied inline via JS rgba */
338
+
339
+ .formula{
340
+ font-family: var(--font-mono);
341
+ background: var(--bg-grid);
342
+ border: 1px solid var(--border-soft);
343
+ border-radius: var(--radius-md);
344
+ padding: 14px 18px;
345
+ font-size: 13.5px;
346
+ color: var(--teal);
347
+ overflow-x:auto;
348
+ }
349
+ .formula .dim{ color: var(--text-3); }
350
+
351
+ .kv-list{ display:flex; flex-direction:column; gap:6px; }
352
+ .kv-row{ display:flex; justify-content:space-between; gap:12px; font-family: var(--font-mono); font-size: 12.5px; padding: 6px 10px; border-radius: 6px; background: var(--bg-grid); }
353
+ .kv-row .k{ color: var(--text-2); }
354
+ .kv-row .v{ color: var(--teal); font-weight:600; }
355
+
356
+ .callout{
357
+ border-radius: var(--radius-md);
358
+ border: 1px solid var(--border);
359
+ background: var(--surface-2);
360
+ padding: 12px 14px;
361
+ font-size: 13px;
362
+ color: var(--text-2);
363
+ }
364
+ .callout strong{ color: var(--text-1); }
365
+ .callout.warn{ border-color: var(--pink-dim); background: var(--pink-dim); color: #ffd9ea; }
366
+ .callout.warn strong{ color: var(--pink); }
367
+
368
+ .two-col{ display:grid; grid-template-columns: 1fr 1fr; gap: 18px; }
369
+ @media (max-width: 860px){ .two-col{ grid-template-columns: 1fr; } }
370
+
371
+ .legend{ display:flex; gap:16px; flex-wrap:wrap; font-size: 12px; color: var(--text-3); margin-top:10px; }
372
+ .legend span{ display:inline-flex; align-items:center; gap:6px; }
373
+ .legend .sw{ width:12px; height:12px; border-radius:3px; display:inline-block; }
374
+
375
+ .empty-hint{ color: var(--text-3); font-size: 13px; font-style: italic; }
376
+
377
+ .compare-table{ width:100%; border-collapse: collapse; font-size: 13px; }
378
+ .compare-table th, .compare-table td{ padding: 9px 12px; border-bottom: 1px solid var(--border-soft); text-align:left; }
379
+ .compare-table th{ color: var(--text-3); font-family: var(--font-mono); font-size: 11px; text-transform:uppercase; letter-spacing:.04em; }
380
+ .compare-table td{ color: var(--text-2); }
381
+ .compare-table tr:hover td{ background: var(--surface-2); }
382
+
383
+ /* scatter plot */
384
+ .scatter-wrap{ background: var(--bg-grid); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 8px; }
385
+ .scatter-wrap svg text{ font-family: var(--font-mono); }
386
+
387
+ /* overview cards */
388
+ .tech-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 8px; }
389
+ @media (max-width: 900px){ .tech-grid{ grid-template-columns: repeat(2,1fr); } }
390
+ @media (max-width: 600px){ .tech-grid{ grid-template-columns: 1fr; } }
391
+ .tech-card{
392
+ border: 1px solid var(--border-soft);
393
+ background: var(--surface);
394
+ border-radius: var(--radius-md);
395
+ padding: 16px;
396
+ text-align:left;
397
+ color: var(--text-2);
398
+ transition: border-color .15s, transform .15s;
399
+ }
400
+ .tech-card:hover{ border-color: var(--amber-dim); transform: translateY(-2px); }
401
+ .tech-card .n{ font-family: var(--font-mono); color: var(--amber); font-size: 11px; }
402
+ .tech-card h4{ margin: 6px 0 6px; font-size: 15px; color: var(--text-1); }
403
+ .tech-card p{ margin:0; font-size: 12.5px; color: var(--text-3); }
404
+
405
+ footer.colophon{ margin-top: 50px; padding-top: 18px; border-top: 1px solid var(--border-soft); color: var(--text-3); font-size: 12px; }
406
+
407
+ /* responsive sidebar */
408
+ @media (max-width: 880px){
409
+ .app{ grid-template-columns: 1fr; }
410
+ .sidebar{ position: relative; height: auto; display:flex; flex-direction: column; }
411
+ .main{ padding: 26px 18px 60px; }
412
+ }