commit-ai-agent 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/style.css CHANGED
@@ -1,27 +1,38 @@
1
1
  /* ── Reset & Variables ── */
2
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
2
+ *,
3
+ *::before,
4
+ *::after {
5
+ box-sizing: border-box;
6
+ margin: 0;
7
+ padding: 0;
8
+ }
3
9
 
4
10
  :root {
5
- --bg: #0f1117;
6
- --bg2: #161b27;
7
- --bg3: #1e2535;
8
- --border: #2a3245;
9
- --primary: #6366f1;
11
+ --bg: #0f1117;
12
+ --bg2: #161b27;
13
+ --bg3: #1e2535;
14
+ --border: #2a3245;
15
+ --primary: #6366f1;
10
16
  --primary-h: #818cf8;
11
- --accent: #22d3ee;
12
- --success: #34d399;
13
- --warn: #fb923c;
14
- --danger: #f87171;
15
- --text: #e2e8f0;
16
- --text2: #94a3b8;
17
- --text3: #475569;
18
- --radius: 12px;
19
- --shadow: 0 4px 24px rgba(0,0,0,0.4);
20
- }
21
-
22
- html { scroll-behavior: smooth; }
17
+ --accent: #22d3ee;
18
+ --success: #34d399;
19
+ --warn: #fb923c;
20
+ --danger: #f87171;
21
+ --text: #e2e8f0;
22
+ --text2: #94a3b8;
23
+ --text3: #475569;
24
+ --radius: 12px;
25
+ --shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
26
+ }
27
+
28
+ html {
29
+ scroll-behavior: smooth;
30
+ }
23
31
  body {
24
- font-family: 'Pretendard', -apple-system, sans-serif;
32
+ font-family:
33
+ "Pretendard",
34
+ -apple-system,
35
+ sans-serif;
25
36
  background: var(--bg);
26
37
  color: var(--text);
27
38
  min-height: 100vh;
@@ -29,62 +40,128 @@ body {
29
40
  }
30
41
 
31
42
  /* ── Scrollbar ── */
32
- ::-webkit-scrollbar { width: 6px; height: 6px; }
33
- ::-webkit-scrollbar-track { background: var(--bg2); }
34
- ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
43
+ ::-webkit-scrollbar {
44
+ width: 6px;
45
+ height: 6px;
46
+ }
47
+ ::-webkit-scrollbar-track {
48
+ background: var(--bg2);
49
+ }
50
+ ::-webkit-scrollbar-thumb {
51
+ background: var(--border);
52
+ border-radius: 3px;
53
+ }
35
54
 
36
55
  /* ── Header ── */
37
56
  .header {
38
- position: sticky; top: 0; z-index: 50;
39
- background: rgba(15,17,23,0.85);
57
+ position: sticky;
58
+ top: 0;
59
+ z-index: 50;
60
+ background: rgba(15, 17, 23, 0.85);
40
61
  backdrop-filter: blur(12px);
41
62
  border-bottom: 1px solid var(--border);
42
63
  }
43
64
  .header-inner {
44
- max-width: 1100px; margin: 0 auto;
65
+ max-width: 1100px;
66
+ margin: 0 auto;
45
67
  padding: 0 24px;
46
68
  height: 60px;
47
- display: flex; align-items: center; gap: 20px;
69
+ display: flex;
70
+ align-items: center;
71
+ gap: 20px;
72
+ }
73
+ .logo {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 8px;
77
+ }
78
+ .logo-icon {
79
+ font-size: 22px;
80
+ }
81
+ .logo-text {
82
+ font-size: 17px;
83
+ font-weight: 700;
84
+ letter-spacing: -0.3px;
48
85
  }
49
- .logo { display: flex; align-items: center; gap: 8px; }
50
- .logo-icon { font-size: 22px; }
51
- .logo-text { font-size: 17px; font-weight: 700; letter-spacing: -0.3px; }
52
86
  .logo-badge {
53
- font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
87
+ font-size: 10px;
88
+ font-weight: 700;
89
+ letter-spacing: 0.5px;
54
90
  background: linear-gradient(135deg, var(--primary), var(--accent));
55
- color: #fff; padding: 2px 7px; border-radius: 99px;
91
+ color: #fff;
92
+ padding: 2px 7px;
93
+ border-radius: 99px;
94
+ }
95
+ .header-nav {
96
+ display: flex;
97
+ gap: 4px;
98
+ margin-left: auto;
56
99
  }
57
- .header-nav { display: flex; gap: 4px; margin-left: auto; }
58
100
  .nav-btn {
59
- background: none; border: none; color: var(--text2);
60
- padding: 6px 14px; border-radius: 8px; cursor: pointer;
61
- font-size: 14px; font-weight: 500; transition: all 0.2s;
101
+ background: none;
102
+ border: none;
103
+ color: var(--text2);
104
+ padding: 6px 14px;
105
+ border-radius: 8px;
106
+ cursor: pointer;
107
+ font-size: 14px;
108
+ font-weight: 500;
109
+ transition: all 0.2s;
110
+ }
111
+ .nav-btn:hover {
112
+ background: var(--bg3);
113
+ color: var(--text);
114
+ }
115
+ .nav-btn.active {
116
+ background: var(--bg3);
117
+ color: var(--primary);
62
118
  }
63
- .nav-btn:hover { background: var(--bg3); color: var(--text); }
64
- .nav-btn.active { background: var(--bg3); color: var(--primary); }
65
119
 
66
120
  .install-btn {
67
121
  background: linear-gradient(135deg, var(--primary), var(--accent));
68
- border: none; color: #fff; padding: 7px 14px;
69
- border-radius: 8px; cursor: pointer; font-size: 13px; font-weight: 600;
122
+ border: none;
123
+ color: #fff;
124
+ padding: 7px 14px;
125
+ border-radius: 8px;
126
+ cursor: pointer;
127
+ font-size: 13px;
128
+ font-weight: 600;
70
129
  transition: opacity 0.2s;
71
130
  }
72
- .install-btn:hover { opacity: 0.85; }
131
+ .install-btn:hover {
132
+ opacity: 0.85;
133
+ }
73
134
 
74
135
  /* ── Main ── */
75
- .main { max-width: 1100px; margin: 0 auto; padding: 28px 24px 60px; }
136
+ .main {
137
+ max-width: 1100px;
138
+ margin: 0 auto;
139
+ padding: 28px 24px 60px;
140
+ }
76
141
 
77
142
  /* ── Tabs ── */
78
- .tab-content { display: none; }
79
- .tab-content.active { display: block; }
143
+ .tab-content {
144
+ display: none;
145
+ }
146
+ .tab-content.active {
147
+ display: block;
148
+ }
80
149
 
81
150
  /* ── Alert ── */
82
151
  .alert {
83
- padding: 14px 18px; border-radius: var(--radius);
84
- margin-bottom: 20px; font-size: 14px;
85
- display: flex; align-items: center; gap: 8px;
152
+ padding: 14px 18px;
153
+ border-radius: var(--radius);
154
+ margin-bottom: 20px;
155
+ font-size: 14px;
156
+ display: flex;
157
+ align-items: center;
158
+ gap: 8px;
159
+ }
160
+ .alert-warn {
161
+ background: rgba(251, 146, 60, 0.12);
162
+ border: 1px solid rgba(251, 146, 60, 0.3);
163
+ color: var(--warn);
86
164
  }
87
- .alert-warn { background: rgba(251,146,60,0.12); border: 1px solid rgba(251,146,60,0.3); color: var(--warn); }
88
165
 
89
166
  /* ── Card ── */
90
167
  .card {
@@ -95,310 +172,752 @@ body {
95
172
  margin-bottom: 20px;
96
173
  box-shadow: var(--shadow);
97
174
  }
98
- .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
99
- .card-title { font-size: 16px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
175
+ .card-header {
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: space-between;
179
+ margin-bottom: 16px;
180
+ }
181
+ .card-title {
182
+ font-size: 16px;
183
+ font-weight: 700;
184
+ display: flex;
185
+ align-items: center;
186
+ gap: 8px;
187
+ }
100
188
  .card-footer {
101
- display: flex; align-items: center; justify-content: space-between;
102
- margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border);
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: space-between;
192
+ margin-top: 20px;
193
+ padding-top: 16px;
103
194
  }
104
195
 
105
196
  /* ── Mode Toggle ── */
106
197
  .mode-toggle {
107
- display: flex; gap: 6px; margin-bottom: 16px;
108
- background: var(--bg3); padding: 4px; border-radius: 10px;
198
+ display: flex;
199
+ gap: 6px;
200
+ margin-bottom: 16px;
201
+ background: var(--bg3);
202
+ padding: 4px;
203
+ border-radius: 10px;
109
204
  width: fit-content;
110
205
  }
111
206
  .mode-btn {
112
- background: none; border: none; color: var(--text2);
113
- padding: 7px 16px; border-radius: 8px; cursor: pointer;
114
- font-size: 13px; font-weight: 500; transition: all 0.2s;
207
+ background: none;
208
+ border: none;
209
+ color: var(--text2);
210
+ padding: 7px 16px;
211
+ border-radius: 8px;
212
+ cursor: pointer;
213
+ font-size: 13px;
214
+ font-weight: 500;
215
+ transition: all 0.2s;
115
216
  white-space: nowrap;
116
217
  }
117
- .mode-btn:hover { color: var(--text); }
218
+ .mode-btn:hover {
219
+ color: var(--text);
220
+ }
118
221
  .mode-btn.active {
119
- background: var(--bg2); color: var(--primary);
120
- box-shadow: 0 1px 4px rgba(0,0,0,0.3);
222
+ background: var(--bg2);
223
+ color: var(--primary);
224
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
121
225
  }
122
226
 
123
-
124
227
  /* ── Project Grid ── */
125
- .project-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
228
+ .project-grid {
229
+ display: grid;
230
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
231
+ gap: 10px;
232
+ }
126
233
  .project-item {
127
- background: var(--bg3); border: 1px solid var(--border);
128
- border-radius: 10px; padding: 14px 16px;
129
- cursor: pointer; transition: all 0.2s;
130
- font-size: 14px; font-weight: 500;
131
- display: flex; align-items: flex-start; gap: 10px;
234
+ background: var(--bg3);
235
+ border: 1px solid var(--border);
236
+ border-radius: 10px;
237
+ padding: 14px 16px;
238
+ cursor: pointer;
239
+ transition: all 0.2s;
240
+ font-size: 14px;
241
+ font-weight: 500;
242
+ display: flex;
243
+ align-items: flex-start;
244
+ gap: 10px;
245
+ }
246
+ .project-item:hover {
247
+ border-color: var(--primary);
248
+ background: rgba(99, 102, 241, 0.08);
249
+ transform: translateY(-1px);
250
+ }
251
+ .project-item.selected {
252
+ border-color: var(--primary);
253
+ background: rgba(99, 102, 241, 0.15);
254
+ }
255
+ .project-item .proj-icon {
256
+ font-size: 18px;
257
+ flex-shrink: 0;
258
+ margin-top: 1px;
259
+ }
260
+ .project-item .proj-name {
261
+ word-break: break-all;
262
+ line-height: 1.4;
132
263
  }
133
- .project-item:hover { border-color: var(--primary); background: rgba(99,102,241,0.08); transform: translateY(-1px); }
134
- .project-item.selected { border-color: var(--primary); background: rgba(99,102,241,0.15); }
135
- .project-item .proj-icon { font-size: 18px; flex-shrink: 0; margin-top: 1px; }
136
- .project-item .proj-name { word-break: break-all; line-height: 1.4; }
137
264
 
138
265
  /* Skeleton */
139
- .skeleton-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
140
- .skeleton { height: 54px; border-radius: 10px; background: linear-gradient(90deg, var(--bg3) 25%, var(--border) 50%, var(--bg3) 75%); background-size: 200%; animation: shimmer 1.4s infinite; }
141
- @keyframes shimmer { 0%{background-position:200%}100%{background-position:-200%} }
266
+ .skeleton-grid {
267
+ display: grid;
268
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
269
+ gap: 10px;
270
+ }
271
+ .skeleton {
272
+ height: 54px;
273
+ border-radius: 10px;
274
+ background: linear-gradient(
275
+ 90deg,
276
+ var(--bg3) 25%,
277
+ var(--border) 50%,
278
+ var(--bg3) 75%
279
+ );
280
+ background-size: 200%;
281
+ animation: shimmer 1.4s infinite;
282
+ }
283
+ @keyframes shimmer {
284
+ 0% {
285
+ background-position: 200%;
286
+ }
287
+ 100% {
288
+ background-position: -200%;
289
+ }
290
+ }
142
291
 
143
292
  /* ── Buttons ── */
144
293
  .btn-primary {
145
294
  background: linear-gradient(135deg, var(--primary), #818cf8);
146
- color: #fff; border: none; padding: 10px 22px;
147
- border-radius: 10px; cursor: pointer; font-size: 14px; font-weight: 600;
148
- display: flex; align-items: center; gap: 8px;
149
- transition: opacity 0.2s, transform 0.15s;
295
+ color: #fff;
296
+ border: none;
297
+ padding: 10px 22px;
298
+ border-radius: 10px;
299
+ cursor: pointer;
300
+ font-size: 14px;
301
+ font-weight: 600;
302
+ display: flex;
303
+ align-items: center;
304
+ gap: 8px;
305
+ transition:
306
+ opacity 0.2s,
307
+ transform 0.15s;
308
+ }
309
+ .btn-primary:hover:not(:disabled) {
310
+ opacity: 0.9;
311
+ transform: translateY(-1px);
312
+ }
313
+ .btn-primary:disabled {
314
+ opacity: 0.4;
315
+ cursor: not-allowed;
316
+ transform: none;
317
+ }
318
+ .btn-primary.loading {
319
+ pointer-events: none;
150
320
  }
151
- .btn-primary:hover:not(:disabled) { opacity: 0.9; transform: translateY(-1px); }
152
- .btn-primary:disabled { opacity: 0.4; cursor: not-allowed; transform: none; }
153
- .btn-primary.loading { pointer-events: none; }
154
321
 
155
322
  .btn-ghost {
156
- background: none; border: 1px solid var(--border);
157
- color: var(--text2); padding: 6px 14px; border-radius: 8px;
158
- cursor: pointer; font-size: 13px; transition: all 0.2s;
323
+ background: none;
324
+ border: 1px solid var(--border);
325
+ color: var(--text2);
326
+ padding: 6px 14px;
327
+ border-radius: 8px;
328
+ cursor: pointer;
329
+ font-size: 13px;
330
+ transition: all 0.2s;
331
+ }
332
+ .btn-ghost:hover {
333
+ background: var(--bg3);
334
+ color: var(--text);
159
335
  }
160
- .btn-ghost:hover { background: var(--bg3); color: var(--text); }
161
336
 
162
337
  .refresh-btn {
163
- background: none; border: none; color: var(--text2);
164
- font-size: 18px; cursor: pointer; padding: 4px 8px;
165
- border-radius: 6px; transition: all 0.2s;
338
+ background: none;
339
+ border: none;
340
+ color: var(--text2);
341
+ font-size: 18px;
342
+ cursor: pointer;
343
+ padding: 4px 8px;
344
+ border-radius: 6px;
345
+ transition: all 0.2s;
346
+ }
347
+ .refresh-btn:hover {
348
+ color: var(--primary);
349
+ transform: rotate(90deg);
166
350
  }
167
- .refresh-btn:hover { color: var(--primary); transform: rotate(90deg); }
168
351
 
169
- .selected-hint { font-size: 13px; color: var(--text2); }
352
+ .selected-hint {
353
+ font-size: 13px;
354
+ color: var(--text2);
355
+ }
170
356
 
171
357
  /* ── Commit Card ── */
172
358
  .commit-meta {
173
- display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
174
- gap: 12px; margin-bottom: 16px;
359
+ display: grid;
360
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
361
+ gap: 12px;
362
+ margin-bottom: 16px;
363
+ }
364
+ .meta-item {
365
+ background: var(--bg3);
366
+ border-radius: 8px;
367
+ padding: 12px 14px;
368
+ }
369
+ .meta-label {
370
+ font-size: 11px;
371
+ color: var(--text3);
372
+ text-transform: uppercase;
373
+ letter-spacing: 0.5px;
374
+ margin-bottom: 4px;
375
+ }
376
+ .meta-value {
377
+ font-size: 14px;
378
+ font-weight: 500;
379
+ word-break: break-all;
380
+ }
381
+ .meta-value.hash {
382
+ font-family: "JetBrains Mono", monospace;
383
+ color: var(--accent);
175
384
  }
176
- .meta-item { background: var(--bg3); border-radius: 8px; padding: 12px 14px; }
177
- .meta-label { font-size: 11px; color: var(--text3); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }
178
- .meta-value { font-size: 14px; font-weight: 500; word-break: break-all; }
179
- .meta-value.hash { font-family: 'JetBrains Mono', monospace; color: var(--accent); }
180
385
 
181
386
  /* ── Status Chips ── */
182
387
  .stat-chip {
183
- font-size: 12px; font-weight: 600; padding: 3px 10px;
184
- border-radius: 99px; border: 1px solid;
388
+ font-size: 12px;
389
+ font-weight: 600;
390
+ padding: 3px 10px;
391
+ border-radius: 99px;
392
+ border: 1px solid;
393
+ }
394
+ .stat-chip.staged {
395
+ background: rgba(99, 102, 241, 0.15);
396
+ color: var(--primary-h);
397
+ border-color: rgba(99, 102, 241, 0.3);
398
+ }
399
+ .stat-chip.modified {
400
+ background: rgba(251, 146, 60, 0.12);
401
+ color: var(--warn);
402
+ border-color: rgba(251, 146, 60, 0.3);
403
+ }
404
+ .stat-chip.deleted {
405
+ background: rgba(248, 113, 113, 0.12);
406
+ color: var(--danger);
407
+ border-color: rgba(248, 113, 113, 0.3);
408
+ }
409
+ .stat-chip.untracked {
410
+ background: rgba(52, 211, 153, 0.12);
411
+ color: var(--success);
412
+ border-color: rgba(52, 211, 153, 0.3);
185
413
  }
186
- .stat-chip.staged { background: rgba(99,102,241,0.15); color: var(--primary-h); border-color: rgba(99,102,241,0.3); }
187
- .stat-chip.modified { background: rgba(251,146,60,0.12); color: var(--warn); border-color: rgba(251,146,60,0.3); }
188
- .stat-chip.deleted { background: rgba(248,113,113,0.12); color: var(--danger); border-color: rgba(248,113,113,0.3); }
189
- .stat-chip.untracked{ background: rgba(52,211,153,0.12); color: var(--success); border-color: rgba(52,211,153,0.3); }
190
-
191
414
 
192
- .diff-toggle { margin-top: 4px; }
415
+ .diff-toggle {
416
+ margin-top: 4px;
417
+ }
193
418
 
194
419
  .diff-content {
195
- margin-top: 12px; padding: 16px; border-radius: 10px;
196
- background: var(--bg); border: 1px solid var(--border);
197
- font-family: 'JetBrains Mono', monospace; font-size: 12px;
198
- line-height: 1.7; overflow-x: auto; white-space: pre;
199
- max-height: 400px; overflow-y: auto;
420
+ margin-top: 12px;
421
+ padding: 16px;
422
+ border-radius: 10px;
423
+ background: var(--bg);
424
+ border: 1px solid var(--border);
425
+ font-family: "JetBrains Mono", monospace;
426
+ font-size: 12px;
427
+ line-height: 1.7;
428
+ overflow-x: auto;
429
+ white-space: pre;
430
+ max-height: 400px;
431
+ overflow-y: auto;
200
432
  color: var(--text2);
201
433
  }
202
434
 
203
435
  /* ── Result Card ── */
204
- .result-card { overflow: hidden; }
205
- .result-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
206
- .result-actions { display: flex; align-items: center; gap: 10px; }
207
- .report-saved { font-size: 12px; color: var(--success); }
436
+ .result-card {
437
+ overflow: hidden;
438
+ }
439
+ .result-header {
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: space-between;
443
+ margin-bottom: 16px;
444
+ }
445
+ .result-actions {
446
+ display: flex;
447
+ align-items: center;
448
+ gap: 10px;
449
+ }
450
+ .report-saved {
451
+ font-size: 12px;
452
+ color: var(--success);
453
+ }
208
454
 
209
455
  .status-bar {
210
- display: flex; align-items: center; gap: 10px;
211
- padding: 10px 14px; border-radius: 8px;
212
- background: var(--bg3); margin-bottom: 20px;
213
- font-size: 13px; color: var(--text2);
456
+ display: flex;
457
+ align-items: center;
458
+ gap: 10px;
459
+ padding: 10px 14px;
460
+ border-radius: 8px;
461
+ background: var(--bg3);
462
+ margin-bottom: 20px;
463
+ font-size: 13px;
464
+ color: var(--text2);
465
+ }
466
+ .status-bar.done {
467
+ background: rgba(52, 211, 153, 0.1);
468
+ color: var(--success);
469
+ }
470
+ .status-bar.error {
471
+ background: rgba(248, 113, 113, 0.1);
472
+ color: var(--danger);
214
473
  }
215
- .status-bar.done { background: rgba(52,211,153,0.1); color: var(--success); }
216
- .status-bar.error { background: rgba(248,113,113,0.1); color: var(--danger); }
217
474
 
218
475
  .status-dot {
219
- width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
476
+ width: 8px;
477
+ height: 8px;
478
+ border-radius: 50%;
479
+ flex-shrink: 0;
220
480
  background: var(--text3);
221
481
  }
222
- .status-dot.loading { background: var(--primary); animation: pulse 1.2s infinite; }
223
- .status-dot.done { background: var(--success); }
224
- .status-dot.error { background: var(--danger); }
225
- @keyframes pulse { 0%,100%{opacity:1}50%{opacity:0.3} }
482
+ .status-dot.loading {
483
+ background: var(--primary);
484
+ animation: pulse 1.2s infinite;
485
+ }
486
+ .status-dot.done {
487
+ background: var(--success);
488
+ }
489
+ .status-dot.error {
490
+ background: var(--danger);
491
+ }
492
+ @keyframes pulse {
493
+ 0%,
494
+ 100% {
495
+ opacity: 1;
496
+ }
497
+ 50% {
498
+ opacity: 0.3;
499
+ }
500
+ }
226
501
 
227
502
  /* ── Markdown Rendered Output ── */
228
503
  .analysis-body {
229
504
  line-height: 1.75;
230
505
  }
231
- .analysis-body h1, .analysis-body h2 {
232
- font-size: 18px; font-weight: 700; margin: 28px 0 12px;
233
- padding-bottom: 8px; border-bottom: 1px solid var(--border);
506
+ .analysis-body h1,
507
+ .analysis-body h2 {
508
+ font-size: 18px;
509
+ font-weight: 700;
510
+ margin: 28px 0 12px;
511
+ padding-bottom: 8px;
512
+ border-bottom: 1px solid var(--border);
234
513
  color: var(--text);
235
514
  }
236
- .analysis-body h2:first-child { margin-top: 0; }
237
- .analysis-body h3 { font-size: 15px; font-weight: 600; margin: 20px 0 8px; color: var(--text); }
238
- .analysis-body p { color: var(--text2); margin-bottom: 12px; }
239
- .analysis-body ul, .analysis-body ol { padding-left: 20px; color: var(--text2); margin-bottom: 12px; }
240
- .analysis-body li { margin-bottom: 6px; }
515
+ .analysis-body h2:first-child {
516
+ margin-top: 0;
517
+ }
518
+ .analysis-body h3 {
519
+ font-size: 15px;
520
+ font-weight: 600;
521
+ margin: 20px 0 8px;
522
+ color: var(--text);
523
+ }
524
+ .analysis-body p {
525
+ color: var(--text2);
526
+ margin-bottom: 12px;
527
+ }
528
+ .analysis-body ul,
529
+ .analysis-body ol {
530
+ padding-left: 20px;
531
+ color: var(--text2);
532
+ margin-bottom: 12px;
533
+ }
534
+ .analysis-body li {
535
+ margin-bottom: 6px;
536
+ }
241
537
  .analysis-body code {
242
- font-family: 'JetBrains Mono', monospace; font-size: 13px;
243
- background: var(--bg3); color: var(--accent);
244
- padding: 2px 6px; border-radius: 4px;
538
+ font-family: "JetBrains Mono", monospace;
539
+ font-size: 13px;
540
+ background: var(--bg3);
541
+ color: var(--accent);
542
+ padding: 2px 6px;
543
+ border-radius: 4px;
245
544
  }
246
545
  .analysis-body pre {
247
- background: var(--bg); border: 1px solid var(--border);
248
- border-radius: 10px; padding: 16px; margin: 12px 0;
546
+ background: var(--bg);
547
+ border: 1px solid var(--border);
548
+ border-radius: 10px;
549
+ padding: 16px;
550
+ margin: 12px 0;
249
551
  overflow-x: auto;
250
552
  }
251
553
  .analysis-body pre code {
252
- background: none; color: var(--text); padding: 0; font-size: 13px;
554
+ background: none;
555
+ color: var(--text);
556
+ padding: 0;
557
+ font-size: 13px;
558
+ }
559
+ .analysis-body strong {
560
+ color: var(--text);
253
561
  }
254
- .analysis-body strong { color: var(--text); }
255
562
  .analysis-body blockquote {
256
- border-left: 3px solid var(--primary); padding-left: 14px;
257
- color: var(--text2); margin: 12px 0;
563
+ border-left: 3px solid var(--primary);
564
+ padding-left: 14px;
565
+ color: var(--text2);
566
+ margin: 12px 0;
567
+ }
568
+ .analysis-body table {
569
+ width: 100%;
570
+ border-collapse: collapse;
571
+ margin: 12px 0;
572
+ font-size: 14px;
573
+ }
574
+ .analysis-body th {
575
+ background: var(--bg3);
576
+ padding: 10px 14px;
577
+ text-align: left;
578
+ border: 1px solid var(--border);
579
+ }
580
+ .analysis-body td {
581
+ padding: 9px 14px;
582
+ border: 1px solid var(--border);
583
+ color: var(--text2);
258
584
  }
259
- .analysis-body table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px; }
260
- .analysis-body th { background: var(--bg3); padding: 10px 14px; text-align: left; border: 1px solid var(--border); }
261
- .analysis-body td { padding: 9px 14px; border: 1px solid var(--border); color: var(--text2); }
262
585
 
263
586
  /* ── Section Tags ── */
264
587
  .section-tag {
265
- display: inline-flex; align-items: center; gap: 6px;
266
- font-size: 11px; font-weight: 700; letter-spacing: 0.5px;
267
- padding: 3px 10px; border-radius: 99px; margin-right: 8px;
588
+ display: inline-flex;
589
+ align-items: center;
590
+ gap: 6px;
591
+ font-size: 11px;
592
+ font-weight: 700;
593
+ letter-spacing: 0.5px;
594
+ padding: 3px 10px;
595
+ border-radius: 99px;
596
+ margin-right: 8px;
268
597
  vertical-align: middle;
269
598
  }
270
- .tag-review { background: rgba(248,113,113,0.15); color: var(--danger); border: 1px solid rgba(248,113,113,0.3); }
271
- .tag-doc { background: rgba(99,102,241,0.15); color: var(--primary-h); border: 1px solid rgba(99,102,241,0.3); }
599
+ .tag-review {
600
+ background: rgba(248, 113, 113, 0.15);
601
+ color: var(--danger);
602
+ border: 1px solid rgba(248, 113, 113, 0.3);
603
+ }
604
+ .tag-doc {
605
+ background: rgba(99, 102, 241, 0.15);
606
+ color: var(--primary-h);
607
+ border: 1px solid rgba(99, 102, 241, 0.3);
608
+ }
272
609
 
273
610
  /* ── Reports List ── */
274
- .reports-list { display: flex; flex-direction: column; gap: 8px; }
611
+ .reports-list {
612
+ display: flex;
613
+ flex-direction: column;
614
+ gap: 8px;
615
+ }
275
616
  .report-item {
276
- display: flex; align-items: center; justify-content: space-between;
277
- padding: 12px 16px; background: var(--bg3);
278
- border: 1px solid var(--border); border-radius: 10px;
279
- font-size: 14px; cursor: pointer; transition: all 0.2s;
617
+ display: flex;
618
+ align-items: center;
619
+ justify-content: space-between;
620
+ padding: 12px 16px;
621
+ background: var(--bg3);
622
+ border: 1px solid var(--border);
623
+ border-radius: 10px;
624
+ font-size: 14px;
625
+ cursor: pointer;
626
+ transition: all 0.2s;
627
+ }
628
+ .report-item:hover {
629
+ border-color: var(--primary);
630
+ }
631
+ .report-item-name {
632
+ font-weight: 500;
633
+ }
634
+ .report-item-date {
635
+ font-size: 12px;
636
+ color: var(--text3);
637
+ font-family: "JetBrains Mono", monospace;
638
+ }
639
+ .empty-state {
640
+ color: var(--text3);
641
+ font-size: 14px;
642
+ text-align: center;
643
+ padding: 32px;
280
644
  }
281
- .report-item:hover { border-color: var(--primary); }
282
- .report-item-name { font-weight: 500; }
283
- .report-item-date { font-size: 12px; color: var(--text3); font-family: 'JetBrains Mono', monospace; }
284
- .empty-state { color: var(--text3); font-size: 14px; text-align: center; padding: 32px; }
285
645
 
286
646
  /* ── Aria: Header Chip ── */
287
647
  .aria-chip {
288
- display: flex; align-items: center; gap: 7px;
289
- background: var(--bg3); border: 1px solid var(--border);
290
- border-radius: 99px; padding: 5px 13px;
291
- font-size: 12px; color: var(--text2);
292
- margin-right: 4px; white-space: nowrap;
648
+ display: flex;
649
+ align-items: center;
650
+ gap: 7px;
651
+ background: var(--bg3);
652
+ border: 1px solid var(--border);
653
+ border-radius: 99px;
654
+ padding: 5px 13px;
655
+ font-size: 12px;
656
+ color: var(--text2);
657
+ margin-right: 4px;
658
+ white-space: nowrap;
293
659
  }
294
660
  .aria-chip-dot {
295
- width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0;
661
+ width: 7px;
662
+ height: 7px;
663
+ border-radius: 50%;
664
+ flex-shrink: 0;
296
665
  background: #818cf8;
297
666
  }
298
- .aria-chip-dot.idle { background: #818cf8; }
299
- .aria-chip-dot.ready { background: #34d399; animation: pulse 1.2s infinite; }
300
- .aria-chip-dot.thinking { background: #a78bfa; animation: pulse 0.7s infinite; }
301
- .aria-chip-dot.done { background: #34d399; }
302
- .aria-chip-dot.error { background: #f87171; }
667
+ .aria-chip-dot.idle {
668
+ background: #818cf8;
669
+ }
670
+ .aria-chip-dot.ready {
671
+ background: #34d399;
672
+ animation: pulse 1.2s infinite;
673
+ }
674
+ .aria-chip-dot.thinking {
675
+ background: #a78bfa;
676
+ animation: pulse 0.7s infinite;
677
+ }
678
+ .aria-chip-dot.done {
679
+ background: #34d399;
680
+ }
681
+ .aria-chip-dot.error {
682
+ background: #f87171;
683
+ }
303
684
 
304
685
  /* ── Aria: Hero Section ── */
305
686
  .aria-hero {
306
- display: flex; align-items: center; gap: 24px;
307
- background: var(--bg2); border: 1px solid var(--border);
308
- border-radius: var(--radius); padding: 20px 24px;
687
+ display: flex;
688
+ align-items: center;
689
+ gap: 24px;
690
+ background: var(--bg2);
691
+ border: 1px solid var(--border);
692
+ border-radius: var(--radius);
693
+ padding: 20px 24px;
309
694
  margin-bottom: 20px;
310
695
  }
311
696
 
312
697
  /* ── Aria: Robot ── */
313
- .aria-robot-wrap { flex-shrink: 0; }
314
- .aria-robot { display: block; }
698
+ .aria-robot-wrap {
699
+ flex-shrink: 0;
700
+ }
701
+ .aria-robot {
702
+ display: block;
703
+ }
315
704
 
316
705
  .aria-robot-wrap.idle .aria-robot,
317
- .aria-robot-wrap.ready .aria-robot { animation: aria-float 3s ease-in-out infinite alternate; }
318
- .aria-robot-wrap.thinking .aria-robot { animation: aria-float 1.4s ease-in-out infinite alternate; }
319
- .aria-robot-wrap.done .aria-robot { animation: aria-bounce 0.55s ease forwards; }
320
- .aria-robot-wrap.error .aria-robot { animation: aria-shake 0.45s ease; }
321
-
322
- @keyframes aria-float { 0%{transform:translateY(0)} 100%{transform:translateY(-8px)} }
323
- @keyframes aria-bounce { 0%,100%{transform:scale(1)} 45%{transform:scale(1.13)} }
324
- @keyframes aria-shake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-5px)} 75%{transform:translateX(5px)} }
706
+ .aria-robot-wrap.ready .aria-robot {
707
+ animation: aria-float 3s ease-in-out infinite alternate;
708
+ }
709
+ .aria-robot-wrap.thinking .aria-robot {
710
+ animation: aria-float 1.4s ease-in-out infinite alternate;
711
+ }
712
+ .aria-robot-wrap.done .aria-robot {
713
+ animation: aria-bounce 0.55s ease forwards;
714
+ }
715
+ .aria-robot-wrap.error .aria-robot {
716
+ animation: aria-shake 0.45s ease;
717
+ }
718
+
719
+ @keyframes aria-float {
720
+ 0% {
721
+ transform: translateY(0);
722
+ }
723
+ 100% {
724
+ transform: translateY(-8px);
725
+ }
726
+ }
727
+ @keyframes aria-bounce {
728
+ 0%,
729
+ 100% {
730
+ transform: scale(1);
731
+ }
732
+ 45% {
733
+ transform: scale(1.13);
734
+ }
735
+ }
736
+ @keyframes aria-shake {
737
+ 0%,
738
+ 100% {
739
+ transform: translateX(0);
740
+ }
741
+ 25% {
742
+ transform: translateX(-5px);
743
+ }
744
+ 75% {
745
+ transform: translateX(5px);
746
+ }
747
+ }
325
748
 
326
749
  /* Antenna dot by state */
327
- .aria-robot-wrap.idle .aria-antenna-dot { fill: #818cf8; }
328
- .aria-robot-wrap.ready .aria-antenna-dot { fill: #34d399; animation: aria-blink 1s ease-in-out infinite; }
329
- .aria-robot-wrap.thinking .aria-antenna-dot { fill: #a78bfa; animation: aria-glow 0.7s ease-in-out infinite; }
330
- .aria-robot-wrap.done .aria-antenna-dot { fill: #34d399; }
331
- .aria-robot-wrap.error .aria-antenna-dot { fill: #f87171; }
750
+ .aria-robot-wrap.idle .aria-antenna-dot {
751
+ fill: #818cf8;
752
+ }
753
+ .aria-robot-wrap.ready .aria-antenna-dot {
754
+ fill: #34d399;
755
+ animation: aria-blink 1s ease-in-out infinite;
756
+ }
757
+ .aria-robot-wrap.thinking .aria-antenna-dot {
758
+ fill: #a78bfa;
759
+ animation: aria-glow 0.7s ease-in-out infinite;
760
+ }
761
+ .aria-robot-wrap.done .aria-antenna-dot {
762
+ fill: #34d399;
763
+ }
764
+ .aria-robot-wrap.error .aria-antenna-dot {
765
+ fill: #f87171;
766
+ }
332
767
 
333
- @keyframes aria-blink { 0%,100%{opacity:1} 50%{opacity:0.35} }
334
- @keyframes aria-glow {
335
- 0%,100%{ filter: drop-shadow(0 0 3px #a78bfa); }
336
- 50% { filter: drop-shadow(0 0 9px #a78bfa); }
768
+ @keyframes aria-blink {
769
+ 0%,
770
+ 100% {
771
+ opacity: 1;
772
+ }
773
+ 50% {
774
+ opacity: 0.35;
775
+ }
776
+ }
777
+ @keyframes aria-glow {
778
+ 0%,
779
+ 100% {
780
+ filter: drop-shadow(0 0 3px #a78bfa);
781
+ }
782
+ 50% {
783
+ filter: drop-shadow(0 0 9px #a78bfa);
784
+ }
337
785
  }
338
786
 
339
787
  /* ── Aria: Bubble ── */
340
788
  .aria-bubble-wrap {
341
- flex: 1; display: flex; flex-direction: column;
342
- align-items: flex-start; gap: 10px;
789
+ flex: 1;
790
+ display: flex;
791
+ flex-direction: column;
792
+ align-items: flex-start;
793
+ gap: 10px;
343
794
  }
344
795
  .aria-bubble {
345
796
  position: relative;
346
797
  background: var(--bg3);
347
798
  border: 1.5px solid var(--primary);
348
- border-radius: 16px; padding: 14px 18px;
349
- font-size: 15px; line-height: 1.7; color: var(--text);
799
+ border-radius: 16px;
800
+ padding: 14px 18px;
801
+ font-size: 15px;
802
+ line-height: 1.7;
803
+ color: var(--text);
350
804
  max-width: 440px;
351
805
  }
352
806
  /* Speech bubble tail — points left toward robot */
353
807
  .aria-bubble::before {
354
- content: ''; position: absolute;
355
- left: -11px; top: 50%; transform: translateY(-50%);
356
- border: 7px solid transparent; border-right-color: var(--primary);
808
+ content: "";
809
+ position: absolute;
810
+ left: -11px;
811
+ top: 50%;
812
+ transform: translateY(-50%);
813
+ border: 7px solid transparent;
814
+ border-right-color: var(--primary);
357
815
  }
358
816
  .aria-bubble::after {
359
- content: ''; position: absolute;
360
- left: -8px; top: 50%; transform: translateY(-50%);
361
- border: 5.5px solid transparent; border-right-color: var(--bg3);
817
+ content: "";
818
+ position: absolute;
819
+ left: -8px;
820
+ top: 50%;
821
+ transform: translateY(-50%);
822
+ border: 5.5px solid transparent;
823
+ border-right-color: var(--bg3);
824
+ }
825
+ .aria-bubble-text {
826
+ display: inline;
827
+ transition:
828
+ opacity 0.18s ease,
829
+ transform 0.18s ease;
362
830
  }
363
- .aria-bubble-text { display: inline; transition: opacity 0.18s ease, transform 0.18s ease; }
364
831
 
365
832
  /* Typing dots (thinking state) */
366
833
  .aria-typing-dots {
367
- display: inline-flex; gap: 3px;
368
- align-items: center; margin-left: 4px; vertical-align: middle;
834
+ display: inline-flex;
835
+ gap: 3px;
836
+ align-items: center;
837
+ margin-left: 4px;
838
+ vertical-align: middle;
369
839
  }
370
840
  .aria-typing-dots span {
371
- width: 5px; height: 5px; border-radius: 50%;
372
- background: var(--primary); display: inline-block;
841
+ width: 5px;
842
+ height: 5px;
843
+ border-radius: 50%;
844
+ background: var(--primary);
845
+ display: inline-block;
373
846
  animation: aria-dot-bounce 1.2s ease-in-out infinite;
374
847
  }
375
- .aria-typing-dots span:nth-child(2) { animation-delay: 0.2s; }
376
- .aria-typing-dots span:nth-child(3) { animation-delay: 0.4s; }
848
+ .aria-typing-dots span:nth-child(2) {
849
+ animation-delay: 0.2s;
850
+ }
851
+ .aria-typing-dots span:nth-child(3) {
852
+ animation-delay: 0.4s;
853
+ }
377
854
  @keyframes aria-dot-bounce {
378
- 0%,80%,100%{ transform: translateY(0); opacity: 0.4; }
379
- 40% { transform: translateY(-5px); opacity: 1; }
855
+ 0%,
856
+ 80%,
857
+ 100% {
858
+ transform: translateY(0);
859
+ opacity: 0.4;
860
+ }
861
+ 40% {
862
+ transform: translateY(-5px);
863
+ opacity: 1;
864
+ }
380
865
  }
381
866
 
382
867
  /* Aria name badge */
383
868
  .aria-name-badge {
384
- font-size: 11px; font-weight: 700; letter-spacing: 0.5px;
869
+ font-size: 11px;
870
+ font-weight: 700;
871
+ letter-spacing: 0.5px;
385
872
  color: var(--primary);
386
- background: rgba(99,102,241,0.12); border: 1px solid rgba(99,102,241,0.25);
387
- padding: 2px 11px; border-radius: 99px;
873
+ background: rgba(99, 102, 241, 0.12);
874
+ border: 1px solid rgba(99, 102, 241, 0.25);
875
+ padding: 2px 11px;
876
+ border-radius: 99px;
388
877
  }
389
878
 
390
879
  /* ── Responsive ── */
391
880
  @media (max-width: 640px) {
392
- .header-inner { padding: 0 16px; }
393
- .aria-chip { display: none; } /* header chip hidden on mobile to save space */
394
- .main { padding: 16px 16px 48px; }
395
- .card { padding: 18px; }
396
- .card-footer { flex-direction: column; align-items: stretch; gap: 12px; }
397
- .commit-meta { grid-template-columns: 1fr 1fr; }
881
+ .header-inner {
882
+ padding: 0 16px;
883
+ }
884
+ .aria-chip {
885
+ display: none;
886
+ } /* header chip hidden on mobile to save space */
887
+ .main {
888
+ padding: 16px 16px 48px;
889
+ }
890
+ .card {
891
+ padding: 18px;
892
+ }
893
+ .card-footer {
894
+ flex-direction: column;
895
+ align-items: stretch;
896
+ gap: 12px;
897
+ }
898
+ .commit-meta {
899
+ grid-template-columns: 1fr 1fr;
900
+ }
398
901
  /* Aria hero: stack vertically */
399
- .aria-hero { flex-direction: column; align-items: center; padding: 16px; gap: 14px; }
400
- .aria-robot { width: 70px; height: auto; }
401
- .aria-bubble { max-width: 100%; }
402
- .aria-bubble::before, .aria-bubble::after { display: none; }
403
- .aria-bubble-wrap { align-items: center; width: 100%; }
902
+ .aria-hero {
903
+ flex-direction: column;
904
+ align-items: center;
905
+ padding: 16px;
906
+ gap: 14px;
907
+ }
908
+ .aria-robot {
909
+ width: 70px;
910
+ height: auto;
911
+ }
912
+ .aria-bubble {
913
+ max-width: 100%;
914
+ }
915
+ .aria-bubble::before,
916
+ .aria-bubble::after {
917
+ display: none;
918
+ }
919
+ .aria-bubble-wrap {
920
+ align-items: center;
921
+ width: 100%;
922
+ }
404
923
  }