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.
- package/LICENSE +11 -0
- package/README.md +278 -0
- package/dist/assets/AutomationsPanel-CVRRdwJX.css +1 -0
- package/dist/assets/AutomationsPanel-uscQHN1e.js +1 -0
- package/dist/assets/DirectoryHub-C8N1e8Jl.css +1 -0
- package/dist/assets/DirectoryHub-DPAFmuRH.js +2 -0
- package/dist/assets/ReviewPane-BZOe7axm.js +1 -0
- package/dist/assets/ReviewPane-CoYYQ3xu.css +1 -0
- package/dist/assets/ThreadConversation-BTpe8eca.js +39 -0
- package/dist/assets/ThreadConversation-DruQC3Ap.css +1 -0
- package/dist/assets/ThreadTerminalPanel-BTLjAaIQ.js +38 -0
- package/dist/assets/ThreadTerminalPanel-V1YtpglL.css +32 -0
- package/dist/assets/common-BeuopZEI.js +5 -0
- package/dist/assets/index-BzkJYDSJ.css +1 -0
- package/dist/assets/index-Dp2k2aGg.js +73 -0
- package/dist/assets/index.esm-CXKcZNKa.js +376 -0
- package/dist/assets/index.esm-ChJ56zLV.js +1651 -0
- package/dist/assets/index.esm-rglDf0Dn.js +16 -0
- package/dist/icons/apple-touch-icon.png +0 -0
- package/dist/icons/codexui-icon.svg +52 -0
- package/dist/icons/maskable-512x512.png +0 -0
- package/dist/icons/pwa-192x192.png +0 -0
- package/dist/icons/pwa-512x512.png +0 -0
- package/dist/icons/pwa-icon.svg +38 -0
- package/dist/icons/pwa-maskable.svg +36 -0
- package/dist/index.html +21 -0
- package/dist/manifest.webmanifest +36 -0
- package/dist/sw.js +92 -0
- package/dist-cli/index.js +15263 -0
- package/dist-cli/index.js.map +1 -0
- package/package.json +93 -0
- package/scripts/dev-random-home.cjs +21 -0
- package/scripts/dev.cjs +62 -0
- 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
|
+
[](https://www.npmjs.com/package/codex-phone)
|
|
6
|
+
[](#-quick-start)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](./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
|
+

|
|
215
|
+
|
|
216
|
+
### Chat
|
|
217
|
+

|
|
218
|
+
|
|
219
|
+
### Mobile UI
|
|
220
|
+

|
|
221
|
+

|
|
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}
|