commit-ai-agent 1.0.6 → 1.0.8

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