tabwright 1.0.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.
Files changed (599) hide show
  1. package/LICENSE +21 -0
  2. package/bin.js +4 -0
  3. package/dist/a11y-client.js +204 -0
  4. package/dist/agent-skills/tabwright/SKILL.md +119 -0
  5. package/dist/aria-snapshot.d.ts +262 -0
  6. package/dist/aria-snapshot.d.ts.map +1 -0
  7. package/dist/aria-snapshot.js +1256 -0
  8. package/dist/aria-snapshot.js.map +1 -0
  9. package/dist/aria-snapshot.test.d.ts +2 -0
  10. package/dist/aria-snapshot.test.d.ts.map +1 -0
  11. package/dist/aria-snapshot.test.js +270 -0
  12. package/dist/aria-snapshot.test.js.map +1 -0
  13. package/dist/aria-snapshot.unit.test.d.ts +2 -0
  14. package/dist/aria-snapshot.unit.test.d.ts.map +1 -0
  15. package/dist/aria-snapshot.unit.test.js +542 -0
  16. package/dist/aria-snapshot.unit.test.js.map +1 -0
  17. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts +5 -0
  18. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts.map +1 -0
  19. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js +5 -0
  20. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js.map +1 -0
  21. package/dist/bippy.js +894 -0
  22. package/dist/browser-config.d.ts +13 -0
  23. package/dist/browser-config.d.ts.map +1 -0
  24. package/dist/browser-config.js +126 -0
  25. package/dist/browser-config.js.map +1 -0
  26. package/dist/browser-install.d.ts +16 -0
  27. package/dist/browser-install.d.ts.map +1 -0
  28. package/dist/browser-install.js +238 -0
  29. package/dist/browser-install.js.map +1 -0
  30. package/dist/browser-launch.d.ts +17 -0
  31. package/dist/browser-launch.d.ts.map +1 -0
  32. package/dist/browser-launch.js +44 -0
  33. package/dist/browser-launch.js.map +1 -0
  34. package/dist/builtin-capabilities.d.ts +28 -0
  35. package/dist/builtin-capabilities.d.ts.map +1 -0
  36. package/dist/builtin-capabilities.js +2673 -0
  37. package/dist/builtin-capabilities.js.map +1 -0
  38. package/dist/capability-agent-skill.d.ts +60 -0
  39. package/dist/capability-agent-skill.d.ts.map +1 -0
  40. package/dist/capability-agent-skill.js +225 -0
  41. package/dist/capability-agent-skill.js.map +1 -0
  42. package/dist/capability-auth-state.d.ts +34 -0
  43. package/dist/capability-auth-state.d.ts.map +1 -0
  44. package/dist/capability-auth-state.js +157 -0
  45. package/dist/capability-auth-state.js.map +1 -0
  46. package/dist/capability-auth.d.ts +36 -0
  47. package/dist/capability-auth.d.ts.map +1 -0
  48. package/dist/capability-auth.js +198 -0
  49. package/dist/capability-auth.js.map +1 -0
  50. package/dist/capability-cli-confirmation.test.d.ts +2 -0
  51. package/dist/capability-cli-confirmation.test.d.ts.map +1 -0
  52. package/dist/capability-cli-confirmation.test.js +79 -0
  53. package/dist/capability-cli-confirmation.test.js.map +1 -0
  54. package/dist/capability-options.d.ts +20 -0
  55. package/dist/capability-options.d.ts.map +1 -0
  56. package/dist/capability-options.js +31 -0
  57. package/dist/capability-options.js.map +1 -0
  58. package/dist/capability-options.test.d.ts +2 -0
  59. package/dist/capability-options.test.d.ts.map +1 -0
  60. package/dist/capability-options.test.js +81 -0
  61. package/dist/capability-options.test.js.map +1 -0
  62. package/dist/capability-package.d.ts +27 -0
  63. package/dist/capability-package.d.ts.map +1 -0
  64. package/dist/capability-package.js +444 -0
  65. package/dist/capability-package.js.map +1 -0
  66. package/dist/capability-package.test.d.ts +2 -0
  67. package/dist/capability-package.test.d.ts.map +1 -0
  68. package/dist/capability-package.test.js +179 -0
  69. package/dist/capability-package.test.js.map +1 -0
  70. package/dist/capability-registry.d.ts +262 -0
  71. package/dist/capability-registry.d.ts.map +1 -0
  72. package/dist/capability-registry.js +931 -0
  73. package/dist/capability-registry.js.map +1 -0
  74. package/dist/capability-registry.test.d.ts +2 -0
  75. package/dist/capability-registry.test.d.ts.map +1 -0
  76. package/dist/capability-registry.test.js +1683 -0
  77. package/dist/capability-registry.test.js.map +1 -0
  78. package/dist/capability-runner.d.ts +99 -0
  79. package/dist/capability-runner.d.ts.map +1 -0
  80. package/dist/capability-runner.js +608 -0
  81. package/dist/capability-runner.js.map +1 -0
  82. package/dist/capability-search-relevance.test.d.ts +2 -0
  83. package/dist/capability-search-relevance.test.d.ts.map +1 -0
  84. package/dist/capability-search-relevance.test.js +67 -0
  85. package/dist/capability-search-relevance.test.js.map +1 -0
  86. package/dist/capability-studio.d.ts +11 -0
  87. package/dist/capability-studio.d.ts.map +1 -0
  88. package/dist/capability-studio.js +593 -0
  89. package/dist/capability-studio.js.map +1 -0
  90. package/dist/capability-studio.test.d.ts +2 -0
  91. package/dist/capability-studio.test.d.ts.map +1 -0
  92. package/dist/capability-studio.test.js +41 -0
  93. package/dist/capability-studio.test.js.map +1 -0
  94. package/dist/cdp-log.d.ts +19 -0
  95. package/dist/cdp-log.d.ts.map +1 -0
  96. package/dist/cdp-log.js +83 -0
  97. package/dist/cdp-log.js.map +1 -0
  98. package/dist/cdp-log.test.d.ts +2 -0
  99. package/dist/cdp-log.test.d.ts.map +1 -0
  100. package/dist/cdp-log.test.js +109 -0
  101. package/dist/cdp-log.test.js.map +1 -0
  102. package/dist/cdp-relay.d.ts +19 -0
  103. package/dist/cdp-relay.d.ts.map +1 -0
  104. package/dist/cdp-relay.js +2375 -0
  105. package/dist/cdp-relay.js.map +1 -0
  106. package/dist/cdp-session.d.ts +37 -0
  107. package/dist/cdp-session.d.ts.map +1 -0
  108. package/dist/cdp-session.js +36 -0
  109. package/dist/cdp-session.js.map +1 -0
  110. package/dist/cdp-types.d.ts +65 -0
  111. package/dist/cdp-types.d.ts.map +1 -0
  112. package/dist/cdp-types.js +91 -0
  113. package/dist/cdp-types.js.map +1 -0
  114. package/dist/channel-owner-inspect.test.d.ts +2 -0
  115. package/dist/channel-owner-inspect.test.d.ts.map +1 -0
  116. package/dist/channel-owner-inspect.test.js +75 -0
  117. package/dist/channel-owner-inspect.test.js.map +1 -0
  118. package/dist/chrome-discovery.d.ts +65 -0
  119. package/dist/chrome-discovery.d.ts.map +1 -0
  120. package/dist/chrome-discovery.js +173 -0
  121. package/dist/chrome-discovery.js.map +1 -0
  122. package/dist/chrome-discovery.test.d.ts +2 -0
  123. package/dist/chrome-discovery.test.d.ts.map +1 -0
  124. package/dist/chrome-discovery.test.js +41 -0
  125. package/dist/chrome-discovery.test.js.map +1 -0
  126. package/dist/clean-html.d.ts +11 -0
  127. package/dist/clean-html.d.ts.map +1 -0
  128. package/dist/clean-html.js +106 -0
  129. package/dist/clean-html.js.map +1 -0
  130. package/dist/cli-help.test.d.ts +2 -0
  131. package/dist/cli-help.test.d.ts.map +1 -0
  132. package/dist/cli-help.test.js +98 -0
  133. package/dist/cli-help.test.js.map +1 -0
  134. package/dist/cli.d.ts +3 -0
  135. package/dist/cli.d.ts.map +1 -0
  136. package/dist/cli.js +2709 -0
  137. package/dist/cli.js.map +1 -0
  138. package/dist/cloud-client.d.ts +56 -0
  139. package/dist/cloud-client.d.ts.map +1 -0
  140. package/dist/cloud-client.js +127 -0
  141. package/dist/cloud-client.js.map +1 -0
  142. package/dist/create-logger.d.ts +9 -0
  143. package/dist/create-logger.d.ts.map +1 -0
  144. package/dist/create-logger.js +27 -0
  145. package/dist/create-logger.js.map +1 -0
  146. package/dist/debugger-api.md +458 -0
  147. package/dist/debugger-examples-types.d.ts +24 -0
  148. package/dist/debugger-examples-types.d.ts.map +1 -0
  149. package/dist/debugger-examples-types.js +2 -0
  150. package/dist/debugger-examples-types.js.map +1 -0
  151. package/dist/debugger-examples.d.ts +6 -0
  152. package/dist/debugger-examples.d.ts.map +1 -0
  153. package/dist/debugger-examples.js +53 -0
  154. package/dist/debugger-examples.js.map +1 -0
  155. package/dist/debugger.d.ts +381 -0
  156. package/dist/debugger.d.ts.map +1 -0
  157. package/dist/debugger.js +630 -0
  158. package/dist/debugger.js.map +1 -0
  159. package/dist/diff-utils.d.ts +20 -0
  160. package/dist/diff-utils.d.ts.map +1 -0
  161. package/dist/diff-utils.js +50 -0
  162. package/dist/diff-utils.js.map +1 -0
  163. package/dist/diff-utils.test.d.ts +2 -0
  164. package/dist/diff-utils.test.d.ts.map +1 -0
  165. package/dist/diff-utils.test.js +137 -0
  166. package/dist/diff-utils.test.js.map +1 -0
  167. package/dist/doctor.d.ts +44 -0
  168. package/dist/doctor.d.ts.map +1 -0
  169. package/dist/doctor.js +246 -0
  170. package/dist/doctor.js.map +1 -0
  171. package/dist/doctor.test.d.ts +2 -0
  172. package/dist/doctor.test.d.ts.map +1 -0
  173. package/dist/doctor.test.js +208 -0
  174. package/dist/doctor.test.js.map +1 -0
  175. package/dist/editor-api.md +374 -0
  176. package/dist/editor-examples.d.ts +11 -0
  177. package/dist/editor-examples.d.ts.map +1 -0
  178. package/dist/editor-examples.js +124 -0
  179. package/dist/editor-examples.js.map +1 -0
  180. package/dist/editor.d.ts +203 -0
  181. package/dist/editor.d.ts.map +1 -0
  182. package/dist/editor.js +363 -0
  183. package/dist/editor.js.map +1 -0
  184. package/dist/env-compat.d.ts +2 -0
  185. package/dist/env-compat.d.ts.map +1 -0
  186. package/dist/env-compat.js +27 -0
  187. package/dist/env-compat.js.map +1 -0
  188. package/dist/executor.d.ts +229 -0
  189. package/dist/executor.d.ts.map +1 -0
  190. package/dist/executor.js +1465 -0
  191. package/dist/executor.js.map +1 -0
  192. package/dist/executor.unit.test.d.ts +2 -0
  193. package/dist/executor.unit.test.d.ts.map +1 -0
  194. package/dist/executor.unit.test.js +143 -0
  195. package/dist/executor.unit.test.js.map +1 -0
  196. package/dist/extension/_locales/en/messages.json +278 -0
  197. package/dist/extension/_locales/zh_CN/messages.json +256 -0
  198. package/dist/extension/assets/options-CYH96Lcx.css +1349 -0
  199. package/dist/extension/background.js +3994 -0
  200. package/dist/extension/icons/SolarCursorSquareBold.png +0 -0
  201. package/dist/extension/icons/icon-black-128.png +0 -0
  202. package/dist/extension/icons/icon-black-16.png +0 -0
  203. package/dist/extension/icons/icon-black-32.png +0 -0
  204. package/dist/extension/icons/icon-black-48.png +0 -0
  205. package/dist/extension/icons/icon-gray-128.png +0 -0
  206. package/dist/extension/icons/icon-gray-16.png +0 -0
  207. package/dist/extension/icons/icon-gray-32.png +0 -0
  208. package/dist/extension/icons/icon-gray-48.png +0 -0
  209. package/dist/extension/icons/icon-green-128.png +0 -0
  210. package/dist/extension/icons/icon-green-16.png +0 -0
  211. package/dist/extension/icons/icon-green-32.png +0 -0
  212. package/dist/extension/icons/icon-green-48.png +0 -0
  213. package/dist/extension/icons/tabwright-icon-black.png +0 -0
  214. package/dist/extension/icons/tabwright-icon-gray-disabled.png +0 -0
  215. package/dist/extension/icons/tabwright-icon-gray-disabled.svg +1 -0
  216. package/dist/extension/manifest.json +54 -0
  217. package/dist/extension/options.js +16145 -0
  218. package/dist/extension/rrweb-recorder.js +12952 -0
  219. package/dist/extension/src/options.html +165 -0
  220. package/dist/extension/src/prism-bash.min.js +1 -0
  221. package/dist/extension/src/prism.min.js +1 -0
  222. package/dist/extension/src/welcome.html +396 -0
  223. package/dist/extension-connection.test.d.ts +2 -0
  224. package/dist/extension-connection.test.d.ts.map +1 -0
  225. package/dist/extension-connection.test.js +708 -0
  226. package/dist/extension-connection.test.js.map +1 -0
  227. package/dist/extension-icon-warning.test.d.ts +2 -0
  228. package/dist/extension-icon-warning.test.d.ts.map +1 -0
  229. package/dist/extension-icon-warning.test.js +33 -0
  230. package/dist/extension-icon-warning.test.js.map +1 -0
  231. package/dist/ghost-browser.d.ts +62 -0
  232. package/dist/ghost-browser.d.ts.map +1 -0
  233. package/dist/ghost-browser.js +107 -0
  234. package/dist/ghost-browser.js.map +1 -0
  235. package/dist/ghost-cursor-client.js +374 -0
  236. package/dist/ghost-cursor-controller.d.ts +46 -0
  237. package/dist/ghost-cursor-controller.d.ts.map +1 -0
  238. package/dist/ghost-cursor-controller.js +98 -0
  239. package/dist/ghost-cursor-controller.js.map +1 -0
  240. package/dist/ghost-cursor.d.ts +27 -0
  241. package/dist/ghost-cursor.d.ts.map +1 -0
  242. package/dist/ghost-cursor.js +79 -0
  243. package/dist/ghost-cursor.js.map +1 -0
  244. package/dist/htmlrewrite.d.ts +8 -0
  245. package/dist/htmlrewrite.d.ts.map +1 -0
  246. package/dist/htmlrewrite.js +339 -0
  247. package/dist/htmlrewrite.js.map +1 -0
  248. package/dist/htmlrewrite.test.d.ts +2 -0
  249. package/dist/htmlrewrite.test.d.ts.map +1 -0
  250. package/dist/htmlrewrite.test.js +7975 -0
  251. package/dist/htmlrewrite.test.js.map +1 -0
  252. package/dist/index.d.ts +20 -0
  253. package/dist/index.d.ts.map +1 -0
  254. package/dist/index.js +11 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/kill-port.d.ts +29 -0
  257. package/dist/kill-port.d.ts.map +1 -0
  258. package/dist/kill-port.js +190 -0
  259. package/dist/kill-port.js.map +1 -0
  260. package/dist/kitty-graphics.d.ts +22 -0
  261. package/dist/kitty-graphics.d.ts.map +1 -0
  262. package/dist/kitty-graphics.js +71 -0
  263. package/dist/kitty-graphics.js.map +1 -0
  264. package/dist/kitty-graphics.test.d.ts +2 -0
  265. package/dist/kitty-graphics.test.d.ts.map +1 -0
  266. package/dist/kitty-graphics.test.js +125 -0
  267. package/dist/kitty-graphics.test.js.map +1 -0
  268. package/dist/locator-selector.test.d.ts +2 -0
  269. package/dist/locator-selector.test.d.ts.map +1 -0
  270. package/dist/locator-selector.test.js +98 -0
  271. package/dist/locator-selector.test.js.map +1 -0
  272. package/dist/mcp-client.d.ts +20 -0
  273. package/dist/mcp-client.d.ts.map +1 -0
  274. package/dist/mcp-client.js +56 -0
  275. package/dist/mcp-client.js.map +1 -0
  276. package/dist/mcp.d.ts +6 -0
  277. package/dist/mcp.d.ts.map +1 -0
  278. package/dist/mcp.js +511 -0
  279. package/dist/mcp.js.map +1 -0
  280. package/dist/on-mouse-action.test.d.ts +2 -0
  281. package/dist/on-mouse-action.test.d.ts.map +1 -0
  282. package/dist/on-mouse-action.test.js +180 -0
  283. package/dist/on-mouse-action.test.js.map +1 -0
  284. package/dist/options-page.test.d.ts +2 -0
  285. package/dist/options-page.test.d.ts.map +1 -0
  286. package/dist/options-page.test.js +773 -0
  287. package/dist/options-page.test.js.map +1 -0
  288. package/dist/package-paths.d.ts +4 -0
  289. package/dist/package-paths.d.ts.map +1 -0
  290. package/dist/package-paths.js +30 -0
  291. package/dist/package-paths.js.map +1 -0
  292. package/dist/page-markdown.d.ts +40 -0
  293. package/dist/page-markdown.d.ts.map +1 -0
  294. package/dist/page-markdown.js +181 -0
  295. package/dist/page-markdown.js.map +1 -0
  296. package/dist/performance-examples.d.ts +5 -0
  297. package/dist/performance-examples.d.ts.map +1 -0
  298. package/dist/performance-examples.js +112 -0
  299. package/dist/performance-examples.js.map +1 -0
  300. package/dist/performance-profiling.md +417 -0
  301. package/dist/playwright-import.d.ts +19 -0
  302. package/dist/playwright-import.d.ts.map +1 -0
  303. package/dist/playwright-import.js +40 -0
  304. package/dist/playwright-import.js.map +1 -0
  305. package/dist/popup-relocation.test.d.ts +7 -0
  306. package/dist/popup-relocation.test.d.ts.map +1 -0
  307. package/dist/popup-relocation.test.js +139 -0
  308. package/dist/popup-relocation.test.js.map +1 -0
  309. package/dist/product-paths.d.ts +9 -0
  310. package/dist/product-paths.d.ts.map +1 -0
  311. package/dist/product-paths.js +24 -0
  312. package/dist/product-paths.js.map +1 -0
  313. package/dist/product-paths.test.d.ts +2 -0
  314. package/dist/product-paths.test.d.ts.map +1 -0
  315. package/dist/product-paths.test.js +39 -0
  316. package/dist/product-paths.test.js.map +1 -0
  317. package/dist/prompt.md +1004 -0
  318. package/dist/protocol.d.ts +248 -0
  319. package/dist/protocol.d.ts.map +1 -0
  320. package/dist/protocol.js +59 -0
  321. package/dist/protocol.js.map +1 -0
  322. package/dist/protocol.test.d.ts +2 -0
  323. package/dist/protocol.test.d.ts.map +1 -0
  324. package/dist/protocol.test.js +31 -0
  325. package/dist/protocol.test.js.map +1 -0
  326. package/dist/react-source.d.ts +57 -0
  327. package/dist/react-source.d.ts.map +1 -0
  328. package/dist/react-source.js +254 -0
  329. package/dist/react-source.js.map +1 -0
  330. package/dist/readability.js +1674 -0
  331. package/dist/relay-client.d.ts +104 -0
  332. package/dist/relay-client.d.ts.map +1 -0
  333. package/dist/relay-client.js +426 -0
  334. package/dist/relay-client.js.map +1 -0
  335. package/dist/relay-client.test.d.ts +2 -0
  336. package/dist/relay-client.test.d.ts.map +1 -0
  337. package/dist/relay-client.test.js +305 -0
  338. package/dist/relay-client.test.js.map +1 -0
  339. package/dist/relay-core.test.d.ts +2 -0
  340. package/dist/relay-core.test.d.ts.map +1 -0
  341. package/dist/relay-core.test.js +1427 -0
  342. package/dist/relay-core.test.js.map +1 -0
  343. package/dist/relay-navigation.test.d.ts +2 -0
  344. package/dist/relay-navigation.test.d.ts.map +1 -0
  345. package/dist/relay-navigation.test.js +661 -0
  346. package/dist/relay-navigation.test.js.map +1 -0
  347. package/dist/relay-session.test.d.ts +2 -0
  348. package/dist/relay-session.test.d.ts.map +1 -0
  349. package/dist/relay-session.test.js +1121 -0
  350. package/dist/relay-session.test.js.map +1 -0
  351. package/dist/relay-state.d.ts +178 -0
  352. package/dist/relay-state.d.ts.map +1 -0
  353. package/dist/relay-state.js +346 -0
  354. package/dist/relay-state.js.map +1 -0
  355. package/dist/relay-state.test.d.ts +2 -0
  356. package/dist/relay-state.test.d.ts.map +1 -0
  357. package/dist/relay-state.test.js +594 -0
  358. package/dist/relay-state.test.js.map +1 -0
  359. package/dist/replay-ai-index.d.ts +99 -0
  360. package/dist/replay-ai-index.d.ts.map +1 -0
  361. package/dist/replay-ai-index.js +677 -0
  362. package/dist/replay-ai-index.js.map +1 -0
  363. package/dist/replay-ai-index.test.d.ts +2 -0
  364. package/dist/replay-ai-index.test.d.ts.map +1 -0
  365. package/dist/replay-ai-index.test.js +255 -0
  366. package/dist/replay-ai-index.test.js.map +1 -0
  367. package/dist/replay-cli.test.d.ts +2 -0
  368. package/dist/replay-cli.test.d.ts.map +1 -0
  369. package/dist/replay-cli.test.js +275 -0
  370. package/dist/replay-cli.test.js.map +1 -0
  371. package/dist/replay-eval.d.ts +44 -0
  372. package/dist/replay-eval.d.ts.map +1 -0
  373. package/dist/replay-eval.js +902 -0
  374. package/dist/replay-eval.js.map +1 -0
  375. package/dist/replay-handoff.d.ts +29 -0
  376. package/dist/replay-handoff.d.ts.map +1 -0
  377. package/dist/replay-handoff.js +83 -0
  378. package/dist/replay-handoff.js.map +1 -0
  379. package/dist/replay-handoff.test.d.ts +2 -0
  380. package/dist/replay-handoff.test.d.ts.map +1 -0
  381. package/dist/replay-handoff.test.js +123 -0
  382. package/dist/replay-handoff.test.js.map +1 -0
  383. package/dist/replay-workflow-compiler.d.ts +44 -0
  384. package/dist/replay-workflow-compiler.d.ts.map +1 -0
  385. package/dist/replay-workflow-compiler.js +601 -0
  386. package/dist/replay-workflow-compiler.js.map +1 -0
  387. package/dist/replay-workflow-compiler.test.d.ts +2 -0
  388. package/dist/replay-workflow-compiler.test.d.ts.map +1 -0
  389. package/dist/replay-workflow-compiler.test.js +223 -0
  390. package/dist/replay-workflow-compiler.test.js.map +1 -0
  391. package/dist/rrweb-recording-relay.d.ts +56 -0
  392. package/dist/rrweb-recording-relay.d.ts.map +1 -0
  393. package/dist/rrweb-recording-relay.js +299 -0
  394. package/dist/rrweb-recording-relay.js.map +1 -0
  395. package/dist/rrweb-recording-relay.test.d.ts +2 -0
  396. package/dist/rrweb-recording-relay.test.d.ts.map +1 -0
  397. package/dist/rrweb-recording-relay.test.js +85 -0
  398. package/dist/rrweb-recording-relay.test.js.map +1 -0
  399. package/dist/rrweb-recording.d.ts +104 -0
  400. package/dist/rrweb-recording.d.ts.map +1 -0
  401. package/dist/rrweb-recording.js +180 -0
  402. package/dist/rrweb-recording.js.map +1 -0
  403. package/dist/scoped-fs.d.ts +95 -0
  404. package/dist/scoped-fs.d.ts.map +1 -0
  405. package/dist/scoped-fs.js +358 -0
  406. package/dist/scoped-fs.js.map +1 -0
  407. package/dist/scoped-fs.test.d.ts +5 -0
  408. package/dist/scoped-fs.test.d.ts.map +1 -0
  409. package/dist/scoped-fs.test.js +73 -0
  410. package/dist/scoped-fs.test.js.map +1 -0
  411. package/dist/selector-generator.js +7378 -0
  412. package/dist/skill-stub.test.d.ts +2 -0
  413. package/dist/skill-stub.test.d.ts.map +1 -0
  414. package/dist/skill-stub.test.js +22 -0
  415. package/dist/skill-stub.test.js.map +1 -0
  416. package/dist/snapshot-tools.test.d.ts +2 -0
  417. package/dist/snapshot-tools.test.d.ts.map +1 -0
  418. package/dist/snapshot-tools.test.js +856 -0
  419. package/dist/snapshot-tools.test.js.map +1 -0
  420. package/dist/start-relay-server.d.ts +6 -0
  421. package/dist/start-relay-server.d.ts.map +1 -0
  422. package/dist/start-relay-server.js +57 -0
  423. package/dist/start-relay-server.js.map +1 -0
  424. package/dist/styles-api.md +124 -0
  425. package/dist/styles-examples.d.ts +8 -0
  426. package/dist/styles-examples.d.ts.map +1 -0
  427. package/dist/styles-examples.js +64 -0
  428. package/dist/styles-examples.js.map +1 -0
  429. package/dist/styles.d.ts +27 -0
  430. package/dist/styles.d.ts.map +1 -0
  431. package/dist/styles.js +231 -0
  432. package/dist/styles.js.map +1 -0
  433. package/dist/tabwright-agent-skill.d.ts +30 -0
  434. package/dist/tabwright-agent-skill.d.ts.map +1 -0
  435. package/dist/tabwright-agent-skill.js +74 -0
  436. package/dist/tabwright-agent-skill.js.map +1 -0
  437. package/dist/tabwright-agent-skill.test.d.ts +2 -0
  438. package/dist/tabwright-agent-skill.test.d.ts.map +1 -0
  439. package/dist/tabwright-agent-skill.test.js +51 -0
  440. package/dist/tabwright-agent-skill.test.js.map +1 -0
  441. package/dist/test-declarations.d.ts +13 -0
  442. package/dist/test-declarations.d.ts.map +1 -0
  443. package/dist/test-declarations.js +2 -0
  444. package/dist/test-declarations.js.map +1 -0
  445. package/dist/test-utils.d.ts +69 -0
  446. package/dist/test-utils.d.ts.map +1 -0
  447. package/dist/test-utils.js +448 -0
  448. package/dist/test-utils.js.map +1 -0
  449. package/dist/test-utils.test.d.ts +2 -0
  450. package/dist/test-utils.test.d.ts.map +1 -0
  451. package/dist/test-utils.test.js +55 -0
  452. package/dist/test-utils.test.js.map +1 -0
  453. package/dist/utils.d.ts +26 -0
  454. package/dist/utils.d.ts.map +1 -0
  455. package/dist/utils.js +60 -0
  456. package/dist/utils.js.map +1 -0
  457. package/dist/wait-for-page-load.d.ts +16 -0
  458. package/dist/wait-for-page-load.d.ts.map +1 -0
  459. package/dist/wait-for-page-load.js +146 -0
  460. package/dist/wait-for-page-load.js.map +1 -0
  461. package/dist/workflow-capability.d.ts +72 -0
  462. package/dist/workflow-capability.d.ts.map +1 -0
  463. package/dist/workflow-capability.js +316 -0
  464. package/dist/workflow-capability.js.map +1 -0
  465. package/dist/workflow-script-flow.test.d.ts +2 -0
  466. package/dist/workflow-script-flow.test.d.ts.map +1 -0
  467. package/dist/workflow-script-flow.test.js +285 -0
  468. package/dist/workflow-script-flow.test.js.map +1 -0
  469. package/package.json +80 -0
  470. package/src/__snapshots__/x.com.processed.html +1003 -0
  471. package/src/__snapshots__/x.com.processed.withStyles.html +2720 -0
  472. package/src/a11y-client.ts +241 -0
  473. package/src/agent-skills/conan-config/SKILL.md +141 -0
  474. package/src/agent-skills/conan-config/agents/openai.yaml +4 -0
  475. package/src/aria-snapshot.test.ts +311 -0
  476. package/src/aria-snapshot.ts +1681 -0
  477. package/src/aria-snapshot.unit.test.ts +615 -0
  478. package/src/aria-snapshots/github-interactive.txt +193 -0
  479. package/src/aria-snapshots/github-raw.txt +309 -0
  480. package/src/aria-snapshots/hackernews-interactive.txt +477 -0
  481. package/src/aria-snapshots/hackernews-raw.txt +428 -0
  482. package/src/aria-snapshots/prosemirror-interactive.txt +66 -0
  483. package/src/aria-snapshots/prosemirror-raw.txt +145 -0
  484. package/src/assets/aria-labels-hacker-news.png +0 -0
  485. package/src/assets/aria-labels-old-reddit.png +0 -0
  486. package/src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts +5 -0
  487. package/src/assets/cursors/screen-studio/pointer-macos-tahoe.svg +18 -0
  488. package/src/assets/x.com.html +32946 -0
  489. package/src/browser-config.ts +179 -0
  490. package/src/browser-install.ts +284 -0
  491. package/src/browser-launch.ts +75 -0
  492. package/src/builtin-capabilities.ts +2765 -0
  493. package/src/capability-agent-skill.ts +305 -0
  494. package/src/capability-auth-state.ts +197 -0
  495. package/src/capability-auth.ts +249 -0
  496. package/src/capability-cli-confirmation.test.ts +90 -0
  497. package/src/capability-options.test.ts +89 -0
  498. package/src/capability-options.ts +57 -0
  499. package/src/capability-package.test.ts +204 -0
  500. package/src/capability-package.ts +555 -0
  501. package/src/capability-registry.test.ts +1905 -0
  502. package/src/capability-registry.ts +1234 -0
  503. package/src/capability-runner.ts +801 -0
  504. package/src/capability-search-relevance.test.ts +73 -0
  505. package/src/capability-studio.test.ts +45 -0
  506. package/src/capability-studio.ts +641 -0
  507. package/src/cdp-log.test.ts +131 -0
  508. package/src/cdp-log.ts +112 -0
  509. package/src/cdp-relay.ts +2944 -0
  510. package/src/cdp-session.ts +77 -0
  511. package/src/cdp-types.ts +158 -0
  512. package/src/channel-owner-inspect.test.ts +94 -0
  513. package/src/chrome-discovery.test.ts +50 -0
  514. package/src/chrome-discovery.ts +220 -0
  515. package/src/clean-html.ts +141 -0
  516. package/src/cli-help.test.ts +123 -0
  517. package/src/cli.ts +3181 -0
  518. package/src/cloud-client.ts +179 -0
  519. package/src/create-logger.ts +38 -0
  520. package/src/debugger-examples-types.ts +16 -0
  521. package/src/debugger-examples.ts +66 -0
  522. package/src/debugger.ts +708 -0
  523. package/src/diff-utils.test.ts +152 -0
  524. package/src/diff-utils.ts +70 -0
  525. package/src/doctor.test.ts +244 -0
  526. package/src/doctor.ts +321 -0
  527. package/src/editor-examples.ts +158 -0
  528. package/src/editor.ts +426 -0
  529. package/src/env-compat.ts +28 -0
  530. package/src/executor.ts +1824 -0
  531. package/src/executor.unit.test.ts +168 -0
  532. package/src/extension-connection.test.ts +855 -0
  533. package/src/extension-icon-warning.test.ts +45 -0
  534. package/src/ghost-browser.ts +149 -0
  535. package/src/ghost-cursor-client.ts +494 -0
  536. package/src/ghost-cursor-controller.ts +129 -0
  537. package/src/ghost-cursor.ts +123 -0
  538. package/src/htmlrewrite.test.ts +8008 -0
  539. package/src/htmlrewrite.ts +390 -0
  540. package/src/index.ts +53 -0
  541. package/src/kill-port.ts +219 -0
  542. package/src/kitty-graphics.test.ts +139 -0
  543. package/src/kitty-graphics.ts +79 -0
  544. package/src/locator-selector.test.ts +119 -0
  545. package/src/mcp-client.ts +78 -0
  546. package/src/mcp.ts +629 -0
  547. package/src/on-mouse-action.test.ts +226 -0
  548. package/src/options-page.test.ts +839 -0
  549. package/src/package-paths.ts +38 -0
  550. package/src/page-markdown.ts +240 -0
  551. package/src/performance-examples.ts +186 -0
  552. package/src/playwright-import.ts +59 -0
  553. package/src/popup-relocation.test.ts +163 -0
  554. package/src/product-paths.test.ts +47 -0
  555. package/src/product-paths.ts +28 -0
  556. package/src/protocol.test.ts +52 -0
  557. package/src/protocol.ts +351 -0
  558. package/src/react-source.ts +379 -0
  559. package/src/relay-client.test.ts +375 -0
  560. package/src/relay-client.ts +572 -0
  561. package/src/relay-core.test.ts +1603 -0
  562. package/src/relay-navigation.test.ts +790 -0
  563. package/src/relay-session.test.ts +1375 -0
  564. package/src/relay-state.test.ts +729 -0
  565. package/src/relay-state.ts +561 -0
  566. package/src/replay-ai-index.test.ts +278 -0
  567. package/src/replay-ai-index.ts +872 -0
  568. package/src/replay-cli.test.ts +325 -0
  569. package/src/replay-eval.ts +1039 -0
  570. package/src/replay-handoff.test.ts +163 -0
  571. package/src/replay-handoff.ts +109 -0
  572. package/src/replay-workflow-compiler.test.ts +250 -0
  573. package/src/replay-workflow-compiler.ts +700 -0
  574. package/src/resource.md +409 -0
  575. package/src/rrweb-recording-relay.test.ts +99 -0
  576. package/src/rrweb-recording-relay.ts +400 -0
  577. package/src/rrweb-recording.ts +322 -0
  578. package/src/scoped-fs.test.ts +80 -0
  579. package/src/scoped-fs.ts +420 -0
  580. package/src/skill-stub.test.ts +24 -0
  581. package/src/skill.md +1413 -0
  582. package/src/snapshot-tools.test.ts +1017 -0
  583. package/src/snapshots/hacker-news-accessibility-full.md +81 -0
  584. package/src/snapshots/hacker-news-accessibility-interactive.md +43 -0
  585. package/src/snapshots/page-markdown-output.txt +16 -0
  586. package/src/snapshots/shadcn-ui-accessibility-full.md +201 -0
  587. package/src/snapshots/shadcn-ui-accessibility-interactive.md +109 -0
  588. package/src/start-relay-server.ts +69 -0
  589. package/src/styles-examples.ts +84 -0
  590. package/src/styles.ts +343 -0
  591. package/src/tabwright-agent-skill.test.ts +61 -0
  592. package/src/tabwright-agent-skill.ts +105 -0
  593. package/src/test-declarations.ts +13 -0
  594. package/src/test-utils.test.ts +70 -0
  595. package/src/test-utils.ts +566 -0
  596. package/src/utils.ts +78 -0
  597. package/src/wait-for-page-load.ts +198 -0
  598. package/src/workflow-capability.ts +417 -0
  599. package/src/workflow-script-flow.test.ts +388 -0
@@ -0,0 +1,1349 @@
1
+ :root {
2
+ color-scheme: light dark;
3
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', 'Helvetica Neue', Arial, sans-serif;
4
+ color: #1d1d1f;
5
+ background: #f5f5f7;
6
+ --canvas: #f5f5f7;
7
+ --toolbar: rgba(255, 255, 255, 0.78);
8
+ --surface: rgba(255, 255, 255, 0.86);
9
+ --surface-solid: #ffffff;
10
+ --surface-raised: #ffffff;
11
+ --surface-muted: rgba(118, 118, 128, 0.08);
12
+ --control: rgba(118, 118, 128, 0.12);
13
+ --control-hover: rgba(118, 118, 128, 0.18);
14
+ --separator: rgba(60, 60, 67, 0.16);
15
+ --separator-strong: rgba(60, 60, 67, 0.24);
16
+ --text: #1d1d1f;
17
+ --text-secondary: #6e6e73;
18
+ --text-tertiary: #8e8e93;
19
+ --accent: #007aff;
20
+ --accent-hover: #006ee6;
21
+ --accent-soft: rgba(0, 122, 255, 0.11);
22
+ --green: #248a3d;
23
+ --green-soft: rgba(52, 199, 89, 0.12);
24
+ --amber: #a05a00;
25
+ --amber-soft: rgba(255, 159, 10, 0.13);
26
+ --red: #d70015;
27
+ --red-soft: rgba(255, 59, 48, 0.11);
28
+ --focus-ring: rgba(0, 122, 255, 0.38);
29
+ --shadow-popover: 0 12px 36px rgba(0, 0, 0, 0.16), 0 2px 8px rgba(0, 0, 0, 0.08);
30
+ }
31
+
32
+ @media (prefers-color-scheme: dark) {
33
+ :root {
34
+ color: #f5f5f7;
35
+ background: #1c1c1e;
36
+ --canvas: #1c1c1e;
37
+ --toolbar: rgba(44, 44, 46, 0.78);
38
+ --surface: rgba(44, 44, 46, 0.84);
39
+ --surface-solid: #2c2c2e;
40
+ --surface-raised: #363638;
41
+ --surface-muted: rgba(118, 118, 128, 0.14);
42
+ --control: rgba(118, 118, 128, 0.24);
43
+ --control-hover: rgba(118, 118, 128, 0.32);
44
+ --separator: rgba(255, 255, 255, 0.12);
45
+ --separator-strong: rgba(255, 255, 255, 0.2);
46
+ --text: #f5f5f7;
47
+ --text-secondary: #aeaeb2;
48
+ --text-tertiary: #8e8e93;
49
+ --accent: #0a84ff;
50
+ --accent-hover: #409cff;
51
+ --accent-soft: rgba(10, 132, 255, 0.18);
52
+ --green: #30d158;
53
+ --green-soft: rgba(48, 209, 88, 0.15);
54
+ --amber: #ffb340;
55
+ --amber-soft: rgba(255, 159, 10, 0.16);
56
+ --red: #ff453a;
57
+ --red-soft: rgba(255, 69, 58, 0.16);
58
+ --focus-ring: rgba(10, 132, 255, 0.48);
59
+ --shadow-popover: 0 14px 42px rgba(0, 0, 0, 0.48), 0 2px 8px rgba(0, 0, 0, 0.28);
60
+ }
61
+ }
62
+
63
+ * {
64
+ box-sizing: border-box;
65
+ }
66
+
67
+ html,
68
+ body {
69
+ min-height: 100%;
70
+ }
71
+
72
+ body {
73
+ margin: 0;
74
+ min-width: 760px;
75
+ overflow: hidden;
76
+ background: var(--canvas);
77
+ color: var(--text);
78
+ -webkit-font-smoothing: antialiased;
79
+ }
80
+
81
+ button,
82
+ input {
83
+ font: inherit;
84
+ }
85
+
86
+ button {
87
+ border: 0;
88
+ border-radius: 8px;
89
+ color: var(--text);
90
+ cursor: pointer;
91
+ }
92
+
93
+ button:focus-visible,
94
+ input:focus-visible,
95
+ summary:focus-visible {
96
+ outline: 3px solid var(--focus-ring);
97
+ outline-offset: 1px;
98
+ }
99
+
100
+ h1,
101
+ h2,
102
+ h3,
103
+ p {
104
+ margin: 0;
105
+ }
106
+
107
+ h1 {
108
+ font-size: 16px;
109
+ font-weight: 650;
110
+ letter-spacing: -0.01em;
111
+ line-height: 1.2;
112
+ }
113
+
114
+ h2 {
115
+ font-size: 20px;
116
+ font-weight: 650;
117
+ letter-spacing: -0.02em;
118
+ line-height: 1.22;
119
+ }
120
+
121
+ h3 {
122
+ font-size: 12px;
123
+ font-weight: 600;
124
+ line-height: 1.3;
125
+ }
126
+
127
+ .visually-hidden {
128
+ position: absolute;
129
+ width: 1px;
130
+ height: 1px;
131
+ overflow: hidden;
132
+ clip: rect(0 0 0 0);
133
+ clip-path: inset(50%);
134
+ white-space: nowrap;
135
+ }
136
+
137
+ .app-shell {
138
+ display: grid;
139
+ grid-template-rows: 64px auto minmax(0, 1fr);
140
+ height: 100vh;
141
+ overflow: hidden;
142
+ }
143
+
144
+ .toolbar {
145
+ position: relative;
146
+ z-index: 10;
147
+ display: grid;
148
+ grid-template-columns: minmax(190px, 1fr) auto minmax(420px, 1fr);
149
+ gap: 16px;
150
+ align-items: center;
151
+ min-width: 0;
152
+ border-bottom: 1px solid var(--separator);
153
+ padding: 0 18px;
154
+ background: var(--toolbar);
155
+ backdrop-filter: saturate(180%) blur(24px);
156
+ -webkit-backdrop-filter: saturate(180%) blur(24px);
157
+ }
158
+
159
+ .brand-block {
160
+ display: grid;
161
+ grid-template-columns: 34px minmax(0, 1fr);
162
+ gap: 10px;
163
+ align-items: center;
164
+ min-width: 0;
165
+ }
166
+
167
+ .brand-mark {
168
+ display: grid;
169
+ width: 34px;
170
+ height: 34px;
171
+ place-items: center;
172
+ border: 1px solid var(--separator);
173
+ border-radius: 10px;
174
+ background: linear-gradient(145deg, rgba(255, 255, 255, 0.94), rgba(224, 255, 236, 0.78));
175
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
176
+ }
177
+
178
+ @media (prefers-color-scheme: dark) {
179
+ .brand-mark {
180
+ background: linear-gradient(145deg, rgba(72, 72, 74, 0.96), rgba(37, 78, 53, 0.82));
181
+ }
182
+
183
+ .brand-mark img {
184
+ filter: invert(1);
185
+ }
186
+ }
187
+
188
+ .brand-mark img {
189
+ width: 20px;
190
+ height: 20px;
191
+ }
192
+
193
+ .brand-block p {
194
+ margin-top: 2px;
195
+ overflow: hidden;
196
+ color: var(--text-secondary);
197
+ font-size: 11px;
198
+ line-height: 1.3;
199
+ text-overflow: ellipsis;
200
+ white-space: nowrap;
201
+ }
202
+
203
+ .tabs,
204
+ .language-switch {
205
+ display: inline-flex;
206
+ align-items: center;
207
+ padding: 3px;
208
+ border: 1px solid var(--separator);
209
+ border-radius: 9px;
210
+ background: var(--control);
211
+ box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.12);
212
+ }
213
+
214
+ .tabs {
215
+ justify-self: center;
216
+ }
217
+
218
+ .tab-button,
219
+ .language-button {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ gap: 6px;
224
+ min-height: 28px;
225
+ padding: 0 11px;
226
+ background: transparent;
227
+ color: var(--text-secondary);
228
+ font-size: 12px;
229
+ font-weight: 550;
230
+ white-space: nowrap;
231
+ }
232
+
233
+ .tab-button:hover,
234
+ .language-button:hover {
235
+ color: var(--text);
236
+ }
237
+
238
+ .tab-button.active,
239
+ .language-button.active {
240
+ background: var(--surface-raised);
241
+ color: var(--text);
242
+ box-shadow:
243
+ 0 1px 3px rgba(0, 0, 0, 0.12),
244
+ inset 0 0 0 0.5px var(--separator);
245
+ }
246
+
247
+ .count-pill {
248
+ display: inline-flex;
249
+ min-width: 18px;
250
+ height: 17px;
251
+ align-items: center;
252
+ justify-content: center;
253
+ border-radius: 999px;
254
+ padding: 0 5px;
255
+ background: var(--control);
256
+ color: var(--text-secondary);
257
+ font-size: 10px;
258
+ font-weight: 600;
259
+ }
260
+
261
+ .toolbar-actions {
262
+ display: flex;
263
+ justify-content: flex-end;
264
+ gap: 8px;
265
+ align-items: center;
266
+ min-width: 0;
267
+ }
268
+
269
+ .search-field {
270
+ display: block;
271
+ min-width: 150px;
272
+ width: clamp(150px, 18vw, 240px);
273
+ }
274
+
275
+ .search-field input {
276
+ width: 100%;
277
+ height: 32px;
278
+ border: 1px solid var(--separator);
279
+ border-radius: 9px;
280
+ padding: 0 10px 0 30px;
281
+ background:
282
+ linear-gradient(45deg, transparent 48%, var(--text-tertiary) 49% 54%, transparent 55%) 18px 19px / 7px 7px no-repeat,
283
+ radial-gradient(circle at center, transparent 42%, var(--text-tertiary) 45% 56%, transparent 58%) 9px 8px / 12px
284
+ 12px no-repeat,
285
+ var(--surface-muted);
286
+ color: var(--text);
287
+ font-size: 12px;
288
+ outline: 0;
289
+ }
290
+
291
+ .search-field input:focus {
292
+ border-color: var(--accent);
293
+ background-color: var(--surface-solid);
294
+ }
295
+
296
+ .search-field input::placeholder {
297
+ color: var(--text-tertiary);
298
+ }
299
+
300
+ .status-pill {
301
+ display: flex;
302
+ max-width: 210px;
303
+ height: 30px;
304
+ align-items: center;
305
+ gap: 7px;
306
+ border-radius: 8px;
307
+ padding: 0 9px;
308
+ background: var(--surface-muted);
309
+ color: var(--text-secondary);
310
+ font-size: 11px;
311
+ }
312
+
313
+ .status-dot {
314
+ width: 7px;
315
+ height: 7px;
316
+ flex: 0 0 auto;
317
+ border-radius: 999px;
318
+ background: var(--green);
319
+ box-shadow: 0 0 0 3px var(--green-soft);
320
+ }
321
+
322
+ #status-text {
323
+ overflow: hidden;
324
+ text-overflow: ellipsis;
325
+ white-space: nowrap;
326
+ }
327
+
328
+ .icon-button {
329
+ display: grid;
330
+ width: 32px;
331
+ height: 32px;
332
+ place-items: center;
333
+ background: transparent;
334
+ color: var(--text-secondary);
335
+ font-size: 20px;
336
+ line-height: 1;
337
+ }
338
+
339
+ .icon-button:hover {
340
+ background: var(--control-hover);
341
+ color: var(--text);
342
+ }
343
+
344
+ .language-switch {
345
+ flex: 0 0 auto;
346
+ }
347
+
348
+ .language-button {
349
+ min-height: 25px;
350
+ padding: 0 8px;
351
+ font-size: 11px;
352
+ }
353
+
354
+ .relay-review-warning {
355
+ z-index: 4;
356
+ display: flex;
357
+ align-items: center;
358
+ justify-content: space-between;
359
+ gap: 18px;
360
+ border-bottom: 1px solid rgba(255, 159, 10, 0.28);
361
+ padding: 10px 18px;
362
+ background: var(--amber-soft);
363
+ color: var(--amber);
364
+ font-size: 12px;
365
+ line-height: 1.4;
366
+ }
367
+
368
+ .relay-review-warning[hidden] {
369
+ display: none;
370
+ }
371
+
372
+ .relay-review-warning p {
373
+ margin-top: 2px;
374
+ }
375
+
376
+ .relay-review-warning code {
377
+ flex: 0 1 auto;
378
+ color: var(--text-secondary);
379
+ font:
380
+ 10px/1.4 ui-monospace,
381
+ SFMono-Regular,
382
+ Menlo,
383
+ monospace;
384
+ text-align: right;
385
+ }
386
+
387
+ .workspace {
388
+ display: grid;
389
+ grid-template-columns: minmax(280px, 340px) minmax(0, 1fr);
390
+ min-width: 0;
391
+ min-height: 0;
392
+ overflow: hidden;
393
+ }
394
+
395
+ .collection-panel,
396
+ .detail-panel {
397
+ min-width: 0;
398
+ min-height: 0;
399
+ }
400
+
401
+ .collection-panel {
402
+ display: grid;
403
+ grid-template-rows: auto minmax(0, 1fr);
404
+ overflow: hidden;
405
+ border-right: 1px solid var(--separator);
406
+ background: var(--surface);
407
+ backdrop-filter: blur(20px);
408
+ -webkit-backdrop-filter: blur(20px);
409
+ }
410
+
411
+ .collection-header {
412
+ padding: 20px 18px 16px;
413
+ border-bottom: 1px solid var(--separator);
414
+ }
415
+
416
+ .eyebrow {
417
+ color: var(--text-tertiary);
418
+ font-size: 10px;
419
+ font-weight: 600;
420
+ letter-spacing: 0.06em;
421
+ line-height: 1.2;
422
+ text-transform: uppercase;
423
+ }
424
+
425
+ .collection-header h2,
426
+ .detail-header h2 {
427
+ margin-top: 5px;
428
+ }
429
+
430
+ .collection-header p:not(.eyebrow) {
431
+ margin-top: 6px;
432
+ color: var(--text-secondary);
433
+ font-size: 12px;
434
+ line-height: 1.45;
435
+ }
436
+
437
+ .list-view,
438
+ .list-body {
439
+ min-height: 0;
440
+ }
441
+
442
+ .list-view {
443
+ display: flex;
444
+ flex-direction: column;
445
+ }
446
+
447
+ .list-body {
448
+ flex: 1;
449
+ overflow: auto;
450
+ padding: 8px;
451
+ }
452
+
453
+ .recording-item {
454
+ display: grid;
455
+ grid-template-columns: minmax(0, 1fr) auto;
456
+ gap: 6px;
457
+ align-items: center;
458
+ border-radius: 10px;
459
+ }
460
+
461
+ .recording-select,
462
+ .skill-item {
463
+ display: grid;
464
+ width: 100%;
465
+ gap: 5px;
466
+ min-width: 0;
467
+ padding: 10px;
468
+ background: transparent;
469
+ text-align: left;
470
+ }
471
+
472
+ .skill-item {
473
+ border-radius: 10px;
474
+ }
475
+
476
+ .recording-item + .recording-item,
477
+ .skill-item + .skill-item {
478
+ margin-top: 2px;
479
+ }
480
+
481
+ .recording-item:hover,
482
+ .skill-item:hover {
483
+ background: var(--surface-muted);
484
+ }
485
+
486
+ .recording-item.active,
487
+ .skill-item.active {
488
+ background: var(--accent-soft);
489
+ box-shadow: inset 2px 0 0 var(--accent);
490
+ }
491
+
492
+ .recording-title,
493
+ .skill-title {
494
+ overflow: hidden;
495
+ color: var(--text);
496
+ font-size: 13px;
497
+ font-weight: 600;
498
+ line-height: 1.35;
499
+ text-overflow: ellipsis;
500
+ white-space: nowrap;
501
+ }
502
+
503
+ .recording-meta,
504
+ .skill-meta,
505
+ .detail-meta,
506
+ .field-value {
507
+ color: var(--text-secondary);
508
+ font-size: 11px;
509
+ line-height: 1.4;
510
+ overflow-wrap: anywhere;
511
+ word-break: break-word;
512
+ }
513
+
514
+ .recording-meta,
515
+ .skill-meta {
516
+ display: -webkit-box;
517
+ overflow: hidden;
518
+ -webkit-box-orient: vertical;
519
+ -webkit-line-clamp: 2;
520
+ }
521
+
522
+ .recording-actions,
523
+ .skill-actions,
524
+ .badge-row {
525
+ display: flex;
526
+ flex-wrap: wrap;
527
+ gap: 6px;
528
+ align-items: center;
529
+ }
530
+
531
+ .recording-actions {
532
+ opacity: 0;
533
+ padding-right: 6px;
534
+ transition: opacity 120ms ease;
535
+ }
536
+
537
+ .recording-item:hover .recording-actions,
538
+ .recording-item:focus-within .recording-actions,
539
+ .recording-item.active .recording-actions {
540
+ opacity: 1;
541
+ }
542
+
543
+ .recording-actions button,
544
+ .skill-actions button,
545
+ .replay-controls button,
546
+ .lifecycle-command button {
547
+ min-height: 28px;
548
+ padding: 0 10px;
549
+ background: var(--control);
550
+ color: var(--text);
551
+ font-size: 11px;
552
+ font-weight: 550;
553
+ }
554
+
555
+ .recording-actions button:hover,
556
+ .skill-actions button:hover,
557
+ .replay-controls button:hover,
558
+ .lifecycle-command button:hover {
559
+ background: var(--control-hover);
560
+ }
561
+
562
+ .skill-actions button {
563
+ background: var(--accent);
564
+ color: #ffffff;
565
+ }
566
+
567
+ .skill-actions button:hover {
568
+ background: var(--accent-hover);
569
+ }
570
+
571
+ .detail-panel {
572
+ overflow: hidden;
573
+ background: var(--canvas);
574
+ }
575
+
576
+ .detail-header {
577
+ display: flex;
578
+ min-height: 68px;
579
+ align-items: center;
580
+ justify-content: space-between;
581
+ border-bottom: 1px solid var(--separator);
582
+ padding: 14px 22px;
583
+ background: var(--surface);
584
+ }
585
+
586
+ .replay-view {
587
+ display: grid;
588
+ grid-template-rows: auto minmax(260px, 1fr) auto auto;
589
+ height: 100%;
590
+ min-height: 0;
591
+ }
592
+
593
+ .replay-player {
594
+ position: relative;
595
+ display: grid;
596
+ min-height: 0;
597
+ margin: 18px 22px 0;
598
+ place-items: center;
599
+ overflow: hidden;
600
+ border: 1px solid var(--separator-strong);
601
+ border-radius: 14px;
602
+ background:
603
+ linear-gradient(45deg, rgba(255, 255, 255, 0.025) 25%, transparent 25%),
604
+ linear-gradient(-45deg, rgba(255, 255, 255, 0.025) 25%, transparent 25%), #202124;
605
+ background-size: 20px 20px;
606
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
607
+ }
608
+
609
+ .replay-player .empty-state {
610
+ max-width: 280px;
611
+ border: 1px solid rgba(255, 255, 255, 0.11);
612
+ border-radius: 10px;
613
+ padding: 13px 16px;
614
+ background: rgba(255, 255, 255, 0.07);
615
+ color: rgba(255, 255, 255, 0.86);
616
+ text-align: center;
617
+ }
618
+
619
+ .replay-player .replayer-wrapper {
620
+ position: absolute;
621
+ left: 0;
622
+ top: 0;
623
+ transform-origin: top left;
624
+ will-change: transform;
625
+ }
626
+
627
+ .replay-player iframe {
628
+ border: 0;
629
+ background: #ffffff;
630
+ }
631
+
632
+ .replay-controls {
633
+ display: flex;
634
+ flex-wrap: wrap;
635
+ align-items: center;
636
+ gap: 10px;
637
+ min-height: 50px;
638
+ margin: 0 22px;
639
+ padding: 10px 0;
640
+ }
641
+
642
+ .replay-controls input[type='range'] {
643
+ min-width: 0;
644
+ flex: 1;
645
+ accent-color: var(--accent);
646
+ }
647
+
648
+ .replay-time {
649
+ min-width: 84px;
650
+ color: var(--text-secondary);
651
+ font:
652
+ 11px/1 ui-monospace,
653
+ SFMono-Regular,
654
+ Menlo,
655
+ monospace;
656
+ text-align: right;
657
+ }
658
+
659
+ .replay-warning {
660
+ flex-basis: 100%;
661
+ border-radius: 8px;
662
+ padding: 8px 10px;
663
+ background: var(--amber-soft);
664
+ color: var(--amber);
665
+ font-size: 11px;
666
+ line-height: 1.4;
667
+ }
668
+
669
+ .recording-technical {
670
+ max-height: 150px;
671
+ margin: 0 22px 18px;
672
+ overflow: auto;
673
+ border-top: 1px solid var(--separator);
674
+ }
675
+
676
+ .recording-technical summary {
677
+ padding: 12px 0;
678
+ color: var(--text-secondary);
679
+ cursor: pointer;
680
+ font-size: 12px;
681
+ font-weight: 550;
682
+ }
683
+
684
+ .recording-details {
685
+ padding: 0 0 12px;
686
+ color: var(--text-secondary);
687
+ font:
688
+ 11px/1.5 ui-monospace,
689
+ SFMono-Regular,
690
+ Menlo,
691
+ monospace;
692
+ overflow-wrap: anywhere;
693
+ white-space: pre-wrap;
694
+ }
695
+
696
+ .skill-detail {
697
+ height: 100%;
698
+ min-height: 0;
699
+ overflow: auto;
700
+ padding: 26px clamp(24px, 4vw, 52px) 42px;
701
+ }
702
+
703
+ .skill-detail > * {
704
+ width: min(100%, 980px);
705
+ margin-right: auto;
706
+ margin-left: auto;
707
+ }
708
+
709
+ .skill-header {
710
+ display: grid;
711
+ grid-template-columns: minmax(0, 1fr) auto;
712
+ gap: 10px 18px;
713
+ align-items: start;
714
+ padding-bottom: 22px;
715
+ border-bottom: 1px solid var(--separator);
716
+ }
717
+
718
+ .skill-header h2,
719
+ .skill-header .detail-meta,
720
+ .skill-header .badge-row {
721
+ grid-column: 1;
722
+ }
723
+
724
+ .skill-header .skill-actions {
725
+ grid-column: 2;
726
+ grid-row: 1 / span 3;
727
+ }
728
+
729
+ .detail-meta {
730
+ overflow: hidden;
731
+ text-overflow: ellipsis;
732
+ white-space: nowrap;
733
+ }
734
+
735
+ .badge-row {
736
+ margin-top: 2px;
737
+ }
738
+
739
+ .badge {
740
+ display: inline-flex;
741
+ min-height: 20px;
742
+ align-items: center;
743
+ border-radius: 999px;
744
+ padding: 0 7px;
745
+ background: var(--control);
746
+ color: var(--text-secondary);
747
+ font-size: 10px;
748
+ font-weight: 600;
749
+ line-height: 1;
750
+ }
751
+
752
+ .badge-trusted,
753
+ .badge-read,
754
+ .badge-ready {
755
+ background: var(--green-soft);
756
+ color: var(--green);
757
+ }
758
+
759
+ .badge-draft,
760
+ .badge-drafted,
761
+ .badge-write {
762
+ background: var(--amber-soft);
763
+ color: var(--amber);
764
+ }
765
+
766
+ .badge-disabled,
767
+ .badge-drifted,
768
+ .badge-dangerous,
769
+ .badge-blocked {
770
+ background: var(--red-soft);
771
+ color: var(--red);
772
+ }
773
+
774
+ .badge-validated {
775
+ background: var(--accent-soft);
776
+ color: var(--accent);
777
+ }
778
+
779
+ .auth-card {
780
+ display: grid;
781
+ gap: 12px;
782
+ margin-top: 22px;
783
+ border: 1px solid rgba(0, 122, 255, 0.24);
784
+ border-radius: 14px;
785
+ padding: 16px;
786
+ background: var(--accent-soft);
787
+ }
788
+
789
+ .auth-card[data-status='expired'] {
790
+ border-color: rgba(255, 69, 58, 0.28);
791
+ background: var(--red-soft);
792
+ }
793
+
794
+ .auth-card[data-status='expiring'],
795
+ .auth-card[data-status='missing'],
796
+ .auth-card[data-status='unknown'] {
797
+ border-color: rgba(255, 159, 10, 0.3);
798
+ background: var(--amber-soft);
799
+ }
800
+
801
+ .auth-error {
802
+ margin: 0;
803
+ padding: 10px 12px;
804
+ border-radius: 10px;
805
+ background: var(--red-soft);
806
+ color: var(--red);
807
+ font-size: 11px;
808
+ line-height: 1.5;
809
+ }
810
+
811
+ .auth-heading,
812
+ .auth-detail,
813
+ .auth-meta {
814
+ display: flex;
815
+ align-items: center;
816
+ gap: 10px;
817
+ }
818
+
819
+ .auth-heading {
820
+ justify-content: space-between;
821
+ }
822
+
823
+ .auth-description,
824
+ .auth-privacy {
825
+ color: var(--text-secondary);
826
+ font-size: 11px;
827
+ line-height: 1.5;
828
+ }
829
+
830
+ .auth-detail {
831
+ align-items: flex-start;
832
+ font-size: 11px;
833
+ }
834
+
835
+ .auth-detail strong {
836
+ flex: 0 0 auto;
837
+ }
838
+
839
+ .auth-detail span {
840
+ min-width: 0;
841
+ overflow-wrap: anywhere;
842
+ color: var(--text-secondary);
843
+ }
844
+
845
+ .auth-meta {
846
+ flex-wrap: wrap;
847
+ color: var(--text-secondary);
848
+ font-size: 10px;
849
+ }
850
+
851
+ .auth-action {
852
+ justify-self: start;
853
+ min-height: 32px;
854
+ padding: 0 12px;
855
+ background: var(--accent);
856
+ color: #fff;
857
+ font-size: 11px;
858
+ font-weight: 600;
859
+ }
860
+
861
+ .auth-action:hover {
862
+ background: var(--accent-hover);
863
+ }
864
+
865
+ .auth-action:disabled {
866
+ cursor: wait;
867
+ opacity: 0.66;
868
+ }
869
+
870
+ .auth-dialog {
871
+ width: min(440px, calc(100vw - 32px));
872
+ border: 1px solid var(--separator-strong);
873
+ border-radius: 16px;
874
+ padding: 0;
875
+ background: var(--surface-solid);
876
+ color: var(--text);
877
+ box-shadow: var(--shadow-popover);
878
+ }
879
+
880
+ .auth-dialog::backdrop {
881
+ background: rgba(0, 0, 0, 0.38);
882
+ backdrop-filter: blur(3px);
883
+ }
884
+
885
+ .auth-dialog-content {
886
+ display: grid;
887
+ gap: 14px;
888
+ padding: 22px;
889
+ }
890
+
891
+ .auth-dialog-content > p {
892
+ color: var(--text-secondary);
893
+ font-size: 12px;
894
+ line-height: 1.5;
895
+ }
896
+
897
+ .auth-domain-list {
898
+ display: grid;
899
+ gap: 6px;
900
+ }
901
+
902
+ .auth-domain-list code {
903
+ border-radius: 7px;
904
+ padding: 7px 9px;
905
+ background: var(--surface-muted);
906
+ color: var(--text);
907
+ font:
908
+ 11px/1.4 ui-monospace,
909
+ SFMono-Regular,
910
+ Menlo,
911
+ monospace;
912
+ overflow-wrap: anywhere;
913
+ }
914
+
915
+ .auth-dialog-actions {
916
+ display: flex;
917
+ justify-content: flex-end;
918
+ gap: 8px;
919
+ margin-top: 4px;
920
+ }
921
+
922
+ .auth-dialog-actions button {
923
+ min-height: 34px;
924
+ padding: 0 13px;
925
+ background: var(--control);
926
+ font-size: 12px;
927
+ font-weight: 600;
928
+ }
929
+
930
+ .auth-dialog-actions button.primary {
931
+ background: var(--accent);
932
+ color: #fff;
933
+ }
934
+
935
+ .lifecycle-card {
936
+ display: grid;
937
+ gap: 14px;
938
+ min-width: 0;
939
+ max-width: 100%;
940
+ margin-top: 22px;
941
+ border: 1px solid var(--separator);
942
+ border-radius: 14px;
943
+ padding: 16px;
944
+ background: var(--surface-raised);
945
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
946
+ }
947
+
948
+ .lifecycle-card[data-stage='drifted'],
949
+ .lifecycle-card[data-stage='disabled'] {
950
+ border-color: rgba(255, 69, 58, 0.28);
951
+ background: var(--red-soft);
952
+ }
953
+
954
+ .lifecycle-heading,
955
+ .lifecycle-summary,
956
+ .lifecycle-command {
957
+ display: flex;
958
+ align-items: center;
959
+ gap: 10px;
960
+ min-width: 0;
961
+ }
962
+
963
+ .lifecycle-heading,
964
+ .lifecycle-summary {
965
+ justify-content: space-between;
966
+ }
967
+
968
+ .lifecycle-steps {
969
+ display: grid;
970
+ grid-template-columns: repeat(3, minmax(0, 1fr));
971
+ margin: 0;
972
+ padding: 0;
973
+ list-style: none;
974
+ }
975
+
976
+ .lifecycle-step {
977
+ position: relative;
978
+ display: grid;
979
+ justify-items: center;
980
+ gap: 6px;
981
+ color: var(--text-tertiary);
982
+ font-size: 10px;
983
+ font-weight: 550;
984
+ text-align: center;
985
+ }
986
+
987
+ .lifecycle-step:not(:last-child)::after {
988
+ position: absolute;
989
+ z-index: 0;
990
+ top: 6px;
991
+ left: calc(50% + 10px);
992
+ width: calc(100% - 20px);
993
+ height: 2px;
994
+ background: var(--separator-strong);
995
+ content: '';
996
+ }
997
+
998
+ .lifecycle-marker {
999
+ z-index: 1;
1000
+ width: 14px;
1001
+ height: 14px;
1002
+ border: 2px solid var(--separator-strong);
1003
+ border-radius: 999px;
1004
+ background: var(--surface-raised);
1005
+ }
1006
+
1007
+ .lifecycle-step[data-state='done'],
1008
+ .lifecycle-step[data-state='current'] {
1009
+ color: var(--accent);
1010
+ }
1011
+
1012
+ .lifecycle-step[data-state='done'] .lifecycle-marker,
1013
+ .lifecycle-step[data-state='current'] .lifecycle-marker {
1014
+ border-color: var(--accent);
1015
+ background: var(--accent);
1016
+ }
1017
+
1018
+ .lifecycle-step[data-state='done']::after {
1019
+ background: var(--accent);
1020
+ }
1021
+
1022
+ .lifecycle-step[data-state='blocked'] {
1023
+ color: var(--red);
1024
+ }
1025
+
1026
+ .lifecycle-step[data-state='blocked'] .lifecycle-marker {
1027
+ border-color: var(--red);
1028
+ background: var(--red);
1029
+ }
1030
+
1031
+ .lifecycle-summary {
1032
+ flex-wrap: wrap;
1033
+ color: var(--text-secondary);
1034
+ font-size: 11px;
1035
+ }
1036
+
1037
+ .lifecycle-summary strong {
1038
+ color: var(--text);
1039
+ font-size: 12px;
1040
+ }
1041
+
1042
+ .lifecycle-command code {
1043
+ width: 0;
1044
+ min-width: 0;
1045
+ max-width: 100%;
1046
+ flex: 1 1 0;
1047
+ overflow: hidden;
1048
+ border-radius: 8px;
1049
+ padding: 8px 10px;
1050
+ background: var(--surface-muted);
1051
+ color: var(--text-secondary);
1052
+ font:
1053
+ 10px/1.4 ui-monospace,
1054
+ SFMono-Regular,
1055
+ Menlo,
1056
+ monospace;
1057
+ text-overflow: ellipsis;
1058
+ white-space: nowrap;
1059
+ }
1060
+
1061
+ .lifecycle-warning {
1062
+ border-radius: 8px;
1063
+ padding: 9px 10px;
1064
+ background: rgba(255, 255, 255, 0.42);
1065
+ color: var(--red);
1066
+ font-size: 11px;
1067
+ line-height: 1.45;
1068
+ white-space: pre-wrap;
1069
+ }
1070
+
1071
+ .field-grid {
1072
+ display: grid;
1073
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1074
+ gap: 0 28px;
1075
+ margin-top: 22px;
1076
+ }
1077
+
1078
+ .field {
1079
+ min-width: 0;
1080
+ border-bottom: 1px solid var(--separator);
1081
+ padding: 13px 0;
1082
+ }
1083
+
1084
+ .field.full {
1085
+ grid-column: 1 / -1;
1086
+ }
1087
+
1088
+ .field h3 {
1089
+ color: var(--text-secondary);
1090
+ }
1091
+
1092
+ .field-value {
1093
+ margin-top: 5px;
1094
+ color: var(--text);
1095
+ font-size: 12px;
1096
+ white-space: pre-wrap;
1097
+ }
1098
+
1099
+ .advanced-details {
1100
+ margin-top: 18px;
1101
+ border-top: 1px solid var(--separator);
1102
+ padding-top: 4px;
1103
+ }
1104
+
1105
+ .advanced-details summary {
1106
+ padding: 12px 0;
1107
+ color: var(--text-secondary);
1108
+ cursor: pointer;
1109
+ font-size: 12px;
1110
+ font-weight: 550;
1111
+ list-style-position: inside;
1112
+ }
1113
+
1114
+ .advanced-details .field-grid {
1115
+ margin-top: 0;
1116
+ }
1117
+
1118
+ .empty-state {
1119
+ padding: 18px;
1120
+ color: var(--text-secondary);
1121
+ font-size: 12px;
1122
+ line-height: 1.5;
1123
+ }
1124
+
1125
+ .empty-state-warning {
1126
+ color: var(--amber);
1127
+ white-space: pre-line;
1128
+ }
1129
+
1130
+ .toast {
1131
+ position: fixed;
1132
+ z-index: 30;
1133
+ right: 20px;
1134
+ bottom: 20px;
1135
+ max-width: min(360px, calc(100vw - 40px));
1136
+ border: 1px solid var(--separator);
1137
+ border-radius: 12px;
1138
+ padding: 10px 14px;
1139
+ background: var(--surface-raised);
1140
+ box-shadow: var(--shadow-popover);
1141
+ color: var(--text);
1142
+ font-size: 12px;
1143
+ animation: toast-in 160ms ease-out;
1144
+ }
1145
+
1146
+ @keyframes toast-in {
1147
+ from {
1148
+ opacity: 0;
1149
+ transform: translateY(6px) scale(0.98);
1150
+ }
1151
+ to {
1152
+ opacity: 1;
1153
+ transform: translateY(0) scale(1);
1154
+ }
1155
+ }
1156
+
1157
+ [hidden] {
1158
+ display: none !important;
1159
+ }
1160
+
1161
+ @media (max-width: 1120px) {
1162
+ .toolbar {
1163
+ grid-template-columns: auto auto minmax(300px, 1fr);
1164
+ }
1165
+
1166
+ .brand-block p,
1167
+ .status-pill {
1168
+ display: none;
1169
+ }
1170
+
1171
+ .search-field {
1172
+ width: min(220px, 20vw);
1173
+ }
1174
+ }
1175
+
1176
+ @media (max-width: 820px) {
1177
+ body {
1178
+ min-width: 0;
1179
+ overflow: auto;
1180
+ }
1181
+
1182
+ .app-shell {
1183
+ grid-template-rows: auto auto auto;
1184
+ height: auto;
1185
+ min-height: 100vh;
1186
+ }
1187
+
1188
+ .toolbar {
1189
+ grid-template-columns: auto minmax(0, 1fr);
1190
+ grid-template-rows: 48px 44px;
1191
+ gap: 0 12px;
1192
+ padding: 0 12px 8px;
1193
+ }
1194
+
1195
+ .brand-block {
1196
+ grid-column: 1;
1197
+ }
1198
+
1199
+ .tabs {
1200
+ grid-column: 2;
1201
+ justify-self: end;
1202
+ }
1203
+
1204
+ .toolbar-actions {
1205
+ grid-column: 1 / -1;
1206
+ grid-row: 2;
1207
+ }
1208
+
1209
+ .search-field {
1210
+ width: auto;
1211
+ flex: 1;
1212
+ }
1213
+
1214
+ .workspace {
1215
+ grid-template-columns: 1fr;
1216
+ grid-template-rows: minmax(360px, 46vh) minmax(520px, auto);
1217
+ overflow: visible;
1218
+ }
1219
+
1220
+ .collection-panel {
1221
+ border-right: 0;
1222
+ border-bottom: 1px solid var(--separator);
1223
+ }
1224
+
1225
+ .detail-panel {
1226
+ min-height: 520px;
1227
+ }
1228
+
1229
+ .skill-detail {
1230
+ overflow: visible;
1231
+ }
1232
+ }
1233
+
1234
+ @media (max-width: 560px) {
1235
+ .brand-block > div:last-child {
1236
+ display: none;
1237
+ }
1238
+
1239
+ .brand-block {
1240
+ grid-template-columns: 34px;
1241
+ }
1242
+
1243
+ .language-switch {
1244
+ display: none;
1245
+ }
1246
+
1247
+ .field-grid {
1248
+ grid-template-columns: 1fr;
1249
+ }
1250
+
1251
+ .skill-header {
1252
+ grid-template-columns: 1fr;
1253
+ }
1254
+
1255
+ .skill-header .skill-actions {
1256
+ grid-column: 1;
1257
+ grid-row: auto;
1258
+ }
1259
+ }
1260
+
1261
+ @media (prefers-reduced-motion: reduce) {
1262
+ *,
1263
+ *::before,
1264
+ *::after {
1265
+ scroll-behavior: auto !important;
1266
+ animation-duration: 0.01ms !important;
1267
+ animation-iteration-count: 1 !important;
1268
+ transition-duration: 0.01ms !important;
1269
+ }
1270
+ }
1271
+ .replayer-wrapper {
1272
+ position: relative;
1273
+ }
1274
+ .replayer-mouse {
1275
+ position: absolute;
1276
+ width: 20px;
1277
+ height: 20px;
1278
+ transition: left 0.05s linear, top 0.05s linear;
1279
+ background-size: contain;
1280
+ background-position: center center;
1281
+ background-repeat: no-repeat;
1282
+ background-image: url('data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzMwMHB4JyB3aWR0aD0nMzAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUwIDUwIiB4PSIwcHgiIHk9IjBweCI+PHRpdGxlPkRlc2lnbl90bnA8L3RpdGxlPjxwYXRoIGQ9Ik00OC43MSw0Mi45MUwzNC4wOCwyOC4yOSw0NC4zMywxOEExLDEsMCwwLDAsNDQsMTYuMzlMMi4zNSwxLjA2QTEsMSwwLDAsMCwxLjA2LDIuMzVMMTYuMzksNDRhMSwxLDAsMCwwLDEuNjUuMzZMMjguMjksMzQuMDgsNDIuOTEsNDguNzFhMSwxLDAsMCwwLDEuNDEsMGw0LjM4LTQuMzhBMSwxLDAsMCwwLDQ4LjcxLDQyLjkxWm0tNS4wOSwzLjY3TDI5LDMyYTEsMSwwLDAsMC0xLjQxLDBsLTkuODUsOS44NUwzLjY5LDMuNjlsMzguMTIsMTRMMzIsMjcuNThBMSwxLDAsMCwwLDMyLDI5TDQ2LjU5LDQzLjYyWiI+PC9wYXRoPjwvc3ZnPg==');
1283
+ border-color: transparent; /* otherwise we transition from black when .touch-device class is added */
1284
+ }
1285
+ .replayer-mouse::after {
1286
+ content: '';
1287
+ display: inline-block;
1288
+ width: 20px;
1289
+ height: 20px;
1290
+ background: rgb(73, 80, 246);
1291
+ border-radius: 100%;
1292
+ transform: translate(-50%, -50%);
1293
+ opacity: 0.3;
1294
+ }
1295
+ .replayer-mouse.active::after {
1296
+ animation: click 0.2s ease-in-out 1;
1297
+ }
1298
+ .replayer-mouse.touch-device {
1299
+ background-image: none; /* there's no passive cursor on touch-only screens */
1300
+ width: 70px;
1301
+ height: 70px;
1302
+ border-width: 4px;
1303
+ border-style: solid;
1304
+ border-radius: 100%;
1305
+ margin-left: -37px;
1306
+ margin-top: -37px;
1307
+ border-color: rgba(73, 80, 246, 0);
1308
+ transition: left 0s linear, top 0s linear, border-color 0.2s ease-in-out;
1309
+ }
1310
+ .replayer-mouse.touch-device.touch-active {
1311
+ border-color: rgba(73, 80, 246, 1);
1312
+ transition: left 0.25s linear, top 0.25s linear, border-color 0.2s ease-in-out;
1313
+ }
1314
+ .replayer-mouse.touch-device::after {
1315
+ opacity: 0; /* there's no passive cursor on touch-only screens */
1316
+ }
1317
+ .replayer-mouse.touch-device.active::after {
1318
+ animation: touch-click 0.2s ease-in-out 1;
1319
+ }
1320
+ .replayer-mouse-tail {
1321
+ position: absolute;
1322
+ pointer-events: none;
1323
+ }
1324
+
1325
+ @keyframes click {
1326
+ 0% {
1327
+ opacity: 0.3;
1328
+ width: 20px;
1329
+ height: 20px;
1330
+ }
1331
+ 50% {
1332
+ opacity: 0.5;
1333
+ width: 10px;
1334
+ height: 10px;
1335
+ }
1336
+ }
1337
+
1338
+ @keyframes touch-click {
1339
+ 0% {
1340
+ opacity: 0;
1341
+ width: 20px;
1342
+ height: 20px;
1343
+ }
1344
+ 50% {
1345
+ opacity: 0.5;
1346
+ width: 10px;
1347
+ height: 10px;
1348
+ }
1349
+ }