@agent-native/core 0.114.6 → 0.114.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.
Files changed (141) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +6 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/cli/mcp-config-writers.ts +6 -4
  5. package/corpus/core/src/cli/mcp.ts +124 -0
  6. package/corpus/core/src/cli/skills-content/help.ts +4 -3
  7. package/corpus/core/src/cli/skills-content/index.ts +1 -0
  8. package/corpus/core/src/cli/skills-content/rewind-skill.ts +52 -0
  9. package/corpus/core/src/cli/skills.ts +115 -13
  10. package/corpus/core/src/mcp/screen-memory-stdio.ts +1360 -104
  11. package/corpus/core/src/mcp-client/index.ts +9 -0
  12. package/corpus/core/src/mcp-client/screen-memory-local.ts +847 -13
  13. package/corpus/templates/clips/actions/apply-rewind-extension.ts +195 -0
  14. package/corpus/templates/clips/actions/delete-agent-recording-if-unpromoted.ts +64 -0
  15. package/corpus/templates/clips/actions/get-rewind-extension-request.ts +22 -0
  16. package/corpus/templates/clips/actions/get-screen-memory-status.ts +18 -2
  17. package/corpus/templates/clips/actions/list-rewind-extension-requests.ts +52 -0
  18. package/corpus/templates/clips/actions/make-recording-private-for-rewind.ts +55 -0
  19. package/corpus/templates/clips/actions/query-screen-memory-context.ts +4 -4
  20. package/corpus/templates/clips/actions/request-rewind-extension.ts +81 -0
  21. package/corpus/templates/clips/actions/update-rewind-extension-request.ts +47 -0
  22. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +25 -0
  23. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +36 -0
  24. package/corpus/templates/clips/app/components/editor/rewind-extension-dialog.tsx +338 -0
  25. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +1 -16
  26. package/corpus/templates/clips/app/components/editor/timeline.tsx +26 -0
  27. package/corpus/templates/clips/app/i18n/en-US.ts +18 -0
  28. package/corpus/templates/clips/app/lib/ffmpeg-export.ts +19 -12
  29. package/corpus/templates/clips/app/lib/rewind-visibility.ts +31 -0
  30. package/corpus/templates/clips/app/lib/timestamp-mapping.ts +7 -0
  31. package/corpus/templates/clips/app/lib/upload-file-client.ts +17 -0
  32. package/corpus/templates/clips/changelog/2026-07-14-rewind-keeps-recent-screen-context-local-and-turns-it-into-clips.md +6 -0
  33. package/corpus/templates/clips/changelog/2026-07-17-active-clips-keep-rewind-stable-and-settings-clear.md +12 -0
  34. package/corpus/templates/clips/changelog/2026-07-17-clicking-the-clips-icon-during-a-recording-now-opens-the-app.md +6 -0
  35. package/corpus/templates/clips/changelog/2026-07-17-default-mic-now-uses-the-mac-default-and-transcription-shares-one-capture.md +6 -0
  36. package/corpus/templates/clips/changelog/2026-07-17-full-screen-clips-finalize-even-when-screencapturekit-stop-hangs.md +6 -0
  37. package/corpus/templates/clips/changelog/2026-07-17-normal-full-screen-clips-no-longer-stop-immediately-after-th.md +6 -0
  38. package/corpus/templates/clips/changelog/2026-07-17-rewind-can-hand-one-bounded-private-clip-to-your-agent.md +12 -0
  39. package/corpus/templates/clips/changelog/2026-07-17-rewind-home-can-copy-a-local-agent-prompt.md +6 -0
  40. package/corpus/templates/clips/changelog/2026-07-17-rewind-now-has-a-calm-home-status-focused-first-run-consent-.md +6 -0
  41. package/corpus/templates/clips/changelog/2026-07-17-rewind-settings-are-smaller-clearer-and-agent-first.md +6 -0
  42. package/corpus/templates/clips/changelog/2026-07-17-the-full-clips-interface-stays-available-while-recording.md +6 -0
  43. package/corpus/templates/clips/changelog/2026-07-18-rewind-organizes-recent-work-into-local-searchable-chapters.md +8 -0
  44. package/corpus/templates/clips/changelog/2026-07-18-searchable-rewind-chapters.md +6 -0
  45. package/corpus/templates/clips/changelog/2026-07-19-rewind-backed-recordings-now-start-immediately-after-the-cou.md +6 -0
  46. package/corpus/templates/clips/changelog/2026-07-20-rewind-can-set-up-your-local-agent-once-so-future-requests-w.md +6 -0
  47. package/corpus/templates/clips/desktop/package.json +1 -0
  48. package/corpus/templates/clips/desktop/scripts/sign-macos-local.ts +12 -1
  49. package/corpus/templates/clips/desktop/src/app.tsx +2498 -239
  50. package/corpus/templates/clips/desktop/src/components/ReadinessPanel.tsx +21 -1
  51. package/corpus/templates/clips/desktop/src/components/Switch.tsx +3 -0
  52. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +156 -24
  53. package/corpus/templates/clips/desktop/src/lib/native-recording-warm.ts +6 -7
  54. package/corpus/templates/clips/desktop/src/lib/recorder.ts +1763 -1160
  55. package/corpus/templates/clips/desktop/src/lib/rewind-agent-prompt.ts +9 -0
  56. package/corpus/templates/clips/desktop/src/lib/rewind-recording-start.ts +20 -0
  57. package/corpus/templates/clips/desktop/src/main.tsx +3 -0
  58. package/corpus/templates/clips/desktop/src/overlays/countdown.tsx +14 -14
  59. package/corpus/templates/clips/desktop/src/overlays/onboarding.tsx +4 -4
  60. package/corpus/templates/clips/desktop/src/overlays/preparing.tsx +13 -0
  61. package/corpus/templates/clips/desktop/src/overlays/toolbar.tsx +27 -2
  62. package/corpus/templates/clips/desktop/src/shared/config.ts +16 -0
  63. package/corpus/templates/clips/desktop/src/styles.css +956 -134
  64. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +5 -0
  65. package/corpus/templates/clips/desktop/src-tauri/build.rs +69 -1
  66. package/corpus/templates/clips/desktop/src-tauri/src/accessibility.rs +386 -12
  67. package/corpus/templates/clips/desktop/src-tauri/src/capture_audio_bus.rs +382 -0
  68. package/corpus/templates/clips/desktop/src-tauri/src/capture_graph.rs +777 -0
  69. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +249 -22
  70. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +148 -1
  71. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +58 -4
  72. package/corpus/templates/clips/desktop/src-tauri/src/logfile.rs +13 -1
  73. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +1505 -51
  74. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +124 -0
  75. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1006 -95
  76. package/corpus/templates/clips/desktop/src-tauri/src/rewind_capture_suspension.rs +165 -0
  77. package/corpus/templates/clips/desktop/src-tauri/src/rewind_chapters.rs +2434 -0
  78. package/corpus/templates/clips/desktop/src-tauri/src/rewind_clip.rs +1650 -0
  79. package/corpus/templates/clips/desktop/src-tauri/src/rewind_egress.rs +643 -0
  80. package/corpus/templates/clips/desktop/src-tauri/src/rewind_local_ask.rs +803 -0
  81. package/corpus/templates/clips/desktop/src-tauri/src/rewind_meeting_history.rs +595 -0
  82. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +2900 -91
  83. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory_ocr.rs +360 -0
  84. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory_transcript.rs +408 -0
  85. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +114 -33
  86. package/corpus/templates/clips/desktop/src-tauri/src/state.rs +2 -2
  87. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +13 -3
  88. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +4 -1
  89. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +7 -13
  90. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +198 -11
  91. package/corpus/templates/clips/desktop/src-tauri/tauri.alpha.conf.json +17 -0
  92. package/dist/cli/mcp-config-writers.d.ts +2 -2
  93. package/dist/cli/mcp-config-writers.d.ts.map +1 -1
  94. package/dist/cli/mcp-config-writers.js +6 -6
  95. package/dist/cli/mcp-config-writers.js.map +1 -1
  96. package/dist/cli/mcp.d.ts +14 -0
  97. package/dist/cli/mcp.d.ts.map +1 -1
  98. package/dist/cli/mcp.js +79 -0
  99. package/dist/cli/mcp.js.map +1 -1
  100. package/dist/cli/skills-content/help.d.ts +1 -1
  101. package/dist/cli/skills-content/help.d.ts.map +1 -1
  102. package/dist/cli/skills-content/help.js +4 -3
  103. package/dist/cli/skills-content/help.js.map +1 -1
  104. package/dist/cli/skills-content/index.d.ts +1 -0
  105. package/dist/cli/skills-content/index.d.ts.map +1 -1
  106. package/dist/cli/skills-content/index.js +1 -0
  107. package/dist/cli/skills-content/index.js.map +1 -1
  108. package/dist/cli/skills-content/rewind-skill.d.ts +2 -0
  109. package/dist/cli/skills-content/rewind-skill.d.ts.map +1 -0
  110. package/dist/cli/skills-content/rewind-skill.js +53 -0
  111. package/dist/cli/skills-content/rewind-skill.js.map +1 -0
  112. package/dist/cli/skills.d.ts +6 -0
  113. package/dist/cli/skills.d.ts.map +1 -1
  114. package/dist/cli/skills.js +90 -14
  115. package/dist/cli/skills.js.map +1 -1
  116. package/dist/mcp/screen-memory-stdio.d.ts +365 -0
  117. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  118. package/dist/mcp/screen-memory-stdio.js +1014 -91
  119. package/dist/mcp/screen-memory-stdio.js.map +1 -1
  120. package/dist/mcp-client/index.d.ts +1 -1
  121. package/dist/mcp-client/index.d.ts.map +1 -1
  122. package/dist/mcp-client/index.js +1 -1
  123. package/dist/mcp-client/index.js.map +1 -1
  124. package/dist/mcp-client/screen-memory-local.d.ts +90 -0
  125. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -1
  126. package/dist/mcp-client/screen-memory-local.js +590 -12
  127. package/dist/mcp-client/screen-memory-local.js.map +1 -1
  128. package/dist/notifications/routes.d.ts +3 -3
  129. package/dist/observability/routes.d.ts +1 -1
  130. package/dist/provider-api/actions/provider-api.d.ts +4 -4
  131. package/dist/resources/handlers.d.ts +1 -1
  132. package/package.json +1 -1
  133. package/src/cli/mcp-config-writers.ts +6 -4
  134. package/src/cli/mcp.ts +124 -0
  135. package/src/cli/skills-content/help.ts +4 -3
  136. package/src/cli/skills-content/index.ts +1 -0
  137. package/src/cli/skills-content/rewind-skill.ts +52 -0
  138. package/src/cli/skills.ts +115 -13
  139. package/src/mcp/screen-memory-stdio.ts +1360 -104
  140. package/src/mcp-client/index.ts +9 -0
  141. package/src/mcp-client/screen-memory-local.ts +847 -13
@@ -142,6 +142,7 @@ body[data-clips-route="recording-pill"] #root {
142
142
  100vh - var(--popover-shadow-gutter) - var(--popover-shadow-gutter)
143
143
  );
144
144
  overflow-y: auto;
145
+ overflow-x: hidden;
145
146
  overscroll-behavior: contain;
146
147
  }
147
148
 
@@ -151,6 +152,34 @@ body[data-clips-route="recording-pill"] #root {
151
152
  overflow-y: auto;
152
153
  }
153
154
 
155
+ /* Recorder Home keeps its navigation present even when active-recording
156
+ content exceeds the restored popover height. Only the content region may
157
+ scroll; the window shell and bottom destinations stay put. */
158
+ .app-recorder {
159
+ gap: 0;
160
+ padding: 0;
161
+ overflow: hidden;
162
+ }
163
+
164
+ .recorder-home-content {
165
+ min-height: 0;
166
+ padding: 14px;
167
+ display: flex;
168
+ flex: 1 1 auto;
169
+ flex-direction: column;
170
+ gap: 14px;
171
+ overflow-y: auto;
172
+ overflow-x: hidden;
173
+ overscroll-behavior: contain;
174
+ }
175
+
176
+ .app-recorder > .bottom-row {
177
+ flex: 0 0 auto;
178
+ padding: 7px 14px 10px;
179
+ border-top: 1px solid var(--border);
180
+ background: var(--bg);
181
+ }
182
+
154
183
  /* Header — logo + mode toggle + close */
155
184
 
156
185
  .header {
@@ -709,6 +738,12 @@ body[data-clips-route="recording-pill"] #root {
709
738
  box-shadow: 0 0 0 2px var(--brand-ring);
710
739
  }
711
740
 
741
+ .switch:disabled {
742
+ opacity: 0.42;
743
+ filter: grayscale(0.55);
744
+ cursor: not-allowed;
745
+ }
746
+
712
747
  .switch-on {
713
748
  background: #16a34a;
714
749
  }
@@ -997,201 +1032,925 @@ body[data-clips-route="recording-pill"] #root {
997
1032
  box-shadow: 0 0 0 3px var(--brand-ring);
998
1033
  }
999
1034
 
1000
- .readiness-item-actions {
1001
- display: flex;
1002
- align-items: center;
1003
- gap: 6px;
1004
- flex-shrink: 0;
1035
+ .readiness-item-actions {
1036
+ display: flex;
1037
+ align-items: center;
1038
+ gap: 6px;
1039
+ flex-shrink: 0;
1040
+ }
1041
+
1042
+ .readiness-status {
1043
+ display: inline-flex;
1044
+ align-items: center;
1045
+ justify-content: center;
1046
+ }
1047
+
1048
+ .readiness-status-ok {
1049
+ color: var(--status-ok);
1050
+ }
1051
+
1052
+ .readiness-status-warn {
1053
+ color: var(--status-warn);
1054
+ }
1055
+
1056
+ .readiness-refresh {
1057
+ display: inline-flex;
1058
+ align-items: center;
1059
+ justify-content: center;
1060
+ width: 24px;
1061
+ height: 24px;
1062
+ border: none;
1063
+ background: transparent;
1064
+ color: var(--fg-muted);
1065
+ cursor: pointer;
1066
+ border-radius: var(--radius-sm);
1067
+ transition:
1068
+ color 120ms,
1069
+ background 120ms;
1070
+ flex-shrink: 0;
1071
+ }
1072
+
1073
+ .readiness-refresh:hover {
1074
+ color: var(--fg);
1075
+ background: var(--surface-hover);
1076
+ }
1077
+
1078
+ .readiness-refresh:disabled {
1079
+ opacity: 0.6;
1080
+ cursor: default;
1081
+ }
1082
+
1083
+ .readiness-refresh-spinning svg {
1084
+ animation: readiness-spin 0.8s linear infinite;
1085
+ }
1086
+
1087
+ @keyframes readiness-spin {
1088
+ to {
1089
+ transform: rotate(360deg);
1090
+ }
1091
+ }
1092
+
1093
+ .readiness-empty {
1094
+ padding: 8px;
1095
+ color: var(--fg-muted);
1096
+ font-size: 12px;
1097
+ line-height: 1.3;
1098
+ }
1099
+
1100
+ .rec-dot {
1101
+ width: 8px;
1102
+ height: 8px;
1103
+ border-radius: 50%;
1104
+ background: #ef4444;
1105
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.3);
1106
+ }
1107
+
1108
+ .active-recording-card {
1109
+ display: grid;
1110
+ grid-template-columns: auto minmax(0, 1fr);
1111
+ align-items: start;
1112
+ gap: 10px;
1113
+ padding: 16px;
1114
+ border: 1px solid var(--border);
1115
+ border-radius: var(--radius);
1116
+ background: var(--surface);
1117
+ }
1118
+
1119
+ .active-recording-dot {
1120
+ margin-top: 4px;
1121
+ }
1122
+
1123
+ .active-recording-copy strong {
1124
+ display: block;
1125
+ font-size: 13px;
1126
+ }
1127
+
1128
+ .active-recording-copy p {
1129
+ margin: 3px 0 0;
1130
+ color: var(--fg-muted);
1131
+ font-size: 11px;
1132
+ line-height: 1.4;
1133
+ }
1134
+
1135
+ .active-recording-stop {
1136
+ grid-column: 1 / -1;
1137
+ margin-top: 4px;
1138
+ }
1139
+
1140
+ .active-recording-card-compact {
1141
+ grid-template-columns: auto minmax(0, 1fr) auto;
1142
+ align-items: center;
1143
+ gap: 8px;
1144
+ padding: 8px 10px;
1145
+ }
1146
+
1147
+ .active-recording-live {
1148
+ display: inline-flex;
1149
+ align-items: center;
1150
+ gap: 5px;
1151
+ min-height: 22px;
1152
+ padding: 0 7px;
1153
+ border-radius: 999px;
1154
+ background: #dc2626;
1155
+ color: #fff;
1156
+ font-size: 9px;
1157
+ font-weight: 800;
1158
+ letter-spacing: 0.08em;
1159
+ line-height: 1;
1160
+ }
1161
+
1162
+ .active-recording-live-dot {
1163
+ position: relative;
1164
+ width: 6px;
1165
+ height: 6px;
1166
+ border-radius: 50%;
1167
+ background: #fff;
1168
+ }
1169
+
1170
+ .active-recording-live-dot::after {
1171
+ content: "";
1172
+ position: absolute;
1173
+ inset: -2px;
1174
+ border: 1px solid rgba(255, 255, 255, 0.7);
1175
+ border-radius: inherit;
1176
+ animation: active-recording-pulse 1.2s ease-out infinite;
1177
+ }
1178
+
1179
+ @keyframes active-recording-pulse {
1180
+ 0% {
1181
+ transform: scale(0.8);
1182
+ opacity: 1;
1183
+ }
1184
+ 75%,
1185
+ 100% {
1186
+ transform: scale(1.8);
1187
+ opacity: 0;
1188
+ }
1189
+ }
1190
+
1191
+ .active-recording-card-compact .active-recording-stop {
1192
+ grid-column: auto;
1193
+ margin-top: 0;
1194
+ min-height: 28px;
1195
+ height: 28px;
1196
+ padding: 5px 10px;
1197
+ font-size: 12px;
1198
+ }
1199
+
1200
+ @media (prefers-reduced-motion: reduce) {
1201
+ .active-recording-live-dot::after {
1202
+ animation: none;
1203
+ opacity: 0.65;
1204
+ transform: none;
1205
+ }
1206
+ }
1207
+
1208
+ /* Active-recording state on the primary button: softened orange-red
1209
+ (Tailwind orange-700) — semantic "recording is live" without the harsh
1210
+ pure-red assault. White square icon + live pulsing dot still read as
1211
+ "stop". Hover stays the same shade (no brighten-on-hover) to keep the
1212
+ affordance calm. */
1213
+ .primary.start.rec-active {
1214
+ background: #c2410c;
1215
+ color: #fff;
1216
+ }
1217
+ .primary.start.rec-active:hover {
1218
+ background: #9a3412;
1219
+ }
1220
+
1221
+ .rec-dot-live {
1222
+ position: relative;
1223
+ background: white;
1224
+ }
1225
+
1226
+ .rec-dot-live::after {
1227
+ content: "";
1228
+ position: absolute;
1229
+ inset: -1px;
1230
+ border-radius: inherit;
1231
+ border: 1px solid rgba(255, 255, 255, 0.6);
1232
+ animation: rec-live-pulse 1.2s ease-out infinite;
1233
+ pointer-events: none;
1234
+ }
1235
+
1236
+ @keyframes rec-live-pulse {
1237
+ 0% {
1238
+ transform: scale(1);
1239
+ opacity: 1;
1240
+ }
1241
+ 70% {
1242
+ transform: scale(2.4);
1243
+ opacity: 0;
1244
+ }
1245
+ 100% {
1246
+ transform: scale(2.4);
1247
+ opacity: 0;
1248
+ }
1249
+ }
1250
+
1251
+ @media (prefers-reduced-motion: reduce) {
1252
+ .rec-dot-live::after {
1253
+ animation: none;
1254
+ opacity: 0.6;
1255
+ transform: none;
1256
+ }
1257
+ }
1258
+
1259
+ /* ------------------------------------------------------------------------- */
1260
+ /* Bottom quick-actions row */
1261
+ /* ------------------------------------------------------------------------- */
1262
+
1263
+ .bottom-row {
1264
+ display: grid;
1265
+ grid-template-columns: repeat(4, 1fr);
1266
+ gap: 4px;
1267
+ }
1268
+
1269
+ .bottom-btn {
1270
+ display: flex;
1271
+ flex-direction: column;
1272
+ align-items: center;
1273
+ gap: 4px;
1274
+ padding: 8px 4px;
1275
+ border: none;
1276
+ background: transparent;
1277
+ border-radius: var(--radius-sm);
1278
+ color: var(--fg-muted);
1279
+ cursor: pointer;
1280
+ transition:
1281
+ background 120ms,
1282
+ color 120ms;
1283
+ }
1284
+
1285
+ .bottom-btn:hover {
1286
+ background: var(--surface-hover);
1287
+ color: var(--fg);
1288
+ }
1289
+
1290
+ .bottom-icon {
1291
+ position: relative;
1292
+ display: inline-flex;
1293
+ align-items: center;
1294
+ justify-content: center;
1295
+ color: var(--fg-muted);
1296
+ }
1297
+
1298
+ .bottom-btn:hover .bottom-icon {
1299
+ color: var(--fg);
1300
+ }
1301
+
1302
+ .bottom-label {
1303
+ font-size: 11px;
1304
+ font-weight: 500;
1305
+ }
1306
+
1307
+ /* ------------------------------------------------------------------------- */
1308
+ /* Popover drill-in views */
1309
+ /* ------------------------------------------------------------------------- */
1310
+
1311
+ .app-popover-view {
1312
+ gap: 0;
1313
+ padding: 0;
1314
+ }
1315
+
1316
+ .popover-view {
1317
+ min-height: 260px;
1318
+ }
1319
+
1320
+ .popover-view-header {
1321
+ margin-bottom: 2px;
1322
+ }
1323
+
1324
+ .popover-view-header-spacer {
1325
+ flex: 1;
1326
+ }
1327
+
1328
+ .popover-view-link {
1329
+ font-size: 11px;
1330
+ }
1331
+
1332
+ /* Rewind is a calm everyday status first; configuration is a drill-in. */
1333
+ .rewind-home-card {
1334
+ display: grid;
1335
+ gap: 8px;
1336
+ padding: 10px 11px;
1337
+ border: 1px solid var(--border);
1338
+ border-radius: var(--radius);
1339
+ background: color-mix(in srgb, var(--surface) 72%, var(--bg));
1340
+ }
1341
+
1342
+ .rewind-home-status {
1343
+ display: grid;
1344
+ grid-template-columns: auto minmax(0, 1fr) auto;
1345
+ align-items: center;
1346
+ gap: 9px;
1347
+ }
1348
+
1349
+ .rewind-settings-entry-main {
1350
+ display: grid;
1351
+ grid-template-columns: auto minmax(0, 1fr);
1352
+ align-items: start;
1353
+ gap: 9px;
1354
+ }
1355
+
1356
+ .rewind-home-status p {
1357
+ margin: 2px 0 0;
1358
+ color: var(--fg-muted);
1359
+ font-size: 11px;
1360
+ line-height: 1.4;
1361
+ }
1362
+
1363
+ .rewind-home-status strong {
1364
+ font-size: 13px;
1365
+ font-weight: 500;
1366
+ }
1367
+
1368
+ .rewind-home-lock-note,
1369
+ .rewind-capture-lock-note {
1370
+ margin: 0;
1371
+ color: var(--fg-muted);
1372
+ font-size: 10.5px;
1373
+ line-height: 1.4;
1374
+ }
1375
+
1376
+ .rewind-capture-lock-note {
1377
+ padding: 9px 10px;
1378
+ border-radius: var(--radius-sm);
1379
+ background: var(--surface);
1380
+ }
1381
+
1382
+ .rewind-home-controls {
1383
+ display: inline-flex;
1384
+ align-items: center;
1385
+ gap: 8px;
1386
+ }
1387
+
1388
+ .rewind-agent-prompt-copy {
1389
+ width: 28px;
1390
+ height: 28px;
1391
+ display: grid;
1392
+ place-items: center;
1393
+ padding: 0;
1394
+ border: none;
1395
+ border-radius: 7px;
1396
+ background: transparent;
1397
+ color: var(--fg-muted);
1398
+ cursor: pointer;
1399
+ }
1400
+
1401
+ .rewind-agent-prompt-copy:hover {
1402
+ background: var(--surface-hover);
1403
+ color: var(--fg);
1404
+ }
1405
+
1406
+ .rewind-agent-prompt-copy:focus-visible {
1407
+ outline: none;
1408
+ box-shadow: 0 0 0 3px var(--brand-ring);
1409
+ }
1410
+
1411
+ .rewind-home-dot {
1412
+ width: 9px;
1413
+ height: 9px;
1414
+ margin-top: 4px;
1415
+ border-radius: 50%;
1416
+ background: var(--fg-subtle);
1417
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--fg-subtle) 13%, transparent);
1418
+ flex-shrink: 0;
1419
+ }
1420
+
1421
+ .rewind-home-dot.is-live {
1422
+ background: var(--status-ok);
1423
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--status-ok) 15%, transparent);
1424
+ }
1425
+
1426
+ .rewind-home-actions {
1427
+ display: grid;
1428
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1429
+ gap: 6px;
1430
+ }
1431
+
1432
+ .rewind-home-actions button {
1433
+ min-width: 0;
1434
+ min-height: 31px;
1435
+ display: inline-flex;
1436
+ align-items: center;
1437
+ justify-content: center;
1438
+ gap: 5px;
1439
+ border: 1px solid var(--border-strong);
1440
+ border-radius: var(--radius-sm);
1441
+ background: var(--bg);
1442
+ color: var(--fg);
1443
+ cursor: pointer;
1444
+ font-size: 10.5px;
1445
+ font-weight: 600;
1446
+ }
1447
+
1448
+ .rewind-home-actions button:hover:not(:disabled) {
1449
+ background: var(--surface-hover);
1450
+ }
1451
+
1452
+ .rewind-home-actions button:disabled {
1453
+ opacity: 0.42;
1454
+ cursor: default;
1455
+ }
1456
+
1457
+ .rewind-home-actions button:focus-visible,
1458
+ .rewind-consent-choices button:focus-visible,
1459
+ .rewind-consent-primary:focus-visible,
1460
+ .rewind-quiet-button:focus-visible,
1461
+ .rewind-search-row input:focus-visible,
1462
+ .rewind-search-row button:focus-visible,
1463
+ .rewind-setting-control:focus-visible,
1464
+ .rewind-settings-entry .secondary:focus-visible,
1465
+ .rewind-evidence-card .secondary:focus-visible,
1466
+ .rewind-memory-empty .secondary:focus-visible,
1467
+ .setup-back:focus-visible {
1468
+ outline: none;
1469
+ box-shadow: 0 0 0 3px var(--brand-ring);
1470
+ }
1471
+
1472
+ .rewind-home-actions .icon {
1473
+ width: 14px;
1474
+ height: 14px;
1475
+ }
1476
+
1477
+ .rewind-consent {
1478
+ min-height: 430px;
1479
+ align-items: center;
1480
+ padding: 24px;
1481
+ text-align: center;
1482
+ }
1483
+
1484
+ .rewind-consent-mark {
1485
+ width: 48px;
1486
+ height: 48px;
1487
+ display: grid;
1488
+ place-items: center;
1489
+ border-radius: 15px;
1490
+ background: var(--surface);
1491
+ }
1492
+
1493
+ .rewind-kicker {
1494
+ margin: -4px 0 -10px;
1495
+ color: var(--fg-muted);
1496
+ font-size: 10px;
1497
+ font-weight: 700;
1498
+ letter-spacing: 0.09em;
1499
+ text-transform: uppercase;
1500
+ }
1501
+
1502
+ .rewind-consent h2 {
1503
+ margin: 0;
1504
+ font-size: 20px;
1505
+ letter-spacing: -0.02em;
1506
+ }
1507
+
1508
+ .rewind-consent-copy,
1509
+ .rewind-surface-lede {
1510
+ margin: 0;
1511
+ color: var(--fg-muted);
1512
+ font-size: 12px;
1513
+ line-height: 1.5;
1514
+ }
1515
+
1516
+ .rewind-consent-choices {
1517
+ width: 100%;
1518
+ display: grid;
1519
+ gap: 8px;
1520
+ }
1521
+
1522
+ .rewind-consent-choices button {
1523
+ display: grid;
1524
+ gap: 3px;
1525
+ padding: 12px 13px;
1526
+ border: 1px solid var(--border);
1527
+ border-radius: var(--radius);
1528
+ background: var(--bg);
1529
+ color: var(--fg);
1530
+ cursor: pointer;
1531
+ text-align: left;
1532
+ }
1533
+
1534
+ .rewind-consent-choices button.selected {
1535
+ border-color: var(--fg);
1536
+ box-shadow: 0 0 0 1px var(--fg);
1537
+ }
1538
+
1539
+ .rewind-consent-choices span {
1540
+ color: var(--fg-muted);
1541
+ font-size: 11px;
1542
+ }
1543
+
1544
+ .rewind-local-promise {
1545
+ display: grid;
1546
+ grid-template-columns: auto minmax(0, 1fr);
1547
+ gap: 9px;
1548
+ width: 100%;
1549
+ padding: 11px;
1550
+ border-radius: var(--radius);
1551
+ background: var(--surface);
1552
+ color: var(--fg-muted);
1553
+ text-align: left;
1554
+ }
1555
+
1556
+ .rewind-local-promise p {
1557
+ margin: 0;
1558
+ font-size: 11px;
1559
+ line-height: 1.5;
1560
+ }
1561
+
1562
+ .rewind-local-promise strong {
1563
+ color: var(--fg);
1564
+ }
1565
+
1566
+ .rewind-consent-primary {
1567
+ width: 100%;
1568
+ min-height: 42px;
1569
+ }
1570
+
1571
+ .rewind-quiet-button {
1572
+ border: none;
1573
+ background: transparent;
1574
+ color: var(--fg-muted);
1575
+ cursor: pointer;
1576
+ font-size: 12px;
1577
+ font-weight: 600;
1578
+ }
1579
+
1580
+ .rewind-memory-surface,
1581
+ .rewind-settings-surface {
1582
+ gap: 14px;
1583
+ min-width: 0;
1584
+ max-width: 100%;
1585
+ overflow-x: hidden;
1586
+ }
1587
+
1588
+ .rewind-settings-surface {
1589
+ padding-bottom: 18px;
1590
+ }
1591
+
1592
+ .rewind-search-row {
1593
+ display: grid;
1594
+ grid-template-columns: auto minmax(0, 1fr) auto;
1595
+ align-items: center;
1596
+ gap: 8px;
1597
+ min-height: 42px;
1598
+ padding-left: 11px;
1599
+ border: 1px solid var(--border-strong);
1600
+ border-radius: 11px;
1601
+ background: var(--bg);
1602
+ }
1603
+
1604
+ .rewind-search-row input {
1605
+ min-width: 0;
1606
+ border: none;
1607
+ outline: none;
1608
+ background: transparent;
1609
+ color: var(--fg);
1610
+ }
1611
+
1612
+ .rewind-search-row button {
1613
+ align-self: stretch;
1614
+ border: none;
1615
+ border-left: 1px solid var(--border);
1616
+ border-radius: 0 10px 10px 0;
1617
+ background: var(--surface);
1618
+ padding: 0 12px;
1619
+ cursor: pointer;
1620
+ font-size: 11px;
1621
+ font-weight: 600;
1622
+ }
1623
+
1624
+ .rewind-search-row button:disabled {
1625
+ opacity: 0.45;
1626
+ cursor: default;
1627
+ }
1628
+
1629
+ .rewind-search-results {
1630
+ display: grid;
1631
+ gap: 8px;
1632
+ }
1633
+
1634
+ .rewind-result-summary {
1635
+ display: flex;
1636
+ justify-content: space-between;
1637
+ gap: 10px;
1638
+ color: var(--fg-muted);
1639
+ font-size: 10.5px;
1640
+ }
1641
+
1642
+ .rewind-result-summary strong {
1643
+ color: var(--fg);
1644
+ }
1645
+
1646
+ .rewind-evidence-card {
1647
+ display: grid;
1648
+ gap: 9px;
1649
+ padding: 12px;
1650
+ border: 1px solid var(--border);
1651
+ border-radius: var(--radius);
1652
+ background: var(--bg);
1653
+ }
1654
+
1655
+ .rewind-evidence-card p {
1656
+ margin: 0;
1657
+ line-height: 1.45;
1658
+ }
1659
+
1660
+ .rewind-evidence-meta {
1661
+ color: var(--fg-muted);
1662
+ font-size: 10.5px;
1663
+ font-weight: 600;
1664
+ }
1665
+
1666
+ .rewind-memory-empty {
1667
+ margin-top: 4px;
1668
+ }
1669
+
1670
+ .rewind-coverage-details {
1671
+ margin-top: 2px;
1672
+ }
1673
+
1674
+ .rewind-setting-row {
1675
+ min-height: 62px;
1676
+ display: grid;
1677
+ grid-template-columns: minmax(0, 1fr) 142px;
1678
+ align-items: center;
1679
+ gap: 14px;
1680
+ border-bottom: 1px solid var(--border);
1681
+ }
1682
+
1683
+ .rewind-setting-row > * {
1684
+ min-width: 0;
1685
+ }
1686
+
1687
+ .rewind-setting-control {
1688
+ width: 142px;
1689
+ max-width: 100%;
1690
+ padding-right: 28px;
1691
+ }
1692
+
1693
+ .rewind-settings-status,
1694
+ .rewind-boundary-note {
1695
+ display: flex;
1696
+ align-items: flex-start;
1697
+ gap: 9px;
1698
+ padding: 10px;
1699
+ border-radius: var(--radius-sm);
1700
+ background: var(--surface);
1701
+ color: var(--fg-muted);
1702
+ font-size: 11px;
1703
+ line-height: 1.45;
1704
+ }
1705
+
1706
+ .rewind-boundary-note {
1707
+ margin: -4px 0 0;
1708
+ }
1709
+
1710
+ .rewind-agent-row {
1711
+ border-bottom: none;
1712
+ }
1713
+
1714
+ .rewind-excluded-apps {
1715
+ display: grid;
1716
+ gap: 9px;
1717
+ padding: 12px 0;
1718
+ border-bottom: 1px solid var(--border);
1719
+ }
1720
+
1721
+ .rewind-excluded-apps-header {
1722
+ display: flex;
1723
+ align-items: center;
1724
+ justify-content: space-between;
1725
+ gap: 10px;
1726
+ min-width: 0;
1727
+ }
1728
+
1729
+ .rewind-choose-apps.secondary {
1730
+ width: auto;
1731
+ flex: 0 0 auto;
1732
+ padding: 7px 9px;
1733
+ font-size: 10.5px;
1734
+ }
1735
+
1736
+ .rewind-excluded-app-list {
1737
+ display: grid;
1738
+ gap: 5px;
1739
+ }
1740
+
1741
+ .rewind-excluded-app {
1742
+ display: grid;
1743
+ grid-template-columns: 28px minmax(0, 1fr) 26px;
1744
+ align-items: center;
1745
+ gap: 8px;
1746
+ min-width: 0;
1747
+ padding: 6px 7px;
1748
+ border: 1px solid var(--border);
1749
+ border-radius: var(--radius-sm);
1750
+ background: var(--surface);
1751
+ }
1752
+
1753
+ .rewind-excluded-app.is-missing {
1754
+ opacity: 0.62;
1755
+ }
1756
+
1757
+ .rewind-excluded-app-mark {
1758
+ width: 28px;
1759
+ height: 28px;
1760
+ display: grid;
1761
+ place-items: center;
1762
+ border-radius: 7px;
1763
+ background: var(--surface-strong);
1764
+ color: var(--fg-muted);
1765
+ font-size: 11px;
1766
+ font-weight: 700;
1767
+ }
1768
+
1769
+ .rewind-excluded-app-copy {
1770
+ display: grid;
1771
+ min-width: 0;
1005
1772
  }
1006
1773
 
1007
- .readiness-status {
1008
- display: inline-flex;
1009
- align-items: center;
1010
- justify-content: center;
1774
+ .rewind-excluded-app-copy strong,
1775
+ .rewind-excluded-app-copy span {
1776
+ overflow: hidden;
1777
+ text-overflow: ellipsis;
1778
+ white-space: nowrap;
1011
1779
  }
1012
1780
 
1013
- .readiness-status-ok {
1014
- color: var(--status-ok);
1781
+ .rewind-excluded-app-copy strong {
1782
+ font-size: 11px;
1015
1783
  }
1016
1784
 
1017
- .readiness-status-warn {
1018
- color: var(--status-warn);
1785
+ .rewind-excluded-app-copy span {
1786
+ color: var(--fg-muted);
1787
+ font-size: 9.5px;
1019
1788
  }
1020
1789
 
1021
- .readiness-refresh {
1022
- display: inline-flex;
1023
- align-items: center;
1024
- justify-content: center;
1025
- width: 24px;
1026
- height: 24px;
1790
+ .rewind-excluded-app-remove {
1791
+ width: 26px;
1792
+ height: 26px;
1793
+ display: grid;
1794
+ place-items: center;
1027
1795
  border: none;
1796
+ border-radius: 7px;
1028
1797
  background: transparent;
1029
1798
  color: var(--fg-muted);
1030
1799
  cursor: pointer;
1031
- border-radius: var(--radius-sm);
1032
- transition:
1033
- color 120ms,
1034
- background 120ms;
1035
- flex-shrink: 0;
1036
1800
  }
1037
1801
 
1038
- .readiness-refresh:hover {
1039
- color: var(--fg);
1802
+ .rewind-excluded-app-remove:hover:not(:disabled) {
1040
1803
  background: var(--surface-hover);
1804
+ color: var(--fg);
1041
1805
  }
1042
1806
 
1043
- .readiness-refresh:disabled {
1044
- opacity: 0.6;
1045
- cursor: default;
1807
+ .rewind-agent-guide {
1808
+ display: grid;
1809
+ grid-template-columns: auto minmax(0, 1fr);
1810
+ gap: 9px;
1811
+ padding: 11px;
1812
+ border: 1px solid var(--border);
1813
+ border-radius: var(--radius);
1814
+ background: color-mix(in srgb, var(--surface) 78%, var(--bg));
1046
1815
  }
1047
1816
 
1048
- .readiness-refresh-spinning svg {
1049
- animation: readiness-spin 0.8s linear infinite;
1817
+ .rewind-agent-guide-icon {
1818
+ width: 28px;
1819
+ height: 28px;
1820
+ display: grid;
1821
+ place-items: center;
1822
+ border-radius: 9px;
1823
+ background: var(--bg);
1050
1824
  }
1051
1825
 
1052
- @keyframes readiness-spin {
1053
- to {
1054
- transform: rotate(360deg);
1055
- }
1826
+ .rewind-agent-guide p {
1827
+ margin: 2px 0 5px;
1828
+ line-height: 1.45;
1056
1829
  }
1057
1830
 
1058
- .readiness-empty {
1059
- padding: 8px;
1831
+ .rewind-text-button {
1832
+ padding: 0;
1833
+ border: none;
1834
+ background: transparent;
1060
1835
  color: var(--fg-muted);
1061
- font-size: 12px;
1062
- line-height: 1.3;
1836
+ cursor: pointer;
1837
+ font-size: 10.5px;
1838
+ font-weight: 600;
1839
+ text-decoration: underline;
1840
+ text-underline-offset: 2px;
1063
1841
  }
1064
1842
 
1065
- .rec-dot {
1066
- width: 8px;
1067
- height: 8px;
1068
- border-radius: 50%;
1069
- background: #ef4444;
1070
- box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.3);
1843
+ .rewind-text-button:hover {
1844
+ color: var(--fg);
1071
1845
  }
1072
1846
 
1073
- /* Active-recording state on the primary button: softened orange-red
1074
- (Tailwind orange-700) — semantic "recording is live" without the harsh
1075
- pure-red assault. White square icon + live pulsing dot still read as
1076
- "stop". Hover stays the same shade (no brighten-on-hover) to keep the
1077
- affordance calm. */
1078
- .primary.start.rec-active {
1079
- background: #c2410c;
1080
- color: #fff;
1081
- }
1082
- .primary.start.rec-active:hover {
1083
- background: #9a3412;
1847
+ .rewind-detail-label {
1848
+ font-size: 11px;
1084
1849
  }
1085
1850
 
1086
- .rec-dot-live {
1087
- position: relative;
1088
- background: white;
1851
+ .rewind-memory-actions {
1852
+ display: grid;
1089
1853
  }
1090
1854
 
1091
- .rec-dot-live::after {
1092
- content: "";
1093
- position: absolute;
1094
- inset: -1px;
1095
- border-radius: inherit;
1096
- border: 1px solid rgba(255, 255, 255, 0.6);
1097
- animation: rec-live-pulse 1.2s ease-out infinite;
1098
- pointer-events: none;
1855
+ .rewind-memory-action {
1856
+ display: grid;
1857
+ grid-template-columns: minmax(0, 1fr) minmax(120px, 156px);
1858
+ align-items: center;
1859
+ gap: 12px;
1860
+ min-width: 0;
1861
+ padding: 11px 0;
1862
+ border-bottom: 1px solid var(--border);
1099
1863
  }
1100
1864
 
1101
- @keyframes rec-live-pulse {
1102
- 0% {
1103
- transform: scale(1);
1104
- opacity: 1;
1105
- }
1106
- 70% {
1107
- transform: scale(2.4);
1108
- opacity: 0;
1109
- }
1110
- 100% {
1111
- transform: scale(2.4);
1112
- opacity: 0;
1113
- }
1865
+ .rewind-memory-action:first-child {
1866
+ padding-top: 2px;
1114
1867
  }
1115
1868
 
1116
- @media (prefers-reduced-motion: reduce) {
1117
- .rec-dot-live::after {
1118
- animation: none;
1119
- opacity: 0.6;
1120
- transform: none;
1121
- }
1869
+ .rewind-memory-action:last-child {
1870
+ padding-bottom: 2px;
1871
+ border-bottom: none;
1122
1872
  }
1123
1873
 
1124
- /* ------------------------------------------------------------------------- */
1125
- /* Bottom quick-actions row */
1126
- /* ------------------------------------------------------------------------- */
1874
+ .rewind-memory-action p {
1875
+ margin: 3px 0 0;
1876
+ color: var(--fg-muted);
1877
+ font-size: 10.5px;
1878
+ line-height: 1.4;
1879
+ }
1127
1880
 
1128
- .bottom-row {
1129
- display: grid;
1130
- grid-template-columns: repeat(4, 1fr);
1131
- gap: 4px;
1881
+ .rewind-memory-action-copy {
1882
+ min-width: 0;
1132
1883
  }
1133
1884
 
1134
- .bottom-btn {
1885
+ .rewind-inline-receipt {
1135
1886
  display: flex;
1136
- flex-direction: column;
1137
1887
  align-items: center;
1138
- gap: 4px;
1139
- padding: 8px 4px;
1140
- border: none;
1141
- background: transparent;
1142
- border-radius: var(--radius-sm);
1143
- color: var(--fg-muted);
1144
- cursor: pointer;
1145
- transition:
1146
- background 120ms,
1147
- color 120ms;
1888
+ gap: 8px;
1889
+ margin-top: 7px;
1890
+ color: #15803d;
1891
+ font-size: 10.5px;
1892
+ font-weight: 600;
1148
1893
  }
1149
1894
 
1150
- .bottom-btn:hover {
1151
- background: var(--surface-hover);
1152
- color: var(--fg);
1895
+ .rewind-inline-receipt .rewind-text-button {
1896
+ color: inherit;
1153
1897
  }
1154
1898
 
1155
- .bottom-icon {
1156
- position: relative;
1157
- display: inline-flex;
1158
- align-items: center;
1159
- justify-content: center;
1160
- color: var(--fg-muted);
1899
+ .rewind-agent-repair .rewind-memory-actions {
1900
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1901
+ gap: 8px;
1902
+ margin-top: 8px;
1161
1903
  }
1162
1904
 
1163
- .bottom-btn:hover .bottom-icon {
1164
- color: var(--fg);
1905
+ .rewind-agent-repair .secondary {
1906
+ min-width: 0;
1907
+ white-space: normal;
1165
1908
  }
1166
1909
 
1167
- .bottom-label {
1168
- font-size: 11px;
1169
- font-weight: 500;
1910
+ @media (max-width: 420px) {
1911
+ .rewind-setting-row,
1912
+ .rewind-memory-action {
1913
+ grid-template-columns: minmax(0, 1fr);
1914
+ align-items: stretch;
1915
+ }
1916
+
1917
+ .rewind-setting-control {
1918
+ width: 100%;
1919
+ }
1920
+
1921
+ .rewind-agent-repair .rewind-memory-actions {
1922
+ grid-template-columns: minmax(0, 1fr);
1923
+ }
1170
1924
  }
1171
1925
 
1172
- /* ------------------------------------------------------------------------- */
1173
- /* Popover drill-in views */
1174
- /* ------------------------------------------------------------------------- */
1926
+ .rewind-memory-action .secondary {
1927
+ width: 100%;
1928
+ min-width: 0;
1929
+ white-space: normal;
1930
+ line-height: 1.25;
1931
+ }
1175
1932
 
1176
- .app-popover-view {
1177
- gap: 0;
1178
- padding: 0;
1933
+ .rewind-memory-action.is-danger strong {
1934
+ color: #991b1b;
1179
1935
  }
1180
1936
 
1181
- .popover-view {
1182
- min-height: 260px;
1937
+ .rewind-danger-button {
1938
+ color: #b91c1c;
1183
1939
  }
1184
1940
 
1185
- .popover-view-header {
1186
- margin-bottom: 2px;
1941
+ .setup .rewind-settings-entry {
1942
+ display: grid;
1943
+ grid-template-columns: minmax(0, 1fr) auto;
1944
+ align-items: center;
1945
+ gap: 12px;
1187
1946
  }
1188
1947
 
1189
- .popover-view-header-spacer {
1190
- flex: 1;
1948
+ .rewind-settings-entry .secondary {
1949
+ width: auto;
1191
1950
  }
1192
1951
 
1193
- .popover-view-link {
1194
- font-size: 11px;
1952
+ .setup .setup-rewind-legacy {
1953
+ display: none;
1195
1954
  }
1196
1955
 
1197
1956
  .popover-empty-card {
@@ -1493,7 +2252,7 @@ body[data-clips-route="recording-pill"] #root {
1493
2252
  content isn't flush with the panel edge. Must follow `.setup` so it wins
1494
2253
  over the shorthand padding above. */
1495
2254
  .setup.popover-view {
1496
- padding-bottom: 16px;
2255
+ padding-bottom: 32px;
1497
2256
  }
1498
2257
 
1499
2258
  .setup h2 {
@@ -1835,6 +2594,13 @@ body[data-clips-route="recording-pill"] #root {
1835
2594
  background-repeat: no-repeat;
1836
2595
  }
1837
2596
 
2597
+ .setup-select:disabled {
2598
+ opacity: 0.48;
2599
+ color: var(--fg-muted);
2600
+ background-color: var(--surface);
2601
+ cursor: not-allowed;
2602
+ }
2603
+
1838
2604
  .setup-grid {
1839
2605
  display: grid;
1840
2606
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -2572,6 +3338,45 @@ body[data-clips-route="recording-pill"] #root {
2572
3338
  /* Overlay: finalizing spinner */
2573
3339
  /* ------------------------------------------------------------------------- */
2574
3340
 
3341
+ .preparing-root {
3342
+ position: fixed;
3343
+ inset: 0;
3344
+ display: flex;
3345
+ align-items: flex-end;
3346
+ justify-content: flex-start;
3347
+ padding: 10px;
3348
+ background: transparent;
3349
+ }
3350
+
3351
+ .preparing-card {
3352
+ display: flex;
3353
+ align-items: center;
3354
+ gap: 10px;
3355
+ width: 100%;
3356
+ padding: 12px 14px;
3357
+ border-radius: 16px;
3358
+ background: rgba(20, 22, 28, 0.94);
3359
+ backdrop-filter: blur(20px);
3360
+ -webkit-backdrop-filter: blur(20px);
3361
+ border: 1px solid rgba(255, 255, 255, 0.08);
3362
+ box-shadow:
3363
+ 0 14px 40px rgba(0, 0, 0, 0.45),
3364
+ 0 2px 6px rgba(0, 0, 0, 0.3);
3365
+ color: white;
3366
+ font-size: 13px;
3367
+ font-weight: 600;
3368
+ }
3369
+
3370
+ .preparing-spinner {
3371
+ width: 18px;
3372
+ height: 18px;
3373
+ flex: 0 0 auto;
3374
+ border-radius: 50%;
3375
+ border: 2px solid rgba(255, 255, 255, 0.18);
3376
+ border-top-color: #ffffff;
3377
+ animation: finalizing-spin 0.9s linear infinite;
3378
+ }
3379
+
2575
3380
  /*
2576
3381
  * Compact transparent window shown after the user clicks Stop. Keeping the OS
2577
3382
  * window close to the card's bounds lets its open/dismiss controls stay
@@ -2962,11 +3767,28 @@ body[data-clips-route="recording-pill"] #root {
2962
3767
 
2963
3768
  .toolbar-v-time {
2964
3769
  flex: 0 0 auto;
3770
+ appearance: none;
3771
+ padding: 2px 4px;
3772
+ border: 0;
3773
+ border-radius: 6px;
3774
+ background: transparent;
2965
3775
  font-variant-numeric: tabular-nums;
2966
3776
  font-size: 14px;
2967
3777
  font-weight: 600;
2968
3778
  color: white;
2969
3779
  letter-spacing: 0.3px;
3780
+ cursor: pointer;
3781
+ }
3782
+
3783
+ .toolbar-v-time:hover,
3784
+ .toolbar-v-time:focus-visible {
3785
+ background: rgba(255, 255, 255, 0.1);
3786
+ outline: none;
3787
+ }
3788
+
3789
+ .toolbar-v-time-preparing {
3790
+ font-size: 9px;
3791
+ letter-spacing: 0;
2970
3792
  }
2971
3793
 
2972
3794
  .toolbar-v-pause {