@atlashub/smartstack-cli 1.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.
Files changed (144) hide show
  1. package/.documentation/agents.html +912 -0
  2. package/.documentation/apex.html +1014 -0
  3. package/.documentation/business-analyse.html +1074 -0
  4. package/.documentation/commands.html +676 -0
  5. package/.documentation/css/styles.css +2030 -0
  6. package/.documentation/efcore.html +2501 -0
  7. package/.documentation/gitflow.html +2053 -0
  8. package/.documentation/hooks.html +409 -0
  9. package/.documentation/index.html +319 -0
  10. package/.documentation/installation.html +458 -0
  11. package/.documentation/js/app.js +794 -0
  12. package/.documentation/test-web.html +509 -0
  13. package/README.md +90 -0
  14. package/config/default-config.json +86 -0
  15. package/config/settings.json +53 -0
  16. package/config/settings.local.example.json +16 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +38198 -0
  19. package/dist/index.js.map +1 -0
  20. package/package.json +86 -0
  21. package/templates/agents/action.md +36 -0
  22. package/templates/agents/efcore/conflicts.md +57 -0
  23. package/templates/agents/efcore/db-deploy.md +51 -0
  24. package/templates/agents/efcore/db-reset.md +59 -0
  25. package/templates/agents/efcore/db-seed.md +56 -0
  26. package/templates/agents/efcore/db-status.md +43 -0
  27. package/templates/agents/efcore/migration.md +85 -0
  28. package/templates/agents/efcore/rebase-snapshot.md +62 -0
  29. package/templates/agents/efcore/scan.md +60 -0
  30. package/templates/agents/efcore/squash.md +67 -0
  31. package/templates/agents/explore-codebase.md +65 -0
  32. package/templates/agents/explore-docs.md +97 -0
  33. package/templates/agents/fix-grammar.md +49 -0
  34. package/templates/agents/gitflow/abort.md +45 -0
  35. package/templates/agents/gitflow/cleanup.md +85 -0
  36. package/templates/agents/gitflow/commit.md +40 -0
  37. package/templates/agents/gitflow/exec.md +48 -0
  38. package/templates/agents/gitflow/finish.md +92 -0
  39. package/templates/agents/gitflow/init.md +139 -0
  40. package/templates/agents/gitflow/merge.md +62 -0
  41. package/templates/agents/gitflow/plan.md +42 -0
  42. package/templates/agents/gitflow/pr.md +78 -0
  43. package/templates/agents/gitflow/review.md +49 -0
  44. package/templates/agents/gitflow/start.md +61 -0
  45. package/templates/agents/gitflow/status.md +32 -0
  46. package/templates/agents/snipper.md +36 -0
  47. package/templates/agents/websearch.md +46 -0
  48. package/templates/commands/_resources/formatting-guide.md +124 -0
  49. package/templates/commands/ai-prompt.md +315 -0
  50. package/templates/commands/apex/1-analyze.md +100 -0
  51. package/templates/commands/apex/2-plan.md +145 -0
  52. package/templates/commands/apex/3-execute.md +171 -0
  53. package/templates/commands/apex/4-examine.md +116 -0
  54. package/templates/commands/apex/5-tasks.md +209 -0
  55. package/templates/commands/apex.md +76 -0
  56. package/templates/commands/application/create.md +362 -0
  57. package/templates/commands/application/templates-backend.md +463 -0
  58. package/templates/commands/application/templates-frontend.md +517 -0
  59. package/templates/commands/application/templates-i18n.md +478 -0
  60. package/templates/commands/application/templates-seed.md +362 -0
  61. package/templates/commands/application.md +303 -0
  62. package/templates/commands/business-analyse/1-init.md +269 -0
  63. package/templates/commands/business-analyse/2-discover.md +520 -0
  64. package/templates/commands/business-analyse/3-analyse.md +408 -0
  65. package/templates/commands/business-analyse/4-specify.md +598 -0
  66. package/templates/commands/business-analyse/5-validate.md +326 -0
  67. package/templates/commands/business-analyse/6-handoff.md +746 -0
  68. package/templates/commands/business-analyse/7-doc-html.md +602 -0
  69. package/templates/commands/business-analyse/bug.md +325 -0
  70. package/templates/commands/business-analyse/change-request.md +368 -0
  71. package/templates/commands/business-analyse/hotfix.md +200 -0
  72. package/templates/commands/business-analyse.md +559 -0
  73. package/templates/commands/controller/create.md +216 -0
  74. package/templates/commands/controller/postman-templates.md +528 -0
  75. package/templates/commands/controller/templates.md +600 -0
  76. package/templates/commands/controller.md +278 -0
  77. package/templates/commands/debug.md +95 -0
  78. package/templates/commands/documentation/module.md +202 -0
  79. package/templates/commands/documentation/templates.md +432 -0
  80. package/templates/commands/documentation.md +190 -0
  81. package/templates/commands/efcore/_env-check.md +153 -0
  82. package/templates/commands/efcore/conflicts.md +269 -0
  83. package/templates/commands/efcore/db-deploy.md +193 -0
  84. package/templates/commands/efcore/db-reset.md +426 -0
  85. package/templates/commands/efcore/db-seed.md +326 -0
  86. package/templates/commands/efcore/db-status.md +214 -0
  87. package/templates/commands/efcore/migration.md +388 -0
  88. package/templates/commands/efcore/rebase-snapshot.md +264 -0
  89. package/templates/commands/efcore/scan.md +202 -0
  90. package/templates/commands/efcore/squash.md +298 -0
  91. package/templates/commands/efcore.md +176 -0
  92. package/templates/commands/epct.md +69 -0
  93. package/templates/commands/explain.md +186 -0
  94. package/templates/commands/explore.md +45 -0
  95. package/templates/commands/feature-full.md +267 -0
  96. package/templates/commands/gitflow/1-init.md +1038 -0
  97. package/templates/commands/gitflow/10-start.md +768 -0
  98. package/templates/commands/gitflow/11-finish.md +323 -0
  99. package/templates/commands/gitflow/12-cleanup.md +276 -0
  100. package/templates/commands/gitflow/13-sync.md +216 -0
  101. package/templates/commands/gitflow/14-rebase.md +251 -0
  102. package/templates/commands/gitflow/2-status.md +167 -0
  103. package/templates/commands/gitflow/3-commit.md +194 -0
  104. package/templates/commands/gitflow/4-plan.md +145 -0
  105. package/templates/commands/gitflow/5-exec.md +147 -0
  106. package/templates/commands/gitflow/6-abort.md +344 -0
  107. package/templates/commands/gitflow/7-pull-request.md +226 -0
  108. package/templates/commands/gitflow/8-review.md +176 -0
  109. package/templates/commands/gitflow/9-merge.md +224 -0
  110. package/templates/commands/gitflow.md +128 -0
  111. package/templates/commands/implement.md +663 -0
  112. package/templates/commands/notification.md +129 -0
  113. package/templates/commands/oneshot.md +57 -0
  114. package/templates/commands/quick-search.md +72 -0
  115. package/templates/commands/review.md +106 -0
  116. package/templates/commands/utils/test-web-config.md +160 -0
  117. package/templates/commands/utils/test-web.md +151 -0
  118. package/templates/commands/workflow.md +193 -0
  119. package/templates/gitflow/config.json +138 -0
  120. package/templates/hooks/ef-migration-check.md +139 -0
  121. package/templates/hooks/hooks.json +15 -0
  122. package/templates/skills/ai-prompt/SKILL.md +778 -0
  123. package/templates/skills/application/SKILL.md +563 -0
  124. package/templates/skills/application/templates-backend.md +450 -0
  125. package/templates/skills/application/templates-frontend.md +531 -0
  126. package/templates/skills/application/templates-i18n.md +520 -0
  127. package/templates/skills/application/templates-seed.md +647 -0
  128. package/templates/skills/business-analyse/SKILL.md +191 -0
  129. package/templates/skills/business-analyse/questionnaire.md +283 -0
  130. package/templates/skills/business-analyse/templates-frd.md +477 -0
  131. package/templates/skills/business-analyse/templates-react.md +580 -0
  132. package/templates/skills/controller/SKILL.md +240 -0
  133. package/templates/skills/controller/postman-templates.md +614 -0
  134. package/templates/skills/controller/templates.md +1468 -0
  135. package/templates/skills/documentation/SKILL.md +133 -0
  136. package/templates/skills/documentation/templates.md +476 -0
  137. package/templates/skills/feature-full/SKILL.md +838 -0
  138. package/templates/skills/notification/SKILL.md +555 -0
  139. package/templates/skills/ui-components/SKILL.md +870 -0
  140. package/templates/skills/workflow/SKILL.md +582 -0
  141. package/templates/test-web/api-health.json +38 -0
  142. package/templates/test-web/minimal.json +19 -0
  143. package/templates/test-web/npm-package.json +46 -0
  144. package/templates/test-web/seo-check.json +54 -0
@@ -0,0 +1,2030 @@
1
+ /* ============================================
2
+ CLAUDE TOOLS DOCUMENTATION - STYLES
3
+ ============================================ */
4
+
5
+ :root {
6
+ /* Colors */
7
+ --primary: #6366f1;
8
+ --primary-dark: #4f46e5;
9
+ --primary-light: #818cf8;
10
+ --secondary: #f97316;
11
+ --accent: #06b6d4;
12
+
13
+ --bg-dark: #0f172a;
14
+ --bg-card: #1e293b;
15
+ --bg-hover: #334155;
16
+ --bg-code: #0d1117;
17
+
18
+ --text: #b8c4d1;
19
+ --text-muted: #8a9bb0;
20
+ --text-bright: #c8d0dc;
21
+
22
+ --border: #334155;
23
+ --border-light: #475569;
24
+
25
+ --success: #22c55e;
26
+ --warning: #eab308;
27
+ --error: #ef4444;
28
+ --info: #3b82f6;
29
+
30
+ /* Sidebar */
31
+ --sidebar-width: 280px;
32
+ --sidebar-collapsed: 60px;
33
+
34
+ /* Transitions */
35
+ --transition-fast: 0.15s ease;
36
+ --transition-normal: 0.3s ease;
37
+ }
38
+
39
+ * {
40
+ margin: 0;
41
+ padding: 0;
42
+ box-sizing: border-box;
43
+ }
44
+
45
+ html {
46
+ scroll-behavior: smooth;
47
+ }
48
+
49
+ body {
50
+ font-family: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
51
+ background: var(--bg-dark);
52
+ color: var(--text);
53
+ line-height: 1.7;
54
+ min-height: 100vh;
55
+ }
56
+
57
+ /* ============================================
58
+ LAYOUT
59
+ ============================================ */
60
+
61
+ .app-container {
62
+ display: flex;
63
+ flex-direction: column;
64
+ min-height: 100vh;
65
+ }
66
+
67
+ /* Unified Global Header */
68
+ .global-header {
69
+ background: var(--bg-card);
70
+ border-bottom: 1px solid var(--border);
71
+ height: 44px;
72
+ display: flex;
73
+ align-items: center;
74
+ padding: 0 1rem;
75
+ gap: 1rem;
76
+ position: sticky;
77
+ top: 0;
78
+ z-index: 1001;
79
+ box-sizing: border-box;
80
+ }
81
+
82
+ .global-header .logo {
83
+ width: 26px;
84
+ height: 26px;
85
+ background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
86
+ border-radius: 5px;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ font-weight: 700;
91
+ font-size: 0.8rem;
92
+ flex-shrink: 0;
93
+ }
94
+
95
+ .global-header .site-title {
96
+ font-size: 0.95rem;
97
+ font-weight: 600;
98
+ white-space: nowrap;
99
+ color: var(--text-bright);
100
+ }
101
+
102
+ .global-header .version-badge {
103
+ background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
104
+ color: white;
105
+ font-size: 0.65rem;
106
+ font-weight: 600;
107
+ padding: 0.2rem 0.5rem;
108
+ border-radius: 4px;
109
+ white-space: nowrap;
110
+ }
111
+
112
+ .global-header .header-divider {
113
+ width: 1px;
114
+ height: 24px;
115
+ background: var(--border);
116
+ margin: 0 0.5rem;
117
+ }
118
+
119
+ .global-header .page-title {
120
+ font-size: 0.95rem;
121
+ font-weight: 600;
122
+ color: var(--text-bright);
123
+ white-space: nowrap;
124
+ }
125
+
126
+ .global-header .breadcrumb {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 0.35rem;
130
+ font-size: 0.75rem;
131
+ color: var(--text-muted);
132
+ }
133
+
134
+ .global-header .breadcrumb a {
135
+ color: var(--text-muted);
136
+ text-decoration: none;
137
+ transition: color var(--transition-fast);
138
+ }
139
+
140
+ .global-header .breadcrumb a:hover {
141
+ color: var(--primary-light);
142
+ }
143
+
144
+ .global-header .breadcrumb-separator {
145
+ color: var(--border-light);
146
+ font-size: 0.65rem;
147
+ }
148
+
149
+ .global-header .breadcrumb-current {
150
+ color: var(--primary-light);
151
+ }
152
+
153
+ .global-header .lang-select {
154
+ background: var(--bg-dark);
155
+ color: var(--text);
156
+ border: 1px solid var(--border);
157
+ border-radius: 6px;
158
+ padding: 0.35rem 0.75rem;
159
+ font-size: 0.8rem;
160
+ font-weight: 500;
161
+ cursor: pointer;
162
+ outline: none;
163
+ transition: all var(--transition-fast);
164
+ margin-left: 1rem;
165
+ }
166
+
167
+ .global-header .lang-select:hover {
168
+ border-color: var(--primary);
169
+ }
170
+
171
+ .global-header .lang-select:focus {
172
+ border-color: var(--primary);
173
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
174
+ }
175
+
176
+ .global-header .lang-select option {
177
+ background: var(--bg-dark);
178
+ color: var(--text);
179
+ padding: 0.5rem;
180
+ }
181
+
182
+ /* Header Search */
183
+ .header-search {
184
+ position: relative;
185
+ margin-left: auto;
186
+ margin-right: 1rem;
187
+ }
188
+
189
+ .search-input-wrapper {
190
+ display: flex;
191
+ align-items: center;
192
+ background: var(--bg-dark);
193
+ border: 1px solid var(--border);
194
+ border-radius: 6px;
195
+ padding: 0 0.5rem;
196
+ transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
197
+ }
198
+
199
+ .search-input-wrapper:focus-within {
200
+ border-color: var(--primary);
201
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
202
+ }
203
+
204
+ .search-icon {
205
+ color: var(--text-muted);
206
+ font-size: 0.9rem;
207
+ margin-right: 0.5rem;
208
+ }
209
+
210
+ .search-input {
211
+ background: transparent;
212
+ border: none;
213
+ color: var(--text);
214
+ font-size: 0.85rem;
215
+ padding: 0.4rem 0;
216
+ width: 180px;
217
+ outline: none;
218
+ }
219
+
220
+ .search-input::placeholder {
221
+ color: var(--text-muted);
222
+ }
223
+
224
+ .search-shortcut {
225
+ background: var(--bg-hover);
226
+ color: var(--text-muted);
227
+ font-size: 0.65rem;
228
+ font-weight: 600;
229
+ padding: 0.15rem 0.4rem;
230
+ border-radius: 4px;
231
+ margin-left: 0.5rem;
232
+ white-space: nowrap;
233
+ }
234
+
235
+ /* Search Results Dropdown */
236
+ .search-results {
237
+ position: absolute;
238
+ top: calc(100% + 8px);
239
+ left: 0;
240
+ right: 0;
241
+ min-width: 320px;
242
+ max-height: 400px;
243
+ overflow-y: auto;
244
+ background: var(--bg-dark);
245
+ border: 1px solid var(--border);
246
+ border-radius: 8px;
247
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
248
+ z-index: 1002;
249
+ display: none;
250
+ }
251
+
252
+ .search-results.visible {
253
+ display: block;
254
+ }
255
+
256
+ .search-results-empty {
257
+ padding: 1.5rem;
258
+ text-align: center;
259
+ color: var(--text-muted);
260
+ font-size: 0.85rem;
261
+ }
262
+
263
+ .search-result-item {
264
+ display: flex;
265
+ align-items: flex-start;
266
+ gap: 0.75rem;
267
+ padding: 0.75rem 1rem;
268
+ text-decoration: none;
269
+ color: var(--text);
270
+ transition: background var(--transition-fast);
271
+ border-bottom: 1px solid var(--border);
272
+ }
273
+
274
+ .search-result-item:last-child {
275
+ border-bottom: none;
276
+ }
277
+
278
+ .search-result-item:hover,
279
+ .search-result-item.active {
280
+ background: var(--bg-hover);
281
+ }
282
+
283
+ .search-result-icon {
284
+ width: 28px;
285
+ height: 28px;
286
+ background: var(--bg-card);
287
+ border-radius: 6px;
288
+ display: flex;
289
+ align-items: center;
290
+ justify-content: center;
291
+ font-size: 0.9rem;
292
+ flex-shrink: 0;
293
+ }
294
+
295
+ .search-result-content {
296
+ flex: 1;
297
+ min-width: 0;
298
+ }
299
+
300
+ .search-result-title {
301
+ font-weight: 500;
302
+ font-size: 0.9rem;
303
+ color: var(--text-bright);
304
+ margin-bottom: 0.15rem;
305
+ }
306
+
307
+ .search-result-title mark {
308
+ background: rgba(99, 102, 241, 0.3);
309
+ color: var(--primary-light);
310
+ padding: 0 0.15rem;
311
+ border-radius: 2px;
312
+ }
313
+
314
+ .search-result-path {
315
+ font-size: 0.75rem;
316
+ color: var(--text-muted);
317
+ white-space: nowrap;
318
+ overflow: hidden;
319
+ text-overflow: ellipsis;
320
+ }
321
+
322
+ .search-result-section {
323
+ font-weight: 400;
324
+ color: var(--text-muted);
325
+ font-size: 0.85rem;
326
+ }
327
+
328
+ .search-result-section mark {
329
+ background: rgba(99, 102, 241, 0.2);
330
+ color: var(--primary-light);
331
+ }
332
+
333
+ .search-result-excerpt {
334
+ font-size: 0.8rem;
335
+ color: var(--text);
336
+ line-height: 1.4;
337
+ margin: 0.35rem 0;
338
+ display: -webkit-box;
339
+ -webkit-line-clamp: 2;
340
+ -webkit-box-orient: vertical;
341
+ overflow: hidden;
342
+ }
343
+
344
+ .search-result-excerpt mark {
345
+ background: rgba(245, 158, 11, 0.3);
346
+ color: var(--accent);
347
+ padding: 0 0.1rem;
348
+ border-radius: 2px;
349
+ }
350
+
351
+ /* Search results scrollbar */
352
+ .search-results::-webkit-scrollbar {
353
+ width: 6px;
354
+ }
355
+
356
+ .search-results::-webkit-scrollbar-track {
357
+ background: var(--bg-dark);
358
+ }
359
+
360
+ .search-results::-webkit-scrollbar-thumb {
361
+ background: var(--border);
362
+ border-radius: 3px;
363
+ }
364
+
365
+ .search-results::-webkit-scrollbar-thumb:hover {
366
+ background: var(--border-light);
367
+ }
368
+
369
+ /* Responsive search */
370
+ @media (max-width: 1024px) {
371
+ .header-search {
372
+ display: none;
373
+ }
374
+ }
375
+
376
+ @media (max-width: 768px) {
377
+ .header-search {
378
+ display: none;
379
+ }
380
+ }
381
+
382
+ /* App Body - contains sidebar and main content */
383
+ .app-body {
384
+ display: flex;
385
+ flex: 1;
386
+ }
387
+
388
+ /* Sidebar */
389
+ .sidebar {
390
+ width: var(--sidebar-width);
391
+ background: var(--bg-card);
392
+ position: fixed;
393
+ top: 44px; /* Below global header */
394
+ left: 0;
395
+ height: calc(100vh - 44px);
396
+ overflow-y: auto;
397
+ transition: width var(--transition-normal), transform var(--transition-normal);
398
+ z-index: 1000;
399
+ display: flex;
400
+ flex-direction: column;
401
+ /* Hide scrollbar but keep functionality */
402
+ scrollbar-width: none; /* Firefox */
403
+ -ms-overflow-style: none; /* IE/Edge */
404
+ }
405
+
406
+ .sidebar::-webkit-scrollbar {
407
+ display: none; /* Chrome/Safari/Opera */
408
+ }
409
+
410
+ .sidebar.collapsed {
411
+ width: var(--sidebar-collapsed);
412
+ }
413
+
414
+ .sidebar.collapsed .nav-text,
415
+ .sidebar.collapsed .sidebar-header h2,
416
+ .sidebar.collapsed .sidebar-footer,
417
+ .sidebar.collapsed .nav-section-title {
418
+ opacity: 0;
419
+ visibility: hidden;
420
+ }
421
+
422
+ /* Legacy sidebar-header styles removed - now using global-header */
423
+
424
+ /* Sidebar toggle button - fixed position, always visible */
425
+ .sidebar-toggle {
426
+ position: fixed;
427
+ top: calc(50% + 22px); /* Centered in sidebar area (below 44px header) */
428
+ left: calc(var(--sidebar-width) - 1px);
429
+ transform: translateY(-50%);
430
+ width: 20px;
431
+ height: 56px;
432
+ background: var(--bg-card);
433
+ border: 1px solid var(--border);
434
+ border-left: none;
435
+ border-radius: 0 8px 8px 0;
436
+ cursor: pointer;
437
+ display: flex;
438
+ align-items: center;
439
+ justify-content: center;
440
+ color: var(--text-muted);
441
+ font-size: 0.75rem;
442
+ transition: left var(--transition-normal), background var(--transition-fast), color var(--transition-fast);
443
+ z-index: 1001;
444
+ padding: 0;
445
+ }
446
+
447
+ .sidebar-toggle:hover {
448
+ background: var(--primary);
449
+ color: white;
450
+ border-color: var(--primary);
451
+ }
452
+
453
+ /* Move toggle when sidebar is collapsed - use descendant selector since button is inside sidebar */
454
+ .sidebar.collapsed .sidebar-toggle {
455
+ left: calc(var(--sidebar-collapsed) - 1px);
456
+ }
457
+
458
+ /* Toggle icon states */
459
+ .sidebar-toggle .toggle-icon-collapse,
460
+ .sidebar-toggle .toggle-icon-expand {
461
+ display: flex;
462
+ align-items: center;
463
+ justify-content: center;
464
+ }
465
+
466
+ .sidebar-toggle .toggle-icon-expand {
467
+ display: none;
468
+ }
469
+
470
+ .sidebar.collapsed .sidebar-toggle .toggle-icon-collapse {
471
+ display: none;
472
+ }
473
+
474
+ .sidebar.collapsed .sidebar-toggle .toggle-icon-expand {
475
+ display: flex;
476
+ }
477
+
478
+ /* Navigation */
479
+ .sidebar-nav {
480
+ flex: 1;
481
+ padding: 0.5rem 0 1rem 0;
482
+ overflow-y: auto;
483
+ /* Hide scrollbar but keep functionality */
484
+ scrollbar-width: none;
485
+ -ms-overflow-style: none;
486
+ }
487
+
488
+ .sidebar-nav::-webkit-scrollbar {
489
+ display: none;
490
+ }
491
+
492
+ .nav-section {
493
+ margin-bottom: 1.5rem;
494
+ }
495
+
496
+ .nav-section-title {
497
+ padding: 0.5rem 1.5rem;
498
+ font-size: 0.7rem;
499
+ font-weight: 600;
500
+ text-transform: uppercase;
501
+ letter-spacing: 0.1em;
502
+ color: var(--text-muted);
503
+ transition: opacity var(--transition-fast);
504
+ }
505
+
506
+ .nav-item {
507
+ display: flex;
508
+ align-items: center;
509
+ gap: 0.75rem;
510
+ padding: 0.625rem 1.5rem;
511
+ color: var(--text-muted);
512
+ text-decoration: none;
513
+ transition: all var(--transition-fast);
514
+ border-left: 3px solid transparent;
515
+ }
516
+
517
+ .nav-item:hover {
518
+ background: var(--bg-hover);
519
+ color: var(--text);
520
+ }
521
+
522
+ .nav-item.active {
523
+ background: rgba(99, 102, 241, 0.1);
524
+ color: var(--primary-light);
525
+ border-left-color: var(--primary);
526
+ }
527
+
528
+ .nav-item .icon {
529
+ width: 20px;
530
+ height: 20px;
531
+ display: flex;
532
+ align-items: center;
533
+ justify-content: center;
534
+ flex-shrink: 0;
535
+ }
536
+
537
+ .nav-text {
538
+ white-space: nowrap;
539
+ transition: opacity var(--transition-fast);
540
+ }
541
+
542
+ /* Sidebar Footer */
543
+ .sidebar-footer {
544
+ padding: 1rem 1.5rem;
545
+ border-top: 1px solid var(--border);
546
+ transition: opacity var(--transition-fast);
547
+ }
548
+
549
+ .lang-switch {
550
+ display: flex;
551
+ background: var(--bg-dark);
552
+ border-radius: 6px;
553
+ padding: 3px;
554
+ }
555
+
556
+ .lang-btn {
557
+ flex: 1;
558
+ padding: 0.375rem 0.75rem;
559
+ border: none;
560
+ background: transparent;
561
+ color: var(--text-muted);
562
+ font-size: 0.8rem;
563
+ font-weight: 500;
564
+ cursor: pointer;
565
+ border-radius: 4px;
566
+ transition: all var(--transition-fast);
567
+ }
568
+
569
+ .lang-btn.active {
570
+ background: var(--primary);
571
+ color: white;
572
+ }
573
+
574
+ /* Main Content */
575
+ .main-content {
576
+ flex: 1;
577
+ margin-left: var(--sidebar-width);
578
+ transition: margin-left var(--transition-normal);
579
+ min-height: 100vh;
580
+ }
581
+
582
+ .sidebar.collapsed ~ .main-content {
583
+ margin-left: var(--sidebar-collapsed);
584
+ }
585
+
586
+ /* Legacy page-header styles removed - now using global-header */
587
+
588
+ /* Content Area */
589
+ .content {
590
+ max-width: 900px;
591
+ margin: 0 auto;
592
+ padding: 2rem;
593
+ }
594
+
595
+ .content-wide {
596
+ max-width: 1200px;
597
+ }
598
+
599
+ /* ============================================
600
+ TYPOGRAPHY
601
+ ============================================ */
602
+
603
+ h2 {
604
+ font-size: 1.75rem;
605
+ font-weight: 600;
606
+ margin: 2.5rem 0 1rem;
607
+ padding-bottom: 0.5rem;
608
+ border-bottom: 1px solid var(--border);
609
+ color: var(--text-bright);
610
+ }
611
+
612
+ h3 {
613
+ font-size: 1.25rem;
614
+ font-weight: 600;
615
+ margin: 2rem 0 1rem;
616
+ color: var(--primary-light);
617
+ }
618
+
619
+ h4 {
620
+ font-size: 1.1rem;
621
+ font-weight: 600;
622
+ margin: 1.5rem 0 0.75rem;
623
+ color: var(--text);
624
+ }
625
+
626
+ p {
627
+ margin-bottom: 1rem;
628
+ }
629
+
630
+ a {
631
+ color: var(--primary-light);
632
+ text-decoration: none;
633
+ }
634
+
635
+ a:hover {
636
+ text-decoration: underline;
637
+ }
638
+
639
+ /* ============================================
640
+ COMPONENTS
641
+ ============================================ */
642
+
643
+ /* Cards */
644
+ .card-grid {
645
+ display: grid;
646
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
647
+ gap: 1.25rem;
648
+ margin: 1.5rem 0;
649
+ }
650
+
651
+ .card {
652
+ background: var(--bg-card);
653
+ border: 1px solid var(--border);
654
+ border-radius: 12px;
655
+ padding: 1.5rem;
656
+ transition: all var(--transition-fast);
657
+ }
658
+
659
+ .card:hover {
660
+ border-color: var(--primary);
661
+ transform: translateY(-2px);
662
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
663
+ }
664
+
665
+ .card-header {
666
+ display: flex;
667
+ align-items: flex-start;
668
+ gap: 1rem;
669
+ margin-bottom: 1rem;
670
+ }
671
+
672
+ .card-icon {
673
+ width: 44px;
674
+ height: 44px;
675
+ background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
676
+ border-radius: 10px;
677
+ display: flex;
678
+ align-items: center;
679
+ justify-content: center;
680
+ font-size: 1.25rem;
681
+ flex-shrink: 0;
682
+ }
683
+
684
+ .card-title {
685
+ font-size: 1.1rem;
686
+ font-weight: 600;
687
+ margin-bottom: 0.25rem;
688
+ }
689
+
690
+ .card-subtitle {
691
+ font-size: 0.8rem;
692
+ color: var(--text-muted);
693
+ }
694
+
695
+ .card-body p {
696
+ color: var(--text-muted);
697
+ font-size: 0.9rem;
698
+ margin-bottom: 1rem;
699
+ }
700
+
701
+ /* Tags */
702
+ .tag {
703
+ display: inline-flex;
704
+ align-items: center;
705
+ padding: 0.25rem 0.625rem;
706
+ border-radius: 4px;
707
+ font-size: 0.7rem;
708
+ font-weight: 600;
709
+ text-transform: uppercase;
710
+ letter-spacing: 0.05em;
711
+ }
712
+
713
+ .tag-command { background: var(--primary); color: white; }
714
+ .tag-agent { background: var(--secondary); color: white; }
715
+ .tag-workflow { background: var(--success); color: white; }
716
+ .tag-best-practice { background: var(--accent); color: var(--bg-dark); }
717
+ .tag-warning { background: var(--warning); color: var(--bg-dark); }
718
+
719
+ /* Code */
720
+ code {
721
+ background: var(--bg-code);
722
+ padding: 0.2rem 0.5rem;
723
+ border-radius: 4px;
724
+ font-family: 'Fira Code', 'Cascadia Code', 'JetBrains Mono', monospace;
725
+ font-size: 0.875em;
726
+ color: var(--text-bright);
727
+ border: 1px solid var(--border);
728
+ }
729
+
730
+ /* Code in tables - minimal style (just monospace, no decoration) */
731
+ table code,
732
+ .table-container code,
733
+ td code {
734
+ background: transparent !important;
735
+ color: inherit !important;
736
+ border: none !important;
737
+ padding: 0 !important;
738
+ box-shadow: none !important;
739
+ }
740
+
741
+ pre {
742
+ background: var(--bg-code);
743
+ border: 1px solid var(--border);
744
+ border-radius: 8px;
745
+ padding: 1.25rem;
746
+ overflow-x: auto;
747
+ margin: 1rem 0;
748
+ position: relative;
749
+ }
750
+
751
+ pre code {
752
+ background: none;
753
+ padding: 0;
754
+ color: var(--text);
755
+ font-size: 0.875rem;
756
+ line-height: 1.6;
757
+ }
758
+
759
+ .code-header {
760
+ display: flex;
761
+ justify-content: space-between;
762
+ align-items: center;
763
+ background: var(--bg-hover);
764
+ padding: 0.5rem 1rem;
765
+ border-radius: 8px 8px 0 0;
766
+ margin: 1rem 0 0;
767
+ font-size: 0.8rem;
768
+ color: var(--text-muted);
769
+ }
770
+
771
+ .code-header + pre {
772
+ margin-top: 0;
773
+ border-radius: 0 0 8px 8px;
774
+ }
775
+
776
+ .copy-btn {
777
+ background: var(--bg-card);
778
+ border: 1px solid var(--border);
779
+ color: var(--text-muted);
780
+ padding: 0.25rem 0.5rem;
781
+ border-radius: 4px;
782
+ font-size: 0.75rem;
783
+ cursor: pointer;
784
+ transition: all var(--transition-fast);
785
+ }
786
+
787
+ .copy-btn:hover {
788
+ background: var(--primary);
789
+ color: white;
790
+ border-color: var(--primary);
791
+ }
792
+
793
+ /* Alerts */
794
+ .alert {
795
+ padding: 1rem 1.25rem;
796
+ border-radius: 8px;
797
+ margin: 1.5rem 0;
798
+ border-left: 4px solid;
799
+ display: flex;
800
+ gap: 0.75rem;
801
+ }
802
+
803
+ .alert-icon {
804
+ font-size: 1.25rem;
805
+ flex-shrink: 0;
806
+ }
807
+
808
+ .alert-content h5 {
809
+ font-weight: 600;
810
+ margin-bottom: 0.25rem;
811
+ }
812
+
813
+ .alert-content p {
814
+ margin: 0;
815
+ font-size: 0.9rem;
816
+ }
817
+
818
+ .alert-info {
819
+ background: rgba(59, 130, 246, 0.1);
820
+ border-color: var(--info);
821
+ }
822
+
823
+ .alert-success {
824
+ background: rgba(34, 197, 94, 0.1);
825
+ border-color: var(--success);
826
+ }
827
+
828
+ .alert-warning {
829
+ background: rgba(234, 179, 8, 0.1);
830
+ border-color: var(--warning);
831
+ }
832
+
833
+ .alert-error {
834
+ background: rgba(239, 68, 68, 0.1);
835
+ border-color: var(--error);
836
+ }
837
+
838
+ /* Tables */
839
+ .table-container {
840
+ overflow-x: auto;
841
+ margin: 1.5rem 0;
842
+ border: 1px solid var(--border);
843
+ border-radius: 8px;
844
+ }
845
+
846
+ table {
847
+ width: 100%;
848
+ border-collapse: collapse;
849
+ }
850
+
851
+ th, td {
852
+ padding: 0.875rem 1rem;
853
+ text-align: left;
854
+ border-bottom: 1px solid var(--border);
855
+ }
856
+
857
+ th {
858
+ background: var(--bg-hover);
859
+ font-weight: 600;
860
+ font-size: 0.875rem;
861
+ color: var(--text-muted);
862
+ text-transform: uppercase;
863
+ letter-spacing: 0.05em;
864
+ }
865
+
866
+ tr:last-child td {
867
+ border-bottom: none;
868
+ }
869
+
870
+ tr:hover td {
871
+ background: rgba(99, 102, 241, 0.05);
872
+ }
873
+
874
+ /* Workflow Diagram */
875
+ .workflow-diagram {
876
+ background: var(--bg-card);
877
+ border: 1px solid var(--border);
878
+ border-radius: 12px;
879
+ padding: 2rem;
880
+ margin: 2rem 0;
881
+ overflow-x: auto;
882
+ }
883
+
884
+ .workflow-steps {
885
+ display: flex;
886
+ align-items: center;
887
+ justify-content: center;
888
+ gap: 0.5rem;
889
+ flex-wrap: wrap;
890
+ }
891
+
892
+ .workflow-step {
893
+ background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
894
+ padding: 0.75rem 1.5rem;
895
+ border-radius: 8px;
896
+ font-weight: 600;
897
+ font-size: 0.9rem;
898
+ white-space: nowrap;
899
+ box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
900
+ }
901
+
902
+ .workflow-arrow {
903
+ color: var(--text-muted);
904
+ font-size: 1.5rem;
905
+ padding: 0 0.25rem;
906
+ }
907
+
908
+ /* Best Practice Box */
909
+ .best-practice {
910
+ background: linear-gradient(135deg, rgba(6, 182, 212, 0.1) 0%, rgba(99, 102, 241, 0.1) 100%);
911
+ border: 1px solid var(--accent);
912
+ border-radius: 12px;
913
+ padding: 1.5rem;
914
+ margin: 1.5rem 0;
915
+ }
916
+
917
+ .best-practice-header {
918
+ display: flex;
919
+ align-items: center;
920
+ gap: 0.75rem;
921
+ margin-bottom: 1rem;
922
+ font-weight: 600;
923
+ color: var(--accent);
924
+ }
925
+
926
+ .best-practice ul {
927
+ margin: 0;
928
+ padding-left: 1.5rem;
929
+ }
930
+
931
+ .best-practice li {
932
+ margin-bottom: 0.5rem;
933
+ color: var(--text);
934
+ }
935
+
936
+ /* Steps List */
937
+ .steps-list {
938
+ counter-reset: step;
939
+ list-style: none;
940
+ padding: 0;
941
+ margin: 1.5rem 0;
942
+ }
943
+
944
+ .steps-list li {
945
+ counter-increment: step;
946
+ display: flex;
947
+ gap: 1rem;
948
+ margin-bottom: 1.5rem;
949
+ padding: 1.25rem;
950
+ background: var(--bg-card);
951
+ border: 1px solid var(--border);
952
+ border-radius: 8px;
953
+ }
954
+
955
+ .steps-list li::before {
956
+ content: counter(step);
957
+ width: 32px;
958
+ height: 32px;
959
+ background: var(--primary);
960
+ border-radius: 50%;
961
+ display: flex;
962
+ align-items: center;
963
+ justify-content: center;
964
+ font-weight: 700;
965
+ flex-shrink: 0;
966
+ }
967
+
968
+ .step-content h5 {
969
+ font-weight: 600;
970
+ margin-bottom: 0.5rem;
971
+ }
972
+
973
+ .step-content p {
974
+ margin: 0;
975
+ color: var(--text-muted);
976
+ font-size: 0.9rem;
977
+ }
978
+
979
+ /* Feature Grid */
980
+ .feature-grid {
981
+ display: grid;
982
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
983
+ gap: 1rem;
984
+ margin: 1.5rem 0;
985
+ }
986
+
987
+ .feature-item {
988
+ display: flex;
989
+ align-items: flex-start;
990
+ gap: 0.75rem;
991
+ padding: 1rem;
992
+ background: var(--bg-card);
993
+ border-radius: 8px;
994
+ }
995
+
996
+ .feature-icon {
997
+ width: 24px;
998
+ height: 24px;
999
+ color: var(--success);
1000
+ flex-shrink: 0;
1001
+ }
1002
+
1003
+ .feature-text {
1004
+ font-size: 0.9rem;
1005
+ }
1006
+
1007
+ /* ============================================
1008
+ RESPONSIVE
1009
+ ============================================ */
1010
+
1011
+ @media (max-width: 1024px) {
1012
+ .sidebar {
1013
+ transform: translateX(-100%);
1014
+ }
1015
+
1016
+ .sidebar.open {
1017
+ transform: translateX(0);
1018
+ }
1019
+
1020
+ .main-content {
1021
+ margin-left: 0;
1022
+ }
1023
+
1024
+ .mobile-menu-btn {
1025
+ display: flex;
1026
+ }
1027
+
1028
+ /* Global header responsive */
1029
+ .global-header .site-title,
1030
+ .global-header .version-badge,
1031
+ .global-header .header-divider {
1032
+ display: none;
1033
+ }
1034
+ }
1035
+
1036
+ @media (max-width: 768px) {
1037
+ .global-header {
1038
+ padding: 0 0.75rem;
1039
+ gap: 0.5rem;
1040
+ }
1041
+
1042
+ .global-header .page-title {
1043
+ font-size: 0.85rem;
1044
+ }
1045
+
1046
+ .global-header .breadcrumb {
1047
+ display: none;
1048
+ }
1049
+
1050
+ .content {
1051
+ padding: 1.5rem 1rem;
1052
+ }
1053
+
1054
+ .workflow-steps {
1055
+ flex-direction: column;
1056
+ }
1057
+
1058
+ .workflow-arrow {
1059
+ transform: rotate(90deg);
1060
+ }
1061
+
1062
+ .card-grid {
1063
+ grid-template-columns: 1fr;
1064
+ }
1065
+ }
1066
+
1067
+ /* Mobile Menu Button */
1068
+ .mobile-menu-btn {
1069
+ display: none;
1070
+ position: fixed;
1071
+ bottom: 1.5rem;
1072
+ right: 1.5rem;
1073
+ width: 56px;
1074
+ height: 56px;
1075
+ background: var(--primary);
1076
+ border: none;
1077
+ border-radius: 50%;
1078
+ color: white;
1079
+ font-size: 1.5rem;
1080
+ cursor: pointer;
1081
+ z-index: 999;
1082
+ box-shadow: 0 4px 20px rgba(99, 102, 241, 0.4);
1083
+ }
1084
+
1085
+ @media (max-width: 1024px) {
1086
+ .mobile-menu-btn {
1087
+ display: flex;
1088
+ align-items: center;
1089
+ justify-content: center;
1090
+ }
1091
+ }
1092
+
1093
+ /* Overlay */
1094
+ .overlay {
1095
+ display: none;
1096
+ position: fixed;
1097
+ top: 0;
1098
+ left: 0;
1099
+ right: 0;
1100
+ bottom: 0;
1101
+ background: rgba(0, 0, 0, 0.5);
1102
+ z-index: 999;
1103
+ }
1104
+
1105
+ .overlay.active {
1106
+ display: block;
1107
+ }
1108
+
1109
+ /* ============================================
1110
+ ANIMATIONS
1111
+ ============================================ */
1112
+
1113
+ @keyframes fadeIn {
1114
+ from { opacity: 0; transform: translateY(10px); }
1115
+ to { opacity: 1; transform: translateY(0); }
1116
+ }
1117
+
1118
+ .fade-in {
1119
+ animation: fadeIn 0.3s ease forwards;
1120
+ }
1121
+
1122
+ /* Bilingual content - hide inactive language, show active with original display */
1123
+ [data-lang="en"] { display: none !important; }
1124
+
1125
+ body.lang-en [data-lang="en"] { display: revert !important; }
1126
+ body.lang-en [data-lang="fr"] { display: none !important; }
1127
+
1128
+ /* ============================================
1129
+ COMMAND CARDS & PROMPTS
1130
+ ============================================ */
1131
+
1132
+ .command-card {
1133
+ background: var(--bg-card);
1134
+ border: 1px solid var(--border);
1135
+ border-radius: 12px;
1136
+ margin: 1.5rem 0;
1137
+ overflow: hidden;
1138
+ }
1139
+
1140
+ .command-header {
1141
+ display: flex;
1142
+ align-items: center;
1143
+ gap: 1rem;
1144
+ padding: 1rem 1.25rem;
1145
+ background: var(--bg-hover);
1146
+ border-bottom: 1px solid var(--border);
1147
+ }
1148
+
1149
+ .command-name {
1150
+ font-size: 1.1rem;
1151
+ font-weight: 600;
1152
+ color: var(--primary-light);
1153
+ background: var(--bg-code);
1154
+ padding: 0.35rem 0.75rem;
1155
+ }
1156
+
1157
+ .command-body {
1158
+ padding: 1.25rem;
1159
+ }
1160
+
1161
+ .command-body > p {
1162
+ margin-bottom: 1rem;
1163
+ }
1164
+
1165
+ /* Prompt Details (Collapsible) */
1166
+ .prompt-details {
1167
+ margin-top: 1.25rem;
1168
+ border: 1px solid var(--border);
1169
+ border-radius: 8px;
1170
+ overflow: hidden;
1171
+ }
1172
+
1173
+ .prompt-details summary {
1174
+ display: flex;
1175
+ align-items: center;
1176
+ padding: 0.875rem 1rem;
1177
+ background: var(--bg-hover);
1178
+ cursor: pointer;
1179
+ font-weight: 500;
1180
+ color: var(--text-muted);
1181
+ transition: all var(--transition-fast);
1182
+ list-style: none;
1183
+ }
1184
+
1185
+ .prompt-details summary::-webkit-details-marker {
1186
+ display: none;
1187
+ }
1188
+
1189
+ .prompt-details summary::before {
1190
+ content: 'â–¶';
1191
+ margin-right: 0.75rem;
1192
+ font-size: 0.75rem;
1193
+ transition: transform var(--transition-fast);
1194
+ }
1195
+
1196
+ .prompt-details[open] summary::before {
1197
+ transform: rotate(90deg);
1198
+ }
1199
+
1200
+ .prompt-details summary:hover {
1201
+ color: var(--text);
1202
+ background: var(--bg-card);
1203
+ }
1204
+
1205
+ .prompt-content {
1206
+ background: var(--bg-code);
1207
+ border-top: 1px solid var(--border);
1208
+ }
1209
+
1210
+ .prompt-content pre {
1211
+ margin: 0;
1212
+ border: none;
1213
+ border-radius: 0;
1214
+ max-height: 500px;
1215
+ overflow-y: auto;
1216
+ }
1217
+
1218
+ .prompt-content pre code {
1219
+ font-size: 0.8rem;
1220
+ line-height: 1.5;
1221
+ }
1222
+
1223
+ /* Danger Tag */
1224
+ .tag-danger {
1225
+ background: var(--error);
1226
+ color: white;
1227
+ }
1228
+
1229
+ /* Code block with position */
1230
+ .code-block {
1231
+ position: relative;
1232
+ margin: 1rem 0;
1233
+ }
1234
+
1235
+ .code-block pre {
1236
+ padding-right: 4.5rem; /* Space for copy button */
1237
+ }
1238
+
1239
+ .code-block .copy-btn {
1240
+ position: absolute;
1241
+ top: 0.5rem;
1242
+ right: 0.5rem;
1243
+ z-index: 10;
1244
+ background: var(--bg-hover);
1245
+ border: 1px solid var(--border-light);
1246
+ opacity: 0.8;
1247
+ transition: opacity var(--transition-fast), background var(--transition-fast);
1248
+ }
1249
+
1250
+ .code-block:hover .copy-btn {
1251
+ opacity: 1;
1252
+ }
1253
+
1254
+ .code-block .copy-btn:hover {
1255
+ background: var(--primary);
1256
+ color: white;
1257
+ border-color: var(--primary);
1258
+ opacity: 1;
1259
+ }
1260
+
1261
+ /* Best Practice improvements */
1262
+ .best-practice h4 {
1263
+ display: flex;
1264
+ align-items: center;
1265
+ gap: 0.5rem;
1266
+ margin-bottom: 0.75rem;
1267
+ color: var(--text-bright);
1268
+ }
1269
+
1270
+ .bp-icon {
1271
+ font-size: 1.25rem;
1272
+ }
1273
+
1274
+ /* Table inside commands */
1275
+ .command-body .table-container {
1276
+ margin: 1rem 0;
1277
+ }
1278
+
1279
+ /* ============================================
1280
+ SIDEBAR PAGE TOC (Sub-navigation)
1281
+ ============================================ */
1282
+
1283
+ .nav-item-with-toc {
1284
+ flex-direction: column;
1285
+ align-items: stretch;
1286
+ }
1287
+
1288
+ .nav-item-with-toc > a {
1289
+ display: flex;
1290
+ align-items: center;
1291
+ gap: 0.75rem;
1292
+ padding: 0.625rem 1.5rem;
1293
+ color: var(--text-muted);
1294
+ text-decoration: none;
1295
+ transition: all var(--transition-fast);
1296
+ border-left: 3px solid transparent;
1297
+ }
1298
+
1299
+ .nav-item-with-toc > a:hover {
1300
+ background: var(--bg-hover);
1301
+ color: var(--text);
1302
+ }
1303
+
1304
+ .nav-item-with-toc > a.active {
1305
+ background: rgba(99, 102, 241, 0.1);
1306
+ color: var(--primary-light);
1307
+ border-left-color: var(--primary);
1308
+ }
1309
+
1310
+ /* Sidebar TOC submenu */
1311
+ .sidebar-toc {
1312
+ display: none;
1313
+ flex-direction: column;
1314
+ padding: 0.5rem 0 0.5rem 2.5rem;
1315
+ background: rgba(0, 0, 0, 0.15);
1316
+ border-left: 3px solid var(--primary);
1317
+ margin-left: 0;
1318
+ }
1319
+
1320
+ .sidebar-toc.open {
1321
+ display: flex;
1322
+ }
1323
+
1324
+ .sidebar-toc-link {
1325
+ display: block;
1326
+ font-size: 0.8rem;
1327
+ color: var(--text-muted);
1328
+ text-decoration: none;
1329
+ padding: 0.375rem 0.75rem;
1330
+ border-radius: 4px;
1331
+ transition: all var(--transition-fast);
1332
+ position: relative;
1333
+ }
1334
+
1335
+ .sidebar-toc-link::before {
1336
+ content: '';
1337
+ position: absolute;
1338
+ left: 0;
1339
+ top: 50%;
1340
+ transform: translateY(-50%);
1341
+ width: 4px;
1342
+ height: 4px;
1343
+ background: var(--border-light);
1344
+ border-radius: 50%;
1345
+ opacity: 0;
1346
+ transition: opacity var(--transition-fast);
1347
+ }
1348
+
1349
+ .sidebar-toc-link:hover {
1350
+ color: var(--text);
1351
+ background: var(--bg-hover);
1352
+ }
1353
+
1354
+ .sidebar-toc-link:hover::before {
1355
+ opacity: 1;
1356
+ }
1357
+
1358
+ .sidebar-toc-link.active {
1359
+ color: var(--primary-light);
1360
+ background: rgba(99, 102, 241, 0.15);
1361
+ }
1362
+
1363
+ .sidebar-toc-link.active::before {
1364
+ opacity: 1;
1365
+ background: var(--primary);
1366
+ width: 6px;
1367
+ height: 6px;
1368
+ }
1369
+
1370
+ /* TOC toggle button */
1371
+ .toc-toggle {
1372
+ margin-left: auto;
1373
+ background: none;
1374
+ border: none;
1375
+ color: var(--text-muted);
1376
+ cursor: pointer;
1377
+ padding: 0.25rem;
1378
+ font-size: 0.7rem;
1379
+ transition: transform var(--transition-fast);
1380
+ }
1381
+
1382
+ .toc-toggle.open {
1383
+ transform: rotate(90deg);
1384
+ }
1385
+
1386
+ /* Hide sidebar TOC when sidebar is collapsed */
1387
+ .sidebar.collapsed .sidebar-toc {
1388
+ display: none !important;
1389
+ }
1390
+
1391
+ .sidebar.collapsed .toc-toggle {
1392
+ display: none;
1393
+ }
1394
+
1395
+ /* Full width content (no inline TOC) */
1396
+ .content-full {
1397
+ max-width: 1000px;
1398
+ margin: 0 auto;
1399
+ padding: 2rem 2.5rem;
1400
+ }
1401
+
1402
+ @media (max-width: 768px) {
1403
+ .content-full {
1404
+ padding: 1.5rem 1rem;
1405
+ }
1406
+ }
1407
+
1408
+ /* Wide content (no TOC) */
1409
+ .content-wide {
1410
+ max-width: 900px;
1411
+ margin: 0 auto;
1412
+ padding: 2rem;
1413
+ }
1414
+
1415
+ /* ============================================
1416
+ SVG DIAGRAMS
1417
+ ============================================ */
1418
+
1419
+ .svg-diagram {
1420
+ background: var(--bg-card);
1421
+ border: 1px solid var(--border);
1422
+ border-radius: 12px;
1423
+ padding: 2rem;
1424
+ margin: 2rem 0;
1425
+ overflow-x: auto;
1426
+ display: flex;
1427
+ justify-content: center;
1428
+ }
1429
+
1430
+ .svg-diagram svg {
1431
+ max-width: 100%;
1432
+ height: auto;
1433
+ }
1434
+
1435
+ /* GitFlow branch colors */
1436
+ .branch-main { fill: #ef4444; }
1437
+ .branch-develop { fill: #f97316; }
1438
+ .branch-feature { fill: #22c55e; }
1439
+ .branch-release { fill: #eab308; }
1440
+ .branch-hotfix { fill: #ec4899; }
1441
+
1442
+ .branch-line-main { stroke: #ef4444; }
1443
+ .branch-line-develop { stroke: #f97316; }
1444
+ .branch-line-feature { stroke: #22c55e; }
1445
+ .branch-line-release { stroke: #eab308; }
1446
+ .branch-line-hotfix { stroke: #ec4899; }
1447
+
1448
+ /* Diagram legend */
1449
+ .diagram-legend {
1450
+ display: flex;
1451
+ flex-wrap: wrap;
1452
+ gap: 1.5rem;
1453
+ justify-content: center;
1454
+ margin-top: 1.5rem;
1455
+ padding-top: 1.5rem;
1456
+ border-top: 1px solid var(--border);
1457
+ }
1458
+
1459
+ .legend-item {
1460
+ display: flex;
1461
+ align-items: center;
1462
+ gap: 0.5rem;
1463
+ font-size: 0.875rem;
1464
+ color: var(--text-muted);
1465
+ }
1466
+
1467
+ .legend-color {
1468
+ width: 16px;
1469
+ height: 16px;
1470
+ border-radius: 50%;
1471
+ }
1472
+
1473
+ .legend-color.main { background: #ef4444; }
1474
+ .legend-color.develop { background: #f97316; }
1475
+ .legend-color.feature { background: #22c55e; }
1476
+ .legend-color.release { background: #eab308; }
1477
+ .legend-color.hotfix { background: #ec4899; }
1478
+
1479
+ /* APEX cycle diagram */
1480
+ .apex-cycle {
1481
+ display: flex;
1482
+ flex-direction: column;
1483
+ align-items: center;
1484
+ gap: 1rem;
1485
+ }
1486
+
1487
+ /* EF Core structure diagram */
1488
+ .efcore-structure {
1489
+ display: flex;
1490
+ flex-direction: column;
1491
+ gap: 1rem;
1492
+ }
1493
+
1494
+ /* Interactive diagram hover */
1495
+ .svg-diagram svg g[data-tooltip]:hover {
1496
+ cursor: pointer;
1497
+ filter: brightness(1.2);
1498
+ }
1499
+
1500
+ /* Tooltip for SVG */
1501
+ .svg-tooltip {
1502
+ position: absolute;
1503
+ background: var(--bg-dark);
1504
+ border: 1px solid var(--border);
1505
+ padding: 0.5rem 0.75rem;
1506
+ border-radius: 6px;
1507
+ font-size: 0.8rem;
1508
+ color: var(--text);
1509
+ pointer-events: none;
1510
+ z-index: 1000;
1511
+ max-width: 250px;
1512
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1513
+ }
1514
+
1515
+ /* Responsive adjustments for diagrams */
1516
+ @media (max-width: 768px) {
1517
+ .svg-diagram {
1518
+ padding: 1rem;
1519
+ }
1520
+
1521
+ .diagram-legend {
1522
+ gap: 1rem;
1523
+ }
1524
+
1525
+ .legend-item {
1526
+ font-size: 0.75rem;
1527
+ }
1528
+ }
1529
+
1530
+ /* ============================================
1531
+ INTERACTIVE DIAGRAM TOOLTIP
1532
+ ============================================ */
1533
+
1534
+ .svg-diagram {
1535
+ position: relative;
1536
+ flex-direction: column;
1537
+ align-items: center;
1538
+ }
1539
+
1540
+ .diagram-hint {
1541
+ text-align: center;
1542
+ font-size: 0.85rem;
1543
+ color: var(--text-muted);
1544
+ margin-top: 1rem;
1545
+ padding: 0.5rem 1rem;
1546
+ background: rgba(99, 102, 241, 0.1);
1547
+ border-radius: 6px;
1548
+ border: 1px dashed var(--primary);
1549
+ }
1550
+
1551
+ /* Clickable SVG elements */
1552
+ .clickable-element {
1553
+ cursor: pointer;
1554
+ transition: filter 0.2s ease, opacity 0.2s ease;
1555
+ }
1556
+
1557
+ .clickable-element:hover {
1558
+ filter: url(#highlight) brightness(1.15);
1559
+ }
1560
+
1561
+ .clickable-element.active {
1562
+ filter: url(#highlight) brightness(1.25);
1563
+ }
1564
+
1565
+ .clickable-element .hit-area {
1566
+ pointer-events: all;
1567
+ }
1568
+
1569
+ /* Diagram tooltip */
1570
+ .diagram-tooltip {
1571
+ position: absolute;
1572
+ background: var(--bg-dark);
1573
+ border: 1px solid var(--primary);
1574
+ border-radius: 10px;
1575
+ padding: 1rem 1.25rem;
1576
+ max-width: 350px;
1577
+ min-width: 250px;
1578
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(99, 102, 241, 0.2);
1579
+ z-index: 1000;
1580
+ opacity: 0;
1581
+ visibility: hidden;
1582
+ transform: translateY(10px);
1583
+ transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
1584
+ pointer-events: none;
1585
+ }
1586
+
1587
+ .diagram-tooltip.visible {
1588
+ opacity: 1;
1589
+ visibility: visible;
1590
+ transform: translateY(0);
1591
+ pointer-events: auto;
1592
+ }
1593
+
1594
+ .diagram-tooltip .tooltip-title {
1595
+ font-weight: 600;
1596
+ font-size: 0.95rem;
1597
+ color: var(--primary-light);
1598
+ margin-bottom: 0.5rem;
1599
+ padding-bottom: 0.5rem;
1600
+ border-bottom: 1px solid var(--border);
1601
+ }
1602
+
1603
+ .diagram-tooltip .tooltip-desc {
1604
+ font-size: 0.85rem;
1605
+ color: var(--text);
1606
+ line-height: 1.6;
1607
+ }
1608
+
1609
+ .diagram-tooltip .tooltip-cmd {
1610
+ display: inline-block;
1611
+ background: var(--bg-code);
1612
+ color: var(--secondary);
1613
+ padding: 0.15rem 0.4rem;
1614
+ border-radius: 4px;
1615
+ font-family: 'Fira Code', 'Cascadia Code', monospace;
1616
+ font-size: 0.8rem;
1617
+ margin-top: 0.5rem;
1618
+ }
1619
+
1620
+ /* Close hint for tooltip */
1621
+ .diagram-tooltip::after {
1622
+ content: 'Cliquez ailleurs pour fermer';
1623
+ display: block;
1624
+ font-size: 0.7rem;
1625
+ color: var(--text-muted);
1626
+ text-align: center;
1627
+ margin-top: 0.75rem;
1628
+ padding-top: 0.5rem;
1629
+ border-top: 1px solid var(--border);
1630
+ }
1631
+
1632
+ body.lang-en .diagram-tooltip::after {
1633
+ content: 'Click outside to close';
1634
+ }
1635
+
1636
+ /* Responsive tooltip */
1637
+ @media (max-width: 768px) {
1638
+ .diagram-tooltip {
1639
+ max-width: 280px;
1640
+ min-width: 200px;
1641
+ padding: 0.875rem 1rem;
1642
+ }
1643
+
1644
+ .diagram-tooltip .tooltip-title {
1645
+ font-size: 0.9rem;
1646
+ }
1647
+
1648
+ .diagram-tooltip .tooltip-desc {
1649
+ font-size: 0.8rem;
1650
+ }
1651
+ }
1652
+
1653
+ /* ============================================
1654
+ WORKFLOW STEPPER (Visual Steps)
1655
+ ============================================ */
1656
+
1657
+ .workflow-stepper {
1658
+ display: flex;
1659
+ flex-wrap: wrap;
1660
+ gap: 0.5rem;
1661
+ margin: 1.5rem 0;
1662
+ padding: 1.25rem;
1663
+ background: var(--bg-card);
1664
+ border: 1px solid var(--border);
1665
+ border-radius: 12px;
1666
+ }
1667
+
1668
+ .workflow-stepper-item {
1669
+ display: flex;
1670
+ align-items: center;
1671
+ gap: 0.5rem;
1672
+ }
1673
+
1674
+ .step-number {
1675
+ width: 28px;
1676
+ height: 28px;
1677
+ background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
1678
+ border-radius: 50%;
1679
+ display: flex;
1680
+ align-items: center;
1681
+ justify-content: center;
1682
+ font-weight: 700;
1683
+ font-size: 0.75rem;
1684
+ color: white;
1685
+ flex-shrink: 0;
1686
+ box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);
1687
+ }
1688
+
1689
+ .step-label {
1690
+ font-size: 0.85rem;
1691
+ font-weight: 500;
1692
+ color: var(--text);
1693
+ white-space: nowrap;
1694
+ }
1695
+
1696
+ .step-arrow {
1697
+ color: var(--text-muted);
1698
+ font-size: 1rem;
1699
+ margin: 0 0.25rem;
1700
+ opacity: 0.5;
1701
+ }
1702
+
1703
+ /* Workflow Stepper Vertical (for longer workflows) */
1704
+ .workflow-stepper-vertical {
1705
+ display: grid;
1706
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1707
+ gap: 0.75rem;
1708
+ margin: 1.5rem 0;
1709
+ padding: 1rem;
1710
+ background: var(--bg-card);
1711
+ border: 1px solid var(--border);
1712
+ border-radius: 12px;
1713
+ }
1714
+
1715
+ .workflow-stepper-vertical .step-item {
1716
+ display: flex;
1717
+ align-items: center;
1718
+ gap: 0.75rem;
1719
+ padding: 0.75rem;
1720
+ background: var(--bg-dark);
1721
+ border-radius: 8px;
1722
+ border: 1px solid var(--border);
1723
+ transition: all var(--transition-fast);
1724
+ }
1725
+
1726
+ .workflow-stepper-vertical .step-item:hover {
1727
+ border-color: var(--primary);
1728
+ transform: translateY(-1px);
1729
+ box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15);
1730
+ }
1731
+
1732
+ .workflow-stepper-vertical .step-number {
1733
+ width: 32px;
1734
+ height: 32px;
1735
+ font-size: 0.85rem;
1736
+ }
1737
+
1738
+ .workflow-stepper-vertical .step-content {
1739
+ flex: 1;
1740
+ min-width: 0;
1741
+ }
1742
+
1743
+ .workflow-stepper-vertical .step-title {
1744
+ font-weight: 600;
1745
+ font-size: 0.85rem;
1746
+ color: var(--text-bright);
1747
+ margin-bottom: 0.15rem;
1748
+ }
1749
+
1750
+ .workflow-stepper-vertical .step-desc {
1751
+ font-size: 0.75rem;
1752
+ color: var(--text-muted);
1753
+ white-space: nowrap;
1754
+ overflow: hidden;
1755
+ text-overflow: ellipsis;
1756
+ }
1757
+
1758
+ /* Workflow Colors by type */
1759
+ .step-number.step-validate { background: linear-gradient(135deg, var(--info) 0%, #1d4ed8 100%); }
1760
+ .step-number.step-analyze { background: linear-gradient(135deg, var(--accent) 0%, #0891b2 100%); }
1761
+ .step-number.step-detect { background: linear-gradient(135deg, var(--success) 0%, #15803d 100%); }
1762
+ .step-number.step-search { background: linear-gradient(135deg, var(--warning) 0%, #ca8a04 100%); }
1763
+ .step-number.step-decision { background: linear-gradient(135deg, var(--secondary) 0%, #c2410c 100%); }
1764
+ .step-number.step-input { background: linear-gradient(135deg, #a855f7 0%, #7c3aed 100%); }
1765
+ .step-number.step-generate { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); }
1766
+ .step-number.step-create { background: linear-gradient(135deg, var(--success) 0%, #15803d 100%); }
1767
+ .step-number.step-confirm { background: linear-gradient(135deg, var(--accent) 0%, #0891b2 100%); }
1768
+
1769
+ /* Responsive */
1770
+ @media (max-width: 768px) {
1771
+ .workflow-stepper {
1772
+ flex-direction: column;
1773
+ gap: 0.75rem;
1774
+ }
1775
+
1776
+ .workflow-stepper-item {
1777
+ width: 100%;
1778
+ }
1779
+
1780
+ .step-arrow {
1781
+ display: none;
1782
+ }
1783
+
1784
+ .workflow-stepper-vertical {
1785
+ grid-template-columns: 1fr;
1786
+ }
1787
+ }
1788
+
1789
+ /* ============================================
1790
+ TEMPLATE SECTIONS (Collapsible)
1791
+ ============================================ */
1792
+
1793
+ .template-section {
1794
+ margin-top: 1.5rem;
1795
+ border: 1px solid var(--border);
1796
+ border-radius: 8px;
1797
+ background: var(--bg-dark);
1798
+ overflow: hidden;
1799
+ }
1800
+
1801
+ .template-section summary {
1802
+ display: flex;
1803
+ align-items: center;
1804
+ gap: 0.75rem;
1805
+ padding: 1rem 1.25rem;
1806
+ cursor: pointer;
1807
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(249, 115, 22, 0.1) 100%);
1808
+ border-bottom: 1px solid transparent;
1809
+ transition: all var(--transition-fast);
1810
+ }
1811
+
1812
+ .template-section summary:hover {
1813
+ background: linear-gradient(135deg, rgba(99, 102, 241, 0.15) 0%, rgba(249, 115, 22, 0.15) 100%);
1814
+ }
1815
+
1816
+ .template-section[open] summary {
1817
+ border-bottom-color: var(--border);
1818
+ }
1819
+
1820
+ .template-section summary::marker,
1821
+ .template-section summary::-webkit-details-marker {
1822
+ display: none;
1823
+ }
1824
+
1825
+ .template-section summary::before {
1826
+ content: '\25B6';
1827
+ font-size: 0.7rem;
1828
+ color: var(--primary);
1829
+ transition: transform var(--transition-fast);
1830
+ }
1831
+
1832
+ .template-section[open] summary::before {
1833
+ transform: rotate(90deg);
1834
+ }
1835
+
1836
+ .template-section summary h4 {
1837
+ font-size: 0.95rem;
1838
+ color: var(--text-bright);
1839
+ font-weight: 600;
1840
+ }
1841
+
1842
+ .template-badge {
1843
+ background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
1844
+ color: white;
1845
+ padding: 0.2rem 0.6rem;
1846
+ border-radius: 4px;
1847
+ font-size: 0.75rem;
1848
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
1849
+ font-weight: 500;
1850
+ }
1851
+
1852
+ .template-content {
1853
+ padding: 1rem 1.25rem;
1854
+ }
1855
+
1856
+ .template-path {
1857
+ margin-bottom: 1rem;
1858
+ font-size: 0.85rem;
1859
+ color: var(--text-muted);
1860
+ }
1861
+
1862
+ .template-path code {
1863
+ background: var(--bg-hover);
1864
+ padding: 0.25rem 0.5rem;
1865
+ border-radius: 4px;
1866
+ font-size: 0.8rem;
1867
+ }
1868
+
1869
+ .template-code {
1870
+ max-height: 500px;
1871
+ overflow-y: auto;
1872
+ }
1873
+
1874
+ .template-code pre {
1875
+ font-size: 0.8rem !important;
1876
+ line-height: 1.5 !important;
1877
+ }
1878
+
1879
+ .template-code code {
1880
+ white-space: pre-wrap;
1881
+ word-break: break-word;
1882
+ }
1883
+
1884
+ /* ============================================
1885
+ COPYABLE COMMAND BLOCKS
1886
+ ============================================ */
1887
+
1888
+ .cmd-copy {
1889
+ display: inline-flex;
1890
+ align-items: center;
1891
+ gap: 0.5rem;
1892
+ background: var(--bg-code);
1893
+ border: 1px solid var(--border);
1894
+ border-radius: 6px;
1895
+ padding: 0.5rem 0.75rem;
1896
+ margin: 0.25rem 0;
1897
+ font-family: 'Fira Code', 'Cascadia Code', 'JetBrains Mono', monospace;
1898
+ font-size: 0.875rem;
1899
+ color: var(--secondary);
1900
+ cursor: pointer;
1901
+ transition: all var(--transition-fast);
1902
+ position: relative;
1903
+ }
1904
+
1905
+ .cmd-copy:hover {
1906
+ border-color: var(--primary);
1907
+ background: var(--bg-hover);
1908
+ }
1909
+
1910
+ .cmd-copy::after {
1911
+ content: '📋';
1912
+ font-size: 0.75rem;
1913
+ opacity: 0;
1914
+ transition: opacity var(--transition-fast);
1915
+ margin-left: 0.5rem;
1916
+ }
1917
+
1918
+ .cmd-copy:hover::after {
1919
+ opacity: 0.7;
1920
+ }
1921
+
1922
+ .cmd-copy.copied {
1923
+ border-color: var(--success);
1924
+ background: rgba(34, 197, 94, 0.1);
1925
+ }
1926
+
1927
+ .cmd-copy.copied::after {
1928
+ content: '✓';
1929
+ opacity: 1;
1930
+ color: var(--success);
1931
+ }
1932
+
1933
+ /* Block variant for standalone commands */
1934
+ .cmd-copy-block {
1935
+ display: flex;
1936
+ align-items: center;
1937
+ justify-content: space-between;
1938
+ background: var(--bg-code);
1939
+ border: 1px solid var(--border);
1940
+ border-radius: 8px;
1941
+ padding: 0.75rem 1rem;
1942
+ margin: 0.75rem 0;
1943
+ font-family: 'Fira Code', 'Cascadia Code', 'JetBrains Mono', monospace;
1944
+ font-size: 0.9rem;
1945
+ color: var(--secondary);
1946
+ cursor: pointer;
1947
+ transition: all var(--transition-fast);
1948
+ }
1949
+
1950
+ .cmd-copy-block:hover {
1951
+ border-color: var(--primary);
1952
+ background: var(--bg-hover);
1953
+ box-shadow: 0 2px 8px rgba(99, 102, 241, 0.15);
1954
+ }
1955
+
1956
+ .cmd-copy-block .cmd-text {
1957
+ flex: 1;
1958
+ user-select: all;
1959
+ }
1960
+
1961
+ .cmd-copy-block .cmd-copy-btn {
1962
+ background: var(--bg-card);
1963
+ border: 1px solid var(--border);
1964
+ color: var(--text-muted);
1965
+ padding: 0.35rem 0.75rem;
1966
+ border-radius: 4px;
1967
+ font-size: 0.75rem;
1968
+ cursor: pointer;
1969
+ transition: all var(--transition-fast);
1970
+ white-space: nowrap;
1971
+ margin-left: 1rem;
1972
+ }
1973
+
1974
+ .cmd-copy-block .cmd-copy-btn:hover {
1975
+ background: var(--primary);
1976
+ color: white;
1977
+ border-color: var(--primary);
1978
+ }
1979
+
1980
+ .cmd-copy-block.copied {
1981
+ border-color: var(--success);
1982
+ }
1983
+
1984
+ .cmd-copy-block.copied .cmd-copy-btn {
1985
+ background: var(--success);
1986
+ color: white;
1987
+ border-color: var(--success);
1988
+ }
1989
+
1990
+ /* Table cell variant */
1991
+ td .cmd-copy {
1992
+ display: flex;
1993
+ margin: 0;
1994
+ }
1995
+
1996
+ /* Step content variant */
1997
+ .step-content .cmd-copy-block {
1998
+ margin-top: 0.5rem;
1999
+ }
2000
+
2001
+ /* ============================================
2002
+ FILE LINKS (clickable file paths)
2003
+ ============================================ */
2004
+
2005
+ .file-link {
2006
+ color: var(--accent);
2007
+ text-decoration: none;
2008
+ transition: all var(--transition-fast);
2009
+ border-bottom: 1px dotted var(--accent);
2010
+ }
2011
+
2012
+ .file-link:hover {
2013
+ color: var(--primary-light);
2014
+ border-bottom-color: var(--primary-light);
2015
+ text-decoration: none;
2016
+ }
2017
+
2018
+ .file-link code {
2019
+ color: inherit;
2020
+ background: transparent;
2021
+ }
2022
+
2023
+ /* File links in code blocks */
2024
+ pre .file-link {
2025
+ border-bottom: none;
2026
+ }
2027
+
2028
+ pre .file-link:hover {
2029
+ text-decoration: underline;
2030
+ }