codex-phone 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 (34) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +278 -0
  3. package/dist/assets/AutomationsPanel-CVRRdwJX.css +1 -0
  4. package/dist/assets/AutomationsPanel-uscQHN1e.js +1 -0
  5. package/dist/assets/DirectoryHub-C8N1e8Jl.css +1 -0
  6. package/dist/assets/DirectoryHub-DPAFmuRH.js +2 -0
  7. package/dist/assets/ReviewPane-BZOe7axm.js +1 -0
  8. package/dist/assets/ReviewPane-CoYYQ3xu.css +1 -0
  9. package/dist/assets/ThreadConversation-BTpe8eca.js +39 -0
  10. package/dist/assets/ThreadConversation-DruQC3Ap.css +1 -0
  11. package/dist/assets/ThreadTerminalPanel-BTLjAaIQ.js +38 -0
  12. package/dist/assets/ThreadTerminalPanel-V1YtpglL.css +32 -0
  13. package/dist/assets/common-BeuopZEI.js +5 -0
  14. package/dist/assets/index-BzkJYDSJ.css +1 -0
  15. package/dist/assets/index-Dp2k2aGg.js +73 -0
  16. package/dist/assets/index.esm-CXKcZNKa.js +376 -0
  17. package/dist/assets/index.esm-ChJ56zLV.js +1651 -0
  18. package/dist/assets/index.esm-rglDf0Dn.js +16 -0
  19. package/dist/icons/apple-touch-icon.png +0 -0
  20. package/dist/icons/codexui-icon.svg +52 -0
  21. package/dist/icons/maskable-512x512.png +0 -0
  22. package/dist/icons/pwa-192x192.png +0 -0
  23. package/dist/icons/pwa-512x512.png +0 -0
  24. package/dist/icons/pwa-icon.svg +38 -0
  25. package/dist/icons/pwa-maskable.svg +36 -0
  26. package/dist/index.html +21 -0
  27. package/dist/manifest.webmanifest +36 -0
  28. package/dist/sw.js +92 -0
  29. package/dist-cli/index.js +15263 -0
  30. package/dist-cli/index.js.map +1 -0
  31. package/package.json +93 -0
  32. package/scripts/dev-random-home.cjs +21 -0
  33. package/scripts/dev.cjs +62 -0
  34. package/scripts/fix-pty-native-build.cjs +70 -0
package/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ MIT License
2
+
3
+ Copyright 2026 Pavel Voronin, Igor Levochkin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the β€œSoftware”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10
+
11
+
package/README.md ADDED
@@ -0,0 +1,278 @@
1
+ # πŸ”₯ codex-phone
2
+
3
+ ### πŸš€ Run Codex App UI Anywhere: Linux, Windows, or Termux on Android πŸš€
4
+
5
+ [![npm](https://img.shields.io/npm/v/codex-phone?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/codex-phone)
6
+ [![platform](https://img.shields.io/badge/Platform-Linux%20%7C%20Windows%20%7C%20Android-blue?style=for-the-badge)](#-quick-start)
7
+ [![node](https://img.shields.io/badge/Node-18%2B-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/)
8
+ [![license](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](./LICENSE)
9
+
10
+ > **Codex UI in your browser. No drama. One command.**
11
+ >
12
+ > **Yes, that is your Codex desktop app experience exposed over web UI. Yes, it runs cross-platform.**
13
+
14
+ ```text
15
+ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ•—
16
+ β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘
17
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β•šβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘
18
+ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β• β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘
19
+ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘
20
+ β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β•β•šβ•β• β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•
21
+ ```
22
+
23
+ ---
24
+ <img width="1366" height="900" alt="image" src="https://github.com/user-attachments/assets/1a3578ba-add8-49a2-88b4-08195a7f0140" />
25
+
26
+ ## 🀯 What Is This?
27
+ **`codex-phone`** is a lightweight bridge that gives you a browser-accessible UI for Codex app-server workflows.
28
+
29
+ You run one command. It starts a local web server. You open it from your machine, your LAN, or wherever your setup allows.
30
+
31
+ **TL;DR 🧠: Codex app UI, unlocked for Linux, Windows, and Termux-powered Android setups.**
32
+
33
+ ---
34
+
35
+ ## ⚑ Quick Start
36
+ > **The main event.**
37
+
38
+ ```bash
39
+ # πŸ”“ Run instantly (recommended)
40
+ npx codex-phone
41
+
42
+ # 🌐 Then open in browser
43
+ # http://localhost:18923
44
+ ```
45
+
46
+ By default, `codex-phone` now also starts:
47
+
48
+ ```bash
49
+ cloudflared tunnel --url http://localhost:<port>
50
+ ```
51
+
52
+ It prints the tunnel URL and a terminal QR code. When password protection is enabled, the QR code opens a one-click login link, while the visible terminal output only shows the generated password file path.
53
+ Use `--no-tunnel` to disable this behavior.
54
+
55
+ If you are using a provider or AI gateway that is already authenticated and do not want `codex-phone` to force `codex login` during startup, use:
56
+
57
+ ```bash
58
+ npx codex-phone --no-login
59
+ ```
60
+
61
+ ### Linux 🐧
62
+ ```bash
63
+ node -v # should be 18+
64
+ npx codex-phone
65
+ ```
66
+
67
+ ### Windows πŸͺŸ (PowerShell)
68
+ ```powershell
69
+ node -v # 18+
70
+ npx codex-phone
71
+ ```
72
+
73
+ ### Termux (Android) πŸ€–
74
+ ```bash
75
+ pkg update && pkg upgrade -y
76
+ pkg install nodejs -y
77
+ npx codex-phone
78
+ ```
79
+
80
+ Android background requirements:
81
+
82
+ 1. Keep `codex-phone` running in the current Termux session (do not close it).
83
+ 2. In Android settings, disable battery optimization for `Termux`.
84
+ 3. Keep the persistent Termux notification enabled so Android is less likely to kill it.
85
+ 4. Optional but recommended in Termux:
86
+ ```bash
87
+ termux-wake-lock
88
+ ```
89
+ 5. Open the shown URL in your Android browser. If the app is killed, return to Termux and run `npx codex-phone` again.
90
+
91
+ ---
92
+
93
+ ## iPhone / iPad via Tailscale Serve
94
+
95
+ If you want to use codexUI from iPhone or iPad Safari, serving it over HTTPS is recommended.
96
+
97
+ A practical private setup is to run codexUI locally and publish it inside your tailnet with Tailscale Serve:
98
+
99
+ ```powershell
100
+ npx codex-phone --no-tunnel --port 5900
101
+ tailscale serve --bg 5900
102
+ ```
103
+
104
+ Then open:
105
+
106
+ ```text
107
+ https://<your-machine>.<your-tailnet>.ts.net
108
+ ```
109
+
110
+ This setup worked well in practice for:
111
+
112
+ - iPhone Safari access
113
+ - Add to Home Screen
114
+ - the built-in dictation / transcription feature in the app
115
+ - viewing the same projects and conversations from the Windows host
116
+
117
+ Notes:
118
+
119
+ - Tailscale Serve keeps access private to your tailnet
120
+ - on iOS, HTTPS / secure context appears to be important for mobile browser access and dictation
121
+ - some minor mobile Safari CSS issues may still exist, but they do not prevent normal use
122
+ - depending on proxying details, authentication behavior may differ from direct remote access
123
+ - if conversations created in the web UI do not immediately appear in the Windows app, restarting the Windows app may refresh them
124
+
125
+ ---
126
+
127
+ ## ✨ Features
128
+ > **The payload.**
129
+
130
+ - πŸš€ One-command launch with `npx codex-phone`
131
+ - 🌍 Cross-platform support for Linux, Windows, and Termux on Android
132
+ - πŸ–₯️ Browser-first Codex UI flow on `http://localhost:18923`
133
+ - 🌐 LAN-friendly access from other devices on the same network
134
+ - πŸ§ͺ Remote/headless-friendly setup for server-based Codex usage
135
+ - πŸ”Œ Works with reverse proxies and tunneling setups
136
+ - ⚑ No global install required for quick experimentation
137
+ - πŸŽ™οΈ Built-in hold-to-dictate voice input with transcription to composer draft
138
+ - πŸ€– Optional Telegram bot bridge: send messages to bot, forward into mapped thread, send assistant reply back to Telegram
139
+ - πŸ’Ύ Project portability: export a project as a ZIP from project or thread menus, including matching Codex chat JSONL history under `.codex-project/chats/`
140
+ - πŸ“¦ Project import: restore exported project ZIPs from the browser via `Import Project`
141
+ - πŸ” Imported chats are rewritten for the destination `CODEX_HOME`, project path, and currently selected provider/model so they can be resumed in the new environment
142
+ - βš™οΈ Project ZIP performance: exports stream ZIP bytes with response backpressure handling and skip generated/git-ignored folders; imports still buffer the selected ZIP once because the browser upload arrives as a single file
143
+
144
+ ### Telegram Bot Bridge (Optional)
145
+
146
+ Set these environment variables before starting `codex-phone`:
147
+
148
+ ```bash
149
+ export TELEGRAM_BOT_TOKEN="<your-telegram-bot-token>"
150
+ export TELEGRAM_ALLOWED_USER_IDS="<your-telegram-user-id>,<optional-second-id>"
151
+ export TELEGRAM_DEFAULT_CWD="$PWD" # optional, defaults to current working directory
152
+ npx codex-phone
153
+ ```
154
+
155
+ `TELEGRAM_ALLOWED_USER_IDS` is required for safe access. Only allowlisted Telegram user IDs can use the bridge. If no allowed user IDs are configured, incoming Telegram messages are rejected.
156
+
157
+ To find your Telegram user ID:
158
+
159
+ 1. Send a message to your bot.
160
+ 2. Run `curl "https://api.telegram.org/bot<your-telegram-bot-token>/getUpdates"`.
161
+ 3. Read `message.from.id` from the returned update payload.
162
+
163
+ Bot commands:
164
+
165
+ - `/start` show quick help and thread picker
166
+ - `/threads` list recent threads and pick one
167
+ - `/newthread` create and map a new Codex thread for this Telegram chat
168
+ - `/thread <threadId>` map current Telegram chat to an existing thread
169
+ - `/current` show currently connected thread for this chat
170
+ - `/history` show recent history for current thread
171
+ - `/status` show bridge/mapping status
172
+ - `/whoami` show your Telegram user/chat IDs and authorization state
173
+ - `/help` show command reference
174
+
175
+ Outgoing assistant messages are sent with Telegram `parse_mode=HTML` for formatting, with automatic plain-text fallback if HTML delivery fails.
176
+
177
+ ---
178
+
179
+ ## 🧩 Recent Product Features (from main commits)
180
+ > **Not just launch. Actual UX upgrades.**
181
+
182
+ - πŸ—‚οΈ Searchable project picker in new-thread flow
183
+ - βž• "Create Project" button next to "Select folder" with browser prompt
184
+ - πŸ“Œ New projects get pinned to top automatically
185
+ - 🧠 Smart default new-project name suggestion via server-side free-directory scan (`New Project (N)`)
186
+ - πŸ”„ Project order persisted globally to workspace roots state
187
+ - 🧡 Optimistic in-progress threads preserved during refresh/poll cycles
188
+ - πŸ“± Mobile drawer sidebar in desktop layout (teleported overlay + swipe-friendly structure)
189
+ - πŸŽ›οΈ Skills Hub mobile-friendly spacing/toolbar layout improvements
190
+ - πŸͺŸ Skill detail modal tuned for mobile sheet-style behavior
191
+ - πŸ§ͺ Skills Hub event typing fix for `SkillCard` select emit compatibility
192
+ - πŸŽ™οΈ Voice dictation flow in composer (`hold to dictate` -> transcribe -> append text)
193
+
194
+ ---
195
+
196
+ ## 🌍 What Can You Do With This?
197
+
198
+ | πŸ”₯ Use Case | πŸ’₯ What You Get |
199
+ |---|---|
200
+ | πŸ’» Linux workstation | Run Codex UI in browser without depending on desktop shell |
201
+ | πŸͺŸ Windows machine | Launch web UI and access from Chrome/Edge quickly |
202
+ | πŸ“± Termux on Android | Start service in Termux and control from mobile browser |
203
+ | πŸ§ͺ Remote dev box | Keep Codex process on server, view UI from client device |
204
+ | 🌐 LAN sharing | Open UI from another device on same network |
205
+ | 🧰 Headless workflows | Keep terminal + browser split for productivity |
206
+ | πŸ”Œ Custom routing | Put behind reverse proxy/tunnel if needed |
207
+ | ⚑ Fast experiments | `npx` run without full global setup |
208
+
209
+ ---
210
+
211
+ ## πŸ–ΌοΈ Screenshots
212
+
213
+ ### Skills Hub
214
+ ![Skills Hub](docs/screenshots/skills-hub.png)
215
+
216
+ ### Chat
217
+ ![Chat](docs/screenshots/chat.png)
218
+
219
+ ### Mobile UI
220
+ ![Skills Hub Mobile](docs/screenshots/skills-hub-mobile.png)
221
+ ![Chat Mobile](docs/screenshots/chat-mobile.png)
222
+
223
+ ---
224
+
225
+ ## πŸ—οΈ Architecture
226
+
227
+ ```text
228
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
229
+ β”‚ Browser (Desktop/Mobile) β”‚
230
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
231
+ β”‚ HTTP/WebSocket
232
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
233
+ β”‚ codex-phone β”‚
234
+ β”‚ (Express + Vue UI bridge) β”‚
235
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
236
+ β”‚ RPC/Bridge calls
237
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
238
+ β”‚ Codex App Server β”‚
239
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
240
+ ```
241
+
242
+ ---
243
+
244
+ ## 🎯 Requirements
245
+ - βœ… Node.js `18+`
246
+ - βœ… Codex app-server environment available
247
+ - βœ… Browser access to host/port
248
+ - βœ… Microphone permission (only for voice dictation)
249
+
250
+ ---
251
+
252
+ ## πŸ› Troubleshooting
253
+
254
+ | ❌ Problem | βœ… Fix |
255
+ |---|---|
256
+ | Port already in use | Run on a free port or stop old process |
257
+ | `npx` fails | Update npm/node, then retry |
258
+ | Termux install fails | `pkg update && pkg upgrade` then reinstall `nodejs` |
259
+ | Can’t open from other device | Check firewall, bind address, and LAN routing |
260
+
261
+ ---
262
+
263
+ ## 🀝 Contributing
264
+ Issues and PRs are welcome.
265
+ Bring bug reports, platform notes, and setup improvements.
266
+
267
+ ---
268
+
269
+ ## ⭐ Star This Repo
270
+ If you believe Codex UI should be accessible from **any machine, any OS, any screen**, star this project and share it. ⭐
271
+
272
+ <div align="center">
273
+ Built for speed, portability, and a little bit of chaos 😏
274
+ </div>
275
+
276
+ ---
277
+
278
+ Forked from [pavel-voronin/codex-web-local](https://github.com/pavel-voronin/codex-web-local) by Pavel Voronin.
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-b9022be2],[data-v-b9022be2]:before,[data-v-b9022be2]:after,[data-v-b9022be2]::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-leading:initial}}}.automations-panel[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 3);padding-inline:calc(var(--spacing,.25rem) * 2);padding-bottom:calc(var(--spacing,.25rem) * 3);flex-direction:column;flex:1;display:flex}@media(min-width:40rem){.automations-panel[data-v-b9022be2]{padding-inline:calc(var(--spacing,.25rem) * 6);padding-bottom:calc(var(--spacing,.25rem) * 6)}}.automations-toolbar[data-v-b9022be2]{justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));padding-bottom:calc(var(--spacing,.25rem) * 3);flex-shrink:0;display:flex}.automations-summary[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 2);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));flex-wrap:wrap;display:flex}.automations-summary span[data-v-b9022be2]{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1);border-radius:3.40282e38px}.automations-actions[data-v-b9022be2]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);flex-shrink:0;display:flex}.automations-refresh[data-v-b9022be2],.automations-create[data-v-b9022be2]{height:calc(var(--spacing,.25rem) * 8);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 3);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-700,oklch(37% .013 285.805));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-radius:3.40282e38px;flex-shrink:0}@media(hover:hover){:is(.automations-refresh[data-v-b9022be2],.automations-create[data-v-b9022be2]):hover{background-color:var(--color-zinc-50,oklch(98.5% 0 0))}}:is(.automations-refresh[data-v-b9022be2],.automations-create[data-v-b9022be2]):disabled{opacity:.6}.automations-error[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-rose-50,oklch(96.9% .015 12.422));padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-rose-700,oklch(51.4% .222 16.935))}.automations-layout[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 3);flex:1;grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:64rem){.automations-layout[data-v-b9022be2]{grid-template-columns:minmax(0,1fr) minmax(320px,420px)}}.automations-list[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);overflow-y:auto}.automation-row[data-v-b9022be2]{align-items:center;gap:calc(var(--spacing,.25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375));width:100%;padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 3);text-align:left;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));grid-template-columns:auto minmax(0,1fr) auto auto;display:grid}.automation-row[data-v-b9022be2]:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.automation-row[data-v-b9022be2]:hover{background-color:var(--color-zinc-50,oklch(98.5% 0 0))}}.automation-row.is-selected[data-v-b9022be2]{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375))}.automation-row-icon[data-v-b9022be2],.automation-detail-icon[data-v-b9022be2]{height:calc(var(--spacing,.25rem) * 8);width:calc(var(--spacing,.25rem) * 8);background-color:var(--color-emerald-100,oklch(95% .052 163.051));color:var(--color-emerald-700,oklch(50.8% .118 165.612));border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.automation-row-icon[data-status=PAUSED][data-v-b9022be2],.automation-detail-icon[data-status=PAUSED][data-v-b9022be2]{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}:is(.automation-row-icon[data-v-b9022be2] svg,.automation-detail-icon[data-v-b9022be2] svg){height:calc(var(--spacing,.25rem) * 4);width:calc(var(--spacing,.25rem) * 4)}.automation-row-main[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * .5);flex-direction:column;display:flex}.automation-row-title[data-v-b9022be2]{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-950,oklch(14.1% .005 285.823));overflow:hidden}.automation-row-meta[data-v-b9022be2]{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-500,oklch(55.2% .016 285.938));overflow:hidden}.automation-row-side[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 24);align-items:flex-end;gap:calc(var(--spacing,.25rem) * .5);text-align:right;flex-direction:column;display:flex}.automation-row-status[data-v-b9022be2]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-emerald-700,oklch(50.8% .118 165.612))}.automation-row-status[data-status=PAUSED][data-v-b9022be2]{color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.automation-row-schedule[data-v-b9022be2]{max-width:calc(var(--spacing,.25rem) * 36);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-500,oklch(55.2% .016 285.938));overflow:hidden}.automation-edit-button[data-v-b9022be2],.automation-detail-edit[data-v-b9022be2]{height:calc(var(--spacing,.25rem) * 7);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 2);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-700,oklch(37% .013 285.805));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-shrink:0}@media(hover:hover){:is(.automation-edit-button[data-v-b9022be2],.automation-detail-edit[data-v-b9022be2]):hover{background-color:var(--color-zinc-50,oklch(98.5% 0 0))}}.automation-detail-edit[data-v-b9022be2]{margin-left:auto}.automation-detail[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding:calc(var(--spacing,.25rem) * 4);flex-direction:column;display:flex;overflow-y:auto}.automation-detail-heading[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}.automation-detail-title-wrap[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * .5);flex-direction:column;display:flex}.automation-detail-title-wrap h2[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-950,oklch(14.1% .005 285.823));overflow:hidden}.automation-detail-title-wrap span[data-v-b9022be2]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);--tw-tracking:.14em;letter-spacing:.14em;color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase}.automation-detail-grid[data-v-b9022be2]{gap:calc(var(--spacing,.25rem) * 2);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:40rem){.automation-detail-grid[data-v-b9022be2]{grid-template-columns:repeat(2,minmax(0,1fr))}}.automation-detail-grid div[data-v-b9022be2]{min-width:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2)}.automation-detail-grid dt[data-v-b9022be2]{--tw-font-weight:var(--font-weight-medium,500);font-size:11px;font-weight:var(--font-weight-medium,500);--tw-tracking:.12em;letter-spacing:.12em;color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase}.automation-detail-grid dd[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.automation-detail-prompt[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}.automation-detail-prompt h3[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);--tw-tracking:.14em;letter-spacing:.14em;color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase}.automation-detail-prompt p[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-leading:calc(var(--spacing,.25rem) * 6);line-height:calc(var(--spacing,.25rem) * 6);white-space:pre-wrap;color:var(--color-zinc-800,oklch(27.4% .006 286.033))}.automations-empty[data-v-b9022be2]{min-height:calc(var(--spacing,.25rem) * 72);width:100%;max-width:var(--container-xl,36rem);justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);text-align:center;color:var(--color-zinc-500,oklch(55.2% .016 285.938));flex-direction:column;flex:1;margin-inline:auto;display:flex}.automations-empty-icon[data-v-b9022be2]{height:calc(var(--spacing,.25rem) * 8);width:calc(var(--spacing,.25rem) * 8);color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.automations-empty p[data-v-b9022be2]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-800,oklch(27.4% .006 286.033))}.automations-empty span[data-v-b9022be2]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}
@@ -0,0 +1 @@
1
+ import{d as G,x as v,w as k,b as J,aj as X,ak as Z,o as l,c as m,a as e,t as u,f as S,h as B,al as b,F as tt,r as at,am as $,q as C,g as et,E as g,an as x,y as f,_ as ot}from"./index-Dp2k2aGg.js";const st={class:"automations-panel"},nt={class:"automations-toolbar"},ut={class:"automations-summary"},it={class:"automations-actions"},lt=["disabled"],rt={key:0,class:"automations-error"},dt={key:1,class:"automations-empty"},ct={key:2,class:"automations-empty"},mt={key:3,class:"automations-layout"},pt={class:"automations-list","aria-label":"Automations"},vt=["onClick","onKeydown"],ft=["data-status"],yt={class:"automation-row-main"},ht={class:"automation-row-title"},_t={class:"automation-row-meta"},bt={class:"automation-row-side"},gt=["data-status"],At={class:"automation-row-schedule"},Et=["onClick"],Lt={key:0,class:"automation-detail","aria-label":"Automation details"},kt={class:"automation-detail-heading"},Ct=["data-status"],wt={class:"automation-detail-title-wrap"},It={class:"automation-detail-grid"},jt=["title"],Rt={class:"automation-detail-prompt"},Tt=G({__name:"AutomationsPanel",props:{groups:{},projectCwdByName:{},projectDisplayNameById:{},selectedAutomationId:{}},emits:["select-automation","edit-automation","create-automation"],setup(U,{expose:F,emit:V}){const p=U,A=V,w=v({}),I=v({}),y=v(!1),h=v(""),r=v(p.selectedAutomationId??""),c=v(""),Q=f(()=>{const t=new Map;for(const a of p.groups)for(const o of a.threads)t.set(o.id,o.title);return t}),Y=f(()=>{var a,o;const t=new Map;for(const n of p.groups){const s=(a=p.projectCwdByName[n.projectName])==null?void 0:a.trim(),_=((o=p.projectDisplayNameById[n.projectName])==null?void 0:o.trim())||n.projectName;s&&t.set(s,_)}return t}),d=f(()=>{const t=[];for(const[a,o]of Object.entries(w.value)){const n=Q.value.get(a)??a;for(const s of o)t.push({rowKey:K("thread",a,s.id),automation:s,scope:"thread",scopeLabel:"Heartbeat",targetLabel:n,targetTitle:a,scheduleLabel:N(s)})}for(const[a,o]of Object.entries(I.value)){const n=Y.value.get(a)??q(a);for(const s of o)t.push({rowKey:K("project",a,s.id),automation:s,scope:"project",scopeLabel:"Project",targetLabel:n,targetTitle:a,scheduleLabel:N(s)})}return t.sort((a,o)=>{const n=a.automation.status==="ACTIVE"?0:1,s=o.automation.status==="ACTIVE"?0:1;if(n!==s)return n-s;const _=a.automation.createdAtMs??0,M=o.automation.createdAtMs??0;if(_!==M)return M-_;const P=a.automation.updatedAtMs??0,D=o.automation.updatedAtMs??0;return P!==D?D-P:a.automation.name.localeCompare(o.automation.name)})}),z=f(()=>d.value.filter(t=>t.automation.status==="ACTIVE").length),H=f(()=>d.value.filter(t=>t.automation.status==="PAUSED").length),i=f(()=>d.value.find(t=>t.rowKey===c.value)??d.value.find(t=>t.automation.id===r.value)??d.value[0]??null);k(()=>p.selectedAutomationId,t=>{t&&(r.value=t,c.value=T(t))}),k(r,t=>{t&&A("select-automation",t)}),k(d,t=>{if(t.length===0){r.value="",c.value="";return}if(!(c.value&&t.some(a=>a.rowKey===c.value))){if(r.value&&t.some(a=>a.automation.id===r.value)){c.value=T(r.value);return}(!r.value||!t.some(a=>a.automation.id===r.value))&&(r.value=t[0].automation.id,c.value=t[0].rowKey)}}),J(()=>{E()}),F({loadAutomations:E});async function E(){y.value=!0,h.value="";try{const[t,a]=await Promise.all([X(),Z()]);w.value=t,I.value=a}catch(t){h.value=t instanceof Error?t.message:"Failed to load automations"}finally{y.value=!1}}function j(t){return t==="PAUSED"?"Paused":"Active"}function R(t){A("edit-automation",{scope:t.scope,target:t.targetTitle,automation:t.automation})}function O(){A("create-automation")}function L(t){c.value=t.rowKey,r.value=t.automation.id}function T(t){var a;return((a=d.value.find(o=>o.automation.id===t))==null?void 0:a.rowKey)??""}function K(t,a,o){return`${t}:${a}:${o}`}function N(t){var o,n;if(t.status==="PAUSED")return"Paused";if(t.nextRunAtMs)return`Next ${W(t.nextRunAtMs)}`;const a=t.rrule.trim();if(/FREQ=MINUTELY/i.test(a)){const s=((o=/INTERVAL=(\d+)/i.exec(a))==null?void 0:o[1])??"1";return s==="1"?"Every minute":`Every ${s} minutes`}if(/FREQ=HOURLY/i.test(a)){const s=((n=/INTERVAL=(\d+)/i.exec(a))==null?void 0:n[1])??"1";return s==="1"?"Hourly":`Every ${s} hours`}return/FREQ=DAILY/i.test(a)?"Daily":/FREQ=WEEKLY/i.test(a)?"Weekly":"Custom schedule"}function W(t){return new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function q(t){return t.replace(/\/+$/,"").split("/").filter(Boolean).pop()??t}return(t,a)=>(l(),m("div",st,[e("div",nt,[e("div",ut,[e("span",null,u(d.value.length)+" total",1),e("span",null,u(z.value)+" active",1),e("span",null,u(H.value)+" paused",1)]),e("div",it,[e("button",{class:"automations-create",type:"button",title:"Create a new automation",onClick:O}," New automation "),e("button",{class:"automations-refresh",type:"button",disabled:y.value,onClick:E},u(y.value?"Refreshing...":"Refresh"),9,lt)])]),h.value?(l(),m("p",rt,u(h.value),1)):S("",!0),y.value&&d.value.length===0?(l(),m("div",dt,[B(b,{class:"automations-empty-icon"}),a[1]||(a[1]=e("p",null,"Loading automations...",-1))])):d.value.length===0?(l(),m("div",ct,[B(b,{class:"automations-empty-icon"}),a[2]||(a[2]=e("p",null,"No automations yet",-1)),a[3]||(a[3]=e("span",null,"Use a thread or project menu to add an automation.",-1))])):(l(),m("div",mt,[e("section",pt,[(l(!0),m(tt,null,at(d.value,o=>(l(),m("div",{key:o.rowKey,class:et(["automation-row",{"is-selected":c.value===o.rowKey}]),role:"button",tabindex:"0",onClick:n=>L(o),onKeydown:[$(C(n=>L(o),["prevent"]),["enter"]),$(C(n=>L(o),["prevent"]),["space"])]},[e("span",{class:"automation-row-icon","data-status":o.automation.status},[o.automation.status==="PAUSED"?(l(),g(x,{key:0})):(l(),g(b,{key:1}))],8,ft),e("span",yt,[e("span",ht,u(o.automation.name),1),e("span",_t,u(o.scopeLabel)+" β€’ "+u(o.targetLabel),1)]),e("span",bt,[e("span",{class:"automation-row-status","data-status":o.automation.status},u(j(o.automation.status)),9,gt),e("span",At,u(o.scheduleLabel),1)]),e("button",{class:"automation-edit-button",type:"button",onClick:C(n=>R(o),["stop"])}," Edit ",8,Et)],42,vt))),128))]),i.value?(l(),m("aside",Lt,[e("div",kt,[e("span",{class:"automation-detail-icon","data-status":i.value.automation.status},[i.value.automation.status==="PAUSED"?(l(),g(x,{key:0})):(l(),g(b,{key:1}))],8,Ct),e("div",wt,[e("h2",null,u(i.value.automation.name),1),e("span",null,u(i.value.scopeLabel),1)]),e("button",{class:"automation-detail-edit",type:"button",onClick:a[0]||(a[0]=o=>R(i.value))}," Edit ")]),e("dl",It,[e("div",null,[a[4]||(a[4]=e("dt",null,"Status",-1)),e("dd",null,u(j(i.value.automation.status)),1)]),e("div",null,[a[5]||(a[5]=e("dt",null,"Schedule",-1)),e("dd",null,u(i.value.scheduleLabel),1)]),e("div",null,[a[6]||(a[6]=e("dt",null,"Target",-1)),e("dd",{title:i.value.targetTitle},u(i.value.targetLabel),9,jt)]),e("div",null,[a[7]||(a[7]=e("dt",null,"ID",-1)),e("dd",null,u(i.value.automation.id),1)])]),e("section",Rt,[a[8]||(a[8]=e("h3",null,"Prompt",-1)),e("p",null,u(i.value.automation.prompt),1)])])):S("",!0)]))]))}}),Nt=ot(Tt,[["__scopeId","data-v-b9022be2"]]);export{Nt as default};
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-3e6ac02c],[data-v-3e6ac02c]:before,[data-v-3e6ac02c]:after,[data-v-3e6ac02c]::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-leading:initial}}}.skill-card[data-v-3e6ac02c]{cursor:pointer;gap:calc(var(--spacing,.25rem) * 1.5);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding:calc(var(--spacing,.25rem) * 3);text-align:left;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-direction:column;display:flex}@media(hover:hover){.skill-card[data-v-3e6ac02c]:hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.skill-card.is-disabled[data-v-3e6ac02c]{opacity:.5}.skill-card-top[data-v-3e6ac02c]{align-items:flex-start;gap:calc(var(--spacing,.25rem) * 2.5);display:flex}.skill-card-avatar[data-v-3e6ac02c]{height:calc(var(--spacing,.25rem) * 8);width:calc(var(--spacing,.25rem) * 8);background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));border-radius:3.40282e38px;flex-shrink:0}.skill-card-avatar-fallback[data-v-3e6ac02c]{height:calc(var(--spacing,.25rem) * 8);width:calc(var(--spacing,.25rem) * 8);background-color:var(--color-zinc-200,oklch(92% .004 286.32));font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase;border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.skill-card-info[data-v-3e6ac02c]{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * .5);flex-direction:column;flex:1;display:flex}.skill-card-header[data-v-3e6ac02c]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.skill-card-name[data-v-3e6ac02c]{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.skill-card-badge[data-v-3e6ac02c]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);color:var(--color-emerald-700,oklch(50.8% .118 165.612));flex-shrink:0}.skill-card-badge-disabled[data-v-3e6ac02c]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));flex-shrink:0}.skill-card-owner[data-v-3e6ac02c]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.skill-card-browse[data-v-3e6ac02c]{height:calc(var(--spacing,.25rem) * 7);width:calc(var(--spacing,.25rem) * 7);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);color:var(--color-zinc-300,oklch(87.1% .006 286.286));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex}@media(hover:hover){.skill-card-browse[data-v-3e6ac02c]:hover{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-600,oklch(44.2% .017 285.786))}}.skill-card-browse-icon[data-v-3e6ac02c]{height:calc(var(--spacing,.25rem) * 4);width:calc(var(--spacing,.25rem) * 4)}.skill-card-desc[data-v-3e6ac02c]{margin:calc(var(--spacing,.25rem) * 0);-webkit-line-clamp:2;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-500,oklch(55.2% .016 285.938));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.skill-card-meta-row[data-v-3e6ac02c]{gap:calc(var(--spacing,.25rem) * 1.5);flex-wrap:wrap;display:flex}.skill-card-meta[data-v-3e6ac02c]{color:var(--color-zinc-300,oklch(87.1% .006 286.286));font-size:10px}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-67cccea2],[data-v-67cccea2]:before,[data-v-67cccea2]:after,[data-v-67cccea2]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-border-style:solid;--tw-leading:initial}}}.sdm-overlay[data-v-67cccea2]{inset:calc(var(--spacing,.25rem) * 0);z-index:50;background-color:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed}@supports (color:color-mix(in lab,red,red)){.sdm-overlay[data-v-67cccea2]{background-color:color-mix(in oklab,var(--color-black,#000) 40%,transparent)}}@media(min-width:40rem){.sdm-overlay[data-v-67cccea2]{align-items:center}}.sdm-panel[data-v-67cccea2]{width:100%;max-height:90vh;max-width:var(--container-lg,32rem);border-top-left-radius:var(--radius-2xl,1rem);border-top-right-radius:var(--radius-2xl,1rem);background-color:var(--color-white,#fff);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;overflow:hidden}@media(min-width:40rem){.sdm-panel[data-v-67cccea2]{border-radius:var(--radius-2xl,1rem);max-height:80vh}}.sdm-header[data-v-67cccea2]{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);padding:calc(var(--spacing,.25rem) * 4);padding-bottom:calc(var(--spacing,.25rem) * 3);flex-shrink:0;display:flex}@media(min-width:40rem){.sdm-header[data-v-67cccea2]{padding:calc(var(--spacing,.25rem) * 5)}}.sdm-title-area[data-v-67cccea2]{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}.sdm-avatar[data-v-67cccea2]{height:calc(var(--spacing,.25rem) * 10);width:calc(var(--spacing,.25rem) * 10);background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));border-radius:3.40282e38px;flex-shrink:0}.sdm-title-col[data-v-67cccea2]{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * .5);flex-direction:column;display:flex}.sdm-title-row[data-v-67cccea2]{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.sdm-title[data-v-67cccea2]{margin:calc(var(--spacing,.25rem) * 0);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.sdm-badge-disabled[data-v-67cccea2]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));flex-shrink:0}.sdm-owner[data-v-67cccea2]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.sdm-close[data-v-67cccea2]{height:calc(var(--spacing,.25rem) * 7);width:calc(var(--spacing,.25rem) * 7);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);color:var(--color-zinc-400,oklch(70.5% .015 286.067));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0;flex-shrink:0;justify-content:center;align-items:center;display:flex}@media(hover:hover){.sdm-close[data-v-67cccea2]:hover{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-700,oklch(37% .013 285.805))}}.sdm-close-icon[data-v-67cccea2]{height:calc(var(--spacing,.25rem) * 4);width:calc(var(--spacing,.25rem) * 4)}.sdm-body[data-v-67cccea2]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 3);padding:calc(var(--spacing,.25rem) * 4);padding-top:calc(var(--spacing,.25rem) * 0);flex-direction:column;flex:1;display:flex;overflow-y:auto}@media(min-width:40rem){.sdm-body[data-v-67cccea2]{padding:calc(var(--spacing,.25rem) * 5)}}.sdm-desc[data-v-67cccea2]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-600,oklch(44.2% .017 285.786))}.sdm-readme-loading[data-v-67cccea2]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.sdm-readme[data-v-67cccea2]{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-top:calc(var(--spacing,.25rem) * 3);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-700,oklch(37% .013 285.805))}.sdm-readme[data-v-67cccea2] h2{margin-top:calc(var(--spacing,.25rem) * 3);margin-bottom:calc(var(--spacing,.25rem) * 1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-800,oklch(27.4% .006 286.033))}.sdm-readme[data-v-67cccea2] h3{margin-top:calc(var(--spacing,.25rem) * 2);margin-bottom:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-700,oklch(37% .013 285.805))}.sdm-readme[data-v-67cccea2] h4{margin-top:calc(var(--spacing,.25rem) * 2);margin-bottom:calc(var(--spacing,.25rem) * .5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-600,oklch(44.2% .017 285.786))}.sdm-readme[data-v-67cccea2] code{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-inline:calc(var(--spacing,.25rem) * 1);padding-block:calc(var(--spacing,.25rem) * .5);font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);border-radius:.25rem;font-size:11px}.sdm-readme[data-v-67cccea2] ul{margin:calc(var(--spacing,.25rem) * 0);padding-left:calc(var(--spacing,.25rem) * 4);list-style-type:disc}.sdm-readme[data-v-67cccea2] li{margin-bottom:calc(var(--spacing,.25rem) * .5)}.sdm-readme[data-v-67cccea2] strong{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}.sdm-link[data-v-67cccea2]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-blue-600,oklch(54.6% .245 262.881));flex-shrink:0;text-decoration-line:none}@media(hover:hover){.sdm-link[data-v-67cccea2]:hover{color:var(--color-blue-700,oklch(48.8% .243 264.376));text-decoration-line:underline}}.sdm-footer[data-v-67cccea2]{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding:calc(var(--spacing,.25rem) * 4);padding-top:calc(var(--spacing,.25rem) * 3);flex-shrink:0}@media(min-width:40rem){.sdm-footer[data-v-67cccea2]{padding:calc(var(--spacing,.25rem) * 5)}}.sdm-footer-actions[data-v-67cccea2]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.sdm-btn[data-v-67cccea2]{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-width:0}.sdm-btn[data-v-67cccea2]:disabled{cursor:not-allowed;opacity:.5}.sdm-btn-primary[data-v-67cccea2]{background-color:var(--color-zinc-900,oklch(21% .006 285.885));color:var(--color-white,#fff)}@media(hover:hover){.sdm-btn-primary[data-v-67cccea2]:hover{background-color:var(--color-black,#000)}}.sdm-btn-danger[data-v-67cccea2]{background-color:var(--color-rose-600,oklch(58.6% .253 17.585));color:var(--color-white,#fff)}@media(hover:hover){.sdm-btn-danger[data-v-67cccea2]:hover{background-color:var(--color-rose-700,oklch(51.4% .222 16.935))}}.sdm-btn-secondary[data-v-67cccea2]{background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-700,oklch(37% .013 285.805))}@media(hover:hover){.sdm-btn-secondary[data-v-67cccea2]:hover{background-color:var(--color-zinc-200,oklch(92% .004 286.32))}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-7453de4b],[data-v-7453de4b]:before,[data-v-7453de4b]:after,[data-v-7453de4b]::backdrop{--tw-font-weight:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}.skills-hub[data-v-7453de4b]{width:100%;height:100%;max-width:var(--container-4xl,56rem);gap:calc(var(--spacing,.25rem) * 3);padding:calc(var(--spacing,.25rem) * 3);flex-direction:column;margin-inline:auto;display:flex;overflow-y:auto}@media(min-width:40rem){.skills-hub[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 4);padding:calc(var(--spacing,.25rem) * 6)}}.skills-hub-header[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 1);flex-direction:column;display:flex}.skills-hub-title[data-v-7453de4b]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-900,oklch(21% .006 285.885))}@media(min-width:40rem){.skills-hub-title[data-v-7453de4b]{font-size:var(--text-2xl,1.5rem);line-height:var(--tw-leading,var(--text-2xl--line-height,calc(2 / 1.5)))}}.skills-hub-subtitle[data-v-7453de4b]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.skills-hub-sort[data-v-7453de4b]{cursor:pointer;border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 2.5);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-600,oklch(44.2% .017 285.786));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-shrink:0}@media(hover:hover){.skills-hub-sort[data-v-7453de4b]:hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));background-color:var(--color-zinc-50,oklch(98.5% 0 0))}}.skills-sync-panel[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.skills-sync-header[data-v-7453de4b]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-700,oklch(37% .013 285.805));flex-wrap:wrap;display:flex}.skills-sync-badge[data-v-7453de4b]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * .5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)))}.skills-sync-badge-link[data-v-7453de4b]{color:var(--color-zinc-700,oklch(37% .013 285.805))}@media(hover:hover){.skills-sync-badge-link[data-v-7453de4b]:hover{border-color:var(--color-zinc-400,oklch(70.5% .015 286.067));color:var(--color-zinc-900,oklch(21% .006 285.885))}}.skills-sync-device[data-v-7453de4b]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-600,oklch(44.2% .017 285.786));flex-wrap:wrap;display:flex}.skills-sync-meta[data-v-7453de4b]{align-items:center;gap:calc(var(--spacing,.25rem) * 3);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-600,oklch(44.2% .017 285.786));flex-wrap:wrap;display:flex}.skills-sync-error[data-v-7453de4b]{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-rose-50,oklch(96.9% .015 12.422));padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-rose-700,oklch(51.4% .222 16.935));display:flex}.skills-sync-actions[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);flex-wrap:wrap;display:flex}.skills-search-panel[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.skills-search-header[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}@media(min-width:40rem){.skills-search-header[data-v-7453de4b]{flex-direction:row;justify-content:space-between;align-items:flex-start}}.skills-search-copy[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * .5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-700,oklch(37% .013 285.805));flex-direction:column;display:flex}.skills-search-copy span[data-v-7453de4b]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.skills-directory-link[data-v-7453de4b]{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-700,oklch(37% .013 285.805));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}@media(hover:hover){.skills-directory-link[data-v-7453de4b]:hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));background-color:var(--color-white,#fff);color:var(--color-zinc-900,oklch(21% .006 285.885))}}.skills-search-form[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}@media(min-width:40rem){.skills-search-form[data-v-7453de4b]{flex-direction:row}}.skills-search-input[data-v-7453de4b]{min-width:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-800,oklch(27.4% .006 286.033));flex:1}.skills-search-input[data-v-7453de4b]::placeholder{color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.skills-search-input[data-v-7453de4b]{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none}.skills-search-input[data-v-7453de4b]:focus{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));background-color:var(--color-white,#fff)}.skills-hub-toast[data-v-7453de4b]{border-radius:var(--radius-lg,.5rem);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.skills-hub-toast-success[data-v-7453de4b]{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));color:var(--color-emerald-700,oklch(50.8% .118 165.612))}.skills-hub-toast-error[data-v-7453de4b]{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-rose-50,oklch(96.9% .015 12.422));color:var(--color-rose-700,oklch(51.4% .222 16.935))}.skills-hub-section[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}.skills-hub-section-toggle[data-v-7453de4b]{cursor:pointer;align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-600,oklch(44.2% .017 285.786));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0;display:flex}@media(hover:hover){.skills-hub-section-toggle[data-v-7453de4b]:hover{color:var(--color-zinc-900,oklch(21% .006 285.885))}}.skills-hub-section-title[data-v-7453de4b]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.skills-hub-section-chevron[data-v-7453de4b]{height:calc(var(--spacing,.25rem) * 3.5);width:calc(var(--spacing,.25rem) * 3.5);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.skills-hub-section-chevron.is-open[data-v-7453de4b]{rotate:90deg}.skills-hub-grid[data-v-7453de4b]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:40rem){.skills-hub-grid[data-v-7453de4b]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.skills-hub-grid[data-v-7453de4b]{grid-template-columns:repeat(3,minmax(0,1fr))}}.skills-hub-loading[data-v-7453de4b]{padding-block:calc(var(--spacing,.25rem) * 8);text-align:center;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.skills-hub-error[data-v-7453de4b]{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-rose-50,oklch(96.9% .015 12.422));padding:calc(var(--spacing,.25rem) * 4);text-align:left;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-rose-600,oklch(58.6% .253 17.585));display:flex}.skills-error-feedback[data-v-7453de4b]{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 2.5);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-rose-700,oklch(51.4% .222 16.935));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-radius:3.40282e38px;flex-shrink:0}@media(hover:hover){.skills-error-feedback[data-v-7453de4b]:hover{background-color:var(--color-rose-100,oklch(94.1% .03 12.58))}}.skills-error-feedback[data-v-7453de4b]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-rose-300,oklch(81% .117 11.638));--tw-outline-style:none;outline-style:none}.skills-hub-empty[data-v-7453de4b]{padding-block:calc(var(--spacing,.25rem) * 8);text-align:center;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-8c3d8127],[data-v-8c3d8127]:before,[data-v-8c3d8127]:after,[data-v-8c3d8127]::backdrop{--tw-font-weight:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-leading:initial}}}.directory-hub[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);width:100%;height:100%;padding:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex;overflow-y:auto}@media(min-width:40rem){.directory-hub[data-v-8c3d8127]{padding:calc(var(--spacing,.25rem) * 6)}}.directory-header[data-v-8c3d8127]{width:100%;max-width:var(--container-5xl,64rem);justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);margin-inline:auto;display:flex}.directory-header-actions[data-v-8c3d8127]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.directory-title[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-900,oklch(21% .006 285.885))}@media(min-width:40rem){.directory-title[data-v-8c3d8127]{font-size:var(--text-2xl,1.5rem);line-height:var(--tw-leading,var(--text-2xl--line-height,calc(2 / 1.5)))}}.directory-subtitle[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);margin-top:calc(var(--spacing,.25rem) * 1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-refresh[data-v-8c3d8127],.directory-action[data-v-8c3d8127],.directory-action-link[data-v-8c3d8127],.directory-modal-close[data-v-8c3d8127]{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-600,oklch(44.2% .017 285.786));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-shrink:0;text-decoration-line:none}@media(hover:hover){:is(.directory-refresh[data-v-8c3d8127],.directory-action[data-v-8c3d8127],.directory-action-link[data-v-8c3d8127],.directory-modal-close[data-v-8c3d8127]):hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));background-color:var(--color-zinc-50,oklch(98.5% 0 0))}}:is(.directory-refresh[data-v-8c3d8127],.directory-action[data-v-8c3d8127],.directory-action-link[data-v-8c3d8127],.directory-modal-close[data-v-8c3d8127]):disabled{cursor:not-allowed;opacity:.5}.directory-action.primary[data-v-8c3d8127]{border-color:var(--color-zinc-900,oklch(21% .006 285.885));background-color:var(--color-zinc-900,oklch(21% .006 285.885));color:var(--color-white,#fff)}@media(hover:hover){.directory-action.primary[data-v-8c3d8127]:hover{background-color:var(--color-black,#000)}}.directory-action.danger[data-v-8c3d8127]{border-color:var(--color-rose-600,oklch(58.6% .253 17.585));background-color:var(--color-rose-600,oklch(58.6% .253 17.585));color:var(--color-white,#fff)}@media(hover:hover){.directory-action.danger[data-v-8c3d8127]:hover{background-color:var(--color-rose-700,oklch(51.4% .222 16.935))}}.directory-tabs[data-v-8c3d8127]{width:100%;max-width:var(--container-5xl,64rem);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding:calc(var(--spacing,.25rem) * 1);grid-template-columns:repeat(4,minmax(0,1fr));margin-inline:auto;display:grid}.directory-tab[data-v-8c3d8127]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0}@media(hover:hover){.directory-tab[data-v-8c3d8127]:hover{color:var(--color-zinc-800,oklch(27.4% .006 286.033))}}.directory-tab.is-active[data-v-8c3d8127]{background-color:var(--color-white,#fff);color:var(--color-zinc-900,oklch(21% .006 285.885));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.directory-section[data-v-8c3d8127]{width:100%;max-width:var(--container-5xl,64rem);gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;margin-inline:auto;display:flex}.directory-section-group[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.skills-embedded-section[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}.skills-embedded-toggle[data-v-8c3d8127]{cursor:pointer;align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-600,oklch(44.2% .017 285.786));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0;display:flex}@media(hover:hover){.skills-embedded-toggle[data-v-8c3d8127]:hover{color:var(--color-zinc-900,oklch(21% .006 285.885))}}.skills-embedded-title[data-v-8c3d8127]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.skills-embedded-chevron[data-v-8c3d8127]{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-leading:1;transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));line-height:1;display:inline-block}.skills-embedded-chevron.is-open[data-v-8c3d8127]{rotate:90deg}.skills-embedded-body[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.mcp-skill-grid[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:48rem){.mcp-skill-grid[data-v-8c3d8127]{grid-template-columns:repeat(2,minmax(0,1fr))}}.mcp-skill-card[data-v-8c3d8127]{cursor:pointer;gap:calc(var(--spacing,.25rem) * 1.5);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);width:100%;padding:calc(var(--spacing,.25rem) * 3);text-align:left;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-direction:column;display:flex}@media(hover:hover){.mcp-skill-card[data-v-8c3d8127]:hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.mcp-skill-card-top[data-v-8c3d8127]{align-items:flex-start;gap:calc(var(--spacing,.25rem) * 2.5);display:flex}.mcp-skill-avatar-fallback[data-v-8c3d8127]{height:calc(var(--spacing,.25rem) * 8);width:calc(var(--spacing,.25rem) * 8);background-color:var(--color-zinc-200,oklch(92% .004 286.32));font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase;border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.mcp-skill-info[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * .5);flex-direction:column;flex:1;display:flex}.mcp-skill-header[data-v-8c3d8127]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.mcp-skill-name[data-v-8c3d8127]{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.mcp-skill-owner[data-v-8c3d8127]{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.mcp-skill-meta[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.mcp-skill-chevron[data-v-8c3d8127]{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-leading:1;color:var(--color-zinc-400,oklch(70.5% .015 286.067));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));line-height:1;display:inline-block}.mcp-skill-chevron.is-open[data-v-8c3d8127]{rotate:90deg}.mcp-skill-badge[data-v-8c3d8127]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);border-width:1px;flex-shrink:0}.mcp-skill-badge-ok[data-v-8c3d8127]{border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));color:var(--color-emerald-700,oklch(50.8% .118 165.612))}.mcp-skill-badge-warning[data-v-8c3d8127]{border-color:var(--color-amber-200,oklch(92.4% .12 95.746));background-color:var(--color-amber-50,oklch(98.7% .022 95.277));color:var(--color-amber-700,oklch(55.5% .163 48.998))}.mcp-skill-badge-muted[data-v-8c3d8127]{border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-section-actions[data-v-8c3d8127]{justify-content:flex-end;display:flex}.directory-toolbar[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}@media(min-width:40rem){.directory-toolbar[data-v-8c3d8127]{flex-direction:row;justify-content:space-between;align-items:center}}.directory-search[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-800,oklch(27.4% .006 286.033));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none;flex:1}.directory-search[data-v-8c3d8127]::placeholder{color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.directory-search[data-v-8c3d8127]:focus{border-color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.directory-sort-group[data-v-8c3d8127]{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding:calc(var(--spacing,.25rem) * 1);display:inline-flex}.directory-sort-button[data-v-8c3d8127]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 2.5);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-width:0}@media(hover:hover){.directory-sort-button[data-v-8c3d8127]:hover{color:var(--color-zinc-800,oklch(27.4% .006 286.033))}}.directory-sort-button.is-active[data-v-8c3d8127]{background-color:var(--color-white,#fff);color:var(--color-zinc-900,oklch(21% .006 285.885));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.directory-grid[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:48rem){.directory-grid[data-v-8c3d8127]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:80rem){.directory-grid[data-v-8c3d8127]{grid-template-columns:repeat(3,minmax(0,1fr))}}.directory-list[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.directory-card[data-v-8c3d8127]{min-height:calc(var(--spacing,.25rem) * 36);gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding:calc(var(--spacing,.25rem) * 3);text-align:left;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex-direction:column;display:flex}@media(hover:hover){.directory-card[data-v-8c3d8127]:hover{border-color:var(--color-zinc-300,oklch(87.1% .006 286.286));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}button.directory-card[data-v-8c3d8127]{cursor:pointer}.directory-card.is-disabled[data-v-8c3d8127]{opacity:.6}.directory-card-wide[data-v-8c3d8127]{min-height:calc(var(--spacing,.25rem) * 0)}.directory-card-top[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);display:flex}.directory-card-icon[data-v-8c3d8127],.directory-card-fallback[data-v-8c3d8127]{height:calc(var(--spacing,.25rem) * 10);width:calc(var(--spacing,.25rem) * 10);border-radius:var(--radius-xl,.75rem);background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));object-fit:cover;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-500,oklch(55.2% .016 285.938));text-transform:uppercase;flex-shrink:0;justify-content:center;align-items:center;display:flex}.directory-card-main[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);flex:1}.directory-card-title-row[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.directory-card-title[data-v-8c3d8127]{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.directory-card-meta[data-v-8c3d8127]{margin-top:calc(var(--spacing,.25rem) * .5);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-400,oklch(70.5% .015 286.067));display:block;overflow:hidden}.directory-card-description[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);-webkit-line-clamp:3;font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-500,oklch(55.2% .016 285.938));-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.directory-badge[data-v-8c3d8127]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);color:var(--color-emerald-700,oklch(50.8% .118 165.612));flex-shrink:0}.directory-badge.is-muted[data-v-8c3d8127]{border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-100,oklch(96.7% .001 286.375));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-chip-row[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 1.5);flex-wrap:wrap;display:flex}.directory-chip[data-v-8c3d8127]{border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-font-weight:var(--font-weight-medium,500);font-size:10px;font-weight:var(--font-weight-medium,500);color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-card-actions[data-v-8c3d8127]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);padding-top:calc(var(--spacing,.25rem) * 1);margin-top:auto;display:flex}.directory-loading[data-v-8c3d8127],.directory-empty[data-v-8c3d8127],.directory-error[data-v-8c3d8127]{border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);padding:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-empty-copy[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.directory-empty-text[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0)}.directory-error[data-v-8c3d8127],.directory-toast.is-error[data-v-8c3d8127],.directory-auth-status.is-error[data-v-8c3d8127]{border-color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:var(--color-rose-50,oklch(96.9% .015 12.422));color:var(--color-rose-700,oklch(51.4% .222 16.935))}.directory-toast[data-v-8c3d8127]{width:100%;max-width:var(--container-5xl,64rem);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-emerald-700,oklch(50.8% .118 165.612));margin-inline:auto}.directory-card-toggle[data-v-8c3d8127]{justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 3);border-style:var(--tw-border-style);width:100%;padding:calc(var(--spacing,.25rem) * 0);text-align:left;background-color:#0000;border-width:0;display:flex}.directory-mcp-detail[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375));padding-top:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.directory-mini-heading[data-v-8c3d8127],.directory-detail-heading[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-700,oklch(37% .013 285.805))}.directory-mini-list[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-modal-overlay[data-v-8c3d8127]{inset:calc(var(--spacing,.25rem) * 0);z-index:50;background-color:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed}@supports (color:color-mix(in lab,red,red)){.directory-modal-overlay[data-v-8c3d8127]{background-color:color-mix(in oklab,var(--color-black,#000) 40%,transparent)}}@media(min-width:40rem){.directory-modal-overlay[data-v-8c3d8127]{align-items:center}}.directory-modal[data-v-8c3d8127]{width:100%;max-height:90vh;max-width:var(--container-2xl,42rem);border-top-left-radius:var(--radius-2xl,1rem);border-top-right-radius:var(--radius-2xl,1rem);background-color:var(--color-white,#fff);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;overflow:hidden}@media(min-width:40rem){.directory-modal[data-v-8c3d8127]{border-radius:var(--radius-2xl,1rem);max-height:82vh}}.directory-modal-header[data-v-8c3d8127],.directory-modal-footer[data-v-8c3d8127]{justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 3);padding:calc(var(--spacing,.25rem) * 4);flex-shrink:0;display:flex}@media(min-width:40rem){.directory-modal-header[data-v-8c3d8127],.directory-modal-footer[data-v-8c3d8127]{padding:calc(var(--spacing,.25rem) * 5)}}.directory-modal-header[data-v-8c3d8127]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375))}.directory-modal-footer[data-v-8c3d8127]{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-zinc-100,oklch(96.7% .001 286.375));justify-content:flex-end}.directory-modal-title[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-900,oklch(21% .006 285.885));overflow:hidden}.directory-modal-body[data-v-8c3d8127]{min-height:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 4);padding:calc(var(--spacing,.25rem) * 4);flex-direction:column;flex:1;display:flex;overflow-y:auto}@media(min-width:40rem){.directory-modal-body[data-v-8c3d8127]{padding:calc(var(--spacing,.25rem) * 5)}}.directory-detail-description[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-600,oklch(44.2% .017 285.786))}.directory-detail-grid[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:40rem){.directory-detail-grid[data-v-8c3d8127]{grid-template-columns:repeat(2,minmax(0,1fr))}}.directory-detail-block[data-v-8c3d8127],.directory-auth-panel[data-v-8c3d8127]{border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-zinc-50,oklch(98.5% 0 0));padding:calc(var(--spacing,.25rem) * 3)}.directory-include-row[data-v-8c3d8127]{margin-top:calc(var(--spacing,.25rem) * 2);justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 3);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--color-zinc-600,oklch(44.2% .017 285.786));display:flex}.directory-auth-status[data-v-8c3d8127]{margin-left:calc(var(--spacing,.25rem) * 2);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);font-size:10px;line-height:1;font-weight:var(--font-weight-medium,500);border-width:1px;display:inline-flex}.directory-auth-status.is-ok[data-v-8c3d8127]{border-color:var(--color-emerald-200,oklch(90.5% .093 164.15));background-color:var(--color-emerald-50,oklch(97.9% .021 166.113));color:var(--color-emerald-700,oklch(50.8% .118 165.612))}.directory-auth-status.is-warning[data-v-8c3d8127]{border-color:var(--color-amber-200,oklch(92.4% .12 95.746));background-color:var(--color-amber-50,oklch(98.7% .022 95.277));color:var(--color-amber-700,oklch(55.5% .163 48.998))}.directory-auth-status.is-muted[data-v-8c3d8127]{border-color:var(--color-zinc-200,oklch(92% .004 286.32));background-color:var(--color-white,#fff);color:var(--color-zinc-500,oklch(55.2% .016 285.938))}.directory-include-row button[data-v-8c3d8127]{border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-blue-600,oklch(54.6% .245 262.881));background-color:#0000;border-width:0}@media(hover:hover){.directory-include-row button[data-v-8c3d8127]:hover{text-decoration-line:underline}}.directory-screenshots[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:40rem){.directory-screenshots[data-v-8c3d8127]{grid-template-columns:repeat(2,minmax(0,1fr))}}.directory-screenshots img[data-v-8c3d8127]{max-height:calc(var(--spacing,.25rem) * 56);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-zinc-200,oklch(92% .004 286.32));object-fit:cover;width:100%}.composio-status-card[data-v-8c3d8127]{min-height:calc(var(--spacing,.25rem) * 0)}.composio-preview[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column;display:flex}.composio-preview-hero[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius-xl,.75rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-sky-200,oklch(90.1% .058 230.902));background-color:var(--color-sky-50,oklch(97.7% .013 236.62));padding:calc(var(--spacing,.25rem) * 4);flex-direction:column;display:flex;overflow:hidden}@media(min-width:40rem){.composio-preview-hero[data-v-8c3d8127]{flex-direction:row;justify-content:space-between;align-items:center}}.composio-preview-copy[data-v-8c3d8127]{min-width:calc(var(--spacing,.25rem) * 0);align-items:flex-start;gap:calc(var(--spacing,.25rem) * 3);display:flex}.composio-preview-kicker[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-sky-700,oklch(50% .134 242.749));text-transform:uppercase}.composio-preview-title[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);margin-top:calc(var(--spacing,.25rem) * 1);max-width:var(--container-2xl,42rem);font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)));--tw-leading:var(--leading-snug,1.375);line-height:var(--leading-snug,1.375);--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-zinc-950,oklch(14.1% .005 285.823))}.composio-preview-text[data-v-8c3d8127]{margin:calc(var(--spacing,.25rem) * 0);margin-top:calc(var(--spacing,.25rem) * 2);max-width:var(--container-2xl,42rem);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625);color:var(--color-zinc-600,oklch(44.2% .017 285.786))}.composio-preview-actions[data-v-8c3d8127]{align-items:center;gap:calc(var(--spacing,.25rem) * 2);flex-wrap:wrap;flex-shrink:0;display:flex}.composio-preview-grid[data-v-8c3d8127]{gap:calc(var(--spacing,.25rem) * 3);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media(min-width:48rem){.composio-preview-grid[data-v-8c3d8127]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:80rem){.composio-preview-grid[data-v-8c3d8127]{grid-template-columns:repeat(3,minmax(0,1fr))}}.composio-preview-card[data-v-8c3d8127]{border-color:var(--color-sky-100,oklch(95.1% .026 236.824));background-color:var(--color-white,#fff)}.composio-fallback[data-v-8c3d8127]{background-color:var(--color-sky-100,oklch(95.1% .026 236.824));color:var(--color-sky-700,oklch(50% .134 242.749))}:is(:root.dark){color:var(--color-zinc-100,oklch(96.7% .001 286.375))}:is(:root.dark){color:var(--color-zinc-400,oklch(70.5% .015 286.067))}:is(:root.dark){color:var(--color-zinc-300,oklch(87.1% .006 286.286))}@media(hover:hover){:is(:root.dark):hover{color:var(--color-zinc-100,oklch(96.7% .001 286.375))}}:root.dark{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-900,oklch(21% .006 285.885))}@media(hover:hover){:root.dark{border-color:var(--color-zinc-600,oklch(44.2% .017 285.786))}}.dark{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-900,oklch(21% .006 285.885))}@media(hover:hover){.dark{border-color:var(--color-zinc-600,oklch(44.2% .017 285.786))}}:root.dark{background-color:var(--color-zinc-700,oklch(37% .013 285.805));color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.dark{background-color:var(--color-zinc-700,oklch(37% .013 285.805));color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.dark{color:var(--color-zinc-100,oklch(96.7% .001 286.375))}.dark{color:var(--color-zinc-400,oklch(70.5% .015 286.067))}:root.dark{color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.dark{color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.dark{color:var(--color-zinc-500,oklch(55.2% .016 285.938))}@media(prefers-color-scheme:dark){.mcp-skill-card[data-v-8c3d8127]{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-900,oklch(21% .006 285.885))}@media(hover:hover){.mcp-skill-card[data-v-8c3d8127]:hover{border-color:var(--color-zinc-600,oklch(44.2% .017 285.786))}}.mcp-skill-avatar-fallback[data-v-8c3d8127]{background-color:var(--color-zinc-700,oklch(37% .013 285.805));color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.mcp-skill-name[data-v-8c3d8127]{color:var(--color-zinc-100,oklch(96.7% .001 286.375))}.mcp-skill-owner[data-v-8c3d8127]{color:var(--color-zinc-400,oklch(70.5% .015 286.067))}.mcp-skill-meta[data-v-8c3d8127]{color:var(--color-zinc-300,oklch(87.1% .006 286.286))}.mcp-skill-chevron[data-v-8c3d8127]{color:var(--color-zinc-500,oklch(55.2% .016 285.938))}}:is(:root.dark){border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-900,oklch(21% .006 285.885))}:root.dark{color:var(--color-zinc-500,oklch(55.2% .016 285.938))}:root.dark{border-color:var(--color-zinc-500,oklch(55.2% .016 285.938))}:root.dark{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-800,oklch(27.4% .006 286.033));color:var(--color-zinc-100,oklch(96.7% .001 286.375))}:root.dark{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-950,oklch(14.1% .005 285.823))}:root.dark{border-color:var(--color-zinc-700,oklch(37% .013 285.805));background-color:var(--color-zinc-900,oklch(21% .006 285.885));color:var(--color-zinc-400,oklch(70.5% .015 286.067))}:root.dark{border-color:#024a70b3}@supports (color:color-mix(in lab,red,red)){:root.dark{border-color:color-mix(in oklab,var(--color-sky-900,oklch(39.1% .09 240.876)) 70%,transparent)}}:root.dark{background-color:#052f4a66}@supports (color:color-mix(in lab,red,red)){:root.dark{background-color:color-mix(in oklab,var(--color-sky-950,oklch(29.3% .066 243.157)) 40%,transparent)}}:root.dark{border-color:#024a7099}@supports (color:color-mix(in lab,red,red)){:root.dark{border-color:color-mix(in oklab,var(--color-sky-900,oklch(39.1% .09 240.876)) 60%,transparent)}}:root.dark{background-color:var(--color-zinc-900,oklch(21% .006 285.885))}:root.dark{color:var(--color-sky-300,oklch(82.8% .111 230.318))}:root.dark{color:var(--color-zinc-100,oklch(96.7% .001 286.375))}:root.dark{color:var(--color-zinc-400,oklch(70.5% .015 286.067))}:root.dark{border-color:#8b083699}@supports (color:color-mix(in lab,red,red)){:root.dark{border-color:color-mix(in oklab,var(--color-rose-900,oklch(41% .159 10.272)) 60%,transparent)}}:root.dark{background-color:#4d021899}@supports (color:color-mix(in lab,red,red)){:root.dark{background-color:color-mix(in oklab,var(--color-rose-950,oklch(27.1% .105 12.094)) 60%,transparent)}}:root.dark{color:var(--color-rose-300,oklch(81% .117 11.638))}:root.dark{background-color:var(--color-sky-950,oklch(29.3% .066 243.157));color:var(--color-sky-300,oklch(82.8% .111 230.318))}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-leading{syntax:"*";inherits:false}