commit-ai-agent 1.0.5 → 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,199 +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);
513
+ color: var(--text);
514
+ }
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;
234
522
  color: var(--text);
235
523
  }
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; }
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;
644
+ }
645
+
646
+ /* ── Aria: Header Chip ── */
647
+ .aria-chip {
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;
659
+ }
660
+ .aria-chip-dot {
661
+ width: 7px;
662
+ height: 7px;
663
+ border-radius: 50%;
664
+ flex-shrink: 0;
665
+ background: #818cf8;
666
+ }
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
+ }
684
+
685
+ /* ── Aria: Hero Section ── */
686
+ .aria-hero {
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;
694
+ margin-bottom: 20px;
695
+ }
696
+
697
+ /* ── Aria: Robot ── */
698
+ .aria-robot-wrap {
699
+ flex-shrink: 0;
700
+ }
701
+ .aria-robot {
702
+ display: block;
703
+ }
704
+
705
+ .aria-robot-wrap.idle .aria-robot,
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
+ }
748
+
749
+ /* Antenna dot by state */
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
+ }
767
+
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
+ }
785
+ }
786
+
787
+ /* ── Aria: Bubble ── */
788
+ .aria-bubble-wrap {
789
+ flex: 1;
790
+ display: flex;
791
+ flex-direction: column;
792
+ align-items: flex-start;
793
+ gap: 10px;
794
+ }
795
+ .aria-bubble {
796
+ position: relative;
797
+ background: var(--bg3);
798
+ border: 1.5px solid var(--primary);
799
+ border-radius: 16px;
800
+ padding: 14px 18px;
801
+ font-size: 15px;
802
+ line-height: 1.7;
803
+ color: var(--text);
804
+ max-width: 440px;
805
+ }
806
+ /* Speech bubble tail — points left toward robot */
807
+ .aria-bubble::before {
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);
815
+ }
816
+ .aria-bubble::after {
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;
830
+ }
831
+
832
+ /* Typing dots (thinking state) */
833
+ .aria-typing-dots {
834
+ display: inline-flex;
835
+ gap: 3px;
836
+ align-items: center;
837
+ margin-left: 4px;
838
+ vertical-align: middle;
839
+ }
840
+ .aria-typing-dots span {
841
+ width: 5px;
842
+ height: 5px;
843
+ border-radius: 50%;
844
+ background: var(--primary);
845
+ display: inline-block;
846
+ animation: aria-dot-bounce 1.2s ease-in-out infinite;
847
+ }
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
+ }
854
+ @keyframes aria-dot-bounce {
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
+ }
865
+ }
866
+
867
+ /* Aria name badge */
868
+ .aria-name-badge {
869
+ font-size: 11px;
870
+ font-weight: 700;
871
+ letter-spacing: 0.5px;
872
+ color: var(--primary);
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;
280
877
  }
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
878
 
286
879
  /* ── Responsive ── */
287
880
  @media (max-width: 640px) {
288
- .header-inner { padding: 0 16px; }
289
- .main { padding: 16px 16px 48px; }
290
- .card { padding: 18px; }
291
- .card-footer { flex-direction: column; align-items: stretch; gap: 12px; }
292
- .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
+ }
901
+ /* Aria hero: stack vertically */
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
+ }
293
923
  }