@magpiecloud/mags 1.8.14 → 1.8.16

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.
Files changed (44) hide show
  1. package/README.md +95 -378
  2. package/bin/mags.js +0 -0
  3. package/index.js +2 -0
  4. package/package.json +19 -4
  5. package/API.md +0 -388
  6. package/Mags-API.postman_collection.json +0 -374
  7. package/QUICKSTART.md +0 -295
  8. package/deploy-page.sh +0 -171
  9. package/mags +0 -0
  10. package/mags.sh +0 -270
  11. package/nodejs/README.md +0 -197
  12. package/nodejs/bin/mags.js +0 -1146
  13. package/nodejs/index.js +0 -596
  14. package/nodejs/package.json +0 -42
  15. package/python/INTEGRATION.md +0 -800
  16. package/python/README.md +0 -161
  17. package/python/dist/magpie_mags-1.3.6-py3-none-any.whl +0 -0
  18. package/python/dist/magpie_mags-1.3.6.tar.gz +0 -0
  19. package/python/examples/demo.py +0 -181
  20. package/python/pyproject.toml +0 -39
  21. package/python/src/magpie_mags.egg-info/PKG-INFO +0 -186
  22. package/python/src/magpie_mags.egg-info/SOURCES.txt +0 -9
  23. package/python/src/magpie_mags.egg-info/dependency_links.txt +0 -1
  24. package/python/src/magpie_mags.egg-info/requires.txt +0 -1
  25. package/python/src/magpie_mags.egg-info/top_level.txt +0 -1
  26. package/python/src/mags/__init__.py +0 -6
  27. package/python/src/mags/client.py +0 -523
  28. package/python/test_sdk.py +0 -78
  29. package/skill.md +0 -153
  30. package/website/api.html +0 -1095
  31. package/website/claude-skill.html +0 -481
  32. package/website/cookbook/hn-marketing.html +0 -410
  33. package/website/cookbook/hn-marketing.sh +0 -42
  34. package/website/cookbook.html +0 -282
  35. package/website/docs.html +0 -677
  36. package/website/env.js +0 -4
  37. package/website/index.html +0 -801
  38. package/website/llms.txt +0 -334
  39. package/website/login.html +0 -108
  40. package/website/mags.md +0 -210
  41. package/website/script.js +0 -453
  42. package/website/styles.css +0 -1075
  43. package/website/tokens.html +0 -169
  44. package/website/usage.html +0 -185
@@ -1,1075 +0,0 @@
1
- @import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");
2
-
3
- :root {
4
- color-scheme: dark;
5
- --bg: #090c12;
6
- --bg-muted: #111723;
7
- --surface: rgba(22, 29, 42, 0.95);
8
- --surface-muted: rgba(15, 20, 28, 0.78);
9
- --text: #f8fafc;
10
- --text-muted: #94a3b8;
11
- --border: rgba(148, 163, 184, 0.16);
12
- --accent: #2f9b66;
13
- --accent-strong: #3dbd7e;
14
- --accent-soft: rgba(47, 155, 102, 0.16);
15
- --shadow: 0 24px 60px rgba(8, 15, 30, 0.45);
16
- --radius: 18px;
17
- --radius-sm: 12px;
18
- --max-width: 1120px;
19
- --sans: "Manrope", "Helvetica Neue", "Segoe UI", sans-serif;
20
- --mono: "JetBrains Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
21
- }
22
-
23
- * {
24
- box-sizing: border-box;
25
- }
26
-
27
- body {
28
- margin: 0;
29
- font-family: var(--sans);
30
- background: var(--bg);
31
- color: var(--text);
32
- line-height: 1.7;
33
- -webkit-font-smoothing: antialiased;
34
- }
35
-
36
- a {
37
- color: inherit;
38
- text-decoration: none;
39
- }
40
-
41
- a:hover {
42
- color: var(--accent-strong);
43
- }
44
-
45
- .backdrop {
46
- position: fixed;
47
- inset: 0;
48
- z-index: -1;
49
- background:
50
- radial-gradient(circle at 18% 20%, rgba(47, 155, 102, 0.12), transparent 45%),
51
- radial-gradient(circle at 82% 8%, rgba(35, 112, 74, 0.14), transparent 55%),
52
- var(--bg);
53
- }
54
-
55
- .container {
56
- width: min(100% - 2.5rem, var(--max-width));
57
- margin: 0 auto;
58
- }
59
-
60
- .site-header {
61
- position: sticky;
62
- top: 0;
63
- background: rgba(9, 12, 18, 0.88);
64
- border-bottom: 1px solid var(--border);
65
- backdrop-filter: blur(16px);
66
- z-index: 5;
67
- }
68
-
69
- .nav {
70
- display: flex;
71
- align-items: center;
72
- justify-content: space-between;
73
- padding: 1.1rem 0;
74
- gap: 1.5rem;
75
- }
76
-
77
- .brand {
78
- display: flex;
79
- flex-direction: column;
80
- gap: 0.2rem;
81
- }
82
-
83
- .logo {
84
- font-size: 1.45rem;
85
- font-weight: 700;
86
- letter-spacing: 0.03em;
87
- }
88
-
89
- .tag {
90
- font-size: 0.85rem;
91
- color: var(--text-muted);
92
- }
93
-
94
- .nav-links {
95
- display: flex;
96
- gap: 1.4rem;
97
- font-size: 0.95rem;
98
- color: var(--text-muted);
99
- }
100
-
101
- .nav-cta {
102
- display: flex;
103
- }
104
-
105
- .button {
106
- display: inline-flex;
107
- align-items: center;
108
- justify-content: center;
109
- padding: 0.75rem 1.5rem;
110
- border-radius: 999px;
111
- background: var(--accent);
112
- color: #ffffff;
113
- font-weight: 600;
114
- border: 1px solid transparent;
115
- transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
116
- box-shadow: 0 14px 30px rgba(47, 155, 102, 0.2);
117
- }
118
-
119
- .button.full {
120
- width: 100%;
121
- }
122
-
123
- .button:hover {
124
- transform: translateY(-1px);
125
- background: var(--accent-strong);
126
- color: #ffffff;
127
- }
128
-
129
- .button.ghost {
130
- background: transparent;
131
- color: var(--text);
132
- border: 1px solid var(--border);
133
- box-shadow: none;
134
- }
135
-
136
- .button.ghost:hover {
137
- border-color: var(--accent);
138
- color: var(--accent-strong);
139
- transform: translateY(-1px);
140
- }
141
-
142
- .hero {
143
- padding: 5.5rem 0 3rem;
144
- }
145
-
146
- .hero-grid {
147
- display: grid;
148
- grid-template-columns: repeat(2, minmax(0, 1fr));
149
- gap: 3.5rem;
150
- align-items: center;
151
- }
152
-
153
- .hero-copy h1 {
154
- font-size: clamp(2.4rem, 4vw, 3.4rem);
155
- line-height: 1.05;
156
- margin: 1rem 0 1.1rem;
157
- }
158
-
159
- .pill {
160
- display: inline-flex;
161
- align-items: center;
162
- padding: 0.2rem 0.7rem;
163
- border-radius: 999px;
164
- background: var(--accent-soft);
165
- color: var(--accent-strong);
166
- font-size: 0.75rem;
167
- font-weight: 600;
168
- letter-spacing: 0.08em;
169
- text-transform: uppercase;
170
- }
171
-
172
- .lead {
173
- color: var(--text-muted);
174
- font-size: 1.05rem;
175
- max-width: 520px;
176
- }
177
-
178
- .hero-actions {
179
- display: flex;
180
- gap: 1rem;
181
- margin: 1.8rem 0 1.2rem;
182
- flex-wrap: wrap;
183
- }
184
-
185
- .hero-meta {
186
- display: flex;
187
- flex-direction: column;
188
- gap: 0.3rem;
189
- color: var(--text-muted);
190
- font-size: 0.95rem;
191
- }
192
-
193
- .auth-status {
194
- margin-top: 1rem;
195
- color: var(--text-muted);
196
- font-size: 0.9rem;
197
- }
198
-
199
- .hero-card {
200
- padding: 1.8rem;
201
- border-radius: var(--radius);
202
- background: var(--surface);
203
- border: 1px solid var(--border);
204
- box-shadow: var(--shadow);
205
- }
206
-
207
- .card-header {
208
- display: flex;
209
- justify-content: space-between;
210
- align-items: center;
211
- margin-bottom: 1rem;
212
- color: var(--text-muted);
213
- font-size: 0.9rem;
214
- }
215
-
216
- .chip {
217
- padding: 0.2rem 0.65rem;
218
- border-radius: 999px;
219
- border: 1px solid var(--border);
220
- font-size: 0.75rem;
221
- text-transform: uppercase;
222
- letter-spacing: 0.08em;
223
- }
224
-
225
- .card-note {
226
- margin: 0.9rem 0 0;
227
- color: var(--text-muted);
228
- }
229
-
230
- .section {
231
- padding: 3.5rem 0;
232
- }
233
-
234
- .section-title p {
235
- text-transform: uppercase;
236
- letter-spacing: 0.08em;
237
- color: var(--accent-strong);
238
- font-size: 0.75rem;
239
- margin: 0 0 0.6rem;
240
- }
241
-
242
- .section-title h2 {
243
- margin: 0 0 2rem;
244
- font-size: clamp(1.7rem, 3vw, 2.4rem);
245
- }
246
-
247
- .grid {
248
- display: grid;
249
- gap: 1.6rem;
250
- }
251
-
252
- .section .grid + .grid {
253
- margin-top: 1.6rem;
254
- }
255
-
256
- .grid.cards {
257
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
258
- }
259
-
260
- .grid.split {
261
- grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
262
- }
263
-
264
- .auth-card {
265
- display: grid;
266
- gap: 0.8rem;
267
- }
268
-
269
- .auth-page {
270
- padding: 4.5rem 0 5.5rem;
271
- }
272
-
273
- .auth-layout {
274
- display: flex;
275
- justify-content: center;
276
- }
277
-
278
- .auth-shell {
279
- width: min(100%, 420px);
280
- background: var(--surface);
281
- border: 1px solid var(--border);
282
- border-radius: var(--radius);
283
- padding: 2.2rem;
284
- box-shadow: var(--shadow);
285
- display: grid;
286
- gap: 1.4rem;
287
- }
288
-
289
- .auth-title {
290
- margin: 0.6rem 0 0.4rem;
291
- font-size: 2.1rem;
292
- line-height: 1.1;
293
- }
294
-
295
- .auth-subtitle {
296
- margin: 0;
297
- color: var(--text-muted);
298
- }
299
-
300
- .auth-divider {
301
- position: relative;
302
- text-align: center;
303
- color: var(--text-muted);
304
- font-size: 0.85rem;
305
- }
306
-
307
- .auth-divider::before,
308
- .auth-divider::after {
309
- content: '';
310
- position: absolute;
311
- top: 50%;
312
- width: 40%;
313
- height: 1px;
314
- background: var(--border);
315
- }
316
-
317
- .auth-divider::before {
318
- left: 0;
319
- }
320
-
321
- .auth-divider::after {
322
- right: 0;
323
- }
324
-
325
- .login-form,
326
- .token-form {
327
- display: grid;
328
- gap: 0.9rem;
329
- }
330
-
331
- .form-group {
332
- display: grid;
333
- gap: 0.4rem;
334
- }
335
-
336
- .form-label {
337
- font-size: 0.85rem;
338
- color: var(--text-muted);
339
- }
340
-
341
- .input {
342
- border: 1px solid var(--border);
343
- border-radius: 12px;
344
- padding: 0.7rem 0.9rem;
345
- font-size: 0.95rem;
346
- font-family: var(--sans);
347
- background: rgba(17, 24, 39, 0.65);
348
- color: var(--text);
349
- }
350
-
351
- .input:focus {
352
- outline: none;
353
- border-color: var(--accent);
354
- box-shadow: 0 0 0 3px rgba(47, 155, 102, 0.2);
355
- }
356
-
357
- .form-message {
358
- margin: 0;
359
- font-size: 0.85rem;
360
- color: var(--text-muted);
361
- }
362
-
363
- .form-links {
364
- display: flex;
365
- justify-content: space-between;
366
- font-size: 0.85rem;
367
- color: var(--text-muted);
368
- }
369
-
370
- .stats-grid {
371
- display: grid;
372
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
373
- gap: 1.4rem;
374
- }
375
-
376
- .stat-card {
377
- background: var(--surface);
378
- border: 1px solid var(--border);
379
- border-radius: var(--radius-sm);
380
- padding: 1.4rem 1.6rem;
381
- box-shadow: var(--shadow);
382
- }
383
-
384
- .stat-label {
385
- margin: 0;
386
- font-size: 0.85rem;
387
- color: var(--text-muted);
388
- }
389
-
390
- .stat-value {
391
- margin: 0.4rem 0 0.2rem;
392
- font-size: 1.8rem;
393
- font-weight: 600;
394
- }
395
-
396
- .stat-note {
397
- margin: 0;
398
- color: var(--text-muted);
399
- font-size: 0.9rem;
400
- }
401
-
402
- .recipe-list {
403
- display: grid;
404
- gap: 1.2rem;
405
- }
406
-
407
- .recipe-item {
408
- background: var(--surface);
409
- border: 1px solid var(--border);
410
- border-radius: var(--radius-sm);
411
- padding: 1.4rem 1.6rem;
412
- box-shadow: var(--shadow);
413
- }
414
-
415
- .recipe-header {
416
- display: flex;
417
- align-items: center;
418
- justify-content: space-between;
419
- gap: 1rem;
420
- margin-bottom: 0.6rem;
421
- }
422
-
423
- .recipe-header h3 {
424
- margin: 0;
425
- font-size: 1.05rem;
426
- }
427
-
428
- .card,
429
- .panel,
430
- .card.wide {
431
- background: var(--surface);
432
- border: 1px solid var(--border);
433
- border-radius: var(--radius-sm);
434
- padding: 1.4rem 1.6rem;
435
- box-shadow: var(--shadow);
436
- }
437
-
438
- .card.wide {
439
- margin-top: 1.6rem;
440
- }
441
-
442
- .card h3,
443
- .panel h3 {
444
- margin-top: 0;
445
- font-size: 1.05rem;
446
- }
447
-
448
- .panel {
449
- background: var(--surface);
450
- }
451
-
452
- .list {
453
- margin: 0;
454
- padding-left: 1.1rem;
455
- color: var(--text-muted);
456
- }
457
-
458
- .list li {
459
- margin-bottom: 0.6rem;
460
- }
461
-
462
- .list code {
463
- color: var(--accent-strong);
464
- }
465
-
466
- .command-list {
467
- display: grid;
468
- gap: 0.9rem;
469
- }
470
-
471
- .command-item {
472
- padding-bottom: 0.9rem;
473
- border-bottom: 1px solid var(--border);
474
- }
475
-
476
- .command-item:last-child {
477
- border-bottom: none;
478
- padding-bottom: 0;
479
- }
480
-
481
- .command-row {
482
- display: flex;
483
- align-items: center;
484
- justify-content: space-between;
485
- gap: 0.8rem;
486
- }
487
-
488
- .command-row code {
489
- color: var(--text);
490
- font-size: 0.95rem;
491
- }
492
-
493
- .command-item p {
494
- margin: 0.35rem 0 0;
495
- color: var(--text-muted);
496
- font-size: 0.95rem;
497
- }
498
-
499
- .copy-button {
500
- border: 1px solid var(--border);
501
- background: var(--surface);
502
- color: var(--text-muted);
503
- border-radius: 999px;
504
- font-size: 0.75rem;
505
- padding: 0.35rem 0.75rem;
506
- cursor: pointer;
507
- transition: border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
508
- }
509
-
510
- .copy-button:hover {
511
- border-color: var(--accent);
512
- color: var(--accent-strong);
513
- transform: translateY(-1px);
514
- }
515
-
516
- .copy-button.copied {
517
- border-color: var(--accent);
518
- color: var(--accent-strong);
519
- }
520
-
521
- .revoke-button {
522
- border: 1px solid rgba(248, 113, 113, 0.35);
523
- background: rgba(248, 113, 113, 0.08);
524
- color: #f87171;
525
- border-radius: 999px;
526
- font-size: 0.75rem;
527
- padding: 0.35rem 0.75rem;
528
- cursor: pointer;
529
- transition: border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
530
- }
531
-
532
- .revoke-button:hover {
533
- border-color: #f87171;
534
- color: #fca5a5;
535
- transform: translateY(-1px);
536
- }
537
-
538
- .table-wrap {
539
- border: 1px solid var(--border);
540
- border-radius: var(--radius-sm);
541
- background: var(--surface);
542
- box-shadow: var(--shadow);
543
- overflow: hidden;
544
- }
545
-
546
- .table-header,
547
- .table-row {
548
- display: grid;
549
- grid-template-columns: 1.2fr 1fr 1fr 1fr 0.7fr;
550
- gap: 1rem;
551
- padding: 0.9rem 1.2rem;
552
- align-items: center;
553
- font-size: 0.9rem;
554
- }
555
-
556
- .table-header {
557
- background: var(--bg-muted);
558
- color: var(--text-muted);
559
- text-transform: uppercase;
560
- letter-spacing: 0.08em;
561
- font-size: 0.72rem;
562
- font-weight: 600;
563
- }
564
-
565
- .table-row {
566
- border-top: 1px solid var(--border);
567
- color: var(--text);
568
- }
569
-
570
- .table-row.empty {
571
- color: var(--text-muted);
572
- }
573
-
574
- .status {
575
- display: inline-flex;
576
- align-items: center;
577
- justify-content: center;
578
- padding: 0.25rem 0.6rem;
579
- border-radius: 999px;
580
- font-size: 0.72rem;
581
- text-transform: uppercase;
582
- letter-spacing: 0.05em;
583
- background: var(--accent-soft);
584
- color: var(--accent-strong);
585
- }
586
-
587
- .status.error {
588
- background: rgba(248, 113, 113, 0.12);
589
- color: #f87171;
590
- }
591
-
592
- .status.pending,
593
- .status.sleeping {
594
- background: rgba(245, 158, 11, 0.15);
595
- color: #f59e0b;
596
- }
597
-
598
- .text-link {
599
- color: var(--accent-strong);
600
- font-weight: 600;
601
- }
602
-
603
- .token-result {
604
- display: grid;
605
- gap: 0.8rem;
606
- }
607
-
608
- .token-box {
609
- display: flex;
610
- align-items: center;
611
- justify-content: space-between;
612
- gap: 0.8rem;
613
- padding: 0.7rem 0.9rem;
614
- border: 1px dashed var(--border);
615
- border-radius: 12px;
616
- background: var(--surface-muted);
617
- font-family: var(--mono);
618
- font-size: 0.85rem;
619
- }
620
-
621
- .hidden {
622
- display: none !important;
623
- }
624
-
625
- .callout {
626
- margin-top: 1rem;
627
- padding: 0.8rem 1rem;
628
- border-radius: 12px;
629
- background: var(--accent-soft);
630
- border: 1px solid rgba(47, 155, 102, 0.25);
631
- color: var(--text-muted);
632
- }
633
-
634
- .stack {
635
- display: grid;
636
- gap: 1rem;
637
- }
638
-
639
- .label {
640
- margin: 0 0 0.4rem;
641
- font-size: 0.85rem;
642
- color: var(--text-muted);
643
- }
644
-
645
- pre {
646
- background: rgba(15, 20, 28, 0.78);
647
- border-radius: var(--radius-sm);
648
- padding: 0.9rem 1rem;
649
- border: 1px solid var(--border);
650
- font-family: var(--mono);
651
- font-size: 0.9rem;
652
- line-height: 1.6;
653
- white-space: pre-wrap;
654
- word-break: break-word;
655
- overflow: hidden;
656
- color: var(--text);
657
- }
658
-
659
- code {
660
- font-family: var(--mono);
661
- color: var(--accent-strong);
662
- }
663
-
664
- .site-footer {
665
- padding: 3rem 0 4rem;
666
- border-top: 1px solid var(--border);
667
- background: var(--bg-muted);
668
- }
669
-
670
- .footer-grid {
671
- display: grid;
672
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
673
- gap: 2rem;
674
- }
675
-
676
- .footer-links {
677
- display: grid;
678
- gap: 0.6rem;
679
- color: var(--text-muted);
680
- }
681
-
682
- [data-reveal] {
683
- opacity: 0;
684
- transform: translateY(16px);
685
- }
686
-
687
- [data-reveal].visible {
688
- opacity: 1;
689
- transform: translateY(0);
690
- transition: opacity 0.5s ease, transform 0.5s ease;
691
- }
692
-
693
- @media (max-width: 920px) {
694
- .nav-links {
695
- display: none;
696
- }
697
-
698
- .hero-grid {
699
- grid-template-columns: 1fr;
700
- }
701
-
702
- .hero-card {
703
- order: -1;
704
- }
705
- }
706
-
707
- @media (max-width: 700px) {
708
- .nav {
709
- flex-direction: column;
710
- align-items: flex-start;
711
- }
712
-
713
- .nav-cta {
714
- width: 100%;
715
- }
716
-
717
- .hero-actions {
718
- flex-direction: column;
719
- align-items: stretch;
720
- }
721
- }
722
-
723
- /* ── Tab bar ─────────────────────────────────────────────── */
724
-
725
- .tab-group {
726
- position: relative;
727
- }
728
-
729
- .tab-bar {
730
- display: flex;
731
- gap: 0.35rem;
732
- margin-bottom: 1.2rem;
733
- padding: 0.25rem;
734
- background: var(--bg-muted);
735
- border: 1px solid var(--border);
736
- border-radius: 10px;
737
- width: fit-content;
738
- }
739
-
740
- .tab-bar .tab {
741
- padding: 0.4rem 1rem;
742
- border-radius: 8px;
743
- font-size: 0.82rem;
744
- font-weight: 600;
745
- color: var(--text-muted);
746
- cursor: pointer;
747
- border: none;
748
- background: transparent;
749
- font-family: var(--sans);
750
- transition: color 0.15s, background 0.15s;
751
- }
752
-
753
- .tab-bar .tab:hover {
754
- color: var(--text);
755
- }
756
-
757
- .tab-bar .tab.active {
758
- background: var(--accent);
759
- color: #ffffff;
760
- box-shadow: 0 1px 4px rgba(47, 155, 102, 0.3);
761
- }
762
-
763
- .tab-content {
764
- display: none;
765
- }
766
-
767
- .tab-content.active {
768
- display: block;
769
- }
770
-
771
- /* ── Pattern cards (expandable) ─────────────────────────── */
772
-
773
- .pattern-list {
774
- display: grid;
775
- gap: 0.6rem;
776
- }
777
-
778
- .pattern-card {
779
- background: var(--surface);
780
- border: 1px solid var(--border);
781
- border-radius: var(--radius-sm);
782
- overflow: hidden;
783
- transition: box-shadow 0.2s;
784
- }
785
-
786
- .pattern-card:hover {
787
- box-shadow: 0 4px 16px rgba(8, 15, 30, 0.4);
788
- }
789
-
790
- .pattern-header {
791
- display: flex;
792
- align-items: center;
793
- justify-content: space-between;
794
- padding: 1rem 1.4rem;
795
- cursor: pointer;
796
- user-select: none;
797
- }
798
-
799
- .pattern-header h4 {
800
- margin: 0;
801
- font-size: 0.95rem;
802
- font-weight: 600;
803
- }
804
-
805
- .pattern-header .pattern-desc {
806
- margin: 0;
807
- color: var(--text-muted);
808
- font-size: 0.85rem;
809
- }
810
-
811
- .pattern-header .chevron {
812
- font-size: 0.8rem;
813
- color: var(--text-muted);
814
- transition: transform 0.2s;
815
- flex-shrink: 0;
816
- margin-left: 1rem;
817
- }
818
-
819
- .pattern-card.open .chevron {
820
- transform: rotate(180deg);
821
- }
822
-
823
- .pattern-body {
824
- display: none;
825
- padding: 0 1.4rem 1.2rem;
826
- }
827
-
828
- .pattern-card.open .pattern-body {
829
- display: block;
830
- }
831
-
832
- /* ── Reference tables ─────────────────────────────────── */
833
-
834
- .ref-section {
835
- margin-bottom: 2rem;
836
- }
837
-
838
- .ref-section h3 {
839
- margin: 0 0 0.75rem;
840
- font-size: 1rem;
841
- font-weight: 600;
842
- }
843
-
844
- .ref-table-wrap {
845
- border: 1px solid var(--border);
846
- border-radius: var(--radius-sm);
847
- overflow: hidden;
848
- background: var(--surface);
849
- }
850
-
851
- .ref-table {
852
- width: 100%;
853
- border-collapse: collapse;
854
- font-size: 0.88rem;
855
- }
856
-
857
- .ref-table thead {
858
- background: var(--bg-muted);
859
- }
860
-
861
- .ref-table th {
862
- text-align: left;
863
- padding: 0.65rem 1rem;
864
- font-weight: 600;
865
- font-size: 0.75rem;
866
- text-transform: uppercase;
867
- letter-spacing: 0.06em;
868
- color: var(--text-muted);
869
- }
870
-
871
- .ref-table td {
872
- padding: 0.6rem 1rem;
873
- border-top: 1px solid var(--border);
874
- vertical-align: top;
875
- color: var(--text-muted);
876
- }
877
-
878
- .ref-table td:first-child {
879
- white-space: nowrap;
880
- }
881
-
882
- .ref-table code {
883
- font-family: var(--mono);
884
- font-size: 0.82rem;
885
- background: rgba(15, 20, 28, 0.6);
886
- padding: 0.15rem 0.4rem;
887
- border-radius: 4px;
888
- }
889
-
890
- @media (max-width: 768px) {
891
- .ref-table td:first-child {
892
- white-space: normal;
893
- }
894
- }
895
-
896
- /* ── Inline tab bar (for endpoint cards in api.html) ───── */
897
-
898
- .code-tabs {
899
- margin-top: 1rem;
900
- }
901
-
902
- .code-tabs .tab-bar {
903
- margin-bottom: 0.6rem;
904
- }
905
-
906
- /* ── Docs layout ───────────────────────────────────────── */
907
-
908
- .docs-layout {
909
- display: grid;
910
- grid-template-columns: 240px 1fr;
911
- gap: 0;
912
- min-height: calc(100vh - 60px);
913
- }
914
-
915
- .docs-sidebar {
916
- position: sticky;
917
- top: 60px;
918
- height: calc(100vh - 60px);
919
- overflow-y: auto;
920
- padding: 1.5rem 0 2rem 0;
921
- border-right: 1px solid var(--border);
922
- scrollbar-width: thin;
923
- scrollbar-color: var(--accent-soft) transparent;
924
- }
925
-
926
- .docs-sidebar::-webkit-scrollbar {
927
- width: 4px;
928
- }
929
-
930
- .docs-sidebar::-webkit-scrollbar-thumb {
931
- background: var(--accent-soft);
932
- border-radius: 999px;
933
- }
934
-
935
- .docs-nav {
936
- display: flex;
937
- flex-direction: column;
938
- gap: 0.2rem;
939
- padding: 0 1rem;
940
- }
941
-
942
- .docs-nav-group {
943
- margin-bottom: 0.6rem;
944
- }
945
-
946
- .docs-nav-heading {
947
- font-size: 0.7rem;
948
- font-weight: 700;
949
- text-transform: uppercase;
950
- letter-spacing: 0.08em;
951
- color: var(--text-muted);
952
- padding: 0.6rem 0.75rem 0.3rem;
953
- margin: 0;
954
- }
955
-
956
- .docs-nav-link {
957
- display: block;
958
- padding: 0.35rem 0.75rem;
959
- border-radius: 8px;
960
- font-size: 0.85rem;
961
- color: var(--text-muted);
962
- transition: color 0.15s, background 0.15s;
963
- border-left: 2px solid transparent;
964
- }
965
-
966
- .docs-nav-link:hover {
967
- color: var(--text);
968
- background: rgba(148, 163, 184, 0.08);
969
- }
970
-
971
- .docs-nav-link.active {
972
- color: var(--accent-strong);
973
- background: var(--accent-soft);
974
- border-left-color: var(--accent);
975
- }
976
-
977
- .docs-content {
978
- padding: 2rem 2.5rem 4rem;
979
- max-width: 860px;
980
- }
981
-
982
- .docs-content h1 {
983
- font-size: 2rem;
984
- margin: 0 0 0.5rem;
985
- line-height: 1.15;
986
- }
987
-
988
- .docs-content > .lead {
989
- margin-bottom: 2rem;
990
- }
991
-
992
- .docs-section {
993
- padding-top: 2.5rem;
994
- margin-bottom: 1rem;
995
- }
996
-
997
- .docs-section h2 {
998
- font-size: 1.4rem;
999
- margin: 0 0 0.3rem;
1000
- padding-bottom: 0.6rem;
1001
- border-bottom: 1px solid var(--border);
1002
- }
1003
-
1004
- .docs-section h3 {
1005
- font-size: 1.05rem;
1006
- margin: 1.5rem 0 0.5rem;
1007
- }
1008
-
1009
- .docs-section p {
1010
- color: var(--text-muted);
1011
- margin: 0.4rem 0 0.8rem;
1012
- line-height: 1.7;
1013
- }
1014
-
1015
- .docs-section pre {
1016
- margin: 0.6rem 0 1rem;
1017
- }
1018
-
1019
- .docs-section .ref-section {
1020
- margin-bottom: 1.5rem;
1021
- }
1022
-
1023
- .docs-section .ref-section h3 {
1024
- margin-top: 1rem;
1025
- }
1026
-
1027
- @media (max-width: 860px) {
1028
- .docs-layout {
1029
- grid-template-columns: 1fr;
1030
- }
1031
-
1032
- .docs-sidebar {
1033
- position: static;
1034
- height: auto;
1035
- border-right: none;
1036
- border-bottom: 1px solid var(--border);
1037
- padding: 1rem 0;
1038
- }
1039
-
1040
- .docs-nav {
1041
- flex-direction: row;
1042
- flex-wrap: wrap;
1043
- gap: 0.2rem;
1044
- padding: 0 1.25rem;
1045
- }
1046
-
1047
- .docs-nav-group {
1048
- margin-bottom: 0;
1049
- }
1050
-
1051
- .docs-nav-heading {
1052
- display: none;
1053
- }
1054
-
1055
- .docs-nav-link {
1056
- border-left: none;
1057
- font-size: 0.8rem;
1058
- padding: 0.3rem 0.6rem;
1059
- }
1060
-
1061
- .docs-content {
1062
- padding: 1.5rem 1.25rem 3rem;
1063
- }
1064
- }
1065
-
1066
- @media (prefers-reduced-motion: reduce) {
1067
- * {
1068
- scroll-behavior: auto !important;
1069
- }
1070
-
1071
- [data-reveal] {
1072
- opacity: 1;
1073
- transform: none;
1074
- }
1075
- }