@atlashub/smartstack-cli 3.6.0 → 3.8.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 (40) hide show
  1. package/package.json +3 -2
  2. package/templates/skills/business-analyse/SKILL.md +6 -12
  3. package/templates/skills/business-analyse/_architecture.md +1 -1
  4. package/templates/skills/business-analyse/html/ba-interactive.html +3058 -2252
  5. package/templates/skills/business-analyse/html/build-html.js +77 -0
  6. package/templates/skills/business-analyse/html/src/scripts/01-data-init.js +129 -0
  7. package/templates/skills/business-analyse/html/src/scripts/02-navigation.js +22 -0
  8. package/templates/skills/business-analyse/html/src/scripts/03-render-cadrage.js +208 -0
  9. package/templates/skills/business-analyse/html/src/scripts/04-render-modules.js +211 -0
  10. package/templates/skills/business-analyse/html/src/scripts/05-render-specs.js +542 -0
  11. package/templates/skills/business-analyse/html/src/scripts/06-render-consolidation.js +105 -0
  12. package/templates/skills/business-analyse/html/src/scripts/07-render-handoff.js +90 -0
  13. package/templates/skills/business-analyse/html/src/scripts/08-editing.js +45 -0
  14. package/templates/skills/business-analyse/html/src/scripts/09-export.js +65 -0
  15. package/templates/skills/business-analyse/html/src/scripts/10-comments.js +165 -0
  16. package/templates/skills/business-analyse/html/src/scripts/11-review-panel.js +139 -0
  17. package/templates/skills/business-analyse/html/src/styles/01-variables.css +38 -0
  18. package/templates/skills/business-analyse/html/src/styles/02-layout.css +101 -0
  19. package/templates/skills/business-analyse/html/src/styles/03-navigation.css +62 -0
  20. package/templates/skills/business-analyse/html/src/styles/04-cards.css +196 -0
  21. package/templates/skills/business-analyse/html/src/styles/05-modules.css +325 -0
  22. package/templates/skills/business-analyse/html/src/styles/06-wireframes.css +230 -0
  23. package/templates/skills/business-analyse/html/src/styles/07-comments.css +184 -0
  24. package/templates/skills/business-analyse/html/src/styles/08-review-panel.css +229 -0
  25. package/templates/skills/business-analyse/html/src/template.html +622 -0
  26. package/templates/skills/business-analyse/react/components.md +1 -1
  27. package/templates/skills/business-analyse/react/schema.md +1 -1
  28. package/templates/skills/business-analyse/references/html-data-mapping.md +2 -2
  29. package/templates/skills/business-analyse/schemas/feature-schema.json +1 -1
  30. package/templates/skills/business-analyse/steps/step-00-init.md +8 -1
  31. package/templates/skills/business-analyse/steps/step-03d-validate.md +1 -1
  32. package/templates/skills/business-analyse/steps/step-04-consolidation.md +21 -0
  33. package/templates/skills/business-analyse/steps/step-05a-handoff.md +273 -10
  34. package/templates/skills/business-analyse/steps/{step-05d-html.md → step-05b-deploy.md} +262 -63
  35. package/templates/skills/business-analyse/templates/tpl-launch-displays.md +1 -1
  36. package/templates/skills/business-analyse/templates/tpl-progress.md +1 -1
  37. package/templates/skills/ralph-loop/SKILL.md +3 -3
  38. package/templates/skills/ralph-loop/steps/step-00-init.md +77 -1
  39. package/templates/skills/business-analyse/steps/step-05b-mapping.md +0 -302
  40. package/templates/skills/business-analyse/steps/step-05c-deploy.md +0 -296
@@ -0,0 +1,62 @@
1
+ /* ============================================
2
+ SIDEBAR - Navigation 5 niveaux
3
+ ============================================ */
4
+ .nav-group { padding: 1rem 0; }
5
+ .nav-group + .nav-group { border-top: 1px solid var(--border); }
6
+
7
+ .nav-group-title {
8
+ font-size: 0.65rem;
9
+ text-transform: uppercase;
10
+ letter-spacing: 0.1em;
11
+ color: var(--text-muted);
12
+ padding: 0 1rem;
13
+ margin-bottom: 0.5rem;
14
+ font-weight: 600;
15
+ }
16
+
17
+ .nav-item {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 0.5rem;
21
+ padding: 0.45rem 1rem;
22
+ color: var(--text);
23
+ text-decoration: none;
24
+ font-size: 0.85rem;
25
+ cursor: pointer;
26
+ transition: all var(--transition-fast);
27
+ border-left: 3px solid transparent;
28
+ }
29
+ .nav-item:hover { background: var(--bg-hover); color: var(--text-bright); }
30
+ .nav-item.active { background: rgba(99,102,241,0.1); border-left-color: var(--primary); color: var(--primary-light); font-weight: 500; }
31
+
32
+ .nav-item .nav-icon { font-size: 1rem; width: 20px; text-align: center; }
33
+ .nav-item .nav-badge {
34
+ margin-left: auto;
35
+ font-size: 0.65rem;
36
+ background: var(--bg-hover);
37
+ padding: 0.1rem 0.4rem;
38
+ border-radius: 10px;
39
+ color: var(--text-muted);
40
+ }
41
+
42
+ .nav-children { margin-left: 1.2rem; }
43
+ .nav-children .nav-item { font-size: 0.8rem; padding: 0.3rem 1rem; }
44
+
45
+ /* ============================================
46
+ PHASE PROGRESS
47
+ ============================================ */
48
+ .phase-progress {
49
+ display: flex; align-items: center; gap: 0.3rem;
50
+ padding: 0.75rem 1rem; border-bottom: 1px solid var(--border);
51
+ }
52
+ .phase-dot {
53
+ width: 24px; height: 24px; border-radius: 50%;
54
+ display: flex; align-items: center; justify-content: center;
55
+ font-size: 0.6rem; font-weight: 700; color: var(--text-muted);
56
+ background: var(--bg-hover); border: 2px solid var(--border);
57
+ transition: all var(--transition-fast);
58
+ }
59
+ .phase-dot.completed { background: var(--success); border-color: var(--success); color: #fff; }
60
+ .phase-dot.current { background: var(--primary); border-color: var(--primary); color: #fff; }
61
+ .phase-line { flex: 1; height: 2px; background: var(--border); }
62
+ .phase-line.completed { background: var(--success); }
@@ -0,0 +1,196 @@
1
+ /* ============================================
2
+ BUTTONS
3
+ ============================================ */
4
+ .btn {
5
+ padding: 0.4rem 0.9rem;
6
+ border-radius: 6px;
7
+ border: 1px solid var(--border);
8
+ background: var(--bg-hover);
9
+ color: var(--text);
10
+ font-size: 0.8rem;
11
+ cursor: pointer;
12
+ transition: all var(--transition-fast);
13
+ font-family: inherit;
14
+ }
15
+ .btn:hover { border-color: var(--primary); color: var(--text-bright); }
16
+ .btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; }
17
+ .btn-primary:hover { background: var(--primary-dark); }
18
+ .btn-success { background: var(--success); border-color: var(--success); color: #fff; }
19
+ .btn-sm { padding: 0.25rem 0.6rem; font-size: 0.75rem; }
20
+
21
+ /* ============================================
22
+ EDITABLE CARDS
23
+ ============================================ */
24
+ .card {
25
+ background: var(--bg-card);
26
+ border: 1px solid var(--border);
27
+ border-radius: 10px;
28
+ padding: 1.5rem;
29
+ margin-bottom: 1rem;
30
+ transition: border-color var(--transition-fast);
31
+ }
32
+ .card:hover { border-color: var(--border-light); }
33
+
34
+ .card-header {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 0.75rem;
38
+ margin-bottom: 0.75rem;
39
+ }
40
+ .card-label {
41
+ font-size: 0.7rem;
42
+ text-transform: uppercase;
43
+ letter-spacing: 0.08em;
44
+ color: var(--text-muted);
45
+ font-weight: 600;
46
+ }
47
+ .card-title {
48
+ font-size: 1.05rem;
49
+ color: var(--text-bright);
50
+ font-weight: 600;
51
+ }
52
+
53
+ .editable {
54
+ border: 1px dashed transparent;
55
+ border-radius: 6px;
56
+ padding: 0.4rem 0.6rem;
57
+ transition: all var(--transition-fast);
58
+ min-height: 1.5em;
59
+ outline: none;
60
+ }
61
+ .editable:hover { border-color: var(--border-light); background: var(--bg-input); }
62
+ .editable:focus { border-color: var(--primary); background: var(--bg-input); box-shadow: 0 0 0 2px rgba(99,102,241,0.2); }
63
+ .editable[data-placeholder]:empty::before {
64
+ content: attr(data-placeholder);
65
+ color: var(--text-muted);
66
+ font-style: italic;
67
+ }
68
+
69
+ /* ============================================
70
+ PRIORITY BADGES
71
+ ============================================ */
72
+ .priority {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ gap: 0.3rem;
76
+ padding: 0.2rem 0.6rem;
77
+ border-radius: 12px;
78
+ font-size: 0.7rem;
79
+ font-weight: 600;
80
+ text-transform: uppercase;
81
+ letter-spacing: 0.05em;
82
+ }
83
+ .priority-vital { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); }
84
+ .priority-important { background: rgba(234,179,8,0.15); color: #facc15; border: 1px solid rgba(234,179,8,0.3); }
85
+ .priority-optional { background: rgba(34,197,94,0.15); color: #4ade80; border: 1px solid rgba(34,197,94,0.3); }
86
+ .priority-excluded { background: rgba(100,116,139,0.15); color: #94a3b8; border: 1px solid rgba(100,116,139,0.3); }
87
+
88
+ /* ============================================
89
+ STATUS BADGES
90
+ ============================================ */
91
+ .status {
92
+ display: inline-flex; align-items: center; gap: 0.3rem;
93
+ padding: 0.15rem 0.5rem; border-radius: 10px;
94
+ font-size: 0.7rem; font-weight: 500;
95
+ }
96
+ .status-dot { width: 6px; height: 6px; border-radius: 50%; }
97
+ .status-draft .status-dot { background: var(--text-muted); }
98
+ .status-draft { color: var(--text-muted); }
99
+ .status-progress .status-dot { background: var(--info); }
100
+ .status-progress { color: var(--info); }
101
+ .status-done .status-dot { background: var(--success); }
102
+ .status-done { color: var(--success); }
103
+
104
+ /* ============================================
105
+ ADD BUTTON
106
+ ============================================ */
107
+ .add-btn {
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ gap: 0.5rem;
112
+ width: 100%;
113
+ padding: 0.75rem;
114
+ border: 2px dashed var(--border);
115
+ border-radius: 8px;
116
+ background: transparent;
117
+ color: var(--text-muted);
118
+ font-size: 0.85rem;
119
+ cursor: pointer;
120
+ transition: all var(--transition-fast);
121
+ font-family: inherit;
122
+ }
123
+ .add-btn:hover {
124
+ border-color: var(--primary);
125
+ color: var(--primary-light);
126
+ background: rgba(99,102,241,0.05);
127
+ }
128
+
129
+ /* ============================================
130
+ INLINE FORM (for adding items)
131
+ ============================================ */
132
+ .inline-form {
133
+ background: var(--bg-card);
134
+ border: 2px solid var(--primary);
135
+ border-radius: 10px;
136
+ padding: 1.25rem;
137
+ margin-bottom: 1rem;
138
+ display: none;
139
+ }
140
+ .inline-form.visible { display: block; }
141
+ .inline-form-title {
142
+ font-size: 0.9rem;
143
+ font-weight: 600;
144
+ color: var(--primary-light);
145
+ margin-bottom: 1rem;
146
+ }
147
+ .form-group { margin-bottom: 0.75rem; }
148
+ .form-label {
149
+ display: block;
150
+ font-size: 0.75rem;
151
+ color: var(--text-muted);
152
+ margin-bottom: 0.3rem;
153
+ font-weight: 500;
154
+ }
155
+ .form-input, .form-textarea, .form-select {
156
+ width: 100%;
157
+ padding: 0.5rem 0.75rem;
158
+ background: var(--bg-input);
159
+ border: 1px solid var(--border);
160
+ border-radius: 6px;
161
+ color: var(--text);
162
+ font-size: 0.85rem;
163
+ font-family: inherit;
164
+ transition: border-color var(--transition-fast);
165
+ }
166
+ .form-input:focus, .form-textarea:focus, .form-select:focus {
167
+ outline: none;
168
+ border-color: var(--primary);
169
+ box-shadow: 0 0 0 2px rgba(99,102,241,0.2);
170
+ }
171
+ .form-textarea { min-height: 80px; resize: vertical; }
172
+ .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
173
+ .form-actions {
174
+ display: flex; gap: 0.5rem; justify-content: flex-end;
175
+ margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--border);
176
+ }
177
+
178
+ /* ============================================
179
+ NOTIFICATION BAR
180
+ ============================================ */
181
+ .notification {
182
+ position: fixed;
183
+ bottom: 1.5rem;
184
+ right: 1.5rem;
185
+ padding: 0.75rem 1.25rem;
186
+ border-radius: 8px;
187
+ font-size: 0.85rem;
188
+ font-weight: 500;
189
+ z-index: 200;
190
+ transform: translateY(100px);
191
+ opacity: 0;
192
+ transition: all 0.3s ease;
193
+ }
194
+ .notification.visible { transform: translateY(0); opacity: 1; }
195
+ .notification-success { background: var(--success); color: #fff; }
196
+ .notification-info { background: var(--info); color: #fff; }
@@ -0,0 +1,325 @@
1
+ /* ============================================
2
+ USE CASE LIST
3
+ ============================================ */
4
+ .uc-list { list-style: none; }
5
+
6
+ .uc-item {
7
+ background: var(--bg-card);
8
+ border: 1px solid var(--border);
9
+ border-radius: 8px;
10
+ padding: 1rem 1.25rem;
11
+ margin-bottom: 0.75rem;
12
+ transition: border-color var(--transition-fast);
13
+ }
14
+ .uc-item:hover { border-color: var(--border-light); }
15
+
16
+ .uc-header {
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 0.75rem;
20
+ margin-bottom: 0.5rem;
21
+ }
22
+ .uc-id {
23
+ font-size: 0.7rem;
24
+ font-weight: 700;
25
+ color: var(--primary-light);
26
+ background: rgba(99,102,241,0.1);
27
+ padding: 0.15rem 0.5rem;
28
+ border-radius: 4px;
29
+ }
30
+ .uc-title { font-weight: 600; color: var(--text-bright); flex: 1; }
31
+ .uc-actions { display: flex; gap: 0.3rem; opacity: 0; transition: opacity var(--transition-fast); }
32
+ .uc-item:hover .uc-actions { opacity: 1; }
33
+
34
+ .uc-detail { font-size: 0.875rem; color: var(--text); }
35
+ .uc-detail-label { color: var(--text-muted); font-size: 0.75rem; font-weight: 600; margin-top: 0.5rem; }
36
+
37
+ .uc-actors {
38
+ display: flex; gap: 0.4rem; margin-top: 0.3rem; flex-wrap: wrap;
39
+ }
40
+ .uc-actor {
41
+ font-size: 0.7rem;
42
+ padding: 0.1rem 0.4rem;
43
+ background: rgba(6,182,212,0.1);
44
+ color: var(--accent);
45
+ border-radius: 4px;
46
+ border: 1px solid rgba(6,182,212,0.2);
47
+ }
48
+
49
+ /* ============================================
50
+ BUSINESS RULE LIST
51
+ ============================================ */
52
+ .br-item {
53
+ display: flex;
54
+ align-items: flex-start;
55
+ gap: 0.75rem;
56
+ padding: 0.75rem 1rem;
57
+ background: var(--bg-card);
58
+ border: 1px solid var(--border);
59
+ border-radius: 8px;
60
+ margin-bottom: 0.5rem;
61
+ }
62
+ .br-category {
63
+ font-size: 0.65rem;
64
+ font-weight: 700;
65
+ text-transform: uppercase;
66
+ padding: 0.15rem 0.4rem;
67
+ border-radius: 4px;
68
+ flex-shrink: 0;
69
+ min-width: 70px;
70
+ text-align: center;
71
+ }
72
+ .br-cat-validation { background: rgba(99,102,241,0.15); color: var(--primary-light); }
73
+ .br-cat-calculation { background: rgba(234,179,8,0.15); color: #facc15; }
74
+ .br-cat-workflow { background: rgba(249,115,22,0.15); color: var(--secondary); }
75
+ .br-cat-security { background: rgba(239,68,68,0.15); color: #f87171; }
76
+ .br-cat-data { background: rgba(6,182,212,0.15); color: var(--accent); }
77
+ .br-text { flex: 1; font-size: 0.875rem; }
78
+
79
+ /* ============================================
80
+ STAKEHOLDER TABLE
81
+ ============================================ */
82
+ .stakeholder-grid {
83
+ display: grid;
84
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
85
+ gap: 1rem;
86
+ }
87
+ .stakeholder-card {
88
+ background: var(--bg-card);
89
+ border: 1px solid var(--border);
90
+ border-radius: 10px;
91
+ padding: 1rem;
92
+ }
93
+ .stakeholder-card:hover { border-color: var(--border-light); }
94
+ .stakeholder-role { font-weight: 600; color: var(--text-bright); margin-bottom: 0.25rem; }
95
+ .stakeholder-function { font-size: 0.8rem; color: var(--text-muted); margin-bottom: 0.5rem; }
96
+ .stakeholder-tasks { list-style: none; }
97
+ .stakeholder-tasks li {
98
+ font-size: 0.8rem;
99
+ padding: 0.15rem 0;
100
+ color: var(--text);
101
+ }
102
+ .stakeholder-tasks li::before { content: "- "; color: var(--primary-light); }
103
+ .stakeholder-meta {
104
+ display: flex; gap: 0.75rem; margin-top: 0.5rem; padding-top: 0.5rem;
105
+ border-top: 1px solid var(--border);
106
+ }
107
+ .stakeholder-meta span { font-size: 0.7rem; color: var(--text-muted); }
108
+
109
+ /* ============================================
110
+ PROCESS FLOW
111
+ ============================================ */
112
+ .process-flow {
113
+ display: flex;
114
+ align-items: center;
115
+ gap: 0.25rem;
116
+ overflow-x: auto;
117
+ padding: 1rem 0;
118
+ }
119
+ .process-step {
120
+ background: var(--bg-card);
121
+ border: 1px solid var(--border);
122
+ border-radius: 8px;
123
+ padding: 0.75rem 1rem;
124
+ min-width: 140px;
125
+ text-align: center;
126
+ flex-shrink: 0;
127
+ }
128
+ .process-step:hover { border-color: var(--primary); }
129
+ .process-step-number {
130
+ font-size: 0.65rem;
131
+ color: var(--primary-light);
132
+ font-weight: 700;
133
+ }
134
+ .process-step-label { font-size: 0.8rem; color: var(--text-bright); font-weight: 500; }
135
+ .process-arrow { color: var(--text-muted); font-size: 1.2rem; flex-shrink: 0; }
136
+
137
+ /* ============================================
138
+ RISK TABLE
139
+ ============================================ */
140
+ .risk-item {
141
+ display: grid;
142
+ grid-template-columns: auto 1fr auto auto;
143
+ gap: 1rem;
144
+ align-items: center;
145
+ padding: 0.75rem 1rem;
146
+ background: var(--bg-card);
147
+ border: 1px solid var(--border);
148
+ border-radius: 8px;
149
+ margin-bottom: 0.5rem;
150
+ }
151
+ .risk-level {
152
+ width: 10px; height: 10px;
153
+ border-radius: 50%;
154
+ }
155
+ .risk-critical { background: var(--error); }
156
+ .risk-medium { background: var(--warning); }
157
+ .risk-low { background: var(--success); }
158
+ .risk-text { font-size: 0.875rem; }
159
+ .risk-probability, .risk-impact {
160
+ font-size: 0.7rem;
161
+ color: var(--text-muted);
162
+ text-align: center;
163
+ }
164
+
165
+ /* ============================================
166
+ MODULE CARDS (Decomposition)
167
+ ============================================ */
168
+ .module-grid {
169
+ display: grid;
170
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
171
+ gap: 1rem;
172
+ }
173
+ .module-card {
174
+ background: var(--bg-card);
175
+ border: 1px solid var(--border);
176
+ border-radius: 10px;
177
+ padding: 1rem;
178
+ cursor: pointer;
179
+ transition: all var(--transition-fast);
180
+ position: relative;
181
+ }
182
+ .module-card:hover { border-color: var(--primary); }
183
+ .module-card.selected { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(99,102,241,0.2); }
184
+ .module-card-header { display: flex; justify-content: space-between; align-items: start; margin-bottom: 0.5rem; }
185
+ .module-card-code { font-weight: 700; color: var(--text-bright); font-size: 1rem; }
186
+ .module-card-type {
187
+ font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em;
188
+ padding: 0.15rem 0.5rem; border-radius: 4px;
189
+ background: rgba(99,102,241,0.1); color: var(--primary-light);
190
+ }
191
+ .module-card-desc { font-size: 0.8rem; color: var(--text-muted); margin-bottom: 0.5rem; }
192
+ .module-card-meta { display: flex; gap: 0.75rem; font-size: 0.7rem; color: var(--text-muted); }
193
+ .module-card-meta span { display: flex; align-items: center; gap: 0.2rem; }
194
+ .module-card-remove {
195
+ position: absolute; top: 0.5rem; right: 0.5rem;
196
+ background: none; border: none; color: var(--text-muted);
197
+ cursor: pointer; font-size: 0.8rem; opacity: 0;
198
+ transition: opacity var(--transition-fast);
199
+ }
200
+ .module-card:hover .module-card-remove { opacity: 1; }
201
+ .module-card-remove:hover { color: var(--error); }
202
+
203
+ /* ============================================
204
+ TABS (Module Specification)
205
+ ============================================ */
206
+ .tab-bar {
207
+ display: flex;
208
+ gap: 0;
209
+ border-bottom: 1px solid var(--border);
210
+ margin-bottom: 1.5rem;
211
+ overflow-x: auto;
212
+ }
213
+ .tab-btn {
214
+ padding: 0.6rem 1rem;
215
+ background: none;
216
+ border: none;
217
+ border-bottom: 2px solid transparent;
218
+ color: var(--text-muted);
219
+ font-size: 0.8rem;
220
+ font-family: inherit;
221
+ cursor: pointer;
222
+ white-space: nowrap;
223
+ transition: all var(--transition-fast);
224
+ }
225
+ .tab-btn:hover { color: var(--text-bright); background: var(--bg-hover); }
226
+ .tab-btn.active { color: var(--primary-light); border-bottom-color: var(--primary); font-weight: 500; }
227
+ .tab-panel { display: none; }
228
+ .tab-panel.active { display: block; }
229
+
230
+ /* ============================================
231
+ ENTITY TABLE
232
+ ============================================ */
233
+ .entity-block {
234
+ background: var(--bg-card);
235
+ border: 1px solid var(--border);
236
+ border-radius: 10px;
237
+ margin-bottom: 1rem;
238
+ overflow: hidden;
239
+ }
240
+ .entity-header {
241
+ display: flex; align-items: center; justify-content: space-between;
242
+ padding: 0.75rem 1rem;
243
+ background: var(--bg-hover);
244
+ border-bottom: 1px solid var(--border);
245
+ }
246
+ .entity-name { font-weight: 600; color: var(--text-bright); }
247
+ .entity-desc { font-size: 0.8rem; color: var(--text-muted); }
248
+ .attr-table { width: 100%; border-collapse: collapse; }
249
+ .attr-table th {
250
+ text-align: left; font-size: 0.7rem; text-transform: uppercase;
251
+ letter-spacing: 0.05em; color: var(--text-muted); padding: 0.5rem 0.75rem;
252
+ border-bottom: 1px solid var(--border); font-weight: 600;
253
+ }
254
+ .attr-table td {
255
+ padding: 0.5rem 0.75rem; font-size: 0.85rem;
256
+ border-bottom: 1px solid rgba(51,65,85,0.3);
257
+ }
258
+ .attr-required { color: var(--error); font-weight: 700; }
259
+
260
+ /* ============================================
261
+ DEPENDENCY VISUALIZATION
262
+ ============================================ */
263
+ .dep-graph {
264
+ display: flex; flex-direction: column; gap: 1.5rem;
265
+ padding: 1.5rem; background: var(--bg-card); border: 1px solid var(--border);
266
+ border-radius: 10px;
267
+ }
268
+ .dep-layer {
269
+ display: flex; align-items: center; gap: 1rem;
270
+ }
271
+ .dep-layer-label {
272
+ font-size: 0.7rem; color: var(--text-muted); text-transform: uppercase;
273
+ letter-spacing: 0.05em; min-width: 80px; font-weight: 600;
274
+ }
275
+ .dep-layer-modules { display: flex; gap: 0.75rem; flex-wrap: wrap; }
276
+ .dep-module {
277
+ padding: 0.4rem 0.8rem; border-radius: 6px;
278
+ background: rgba(99,102,241,0.1); border: 1px solid rgba(99,102,241,0.3);
279
+ color: var(--primary-light); font-size: 0.8rem; font-weight: 500;
280
+ }
281
+ .dep-arrow {
282
+ text-align: center; color: var(--text-muted); font-size: 1.2rem;
283
+ padding-left: 80px;
284
+ }
285
+
286
+ /* ============================================
287
+ STAT CARDS (Handoff)
288
+ ============================================ */
289
+ .stat-grid {
290
+ display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
291
+ gap: 1rem; margin-bottom: 1.5rem;
292
+ }
293
+ .stat-card {
294
+ background: var(--bg-card); border: 1px solid var(--border);
295
+ border-radius: 10px; padding: 1rem; text-align: center;
296
+ }
297
+ .stat-value { font-size: 1.8rem; font-weight: 700; color: var(--text-bright); }
298
+ .stat-label { font-size: 0.75rem; color: var(--text-muted); margin-top: 0.2rem; }
299
+
300
+ /* ============================================
301
+ CONSOLIDATION
302
+ ============================================ */
303
+ .interaction-item {
304
+ display: flex; align-items: center; gap: 0.75rem;
305
+ padding: 0.75rem 1rem; background: var(--bg-card);
306
+ border: 1px solid var(--border); border-radius: 8px;
307
+ margin-bottom: 0.5rem; font-size: 0.85rem;
308
+ }
309
+ .interaction-arrow { color: var(--primary-light); font-weight: 700; font-size: 1.1rem; }
310
+ .interaction-type {
311
+ font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em;
312
+ padding: 0.15rem 0.4rem; border-radius: 4px;
313
+ background: rgba(6,182,212,0.1); color: var(--accent);
314
+ }
315
+ .e2e-flow {
316
+ display: flex; align-items: center; gap: 0.3rem;
317
+ overflow-x: auto; padding: 1rem 0;
318
+ }
319
+ .e2e-step {
320
+ padding: 0.5rem 0.75rem; border-radius: 6px; text-align: center;
321
+ font-size: 0.75rem; flex-shrink: 0;
322
+ background: var(--bg-card); border: 1px solid var(--border);
323
+ }
324
+ .e2e-step-module { font-weight: 600; color: var(--primary-light); font-size: 0.65rem; }
325
+ .e2e-step-action { color: var(--text-bright); }