clew-code 0.2.1

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.
@@ -0,0 +1,790 @@
1
+ /* ==========================================================================
2
+ Clew Docs — Clean Documentation Theme
3
+ Dark, minimal, readable — inspired by Anthropic docs style
4
+ ========================================================================== */
5
+
6
+ /* ── Reset ────────────────────────────────────────────────────────────── */
7
+ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
8
+
9
+ /* ── Theme Variables ──────────────────────────────────────────────────── */
10
+ :root {
11
+ --bg-deep: #06060b;
12
+ --bg-primary: #0a0a0f;
13
+ --bg-surface: #101018;
14
+ --bg-card: #181825;
15
+ --bg-hover: #1e1e2e;
16
+ --bg-elevated: #22223a;
17
+
18
+ --text-primary: #e8e8ed;
19
+ --text-secondary: #9b9ba8;
20
+ --text-tertiary: #6b6b7a;
21
+ --text-inverse: #0a0a0f;
22
+
23
+ --accent: #7c5cfc;
24
+ --accent-hover:#9678ff;
25
+ --accent-muted:rgba(124, 92, 252, 0.12);
26
+ --accent-glow: rgba(124, 92, 252, 0.2);
27
+
28
+ --code-bg: #0d0d14;
29
+ --code-text: #d4d4dc;
30
+ --code-border: rgba(255, 255, 255, 0.06);
31
+
32
+ --border-subtle: rgba(255, 255, 255, 0.06);
33
+ --border-default: rgba(255, 255, 255, 0.1);
34
+ --border-accent: rgba(124, 92, 252, 0.3);
35
+
36
+ --info: #5898f4;
37
+ --info-bg: rgba(88, 152, 244, 0.08);
38
+ --warn: #f4a858;
39
+ --warn-bg: rgba(244, 168, 88, 0.08);
40
+ --tip: #58c47c;
41
+ --tip-bg: rgba(88, 196, 124, 0.08);
42
+ --danger: #e85454;
43
+
44
+ --font-display: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
45
+ --font-body: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
46
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
47
+
48
+ --text-xs: 0.75rem;
49
+ --text-sm: 0.8125rem;
50
+ --text-base: 0.9375rem;
51
+ --text-lg: 1.125rem;
52
+ --text-xl: 1.5rem;
53
+ --text-2xl: 2rem;
54
+ --text-3xl: 2.75rem;
55
+
56
+ --leading-tight: 1.2;
57
+ --leading-normal: 1.6;
58
+ --leading-relaxed: 1.75;
59
+
60
+ --space-xs: 0.25rem;
61
+ --space-sm: 0.5rem;
62
+ --space-md: 1rem;
63
+ --space-lg: 1.5rem;
64
+ --space-xl: 2rem;
65
+ --space-2xl: 3rem;
66
+ --space-3xl: 5rem;
67
+
68
+ --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
69
+ --duration-fast: 120ms;
70
+ --duration-base: 200ms;
71
+
72
+ --header-h: 56px;
73
+ --sidebar-w: 260px;
74
+ --toc-w: 220px;
75
+ --content-max: 820px;
76
+
77
+ --z-header: 100;
78
+ --z-sidebar: 90;
79
+ --z-overlay: 80;
80
+ }
81
+
82
+ /* ── Base ─────────────────────────────────────────────────────────────── */
83
+ html {
84
+ scroll-behavior: smooth;
85
+ -webkit-font-smoothing: antialiased;
86
+ -moz-osx-font-smoothing: grayscale;
87
+ }
88
+
89
+ body {
90
+ font-family: var(--font-body);
91
+ font-size: var(--text-base);
92
+ line-height: var(--leading-normal);
93
+ color: var(--text-primary);
94
+ background: var(--bg-primary);
95
+ min-height: 100vh;
96
+ }
97
+
98
+ ::selection { background: var(--accent); color: #fff; }
99
+
100
+ :focus-visible {
101
+ outline: 2px solid var(--accent);
102
+ outline-offset: 2px;
103
+ border-radius: 4px;
104
+ }
105
+
106
+ a {
107
+ color: var(--accent);
108
+ text-decoration: none;
109
+ transition: color var(--duration-fast) ease;
110
+ }
111
+ a:hover { color: var(--accent-hover); text-decoration: underline; }
112
+
113
+ img, svg { display: block; max-width: 100%; }
114
+
115
+ hr { border: none; border-top: 1px solid var(--border-subtle); margin: var(--space-2xl) 0; }
116
+
117
+ kbd {
118
+ display: inline-block;
119
+ padding: 1px 6px;
120
+ font-family: var(--font-mono);
121
+ font-size: var(--text-xs);
122
+ color: var(--text-secondary);
123
+ background: var(--bg-surface);
124
+ border: 1px solid var(--border-default);
125
+ border-radius: 4px;
126
+ box-shadow: 0 1px 0 var(--border-default);
127
+ }
128
+
129
+ /* ── Header ────────────────────────────────────────────────────────────── */
130
+ .header {
131
+ position: fixed;
132
+ top: 0; left: 0; right: 0;
133
+ height: var(--header-h);
134
+ z-index: var(--z-header);
135
+ background: rgba(10, 10, 15, 0.85);
136
+ backdrop-filter: blur(16px);
137
+ -webkit-backdrop-filter: blur(16px);
138
+ border-bottom: 1px solid var(--border-subtle);
139
+ }
140
+
141
+ .header-inner {
142
+ max-width: 1440px;
143
+ margin: 0 auto;
144
+ padding: 0 var(--space-xl);
145
+ height: 100%;
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: space-between;
149
+ }
150
+
151
+ .logo {
152
+ display: flex;
153
+ align-items: center;
154
+ gap: var(--space-sm);
155
+ font-family: var(--font-display);
156
+ font-weight: 700;
157
+ font-size: 1rem;
158
+ color: var(--text-primary);
159
+ text-decoration: none;
160
+ letter-spacing: -0.02em;
161
+ }
162
+ .logo:hover { opacity: 0.85; text-decoration: none; }
163
+
164
+ .logo-mark {
165
+ width: 28px; height: 28px;
166
+ border: 2px solid var(--accent);
167
+ border-radius: 6px;
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ font-family: var(--font-display);
172
+ font-size: 0.75rem;
173
+ font-weight: 700;
174
+ color: var(--accent);
175
+ background: var(--accent-muted);
176
+ }
177
+
178
+ .header-nav { display: flex; align-items: center; gap: 2px; }
179
+
180
+ .header-nav a {
181
+ padding: 6px 14px;
182
+ border-radius: 6px;
183
+ font-size: var(--text-sm);
184
+ font-weight: 500;
185
+ color: var(--text-secondary);
186
+ transition: all var(--duration-fast) ease;
187
+ }
188
+ .header-nav a:hover { color: var(--text-primary); background: var(--bg-hover); text-decoration: none; }
189
+ .header-nav a.active { color: var(--accent); background: var(--accent-muted); }
190
+
191
+ /* ── Layout ────────────────────────────────────────────────────────────── */
192
+ .app { display: flex; min-height: 100vh; }
193
+
194
+ /* ── Sidebar (left) ────────────────────────────────────────────────────── */
195
+ .sidebar {
196
+ position: fixed;
197
+ top: var(--header-h); left: 0; bottom: 0;
198
+ width: var(--sidebar-w);
199
+ z-index: var(--z-sidebar);
200
+ background: var(--bg-surface);
201
+ border-right: 1px solid var(--border-subtle);
202
+ overflow-y: auto;
203
+ padding: var(--space-lg) 0 var(--space-2xl);
204
+ scrollbar-width: thin;
205
+ scrollbar-color: var(--border-default) transparent;
206
+ transition: transform var(--duration-base) var(--ease-out);
207
+ }
208
+ .sidebar::-webkit-scrollbar { width: 4px; }
209
+ .sidebar::-webkit-scrollbar-track { background: transparent; }
210
+ .sidebar::-webkit-scrollbar-thumb { background: var(--border-default); border-radius: 4px; }
211
+
212
+ .sidebar-section { margin-bottom: var(--space-lg); padding: 0 var(--space-md); }
213
+
214
+ .sidebar-label {
215
+ font-family: var(--font-display);
216
+ font-size: 0.625rem;
217
+ font-weight: 600;
218
+ letter-spacing: 0.1em;
219
+ text-transform: uppercase;
220
+ color: var(--text-tertiary);
221
+ padding: 0 var(--space-sm);
222
+ margin-bottom: var(--space-xs);
223
+ }
224
+
225
+ .sidebar-link {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: var(--space-sm);
229
+ padding: 6px 10px;
230
+ border-radius: 6px;
231
+ font-size: var(--text-sm);
232
+ color: var(--text-secondary);
233
+ transition: all var(--duration-fast) ease;
234
+ }
235
+ .sidebar-link:hover { color: var(--text-primary); background: var(--bg-hover); text-decoration: none; }
236
+ .sidebar-link.active { color: var(--accent); background: var(--accent-muted); }
237
+
238
+ .sidebar-link .link-icon {
239
+ width: 4px; height: 4px;
240
+ border-radius: 50%;
241
+ background: var(--text-tertiary);
242
+ flex-shrink: 0;
243
+ transition: background var(--duration-fast) ease;
244
+ }
245
+ .sidebar-link.active .link-icon { background: var(--accent); }
246
+
247
+ /* ── Main Content ──────────────────────────────────────────────────────── */
248
+ .content-wrap {
249
+ flex: 1;
250
+ margin-left: var(--sidebar-w);
251
+ margin-top: var(--header-h);
252
+ display: flex;
253
+ justify-content: center;
254
+ min-width: 0;
255
+ }
256
+
257
+ .content {
258
+ flex: 1;
259
+ max-width: var(--content-max);
260
+ padding: var(--space-2xl) var(--space-2xl) var(--space-3xl);
261
+ min-width: 0;
262
+ }
263
+
264
+ /* ── Right TOC Sidebar ────────────────────────────────────────────────── */
265
+ .toc-sidebar {
266
+ position: sticky;
267
+ top: var(--header-h);
268
+ width: var(--toc-w);
269
+ height: calc(100vh - var(--header-h));
270
+ padding: var(--space-2xl) var(--space-lg) var(--space-2xl) 0;
271
+ overflow-y: auto;
272
+ flex-shrink: 0;
273
+ display: none;
274
+ }
275
+
276
+ .toc-label {
277
+ font-family: var(--font-display);
278
+ font-size: 0.625rem;
279
+ font-weight: 600;
280
+ letter-spacing: 0.1em;
281
+ text-transform: uppercase;
282
+ color: var(--text-tertiary);
283
+ margin-bottom: var(--space-md);
284
+ }
285
+
286
+ .toc-list { list-style: none; padding: 0; margin: 0; border-left: 1px solid var(--border-subtle); }
287
+
288
+ .toc-link {
289
+ display: block;
290
+ padding: 4px 0 4px var(--space-lg);
291
+ font-size: var(--text-xs);
292
+ color: var(--text-tertiary);
293
+ border-left: 1px solid transparent;
294
+ margin-left: -1px;
295
+ transition: all var(--duration-fast) ease;
296
+ text-decoration: none;
297
+ line-height: 1.4;
298
+ }
299
+ .toc-link:hover { color: var(--text-secondary); text-decoration: none; }
300
+ .toc-link.active { color: var(--accent); border-left-color: var(--accent); }
301
+
302
+ .toc-link.toc-h3 { padding-left: calc(var(--space-lg) + var(--space-md)); font-size: 0.6875rem; }
303
+
304
+ @media (min-width: 1280px) { .toc-sidebar { display: block; } }
305
+
306
+ /* ── Breadcrumbs ───────────────────────────────────────────────────────── */
307
+ .breadcrumbs {
308
+ display: flex;
309
+ align-items: center;
310
+ gap: var(--space-sm);
311
+ margin-bottom: var(--space-lg);
312
+ font-size: var(--text-xs);
313
+ color: var(--text-tertiary);
314
+ }
315
+ .breadcrumbs a { color: var(--text-tertiary); }
316
+ .breadcrumbs a:hover { color: var(--accent); }
317
+ .breadcrumbs .sep { color: var(--border-default); }
318
+
319
+ /* ── Content Typography ────────────────────────────────────────────────── */
320
+ .content h1 {
321
+ font-family: var(--font-display);
322
+ font-size: var(--text-2xl);
323
+ font-weight: 700;
324
+ letter-spacing: -0.02em;
325
+ margin-bottom: var(--space-sm);
326
+ color: var(--text-primary);
327
+ }
328
+
329
+ .content h2 {
330
+ font-family: var(--font-display);
331
+ font-size: var(--text-xl);
332
+ font-weight: 700;
333
+ letter-spacing: -0.01em;
334
+ margin: var(--space-2xl) 0 var(--space-md);
335
+ color: var(--text-primary);
336
+ }
337
+
338
+ .content h3 {
339
+ font-family: var(--font-display);
340
+ font-size: 1.05rem;
341
+ font-weight: 600;
342
+ margin: var(--space-lg) 0 var(--space-sm);
343
+ color: var(--text-primary);
344
+ }
345
+
346
+ .content h4 {
347
+ font-family: var(--font-display);
348
+ font-size: var(--text-base);
349
+ font-weight: 600;
350
+ margin: var(--space-lg) 0 var(--space-sm);
351
+ color: var(--text-secondary);
352
+ }
353
+
354
+ .content p {
355
+ margin-bottom: var(--space-md);
356
+ color: var(--text-secondary);
357
+ line-height: var(--leading-relaxed);
358
+ }
359
+
360
+ .content ul, .content ol { margin: var(--space-md) 0; padding-left: 1.5rem; }
361
+ .content li {
362
+ margin: var(--space-xs) 0;
363
+ color: var(--text-secondary);
364
+ line-height: var(--leading-relaxed);
365
+ }
366
+ .content li::marker { color: var(--accent); }
367
+ .content strong { color: var(--text-primary); font-weight: 600; }
368
+
369
+ /* ── Inline Code ───────────────────────────────────────────────────────── */
370
+ .content code {
371
+ font-family: var(--font-mono);
372
+ font-size: 0.8125em;
373
+ background: var(--accent-muted);
374
+ color: var(--accent);
375
+ padding: 0.15em 0.45em;
376
+ border-radius: 4px;
377
+ word-break: break-word;
378
+ }
379
+
380
+ /* ── Code Blocks ───────────────────────────────────────────────────────── */
381
+ .code-block-wrap {
382
+ position: relative;
383
+ margin: var(--space-lg) 0;
384
+ border-radius: 8px;
385
+ border: 1px solid var(--code-border);
386
+ background: var(--code-bg);
387
+ overflow: hidden;
388
+ }
389
+
390
+ .code-block-header {
391
+ display: flex;
392
+ align-items: center;
393
+ justify-content: space-between;
394
+ padding: 8px var(--space-md);
395
+ background: rgba(255, 255, 255, 0.02);
396
+ border-bottom: 1px solid var(--code-border);
397
+ font-family: var(--font-mono);
398
+ font-size: var(--text-xs);
399
+ color: var(--text-tertiary);
400
+ }
401
+
402
+ .copy-btn {
403
+ display: inline-flex;
404
+ align-items: center;
405
+ gap: 4px;
406
+ padding: 3px 10px;
407
+ border: 1px solid var(--border-default);
408
+ border-radius: 4px;
409
+ background: transparent;
410
+ color: var(--text-tertiary);
411
+ font-family: var(--font-mono);
412
+ font-size: var(--text-xs);
413
+ cursor: pointer;
414
+ transition: all var(--duration-fast) ease;
415
+ }
416
+ .copy-btn:hover { color: var(--text-primary); border-color: var(--text-tertiary); background: var(--bg-hover); }
417
+ .copy-btn.copied { color: var(--tip); border-color: var(--tip); }
418
+
419
+ .code-block-wrap pre { margin: 0; padding: var(--space-lg); overflow-x: auto; -webkit-overflow-scrolling: touch; }
420
+ .code-block-wrap pre code {
421
+ background: none; border: none; padding: 0;
422
+ color: var(--code-text);
423
+ font-size: var(--text-sm);
424
+ line-height: 1.65;
425
+ word-break: normal;
426
+ }
427
+
428
+ /* ── Tables ────────────────────────────────────────────────────────────── */
429
+ .table-wrap {
430
+ overflow-x: auto;
431
+ -webkit-overflow-scrolling: touch;
432
+ margin: var(--space-lg) 0;
433
+ border-radius: 8px;
434
+ border: 1px solid var(--border-subtle);
435
+ }
436
+
437
+ .content table {
438
+ width: 100%;
439
+ border-collapse: collapse;
440
+ font-size: var(--text-sm);
441
+ background: transparent;
442
+ }
443
+
444
+ .content th {
445
+ font-family: var(--font-display);
446
+ font-size: 0.6875rem;
447
+ font-weight: 600;
448
+ letter-spacing: 0.05em;
449
+ text-transform: uppercase;
450
+ text-align: left;
451
+ padding: var(--space-sm) var(--space-md);
452
+ color: var(--text-tertiary);
453
+ background: rgba(255, 255, 255, 0.02);
454
+ border-bottom: 1px solid var(--border-subtle);
455
+ }
456
+
457
+ .content td {
458
+ padding: var(--space-sm) var(--space-md);
459
+ border-bottom: 1px solid var(--border-subtle);
460
+ color: var(--text-secondary);
461
+ vertical-align: top;
462
+ }
463
+
464
+ .content tr:last-child td { border-bottom: none; }
465
+ .content tr:hover td { background: rgba(255, 255, 255, 0.01); }
466
+
467
+ /* ── Callouts ──────────────────────────────────────────────────────────── */
468
+ .callout {
469
+ position: relative;
470
+ padding: var(--space-md) var(--space-lg);
471
+ margin: var(--space-lg) 0;
472
+ border-radius: 8px;
473
+ border: 1px solid var(--border-subtle);
474
+ background: rgba(255, 255, 255, 0.02);
475
+ }
476
+ .callout::before {
477
+ content: '';
478
+ position: absolute;
479
+ top: 0; left: 0; bottom: 0;
480
+ width: 3px;
481
+ border-radius: 3px 0 0 3px;
482
+ }
483
+ .callout strong { display: block; margin-bottom: 2px; font-family: var(--font-display); font-size: var(--text-sm); }
484
+ .callout p:last-child { margin-bottom: 0; }
485
+ .callout code { font-size: 0.75rem; }
486
+
487
+ .callout-info { border-left-color: var(--info); }
488
+ .callout-info::before { background: var(--info); }
489
+ .callout-info strong { color: var(--info); }
490
+
491
+ .callout-warn { border-left-color: var(--warn); }
492
+ .callout-warn::before { background: var(--warn); }
493
+ .callout-warn strong { color: var(--warn); }
494
+
495
+ .callout-tip { border-left-color: var(--tip); }
496
+ .callout-tip::before { background: var(--tip); }
497
+ .callout-tip strong { color: var(--tip); }
498
+
499
+ /* ── Hero (index page) ──────────────────────────────────────────────────── */
500
+ .hero { padding: var(--space-xl) 0 var(--space-lg); }
501
+
502
+ .hero-badge {
503
+ display: inline-flex;
504
+ align-items: center;
505
+ gap: var(--space-sm);
506
+ padding: 4px 12px;
507
+ border-radius: 100px;
508
+ font-family: var(--font-display);
509
+ font-size: var(--text-xs);
510
+ font-weight: 500;
511
+ color: var(--accent);
512
+ background: var(--accent-muted);
513
+ border: 1px solid var(--border-accent);
514
+ margin-bottom: var(--space-lg);
515
+ }
516
+
517
+ .hero-badge .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
518
+
519
+ .hero h1 {
520
+ font-family: var(--font-display);
521
+ font-size: var(--text-3xl);
522
+ font-weight: 700;
523
+ line-height: var(--leading-tight);
524
+ letter-spacing: -0.03em;
525
+ margin-bottom: var(--space-md);
526
+ color: var(--text-primary);
527
+ }
528
+
529
+ .hero h1 .highlight { color: var(--accent); }
530
+
531
+ .hero p {
532
+ font-size: var(--text-lg);
533
+ line-height: var(--leading-relaxed);
534
+ color: var(--text-secondary);
535
+ max-width: 600px;
536
+ margin-bottom: var(--space-lg);
537
+ }
538
+
539
+ .hero-actions { display: flex; flex-wrap: wrap; gap: var(--space-md); margin-bottom: var(--space-xl); }
540
+
541
+ .btn {
542
+ display: inline-flex;
543
+ align-items: center;
544
+ gap: var(--space-sm);
545
+ padding: 10px 20px;
546
+ border-radius: 8px;
547
+ font-family: var(--font-display);
548
+ font-size: var(--text-sm);
549
+ font-weight: 600;
550
+ border: 1px solid var(--border-default);
551
+ background: transparent;
552
+ color: var(--text-primary);
553
+ cursor: pointer;
554
+ transition: all var(--duration-base) ease;
555
+ text-decoration: none;
556
+ }
557
+ .btn:hover { text-decoration: none; }
558
+
559
+ .btn-primary { background: var(--accent); color: #fff; border-color: var(--accent); }
560
+ .btn-primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: #fff; }
561
+
562
+ .btn-ghost { border-color: var(--border-default); color: var(--text-secondary); }
563
+ .btn-ghost:hover { border-color: var(--text-tertiary); color: var(--text-primary); background: var(--bg-hover); }
564
+
565
+ /* ── Section Title (index page) ─────────────────────────────────────────── */
566
+ .section-title {
567
+ font-family: var(--font-display);
568
+ font-size: var(--text-xl);
569
+ font-weight: 700;
570
+ letter-spacing: -0.01em;
571
+ color: var(--text-primary);
572
+ margin: var(--space-2xl) 0 var(--space-sm);
573
+ }
574
+
575
+ .section-subtitle {
576
+ font-size: var(--text-base);
577
+ color: var(--text-secondary);
578
+ margin-bottom: var(--space-lg);
579
+ max-width: 600px;
580
+ }
581
+
582
+ /* ── Feature Cards (index page) ─────────────────────────────────────────── */
583
+ .feature-grid {
584
+ display: grid;
585
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
586
+ gap: var(--space-md);
587
+ margin: var(--space-lg) 0 var(--space-2xl);
588
+ }
589
+
590
+ .feature-card {
591
+ padding: var(--space-lg);
592
+ border-radius: 8px;
593
+ background: var(--bg-card);
594
+ border: 1px solid var(--border-subtle);
595
+ transition: all var(--duration-base) ease;
596
+ }
597
+ .feature-card:hover { border-color: var(--border-default); background: var(--bg-hover); }
598
+
599
+ .feature-card h3 {
600
+ font-family: var(--font-display);
601
+ font-size: var(--text-sm);
602
+ font-weight: 700;
603
+ color: var(--text-primary);
604
+ margin-bottom: var(--space-sm);
605
+ }
606
+
607
+ .feature-card p {
608
+ font-size: var(--text-sm);
609
+ color: var(--text-secondary);
610
+ line-height: var(--leading-relaxed);
611
+ margin-bottom: 0;
612
+ }
613
+
614
+ .feature-tag {
615
+ display: inline-block;
616
+ font-family: var(--font-mono);
617
+ font-size: 0.65rem;
618
+ font-weight: 500;
619
+ padding: 2px 8px;
620
+ border-radius: 4px;
621
+ background: var(--accent-muted);
622
+ color: var(--accent);
623
+ border: 1px solid var(--border-accent);
624
+ margin-top: var(--space-sm);
625
+ margin-right: 4px;
626
+ }
627
+
628
+ /* ── Stats (index page) ─────────────────────────────────────────────────── */
629
+ .stats-grid {
630
+ display: grid;
631
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
632
+ gap: var(--space-md);
633
+ margin: var(--space-xl) 0;
634
+ }
635
+
636
+ .stat-card {
637
+ text-align: center;
638
+ padding: var(--space-lg) var(--space-md);
639
+ border-radius: 8px;
640
+ background: var(--bg-card);
641
+ border: 1px solid var(--border-subtle);
642
+ }
643
+
644
+ .stat-number {
645
+ font-family: var(--font-display);
646
+ font-size: 1.75rem;
647
+ font-weight: 700;
648
+ letter-spacing: -0.02em;
649
+ color: var(--accent);
650
+ line-height: 1.1;
651
+ margin-bottom: 4px;
652
+ }
653
+
654
+ .stat-label { font-size: var(--text-xs); color: var(--text-tertiary); font-weight: 500; }
655
+
656
+ /* ── Terminal Window (index page) ───────────────────────────────────────── */
657
+ .terminal-window {
658
+ background: var(--code-bg);
659
+ border: 1px solid var(--code-border);
660
+ border-radius: 8px;
661
+ overflow: hidden;
662
+ margin: var(--space-xl) 0;
663
+ }
664
+
665
+ .terminal-bar {
666
+ display: flex;
667
+ align-items: center;
668
+ gap: 6px;
669
+ padding: var(--space-sm) var(--space-md);
670
+ background: rgba(255, 255, 255, 0.02);
671
+ border-bottom: 1px solid var(--code-border);
672
+ }
673
+
674
+ .terminal-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-tertiary); }
675
+ .terminal-dot:nth-child(1) { background: #ff5f56; }
676
+ .terminal-dot:nth-child(2) { background: #ffbd2e; }
677
+ .terminal-dot:nth-child(3) { background: #27c93f; }
678
+
679
+ .terminal-title {
680
+ font-family: var(--font-display);
681
+ font-size: 0.6875rem;
682
+ color: var(--text-tertiary);
683
+ margin-left: var(--space-sm);
684
+ }
685
+
686
+ .terminal-body {
687
+ padding: var(--space-md);
688
+ font-family: var(--font-mono);
689
+ font-size: var(--text-xs);
690
+ line-height: 1.6;
691
+ color: var(--code-text);
692
+ overflow-x: auto;
693
+ }
694
+
695
+ .terminal-body .line { display: block; white-space: pre-wrap; }
696
+ .terminal-body .prompt { color: var(--accent); }
697
+ .terminal-body .cmd { color: var(--text-primary); }
698
+ .terminal-body .output { color: var(--text-tertiary); }
699
+ .terminal-body .highlight-amber { color: var(--accent); }
700
+ .terminal-body .highlight-cyan { color: var(--info); }
701
+
702
+ .terminal-body .cursor {
703
+ display: inline-block;
704
+ width: 6px; height: 0.9em;
705
+ background: var(--accent);
706
+ vertical-align: text-bottom;
707
+ margin-left: 1px;
708
+ animation: blink-cursor 1s step-end infinite;
709
+ }
710
+
711
+ @keyframes blink-cursor {
712
+ 0%, 100% { opacity: 1; }
713
+ 50% { opacity: 0; }
714
+ }
715
+
716
+ /* ── Footer ────────────────────────────────────────────────────────────── */
717
+ .footer {
718
+ margin-top: var(--space-3xl);
719
+ padding-top: var(--space-xl);
720
+ border-top: 1px solid var(--border-subtle);
721
+ display: flex;
722
+ flex-wrap: wrap;
723
+ justify-content: space-between;
724
+ align-items: center;
725
+ gap: var(--space-md);
726
+ font-size: var(--text-xs);
727
+ color: var(--text-tertiary);
728
+ }
729
+
730
+ .footer-links { display: flex; gap: var(--space-lg); }
731
+ .footer-links a { color: var(--text-tertiary); font-size: var(--text-xs); }
732
+ .footer-links a:hover { color: var(--accent); }
733
+
734
+ /* ── Mobile Menu ───────────────────────────────────────────────────────── */
735
+ .menu-btn {
736
+ display: none;
737
+ width: 34px; height: 34px;
738
+ padding: 6px;
739
+ background: none;
740
+ border: 1px solid var(--border-subtle);
741
+ border-radius: 6px;
742
+ cursor: pointer;
743
+ flex-direction: column;
744
+ justify-content: center;
745
+ gap: 4px;
746
+ transition: background var(--duration-fast) ease;
747
+ }
748
+ .menu-btn:hover { background: var(--bg-hover); }
749
+ .menu-btn span { display: block; width: 100%; height: 2px; background: var(--text-tertiary); border-radius: 2px; }
750
+
751
+ .sidebar-overlay {
752
+ display: none;
753
+ position: fixed;
754
+ inset: 0;
755
+ z-index: calc(var(--z-sidebar) - 1);
756
+ background: rgba(0, 0, 0, 0.6);
757
+ }
758
+
759
+ /* ── Responsive ─────────────────────────────────────────────────────────── */
760
+ @media (max-width: 1024px) {
761
+ .toc-sidebar { display: none; }
762
+ .content { max-width: 100%; }
763
+ }
764
+
765
+ @media (max-width: 900px) {
766
+ .menu-btn { display: flex; }
767
+ .sidebar { transform: translateX(-100%); }
768
+ .sidebar.open { transform: translateX(0); }
769
+ .sidebar.open ~ .sidebar-overlay { display: block; }
770
+ .content-wrap { margin-left: 0; }
771
+ .content { padding: var(--space-xl) var(--space-lg); }
772
+ }
773
+
774
+ @media (max-width: 640px) {
775
+ .header-inner { padding: 0 var(--space-md); }
776
+ .header-nav a { font-size: var(--text-xs); padding: 4px 8px; }
777
+ .content { padding: var(--space-lg) var(--space-md); }
778
+ .hero h1 { font-size: var(--text-2xl); }
779
+ .hero p { font-size: var(--text-base); }
780
+ .stats-grid { grid-template-columns: repeat(2, 1fr); }
781
+ .feature-grid { grid-template-columns: 1fr; }
782
+ .footer { flex-direction: column; text-align: center; }
783
+ }
784
+
785
+ /* ── Utility ────────────────────────────────────────────────────────────── */
786
+ .content .cmd-primary { color: var(--text-primary); }
787
+ .content .cmd-secondary { color: var(--text-secondary); }
788
+ .content .cmd-accent { color: var(--accent); }
789
+ .content .cmd-info { color: var(--info); }
790
+ .content .cmd-muted { color: var(--text-tertiary); }