agentacta 1.3.4 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/index.html CHANGED
@@ -21,7 +21,13 @@
21
21
  <nav class="sidebar">
22
22
  <div class="sidebar-header">
23
23
  <h1>Agent<span>Acta</span></h1>
24
+ <button class="theme-toggle" id="theme-toggle" title="Toggle theme" aria-label="Toggle theme"><svg class="theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg><svg class="theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button>
24
25
  </div>
26
+ <button class="cmdk-trigger" id="cmdkBtn" aria-label="Search" title="Search (⌘K)">
27
+ <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
28
+ <span>Search</span>
29
+ <kbd>⌘K</kbd>
30
+ </button>
25
31
  <div class="nav-section">
26
32
  <div class="nav-item" data-view="sessions">
27
33
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
@@ -31,21 +37,27 @@
31
37
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
32
38
  <span>Timeline</span>
33
39
  </div>
34
- <div class="nav-item active" data-view="search">
35
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
36
- <span>Search</span>
40
+ <div class="nav-item active" data-view="overview">
41
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h7V3H3z"/><path d="M14 21h7v-7h-7z"/><path d="M14 10h7V3h-7z"/><path d="M3 21h7v-5H3z"/></svg>
42
+ <span>Overview</span>
37
43
  </div>
38
44
  <div class="nav-item" data-view="files">
39
45
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
40
46
  <span>Files</span>
41
47
  </div>
42
48
  <div class="nav-item" data-view="stats">
43
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18 20V10M12 20V4M6 20v-6"/></svg>
44
- <span>Stats</span>
49
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.325 4.317a1.724 1.724 0 0 1 3.35 0 1.724 1.724 0 0 0 2.573 1.066 1.724 1.724 0 0 1 2.28 2.28 1.724 1.724 0 0 0 1.065 2.573 1.724 1.724 0 0 1 0 3.35 1.724 1.724 0 0 0-1.066 2.573 1.724 1.724 0 0 1-2.28 2.28 1.724 1.724 0 0 0-2.573 1.065 1.724 1.724 0 0 1-3.35 0 1.724 1.724 0 0 0-2.573-1.066 1.724 1.724 0 0 1-2.28-2.28 1.724 1.724 0 0 0-1.065-2.573 1.724 1.724 0 0 1 0-3.35 1.724 1.724 0 0 0 1.066-2.573 1.724 1.724 0 0 1 2.28-2.28 1.724 1.724 0 0 0 2.572-1.065z"/><circle cx="12" cy="12" r="3"/></svg>
50
+ <span>Settings</span>
45
51
  </div>
52
+
46
53
  </div>
47
54
  </nav>
48
55
  <main class="main" id="content"></main>
56
+ <div class="mobile-toolbar">
57
+ <button class="mobile-search-btn" id="mobile-search-btn" title="Search" aria-label="Search"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg></button>
58
+ <button class="theme-toggle-mobile" id="theme-toggle-mobile" title="Toggle theme" aria-label="Toggle theme"><svg class="theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg><svg class="theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button>
59
+ </div>
60
+
49
61
  </div>
50
62
  <script src="/app.js"></script>
51
63
  <script>
package/public/style.css CHANGED
@@ -71,6 +71,69 @@
71
71
 
72
72
  /* Layout */
73
73
  --sidebar-width: 240px;
74
+ --input-scheme: dark;
75
+ }
76
+
77
+ [data-theme="light"] {
78
+ --bg-base: #f5f7fb;
79
+ --bg-surface: #ffffff;
80
+ --bg-elevated: #f8fafc;
81
+ --bg-hover: #eef2f7;
82
+ --bg-active: #e8edf6;
83
+
84
+ --border-subtle: rgba(15, 23, 42, 0.06);
85
+ --border-default: rgba(15, 23, 42, 0.1);
86
+ --border-hover: rgba(15, 23, 42, 0.16);
87
+ --border-focus: rgba(36, 89, 214, 0.45);
88
+
89
+ --text-primary: #111827;
90
+ --text-secondary: #5b6678;
91
+ --text-tertiary: #8793a7;
92
+ --text-inverse: #ffffff;
93
+
94
+ --accent: #2459d6;
95
+ --accent-soft: rgba(36, 89, 214, 0.12);
96
+ --accent-medium: rgba(36, 89, 214, 0.2);
97
+
98
+ --green: #158f69;
99
+ --green-soft: rgba(21, 143, 105, 0.12);
100
+
101
+ --purple: #7d62eb;
102
+ --purple-soft: rgba(125, 98, 235, 0.12);
103
+
104
+ --amber: #b7791f;
105
+ --amber-soft: rgba(183, 121, 31, 0.12);
106
+
107
+ --red: #c24141;
108
+ --red-soft: rgba(194, 65, 65, 0.12);
109
+
110
+ --teal: #0f9f9a;
111
+ --teal-soft: rgba(15, 159, 154, 0.12);
112
+
113
+ --shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
114
+ --input-scheme: light;
115
+ }
116
+
117
+ [data-theme="oled"] {
118
+ --bg-base: #000000;
119
+ --bg-surface: #050505;
120
+ --bg-elevated: #0a0a0a;
121
+ --bg-hover: #111111;
122
+ --bg-active: #151515;
123
+
124
+ --border-subtle: rgba(255, 255, 255, 0.08);
125
+ --border-default: rgba(255, 255, 255, 0.12);
126
+ --border-hover: rgba(255, 255, 255, 0.18);
127
+ --border-focus: rgba(99, 144, 240, 0.58);
128
+
129
+ --text-primary: #f2f5f9;
130
+ --text-secondary: #9aa3b2;
131
+ --text-tertiary: #6f7785;
132
+ --text-inverse: #000000;
133
+
134
+ --accent-soft: rgba(99, 144, 240, 0.14);
135
+ --accent-medium: rgba(99, 144, 240, 0.22);
136
+ --input-scheme: dark;
74
137
  }
75
138
 
76
139
  /* ---- Reset ---- */
@@ -101,6 +164,12 @@ body {
101
164
  font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
102
165
  }
103
166
 
167
+ html.cmdk-open,
168
+ body.cmdk-open {
169
+ overflow: hidden;
170
+ overscroll-behavior: none;
171
+ }
172
+
104
173
  /* ---- Layout ---- */
105
174
  .app {
106
175
  display: flex;
@@ -125,6 +194,10 @@ body {
125
194
 
126
195
  .sidebar-header {
127
196
  padding: var(--space-xl) var(--space-xl) var(--space-lg);
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: space-between;
200
+ gap: var(--space-sm);
128
201
  }
129
202
 
130
203
  .sidebar h1 {
@@ -141,6 +214,71 @@ body {
141
214
  background-clip: text;
142
215
  }
143
216
 
217
+ .theme-toggle {
218
+ width: 30px;
219
+ height: 30px;
220
+ border-radius: var(--radius-md);
221
+ border: 1px solid var(--border-default);
222
+ background: var(--bg-elevated);
223
+ color: var(--text-secondary);
224
+ display: inline-flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ cursor: pointer;
228
+ padding: 0;
229
+ }
230
+
231
+ .theme-toggle:hover {
232
+ background: var(--bg-hover);
233
+ color: var(--text-primary);
234
+ }
235
+
236
+ .theme-toggle svg,
237
+ .theme-toggle-mobile svg {
238
+ width: 16px;
239
+ height: 16px;
240
+ }
241
+
242
+ .theme-icon-moon { display: none; }
243
+ [data-theme="light"] .theme-icon-sun { display: none; }
244
+ [data-theme="light"] .theme-icon-moon { display: block; }
245
+
246
+ .mobile-toolbar {
247
+ display: none;
248
+ position: absolute;
249
+ top: calc(var(--space-xl) + env(safe-area-inset-top, 0px));
250
+ right: var(--space-lg);
251
+ z-index: 10;
252
+ gap: 8px;
253
+ align-items: center;
254
+ }
255
+
256
+ .mobile-search-btn,
257
+ .theme-toggle-mobile {
258
+ width: 32px;
259
+ height: 32px;
260
+ border-radius: var(--radius-md);
261
+ border: 1px solid var(--border-default);
262
+ background: var(--bg-surface);
263
+ color: var(--text-secondary);
264
+ display: inline-flex;
265
+ align-items: center;
266
+ justify-content: center;
267
+ cursor: pointer;
268
+ padding: 0;
269
+ }
270
+
271
+ .mobile-search-btn:hover,
272
+ .theme-toggle-mobile:hover {
273
+ background: var(--bg-hover);
274
+ color: var(--text-primary);
275
+ }
276
+
277
+ .theme-toggle-mobile svg {
278
+ width: 16px;
279
+ height: 16px;
280
+ }
281
+
144
282
  .nav-section {
145
283
  display: flex;
146
284
  flex-direction: column;
@@ -203,7 +341,7 @@ body {
203
341
  flex: 1;
204
342
  margin-left: var(--sidebar-width);
205
343
  padding: var(--space-2xl) var(--space-3xl);
206
- max-width: 1000px;
344
+ max-width: none;
207
345
  min-height: 100vh;
208
346
  }
209
347
 
@@ -226,6 +364,44 @@ body {
226
364
  margin-top: var(--space-2xl);
227
365
  }
228
366
 
367
+ .overview-subtitle {
368
+ margin-top: calc(var(--space-xl) * -1 + 6px);
369
+ margin-bottom: var(--space-xl);
370
+ color: var(--text-secondary);
371
+ font-size: 13px;
372
+ }
373
+
374
+ .overview-meta-grid {
375
+ display: grid;
376
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
377
+ gap: var(--space-md);
378
+ margin-bottom: var(--space-sm);
379
+ }
380
+
381
+ .settings-page .section-label {
382
+ margin-top: var(--space-xl);
383
+ }
384
+
385
+ .settings-maintenance {
386
+ display: flex;
387
+ gap: 12px;
388
+ align-items: center;
389
+ flex-wrap: wrap;
390
+ margin-bottom: 6px;
391
+ }
392
+
393
+ .settings-maintenance-status {
394
+ color: var(--text-tertiary);
395
+ font-size: 12px;
396
+ }
397
+
398
+ .settings-help {
399
+ color: var(--text-tertiary);
400
+ font-size: 12px;
401
+ line-height: 1.5;
402
+ margin: 0 0 var(--space-lg);
403
+ }
404
+
229
405
  /* ---- Search Bar ---- */
230
406
  .search-bar {
231
407
  position: relative;
@@ -655,6 +831,40 @@ mark {
655
831
  font-weight: 500;
656
832
  }
657
833
 
834
+ /* ---- Skeletons ---- */
835
+ .skeleton-card,
836
+ .skeleton-row {
837
+ border-color: var(--border-subtle);
838
+ }
839
+
840
+ .skeleton-line {
841
+ position: relative;
842
+ border-radius: var(--radius-sm);
843
+ background: var(--bg-elevated);
844
+ border: 1px solid var(--border-subtle);
845
+ overflow: hidden;
846
+ }
847
+
848
+ .skeleton-line::after {
849
+ content: '';
850
+ position: absolute;
851
+ inset: 0;
852
+ transform: translateX(-100%);
853
+ background: linear-gradient(90deg, transparent, var(--bg-hover), transparent);
854
+ animation: skeletonShimmer 1.4s ease-in-out infinite;
855
+ }
856
+
857
+ @keyframes skeletonShimmer {
858
+ 100% { transform: translateX(100%); }
859
+ }
860
+
861
+ .loading-more {
862
+ text-align: center;
863
+ color: var(--text-tertiary);
864
+ font-size: 12px;
865
+ padding: var(--space-md) 0;
866
+ }
867
+
658
868
  @keyframes pulse {
659
869
  0%, 100% { opacity: 0.4; }
660
870
  50% { opacity: 1; }
@@ -683,7 +893,7 @@ mark {
683
893
  outline: none;
684
894
  margin-bottom: var(--space-lg);
685
895
  transition: all var(--duration-normal) var(--ease-out);
686
- color-scheme: dark;
896
+ color-scheme: var(--input-scheme);
687
897
  }
688
898
 
689
899
  .date-input:hover {
@@ -749,6 +959,28 @@ mark {
749
959
  border-color: rgba(52, 211, 153, 0.3);
750
960
  }
751
961
 
962
+ .jump-to-start-btn.jumping {
963
+ position: relative;
964
+ color: #b8f7dd;
965
+ background: rgba(52, 211, 153, 0.22);
966
+ }
967
+
968
+ .jump-to-start-btn.jumping::after {
969
+ content: '';
970
+ width: 6px;
971
+ height: 6px;
972
+ border-radius: 999px;
973
+ background: currentColor;
974
+ margin-left: 6px;
975
+ display: inline-block;
976
+ animation: jumpPulse 1s ease-in-out infinite;
977
+ }
978
+
979
+ @keyframes jumpPulse {
980
+ 0%, 100% { opacity: 0.35; transform: scale(0.9); }
981
+ 50% { opacity: 1; transform: scale(1.2); }
982
+ }
983
+
752
984
  /* ---- Session ID ---- */
753
985
  .session-id-row {
754
986
  display: flex;
@@ -1067,6 +1299,22 @@ mark {
1067
1299
  font-family: var(--font-mono);
1068
1300
  }
1069
1301
 
1302
+ .settings-select {
1303
+ width: 100%;
1304
+ background: var(--bg-elevated);
1305
+ border: 1px solid var(--border-default);
1306
+ border-radius: var(--radius-md);
1307
+ color: var(--text-primary);
1308
+ padding: 8px 10px;
1309
+ font-size: 13px;
1310
+ font-family: var(--font-sans);
1311
+ outline: none;
1312
+ }
1313
+
1314
+ .settings-select:focus {
1315
+ border-color: var(--border-focus);
1316
+ }
1317
+
1070
1318
  /* ---- Highlight animation for jumped-to events ---- */
1071
1319
  @keyframes highlightFade {
1072
1320
  0% { background: var(--accent-medium); }
@@ -1097,7 +1345,60 @@ mark {
1097
1345
 
1098
1346
  .new-events-indicator:hover {
1099
1347
  background: #4a7ae8;
1100
- transform: translateX(-50%) scale(1.05);
1348
+ }
1349
+
1350
+ .jump-indicator {
1351
+ position: fixed;
1352
+ top: 20px;
1353
+ left: 50%;
1354
+ transform: translateX(-50%) translateY(-10px);
1355
+ background: color-mix(in oklab, var(--accent) 88%, #000);
1356
+ color: #fff;
1357
+ padding: 8px 14px;
1358
+ border-radius: 999px;
1359
+ font-size: 12px;
1360
+ font-weight: 600;
1361
+ z-index: 110;
1362
+ opacity: 0;
1363
+ pointer-events: none;
1364
+ transition: opacity 0.2s var(--ease-out), transform 0.2s var(--ease-out);
1365
+ }
1366
+
1367
+ .jump-indicator.show {
1368
+ opacity: 1;
1369
+ transform: translateX(-50%) translateY(0);
1370
+ }
1371
+
1372
+ .return-jump-btn {
1373
+ position: fixed;
1374
+ right: 16px;
1375
+ bottom: calc(92px + env(safe-area-inset-bottom, 0px));
1376
+ border: 1px solid var(--border-default);
1377
+ background: var(--bg-surface);
1378
+ color: var(--text-primary);
1379
+ width: 34px;
1380
+ height: 34px;
1381
+ display: inline-flex;
1382
+ align-items: center;
1383
+ justify-content: center;
1384
+ padding: 0;
1385
+ border-radius: 999px;
1386
+ z-index: 110;
1387
+ opacity: 0;
1388
+ transform: translateY(8px);
1389
+ pointer-events: none;
1390
+ transition: opacity 0.2s var(--ease-out), transform 0.2s var(--ease-out);
1391
+ }
1392
+
1393
+ .return-jump-btn.show {
1394
+ opacity: 1;
1395
+ transform: translateY(0);
1396
+ pointer-events: auto;
1397
+ }
1398
+
1399
+ .return-jump-btn:hover {
1400
+ background: var(--bg-hover);
1401
+ border-color: var(--border-hover);
1101
1402
  }
1102
1403
 
1103
1404
  @keyframes slideDown {
@@ -1230,6 +1531,10 @@ mark {
1230
1531
 
1231
1532
  .sidebar-header { display: none; }
1232
1533
 
1534
+ .mobile-toolbar {
1535
+ display: flex;
1536
+ }
1537
+
1233
1538
  .nav-section {
1234
1539
  display: flex;
1235
1540
  flex-direction: row;
@@ -1282,6 +1587,24 @@ mark {
1282
1587
 
1283
1588
  .stat-card .value { font-size: 22px; }
1284
1589
 
1590
+ .overview-subtitle {
1591
+ font-size: 12px;
1592
+ margin-bottom: var(--space-lg);
1593
+ }
1594
+
1595
+ .overview-meta-grid {
1596
+ grid-template-columns: 1fr;
1597
+ gap: var(--space-sm);
1598
+ }
1599
+
1600
+ .settings-page .section-label {
1601
+ margin-top: var(--space-lg);
1602
+ }
1603
+
1604
+ .settings-help {
1605
+ margin-bottom: var(--space-md);
1606
+ }
1607
+
1285
1608
  .search-stats {
1286
1609
  grid-template-columns: repeat(2, 1fr);
1287
1610
  }
@@ -1395,3 +1718,196 @@ mark {
1395
1718
  background: var(--bg-active);
1396
1719
  border-color: var(--border-hover);
1397
1720
  }
1721
+
1722
+ /* ---- Cmd+K Trigger ---- */
1723
+ .cmdk-trigger {
1724
+ margin: 0 var(--space-md) var(--space-sm);
1725
+ display: flex;
1726
+ align-items: center;
1727
+ gap: var(--space-sm);
1728
+ border: 1px solid var(--border-subtle);
1729
+ background: var(--bg-elevated);
1730
+ color: var(--text-secondary);
1731
+ border-radius: var(--radius-md);
1732
+ font-size: 12px;
1733
+ padding: 8px 10px;
1734
+ cursor: pointer;
1735
+ transition: all var(--duration-normal) var(--ease-out);
1736
+ font-family: var(--font-sans);
1737
+ }
1738
+ .cmdk-trigger:hover { color: var(--text-primary); border-color: var(--border-hover); background: var(--bg-hover); }
1739
+ .cmdk-trigger svg { flex-shrink: 0; opacity: 0.5; }
1740
+ .cmdk-trigger span { flex: 1; text-align: left; }
1741
+ .cmdk-trigger kbd {
1742
+ border: 1px solid var(--border-default);
1743
+ border-bottom-width: 2px;
1744
+ border-radius: 5px;
1745
+ padding: 1px 5px;
1746
+ font-size: 10px;
1747
+ font-family: var(--font-sans);
1748
+ color: var(--text-tertiary);
1749
+ background: var(--bg-base);
1750
+ }
1751
+
1752
+ /* ---- Cmd+K Overlay ---- */
1753
+ .cmdk-overlay {
1754
+ position: fixed;
1755
+ top: 0;
1756
+ right: 0;
1757
+ bottom: 0;
1758
+ left: 0;
1759
+ width: 100%;
1760
+ height: 100%;
1761
+ min-height: 100%;
1762
+ background: rgba(10, 14, 26, 0.28);
1763
+ backdrop-filter: blur(14px) saturate(1.08);
1764
+ -webkit-backdrop-filter: blur(14px) saturate(1.08);
1765
+ z-index: 999;
1766
+ display: flex;
1767
+ justify-content: center;
1768
+ align-items: flex-start;
1769
+ padding-top: 12vh;
1770
+ overflow: hidden;
1771
+ animation: cmdk-fade-in 0.16s var(--ease-out);
1772
+ }
1773
+ @keyframes cmdk-fade-in { from { opacity: 0; } }
1774
+
1775
+ .cmdk-dialog {
1776
+ width: min(580px, calc(100vw - 40px));
1777
+ max-height: calc(100vh - 16vh - 24px);
1778
+ background: color-mix(in oklab, var(--bg-surface) 96%, transparent);
1779
+ border: 1px solid color-mix(in oklab, var(--border-default) 86%, transparent);
1780
+ border-radius: 14px;
1781
+ box-shadow: 0 20px 52px rgba(0, 0, 0, 0.22);
1782
+ overflow: hidden;
1783
+ display: flex;
1784
+ flex-direction: column;
1785
+ animation: cmdk-slide-in 0.16s var(--ease-out);
1786
+ }
1787
+ @keyframes cmdk-slide-in { from { opacity: 0; transform: translateY(-8px) scale(0.98); } }
1788
+
1789
+ .cmdk-input-wrap {
1790
+ display: flex;
1791
+ align-items: center;
1792
+ gap: var(--space-sm);
1793
+ padding: 12px 13px;
1794
+ border-bottom: 1px solid var(--border-subtle);
1795
+ background: color-mix(in oklab, var(--bg-elevated) 50%, transparent);
1796
+ }
1797
+ .cmdk-input-wrap svg { flex-shrink: 0; color: var(--text-tertiary); }
1798
+ .cmdk-input-wrap input {
1799
+ flex: 1;
1800
+ min-width: 0;
1801
+ background: transparent;
1802
+ border: 0;
1803
+ outline: none;
1804
+ color: var(--text-primary);
1805
+ font-size: 16px;
1806
+ font-family: var(--font-sans);
1807
+ }
1808
+ .cmdk-input-wrap input::placeholder { color: var(--text-tertiary); }
1809
+ .cmdk-input-wrap kbd {
1810
+ border: 1px solid var(--border-default);
1811
+ border-bottom-width: 2px;
1812
+ border-radius: 5px;
1813
+ padding: 1px 5px;
1814
+ font-size: 10px;
1815
+ font-family: var(--font-sans);
1816
+ color: var(--text-tertiary);
1817
+ }
1818
+
1819
+ .cmdk-list {
1820
+ flex: 1;
1821
+ min-height: 0;
1822
+ overflow-y: auto;
1823
+ padding: 6px;
1824
+ -webkit-overflow-scrolling: touch;
1825
+ }
1826
+ .cmdk-group-label {
1827
+ font-size: 10px;
1828
+ letter-spacing: 0.8px;
1829
+ text-transform: uppercase;
1830
+ color: var(--text-tertiary);
1831
+ font-weight: 600;
1832
+ padding: 8px 9px 3px;
1833
+ }
1834
+ .cmdk-item {
1835
+ width: 100%;
1836
+ text-align: left;
1837
+ border: none;
1838
+ background: transparent;
1839
+ color: inherit;
1840
+ border-radius: 10px;
1841
+ padding: 7px 9px;
1842
+ cursor: pointer;
1843
+ display: flex;
1844
+ align-items: center;
1845
+ gap: var(--space-md);
1846
+ font-family: var(--font-sans);
1847
+ transition: background var(--duration-fast);
1848
+ touch-action: manipulation;
1849
+ }
1850
+ .cmdk-item.active { background: color-mix(in oklab, var(--accent-soft) 56%, var(--bg-hover)); }
1851
+ .cmdk-item:hover { background: color-mix(in oklab, var(--accent-soft) 36%, var(--bg-hover)); }
1852
+ .cmdk-item-icon {
1853
+ width: 18px;
1854
+ height: 18px;
1855
+ flex-shrink: 0;
1856
+ color: var(--text-tertiary);
1857
+ }
1858
+ .cmdk-item-body { flex: 1; min-width: 0; }
1859
+ .cmdk-item-title {
1860
+ font-size: 13px;
1861
+ color: var(--text-primary);
1862
+ font-weight: 500;
1863
+ white-space: nowrap;
1864
+ overflow: hidden;
1865
+ text-overflow: ellipsis;
1866
+ }
1867
+ .cmdk-item-sub {
1868
+ font-size: 11px;
1869
+ color: var(--text-tertiary);
1870
+ white-space: nowrap;
1871
+ overflow: hidden;
1872
+ text-overflow: ellipsis;
1873
+ margin-top: 1px;
1874
+ }
1875
+ .cmdk-item-meta {
1876
+ font-size: 11px;
1877
+ color: var(--text-tertiary);
1878
+ flex-shrink: 0;
1879
+ white-space: nowrap;
1880
+ }
1881
+ .cmdk-empty {
1882
+ padding: 28px 14px;
1883
+ text-align: center;
1884
+ color: var(--text-tertiary);
1885
+ font-size: 13px;
1886
+ }
1887
+ .cmdk-empty h4 { color: var(--text-secondary); font-size: 14px; margin-bottom: 4px; }
1888
+ .cmdk-loading { padding: 24px 14px; text-align: center; color: var(--text-tertiary); font-size: 13px; }
1889
+
1890
+ @media (max-width: 768px) {
1891
+ .cmdk-trigger { display: none; }
1892
+
1893
+ .cmdk-overlay {
1894
+ align-items: center;
1895
+ top: 0;
1896
+ right: 0;
1897
+ bottom: 0;
1898
+ left: 0;
1899
+ height: auto;
1900
+ min-height: 0;
1901
+ padding: calc(env(safe-area-inset-top, 0px) + 12px) 12px calc(env(safe-area-inset-bottom, 0px) + 12px);
1902
+ }
1903
+
1904
+ .cmdk-dialog {
1905
+ width: min(520px, calc(100vw - 44px));
1906
+ max-height: min(72vh, calc(100vh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 52px));
1907
+ border-radius: var(--radius-md);
1908
+ }
1909
+
1910
+ .cmdk-input-wrap kbd { display: none; }
1911
+ .cmdk-item-sub { display: none; }
1912
+ .cmdk-item-meta { font-size: 10px; }
1913
+ }