dsh-mobile-plugin 0.5.27 → 0.5.29

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 (350) hide show
  1. package/extensions/catalog.json +10 -1
  2. package/extensions/magpie/agentcompact.js +104 -0
  3. package/extensions/magpie/app.css +4902 -0
  4. package/extensions/magpie/app.js +24474 -0
  5. package/extensions/magpie/autobackup.js +185 -0
  6. package/extensions/magpie/autoresetown.js +151 -0
  7. package/extensions/magpie/balfound.js +38 -0
  8. package/extensions/magpie/boot.js +23 -0
  9. package/extensions/magpie/cfgblocked.js +39 -0
  10. package/extensions/magpie/checkinnow.js +111 -0
  11. package/extensions/magpie/claudemode.js +92 -0
  12. package/extensions/magpie/compat.js +41 -0
  13. package/extensions/magpie/context.css +433 -0
  14. package/extensions/magpie/context.js +1576 -0
  15. package/extensions/magpie/ctxtext.js +223 -0
  16. package/extensions/magpie/fonts.js +42 -0
  17. package/extensions/magpie/i18n.js +18942 -0
  18. package/extensions/magpie/icons/ai21.svg +1 -0
  19. package/extensions/magpie/icons/ai302-color.svg +1 -0
  20. package/extensions/magpie/icons/ai360-color.svg +1 -0
  21. package/extensions/magpie/icons/aihubmix-color.svg +1 -0
  22. package/extensions/magpie/icons/aionui.svg +1 -0
  23. package/extensions/magpie/icons/air.svg +4 -0
  24. package/extensions/magpie/icons/alibaba-color.svg +1 -0
  25. package/extensions/magpie/icons/alibabacloud-color.svg +1 -0
  26. package/extensions/magpie/icons/alma.png +0 -0
  27. package/extensions/magpie/icons/anthropic.svg +1 -0
  28. package/extensions/magpie/icons/antigravity-color.svg +1 -0
  29. package/extensions/magpie/icons/anyscale-color.svg +1 -0
  30. package/extensions/magpie/icons/app-alma.png +0 -0
  31. package/extensions/magpie/icons/app-cc-switch.png +0 -0
  32. package/extensions/magpie/icons/apple-touch-icon.png +0 -0
  33. package/extensions/magpie/icons/aside.svg +28 -0
  34. package/extensions/magpie/icons/astrbot.svg +1 -0
  35. package/extensions/magpie/icons/atomcode.png +0 -0
  36. package/extensions/magpie/icons/aws.svg +1 -0
  37. package/extensions/magpie/icons/azure-color.svg +1 -0
  38. package/extensions/magpie/icons/azureai-color.svg +1 -0
  39. package/extensions/magpie/icons/baichuan-color.svg +1 -0
  40. package/extensions/magpie/icons/baidu-color.svg +1 -0
  41. package/extensions/magpie/icons/baiducloud-color.svg +1 -0
  42. package/extensions/magpie/icons/bailian-color.svg +1 -0
  43. package/extensions/magpie/icons/baseten.svg +1 -0
  44. package/extensions/magpie/icons/bedrock-color.svg +1 -0
  45. package/extensions/magpie/icons/burncloud-color.svg +1 -0
  46. package/extensions/magpie/icons/bytedance-color.svg +1 -0
  47. package/extensions/magpie/icons/cerebras.svg +1 -0
  48. package/extensions/magpie/icons/chatglm-color.svg +1 -0
  49. package/extensions/magpie/icons/cherryin-color.svg +1 -0
  50. package/extensions/magpie/icons/chutes.svg +1 -0
  51. package/extensions/magpie/icons/cindy.png +0 -0
  52. package/extensions/magpie/icons/claude-color.svg +1 -0
  53. package/extensions/magpie/icons/claudecode-color.svg +1 -0
  54. package/extensions/magpie/icons/cline.svg +1 -0
  55. package/extensions/magpie/icons/cloudflare-color.svg +1 -0
  56. package/extensions/magpie/icons/codebuddy-color.svg +1 -0
  57. package/extensions/magpie/icons/codex-color.svg +1 -0
  58. package/extensions/magpie/icons/cohere-color.svg +1 -0
  59. package/extensions/magpie/icons/cometapi-color.svg +1 -0
  60. package/extensions/magpie/icons/commandcode.svg +1 -0
  61. package/extensions/magpie/icons/copilot-color.svg +1 -0
  62. package/extensions/magpie/icons/coze.svg +1 -0
  63. package/extensions/magpie/icons/crush.png +0 -0
  64. package/extensions/magpie/icons/curl.svg +1 -0
  65. package/extensions/magpie/icons/cursor.svg +1 -0
  66. package/extensions/magpie/icons/deepinfra-color.svg +1 -0
  67. package/extensions/magpie/icons/deepmind-color.svg +1 -0
  68. package/extensions/magpie/icons/deepseek-color.svg +1 -0
  69. package/extensions/magpie/icons/deveco-color.svg +12 -0
  70. package/extensions/magpie/icons/devin.svg +1 -0
  71. package/extensions/magpie/icons/doubao-color.svg +1 -0
  72. package/extensions/magpie/icons/empryo-color.svg +1 -0
  73. package/extensions/magpie/icons/factory.svg +1 -0
  74. package/extensions/magpie/icons/favicon.svg +1 -0
  75. package/extensions/magpie/icons/featherless-color.svg +1 -0
  76. package/extensions/magpie/icons/fireworks-color.svg +1 -0
  77. package/extensions/magpie/icons/friendli.svg +1 -0
  78. package/extensions/magpie/icons/fx.svg +1 -0
  79. package/extensions/magpie/icons/gemini-color.svg +1 -0
  80. package/extensions/magpie/icons/geminicli-color.svg +1 -0
  81. package/extensions/magpie/icons/gemma-color.svg +1 -0
  82. package/extensions/magpie/icons/giteeai.svg +1 -0
  83. package/extensions/magpie/icons/github.svg +1 -0
  84. package/extensions/magpie/icons/githubcopilot.svg +1 -0
  85. package/extensions/magpie/icons/glama.svg +1 -0
  86. package/extensions/magpie/icons/gmicloud.svg +1 -0
  87. package/extensions/magpie/icons/google-color.svg +1 -0
  88. package/extensions/magpie/icons/googlecloud-color.svg +1 -0
  89. package/extensions/magpie/icons/goose.svg +1 -0
  90. package/extensions/magpie/icons/grok.svg +1 -0
  91. package/extensions/magpie/icons/groq.svg +1 -0
  92. package/extensions/magpie/icons/hanako.png +0 -0
  93. package/extensions/magpie/icons/hermes.svg +1 -0
  94. package/extensions/magpie/icons/huawei-color.svg +1 -0
  95. package/extensions/magpie/icons/huaweicloud-color.svg +1 -0
  96. package/extensions/magpie/icons/huggingface-color.svg +1 -0
  97. package/extensions/magpie/icons/hunyuan-color.svg +1 -0
  98. package/extensions/magpie/icons/hyperbolic-color.svg +1 -0
  99. package/extensions/magpie/icons/icon-512.png +0 -0
  100. package/extensions/magpie/icons/iflytekcloud-color.svg +1 -0
  101. package/extensions/magpie/icons/inference.svg +1 -0
  102. package/extensions/magpie/icons/infinigence-color.svg +1 -0
  103. package/extensions/magpie/icons/internlm-color.svg +1 -0
  104. package/extensions/magpie/icons/jcode.svg +1 -0
  105. package/extensions/magpie/icons/jina.svg +1 -0
  106. package/extensions/magpie/icons/kilo.svg +1 -0
  107. package/extensions/magpie/icons/kilocode.svg +1 -0
  108. package/extensions/magpie/icons/kimi-code-desktop.png +0 -0
  109. package/extensions/magpie/icons/kimi.svg +1 -0
  110. package/extensions/magpie/icons/kiro-color.svg +1 -0
  111. package/extensions/magpie/icons/kling-color.svg +1 -0
  112. package/extensions/magpie/icons/lambda.svg +1 -0
  113. package/extensions/magpie/icons/leptonai-color.svg +1 -0
  114. package/extensions/magpie/icons/liquid.svg +1 -0
  115. package/extensions/magpie/icons/liveagent-color.svg +1 -0
  116. package/extensions/magpie/icons/llmapi.svg +1 -0
  117. package/extensions/magpie/icons/lmstudio.svg +1 -0
  118. package/extensions/magpie/icons/lody.png +0 -0
  119. package/extensions/magpie/icons/longcat.svg +1 -0
  120. package/extensions/magpie/icons/magpie.svg +1 -0
  121. package/extensions/magpie/icons/meta-color.svg +1 -0
  122. package/extensions/magpie/icons/metaai-color.svg +1 -0
  123. package/extensions/magpie/icons/microsoft-color.svg +1 -0
  124. package/extensions/magpie/icons/mimocode.svg +1 -0
  125. package/extensions/magpie/icons/minimax-color.svg +1 -0
  126. package/extensions/magpie/icons/mistermorph-color.svg +1 -0
  127. package/extensions/magpie/icons/mistral-color.svg +1 -0
  128. package/extensions/magpie/icons/mlx-serve.png +0 -0
  129. package/extensions/magpie/icons/modelscope-color.svg +1 -0
  130. package/extensions/magpie/icons/monica-color.svg +1 -0
  131. package/extensions/magpie/icons/moonshot.svg +1 -0
  132. package/extensions/magpie/icons/morph-color.svg +1 -0
  133. package/extensions/magpie/icons/mothx.png +0 -0
  134. package/extensions/magpie/icons/nebius.svg +1 -0
  135. package/extensions/magpie/icons/newapi-color.svg +1 -0
  136. package/extensions/magpie/icons/nousresearch.svg +1 -0
  137. package/extensions/magpie/icons/nova-color.svg +1 -0
  138. package/extensions/magpie/icons/novita-color.svg +1 -0
  139. package/extensions/magpie/icons/nvidia-color.svg +1 -0
  140. package/extensions/magpie/icons/ollama.svg +1 -0
  141. package/extensions/magpie/icons/omlx.svg +1 -0
  142. package/extensions/magpie/icons/omo.svg +1 -0
  143. package/extensions/magpie/icons/omp.svg +1 -0
  144. package/extensions/magpie/icons/openai.svg +1 -0
  145. package/extensions/magpie/icons/openchamber.svg +11 -0
  146. package/extensions/magpie/icons/openclaw.svg +1 -0
  147. package/extensions/magpie/icons/opencode.svg +1 -0
  148. package/extensions/magpie/icons/openmausbot.svg +1 -0
  149. package/extensions/magpie/icons/openrouter.svg +1 -0
  150. package/extensions/magpie/icons/openwebui.svg +1 -0
  151. package/extensions/magpie/icons/parasail.svg +1 -0
  152. package/extensions/magpie/icons/penguin-color.svg +1 -0
  153. package/extensions/magpie/icons/perplexity-color.svg +1 -0
  154. package/extensions/magpie/icons/phala-color.svg +1 -0
  155. package/extensions/magpie/icons/pi.svg +1 -0
  156. package/extensions/magpie/icons/pipellm-color.svg +5 -0
  157. package/extensions/magpie/icons/poe.svg +1 -0
  158. package/extensions/magpie/icons/ppio-color.svg +1 -0
  159. package/extensions/magpie/icons/prime-agent.svg +1 -0
  160. package/extensions/magpie/icons/qiniu-color.svg +1 -0
  161. package/extensions/magpie/icons/qoder.svg +1 -0
  162. package/extensions/magpie/icons/qwen-color.svg +1 -0
  163. package/extensions/magpie/icons/qwenpaw.svg +1 -0
  164. package/extensions/magpie/icons/raycast.svg +1 -0
  165. package/extensions/magpie/icons/reasonix-color.svg +48 -0
  166. package/extensions/magpie/icons/reka.svg +1 -0
  167. package/extensions/magpie/icons/replicate.svg +1 -0
  168. package/extensions/magpie/icons/roocode.svg +1 -0
  169. package/extensions/magpie/icons/rtk.png +0 -0
  170. package/extensions/magpie/icons/sambanova-color.svg +1 -0
  171. package/extensions/magpie/icons/sensenova-color.svg +1 -0
  172. package/extensions/magpie/icons/siliconcloud-color.svg +1 -0
  173. package/extensions/magpie/icons/snow.png +0 -0
  174. package/extensions/magpie/icons/snowflake-color.svg +1 -0
  175. package/extensions/magpie/icons/sophnet-color.svg +1 -0
  176. package/extensions/magpie/icons/spark-color.svg +1 -0
  177. package/extensions/magpie/icons/stepfun-color.svg +1 -0
  178. package/extensions/magpie/icons/straico-color.svg +1 -0
  179. package/extensions/magpie/icons/submodel-color.svg +1 -0
  180. package/extensions/magpie/icons/t3code.svg +4 -0
  181. package/extensions/magpie/icons/targon-color.svg +1 -0
  182. package/extensions/magpie/icons/tencent-color.svg +1 -0
  183. package/extensions/magpie/icons/tencentcloud-color.svg +1 -0
  184. package/extensions/magpie/icons/tiangong-color.svg +1 -0
  185. package/extensions/magpie/icons/together-color.svg +1 -0
  186. package/extensions/magpie/icons/trae.svg +1 -0
  187. package/extensions/magpie/icons/typesafe.png +0 -0
  188. package/extensions/magpie/icons/upstage-color.svg +1 -0
  189. package/extensions/magpie/icons/venice-color.svg +1 -0
  190. package/extensions/magpie/icons/vercel.svg +1 -0
  191. package/extensions/magpie/icons/vertexai-color.svg +1 -0
  192. package/extensions/magpie/icons/vllm-color.svg +1 -0
  193. package/extensions/magpie/icons/volcengine-color.svg +1 -0
  194. package/extensions/magpie/icons/voyage-color.svg +1 -0
  195. package/extensions/magpie/icons/vscode.svg +1 -0
  196. package/extensions/magpie/icons/wenxin-color.svg +1 -0
  197. package/extensions/magpie/icons/windsurf.svg +1 -0
  198. package/extensions/magpie/icons/workbuddy-color.svg +1 -0
  199. package/extensions/magpie/icons/workersai-color.svg +1 -0
  200. package/extensions/magpie/icons/xai.svg +1 -0
  201. package/extensions/magpie/icons/xiaomimimo.svg +1 -0
  202. package/extensions/magpie/icons/xinference-color.svg +1 -0
  203. package/extensions/magpie/icons/yi.svg +1 -0
  204. package/extensions/magpie/icons/yuanbao-color.svg +1 -0
  205. package/extensions/magpie/icons/yylx.svg +5 -0
  206. package/extensions/magpie/icons/zai.svg +1 -0
  207. package/extensions/magpie/icons/zcode.png +0 -0
  208. package/extensions/magpie/icons/zed.svg +1 -0
  209. package/extensions/magpie/icons/zenmux.svg +1 -0
  210. package/extensions/magpie/icons/zeroone.svg +1 -0
  211. package/extensions/magpie/icons/zhipu-color.svg +1 -0
  212. package/extensions/magpie/icons/zoo-code.png +0 -0
  213. package/extensions/magpie/index.html +572 -0
  214. package/extensions/magpie/kernel.js +274 -0
  215. package/extensions/magpie/keyspend.js +63 -0
  216. package/extensions/magpie/layout.js +26 -0
  217. package/extensions/magpie/manifest.json +37 -0
  218. package/extensions/magpie/navlamp.js +47 -0
  219. package/extensions/magpie/omarchy.css +72 -0
  220. package/extensions/magpie/omarchy.js +46 -0
  221. package/extensions/magpie/passerrors.js +21 -0
  222. package/extensions/magpie/pluginpages.js +405 -0
  223. package/extensions/magpie/plugins/gateway/client.js +1194 -0
  224. package/extensions/magpie/plugins/gateway/keys.js +972 -0
  225. package/extensions/magpie/plugins/gateway/settings.js +459 -0
  226. package/extensions/magpie/plugins/library/client.js +6788 -0
  227. package/extensions/magpie/plugins/library/i18n.js +3228 -0
  228. package/extensions/magpie/plugins/library/library.css +848 -0
  229. package/extensions/magpie/plugins/otel/i18n.js +48 -0
  230. package/extensions/magpie/plugins/otel/page.js +189 -0
  231. package/extensions/magpie/plugins/redact/client.js +46 -0
  232. package/extensions/magpie/plugins/redact/demo.js +461 -0
  233. package/extensions/magpie/plugins/redact/i18n.js +432 -0
  234. package/extensions/magpie/plugins/redact/page.js +985 -0
  235. package/extensions/magpie/plugins/redact/redact.css +385 -0
  236. package/extensions/magpie/plugins/redact/settings.js +248 -0
  237. package/extensions/magpie/plugins/redact/xq_dark.jpg +0 -0
  238. package/extensions/magpie/plugins/redact/xq_dark.webm +0 -0
  239. package/extensions/magpie/plugins/redact/xq_light.jpg +0 -0
  240. package/extensions/magpie/plugins/redact/xq_light.webm +0 -0
  241. package/extensions/magpie/plugins/routing/client.js +8593 -0
  242. package/extensions/magpie/plugins/routing/i18n.js +2696 -0
  243. package/extensions/magpie/plugins/routing/routing.css +1111 -0
  244. package/extensions/magpie/plugins/search/settings.js +460 -0
  245. package/extensions/magpie/plugins/sessions/client.js +1622 -0
  246. package/extensions/magpie/plugins/sessions/i18n.js +360 -0
  247. package/extensions/magpie/plugins/sessions/sessions.css +181 -0
  248. package/extensions/magpie/plugins/sessions/settings.js +100 -0
  249. package/extensions/magpie/plugins/usage/client.js +150 -0
  250. package/extensions/magpie/plugins/usage/i18n.js +984 -0
  251. package/extensions/magpie/plugins/usage/page.js +4307 -0
  252. package/extensions/magpie/plugins.css +319 -0
  253. package/extensions/magpie/plugins.js +1926 -0
  254. package/extensions/magpie/profilerename.js +27 -0
  255. package/extensions/magpie/purposes.js +2 -0
  256. package/extensions/magpie/quitask.js +79 -0
  257. package/extensions/magpie/quotaall.js +142 -0
  258. package/extensions/magpie/ratewindows.js +123 -0
  259. package/extensions/magpie/registry.js +87 -0
  260. package/extensions/magpie/resetask.js +137 -0
  261. package/extensions/magpie/ruleedit.js +53 -0
  262. package/extensions/magpie/scrollends.js +91 -0
  263. package/extensions/magpie/settingshints.js +75 -0
  264. package/extensions/magpie/signsheets.js +86 -0
  265. package/extensions/magpie/start.js +26 -0
  266. package/extensions/magpie/syncfiles.js +216 -0
  267. package/extensions/magpie/theme.js +29 -0
  268. package/extensions/magpie/traywindows.js +41 -0
  269. package/extensions/magpie/webfonts.js +130 -0
  270. package/extensions/magpie/whatsnew.js +252 -0
  271. package/extensions/magpie.zip +0 -0
  272. package/knowledge/apps/baijiahao.md +30 -0
  273. package/knowledge/apps/bilibili.md +1 -0
  274. package/knowledge/apps/dedao.md +33 -0
  275. package/knowledge/apps/feishu.md +35 -0
  276. package/knowledge/apps/gmail.md +33 -0
  277. package/knowledge/apps/jike.md +31 -0
  278. package/knowledge/apps/kuaishou.md +34 -0
  279. package/knowledge/apps/linkedin.md +33 -0
  280. package/knowledge/apps/qqmail.md +30 -0
  281. package/knowledge/apps/telegram.md +27 -0
  282. package/knowledge/apps/toutiao.md +32 -0
  283. package/knowledge/apps/uber-eats.md +26 -0
  284. package/knowledge/apps/uber.md +27 -0
  285. package/knowledge/apps/whatsapp.md +27 -0
  286. package/knowledge/apps/x.md +32 -0
  287. package/knowledge/apps/xiaohongshu.md +1 -0
  288. package/knowledge/apps/zhihu.md +1 -0
  289. package/knowledge/sites/bilibili.com/SITE.md +50 -0
  290. package/knowledge/sites/bilibili.com/references/view-fields.md +17 -0
  291. package/knowledge/sites/github.com/SITE.md +51 -0
  292. package/knowledge/sites/github.com/references/repo-fields.md +13 -0
  293. package/knowledge/sites/x.com/SITE.md +47 -0
  294. package/knowledge/sites/xiaohongshu.com/SITE.md +48 -0
  295. package/knowledge/sites/xiaohongshu.com/references/note-fields.md +18 -0
  296. package/knowledge/sites/youtube.com/SITE.md +49 -0
  297. package/knowledge/sites/youtube.com/references/innertube-fields.md +14 -0
  298. package/knowledge/sites/zhihu.com/SITE.md +47 -0
  299. package/knowledge/sites/zhihu.com/references/api-fields.md +21 -0
  300. package/lib/mobile/extension-catalog.js +41 -1
  301. package/lib/mobile/extension-data.js +224 -0
  302. package/lib/mobile/extension-dev.js +3 -1
  303. package/lib/mobile/file-ops.js +252 -0
  304. package/lib/mobile/history-derive.js +80 -4
  305. package/lib/mobile/host-bridge/endpoints.js +48 -6
  306. package/lib/mobile/host-bridge/event-synthesis.js +33 -6
  307. package/lib/mobile/jobs-control.js +118 -0
  308. package/lib/mobile/memory.js +635 -0
  309. package/lib/mobile/model-badges.js +77 -0
  310. package/lib/mobile/pet-tools.js +50 -4
  311. package/lib/mobile/pets.js +214 -18
  312. package/lib/mobile/phone/access.js +85 -0
  313. package/lib/mobile/phone/evidence.js +228 -0
  314. package/lib/mobile/phone/gate.js +290 -0
  315. package/lib/mobile/phone/grounding.js +314 -0
  316. package/lib/mobile/phone/guard.js +465 -0
  317. package/lib/mobile/phone/irreversible.js +88 -8
  318. package/lib/mobile/phone/knowledge-tools.js +665 -0
  319. package/lib/mobile/phone/learn.js +329 -0
  320. package/lib/mobile/phone/redact.js +237 -0
  321. package/lib/mobile/phone/risk.js +95 -0
  322. package/lib/mobile/phone/routes.js +28 -1
  323. package/lib/mobile/phone/service.js +23 -0
  324. package/lib/mobile/phone/site-commands.js +271 -0
  325. package/lib/mobile/phone/step-summary.js +201 -0
  326. package/lib/mobile/phone/stop-summary.js +235 -0
  327. package/lib/mobile/phone/tool-groups.js +125 -0
  328. package/lib/mobile/phone/tools.js +589 -0
  329. package/lib/mobile/phone/untrusted.js +65 -0
  330. package/lib/mobile/phone-knowledge.js +20 -4
  331. package/lib/mobile/schedule-edit.js +500 -0
  332. package/lib/mobile/schedule.js +5 -0
  333. package/lib/mobile/send-continuation.js +52 -0
  334. package/lib/mobile/session-models.js +27 -31
  335. package/lib/mobile/session-send.js +12 -12
  336. package/lib/mobile/skill-import.js +338 -0
  337. package/lib/mobile/skill-store.js +524 -0
  338. package/lib/routes/mobile-api.js +42 -0
  339. package/package.json +7 -6
  340. package/skills/skill-authoring/SKILL.md +46 -0
  341. package/skills/skill-authoring/references/examples.md +82 -0
  342. package/skills/skill-authoring/references/frontmatter-and-fields.md +46 -0
  343. package/skills/skill-authoring/scripts/check_skill.py +167 -0
  344. package/skills/skill-authoring/scripts/manifest.json +3 -0
  345. package/knowledge/sites/bilibili.com.md +0 -27
  346. package/knowledge/sites/github.com.md +0 -27
  347. package/knowledge/sites/x.com.md +0 -28
  348. package/knowledge/sites/xiaohongshu.com.md +0 -27
  349. package/knowledge/sites/youtube.com.md +0 -28
  350. package/knowledge/sites/zhihu.com.md +0 -27
@@ -0,0 +1,319 @@
1
+ /* Plugins: the market of provider plugins, and the ones installed. */
2
+ #view-plugins { gap: 0; }
3
+ .pm-head { gap: 10px; }
4
+ .pm-mirror { display: inline-flex; align-items: center; gap: 7px; padding: 2px 0; background: none; border: 0; font: inherit; font-size: 12px; color: var(--muted); cursor: pointer; white-space: nowrap; }
5
+ .pm-mirror:hover, .pm-mirror.on { color: var(--fg); }
6
+ .pm-mirror:disabled { opacity: .6; cursor: default; }
7
+ .pm-mirror .lib-switch { width: 28px; height: 16px; }
8
+ .pm-mirror .lib-switch i { width: 12px; height: 12px; }
9
+ .pm-mirror .lib-switch.on i { transform: translateX(12px); }
10
+ .pm-find {
11
+ display: flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; width: min(280px, 46%);
12
+ border-radius: 8px; background: var(--pill); color: var(--muted);
13
+ box-shadow: inset 0 0 0 1px transparent; transition: box-shadow .14s var(--ease), background .14s var(--ease);
14
+ }
15
+ .pm-find:focus-within { background: var(--card); box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); }
16
+ .pm-find svg { flex: none; }
17
+ .pm-find input { flex: 1; min-width: 0; border: 0; outline: none; background: none; color: var(--fg); font: inherit; font-size: 12.5px; }
18
+ .pm-find input::placeholder { color: var(--faint); }
19
+ .pm-find input::-webkit-search-cancel-button { cursor: default; }
20
+ .pm-body { gap: 18px; padding: 10px 0 18px; }
21
+
22
+ /* the opening: what plugins are, and a few of the subscriptions they bring */
23
+ .pm-intro {
24
+ position: relative; overflow: hidden; display: flex; align-items: center; gap: 18px;
25
+ padding: 16px 18px; border-radius: 14px; border: 1px solid var(--line);
26
+ background:
27
+ radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--accent) 11%, transparent), transparent 60%),
28
+ var(--card);
29
+ }
30
+ .pm-introtext { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
31
+ .pm-intro h2 { margin: 0; font-size: 15px; font-weight: 650; letter-spacing: -.01em; text-wrap: balance; }
32
+ .pm-intro p { margin: 0; font-size: 12px; line-height: 1.55; color: var(--fg-2); max-width: 560px; }
33
+ .pm-intro .pm-trust { display: flex; align-items: center; gap: 6px; margin-top: 3px; font-size: 11.5px; color: var(--muted); }
34
+ .pm-intro .pm-trust svg { flex: none; color: var(--green); }
35
+ .pm-art { flex: none; display: grid; grid-template-columns: repeat(3, 34px); gap: 8px; transform: rotate(-6deg); margin-right: 6px; }
36
+ .pm-art .pm-logo { width: 34px; height: 34px; border-radius: 10px; box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 0 0 1px var(--line-2); background: var(--card); }
37
+ .pm-art .pm-logo:nth-child(4) { grid-column: 2; }
38
+ .pm-art .pm-logo:nth-child(odd) { transform: translateY(4px); }
39
+
40
+ /* sections of cards */
41
+ .pm-sec { display: flex; flex-direction: column; gap: 9px; }
42
+ .pm-sechead { display: flex; align-items: baseline; gap: 8px; padding: 0 2px; flex-wrap: wrap; }
43
+ .pm-sechead h3 { margin: 0; font-size: 12.5px; font-weight: 650; }
44
+ .pm-sechead span { font-size: 11.5px; color: var(--muted); }
45
+ .pm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(262px, 1fr)); gap: 10px; }
46
+ /* the GitHub section's kinds, what's installed and its own field, on one
47
+ line while they fit; the field goes under them, the whole width, when
48
+ they don't */
49
+ .pm-ghbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
50
+ .pm-ghbar .segs { flex: none; max-width: 100%; }
51
+ /* it takes a share of the room the strips leave, up to what its
52
+ placeholder needs, so "Filter by name, author or description" isn't cut */
53
+ .pm-ghfind { flex: 4 0 auto; width: min(240px, 100%); max-width: min(320px, 100%); }
54
+ .pm-ghnone { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 22px 12px; border-radius: 12px; border: 1px dashed var(--line); font-size: 12px; color: var(--muted); text-align: center; }
55
+ /* what GitHub couldn't give, over the cards it could: a quiet line, its
56
+ reason wrapping anywhere (a URL in it is one long word) */
57
+ .pm-ghwarn { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 6px; padding: 0 2px; font-size: 11.5px; color: var(--muted); }
58
+ /* its Try again reads as the button it is, beside the quiet line */
59
+ .pm-ghwarn .text { padding: 1px 6px; margin: -1px 0; font-size: 11.5px; color: var(--accent); }
60
+ .pm-ghwarn .text:hover:not(:disabled) { color: var(--accent); background: var(--accent-soft); }
61
+ .pm-ghwarn > span, .pm-ghnone > span { overflow-wrap: anywhere; }
62
+
63
+ .pm-logo { flex: none; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: var(--pill); color: var(--fg-2); }
64
+ .pm-logo .ic { width: 20px; height: 20px; }
65
+ .pm-logo.big { width: 44px; height: 44px; border-radius: 12px; }
66
+ .pm-logo.big .ic { width: 25px; height: 25px; }
67
+
68
+ .pm-card {
69
+ display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 12px 12px 11px 13px;
70
+ border-radius: 12px; border: 1px solid var(--line); background: var(--card); cursor: default; outline: none;
71
+ transition: border-color .16s var(--ease), box-shadow .16s var(--ease), transform .16s var(--ease);
72
+ }
73
+ .pm-card:hover { border-color: color-mix(in srgb, var(--fg) 16%, var(--line)); box-shadow: 0 4px 14px rgba(20, 22, 30, .07); }
74
+ .pm-card:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 28%, transparent); border-color: var(--accent); }
75
+ .pm-top { display: flex; align-items: center; gap: 10px; min-width: 0; }
76
+ .pm-who { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
77
+ .pm-name { display: flex; align-items: center; gap: 6px; min-width: 0; }
78
+ .pm-name b { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
79
+ .pm-by { display: flex; align-items: center; gap: 4px; min-width: 0; font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
80
+ .pm-by > span { overflow: hidden; text-overflow: ellipsis; }
81
+ .pm-verified { display: inline-flex; align-items: center; gap: 3px; color: var(--green); font-weight: 500; }
82
+ .pm-sum {
83
+ margin: 0; font-size: 12px; line-height: 1.45; color: var(--fg-2); min-height: 2.9em;
84
+ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
85
+ }
86
+ .pm-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; min-height: 18px; }
87
+ .pm-dl { display: inline-flex; align-items: center; gap: 3px; }
88
+ .pm-ver { font: var(--code-style, normal) var(--code-weight, 400) 10.5px var(--code-font, var(--code)); font-stretch: var(--code-stretch, 100%); color: var(--muted); }
89
+ .pm-chip { display: inline-flex; align-items: center; height: 17px; padding: 0 6px; border-radius: 5px; font-size: 10.5px; font-weight: 500; background: var(--pill); color: var(--fg-2); }
90
+ .pm-chip.up { background: var(--accent-soft); color: var(--accent); }
91
+ button.pm-chip { border: 0; font-family: inherit; cursor: pointer; }
92
+ button.pm-chip.up:hover:not(:disabled) { background: var(--accent); color: var(--accent-fg); }
93
+ button.pm-chip:disabled { cursor: default; opacity: .6; }
94
+ .pm-mw-fail { color: var(--red); }
95
+ /* a plugin's tools: the names on one line, the MCP server's address to copy */
96
+ .pm-row .sub.pm-tools { display: flex; align-items: center; gap: 6px; min-width: 0; }
97
+ .pm-tools > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
98
+ .pm-tools > .copy { flex: none; width: 20px; height: 20px; }
99
+ .pm-chip.bad { background: var(--red-soft); color: var(--red); }
100
+ .pm-chip.moved { gap: 4px; background: var(--accent-soft); color: var(--accent); }
101
+ .pm-chip.moved .dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
102
+ .pm-row .sub.ask { color: var(--fg); }
103
+ /* unofficial: a hairline and a small amber dot, quiet beside the rest
104
+ of the line (yetone: 这些配色有点丑,一点都不优雅精致) */
105
+ .pm-chip.warn { gap: 5px; background: none; box-shadow: inset 0 0 0 1px var(--line); color: var(--fg-2); font-weight: 400; }
106
+ .pm-chip.warn .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--amber); flex: none; }
107
+ /* a provider two installed plugins sign in to: a line that wraps, never clipped */
108
+ .pm-row .sub.pm-clash { display: block; white-space: normal; overflow: visible; overflow-wrap: anywhere; }
109
+ .pm-clash .dot { display: inline-block; width: 6px; height: 6px; margin: 0 5px 1px 0; border-radius: 50%; background: var(--faint); vertical-align: middle; }
110
+ .pm-row .sub.pm-clash.warn { color: var(--amber); }
111
+ .pm-clash.warn .dot { background: currentColor; }
112
+ .pm-foot .pm-check { display: inline-flex; align-items: center; gap: 5px; }
113
+ .pm-foot .pm-check .spin { width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid currentColor; border-right-color: transparent; animation: spin .7s linear infinite; }
114
+ /* what a plugin is reads as the line's other facts do (stars, version):
115
+ its glyph and its word, no fill of its own */
116
+ .pm-chip.kind { gap: 4px; flex: none; padding: 0; background: none; color: var(--fg-2); font-weight: 400; }
117
+ .pm-chip.kind svg { flex: none; }
118
+ /* yet the two kinds part at a glance (yetone: 中间件和供应商稍微有点区分吧):
119
+ each its own hue on the glyph and word, softened toward the text;
120
+ middleware leans teal, apart from the community badge's green */
121
+ .pm-chip.kind.pv { color: color-mix(in srgb, var(--accent) 80%, var(--fg-2)); }
122
+ .pm-chip.kind.mw { color: color-mix(in srgb, color-mix(in oklch, var(--green) 60%, var(--accent)) 80%, var(--fg-2)); }
123
+ /* an agent leans warm, apart from both */
124
+ .pm-chip.kind.ag { color: color-mix(in srgb, color-mix(in oklch, var(--amber) 55%, var(--accent)) 80%, var(--fg-2)); }
125
+ .pm-chip.soft { background: none; box-shadow: inset 0 0 0 1px var(--line); color: var(--muted); }
126
+
127
+ /* a plugin's one button */
128
+ .pm-act {
129
+ flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 5px;
130
+ height: 26px; min-width: 64px; padding: 0 12px; border-radius: 13px;
131
+ font-size: 12px; font-weight: 600; white-space: nowrap;
132
+ background: var(--pill); color: var(--fg-2); transition: background .14s var(--ease), color .14s var(--ease), filter .14s;
133
+ }
134
+ .pm-act:hover:not(:disabled) { background: var(--pill-hover); color: var(--fg); }
135
+ .pm-act.get { background: var(--accent-soft); color: var(--accent); }
136
+ .pm-act.get:hover:not(:disabled) { background: var(--accent); color: var(--accent-fg); }
137
+ /* an update out: Install's size, green for its own (#1587) */
138
+ .pm-act.pm-up { background: var(--green-soft); color: var(--green); }
139
+ .pm-act.pm-up:hover:not(:disabled) { background: var(--green); color: var(--card); }
140
+ /* Sign in, in a list of cards or rows, is Install's tinted capsule: one
141
+ style for a row's action, so no card shouts over its neighbours (HIG's
142
+ one filled button is a sheet's own); a plugin's page fills it */
143
+ .pm-act.go { background: var(--accent-soft); color: var(--accent); }
144
+ .pm-act.go:hover:not(:disabled), .pm-dact .pm-act.go { background: var(--accent); color: var(--accent-fg); }
145
+ .pm-dact .pm-act.go:hover:not(:disabled) { filter: brightness(1.08); }
146
+ .pm-act.done { background: none; color: var(--green); padding: 0 8px; min-width: 0; }
147
+ .pm-act.done:hover:not(:disabled) { background: var(--green-soft); color: var(--green); }
148
+ .pm-act.busy { color: var(--muted); font-weight: 500; }
149
+ .pm-act:disabled:not(.busy):not(.done) { opacity: .55; }
150
+ .pm-act .spin { width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid currentColor; border-right-color: transparent; animation: spin .7s linear infinite; }
151
+
152
+ /* loading: cards laid out as a card is, in soft bars a light passes
153
+ over, one card a beat after the one before it */
154
+ .pm-card.ghost { gap: 9px; pointer-events: none; border-color: color-mix(in srgb, var(--line) 70%, transparent); }
155
+ .pm-card.ghost .sk {
156
+ border-radius: 5px;
157
+ background: linear-gradient(100deg, var(--pill) 30%, color-mix(in srgb, var(--pill-hover) 70%, var(--card)) 50%, var(--pill) 70%);
158
+ background-size: 300% 100%;
159
+ animation: pm-sheen 1.8s cubic-bezier(.45, 0, .25, 1) infinite;
160
+ animation-delay: calc(var(--i, 0) * 120ms);
161
+ }
162
+ .pm-card.ghost .gtop { display: flex; align-items: center; gap: 10px; }
163
+ .pm-card.ghost .gwho { flex: 1; display: flex; flex-direction: column; gap: 6px; }
164
+ .pm-card.ghost .glogo { flex: none; width: 36px; height: 36px; border-radius: 10px; }
165
+ .pm-card.ghost .gname { height: 11px; width: 52%; }
166
+ .pm-card.ghost .gby { height: 8px; width: 30%; opacity: .7; }
167
+ .pm-card.ghost .gact { flex: none; width: 56px; height: 26px; border-radius: 13px; opacity: .8; }
168
+ .pm-card.ghost .gline { height: 8px; margin-top: 6px; }
169
+ .pm-card.ghost .gline.short { width: 68%; margin-top: 0; }
170
+ .pm-card.ghost .gmeta { display: flex; gap: 8px; margin-top: 7px; }
171
+ .pm-card.ghost .gchip { height: 8px; width: 46px; opacity: .8; }
172
+ .pm-card.ghost .gchip.short { width: 30px; }
173
+ @keyframes pm-pulse { 50% { opacity: .5; } }
174
+ @keyframes pm-sheen { from { background-position: 100% 0; } to { background-position: 0 0; } }
175
+ /* the GitHub section looking: three dots breathing in turn, and the word */
176
+ .pm-sechead .pm-ghlook { display: inline-flex; align-items: center; gap: 7px; margin-left: auto; font-size: 11px; color: var(--faint); animation: pm-fade .4s var(--ease) both .15s; }
177
+ .pm-ghlook .dots { display: inline-flex; gap: 3px; }
178
+ .pm-ghlook .dots i { width: 4px; height: 4px; border-radius: 50%; background: var(--accent); opacity: .25; animation: pm-breathe 1.2s ease-in-out infinite; }
179
+ .pm-ghlook .dots i:nth-child(2) { animation-delay: .16s; }
180
+ .pm-ghlook .dots i:nth-child(3) { animation-delay: .32s; }
181
+ @keyframes pm-breathe { 0%, 70%, 100% { opacity: .25; transform: none; } 35% { opacity: .9; transform: translateY(-1.5px); } }
182
+ @keyframes pm-fade { from { opacity: 0; } }
183
+ /* its cards when they come: in where the ghosts were, one after another */
184
+ .pm-arrive .pm-card { animation: pm-arrive .42s cubic-bezier(.2, .7, .2, 1) both; animation-delay: calc(var(--i, 0) * 40ms); }
185
+ @keyframes pm-arrive { from { opacity: 0; transform: translateY(4px); } }
186
+
187
+ .pm-note { margin: 0; padding: 4px 2px; font-size: 12px; color: var(--muted); }
188
+ .pm-note.bad { color: var(--red); }
189
+ .pm-note.warn { display: flex; align-items: flex-start; gap: 6px; padding: 8px 10px; border-radius: 8px; background: var(--amber-soft); color: var(--fg); line-height: 1.5; }
190
+ .pm-note.warn svg { flex: none; margin-top: 2px; color: var(--amber); }
191
+ .pm-empty { margin: 24px 4px; font-size: 12.5px; color: var(--red); }
192
+
193
+ /* a package the market doesn't list. It floats at the foot of the view
194
+ while the cards scroll under it (0x3108 on X: with many plugins it was
195
+ found only at the very end), on a strip of the page's own colour that
196
+ reaches into the gaps round it and the view's padding below; at the end
197
+ of the list it is back in its place, above the registry line. The strip
198
+ is the box's ::before, which a sticky box paints over its own border, so
199
+ the dashed border is drawn by its ::after. The strip takes the pointer, so
200
+ a press on it never reaches a card hidden under it */
201
+ .pm-manual { position: sticky; bottom: 0; z-index: 2; display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 12px; border: 1px solid transparent; flex-wrap: wrap; --bleed-l: 12px; }
202
+ body.window .pm-manual { --bleed-l: 16px; }
203
+ .pm-manual::before { content: ""; position: absolute; z-index: -1; top: -11px; bottom: -13px; left: calc(-1 * var(--bleed-l)); right: calc(var(--bar, 0px) - 12px); background: var(--bg); }
204
+ .pm-manual::after { content: ""; position: absolute; inset: -1px; pointer-events: none; border-radius: inherit; border: 1px dashed var(--line); }
205
+ /* a card reached with Tab stops above the box, not under it */
206
+ #view-plugins { scroll-padding-bottom: 76px; }
207
+ .pm-mlabel { font-size: 12px; color: var(--muted); }
208
+ .pm-registry { display: flex; align-items: center; gap: 8px; padding: 4px 12px 0; flex-wrap: wrap; font-size: 12px; min-width: 0; }
209
+ .pm-reg-url { min-width: 0; overflow-wrap: anywhere; font-size: 12px; }
210
+ .pm-reg-from { color: var(--muted); min-width: 0; overflow-wrap: anywhere; }
211
+ .pm-reg-err { flex-basis: 100%; color: var(--red); }
212
+ .pm-minput { flex: 1; min-width: 180px; height: 26px; padding: 0 9px; border-radius: 7px; border: 1px solid var(--line); background: var(--card); color: var(--fg); font: var(--code-style, normal) var(--code-weight, 400) 12px var(--code-font, var(--code)); font-stretch: var(--code-stretch, 100%); outline: none; }
213
+ .pm-minput:focus { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); }
214
+ /* the system's folder picker, beside the field it fills */
215
+ .pm-browse { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; flex: none; padding: 0; border-radius: 7px; border: 1px solid var(--line); background: var(--card); color: var(--muted); cursor: pointer; transition: color .14s var(--ease), border-color .14s var(--ease); }
216
+ .pm-browse:hover:not(:disabled) { color: var(--fg); border-color: var(--faint); }
217
+ .pm-browse:disabled { opacity: .5; cursor: default; }
218
+
219
+ /* Installed */
220
+ .pm-listhead { margin: 0 0 -10px; padding: 0 2px; }
221
+ /* the plugins with an update, above the list: the sidebar's dot, named */
222
+ .pm-updates { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; padding: 9px 10px 9px 12px; border-radius: 10px; background: var(--accent-soft); font-size: 12px; line-height: 1.35; }
223
+ .pm-updates .grow { flex: 1; min-width: 0; overflow-wrap: anywhere; }
224
+ .pm-updates .pm-dot { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
225
+ .pm-updates .pm-up { flex: none; }
226
+ .pm-list .row { min-height: 54px; padding: 8px 10px 8px 12px; gap: 11px; cursor: default; transition: background .14s var(--ease); }
227
+ .pm-list .row:hover { background: var(--card-2); }
228
+ .pm-list .row + .row { border-top: 1px solid var(--line-2); }
229
+ .pm-row .pm-logo { width: 32px; height: 32px; border-radius: 9px; }
230
+ .pm-row .pm-logo .ic { width: 18px; height: 18px; }
231
+ .pm-row .who { flex: 1; min-width: 0; }
232
+ .pm-row .name { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 500; }
233
+ .pm-row .sub { display: flex; align-items: center; flex-wrap: wrap; gap: 0 2px; margin-top: 2px; font-size: 11.5px; color: var(--muted); }
234
+ .pm-row .sub.bad { color: var(--red); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
235
+ .pm-row .sub .sep { color: var(--faint); }
236
+ .pm-sub { display: inline-flex; align-items: center; gap: 5px; }
237
+ .pm-sub .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--faint); }
238
+ .pm-sub.in .dot { background: var(--green); }
239
+ .pm-opts { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
240
+ .pm-opts textarea {
241
+ width: 100%; box-sizing: border-box; resize: vertical; padding: 8px 10px; border-radius: 8px;
242
+ border: 1px solid var(--line); background: var(--card); color: var(--fg); font: var(--code-style, normal) var(--code-weight, 400) 12px/1.5 var(--code-font, var(--code)); font-stretch: var(--code-stretch, 100%); tab-size: 2; outline: none;
243
+ }
244
+ .pm-opts textarea:focus { border-color: var(--accent); }
245
+ .pm-opts-err { font-size: 11.5px; color: var(--red); }
246
+ .pm-opts-err:empty { display: none; }
247
+ .pm-opts-bar { display: flex; align-items: center; gap: 2px; }
248
+ .pm-opts-bar > span { flex: 1; min-width: 0; font-size: 11.5px; color: var(--muted); }
249
+ .pm-row .val { display: flex; align-items: center; gap: 2px; flex: none; }
250
+ .pm-row.off .who, .pm-row.off .pm-logo { opacity: .5; }
251
+ .pm-foot { display: flex; align-items: center; gap: 8px; padding: 0 4px; font-size: 11px; color: var(--faint); }
252
+ .pm-none { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 44px 16px; text-align: center; }
253
+ .pm-none b { font-size: 13.5px; font-weight: 600; margin-top: 4px; }
254
+ .pm-none p { margin: 0 0 6px; font-size: 12px; color: var(--muted); max-width: 320px; line-height: 1.5; }
255
+
256
+ /* a plugin's page */
257
+ .modal .editor.pm-detail.framed > .ehead { min-height: 76px; gap: 12px; }
258
+ .modal .editor.pm-detail.framed > .ebody { display: block; padding: 0; }
259
+ .pm-dhead .pm-name b { font-size: 15px; }
260
+ .pm-dhead .pm-by { font-size: 11.5px; }
261
+ .pm-dact .pm-act { height: 28px; min-width: 80px; border-radius: 14px; }
262
+ .pm-dbody { display: flex; flex-direction: column; gap: 12px; padding: 14px 18px 18px; }
263
+ .pm-dsum { margin: 0; font-size: 13px; line-height: 1.5; color: var(--fg); }
264
+ .pm-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 1px; border-radius: 10px; overflow: hidden; background: var(--line-2); border: 1px solid var(--line-2); }
265
+ .pm-fact { display: flex; flex-direction: column; gap: 2px; padding: 8px 11px; background: var(--card); min-width: 0; }
266
+ .pm-fact .k { font-size: 10.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
267
+ .pm-fact .v { font-size: 12.5px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
268
+ .pm-links { display: flex; gap: 6px; flex-wrap: wrap; }
269
+ .pm-link { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 7px; background: var(--pill); color: var(--fg-2); font-size: 11.5px; text-decoration: none; }
270
+ .pm-link:hover { background: var(--pill-hover); color: var(--fg); }
271
+ .pm-readme { border-top: 1px solid var(--line-2); padding-top: 12px; min-height: 60px; }
272
+ /* the README's skeleton: strings the bird bounces down (bounceLoader) */
273
+ .pm-bounce { position: relative; height: 108px; }
274
+ .pm-bounce[data-gone] { position: absolute; z-index: 2; pointer-events: none; }
275
+ .pm-bounce > svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; transition: opacity .3s ease-out; }
276
+ .pm-bounce[data-gone] > svg { opacity: 0; }
277
+ .pm-bounce path { fill: none; stroke: var(--skel, var(--pill)); stroke-width: 10; stroke-linecap: round; transition: stroke .35s ease-out; }
278
+ .pm-bounce path[data-lit] { stroke: color-mix(in srgb, var(--accent) 18%, var(--skel, var(--pill))); }
279
+
280
+ /* a README */
281
+ .pm-md { font-size: 12.5px; line-height: 1.6; color: var(--fg-2); overflow-wrap: anywhere; }
282
+ .pm-md > :first-child { margin-top: 0; }
283
+ .pm-md h3, .pm-md h4, .pm-md h5, .pm-md h6 { color: var(--fg); margin: 16px 0 6px; line-height: 1.3; text-wrap: balance; }
284
+ .pm-md h3 { font-size: 15px; font-weight: 650; }
285
+ .pm-md h4 { font-size: 13.5px; font-weight: 650; }
286
+ .pm-md h5, .pm-md h6 { font-size: 12.5px; font-weight: 600; }
287
+ .pm-md p { margin: 0 0 9px; }
288
+ .pm-md ul, .pm-md ol { margin: 0 0 9px; padding-left: 20px; }
289
+ .pm-md li + li { margin-top: 2px; }
290
+ .pm-md a { color: var(--accent); text-decoration: none; }
291
+ .pm-md a:hover { text-decoration: underline; }
292
+ .pm-md code { font: var(--code-style, normal) var(--code-weight, 400) 11.5px var(--code-font, var(--code)); font-stretch: var(--code-stretch, 100%); padding: 1px 4px; border-radius: 4px; background: var(--pill); color: var(--fg); }
293
+ .pm-md pre { margin: 0 0 10px; padding: 9px 11px; border-radius: 8px; background: var(--card-2); border: 1px solid var(--line-2); overflow-x: auto; }
294
+ .pm-md pre code { padding: 0; background: none; font-size: 11.5px; line-height: 1.35; white-space: pre; } /* close enough for a box drawn in │ and ─ to join */
295
+ .pm-md blockquote { margin: 0 0 9px; padding: 7px 11px; border-radius: 8px; background: var(--card-2); color: var(--fg-2); }
296
+ .pm-md hr { border: 0; border-top: 1px solid var(--line-2); margin: 12px 0; }
297
+ .pm-table { overflow-x: auto; margin: 0 0 10px; }
298
+ .pm-md table { border-collapse: collapse; font-size: 12px; }
299
+ .pm-md th, .pm-md td { padding: 5px 9px; border: 1px solid var(--line-2); text-align: left; vertical-align: top; }
300
+ .pm-md th { background: var(--card-2); font-weight: 600; color: var(--fg); }
301
+
302
+ /* the add sheet's row to Plugins */
303
+ .tile.more-plugins { color: var(--accent); }
304
+ .tile.more-plugins .puzzle { flex: none; width: 18px; height: 18px; display: grid; place-items: center; }
305
+ .tile.more-plugins > svg { flex: none; opacity: .7; }
306
+ .tile.more-plugins:hover { background: var(--accent-soft); }
307
+
308
+ @media (max-width: 560px) {
309
+ .pm-head { flex-wrap: wrap; }
310
+ .pm-find { width: 100%; order: 3; }
311
+ .pm-ghfind { max-width: 100%; }
312
+ .pm-art { display: none; }
313
+ }
314
+ @media (prefers-reduced-motion: reduce) {
315
+ .pm-card { transition: none; }
316
+ .pm-card.ghost .sk, .pm-ghlook, .pm-ghlook .dots i, .pm-arrive .pm-card { animation: none; }
317
+ .pm-ghlook .dots i { opacity: .5; }
318
+ }
319
+ .pm-tools > .pm-tools-flip { flex: none; margin-left: auto; padding: 0 2px; }