@plasius/gpu-demo-viewer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/styles.css ADDED
@@ -0,0 +1,448 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --paper: #f3efe7;
4
+ --ink: #1f1913;
5
+ --muted: #67584a;
6
+ --accent: #a95a33;
7
+ --accent-strong: #7e3a19;
8
+ --accent-cool: #296b7c;
9
+ --panel: rgba(255, 255, 255, 0.78);
10
+ --panel-strong: rgba(255, 255, 255, 0.9);
11
+ --border: rgba(31, 25, 19, 0.1);
12
+ --shadow: 0 24px 54px rgba(55, 39, 23, 0.16);
13
+ --success: #245f46;
14
+ --warn: #915f1f;
15
+ --error: #8a2d2d;
16
+ font-family: "Fraunces", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif;
17
+ }
18
+
19
+ * {
20
+ box-sizing: border-box;
21
+ }
22
+
23
+ body {
24
+ margin: 0;
25
+ min-height: 100vh;
26
+ color: var(--ink);
27
+ background:
28
+ radial-gradient(circle at top left, rgba(255, 248, 234, 0.95), transparent 34%),
29
+ radial-gradient(circle at right 20%, rgba(211, 169, 127, 0.28), transparent 28%),
30
+ linear-gradient(180deg, #f7f3eb 0%, #ead9c7 52%, #dfc3ab 100%);
31
+ }
32
+
33
+ code,
34
+ pre,
35
+ input,
36
+ button,
37
+ a.action {
38
+ font-family: "JetBrains Mono", "SFMono-Regular", "Consolas", monospace;
39
+ }
40
+
41
+ .app {
42
+ width: min(1440px, calc(100vw - 32px));
43
+ margin: 0 auto;
44
+ padding: 28px 0 40px;
45
+ display: grid;
46
+ gap: 20px;
47
+ }
48
+
49
+ .hero,
50
+ .toolbar,
51
+ .layout {
52
+ display: grid;
53
+ gap: 20px;
54
+ }
55
+
56
+ .hero {
57
+ grid-template-columns: minmax(0, 1.6fr) minmax(320px, 0.9fr);
58
+ align-items: start;
59
+ }
60
+
61
+ .eyebrow,
62
+ .section-eyebrow,
63
+ .preview-label {
64
+ margin: 0;
65
+ text-transform: uppercase;
66
+ letter-spacing: 0.18em;
67
+ font-size: 12px;
68
+ color: rgba(31, 25, 19, 0.58);
69
+ }
70
+
71
+ .hero h1,
72
+ .catalog h2,
73
+ .viewer h2 {
74
+ margin: 0;
75
+ letter-spacing: 0.01em;
76
+ }
77
+
78
+ .hero h1 {
79
+ font-size: clamp(2.8rem, 5vw, 4.6rem);
80
+ line-height: 0.95;
81
+ }
82
+
83
+ .lead {
84
+ max-width: 760px;
85
+ margin: 14px 0 0;
86
+ color: var(--muted);
87
+ font-size: 1.04rem;
88
+ line-height: 1.7;
89
+ }
90
+
91
+ .runtime-card,
92
+ .panel {
93
+ border: 1px solid var(--border);
94
+ border-radius: 24px;
95
+ background: var(--panel);
96
+ box-shadow: var(--shadow);
97
+ backdrop-filter: blur(12px);
98
+ }
99
+
100
+ .runtime-card {
101
+ padding: 18px 20px;
102
+ display: grid;
103
+ gap: 12px;
104
+ align-content: start;
105
+ }
106
+
107
+ .runtime-badge {
108
+ width: fit-content;
109
+ margin: 0;
110
+ padding: 8px 12px;
111
+ border-radius: 999px;
112
+ background: rgba(41, 107, 124, 0.12);
113
+ color: var(--accent-cool);
114
+ font-weight: 700;
115
+ letter-spacing: 0.02em;
116
+ }
117
+
118
+ .runtime-badge[data-tone="error"] {
119
+ background: rgba(138, 45, 45, 0.12);
120
+ color: var(--error);
121
+ }
122
+
123
+ .runtime-badge[data-tone="success"] {
124
+ background: rgba(36, 95, 70, 0.12);
125
+ color: var(--success);
126
+ }
127
+
128
+ .runtime-details {
129
+ margin: 0;
130
+ color: var(--muted);
131
+ line-height: 1.6;
132
+ }
133
+
134
+ .toolbar {
135
+ grid-template-columns: minmax(260px, 1fr) minmax(0, 2fr);
136
+ align-items: end;
137
+ }
138
+
139
+ .search-field {
140
+ display: grid;
141
+ gap: 8px;
142
+ font-size: 14px;
143
+ }
144
+
145
+ .search-field span {
146
+ color: var(--muted);
147
+ }
148
+
149
+ .search-field input {
150
+ width: 100%;
151
+ border: 1px solid rgba(31, 25, 19, 0.14);
152
+ border-radius: 16px;
153
+ padding: 14px 16px;
154
+ background: rgba(255, 255, 255, 0.72);
155
+ color: var(--ink);
156
+ }
157
+
158
+ .filters {
159
+ display: flex;
160
+ flex-wrap: wrap;
161
+ gap: 10px;
162
+ }
163
+
164
+ .filter,
165
+ .action {
166
+ border: 1px solid rgba(31, 25, 19, 0.14);
167
+ border-radius: 999px;
168
+ padding: 11px 14px;
169
+ background: rgba(255, 255, 255, 0.7);
170
+ color: var(--ink);
171
+ text-decoration: none;
172
+ cursor: pointer;
173
+ transition:
174
+ transform 140ms ease,
175
+ background 140ms ease,
176
+ border-color 140ms ease,
177
+ color 140ms ease;
178
+ }
179
+
180
+ .filter:hover,
181
+ .action:hover {
182
+ transform: translateY(-1px);
183
+ border-color: rgba(31, 25, 19, 0.26);
184
+ }
185
+
186
+ .filter.is-active,
187
+ .action {
188
+ background: linear-gradient(135deg, var(--accent) 0%, var(--accent-strong) 100%);
189
+ border-color: transparent;
190
+ color: #fff7ef;
191
+ }
192
+
193
+ .action--ghost {
194
+ background: rgba(255, 255, 255, 0.7);
195
+ border-color: rgba(31, 25, 19, 0.14);
196
+ color: var(--ink);
197
+ }
198
+
199
+ .layout {
200
+ grid-template-columns: minmax(320px, 0.8fr) minmax(0, 1.4fr);
201
+ align-items: start;
202
+ }
203
+
204
+ .catalog,
205
+ .viewer {
206
+ padding: 18px;
207
+ }
208
+
209
+ .catalog {
210
+ display: grid;
211
+ gap: 16px;
212
+ }
213
+
214
+ .catalog__header {
215
+ display: flex;
216
+ justify-content: space-between;
217
+ gap: 12px;
218
+ align-items: end;
219
+ }
220
+
221
+ .catalog__summary {
222
+ margin: 0;
223
+ color: var(--muted);
224
+ font-size: 14px;
225
+ }
226
+
227
+ .demo-list {
228
+ display: grid;
229
+ gap: 10px;
230
+ max-height: calc(100vh - 280px);
231
+ overflow: auto;
232
+ padding-right: 4px;
233
+ }
234
+
235
+ .demo-card {
236
+ width: 100%;
237
+ border: 1px solid rgba(31, 25, 19, 0.1);
238
+ border-radius: 18px;
239
+ padding: 14px;
240
+ background: rgba(255, 255, 255, 0.76);
241
+ text-align: left;
242
+ cursor: pointer;
243
+ display: grid;
244
+ gap: 10px;
245
+ transition:
246
+ transform 160ms ease,
247
+ border-color 160ms ease,
248
+ background 160ms ease,
249
+ box-shadow 160ms ease;
250
+ }
251
+
252
+ .demo-card:hover,
253
+ .demo-card.is-selected {
254
+ transform: translateY(-1px);
255
+ border-color: rgba(31, 25, 19, 0.22);
256
+ background: var(--panel-strong);
257
+ box-shadow: 0 14px 28px rgba(42, 30, 18, 0.1);
258
+ }
259
+
260
+ .demo-card__top,
261
+ .demo-card__tags {
262
+ display: flex;
263
+ flex-wrap: wrap;
264
+ gap: 8px;
265
+ align-items: center;
266
+ justify-content: space-between;
267
+ }
268
+
269
+ .demo-card__name {
270
+ margin: 0;
271
+ font-size: 1.08rem;
272
+ }
273
+
274
+ .demo-card__summary {
275
+ margin: 0;
276
+ color: var(--muted);
277
+ line-height: 1.5;
278
+ font-size: 0.94rem;
279
+ }
280
+
281
+ .tag {
282
+ width: fit-content;
283
+ border-radius: 999px;
284
+ padding: 6px 9px;
285
+ background: rgba(41, 107, 124, 0.1);
286
+ color: var(--accent-cool);
287
+ font-size: 12px;
288
+ letter-spacing: 0.04em;
289
+ text-transform: uppercase;
290
+ }
291
+
292
+ .tag--browser {
293
+ background: rgba(36, 95, 70, 0.1);
294
+ color: var(--success);
295
+ }
296
+
297
+ .tag--example {
298
+ background: rgba(169, 90, 51, 0.1);
299
+ color: var(--accent);
300
+ }
301
+
302
+ .viewer {
303
+ display: grid;
304
+ gap: 18px;
305
+ }
306
+
307
+ .viewer__header {
308
+ display: flex;
309
+ justify-content: space-between;
310
+ align-items: start;
311
+ gap: 16px;
312
+ }
313
+
314
+ .viewer__description,
315
+ .preview-hint {
316
+ margin: 8px 0 0;
317
+ color: var(--muted);
318
+ line-height: 1.6;
319
+ }
320
+
321
+ .viewer__actions {
322
+ display: flex;
323
+ flex-wrap: wrap;
324
+ gap: 10px;
325
+ justify-content: flex-end;
326
+ }
327
+
328
+ .details-grid {
329
+ display: grid;
330
+ grid-template-columns: repeat(2, minmax(0, 1fr));
331
+ gap: 14px;
332
+ }
333
+
334
+ .detail-card {
335
+ border: 1px solid rgba(31, 25, 19, 0.08);
336
+ border-radius: 18px;
337
+ background: rgba(255, 255, 255, 0.6);
338
+ padding: 14px;
339
+ }
340
+
341
+ .detail-card h3 {
342
+ margin: 0 0 10px;
343
+ font-size: 1rem;
344
+ }
345
+
346
+ .detail-card--wide {
347
+ grid-column: 1 / -1;
348
+ }
349
+
350
+ .detail-list {
351
+ margin: 0;
352
+ display: grid;
353
+ gap: 10px;
354
+ }
355
+
356
+ .detail-list div {
357
+ display: grid;
358
+ gap: 4px;
359
+ }
360
+
361
+ .detail-list dt {
362
+ color: rgba(31, 25, 19, 0.54);
363
+ font-size: 12px;
364
+ text-transform: uppercase;
365
+ letter-spacing: 0.08em;
366
+ }
367
+
368
+ .detail-list dd {
369
+ margin: 0;
370
+ line-height: 1.5;
371
+ }
372
+
373
+ .command-block {
374
+ margin: 0;
375
+ overflow: auto;
376
+ padding: 14px;
377
+ border-radius: 14px;
378
+ background: #181410;
379
+ color: #fef4e8;
380
+ line-height: 1.45;
381
+ }
382
+
383
+ .notes-list,
384
+ .example-files {
385
+ margin: 0;
386
+ padding-left: 18px;
387
+ color: var(--muted);
388
+ line-height: 1.6;
389
+ }
390
+
391
+ .preview-pane,
392
+ .example-pane {
393
+ display: grid;
394
+ gap: 12px;
395
+ }
396
+
397
+ .preview-pane__header {
398
+ display: flex;
399
+ justify-content: space-between;
400
+ gap: 12px;
401
+ align-items: baseline;
402
+ flex-wrap: wrap;
403
+ }
404
+
405
+ .demo-frame {
406
+ width: 100%;
407
+ min-height: 720px;
408
+ border: 1px solid rgba(31, 25, 19, 0.14);
409
+ border-radius: 20px;
410
+ background: rgba(255, 255, 255, 0.72);
411
+ }
412
+
413
+ .example-files a {
414
+ color: var(--accent-strong);
415
+ }
416
+
417
+ .empty-state {
418
+ border: 1px dashed rgba(31, 25, 19, 0.18);
419
+ border-radius: 18px;
420
+ padding: 18px;
421
+ color: var(--muted);
422
+ background: rgba(255, 255, 255, 0.45);
423
+ }
424
+
425
+ @media (max-width: 1100px) {
426
+ .hero,
427
+ .toolbar,
428
+ .layout,
429
+ .details-grid {
430
+ grid-template-columns: 1fr;
431
+ }
432
+
433
+ .demo-list {
434
+ max-height: none;
435
+ }
436
+
437
+ .viewer__header {
438
+ flex-direction: column;
439
+ }
440
+
441
+ .viewer__actions {
442
+ justify-content: flex-start;
443
+ }
444
+
445
+ .demo-frame {
446
+ min-height: 540px;
447
+ }
448
+ }