heyio 0.21.2 → 0.21.4

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.
@@ -24,14 +24,22 @@ let releasesCache = null;
24
24
  function loadReleases() {
25
25
  if (releasesCache)
26
26
  return releasesCache;
27
- try {
28
- const raw = readFileSync(path.join(__dirname, "../releases.json"), "utf-8");
29
- releasesCache = JSON.parse(raw);
30
- return releasesCache;
31
- }
32
- catch {
33
- return [];
27
+ // Check both dev (src/api/ → src/) and production (dist/api/ → src/) paths
28
+ const candidates = [
29
+ path.join(__dirname, "../releases.json"), // dist/api/ → dist/releases.json
30
+ path.join(__dirname, "../../src/releases.json"), // dist/api/ → src/releases.json
31
+ ];
32
+ for (const candidate of candidates) {
33
+ try {
34
+ if (!existsSync(candidate))
35
+ continue;
36
+ const raw = readFileSync(candidate, "utf-8");
37
+ releasesCache = JSON.parse(raw);
38
+ return releasesCache;
39
+ }
40
+ catch { /* try next */ }
34
41
  }
42
+ return [];
35
43
  }
36
44
  let messageHandler;
37
45
  const sseConnections = new Set();
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "heyio",
3
- "version": "0.21.2",
3
+ "version": "0.21.4",
4
4
  "description": "IO — a personal AI assistant built on the GitHub Copilot SDK",
5
5
  "bin": {
6
6
  "io": "dist/index.js"
7
7
  },
8
8
  "files": [
9
9
  "dist/**/*.js",
10
+ "src/releases.json",
10
11
  "web-dist/**/*",
11
12
  "README.md"
12
13
  ],
@@ -0,0 +1,72 @@
1
+ [
2
+ {
3
+ "tag": "v0.21.3",
4
+ "name": "v0.21.3",
5
+ "body": "## What's Changed\n* fix(web): defer AppNav API calls until auth is initialized by @michaeljolley in https://github.com/michaeljolley/io/pull/196\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.2...v0.21.3\n\n## What's Changed\n* fix(web): defer AppNav API calls until auth is initialized by @michaeljolley in https://github.com/michaeljolley/io/pull/196\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.2...v0.21.3",
6
+ "published_at": "2026-05-16T03:33:38Z",
7
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.21.3"
8
+ },
9
+ {
10
+ "tag": "v0.21.2",
11
+ "name": "v0.21.2",
12
+ "body": "## What's Changed\n* fix(web): guard onAuthStateChange against spurious null sessions by @michaeljolley in https://github.com/michaeljolley/io/pull/194\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.1...v0.21.2\n\n## What's Changed\n* fix(web): guard onAuthStateChange against spurious null sessions by @michaeljolley in https://github.com/michaeljolley/io/pull/194\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.1...v0.21.2",
13
+ "published_at": "2026-05-16T03:16:52Z",
14
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.21.2"
15
+ },
16
+ {
17
+ "tag": "v0.21.1",
18
+ "name": "v0.21.1",
19
+ "body": "## What's Changed\n* fix(web): avoid getSession() side-effect that wiped cached session (#191) by @michaeljolley in https://github.com/michaeljolley/io/pull/192\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.0...v0.21.1\n\n## What's Changed\n* fix(web): avoid getSession() side-effect that wiped cached session (#191) by @michaeljolley in https://github.com/michaeljolley/io/pull/192\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.21.0...v0.21.1",
20
+ "published_at": "2026-05-16T02:27:01Z",
21
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.21.1"
22
+ },
23
+ {
24
+ "tag": "v0.21.0",
25
+ "name": "v0.21.0",
26
+ "body": "## What's Changed\n* feat: bulk feed actions — select, mark-read, delete (#185) by @michaeljolley in https://github.com/michaeljolley/io/pull/186\n* fix(web): resilient token retrieval prevents sporadic auth failures (#188) by @michaeljolley in https://github.com/michaeljolley/io/pull/189\n* feat: in-app release notes with what's new badge (#187) by @michaeljolley in https://github.com/michaeljolley/io/pull/190\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.20.0...v0.21.0",
27
+ "published_at": "2026-05-16T02:03:49Z",
28
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.21.0"
29
+ },
30
+ {
31
+ "tag": "v0.20.0",
32
+ "name": "v0.20.0",
33
+ "body": "## What's Changed\n* feat: unified feed merging inbox + notifications by @michaeljolley in https://github.com/michaeljolley/io/pull/184\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.19.0...v0.20.0",
34
+ "published_at": "2026-05-15T18:09:18Z",
35
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.20.0"
36
+ },
37
+ {
38
+ "tag": "v0.19.0",
39
+ "name": "v0.19.0",
40
+ "body": "## What's Changed\n* feat(web): auto-scroll to bottom when opening Chat tab (#180) by @michaeljolley in https://github.com/michaeljolley/io/pull/182\n* feat(web): smooth-scroll to bottom of chat (#181) by @michaeljolley in https://github.com/michaeljolley/io/pull/183\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.18.0...v0.19.0",
41
+ "published_at": "2026-05-15T17:09:31Z",
42
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.19.0"
43
+ },
44
+ {
45
+ "tag": "v0.18.0",
46
+ "name": "v0.18.0",
47
+ "body": "## What's Changed\n* feat(web): render markdown in activity detail description and result (#166) by @michaeljolley in https://github.com/michaeljolley/io/pull/172\n* feat(web): add syntax highlighting to markdown code blocks (#170) by @michaeljolley in https://github.com/michaeljolley/io/pull/173\n* docs: update testing documentation for accuracy (#167) by @michaeljolley in https://github.com/michaeljolley/io/pull/174\n* feat: require JWT auth on all API endpoints when Supabase is enabled (#162) by @michaeljolley in https://github.com/michaeljolley/io/pull/175\n* feat(web): replace UI icons with Fluent design icons (#168) by @michaeljolley in https://github.com/michaeljolley/io/pull/176\n* feat(web): add subtle background gradients for depth and polish (#169) by @michaeljolley in https://github.com/michaeljolley/io/pull/177\n* feat(web): make web app mobile responsive (#171) by @michaeljolley in https://github.com/michaeljolley/io/pull/178\n* fix(web): use bound paths prop to avoid duplicate attribute parse error by @michaeljolley in https://github.com/michaeljolley/io/pull/179\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.17.2...v0.18.0",
48
+ "published_at": "2026-05-15T14:38:14Z",
49
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.18.0"
50
+ },
51
+ {
52
+ "tag": "v0.17.2",
53
+ "name": "v0.17.2",
54
+ "body": "## What's Changed\n* fix: resolve 401 errors on page load and session loss on refresh by @michaeljolley in https://github.com/michaeljolley/io/pull/165\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.17.1...v0.17.2",
55
+ "published_at": "2026-05-15T03:14:17Z",
56
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.17.2"
57
+ },
58
+ {
59
+ "tag": "v0.17.1",
60
+ "name": "v0.17.1",
61
+ "body": "## What's Changed\n* fix(web): replace GitHub text with SVG icon in expanded sidebar (#158) by @michaeljolley in https://github.com/michaeljolley/io/pull/161\n* fix: resolve IO_VERSION from package.json reliably across install contexts (#163) by @michaeljolley in https://github.com/michaeljolley/io/pull/164\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.17.0...v0.17.1",
62
+ "published_at": "2026-05-15T01:52:55Z",
63
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.17.1"
64
+ },
65
+ {
66
+ "tag": "v0.17.0",
67
+ "name": "v0.17.0",
68
+ "body": "## What's Changed\n* fix: add review_pr action to GitHub tool for veto audit trail (#155) by @michaeljolley in https://github.com/michaeljolley/io/pull/159\n* fix(web): auth state not persisted across page refreshes by @michaeljolley in https://github.com/michaeljolley/io/pull/160\n\n\n**Full Changelog**: https://github.com/michaeljolley/io/compare/v0.16.0...v0.17.0",
69
+ "published_at": "2026-05-14T23:11:18Z",
70
+ "html_url": "https://github.com/michaeljolley/io/releases/tag/v0.17.0"
71
+ }
72
+ ]
@@ -7,4 +7,4 @@ pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5p
7
7
 
8
8
  Outdated base version: https://github.com/primer/github-syntax-dark
9
9
  Current colors taken from GitHub's CSS
10
- */.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.nav-sidebar[data-v-fef55011]{transition:width .25s cubic-bezier(.4,0,.2,1);overflow:visible}.nav-expanded[data-v-fef55011]{width:240px}.nav-collapsed[data-v-fef55011]{width:56px}.view-enter-active[data-v-e49ca296]{animation:viewIn-e49ca296 .2s ease-out}.view-leave-active[data-v-e49ca296]{animation:viewIn-e49ca296 .15s ease-in reverse}@keyframes viewIn-e49ca296{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes thinking-a5462ea7{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.thinking-dot[data-v-a5462ea7]{display:inline-block;width:6px;height:6px;border-radius:50%;background-color:#22d3ee;animation:thinking-a5462ea7 1.4s ease-in-out infinite}.chat-md[data-v-a5462ea7] .stream-cursor{display:inline-block;width:2px;height:1em;margin-left:2px;background-color:#22d3ee;vertical-align:text-bottom;animation:cursor-blink-a5462ea7 .8s steps(2) infinite}@keyframes cursor-blink-a5462ea7{0%{opacity:1}50%{opacity:0}}.chat-md[data-v-a5462ea7] h1,.chat-md[data-v-a5462ea7] h2,.chat-md[data-v-a5462ea7] h3,.chat-md[data-v-a5462ea7] h4{line-height:1.3}.chat-md[data-v-a5462ea7] p{margin:.15rem 0}.chat-md[data-v-a5462ea7] ul,.chat-md[data-v-a5462ea7] ol{padding-left:.5rem}.chat-md[data-v-a5462ea7] pre{font-size:.75rem;font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.chat-md[data-v-a5462ea7] code{font-family:JetBrains Mono,monospace}.chat-md[data-v-a5462ea7] table{font-size:.75rem}.chat-md[data-v-a5462ea7] a{color:#22d3ee}.chat-md[data-v-a5462ea7] a:hover{text-decoration:underline}.scroll-btn-enter-active[data-v-a5462ea7]{transition:all .2s ease-out}.scroll-btn-leave-active[data-v-a5462ea7]{transition:all .15s ease-in}.scroll-btn-enter-from[data-v-a5462ea7],.scroll-btn-leave-to[data-v-a5462ea7]{opacity:0;transform:translate(-50%,8px)}.skill-content[data-v-20b3d95d] h1,.skill-content[data-v-20b3d95d] h2,.skill-content[data-v-20b3d95d] h3,.skill-content[data-v-20b3d95d] h4{line-height:1.3}.skill-content[data-v-20b3d95d] pre{font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.skill-content[data-v-20b3d95d] code{font-family:JetBrains Mono,monospace}.skill-content[data-v-20b3d95d] a{color:#22d3ee}.wiki-content[data-v-5b6273c1] h1,.wiki-content[data-v-5b6273c1] h2,.wiki-content[data-v-5b6273c1] h3,.wiki-content[data-v-5b6273c1] h4{line-height:1.3}.wiki-content[data-v-5b6273c1] pre{font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.wiki-content[data-v-5b6273c1] code{font-family:JetBrains Mono,monospace}.wiki-content[data-v-5b6273c1] a{color:#22d3ee}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Outfit,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.-bottom-\[25\%\]{bottom:-25%}.-left-\[15\%\]{left:-15%}.-right-1\.5{right:-.375rem}.-right-3{right:-.75rem}.-right-\[15\%\]{right:-15%}.-top-1{top:-.25rem}.-top-\[30\%\]{top:-30%}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-24{bottom:6rem}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\/2{left:50%}.left-1\/3{left:33.333333%}.left-\[11px\]{left:11px}.left-\[15px\]{left:15px}.left-\[25\%\]{left:25%}.right-0{right:0}.right-1{right:.25rem}.right-1\/4{right:25%}.right-3{right:.75rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-4{top:1rem}.top-\[15\%\]{top:15%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[2px\]{height:2px}.h-\[400px\]{height:400px}.h-\[50\%\]{height:50%}.h-\[500px\]{height:500px}.h-\[55\%\]{height:55%}.h-\[70\%\]{height:70%}.h-\[9px\]{height:9px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[3px\]{width:3px}.w-\[400px\]{width:400px}.w-\[45\%\]{width:45%}.w-\[500px\]{width:500px}.w-\[55\%\]{width:55%}.w-\[65\%\]{width:65%}.w-\[9px\]{width:9px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[14px\]{min-width:14px}.min-w-\[16px\]{min-width:16px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .3s ease-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-edge>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 45 74 / var(--tw-divide-opacity, 1))}.self-end{align-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.875rem}.rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-br-md{border-bottom-right-radius:.375rem}.rounded-tl-md{border-top-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-accent{--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.border-accent\/10{border-color:#22d3ee1a}.border-accent\/15{border-color:#22d3ee26}.border-accent\/20{border-color:#22d3ee33}.border-accent\/25{border-color:#22d3ee40}.border-accent\/30{border-color:#22d3ee4d}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-amber-500\/20{border-color:#f59e0b33}.border-edge{--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1))}.border-edge-bright{--tw-border-opacity: 1;border-color:rgb(42 63 101 / var(--tw-border-opacity, 1))}.border-edge\/30{border-color:#1e2d4a4d}.border-edge\/50{border-color:#1e2d4a80}.border-edge\/70{border-color:#1e2d4ab3}.border-emerald-400{--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.border-emerald-500\/20{border-color:#10b98133}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-purple-500\/20{border-color:#a855f733}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-red-500\/10{border-color:#ef44441a}.border-red-500\/20{border-color:#ef444433}.border-red-500\/25{border-color:#ef444440}.border-transparent{border-color:transparent}.border-t-accent{--tw-border-opacity: 1;border-top-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-accent-dim\/\[0\.06\]{background-color:#0e74900f}.bg-accent\/10{background-color:#22d3ee1a}.bg-accent\/15{background-color:#22d3ee26}.bg-accent\/5{background-color:#22d3ee0d}.bg-accent\/\[0\.03\]{background-color:#22d3ee08}.bg-accent\/\[0\.04\]{background-color:#22d3ee0a}.bg-accent\/\[0\.06\]{background-color:#22d3ee0f}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-blue-900\/\[0\.06\]{background-color:#1e3a8a0f}.bg-edge{--tw-bg-opacity: 1;background-color:rgb(30 45 74 / var(--tw-bg-opacity, 1))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-indigo-950\/\[0\.08\]{background-color:#1e1b4b14}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/5{background-color:#ef44440d}.bg-surface-0{--tw-bg-opacity: 1;background-color:rgb(6 10 19 / var(--tw-bg-opacity, 1))}.bg-surface-0\/50{background-color:#060a1380}.bg-surface-0\/60{background-color:#060a1399}.bg-surface-1{--tw-bg-opacity: 1;background-color:rgb(12 18 32 / var(--tw-bg-opacity, 1))}.bg-surface-1\/50{background-color:#0c122080}.bg-surface-1\/60{background-color:#0c122099}.bg-surface-1\/70{background-color:#0c1220b3}.bg-surface-1\/80{background-color:#0c1220cc}.bg-surface-2{--tw-bg-opacity: 1;background-color:rgb(19 27 46 / var(--tw-bg-opacity, 1))}.bg-surface-2\/40{background-color:#131b2e66}.bg-surface-2\/50{background-color:#131b2e80}.bg-surface-2\/60{background-color:#131b2e99}.bg-surface-2\/70{background-color:#131b2eb3}.bg-surface-2\/90{background-color:#131b2ee6}.bg-surface-3{--tw-bg-opacity: 1;background-color:rgb(26 37 64 / var(--tw-bg-opacity, 1))}.bg-surface-3\/40{background-color:#1a254066}.bg-surface-3\/50{background-color:#1a254080}.bg-surface-3\/60{background-color:#1a254099}.bg-txt-muted\/50{background-color:#4a5f8880}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-accent\/30{--tw-gradient-from: rgb(34 211 238 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-accent\/\[0\.14\]{--tw-gradient-from: rgb(34 211 238 / .14) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-edge{--tw-gradient-from: #1e2d4a var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 45 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-accent\/\[0\.08\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .08) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.12\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .12) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.18\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .18) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.1\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .1) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-edge{--tw-gradient-to: rgb(30 45 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #1e2d4a var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-accent\/\[0\.08\]{--tw-gradient-to: rgb(34 211 238 / .08) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-16{padding-bottom:4rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[7px\]{font-size:7px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-accent\/60{color:#22d3ee99}.text-accent\/70{color:#22d3eeb3}.text-accent\/80{color:#22d3eecc}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/70{color:#f87171b3}.text-surface-0{--tw-text-opacity: 1;color:rgb(6 10 19 / var(--tw-text-opacity, 1))}.text-txt-muted{--tw-text-opacity: 1;color:rgb(74 95 136 / var(--tw-text-opacity, 1))}.text-txt-muted\/0{color:#4a5f8800}.text-txt-muted\/30{color:#4a5f884d}.text-txt-muted\/60{color:#4a5f8899}.text-txt-primary{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-txt-secondary{--tw-text-opacity: 1;color:rgb(139 157 195 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.placeholder-txt-muted::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(74 95 136 / var(--tw-placeholder-opacity, 1))}.placeholder-txt-muted::placeholder{--tw-placeholder-opacity: 1;color:rgb(74 95 136 / var(--tw-placeholder-opacity, 1))}.placeholder-txt-muted\/50::-moz-placeholder{color:#4a5f8880}.placeholder-txt-muted\/50::placeholder{color:#4a5f8880}.placeholder-txt-muted\/60::-moz-placeholder{color:#4a5f8899}.placeholder-txt-muted\/60::placeholder{color:#4a5f8899}.accent-accent{accent-color:#22d3ee}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card{--tw-shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(30, 45, 74, .5);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-glow{--tw-shadow: 0 0 20px -4px rgba(34, 211, 238, .15);--tw-shadow-colored: 0 0 20px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-glow-sm{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-accent\/40{--tw-ring-color: rgb(34 211 238 / .4)}.ring-surface-0{--tw-ring-opacity: 1;--tw-ring-color: rgb(6 10 19 / var(--tw-ring-opacity, 1))}.ring-surface-1{--tw-ring-opacity: 1;--tw-ring-color: rgb(12 18 32 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[140px\]{--tw-blur: blur(140px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[160px\]{--tw-blur: blur(160px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[180px\]{--tw-blur: blur(180px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.glass{border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1));background-color:#131b2ecc;--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glow-inner{box-shadow:inset 0 1px #22d3ee0a,inset 0 -1px #0003}html{color-scheme:dark}body{--tw-bg-opacity: 1;background-color:rgb(6 10 19 / var(--tw-bg-opacity, 1));font-family:Outfit,ui-sans-serif,system-ui,sans-serif;--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(30 45 74 / var(--tw-bg-opacity, 1));border:1px solid transparent}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity: 1;background-color:rgb(42 63 101 / var(--tw-bg-opacity, 1))}*{scrollbar-width:thin;scrollbar-color:#1e2d4a transparent}::-moz-selection{background-color:#22d3ee33;--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}::selection{background-color:#22d3ee33;--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}*:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(34 211 238 / .5);--tw-ring-offset-width: 1px;--tw-ring-offset-color: #060a13}a{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.view-enter-active{animation:viewIn .2s ease-out}@keyframes viewIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}body{background-image:radial-gradient(circle,rgba(30,45,74,.25) 1px,transparent 1px);background-size:24px 24px}.hover\:border-accent\/20:hover{border-color:#22d3ee33}.hover\:border-accent\/30:hover{border-color:#22d3ee4d}.hover\:border-accent\/35:hover{border-color:#22d3ee59}.hover\:border-accent\/40:hover{border-color:#22d3ee66}.hover\:border-accent\/60:hover{border-color:#22d3ee99}.hover\:border-edge:hover{--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1))}.hover\:border-edge-bright:hover{--tw-border-opacity: 1;border-color:rgb(42 63 101 / var(--tw-border-opacity, 1))}.hover\:border-red-500\/20:hover{border-color:#ef444433}.hover\:border-red-500\/40:hover{border-color:#ef444466}.hover\:bg-accent-glow:hover{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/10:hover{background-color:#22d3ee1a}.hover\:bg-accent\/20:hover{background-color:#22d3ee33}.hover\:bg-accent\/25:hover{background-color:#22d3ee40}.hover\:bg-accent\/5:hover{background-color:#22d3ee0d}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-500\/25:hover{background-color:#ef444440}.hover\:bg-surface-2\/40:hover{background-color:#131b2e66}.hover\:bg-surface-2\/70:hover{background-color:#131b2eb3}.hover\:bg-surface-3:hover{--tw-bg-opacity: 1;background-color:rgb(26 37 64 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-3\/40:hover{background-color:#1a254066}.hover\:bg-surface-3\/50:hover{background-color:#1a254080}.hover\:bg-surface-3\/60:hover{background-color:#1a254099}.hover\:bg-surface-3\/70:hover{background-color:#1a2540b3}.hover\:\!text-red-400:hover{--tw-text-opacity: 1 !important;color:rgb(248 113 113 / var(--tw-text-opacity, 1))!important}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.hover\:text-accent-glow:hover{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-txt-primary:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:text-txt-secondary:hover{--tw-text-opacity: 1;color:rgb(139 157 195 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-card:hover{--tw-shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(30, 45, 74, .5);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-card-hover:hover{--tw-shadow: 0 4px 16px rgba(0, 0, 0, .5), 0 0 0 1px rgba(42, 63, 101, .7);--tw-shadow-colored: 0 4px 16px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-glow:hover{--tw-shadow: 0 0 20px -4px rgba(34, 211, 238, .15);--tw-shadow-colored: 0 0 20px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-glow-sm:hover{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-accent\/40:focus{border-color:#22d3ee66}.focus\:border-accent\/50:focus{border-color:#22d3ee80}.focus\:shadow-glow-sm:focus{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-accent\/20:focus{--tw-ring-color: rgb(34 211 238 / .2)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:shadow-none:hover:disabled{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/section[open] .group-open\/section\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:-translate-x-0\.5{--tw-translate-x: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/ver:hover .group-hover\/ver\:text-accent,.group:hover .group-hover\:text-accent{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-txt-muted{--tw-text-opacity: 1;color:rgb(74 95 136 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:max-h-none{max-height:none}.md\:w-72{width:18rem}.md\:shrink-0{flex-shrink:0}.md\:flex-row{flex-direction:row}.md\:border-b-0{border-bottom-width:0px}.md\:border-r{border-right-width:1px}.md\:pb-0{padding-bottom:0}}
10
+ */.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.nav-sidebar[data-v-eafc082f]{transition:width .25s cubic-bezier(.4,0,.2,1);overflow:visible}.nav-expanded[data-v-eafc082f]{width:240px}.nav-collapsed[data-v-eafc082f]{width:56px}.view-enter-active[data-v-e49ca296]{animation:viewIn-e49ca296 .2s ease-out}.view-leave-active[data-v-e49ca296]{animation:viewIn-e49ca296 .15s ease-in reverse}@keyframes viewIn-e49ca296{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes thinking-a5462ea7{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.thinking-dot[data-v-a5462ea7]{display:inline-block;width:6px;height:6px;border-radius:50%;background-color:#22d3ee;animation:thinking-a5462ea7 1.4s ease-in-out infinite}.chat-md[data-v-a5462ea7] .stream-cursor{display:inline-block;width:2px;height:1em;margin-left:2px;background-color:#22d3ee;vertical-align:text-bottom;animation:cursor-blink-a5462ea7 .8s steps(2) infinite}@keyframes cursor-blink-a5462ea7{0%{opacity:1}50%{opacity:0}}.chat-md[data-v-a5462ea7] h1,.chat-md[data-v-a5462ea7] h2,.chat-md[data-v-a5462ea7] h3,.chat-md[data-v-a5462ea7] h4{line-height:1.3}.chat-md[data-v-a5462ea7] p{margin:.15rem 0}.chat-md[data-v-a5462ea7] ul,.chat-md[data-v-a5462ea7] ol{padding-left:.5rem}.chat-md[data-v-a5462ea7] pre{font-size:.75rem;font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.chat-md[data-v-a5462ea7] code{font-family:JetBrains Mono,monospace}.chat-md[data-v-a5462ea7] table{font-size:.75rem}.chat-md[data-v-a5462ea7] a{color:#22d3ee}.chat-md[data-v-a5462ea7] a:hover{text-decoration:underline}.scroll-btn-enter-active[data-v-a5462ea7]{transition:all .2s ease-out}.scroll-btn-leave-active[data-v-a5462ea7]{transition:all .15s ease-in}.scroll-btn-enter-from[data-v-a5462ea7],.scroll-btn-leave-to[data-v-a5462ea7]{opacity:0;transform:translate(-50%,8px)}.skill-content[data-v-20b3d95d] h1,.skill-content[data-v-20b3d95d] h2,.skill-content[data-v-20b3d95d] h3,.skill-content[data-v-20b3d95d] h4{line-height:1.3}.skill-content[data-v-20b3d95d] pre{font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.skill-content[data-v-20b3d95d] code{font-family:JetBrains Mono,monospace}.skill-content[data-v-20b3d95d] a{color:#22d3ee}.wiki-content[data-v-5b6273c1] h1,.wiki-content[data-v-5b6273c1] h2,.wiki-content[data-v-5b6273c1] h3,.wiki-content[data-v-5b6273c1] h4{line-height:1.3}.wiki-content[data-v-5b6273c1] pre{font-family:JetBrains Mono,monospace;background:#060a13;border-color:#1e2d4a;border-radius:.625rem}.wiki-content[data-v-5b6273c1] code{font-family:JetBrains Mono,monospace}.wiki-content[data-v-5b6273c1] a{color:#22d3ee}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Outfit,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.-bottom-\[25\%\]{bottom:-25%}.-left-\[15\%\]{left:-15%}.-right-1\.5{right:-.375rem}.-right-3{right:-.75rem}.-right-\[15\%\]{right:-15%}.-top-1{top:-.25rem}.-top-\[30\%\]{top:-30%}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-24{bottom:6rem}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\/2{left:50%}.left-1\/3{left:33.333333%}.left-\[11px\]{left:11px}.left-\[15px\]{left:15px}.left-\[25\%\]{left:25%}.right-0{right:0}.right-1{right:.25rem}.right-1\/4{right:25%}.right-3{right:.75rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-4{top:1rem}.top-\[15\%\]{top:15%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[2px\]{height:2px}.h-\[400px\]{height:400px}.h-\[50\%\]{height:50%}.h-\[500px\]{height:500px}.h-\[55\%\]{height:55%}.h-\[70\%\]{height:70%}.h-\[9px\]{height:9px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[3px\]{width:3px}.w-\[400px\]{width:400px}.w-\[45\%\]{width:45%}.w-\[500px\]{width:500px}.w-\[55\%\]{width:55%}.w-\[65\%\]{width:65%}.w-\[9px\]{width:9px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[14px\]{min-width:14px}.min-w-\[16px\]{min-width:16px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[85\%\]{max-width:85%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .3s ease-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-edge>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 45 74 / var(--tw-divide-opacity, 1))}.self-end{align-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.875rem}.rounded-b-full{border-bottom-right-radius:9999px;border-bottom-left-radius:9999px}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-br-md{border-bottom-right-radius:.375rem}.rounded-tl-md{border-top-left-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-accent{--tw-border-opacity: 1;border-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.border-accent\/10{border-color:#22d3ee1a}.border-accent\/15{border-color:#22d3ee26}.border-accent\/20{border-color:#22d3ee33}.border-accent\/25{border-color:#22d3ee40}.border-accent\/30{border-color:#22d3ee4d}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-amber-500\/20{border-color:#f59e0b33}.border-edge{--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1))}.border-edge-bright{--tw-border-opacity: 1;border-color:rgb(42 63 101 / var(--tw-border-opacity, 1))}.border-edge\/30{border-color:#1e2d4a4d}.border-edge\/50{border-color:#1e2d4a80}.border-edge\/70{border-color:#1e2d4ab3}.border-emerald-400{--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.border-emerald-500\/20{border-color:#10b98133}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-purple-500\/20{border-color:#a855f733}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-red-500\/10{border-color:#ef44441a}.border-red-500\/20{border-color:#ef444433}.border-red-500\/25{border-color:#ef444440}.border-transparent{border-color:transparent}.border-t-accent{--tw-border-opacity: 1;border-top-color:rgb(34 211 238 / var(--tw-border-opacity, 1))}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-accent-dim\/\[0\.06\]{background-color:#0e74900f}.bg-accent\/10{background-color:#22d3ee1a}.bg-accent\/15{background-color:#22d3ee26}.bg-accent\/5{background-color:#22d3ee0d}.bg-accent\/\[0\.03\]{background-color:#22d3ee08}.bg-accent\/\[0\.04\]{background-color:#22d3ee0a}.bg-accent\/\[0\.06\]{background-color:#22d3ee0f}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-blue-900\/\[0\.06\]{background-color:#1e3a8a0f}.bg-edge{--tw-bg-opacity: 1;background-color:rgb(30 45 74 / var(--tw-bg-opacity, 1))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-indigo-950\/\[0\.08\]{background-color:#1e1b4b14}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/5{background-color:#ef44440d}.bg-surface-0{--tw-bg-opacity: 1;background-color:rgb(6 10 19 / var(--tw-bg-opacity, 1))}.bg-surface-0\/50{background-color:#060a1380}.bg-surface-0\/60{background-color:#060a1399}.bg-surface-1{--tw-bg-opacity: 1;background-color:rgb(12 18 32 / var(--tw-bg-opacity, 1))}.bg-surface-1\/50{background-color:#0c122080}.bg-surface-1\/60{background-color:#0c122099}.bg-surface-1\/70{background-color:#0c1220b3}.bg-surface-1\/80{background-color:#0c1220cc}.bg-surface-2{--tw-bg-opacity: 1;background-color:rgb(19 27 46 / var(--tw-bg-opacity, 1))}.bg-surface-2\/40{background-color:#131b2e66}.bg-surface-2\/50{background-color:#131b2e80}.bg-surface-2\/60{background-color:#131b2e99}.bg-surface-2\/70{background-color:#131b2eb3}.bg-surface-2\/90{background-color:#131b2ee6}.bg-surface-3{--tw-bg-opacity: 1;background-color:rgb(26 37 64 / var(--tw-bg-opacity, 1))}.bg-surface-3\/40{background-color:#1a254066}.bg-surface-3\/50{background-color:#1a254080}.bg-surface-3\/60{background-color:#1a254099}.bg-txt-muted\/50{background-color:#4a5f8880}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-accent\/30{--tw-gradient-from: rgb(34 211 238 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-accent\/\[0\.14\]{--tw-gradient-from: rgb(34 211 238 / .14) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-edge{--tw-gradient-from: #1e2d4a var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 45 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-accent\/\[0\.08\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .08) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.12\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .12) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.18\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .18) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-accent\/\[0\.1\]{--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(34 211 238 / .1) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-edge{--tw-gradient-to: rgb(30 45 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #1e2d4a var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-accent\/\[0\.08\]{--tw-gradient-to: rgb(34 211 238 / .08) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-16{padding-bottom:4rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[7px\]{font-size:7px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-accent\/60{color:#22d3ee99}.text-accent\/70{color:#22d3eeb3}.text-accent\/80{color:#22d3eecc}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/70{color:#f87171b3}.text-surface-0{--tw-text-opacity: 1;color:rgb(6 10 19 / var(--tw-text-opacity, 1))}.text-txt-muted{--tw-text-opacity: 1;color:rgb(74 95 136 / var(--tw-text-opacity, 1))}.text-txt-muted\/0{color:#4a5f8800}.text-txt-muted\/30{color:#4a5f884d}.text-txt-muted\/60{color:#4a5f8899}.text-txt-primary{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-txt-secondary{--tw-text-opacity: 1;color:rgb(139 157 195 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.placeholder-txt-muted::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(74 95 136 / var(--tw-placeholder-opacity, 1))}.placeholder-txt-muted::placeholder{--tw-placeholder-opacity: 1;color:rgb(74 95 136 / var(--tw-placeholder-opacity, 1))}.placeholder-txt-muted\/50::-moz-placeholder{color:#4a5f8880}.placeholder-txt-muted\/50::placeholder{color:#4a5f8880}.placeholder-txt-muted\/60::-moz-placeholder{color:#4a5f8899}.placeholder-txt-muted\/60::placeholder{color:#4a5f8899}.accent-accent{accent-color:#22d3ee}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card{--tw-shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(30, 45, 74, .5);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-glow{--tw-shadow: 0 0 20px -4px rgba(34, 211, 238, .15);--tw-shadow-colored: 0 0 20px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-glow-sm{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-accent\/40{--tw-ring-color: rgb(34 211 238 / .4)}.ring-surface-0{--tw-ring-opacity: 1;--tw-ring-color: rgb(6 10 19 / var(--tw-ring-opacity, 1))}.ring-surface-1{--tw-ring-opacity: 1;--tw-ring-color: rgb(12 18 32 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[140px\]{--tw-blur: blur(140px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[160px\]{--tw-blur: blur(160px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[180px\]{--tw-blur: blur(180px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.glass{border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1));background-color:#131b2ecc;--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.glow-inner{box-shadow:inset 0 1px #22d3ee0a,inset 0 -1px #0003}html{color-scheme:dark}body{--tw-bg-opacity: 1;background-color:rgb(6 10 19 / var(--tw-bg-opacity, 1));font-family:Outfit,ui-sans-serif,system-ui,sans-serif;--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(30 45 74 / var(--tw-bg-opacity, 1));border:1px solid transparent}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity: 1;background-color:rgb(42 63 101 / var(--tw-bg-opacity, 1))}*{scrollbar-width:thin;scrollbar-color:#1e2d4a transparent}::-moz-selection{background-color:#22d3ee33;--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}::selection{background-color:#22d3ee33;--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}*:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(34 211 238 / .5);--tw-ring-offset-width: 1px;--tw-ring-offset-color: #060a13}a{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.view-enter-active{animation:viewIn .2s ease-out}@keyframes viewIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}body{background-image:radial-gradient(circle,rgba(30,45,74,.25) 1px,transparent 1px);background-size:24px 24px}.hover\:border-accent\/20:hover{border-color:#22d3ee33}.hover\:border-accent\/30:hover{border-color:#22d3ee4d}.hover\:border-accent\/35:hover{border-color:#22d3ee59}.hover\:border-accent\/40:hover{border-color:#22d3ee66}.hover\:border-accent\/60:hover{border-color:#22d3ee99}.hover\:border-edge:hover{--tw-border-opacity: 1;border-color:rgb(30 45 74 / var(--tw-border-opacity, 1))}.hover\:border-edge-bright:hover{--tw-border-opacity: 1;border-color:rgb(42 63 101 / var(--tw-border-opacity, 1))}.hover\:border-red-500\/20:hover{border-color:#ef444433}.hover\:border-red-500\/40:hover{border-color:#ef444466}.hover\:bg-accent-glow:hover{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/10:hover{background-color:#22d3ee1a}.hover\:bg-accent\/20:hover{background-color:#22d3ee33}.hover\:bg-accent\/25:hover{background-color:#22d3ee40}.hover\:bg-accent\/5:hover{background-color:#22d3ee0d}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-500\/25:hover{background-color:#ef444440}.hover\:bg-surface-2\/40:hover{background-color:#131b2e66}.hover\:bg-surface-2\/70:hover{background-color:#131b2eb3}.hover\:bg-surface-3:hover{--tw-bg-opacity: 1;background-color:rgb(26 37 64 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-3\/40:hover{background-color:#1a254066}.hover\:bg-surface-3\/50:hover{background-color:#1a254080}.hover\:bg-surface-3\/60:hover{background-color:#1a254099}.hover\:bg-surface-3\/70:hover{background-color:#1a2540b3}.hover\:\!text-red-400:hover{--tw-text-opacity: 1 !important;color:rgb(248 113 113 / var(--tw-text-opacity, 1))!important}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.hover\:text-accent-glow:hover{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-txt-primary:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:text-txt-secondary:hover{--tw-text-opacity: 1;color:rgb(139 157 195 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-card:hover{--tw-shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(30, 45, 74, .5);--tw-shadow-colored: 0 1px 3px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-card-hover:hover{--tw-shadow: 0 4px 16px rgba(0, 0, 0, .5), 0 0 0 1px rgba(42, 63, 101, .7);--tw-shadow-colored: 0 4px 16px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-glow:hover{--tw-shadow: 0 0 20px -4px rgba(34, 211, 238, .15);--tw-shadow-colored: 0 0 20px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-glow-sm:hover{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-accent\/40:focus{border-color:#22d3ee66}.focus\:border-accent\/50:focus{border-color:#22d3ee80}.focus\:shadow-glow-sm:focus{--tw-shadow: 0 0 10px -2px rgba(34, 211, 238, .1);--tw-shadow-colored: 0 0 10px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-accent\/20:focus{--tw-ring-color: rgb(34 211 238 / .2)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:shadow-none:hover:disabled{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/section[open] .group-open\/section\:rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:-translate-x-0\.5{--tw-translate-x: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/ver:hover .group-hover\/ver\:text-accent,.group:hover .group-hover\:text-accent{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-txt-muted{--tw-text-opacity: 1;color:rgb(74 95 136 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:max-h-none{max-height:none}.md\:w-72{width:18rem}.md\:shrink-0{flex-shrink:0}.md\:flex-row{flex-direction:row}.md\:border-b-0{border-bottom-width:0px}.md\:border-r{border-right-width:1px}.md\:pb-0{padding-bottom:0}}
@@ -81,6 +81,6 @@ https://github.com/highlightjs/highlight.js/issues/2277`),xe=M,ue=z),Y===void 0&
81
81
  `),s=[];let n=!1,r=!1,i=!1,a=[],o="",l=[];function c(){r&&(s.push("</ul>"),r=!1)}function u(){i&&(s.push(vv(l)),l=[],i=!1)}for(const d of t){if(d.startsWith("```")){if(c(),u(),!n)n=!0,o=d.slice(3).trim().split(/\s+/)[0].toLowerCase(),a=[];else{const x=a.join(`
82
82
  `);let k;try{k=o&&Ke.getLanguage(o)?Ke.highlight(x,{language:o,ignoreIllegals:!0}).value:Ke.highlightAuto(x).value}catch{k=x.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}const P=o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),N=P?`<span class="text-[10px] text-txt-muted font-mono absolute top-2 right-3 select-none">${P}</span>`:"";s.push(`<div class="relative my-2"><pre class="bg-surface-1 border border-edge rounded-xl p-3 overflow-x-auto"><code class="hljs font-mono text-xs">${k}</code></pre>${N}</div>`),n=!1,o="",a=[]}continue}if(n){a.push(d);continue}if(wd(d)){c(),i=!0,l.push(d);continue}i&&u();const h=d.match(/^####\s+(.+)/),f=d.match(/^###\s+(.+)/),g=d.match(/^##\s+(.+)/),b=d.match(/^#\s+(.+)/);if(h){c(),s.push(`<h4 class="text-sm font-semibold text-gray-200 mt-4 mb-1">${Lt(h[1])}</h4>`);continue}if(f){c(),s.push(`<h3 class="text-base font-semibold text-gray-100 mt-5 mb-2">${Lt(f[1])}</h3>`);continue}if(g){c(),s.push(`<h2 class="text-lg font-bold text-gray-100 mt-6 mb-2 pb-1 border-b border-gray-800">${Lt(g[1])}</h2>`);continue}if(b){c(),s.push(`<h1 class="text-xl font-bold text-gray-100 mt-6 mb-3">${Lt(b[1])}</h1>`);continue}if(/^---+$/.test(d.trim())){c(),s.push('<hr class="border-gray-800 my-4" />');continue}const S=d.match(/^[-*+]\s+(.+)/);if(S){r||(s.push('<ul class="list-disc list-inside my-2 space-y-1 pl-2">'),r=!0),s.push(`<li>${Lt(S[1])}</li>`);continue}const E=d.match(/^\d+\.\s+(.+)/);if(E){r||(s.push('<ol class="list-decimal list-inside my-2 space-y-1 pl-2">'),r=!0),s.push(`<li>${Lt(E[1])}</li>`);continue}if(d.trim()===""){c(),s.push('<div class="my-2"></div>');continue}c(),s.push(`<p class="my-1">${Lt(d)}</p>`)}if(n&&a.length){const d=a.join(`
83
83
  `).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");s.push(`<pre class="bg-gray-900 border border-gray-800 rounded p-3 my-2 overflow-x-auto"><code class="font-mono text-xs text-green-300">${d}</code></pre>`)}return u(),c(),s.join(`
84
- `)}const _v={key:0,class:"flex items-center gap-2.5 min-w-0"},wv={key:1,class:"w-8 h-8 rounded-lg bg-accent/10 border border-accent/20 flex items-center justify-center"},xv={class:"flex-1 py-3 overflow-y-auto overflow-x-hidden"},Ev={key:1,class:"text-[13px] font-medium truncate"},kv={class:"shrink-0"},Sv={class:"p-2.5"},Tv={class:"flex items-center gap-2 px-2 py-1.5 rounded-lg bg-surface-2/50 mb-1.5"},Av={class:"w-6 h-6 rounded-full bg-accent/10 border border-accent/20 flex items-center justify-center shrink-0"},Rv={class:"text-[10px] text-accent font-semibold"},Cv={class:"min-w-0 flex-1"},Ov={class:"text-xs text-txt-primary truncate leading-tight"},$v={class:"flex items-center justify-between px-2"},Nv={class:"flex items-center gap-1.5"},Iv={class:"text-[10px] text-txt-muted font-mono group-hover/ver:text-accent transition-colors"},Pv={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent shadow-glow-sm animate-pulse"},Lv={key:1,class:"flex items-center gap-1.5 px-2"},Mv={class:"text-[10px] text-txt-muted font-mono group-hover/ver:text-accent transition-colors"},jv={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent shadow-glow-sm animate-pulse"},Dv={key:1,class:"flex flex-col items-center gap-1.5"},Uv={key:1,class:"md:hidden fixed bottom-0 inset-x-0 z-50 flex items-stretch border-t border-edge",style:{background:"linear-gradient(180deg, rgba(8,13,22,0.93) 0%, rgba(5,8,15,0.98) 100%)","backdrop-filter":"blur(12px)","padding-bottom":"env(safe-area-inset-bottom)"},"aria-label":"Mobile navigation"},Bv={key:0,class:"absolute top-0 left-1/2 -translate-x-1/2 w-6 h-[2px] bg-accent rounded-b-full"},Hv={class:"relative"},Fv={key:0,class:"absolute -top-1 -right-1.5 min-w-[14px] h-[14px] flex items-center justify-center bg-red-500 text-white text-[7px] font-bold rounded-full px-0.5 ring-1 ring-surface-0"},Vv={class:"text-[9px] leading-tight font-medium truncate max-w-full px-0.5"},qv={class:"relative bg-surface-1 border border-edge rounded-2xl shadow-card w-full max-w-lg max-h-[80vh] flex flex-col z-10"},zv={class:"flex items-start justify-between p-5 pb-4 border-b border-edge/50 shrink-0"},Kv={key:0,class:"flex items-center gap-2 mt-1.5"},Wv={class:"text-[10px] font-mono text-txt-muted bg-surface-0/60 px-1.5 py-0.5 rounded border border-edge/50"},Gv={class:"text-[10px] text-txt-muted"},Zv={class:"text-[10px] text-txt-muted/60"},Jv={class:"overflow-y-auto flex-1 p-5"},Yv={key:0,class:"flex items-center justify-center py-8 text-txt-muted text-sm gap-3"},Xv={key:1,class:"text-txt-muted text-sm py-6 text-center"},Qv=["innerHTML"],Bl="io-last-seen-version",Hl="io-nav-collapsed",ey=pt({__name:"AppNav",setup(e){const t=Eu(),s=xu(),n=nr(),r=Q(""),i=Q(0),a=Q(!1);let o=null;const l=Q(!1),c=Q(!1),u=Q([]),d=Q(!1),h=[{to:"/chat",name:"chat",icon:'<path d="M10 2a8 8 0 1 1-3.61 15.14l-.12-.07-3.65.92a.5.5 0 0 1-.62-.45v-.08l.01-.08.92-3.64-.07-.12a7.95 7.95 0 0 1-.83-2.9l-.02-.37L2 10a8 8 0 0 1 8-8Zm0 1a7 7 0 0 0-6.1 10.42.5.5 0 0 1 .06.28l-.02.1-.75 3.01 3.02-.75a.5.5 0 0 1 .19-.01l.09.02.09.04A7 7 0 1 0 10 3Zm.5 8a.5.5 0 0 1 .09 1H7.5a.5.5 0 0 1-.09-1h3.09Zm2-3a.5.5 0 0 1 .09 1H7.5a.5.5 0 0 1-.09-1h5.09Z"/>',label:"Chat"},{to:"/feed",name:"feed",icon:'<path d="M10 2a5.92 5.92 0 0 1 5.98 5.36l.02.22V11.4l.92 2.22a1 1 0 0 1 .06.17l.01.08.01.13a1 1 0 0 1-.75.97l-.11.02L16 15h-3.5v.17a2.5 2.5 0 0 1-5 0V15H4a1 1 0 0 1-.26-.03l-.13-.04a1 1 0 0 1-.6-1.05l.02-.13.05-.13L4 11.4V7.57A5.9 5.9 0 0 1 10 2Zm1.5 13h-3v.15a1.5 1.5 0 0 0 1.36 1.34l.14.01c.78 0 1.42-.6 1.5-1.36V15ZM10 3a4.9 4.9 0 0 0-4.98 4.38L5 7.6V11.5l-.04.2L4 14h12l-.96-2.3-.04-.2V7.61A4.9 4.9 0 0 0 10 3Z"/>',label:"Feed"},{to:"/skills",name:"skills",icon:'<path d="M9 6.5a4.5 4.5 0 0 1 6.35-4.1.5.5 0 0 1 .15.8l-2.3 2.3 1.3 1.3 2.3-2.3a.5.5 0 0 1 .8.15A4.49 4.49 0 0 1 13.5 11a4.5 4.5 0 0 1-1.1-.14l-6.37 6.45a2.36 2.36 0 0 1-3.37-3.3l6.42-6.65A4.52 4.52 0 0 1 9 6.5ZM13.5 3a3.5 3.5 0 0 0-3.39 4.39.5.5 0 0 1-.12.47L3.38 14.7a1.36 1.36 0 0 0 1.94 1.9l6.57-6.66a.5.5 0 0 1 .51-.12 3.5 3.5 0 0 0 4.53-4.05l-2.08 2.07a.5.5 0 0 1-.7 0l-2-2a.5.5 0 0 1 0-.7l2.07-2.08A3.52 3.52 0 0 0 13.5 3Z"/>',label:"Skills"},{to:"/squads",name:"squads",icon:'<path d="M10 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM7.5 4.5a2.5 2.5 0 1 1 5 0 2.5 2.5 0 0 1-5 0Zm8-.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm-10 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm.6 12H5a2 2 0 0 1-2-2V9.25c0-.14.11-.25.25-.25h1.76c.04-.37.17-.7.37-1H3.25C2.56 8 2 8.56 2 9.25V13a3 3 0 0 0 3.4 2.97 4.96 4.96 0 0 1-.3-.97Zm9.5.97A3 3 0 0 0 18 13V9.25C18 8.56 17.44 8 16.75 8h-2.13c.2.3.33.63.37 1h1.76c.14 0 .25.11.25.25V13a2 2 0 0 1-2.1 2c-.07.34-.17.66-.3.97ZM7.25 8C6.56 8 6 8.56 6 9.25V14a4 4 0 0 0 8 0V9.25C14 8.56 13.44 8 12.75 8h-5.5ZM7 9.25c0-.14.11-.25.25-.25h5.5c.14 0 .25.11.25.25V14a3 3 0 1 1-6 0V9.25Z"/>',label:"Squads"},{to:"/wiki",name:"wiki",icon:'<path d="M10 16c-.46.6-1.18 1-2 1H3.5A1.5 1.5 0 0 1 2 15.5v-11C2 3.67 2.67 3 3.5 3H8c.82 0 1.54.4 2 1 .46-.6 1.18-1 2-1h4.5c.83 0 1.5.67 1.5 1.5v11c0 .83-.67 1.5-1.5 1.5H12a2.5 2.5 0 0 1-2-1ZM3 4.5v11c0 .28.22.5.5.5H8c.83 0 1.5-.67 1.5-1.5v-9C9.5 4.67 8.83 4 8 4H3.5a.5.5 0 0 0-.5.5Zm7.5 10c0 .83.67 1.5 1.5 1.5h4.5a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5H12c-.83 0-1.5.67-1.5 1.5v9Z"/>',label:"Wiki"},{to:"/schedules",name:"schedules",icon:'<path d="M7 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm4-5.5A2.5 2.5 0 0 0 14.5 3h-9A2.5 2.5 0 0 0 3 5.5v9A2.5 2.5 0 0 0 5.5 17h9a2.5 2.5 0 0 0 2.5-2.5v-9ZM4 7h12v7.5c0 .83-.67 1.5-1.5 1.5h-9A1.5 1.5 0 0 1 4 14.5V7Zm1.5-3h9c.83 0 1.5.67 1.5 1.5V6H4v-.5C4 4.67 4.67 4 5.5 4Z"/>',label:"Schedules"},{to:"/activity",name:"activity",icon:'<path d="M16.52 9c.26 0 .48-.2.48-.46V8.5A6.5 6.5 0 0 0 10.5 2h-.04a.47.47 0 0 0-.46.48V8.5c0 .28.22.5.5.5h6.02ZM11 3.02A5.5 5.5 0 0 1 15.98 8H11V3.02ZM8 9V5.1A5 5 0 0 0 9 15v1a6 6 0 0 1-.5-11.98c.28-.02.5.2.5.48V9a1 1 0 0 0 1 1h4.5c.28 0 .5.22.48.5a6 6 0 0 1-.06.5H10a2 2 0 0 1-2-2Zm9 1a1 1 0 0 0-1 1v7a1 1 0 1 0 2 0v-7a1 1 0 0 0-1-1Zm-3 2a1 1 0 0 0-1 1v5a1 1 0 1 0 2 0v-5a1 1 0 0 0-1-1Zm-4 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3Z"/>',label:"Activity"}],f=je(()=>{var v;return(((v=n.user)==null?void 0:v.email)??"").charAt(0).toUpperCase()});function g(R){return t.name===R}function b(R){try{return new Date(R).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch{return R}}async function S(){if(l.value=!0,r.value){try{localStorage.setItem(Bl,r.value)}catch{}c.value=!1}if(!(u.value.length>0)){d.value=!0;try{const R=await Ce("/api/releases");if(R.ok){const v=await R.json();u.value=v.releases??[]}}catch{}d.value=!1}}function E(){l.value=!1}function x(){a.value=!a.value;try{localStorage.setItem(Hl,String(a.value))}catch{}}async function k(){await n.signOut(),s.push("/login")}function P(){i.value=0}Ht(async()=>{try{const R=localStorage.getItem(Hl);R!==null&&(a.value=R==="true")}catch{}try{const R=await Ce("/api/status");if(R.ok){const v=await R.json();r.value=v.version??"";try{const C=localStorage.getItem(Bl);r.value&&r.value!==C&&(c.value=!0)}catch{}}}catch{}window.addEventListener("keydown",R=>{R.key==="Escape"&&E()});try{const R=await Ce("/api/feed/count");if(R.ok){const v=await R.json();i.value=v.count??0}}catch{}N()});async function N(R=0){o==null||o.close(),o=null;const v=new EventSource(await fi("/api/events"));o=v,v.onmessage=C=>{try{JSON.parse(C.data).type==="feed"&&t.name!=="feed"&&i.value++}catch{}},v.onerror=async()=>{if(v.close(),o===v&&(o=null),!(R>=3)){try{const C=await Cs();C&&await C.auth.refreshSession()}catch{}setTimeout(()=>N(R+1),2e3*(R+1))}}}return ti(()=>{o==null||o.close(),o=null}),(R,v)=>(_(),w(ke,null,[Ie(t).name!=="login"?(_(),w("nav",{key:0,class:ge(["relative z-10 hidden md:flex flex-col shrink-0 nav-sidebar border-r border-edge backdrop-blur-md",a.value?"nav-collapsed":"nav-expanded"]),style:{background:"linear-gradient(180deg, rgba(10,17,32,0.85) 0%, rgba(12,18,32,0.78) 50%, rgba(8,13,25,0.88) 100%)"}},[p("div",{class:ge(["flex items-center h-14 px-3 shrink-0",a.value?"justify-center":"justify-between"])},[a.value?(_(),w("div",wv,[...v[1]||(v[1]=[p("span",{class:"text-accent font-bold text-xs font-mono tracking-tight"},"IO",-1)])])):(_(),w("div",_v,[...v[0]||(v[0]=[er('<div class="w-8 h-8 rounded-lg bg-accent/10 border border-accent/20 flex items-center justify-center shrink-0" data-v-fef55011><span class="text-accent font-bold text-sm font-mono tracking-tight" data-v-fef55011>IO</span></div><div class="min-w-0" data-v-fef55011><p class="text-sm font-semibold text-txt-primary leading-tight tracking-tight" data-v-fef55011>IO Assistant</p><p class="text-[10px] text-txt-muted leading-tight" data-v-fef55011>Terminal · Dashboard</p></div>',2)])])),a.value?(_(),w("button",{key:3,onClick:x,class:"absolute -right-3 top-4 w-6 h-6 rounded-full bg-surface-2 border border-edge-bright shadow-card flex items-center justify-center text-txt-muted hover:text-accent hover:border-accent/30 transition-all duration-150 z-20",title:"Expand sidebar"},[be(Re,{paths:'<path d="M7.65 4.15c.2-.2.5-.2.7 0l5.49 5.46c.21.22.21.57 0 .78l-5.49 5.46a.5.5 0 0 1-.7-.7L12.8 10 7.65 4.85a.5.5 0 0 1 0-.7Z"/>',size:12})])):(_(),w("button",{key:2,onClick:x,class:"p-1.5 rounded-md text-txt-muted hover:text-txt-secondary hover:bg-surface-3/50 transition-all duration-150 shrink-0 ml-1",title:"Collapse sidebar"},[be(Re,{paths:'<path d="M12.35 15.85a.5.5 0 0 1-.7 0L6.16 10.4a.55.55 0 0 1 0-.78l5.49-5.46a.5.5 0 1 1 .7.7L7.2 10l5.16 5.15c.2.2.2.5 0 .7Z"/>',size:14})]))],2),v[8]||(v[8]=p("div",{class:"mx-3 h-px bg-gradient-to-r from-transparent via-accent/[0.12] to-transparent"},null,-1)),p("div",xv,[p("ul",{class:ge(["space-y-0.5",a.value?"px-1.5":"px-2"])},[(_(),w(ke,null,ze(h,C=>p("li",{key:C.to},[be(Ie(sa),{to:C.to,class:ge(["group flex items-center rounded-lg transition-all duration-150 relative",[a.value?"justify-center p-2":"px-2.5 py-2 gap-2.5",g(C.name)?"bg-accent/10 text-accent":"text-txt-secondary hover:text-txt-primary hover:bg-surface-3/40"]]),title:a.value?C.label:void 0,onClick:j=>C.name==="feed"?P():void 0},{default:gs(()=>[g(C.name)?(_(),w("span",{key:0,class:ge(["absolute left-0 top-1/2 -translate-y-1/2 w-[3px] rounded-r-full bg-accent shadow-glow-sm",a.value?"h-4":"h-5"])},null,2)):ee("",!0),be(Re,{paths:C.icon,size:18,class:ge(["shrink-0 transition-transform duration-150 group-hover:scale-105",a.value?"":"ml-0.5"])},null,8,["paths","class"]),a.value?ee("",!0):(_(),w("span",Ev,I(C.label),1)),C.name==="feed"&&i.value>0?(_(),w("span",{key:2,class:ge(["absolute flex items-center justify-center bg-red-500 text-white text-[9px] font-bold rounded-full min-w-[16px] h-[16px] px-0.5 ring-2 ring-surface-1",a.value?"top-0 right-0":"top-0.5 right-1"])},I(i.value>99?"99+":i.value),3)):ee("",!0)]),_:2},1032,["to","class","title","onClick"])])),64))],2)]),p("div",kv,[v[7]||(v[7]=p("div",{class:"mx-3 h-px bg-gradient-to-r from-transparent via-accent/[0.08] to-transparent"},null,-1)),p("div",Sv,[a.value?(_(),w("div",Dv,[v[6]||(v[6]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"p-1.5 rounded-md text-txt-muted hover:text-accent hover:bg-surface-3/50 transition-all duration-150",title:"GitHub"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1)),Ie(n).authEnabled&&Ie(n).user?(_(),w("button",{key:0,onClick:k,class:"p-1.5 rounded-md text-txt-muted hover:text-red-400 hover:bg-surface-3/50 transition-all duration-150",title:"Sign out"},[be(Re,{paths:'<path d="M9.16 16.87a.5.5 0 1 0 .67-.74L3.67 10.5H17.5a.5.5 0 0 0 0-1H3.67l6.16-5.63a.5.5 0 0 0-.67-.74L2.24 9.44a.75.75 0 0 0 0 1.11l6.92 6.32Z"/>',size:14})])):ee("",!0)])):(_(),w(ke,{key:0},[Ie(n).authEnabled&&Ie(n).user?(_(),w(ke,{key:0},[p("div",Tv,[p("div",Av,[p("span",Rv,I(f.value),1)]),p("div",Cv,[p("p",Ov,I(Ie(n).user.email),1)])]),p("div",$v,[p("span",Nv,[r.value?(_(),w("button",{key:0,onClick:S,class:"group/ver flex items-center gap-1 hover:opacity-80 transition-opacity",title:"What's New"},[p("span",Iv,"v"+I(r.value),1),c.value?(_(),w("span",Pv)):ee("",!0)])):ee("",!0),v[2]||(v[2]=p("span",{class:"text-[10px] text-txt-muted"},"·",-1)),v[3]||(v[3]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"text-[10px] text-txt-muted hover:text-accent transition-colors"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3 w-3",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1))]),p("button",{onClick:k,class:"text-[11px] text-txt-muted hover:text-red-400 transition-colors px-1.5 py-0.5 rounded hover:bg-surface-3/50"}," Sign out ")])],64)):(_(),w("div",Lv,[r.value?(_(),w("button",{key:0,onClick:S,class:"group/ver flex items-center gap-1 hover:opacity-80 transition-opacity",title:"What's New"},[p("span",Mv,"v"+I(r.value),1),c.value?(_(),w("span",jv)):ee("",!0)])):ee("",!0),v[4]||(v[4]=p("span",{class:"text-[10px] text-txt-muted"},"·",-1)),v[5]||(v[5]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"text-[10px] text-txt-muted hover:text-accent transition-colors"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3 w-3",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1))]))],64))])])],2)):ee("",!0),Ie(t).name!=="login"?(_(),w("nav",Uv,[(_(),w(ke,null,ze(h,C=>be(Ie(sa),{key:C.to,to:C.to,class:ge(["relative flex-1 flex flex-col items-center justify-center gap-0.5 py-2 px-1 min-w-0 transition-colors duration-150 touch-manipulation select-none",g(C.name)?"text-accent":"text-txt-muted"]),onClick:j=>C.name==="feed"?P():void 0,"aria-label":C.label},{default:gs(()=>[g(C.name)?(_(),w("span",Bv)):ee("",!0),p("span",Hv,[be(Re,{paths:C.icon,size:20},null,8,["paths"]),C.name==="feed"&&i.value>0?(_(),w("span",Fv,I(i.value>9?"9+":i.value),1)):ee("",!0)]),p("span",Vv,I(C.label),1)]),_:2},1032,["to","class","onClick","aria-label"])),64))])):ee("",!0),(_(),nn(wh,{to:"body"},[be(ii,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:gs(()=>[l.value?(_(),w("div",{key:0,class:"fixed inset-0 z-[100] flex items-center justify-center p-4 sm:p-6",onClick:yt(E,["self"])},[p("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:E}),p("div",qv,[p("div",zv,[p("div",null,[v[9]||(v[9]=p("h2",{class:"text-base font-semibold text-txt-primary"},"What's New",-1)),u.value.length>0?(_(),w("div",Kv,[p("span",Wv,I(u.value[0].tag),1),p("span",Gv,I(u.value[0].name),1),p("span",Zv,I(b(u.value[0].published_at)),1)])):ee("",!0)]),p("button",{onClick:E,class:"p-1.5 rounded-lg text-txt-muted hover:text-txt-primary hover:bg-surface-3/40 transition-all duration-150 shrink-0 ml-3 mt-0.5",title:"Close"},[be(Re,{paths:'<path d="m4.09 4.22.06-.07a.5.5 0 0 1 .63-.06l.07.06L10 9.29l5.15-5.14a.5.5 0 0 1 .63-.06l.07.06c.18.17.2.44.06.63l-.06.07L10.71 10l5.14 5.15c.18.17.2.44.06.63l-.06.07a.5.5 0 0 1-.63.06l-.07-.06L10 10.71l-5.15 5.14a.5.5 0 0 1-.63.06l-.07-.06a.5.5 0 0 1-.06-.63l.06-.07L9.29 10 4.15 4.85a.5.5 0 0 1-.06-.63l.06-.07-.06.07Z"/>',size:16})])]),p("div",Jv,[d.value?(_(),w("div",Yv,[...v[10]||(v[10]=[p("div",{class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"},null,-1),ve(" Loading release notes… ",-1)])])):u.value.length===0?(_(),w("div",Xv," No release notes found. ")):(_(),w("div",{key:2,class:"wiki-content text-sm text-txt-secondary leading-relaxed",innerHTML:Ie(Ms)(u.value[0].body)},null,8,Qv))]),v[11]||(v[11]=p("div",{class:"p-4 pt-3 border-t border-edge/50 shrink-0"},[p("a",{href:"https://github.com/michaeljolley/io/releases",target:"_blank",rel:"noopener",class:"text-xs text-accent hover:text-accent-glow transition-colors"}," View all releases on GitHub → ")],-1))])])):ee("",!0)]),_:1})]))],64))}}),rr=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},ty=rr(ey,[["__scopeId","data-v-fef55011"]]),sy={class:"flex h-screen bg-surface-0 relative overflow-hidden"},ny={class:"flex-1 overflow-auto relative z-0 pb-16 md:pb-0"},ry=pt({__name:"App",setup(e){return(t,s)=>(_(),w("div",sy,[s[1]||(s[1]=er('<div class="pointer-events-none absolute inset-0 overflow-hidden" aria-hidden="true" data-v-e49ca296><div class="absolute -top-[30%] -right-[15%] w-[65%] h-[70%] rounded-full bg-accent/[0.03] blur-[160px]" data-v-e49ca296></div><div class="absolute -bottom-[25%] -left-[15%] w-[55%] h-[55%] rounded-full bg-blue-900/[0.06] blur-[140px]" data-v-e49ca296></div><div class="absolute top-[15%] left-[25%] w-[45%] h-[50%] rounded-full bg-indigo-950/[0.08] blur-[180px]" data-v-e49ca296></div><div class="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-accent/[0.18] to-transparent" data-v-e49ca296></div><div class="absolute inset-0" style="background:radial-gradient(ellipse 85% 75% at 50% 40%, transparent 45%, rgba(3, 5, 10, 0.35) 100%);" data-v-e49ca296></div></div>',1)),be(ty),p("main",ny,[s[0]||(s[0]=p("div",{class:"pointer-events-none absolute top-0 inset-x-0 h-[2px] bg-gradient-to-r from-transparent via-accent/[0.1] to-transparent z-10","aria-hidden":"true"},null,-1)),be(Ie(wu),null,{default:gs(({Component:n})=>[be(ii,{name:"view",mode:"out-in"},{default:gs(()=>[(_(),nn(Mh(n)))]),_:2},1024)]),_:1})])]))}}),iy=rr(ry,[["__scopeId","data-v-e49ca296"]]),ay=lu("chat",()=>{const e=Q([]),t=Q(!1);function s(i){e.value.push(i)}function n(i){const a=e.value[e.value.length-1];a&&a.role==="assistant"&&(a.content+=i)}function r(i){const a=e.value[e.value.length-1];a&&a.role==="assistant"&&(a.streaming=i)}return{messages:e,isLoading:t,addMessage:s,appendToLast:n,setLastStreaming:r}}),oy={class:"flex flex-col h-full relative bg-surface-0"},ly={key:0,class:"flex flex-col items-center justify-center h-full select-none animate-fade-in"},cy={class:"flex flex-wrap justify-center gap-2 mt-8 max-w-md"},uy=["onClick"],dy={key:1,class:"max-w-3xl mx-auto space-y-5"},hy={key:0,class:"max-w-[80%] px-4 py-2.5 rounded-2xl rounded-br-md text-sm whitespace-pre-wrap bg-gradient-to-br from-accent/[0.14] to-accent/[0.08] text-txt-primary border border-accent/20 shadow-glow-sm"},fy={key:1,class:"max-w-[85%] flex gap-2.5 items-start"},py=["innerHTML"],gy={key:0,class:"flex justify-start animate-fade-in"},my={class:"shrink-0 border-t border-edge/50 backdrop-blur-md p-3 sm:p-4",style:{background:"linear-gradient(180deg, rgba(12,18,32,0.75) 0%, rgba(8,13,22,0.88) 100%)"}},by={class:"flex-1 relative group"},vy=["disabled"],yy=["disabled"],_y={class:"hidden sm:inline"},wy=["disabled"],xy='<span class="stream-cursor"></span>',Ey=pt({__name:"ChatView",setup(e){const t=ay(),s=Eu(),n=Q(""),r=Q(!1),i=Q(null),a=Q(!1),o=Q(null),l=["Check squad status","Run my schedules","Summarize recent activity","What skills are installed?"];function c(E){n.value=E,Is(()=>S())}async function u(){if(!r.value){r.value=!0;try{await Ce("/api/orchestrator/abort",{method:"POST"})}catch{}finally{r.value=!1}}}const d=je(()=>t.messages.some(E=>E.streaming));function h(){const E=i.value;E&&(a.value=E.scrollTop+E.clientHeight<E.scrollHeight-100)}function f(E=!0){Is(()=>{i.value&&i.value.scrollTo({top:i.value.scrollHeight,behavior:E?"smooth":"instant"})})}Ht(()=>{f(!1)}),es(()=>s.name,E=>{E==="chat"&&f(!1)}),es(()=>t.messages.length,()=>{a.value||f()});function g(E){E.key==="Enter"&&!E.shiftKey&&(E.preventDefault(),S())}function b(){const E=o.value;E&&(E.style.height="auto",E.style.height=Math.min(E.scrollHeight,200)+"px")}async function S(){const E=n.value.trim();if(!E||t.isLoading)return;n.value="",Is(()=>{o.value&&(o.value.style.height="auto")}),t.isLoading=!0,t.addMessage({id:crypto.randomUUID(),role:"user",content:E}),t.addMessage({id:crypto.randomUUID(),role:"assistant",content:"",streaming:!0}),f();const x=new EventSource(await fi("/api/events"));x.onmessage=k=>{try{const P=JSON.parse(k.data);P.type==="delta"?(t.appendToLast(P.text),f()):P.type==="done"&&(t.setLastStreaming(!1),t.isLoading=!1,x.close(),f())}catch{}},x.onerror=()=>{t.setLastStreaming(!1),t.isLoading=!1,x.close()};try{await Ce("/api/message",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:E})})}catch{t.appendToLast(`
84
+ `)}const _v={key:0,class:"flex items-center gap-2.5 min-w-0"},wv={key:1,class:"w-8 h-8 rounded-lg bg-accent/10 border border-accent/20 flex items-center justify-center"},xv={class:"flex-1 py-3 overflow-y-auto overflow-x-hidden"},Ev={key:1,class:"text-[13px] font-medium truncate"},kv={class:"shrink-0"},Sv={class:"p-2.5"},Tv={class:"flex items-center gap-2 px-2 py-1.5 rounded-lg bg-surface-2/50 mb-1.5"},Av={class:"w-6 h-6 rounded-full bg-accent/10 border border-accent/20 flex items-center justify-center shrink-0"},Rv={class:"text-[10px] text-accent font-semibold"},Cv={class:"min-w-0 flex-1"},Ov={class:"text-xs text-txt-primary truncate leading-tight"},$v={class:"flex items-center justify-between px-2"},Nv={class:"flex items-center gap-1.5"},Iv={class:"text-[10px] text-txt-muted font-mono group-hover/ver:text-accent transition-colors"},Pv={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent shadow-glow-sm animate-pulse"},Lv={key:1,class:"flex items-center gap-1.5 px-2"},Mv={class:"text-[10px] text-txt-muted font-mono group-hover/ver:text-accent transition-colors"},jv={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent shadow-glow-sm animate-pulse"},Dv={key:1,class:"flex flex-col items-center gap-1.5"},Uv={key:1,class:"md:hidden fixed bottom-0 inset-x-0 z-50 flex items-stretch border-t border-edge",style:{background:"linear-gradient(180deg, rgba(8,13,22,0.93) 0%, rgba(5,8,15,0.98) 100%)","backdrop-filter":"blur(12px)","padding-bottom":"env(safe-area-inset-bottom)"},"aria-label":"Mobile navigation"},Bv={key:0,class:"absolute top-0 left-1/2 -translate-x-1/2 w-6 h-[2px] bg-accent rounded-b-full"},Hv={class:"relative"},Fv={key:0,class:"absolute -top-1 -right-1.5 min-w-[14px] h-[14px] flex items-center justify-center bg-red-500 text-white text-[7px] font-bold rounded-full px-0.5 ring-1 ring-surface-0"},Vv={class:"text-[9px] leading-tight font-medium truncate max-w-full px-0.5"},qv={class:"relative bg-surface-1 border border-edge rounded-2xl shadow-card w-full max-w-lg max-h-[80vh] flex flex-col z-10"},zv={class:"flex items-start justify-between p-5 pb-4 border-b border-edge/50 shrink-0"},Kv={key:0,class:"flex items-center gap-2 mt-1.5"},Wv={class:"text-[10px] font-mono text-txt-muted bg-surface-0/60 px-1.5 py-0.5 rounded border border-edge/50"},Gv={class:"text-[10px] text-txt-muted"},Zv={class:"text-[10px] text-txt-muted/60"},Jv={class:"overflow-y-auto flex-1 p-5"},Yv={key:0,class:"flex items-center justify-center py-8 text-txt-muted text-sm gap-3"},Xv={key:1,class:"text-txt-muted text-sm py-6 text-center"},Qv=["innerHTML"],Bl="io-last-seen-version",Hl="io-nav-collapsed",ey=pt({__name:"AppNav",setup(e){const t=Eu(),s=xu(),n=nr(),r=Q(""),i=Q(0),a=Q(!1);let o=null;const l=Q(!1),c=Q(!1),u=Q([]),d=Q(!1),h=[{to:"/chat",name:"chat",icon:'<path d="M10 2a8 8 0 1 1-3.61 15.14l-.12-.07-3.65.92a.5.5 0 0 1-.62-.45v-.08l.01-.08.92-3.64-.07-.12a7.95 7.95 0 0 1-.83-2.9l-.02-.37L2 10a8 8 0 0 1 8-8Zm0 1a7 7 0 0 0-6.1 10.42.5.5 0 0 1 .06.28l-.02.1-.75 3.01 3.02-.75a.5.5 0 0 1 .19-.01l.09.02.09.04A7 7 0 1 0 10 3Zm.5 8a.5.5 0 0 1 .09 1H7.5a.5.5 0 0 1-.09-1h3.09Zm2-3a.5.5 0 0 1 .09 1H7.5a.5.5 0 0 1-.09-1h5.09Z"/>',label:"Chat"},{to:"/feed",name:"feed",icon:'<path d="M10 2a5.92 5.92 0 0 1 5.98 5.36l.02.22V11.4l.92 2.22a1 1 0 0 1 .06.17l.01.08.01.13a1 1 0 0 1-.75.97l-.11.02L16 15h-3.5v.17a2.5 2.5 0 0 1-5 0V15H4a1 1 0 0 1-.26-.03l-.13-.04a1 1 0 0 1-.6-1.05l.02-.13.05-.13L4 11.4V7.57A5.9 5.9 0 0 1 10 2Zm1.5 13h-3v.15a1.5 1.5 0 0 0 1.36 1.34l.14.01c.78 0 1.42-.6 1.5-1.36V15ZM10 3a4.9 4.9 0 0 0-4.98 4.38L5 7.6V11.5l-.04.2L4 14h12l-.96-2.3-.04-.2V7.61A4.9 4.9 0 0 0 10 3Z"/>',label:"Feed"},{to:"/skills",name:"skills",icon:'<path d="M9 6.5a4.5 4.5 0 0 1 6.35-4.1.5.5 0 0 1 .15.8l-2.3 2.3 1.3 1.3 2.3-2.3a.5.5 0 0 1 .8.15A4.49 4.49 0 0 1 13.5 11a4.5 4.5 0 0 1-1.1-.14l-6.37 6.45a2.36 2.36 0 0 1-3.37-3.3l6.42-6.65A4.52 4.52 0 0 1 9 6.5ZM13.5 3a3.5 3.5 0 0 0-3.39 4.39.5.5 0 0 1-.12.47L3.38 14.7a1.36 1.36 0 0 0 1.94 1.9l6.57-6.66a.5.5 0 0 1 .51-.12 3.5 3.5 0 0 0 4.53-4.05l-2.08 2.07a.5.5 0 0 1-.7 0l-2-2a.5.5 0 0 1 0-.7l2.07-2.08A3.52 3.52 0 0 0 13.5 3Z"/>',label:"Skills"},{to:"/squads",name:"squads",icon:'<path d="M10 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM7.5 4.5a2.5 2.5 0 1 1 5 0 2.5 2.5 0 0 1-5 0Zm8-.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm-10 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm.6 12H5a2 2 0 0 1-2-2V9.25c0-.14.11-.25.25-.25h1.76c.04-.37.17-.7.37-1H3.25C2.56 8 2 8.56 2 9.25V13a3 3 0 0 0 3.4 2.97 4.96 4.96 0 0 1-.3-.97Zm9.5.97A3 3 0 0 0 18 13V9.25C18 8.56 17.44 8 16.75 8h-2.13c.2.3.33.63.37 1h1.76c.14 0 .25.11.25.25V13a2 2 0 0 1-2.1 2c-.07.34-.17.66-.3.97ZM7.25 8C6.56 8 6 8.56 6 9.25V14a4 4 0 0 0 8 0V9.25C14 8.56 13.44 8 12.75 8h-5.5ZM7 9.25c0-.14.11-.25.25-.25h5.5c.14 0 .25.11.25.25V14a3 3 0 1 1-6 0V9.25Z"/>',label:"Squads"},{to:"/wiki",name:"wiki",icon:'<path d="M10 16c-.46.6-1.18 1-2 1H3.5A1.5 1.5 0 0 1 2 15.5v-11C2 3.67 2.67 3 3.5 3H8c.82 0 1.54.4 2 1 .46-.6 1.18-1 2-1h4.5c.83 0 1.5.67 1.5 1.5v11c0 .83-.67 1.5-1.5 1.5H12a2.5 2.5 0 0 1-2-1ZM3 4.5v11c0 .28.22.5.5.5H8c.83 0 1.5-.67 1.5-1.5v-9C9.5 4.67 8.83 4 8 4H3.5a.5.5 0 0 0-.5.5Zm7.5 10c0 .83.67 1.5 1.5 1.5h4.5a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5H12c-.83 0-1.5.67-1.5 1.5v9Z"/>',label:"Wiki"},{to:"/schedules",name:"schedules",icon:'<path d="M7 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm1 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm4-5.5A2.5 2.5 0 0 0 14.5 3h-9A2.5 2.5 0 0 0 3 5.5v9A2.5 2.5 0 0 0 5.5 17h9a2.5 2.5 0 0 0 2.5-2.5v-9ZM4 7h12v7.5c0 .83-.67 1.5-1.5 1.5h-9A1.5 1.5 0 0 1 4 14.5V7Zm1.5-3h9c.83 0 1.5.67 1.5 1.5V6H4v-.5C4 4.67 4.67 4 5.5 4Z"/>',label:"Schedules"},{to:"/activity",name:"activity",icon:'<path d="M16.52 9c.26 0 .48-.2.48-.46V8.5A6.5 6.5 0 0 0 10.5 2h-.04a.47.47 0 0 0-.46.48V8.5c0 .28.22.5.5.5h6.02ZM11 3.02A5.5 5.5 0 0 1 15.98 8H11V3.02ZM8 9V5.1A5 5 0 0 0 9 15v1a6 6 0 0 1-.5-11.98c.28-.02.5.2.5.48V9a1 1 0 0 0 1 1h4.5c.28 0 .5.22.48.5a6 6 0 0 1-.06.5H10a2 2 0 0 1-2-2Zm9 1a1 1 0 0 0-1 1v7a1 1 0 1 0 2 0v-7a1 1 0 0 0-1-1Zm-3 2a1 1 0 0 0-1 1v5a1 1 0 1 0 2 0v-5a1 1 0 0 0-1-1Zm-4 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0v-3Z"/>',label:"Activity"}],f=je(()=>{var v;return(((v=n.user)==null?void 0:v.email)??"").charAt(0).toUpperCase()});function g(R){return t.name===R}function b(R){try{return new Date(R).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch{return R}}async function S(){if(l.value=!0,r.value){try{localStorage.setItem(Bl,r.value)}catch{}c.value=!1}if(!(u.value.length>0)){d.value=!0;try{const R=await Ce("/api/releases");if(R.ok){const v=await R.json();u.value=v.releases??[]}}catch{}d.value=!1}}function E(){l.value=!1}function x(){a.value=!a.value;try{localStorage.setItem(Hl,String(a.value))}catch{}}async function k(){await n.signOut(),s.push("/login")}function P(){i.value=0}Ht(async()=>{try{const R=localStorage.getItem(Hl);R!==null&&(a.value=R==="true")}catch{}if(await n.init(),!(n.authEnabled&&!n.user)){try{const R=await Ce("/api/status");if(R.ok){const v=await R.json();r.value=v.version??"";try{const C=localStorage.getItem(Bl);r.value&&r.value!==C&&(c.value=!0)}catch{}}}catch{}window.addEventListener("keydown",R=>{R.key==="Escape"&&E()});try{const R=await Ce("/api/feed/count");if(R.ok){const v=await R.json();i.value=v.count??0}}catch{}N()}});async function N(R=0){o==null||o.close(),o=null;const v=new EventSource(await fi("/api/events"));o=v,v.onmessage=C=>{try{JSON.parse(C.data).type==="feed"&&t.name!=="feed"&&i.value++}catch{}},v.onerror=async()=>{if(v.close(),o===v&&(o=null),!(R>=3)){try{const C=await Cs();C&&await C.auth.refreshSession()}catch{}setTimeout(()=>N(R+1),2e3*(R+1))}}}return ti(()=>{o==null||o.close(),o=null}),(R,v)=>(_(),w(ke,null,[Ie(t).name!=="login"?(_(),w("nav",{key:0,class:ge(["relative z-10 hidden md:flex flex-col shrink-0 nav-sidebar border-r border-edge backdrop-blur-md",a.value?"nav-collapsed":"nav-expanded"]),style:{background:"linear-gradient(180deg, rgba(10,17,32,0.85) 0%, rgba(12,18,32,0.78) 50%, rgba(8,13,25,0.88) 100%)"}},[p("div",{class:ge(["flex items-center h-14 px-3 shrink-0",a.value?"justify-center":"justify-between"])},[a.value?(_(),w("div",wv,[...v[1]||(v[1]=[p("span",{class:"text-accent font-bold text-xs font-mono tracking-tight"},"IO",-1)])])):(_(),w("div",_v,[...v[0]||(v[0]=[er('<div class="w-8 h-8 rounded-lg bg-accent/10 border border-accent/20 flex items-center justify-center shrink-0" data-v-eafc082f><span class="text-accent font-bold text-sm font-mono tracking-tight" data-v-eafc082f>IO</span></div><div class="min-w-0" data-v-eafc082f><p class="text-sm font-semibold text-txt-primary leading-tight tracking-tight" data-v-eafc082f>IO Assistant</p><p class="text-[10px] text-txt-muted leading-tight" data-v-eafc082f>Terminal · Dashboard</p></div>',2)])])),a.value?(_(),w("button",{key:3,onClick:x,class:"absolute -right-3 top-4 w-6 h-6 rounded-full bg-surface-2 border border-edge-bright shadow-card flex items-center justify-center text-txt-muted hover:text-accent hover:border-accent/30 transition-all duration-150 z-20",title:"Expand sidebar"},[be(Re,{paths:'<path d="M7.65 4.15c.2-.2.5-.2.7 0l5.49 5.46c.21.22.21.57 0 .78l-5.49 5.46a.5.5 0 0 1-.7-.7L12.8 10 7.65 4.85a.5.5 0 0 1 0-.7Z"/>',size:12})])):(_(),w("button",{key:2,onClick:x,class:"p-1.5 rounded-md text-txt-muted hover:text-txt-secondary hover:bg-surface-3/50 transition-all duration-150 shrink-0 ml-1",title:"Collapse sidebar"},[be(Re,{paths:'<path d="M12.35 15.85a.5.5 0 0 1-.7 0L6.16 10.4a.55.55 0 0 1 0-.78l5.49-5.46a.5.5 0 1 1 .7.7L7.2 10l5.16 5.15c.2.2.2.5 0 .7Z"/>',size:14})]))],2),v[8]||(v[8]=p("div",{class:"mx-3 h-px bg-gradient-to-r from-transparent via-accent/[0.12] to-transparent"},null,-1)),p("div",xv,[p("ul",{class:ge(["space-y-0.5",a.value?"px-1.5":"px-2"])},[(_(),w(ke,null,ze(h,C=>p("li",{key:C.to},[be(Ie(sa),{to:C.to,class:ge(["group flex items-center rounded-lg transition-all duration-150 relative",[a.value?"justify-center p-2":"px-2.5 py-2 gap-2.5",g(C.name)?"bg-accent/10 text-accent":"text-txt-secondary hover:text-txt-primary hover:bg-surface-3/40"]]),title:a.value?C.label:void 0,onClick:j=>C.name==="feed"?P():void 0},{default:gs(()=>[g(C.name)?(_(),w("span",{key:0,class:ge(["absolute left-0 top-1/2 -translate-y-1/2 w-[3px] rounded-r-full bg-accent shadow-glow-sm",a.value?"h-4":"h-5"])},null,2)):ee("",!0),be(Re,{paths:C.icon,size:18,class:ge(["shrink-0 transition-transform duration-150 group-hover:scale-105",a.value?"":"ml-0.5"])},null,8,["paths","class"]),a.value?ee("",!0):(_(),w("span",Ev,I(C.label),1)),C.name==="feed"&&i.value>0?(_(),w("span",{key:2,class:ge(["absolute flex items-center justify-center bg-red-500 text-white text-[9px] font-bold rounded-full min-w-[16px] h-[16px] px-0.5 ring-2 ring-surface-1",a.value?"top-0 right-0":"top-0.5 right-1"])},I(i.value>99?"99+":i.value),3)):ee("",!0)]),_:2},1032,["to","class","title","onClick"])])),64))],2)]),p("div",kv,[v[7]||(v[7]=p("div",{class:"mx-3 h-px bg-gradient-to-r from-transparent via-accent/[0.08] to-transparent"},null,-1)),p("div",Sv,[a.value?(_(),w("div",Dv,[v[6]||(v[6]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"p-1.5 rounded-md text-txt-muted hover:text-accent hover:bg-surface-3/50 transition-all duration-150",title:"GitHub"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1)),Ie(n).authEnabled&&Ie(n).user?(_(),w("button",{key:0,onClick:k,class:"p-1.5 rounded-md text-txt-muted hover:text-red-400 hover:bg-surface-3/50 transition-all duration-150",title:"Sign out"},[be(Re,{paths:'<path d="M9.16 16.87a.5.5 0 1 0 .67-.74L3.67 10.5H17.5a.5.5 0 0 0 0-1H3.67l6.16-5.63a.5.5 0 0 0-.67-.74L2.24 9.44a.75.75 0 0 0 0 1.11l6.92 6.32Z"/>',size:14})])):ee("",!0)])):(_(),w(ke,{key:0},[Ie(n).authEnabled&&Ie(n).user?(_(),w(ke,{key:0},[p("div",Tv,[p("div",Av,[p("span",Rv,I(f.value),1)]),p("div",Cv,[p("p",Ov,I(Ie(n).user.email),1)])]),p("div",$v,[p("span",Nv,[r.value?(_(),w("button",{key:0,onClick:S,class:"group/ver flex items-center gap-1 hover:opacity-80 transition-opacity",title:"What's New"},[p("span",Iv,"v"+I(r.value),1),c.value?(_(),w("span",Pv)):ee("",!0)])):ee("",!0),v[2]||(v[2]=p("span",{class:"text-[10px] text-txt-muted"},"·",-1)),v[3]||(v[3]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"text-[10px] text-txt-muted hover:text-accent transition-colors"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3 w-3",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1))]),p("button",{onClick:k,class:"text-[11px] text-txt-muted hover:text-red-400 transition-colors px-1.5 py-0.5 rounded hover:bg-surface-3/50"}," Sign out ")])],64)):(_(),w("div",Lv,[r.value?(_(),w("button",{key:0,onClick:S,class:"group/ver flex items-center gap-1 hover:opacity-80 transition-opacity",title:"What's New"},[p("span",Mv,"v"+I(r.value),1),c.value?(_(),w("span",jv)):ee("",!0)])):ee("",!0),v[4]||(v[4]=p("span",{class:"text-[10px] text-txt-muted"},"·",-1)),v[5]||(v[5]=p("a",{href:"https://github.com/michaeljolley/io",target:"_blank",rel:"noopener",class:"text-[10px] text-txt-muted hover:text-accent transition-colors"},[p("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-3 w-3",viewBox:"0 0 24 24",fill:"currentColor"},[p("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.418 2.865 8.166 6.839 9.489.5.092.682-.217.682-.482 0-.237-.009-.868-.013-1.703-2.782.604-3.369-1.342-3.369-1.342-.454-1.154-1.11-1.462-1.11-1.462-.908-.62.069-.608.069-.608 1.003.07 1.531 1.03 1.531 1.03.892 1.529 2.341 1.087 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.11-4.555-4.943 0-1.091.39-1.984 1.029-2.683-.103-.253-.446-1.27.098-2.647 0 0 .84-.269 2.75 1.025A9.578 9.578 0 0112 6.836a9.59 9.59 0 012.504.337c1.909-1.294 2.747-1.025 2.747-1.025.546 1.377.203 2.394.1 2.647.64.699 1.028 1.592 1.028 2.683 0 3.842-2.339 4.687-4.566 4.935.359.309.678.919.678 1.852 0 1.336-.012 2.415-.012 2.741 0 .267.18.578.688.48C19.138 20.163 22 16.418 22 12c0-5.523-4.477-10-10-10z"})])],-1))]))],64))])])],2)):ee("",!0),Ie(t).name!=="login"?(_(),w("nav",Uv,[(_(),w(ke,null,ze(h,C=>be(Ie(sa),{key:C.to,to:C.to,class:ge(["relative flex-1 flex flex-col items-center justify-center gap-0.5 py-2 px-1 min-w-0 transition-colors duration-150 touch-manipulation select-none",g(C.name)?"text-accent":"text-txt-muted"]),onClick:j=>C.name==="feed"?P():void 0,"aria-label":C.label},{default:gs(()=>[g(C.name)?(_(),w("span",Bv)):ee("",!0),p("span",Hv,[be(Re,{paths:C.icon,size:20},null,8,["paths"]),C.name==="feed"&&i.value>0?(_(),w("span",Fv,I(i.value>9?"9+":i.value),1)):ee("",!0)]),p("span",Vv,I(C.label),1)]),_:2},1032,["to","class","onClick","aria-label"])),64))])):ee("",!0),(_(),nn(wh,{to:"body"},[be(ii,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:gs(()=>[l.value?(_(),w("div",{key:0,class:"fixed inset-0 z-[100] flex items-center justify-center p-4 sm:p-6",onClick:yt(E,["self"])},[p("div",{class:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:E}),p("div",qv,[p("div",zv,[p("div",null,[v[9]||(v[9]=p("h2",{class:"text-base font-semibold text-txt-primary"},"What's New",-1)),u.value.length>0?(_(),w("div",Kv,[p("span",Wv,I(u.value[0].tag),1),p("span",Gv,I(u.value[0].name),1),p("span",Zv,I(b(u.value[0].published_at)),1)])):ee("",!0)]),p("button",{onClick:E,class:"p-1.5 rounded-lg text-txt-muted hover:text-txt-primary hover:bg-surface-3/40 transition-all duration-150 shrink-0 ml-3 mt-0.5",title:"Close"},[be(Re,{paths:'<path d="m4.09 4.22.06-.07a.5.5 0 0 1 .63-.06l.07.06L10 9.29l5.15-5.14a.5.5 0 0 1 .63-.06l.07.06c.18.17.2.44.06.63l-.06.07L10.71 10l5.14 5.15c.18.17.2.44.06.63l-.06.07a.5.5 0 0 1-.63.06l-.07-.06L10 10.71l-5.15 5.14a.5.5 0 0 1-.63.06l-.07-.06a.5.5 0 0 1-.06-.63l.06-.07L9.29 10 4.15 4.85a.5.5 0 0 1-.06-.63l.06-.07-.06.07Z"/>',size:16})])]),p("div",Jv,[d.value?(_(),w("div",Yv,[...v[10]||(v[10]=[p("div",{class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"},null,-1),ve(" Loading release notes… ",-1)])])):u.value.length===0?(_(),w("div",Xv," No release notes found. ")):(_(),w("div",{key:2,class:"wiki-content text-sm text-txt-secondary leading-relaxed",innerHTML:Ie(Ms)(u.value[0].body)},null,8,Qv))]),v[11]||(v[11]=p("div",{class:"p-4 pt-3 border-t border-edge/50 shrink-0"},[p("a",{href:"https://github.com/michaeljolley/io/releases",target:"_blank",rel:"noopener",class:"text-xs text-accent hover:text-accent-glow transition-colors"}," View all releases on GitHub → ")],-1))])])):ee("",!0)]),_:1})]))],64))}}),rr=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},ty=rr(ey,[["__scopeId","data-v-eafc082f"]]),sy={class:"flex h-screen bg-surface-0 relative overflow-hidden"},ny={class:"flex-1 overflow-auto relative z-0 pb-16 md:pb-0"},ry=pt({__name:"App",setup(e){return(t,s)=>(_(),w("div",sy,[s[1]||(s[1]=er('<div class="pointer-events-none absolute inset-0 overflow-hidden" aria-hidden="true" data-v-e49ca296><div class="absolute -top-[30%] -right-[15%] w-[65%] h-[70%] rounded-full bg-accent/[0.03] blur-[160px]" data-v-e49ca296></div><div class="absolute -bottom-[25%] -left-[15%] w-[55%] h-[55%] rounded-full bg-blue-900/[0.06] blur-[140px]" data-v-e49ca296></div><div class="absolute top-[15%] left-[25%] w-[45%] h-[50%] rounded-full bg-indigo-950/[0.08] blur-[180px]" data-v-e49ca296></div><div class="absolute top-0 inset-x-0 h-px bg-gradient-to-r from-transparent via-accent/[0.18] to-transparent" data-v-e49ca296></div><div class="absolute inset-0" style="background:radial-gradient(ellipse 85% 75% at 50% 40%, transparent 45%, rgba(3, 5, 10, 0.35) 100%);" data-v-e49ca296></div></div>',1)),be(ty),p("main",ny,[s[0]||(s[0]=p("div",{class:"pointer-events-none absolute top-0 inset-x-0 h-[2px] bg-gradient-to-r from-transparent via-accent/[0.1] to-transparent z-10","aria-hidden":"true"},null,-1)),be(Ie(wu),null,{default:gs(({Component:n})=>[be(ii,{name:"view",mode:"out-in"},{default:gs(()=>[(_(),nn(Mh(n)))]),_:2},1024)]),_:1})])]))}}),iy=rr(ry,[["__scopeId","data-v-e49ca296"]]),ay=lu("chat",()=>{const e=Q([]),t=Q(!1);function s(i){e.value.push(i)}function n(i){const a=e.value[e.value.length-1];a&&a.role==="assistant"&&(a.content+=i)}function r(i){const a=e.value[e.value.length-1];a&&a.role==="assistant"&&(a.streaming=i)}return{messages:e,isLoading:t,addMessage:s,appendToLast:n,setLastStreaming:r}}),oy={class:"flex flex-col h-full relative bg-surface-0"},ly={key:0,class:"flex flex-col items-center justify-center h-full select-none animate-fade-in"},cy={class:"flex flex-wrap justify-center gap-2 mt-8 max-w-md"},uy=["onClick"],dy={key:1,class:"max-w-3xl mx-auto space-y-5"},hy={key:0,class:"max-w-[80%] px-4 py-2.5 rounded-2xl rounded-br-md text-sm whitespace-pre-wrap bg-gradient-to-br from-accent/[0.14] to-accent/[0.08] text-txt-primary border border-accent/20 shadow-glow-sm"},fy={key:1,class:"max-w-[85%] flex gap-2.5 items-start"},py=["innerHTML"],gy={key:0,class:"flex justify-start animate-fade-in"},my={class:"shrink-0 border-t border-edge/50 backdrop-blur-md p-3 sm:p-4",style:{background:"linear-gradient(180deg, rgba(12,18,32,0.75) 0%, rgba(8,13,22,0.88) 100%)"}},by={class:"flex-1 relative group"},vy=["disabled"],yy=["disabled"],_y={class:"hidden sm:inline"},wy=["disabled"],xy='<span class="stream-cursor"></span>',Ey=pt({__name:"ChatView",setup(e){const t=ay(),s=Eu(),n=Q(""),r=Q(!1),i=Q(null),a=Q(!1),o=Q(null),l=["Check squad status","Run my schedules","Summarize recent activity","What skills are installed?"];function c(E){n.value=E,Is(()=>S())}async function u(){if(!r.value){r.value=!0;try{await Ce("/api/orchestrator/abort",{method:"POST"})}catch{}finally{r.value=!1}}}const d=je(()=>t.messages.some(E=>E.streaming));function h(){const E=i.value;E&&(a.value=E.scrollTop+E.clientHeight<E.scrollHeight-100)}function f(E=!0){Is(()=>{i.value&&i.value.scrollTo({top:i.value.scrollHeight,behavior:E?"smooth":"instant"})})}Ht(()=>{f(!1)}),es(()=>s.name,E=>{E==="chat"&&f(!1)}),es(()=>t.messages.length,()=>{a.value||f()});function g(E){E.key==="Enter"&&!E.shiftKey&&(E.preventDefault(),S())}function b(){const E=o.value;E&&(E.style.height="auto",E.style.height=Math.min(E.scrollHeight,200)+"px")}async function S(){const E=n.value.trim();if(!E||t.isLoading)return;n.value="",Is(()=>{o.value&&(o.value.style.height="auto")}),t.isLoading=!0,t.addMessage({id:crypto.randomUUID(),role:"user",content:E}),t.addMessage({id:crypto.randomUUID(),role:"assistant",content:"",streaming:!0}),f();const x=new EventSource(await fi("/api/events"));x.onmessage=k=>{try{const P=JSON.parse(k.data);P.type==="delta"?(t.appendToLast(P.text),f()):P.type==="done"&&(t.setLastStreaming(!1),t.isLoading=!1,x.close(),f())}catch{}},x.onerror=()=>{t.setLastStreaming(!1),t.isLoading=!1,x.close()};try{await Ce("/api/message",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:E})})}catch{t.appendToLast(`
85
85
 
86
86
  [Error: failed to reach IO]`),t.setLastStreaming(!1),t.isLoading=!1,x.close()}}return(E,x)=>(_(),w("div",oy,[p("div",{ref_key:"messagesEl",ref:i,class:"flex-1 overflow-y-auto px-3 py-4 sm:px-4 sm:py-6",onScroll:h},[Ie(t).messages.length===0?(_(),w("div",ly,[x[1]||(x[1]=p("div",{class:"w-16 h-16 rounded-2xl bg-accent/10 border border-accent/20 flex items-center justify-center mb-5 shadow-glow"},[p("span",{class:"text-accent font-bold text-2xl font-mono tracking-tighter"},"IO")],-1)),x[2]||(x[2]=p("p",{class:"text-txt-secondary text-sm font-medium mb-1"},"What can I help you build?",-1)),x[3]||(x[3]=p("p",{class:"text-txt-muted text-xs"},"Send a message to start a conversation",-1)),p("div",cy,[(_(),w(ke,null,ze(l,k=>p("button",{key:k,onClick:P=>c(k),class:"px-3 py-1.5 text-xs text-txt-secondary bg-surface-2/60 border border-edge rounded-full hover:border-accent/30 hover:text-accent hover:bg-accent/5 transition-all duration-200"},I(k),9,uy)),64))])])):(_(),w("div",dy,[(_(!0),w(ke,null,ze(Ie(t).messages,k=>(_(),w("div",{key:k.id,class:ge(["flex animate-fade-in",k.role==="user"?"justify-end":"justify-start"])},[k.role==="user"?(_(),w("div",hy,I(k.content),1)):(_(),w("div",fy,[x[4]||(x[4]=p("div",{class:"shrink-0 w-6 h-6 rounded-lg bg-surface-3/60 border border-edge flex items-center justify-center mt-0.5"},[p("span",{class:"text-accent text-[10px] font-bold font-mono"},"IO")],-1)),p("div",{class:"chat-md min-w-0 px-4 py-2.5 rounded-2xl rounded-tl-md text-sm bg-surface-2/70 text-txt-primary border border-edge",innerHTML:Ie(Ms)(k.content)+(k.streaming?xy:"")},null,8,py)]))],2))),128)),Ie(t).isLoading&&!d.value?(_(),w("div",gy,[...x[5]||(x[5]=[er('<div class="flex gap-2.5 items-start" data-v-a5462ea7><div class="shrink-0 w-6 h-6 rounded-lg bg-surface-3/60 border border-edge flex items-center justify-center" data-v-a5462ea7><span class="text-accent text-[10px] font-bold font-mono" data-v-a5462ea7>IO</span></div><div class="px-4 py-3 rounded-2xl rounded-tl-md bg-surface-2/70 border border-edge flex items-center gap-1" data-v-a5462ea7><span class="thinking-dot" style="animation-delay:0s;" data-v-a5462ea7></span><span class="thinking-dot" style="animation-delay:0.15s;" data-v-a5462ea7></span><span class="thinking-dot" style="animation-delay:0.3s;" data-v-a5462ea7></span></div></div>',1)])])):ee("",!0)]))],544),be(ii,{name:"scroll-btn"},{default:gs(()=>[a.value?(_(),w("button",{key:0,onClick:f,class:"absolute bottom-24 left-1/2 -translate-x-1/2 z-10 w-8 h-8 rounded-full bg-surface-2/90 backdrop-blur-sm border border-edge-bright text-txt-secondary hover:text-accent hover:border-accent/40 hover:shadow-glow-sm flex items-center justify-center transition-all duration-200",title:"Scroll to bottom"},[be(Re,{paths:'<path d="M15.85 7.65c.2.2.2.5 0 .7l-5.46 5.49a.55.55 0 0 1-.78 0L4.15 8.35a.5.5 0 1 1 .7-.7L10 12.8l5.15-5.16c.2-.2.5-.2.7 0Z"/>',size:16})])):ee("",!0)]),_:1}),p("div",my,[p("form",{onSubmit:yt(S,["prevent"]),class:"max-w-3xl mx-auto flex gap-2 items-end"},[p("div",by,[dt(p("textarea",{ref_key:"inputEl",ref:o,"onUpdate:modelValue":x[0]||(x[0]=k=>n.value=k),placeholder:"Message IO…",disabled:Ie(t).isLoading,rows:"1",class:"w-full bg-surface-2/60 border border-edge rounded-xl px-4 py-2.5 pr-3 text-sm text-txt-primary placeholder-txt-muted/60 resize-none overflow-hidden focus:outline-none focus:border-accent/40 focus:shadow-glow-sm disabled:opacity-40 transition-all duration-200",onKeydown:g,onInput:b},null,40,vy),[[kt,n.value]])]),Ie(t).isLoading?(_(),w("button",{key:0,type:"button",onClick:u,disabled:r.value,class:"shrink-0 h-10 px-3.5 rounded-xl text-sm font-medium bg-red-500/15 text-red-400 border border-red-500/25 hover:bg-red-500/25 hover:border-red-500/40 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-150 flex items-center gap-1.5",title:"Stop"},[x[6]||(x[6]=p("span",{class:"w-2.5 h-2.5 rounded-[3px] bg-red-400"},null,-1)),p("span",_y,I(r.value?"Stopping…":"Stop"),1)],8,yy)):(_(),w("button",{key:1,type:"submit",disabled:!n.value.trim(),class:"shrink-0 w-10 h-10 rounded-xl flex items-center justify-center bg-accent/15 text-accent border border-accent/25 hover:bg-accent/25 hover:border-accent/40 hover:shadow-glow-sm disabled:opacity-25 disabled:cursor-not-allowed disabled:hover:shadow-none transition-all duration-150",title:"Send"},[be(Re,{paths:'<path d="M2.18 2.11a.5.5 0 0 1 .54-.06l15 7.5a.5.5 0 0 1 0 .9l-15 7.5a.5.5 0 0 1-.7-.58L3.98 10 2.02 2.63a.5.5 0 0 1 .16-.52Zm2.7 8.39-1.61 6.06L16.38 10 3.27 3.44 4.88 9.5h6.62a.5.5 0 1 1 0 1H4.88Z"/>',size:16})],8,wy))],32)])]))}}),ky=rr(Ey,[["__scopeId","data-v-a5462ea7"]]),Sy={class:"flex flex-col h-full bg-surface-0"},Ty={key:0,class:"flex flex-col h-full overflow-hidden animate-fade-in"},Ay={class:"flex items-center gap-3 px-3 sm:px-6 py-3.5 border-b border-edge/70 shrink-0 backdrop-blur-sm",style:{background:"linear-gradient(180deg, rgba(19,27,46,0.9) 0%, rgba(12,18,32,0.85) 100%)"}},Ry={class:"text-base font-semibold text-txt-primary truncate"},Cy={class:"text-[11px] text-txt-muted font-mono shrink-0 bg-surface-2/60 px-1.5 py-0.5 rounded"},Oy={key:0,class:"flex-1 flex items-center justify-center"},$y={key:1,class:"flex-1 p-6"},Ny={class:"inline-flex items-center gap-2 text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2"},Iy={key:2,class:"flex-1 overflow-y-auto p-6 skill-content text-sm text-txt-secondary leading-relaxed"},Py={key:0,class:"mb-6 bg-surface-2/60 border border-edge rounded-xl p-5"},Ly={key:0,class:"mb-3"},My={class:"text-base font-semibold text-txt-primary"},jy={key:1,class:"mb-3"},Dy={class:"text-sm text-txt-secondary"},Uy={class:"flex flex-wrap gap-6 mt-1"},By={key:0},Hy={class:"text-sm text-accent font-mono"},Fy={key:1},Vy={class:"text-sm text-txt-secondary"},qy={key:2,class:"mt-3 pt-3 border-t border-edge grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 items-baseline"},zy={class:"text-[10px] text-txt-muted uppercase tracking-wider whitespace-nowrap"},Ky={class:"text-xs text-txt-secondary font-mono"},Wy=["innerHTML"],Gy={key:1,class:"flex-1 overflow-y-auto p-3 sm:p-6"},Zy={class:"max-w-3xl"},Jy={class:"mb-6 bg-surface-2/40 border border-edge rounded-xl p-4"},Yy={class:"flex gap-1 mb-3"},Xy={class:"flex gap-2"},Qy=["disabled"],e_=["disabled"],t_={class:"flex flex-col gap-2"},s_=["disabled"],n_=["disabled"],r_=["disabled"],i_={key:0,class:"flex items-center gap-2 bg-emerald-500/10 text-emerald-400 border border-emerald-500/20 p-3 rounded-lg mb-4 text-sm animate-fade-in"},a_={key:1,class:"flex items-center gap-2 bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg mb-4 text-sm animate-fade-in"},o_={key:2,class:"mb-4"},l_={key:3,class:"flex items-center justify-center py-16"},c_={key:4,class:"flex items-center gap-2 bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg mb-4 text-sm"},u_={key:5,class:"text-txt-muted text-sm text-center py-16"},d_={key:6,class:"text-txt-muted text-sm text-center py-12"},h_={key:7,class:"grid gap-3"},f_=["onClick"],p_={class:"flex justify-between items-start mb-1.5"},g_={class:"min-w-0"},m_={class:"font-semibold text-txt-primary text-sm group-hover:text-accent transition-colors duration-150"},b_={class:"text-[11px] text-txt-muted font-mono mt-0.5"},v_=["onClick"],y_={class:"text-xs text-txt-secondary mb-2 line-clamp-2"},__={class:"text-[10px] text-txt-muted font-mono truncate"},w_=pt({__name:"SkillsView",setup(e){const t=Q([]),s=Q(!0),n=Q(null),r=Q(""),i=Q(!1),a=Q(null),o=Q(null),l=Q("url"),c=Q(""),u=Q(""),d=Q(!1),h=Q(null),f=Q(""),g=Q(!1),b=Q(null),S=je(()=>yv(f.value)),E=je(()=>S.value.frontmatter),x=je(()=>Ms(S.value.body)),k=["name","description","version","author"],P=je(()=>E.value?Object.entries(E.value).filter(([W])=>!k.includes(W)):[]),N=Q(""),R=je(()=>{const W=N.value.toLowerCase().trim();return W?t.value.filter(L=>L.name.toLowerCase().includes(W)||L.slug.toLowerCase().includes(W)||(L.description??"").toLowerCase().includes(W)):t.value});async function v(W){h.value=W,f.value="",b.value=null,g.value=!0;try{const L=await Ce(`/api/skills/${encodeURIComponent(W.slug)}`);if(L.status===404)b.value="Skill not found";else if(!L.ok)b.value=`Failed to load skill (HTTP ${L.status})`;else{const pe=await L.json();f.value=pe.content??""}}catch(L){b.value=L instanceof Error?L.message:"Failed to load skill"}finally{g.value=!1}}function C(){h.value=null,f.value="",b.value=null}async function j(){try{const W=await Ce("/api/skills");if(!W.ok)throw new Error(`HTTP error! status: ${W.status}`);const L=await W.json();t.value=L.skills}catch(W){n.value=W instanceof Error?W.message:"Failed to load skills"}finally{s.value=!1}}async function V(){if(!(i.value||r.value.trim()==="")){i.value=!0,a.value=null,o.value=null;try{const W=await Ce("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repoUrl:r.value.trim()})});if(W.ok){const L=await W.json();t.value=[L.skill,...t.value],r.value="",o.value=`✓ Installed: ${L.skill.name}`,setTimeout(()=>{o.value=null},4e3),j()}else{let L="Install failed";try{L=(await W.json()).error??W.statusText??L}catch{L=W.statusText||L}a.value=L}}catch(W){a.value=W instanceof Error?W.message:"Install failed"}finally{i.value=!1}}}async function Z(){if(!(d.value||c.value.trim()===""||u.value.trim()==="")){d.value=!0,a.value=null,o.value=null;try{const W=await Ce("/api/skills/paste",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:u.value.trim(),slug:c.value.trim()})});if(W.ok){const L=await W.json();t.value=[L.skill,...t.value],c.value="",u.value="",o.value=`✓ Installed: ${L.skill.name}`,setTimeout(()=>{o.value=null},4e3),j()}else{let L="Install failed";try{L=(await W.json()).error??W.statusText??L}catch{L=W.statusText||L}a.value=L}}catch(W){a.value=W instanceof Error?W.message:"Install failed"}finally{d.value=!1}}}async function $(W){if(confirm(`Delete skill "${W.name}"? This cannot be undone.`))try{const L=await Ce(`/api/skills/${encodeURIComponent(W.slug)}`,{method:"DELETE"});if(L.ok)t.value=t.value.filter(pe=>pe.slug!==W.slug),o.value=`✓ Deleted: ${W.name}`,setTimeout(()=>{o.value=null},3e3);else{const pe=await L.json().catch(()=>({}));a.value=pe.error??(L.status===404?"Skill not found":`Delete failed (HTTP ${L.status})`)}}catch(L){a.value=L instanceof Error?L.message:"Delete failed"}}return Ht(j),(W,L)=>(_(),w("div",Sy,[h.value?(_(),w("div",Ty,[p("div",Ay,[p("button",{onClick:C,class:"text-txt-muted hover:text-accent transition-colors flex items-center gap-1.5 text-sm group"},[be(Re,{paths:'<path d="M12.35 15.85a.5.5 0 0 1-.7 0L6.16 10.4a.55.55 0 0 1 0-.78l5.49-5.46a.5.5 0 1 1 .7.7L7.2 10l5.16 5.15c.2.2.2.5 0 .7Z"/>',size:14,class:"transition-transform group-hover:-translate-x-0.5"}),L[6]||(L[6]=ve(" Back ",-1))]),L[7]||(L[7]=p("div",{class:"w-px h-5 bg-edge"},null,-1)),p("h2",Ry,I(h.value.name),1),p("span",Cy,I(h.value.slug),1)]),g.value?(_(),w("div",Oy,[...L[8]||(L[8]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading… ")],-1)])])):b.value?(_(),w("div",$y,[p("div",Ny,[L[9]||(L[9]=p("span",null,"⚠",-1)),ve(" "+I(b.value),1)])])):(_(),w("div",Iy,[E.value?(_(),w("div",Py,[E.value.name?(_(),w("div",Ly,[L[10]||(L[10]=p("p",{class:"text-[10px] text-txt-muted uppercase tracking-widest mb-0.5"},"Name",-1)),p("p",My,I(E.value.name),1)])):ee("",!0),E.value.description?(_(),w("div",jy,[L[11]||(L[11]=p("p",{class:"text-[10px] text-txt-muted uppercase tracking-widest mb-0.5"},"Description",-1)),p("p",Dy,I(E.value.description),1)])):ee("",!0),p("div",Uy,[E.value.version?(_(),w("div",By,[L[12]||(L[12]=p("p",{class:"text-[10px] text-txt-muted uppercase tracking-widest mb-0.5"},"Version",-1)),p("p",Hy,I(E.value.version),1)])):ee("",!0),E.value.author?(_(),w("div",Fy,[L[13]||(L[13]=p("p",{class:"text-[10px] text-txt-muted uppercase tracking-widest mb-0.5"},"Author",-1)),p("p",Vy,I(E.value.author),1)])):ee("",!0)]),P.value.length>0?(_(),w("dl",qy,[(_(!0),w(ke,null,ze(P.value,([pe,M])=>(_(),w(ke,{key:pe},[p("dt",zy,I(pe),1),p("dd",Ky,I(M),1)],64))),128))])):ee("",!0)])):ee("",!0),p("div",{innerHTML:x.value},null,8,Wy)]))])):(_(),w("div",Gy,[p("div",Zy,[L[19]||(L[19]=er('<div class="flex items-end justify-between mb-6" data-v-20b3d95d><div data-v-20b3d95d><h2 class="text-xl font-bold text-txt-primary tracking-tight" data-v-20b3d95d>Skills</h2><p class="text-xs text-txt-muted mt-0.5" data-v-20b3d95d>Manage installed Copilot skills</p></div><div class="flex items-center gap-2" data-v-20b3d95d><a href="https://github.com/github/awesome-copilot" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1.5 text-xs text-txt-muted bg-surface-2/50 border border-edge px-2.5 py-1 rounded-full hover:border-accent/30 hover:text-accent transition-all duration-200" data-v-20b3d95d><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="w-3 h-3 fill-current" aria-hidden="true" data-v-20b3d95d><path d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z" data-v-20b3d95d></path></svg> awesome-copilot </a><a href="https://skills.sh" target="_blank" rel="noopener noreferrer" class="flex items-center gap-1.5 text-xs text-txt-muted bg-surface-2/50 border border-edge px-2.5 py-1 rounded-full hover:border-accent/30 hover:text-accent transition-all duration-200" data-v-20b3d95d><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="w-3 h-3 fill-current" aria-hidden="true" data-v-20b3d95d><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8c0 .93.16 1.82.46 2.65L5 8.5V7H3.5l-.07.01A6.492 6.492 0 0 0 1.5 8Zm6.5 6.5c.93 0 1.82-.17 2.65-.47L8.5 11H7v2.5c.17.01.33.01.5.01Zm-5.3-1.7c.56.4 1.19.7 1.87.88L5 11H3.5c.34.66.79 1.25 1.2 1.8ZM8.5 1.5V4H10l2.5 2.5c.02-.16.03-.33.03-.5A6.5 6.5 0 0 0 8.5 1.5Zm-1 0A6.5 6.5 0 0 0 1.97 6H3.5L6 3.5V1.53c-.51.1-1 .26-1.5.46V1.5ZM11 8.5l-2.5 2.5H10l1.88-1.88A6.47 6.47 0 0 0 11 8.5ZM6 6v4h4V6H6Z" data-v-20b3d95d></path></svg> skills.sh </a></div></div>',1)),p("div",Jy,[p("div",Yy,[p("button",{type:"button",onClick:L[0]||(L[0]=pe=>l.value="url"),class:ge(["px-3 py-1.5 text-xs font-medium rounded-lg transition-all duration-150",l.value==="url"?"bg-accent/10 text-accent border border-accent/20":"text-txt-muted hover:text-txt-secondary hover:bg-surface-3/40 border border-transparent"])}," From URL ",2),p("button",{type:"button",onClick:L[1]||(L[1]=pe=>l.value="paste"),class:ge(["px-3 py-1.5 text-xs font-medium rounded-lg transition-all duration-150",l.value==="paste"?"bg-accent/10 text-accent border border-accent/20":"text-txt-muted hover:text-txt-secondary hover:bg-surface-3/40 border border-transparent"])}," Paste SKILL.md ",2)]),l.value==="url"?(_(),w("form",{key:0,onSubmit:yt(V,["prevent"])},[p("div",Xy,[dt(p("input",{"onUpdate:modelValue":L[2]||(L[2]=pe=>r.value=pe),type:"url",placeholder:"https://github.com/owner/repo.git","aria-label":"Git repository URL",disabled:i.value,class:"flex-1 bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm disabled:opacity-40 transition-all duration-200"},null,8,Qy),[[kt,r.value]]),p("button",{type:"submit",disabled:i.value||r.value.trim()==="",class:"bg-accent/15 text-accent border border-accent/25 px-4 py-2 rounded-lg text-sm font-medium hover:bg-accent/25 hover:border-accent/40 disabled:opacity-30 disabled:cursor-not-allowed transition-all duration-150 whitespace-nowrap"},I(i.value?"Installing…":"Install"),9,e_)])],32)):(_(),w("form",{key:1,onSubmit:yt(Z,["prevent"])},[p("div",t_,[p("div",null,[dt(p("input",{"onUpdate:modelValue":L[3]||(L[3]=pe=>c.value=pe),type:"text",placeholder:"my-skill","aria-label":"Skill slug",disabled:d.value,class:"w-full bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm disabled:opacity-40 transition-all duration-200"},null,8,s_),[[kt,c.value]]),L[14]||(L[14]=p("p",{class:"text-[10px] text-txt-muted mt-1 ml-1"},"Unique identifier (lowercase, hyphens ok)",-1))]),dt(p("textarea",{"onUpdate:modelValue":L[4]||(L[4]=pe=>u.value=pe),placeholder:"Paste SKILL.md content here…","aria-label":"SKILL.md content",disabled:d.value,rows:"6",class:"w-full bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary font-mono placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm disabled:opacity-40 resize-y transition-all duration-200"},null,8,n_),[[kt,u.value]]),p("button",{type:"submit",disabled:d.value||c.value.trim()===""||u.value.trim()==="",class:"self-end bg-accent/15 text-accent border border-accent/25 px-4 py-2 rounded-lg text-sm font-medium hover:bg-accent/25 hover:border-accent/40 disabled:opacity-30 disabled:cursor-not-allowed transition-all duration-150"},I(d.value?"Installing…":"Install"),9,r_)])],32))]),o.value?(_(),w("div",i_,[L[15]||(L[15]=p("span",null,"✓",-1)),ve(" "+I(o.value),1)])):ee("",!0),a.value?(_(),w("div",a_,[L[16]||(L[16]=p("span",null,"⚠",-1)),ve(" "+I(a.value),1)])):ee("",!0),!s.value&&!n.value&&t.value.length>0?(_(),w("div",o_,[dt(p("input",{"onUpdate:modelValue":L[5]||(L[5]=pe=>N.value=pe),type:"search",placeholder:"Search skills…","aria-label":"Search skills",class:"w-full bg-surface-2/50 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm transition-all duration-200"},null,512),[[kt,N.value]])])):ee("",!0),s.value?(_(),w("div",l_,[...L[17]||(L[17]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading skills… ")],-1)])])):n.value?(_(),w("div",c_,[L[18]||(L[18]=p("span",null,"⚠",-1)),ve(" "+I(n.value),1)])):t.value.length===0?(_(),w("div",u_," No skills installed yet ")):R.value.length===0?(_(),w("div",d_," No matching skills ")):(_(),w("div",h_,[(_(!0),w(ke,null,ze(R.value,pe=>(_(),w("div",{key:pe.slug,onClick:M=>v(pe),class:"group bg-surface-2/40 border border-edge rounded-xl p-4 hover:border-edge-bright hover:shadow-card-hover hover:bg-surface-2/70 transition-all duration-200 cursor-pointer"},[p("div",p_,[p("div",g_,[p("h3",m_,I(pe.name),1),p("p",b_,I(pe.slug),1)]),p("button",{onClick:yt(M=>$(pe),["stop"]),class:"shrink-0 ml-2 p-1.5 rounded-lg text-txt-muted/0 group-hover:text-txt-muted hover:!text-red-400 hover:bg-red-500/10 transition-all duration-150",title:"Delete skill"},[be(Re,{paths:'<path d="M8.5 4h3a1.5 1.5 0 0 0-3 0Zm-1 0a2.5 2.5 0 0 1 5 0h5a.5.5 0 0 1 0 1h-1.05l-1.2 10.34A3 3 0 0 1 12.27 18H7.73a3 3 0 0 1-2.98-2.66L3.55 5H2.5a.5.5 0 0 1 0-1h5ZM5.74 15.23A2 2 0 0 0 7.73 17h4.54a2 2 0 0 0 1.99-1.77L15.44 5H4.56l1.18 10.23ZM8.5 7.5c.28 0 .5.22.5.5v6a.5.5 0 0 1-1 0V8c0-.28.22-.5.5-.5ZM12 8a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V8Z"/>',size:14})],8,v_)]),p("p",y_,I(pe.description),1),p("p",__,I(pe.path),1)],8,f_))),128))]))])]))]))}}),x_=rr(w_,[["__scopeId","data-v-20b3d95d"]]),E_={class:"flex flex-col h-full bg-surface-0"},k_={class:"flex-1 overflow-y-auto p-3 sm:p-6"},S_={class:"max-w-4xl"},T_={class:"flex justify-between items-end mb-6"},A_={class:"space-y-3"},R_=["disabled"],C_={key:0,class:"mt-3 flex items-center gap-2 text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2"},O_={key:1,class:"flex items-center justify-center py-16"},$_={key:2,class:"flex items-center gap-2 bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg mb-4 text-sm"},N_={key:3,class:"text-txt-muted text-sm text-center py-16"},I_={key:4,class:"grid gap-3"},P_=["onClick","aria-expanded"],L_={class:"flex justify-between items-start mb-2"},M_={class:"flex-1 flex items-center gap-2.5"},j_={class:"min-w-0"},D_={class:"font-semibold text-txt-primary text-sm"},U_={class:"text-[11px] text-txt-muted font-mono"},B_={class:"flex items-center gap-2 shrink-0"},H_={key:0,class:"px-2 py-0.5 rounded-md text-[10px] font-medium bg-purple-500/10 text-purple-300 border border-purple-500/20"},F_={class:"text-xs text-txt-muted font-mono ml-6"},V_={key:0,class:"border-t border-edge px-4 pb-4 pt-3 animate-fade-in"},q_={class:"flex justify-between items-center text-[10px] text-txt-muted mb-3"},z_={key:0,class:"font-mono"},K_={key:0,class:"flex items-center gap-2 text-txt-muted text-xs py-3"},W_={key:1,class:"text-red-400 text-xs py-2"},G_={key:2,class:"text-txt-muted text-xs italic py-2"},Z_={key:3,class:"space-y-1.5"},J_={class:"flex-1 min-w-0"},Y_={class:"flex items-center gap-1.5"},X_={class:"text-sm font-medium text-txt-primary truncate"},Q_={key:0,title:"Team Lead",class:"text-xs"},e1={key:1,title:"QA / Veto Power",class:"text-xs"},t1={class:"text-[10px] text-txt-muted"},s1={class:"flex items-center gap-1 shrink-0"},n1=["onClick"],r1=["onClick","disabled"],i1={class:"bg-surface-1 border border-edge rounded-xl w-full max-w-2xl max-h-[85vh] flex flex-col shadow-2xl animate-fade-in"},a1={class:"flex justify-between items-center px-5 py-3.5 border-b border-edge"},o1={class:"text-sm font-semibold text-txt-primary flex items-center gap-2"},l1={class:"text-xs font-normal text-txt-muted"},c1={class:"text-[10px] text-txt-muted mt-0.5 flex items-center gap-1.5"},u1={class:"flex items-center gap-3"},d1={class:"flex items-center gap-1.5 text-[10px] text-txt-muted cursor-pointer select-none"},h1={key:0,class:"bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg text-sm"},f1={key:1,class:"text-txt-muted italic text-center py-8"},p1={class:"shrink-0"},g1={class:"flex-1 min-w-0"},m1={class:"text-txt-secondary break-words"},b1={class:"text-txt-muted text-[10px] ml-2"},v1={key:0,class:"text-txt-muted italic text-center py-4"},y1={class:"flex justify-between items-center mb-1"},_1={class:"text-accent"},w1={class:"text-txt-muted text-[10px]"},x1={class:"text-txt-secondary whitespace-pre-wrap break-words"},E1=pt({__name:"SquadsView",setup(e){const t=new Set(["system"]),s={"a-team":"The A-Team",transformers:"Transformers",thundercats:"ThunderCats","gi-joe":"G.I. Joe",aliens:"Aliens",ghostbusters:"Ghostbusters"},n=Q([]),r=Q(!0),i=Q(null),a=Q(!1),o=Q(!1),l=Q(null),c=Xt({}),u=Xt({});function d(T){return[...T].sort((O,X)=>{const ce=Ue=>Ue.is_lead?0:Ue.is_qa?1:2;return ce(O)-ce(X)})}const h=Xt({}),f=Xt({}),g=Q(new Set),b=Q(null),S=Q([]),E=Q(null),x=Q(!1),k=Q(!0),P=Q(null);let N=null;const R=je(()=>E.value?"Disconnected":x.value?"Live":"Connecting…"),v=je(()=>S.value.filter(T=>!(!T.summary||t.has(T.summary.kind)||T.type==="assistant.message_delta"))),C=T=>{try{return new Date(T).toLocaleTimeString()}catch{return""}},j=T=>{const O=T.data;if(!O||typeof O!="object")return"";if(typeof O.deltaContent=="string")return O.deltaContent;if(typeof O.content=="string")return O.content;if(typeof O.text=="string")return O.text;try{return JSON.stringify(O,null,2)}catch{return String(O)}},V=()=>{Is(()=>{const T=P.value;T&&(T.scrollTop=T.scrollHeight)})},Z=async T=>{if(!T.currentTaskId)return;$(),b.value=T,S.value=[],E.value=null,x.value=!1,k.value=!0;const O=await fi(`/api/tasks/${encodeURIComponent(T.currentTaskId)}/events`),X=new EventSource(O);N=X,X.onopen=()=>{x.value=!0},X.onmessage=ce=>{try{const Ue=JSON.parse(ce.data);S.value.push(Ue),V()}catch{}},X.onerror=()=>{x.value=!1,S.value.length===0&&(E.value="Connection error. Retrying…")}},$=()=>{if(N){try{N.close()}catch{}N=null}b.value=null,S.value=[],E.value=null,x.value=!1};Ra(()=>{$()});const W=async(T,O)=>{if(!g.value.has(O)){g.value=new Set(g.value).add(O);try{await Ce(`/api/tasks/${encodeURIComponent(O)}/cancel`,{method:"POST"}),await ue(T,!0)}catch(X){f[T]=X instanceof Error?X.message:"Failed to stop task"}finally{const X=new Set(g.value);X.delete(O),g.value=X}}},L=Q({slug:"",name:"",projectPath:""}),pe=T=>T?s[T]??T:"",M=T=>new Date(T).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),z=T=>!!c[T],Y=async T=>{c[T]=!c[T],c[T]&&!u[T]&&!h[T]&&await ue(T)},ue=async(T,O=!1)=>{if(!(!O&&h[T])){h[T]=!0,f[T]=null;try{const X=await Ce(`/api/squads/${encodeURIComponent(T)}/agents`);if(!X.ok)throw new Error(`HTTP error! status: ${X.status}`);const ce=await X.json();u[T]=ce.agents}catch(X){f[T]=X instanceof Error?X.message:"Failed to load agents"}finally{h[T]=!1}}},xe=async()=>{try{const T=await Ce("/api/squads");if(!T.ok)throw new Error(`HTTP error! status: ${T.status}`);const O=await T.json();n.value=O.squads}catch(T){i.value=T instanceof Error?T.message:"Failed to load squads"}finally{r.value=!1}},q=async()=>{if(!L.value.slug||!L.value.name||!L.value.projectPath){l.value="All fields are required";return}o.value=!0,l.value=null;try{const T=await Ce("/api/squads",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:L.value.slug,name:L.value.name,projectPath:L.value.projectPath})});if(!T.ok)throw new Error(`HTTP error! status: ${T.status}`);L.value={slug:"",name:"",projectPath:""},a.value=!1,await xe()}catch(T){l.value=T instanceof Error?T.message:"Failed to create squad"}finally{o.value=!1}};return Ht(()=>{xe()}),(T,O)=>(_(),w("div",E_,[p("div",k_,[p("div",S_,[p("div",T_,[O[5]||(O[5]=p("div",null,[p("h2",{class:"text-xl font-bold text-txt-primary tracking-tight"},"Squads"),p("p",{class:"text-xs text-txt-muted mt-0.5"},"Manage teams and monitor agents")],-1)),p("button",{onClick:O[0]||(O[0]=X=>a.value=!a.value),class:ge(["px-3.5 py-2 rounded-lg text-sm font-medium transition-all duration-150",a.value?"bg-surface-3/50 text-txt-secondary border border-edge hover:bg-surface-3/70":"bg-accent/15 text-accent border border-accent/25 hover:bg-accent/25 hover:border-accent/40"])},I(a.value?"Cancel":"New Squad"),3)]),a.value?(_(),w("form",{key:0,onSubmit:yt(q,["prevent"]),class:"bg-surface-2/40 border border-edge rounded-xl p-5 mb-6 animate-fade-in"},[O[7]||(O[7]=p("h3",{class:"font-semibold text-txt-primary text-sm mb-4"},"Create New Squad",-1)),p("div",A_,[dt(p("input",{"onUpdate:modelValue":O[1]||(O[1]=X=>L.value.slug=X),type:"text",placeholder:"Squad slug (e.g., frontend-team)",class:"w-full bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm transition-all duration-200"},null,512),[[kt,L.value.slug]]),dt(p("input",{"onUpdate:modelValue":O[2]||(O[2]=X=>L.value.name=X),type:"text",placeholder:"Squad name (e.g., Frontend Team)",class:"w-full bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm transition-all duration-200"},null,512),[[kt,L.value.name]]),dt(p("input",{"onUpdate:modelValue":O[3]||(O[3]=X=>L.value.projectPath=X),type:"text",placeholder:"Project path (e.g., /path/to/project)",class:"w-full bg-surface-1/80 border border-edge rounded-lg px-3 py-2 text-sm text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm transition-all duration-200"},null,512),[[kt,L.value.projectPath]]),p("button",{type:"submit",disabled:o.value||!L.value.slug||!L.value.name||!L.value.projectPath,class:"w-full bg-accent/15 text-accent border border-accent/25 px-4 py-2 rounded-lg text-sm font-medium hover:bg-accent/25 hover:border-accent/40 disabled:opacity-30 disabled:cursor-not-allowed transition-all duration-150"},I(o.value?"Creating…":"Create Squad"),9,R_)]),l.value?(_(),w("div",C_,[O[6]||(O[6]=p("span",null,"⚠",-1)),ve(" "+I(l.value),1)])):ee("",!0)],32)):ee("",!0),r.value?(_(),w("div",O_,[...O[8]||(O[8]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading squads… ")],-1)])])):i.value?(_(),w("div",$_,[O[9]||(O[9]=p("span",null,"⚠",-1)),ve(" "+I(i.value),1)])):n.value.length===0?(_(),w("div",N_," No squads created yet ")):(_(),w("div",I_,[(_(!0),w(ke,null,ze(n.value,X=>(_(),w("div",{key:X.id,class:"bg-surface-2/40 border border-edge rounded-xl overflow-hidden hover:border-edge-bright transition-all duration-200"},[p("button",{type:"button",onClick:ce=>Y(X.slug),class:"w-full text-left p-4 focus:outline-none","aria-expanded":z(X.slug)},[p("div",L_,[p("div",M_,[be(Re,{paths:'<path d="M7.65 4.15c.2-.2.5-.2.7 0l5.49 5.46c.21.22.21.57 0 .78l-5.49 5.46a.5.5 0 0 1-.7-.7L12.8 10 7.65 4.85a.5.5 0 0 1 0-.7Z"/>',size:14,class:ge(["text-txt-muted transition-transform duration-200 shrink-0",z(X.slug)?"rotate-90":""])},null,8,["class"]),p("div",j_,[p("h3",D_,I(X.name),1),p("p",U_,I(X.slug),1)])]),p("div",B_,[X.universe?(_(),w("span",H_," 🎬 "+I(pe(X.universe)),1)):ee("",!0),p("span",{class:ge(["flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-medium",X.status==="working"?"bg-accent/10 text-accent border border-accent/20":X.status==="error"?"bg-red-500/10 text-red-400 border border-red-500/20":"bg-surface-3/60 text-txt-muted border border-edge"])},[p("span",{class:ge(["w-1.5 h-1.5 rounded-full",X.status==="working"?"bg-accent animate-pulse":X.status==="error"?"bg-red-400":"bg-txt-muted/50"])},null,2),ve(" "+I(X.status),1)],2)])]),p("p",F_,"📁 "+I(X.project_path),1)],8,P_),z(X.slug)?(_(),w("div",V_,[p("div",q_,[X.model?(_(),w("span",z_,"Model: "+I(X.model),1)):ee("",!0),p("span",null,I(M(X.created_at)),1)]),O[13]||(O[13]=p("h4",{class:"text-xs font-semibold text-txt-secondary uppercase tracking-wider mb-2"},"Team Roster",-1)),h[X.slug]?(_(),w("div",K_,[...O[10]||(O[10]=[p("span",{class:"w-3 h-3 border-2 border-edge border-t-accent rounded-full animate-spin"},null,-1),ve(" Loading agents… ",-1)])])):f[X.slug]?(_(),w("div",W_,I(f[X.slug]),1)):!u[X.slug]||u[X.slug].length===0?(_(),w("div",G_," No agents assigned yet ")):(_(),w("ul",Z_,[(_(!0),w(ke,null,ze(d(u[X.slug]??[]),ce=>(_(),w("li",{key:ce.id??ce.character_name,class:ge(["flex items-center gap-3 rounded-lg px-3 py-2 transition-all duration-150",ce.status==="working"?"bg-accent/[0.06] border border-accent/15":"bg-surface-1/50 border border-edge"])},[p("div",{class:ge(["w-7 h-7 rounded-full flex items-center justify-center shrink-0 text-[10px] font-bold",ce.status==="working"?"bg-accent/15 text-accent border border-accent/25":ce.status==="error"?"bg-red-500/15 text-red-400 border border-red-500/25":"bg-surface-3/60 text-txt-muted border border-edge"])},I((ce.character_name??"?").charAt(0).toUpperCase()),3),p("div",J_,[p("div",Y_,[p("span",X_,I(ce.character_name),1),ce.is_lead?(_(),w("span",Q_,"👑")):ee("",!0),ce.is_qa?(_(),w("span",e1,"🛡️")):ee("",!0)]),p("span",t1,I(ce.role_title),1)]),p("span",{class:ge(["flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-medium shrink-0",ce.status==="working"?"bg-accent/10 text-accent":ce.status==="error"?"bg-red-500/10 text-red-400":"bg-surface-3/40 text-txt-muted"])},[p("span",{class:ge(["w-1.5 h-1.5 rounded-full",ce.status==="working"?"bg-accent animate-pulse":ce.status==="error"?"bg-red-400":"bg-emerald-400"])},null,2),ve(" "+I(ce.status),1)],2),p("div",s1,[ce.status==="working"&&ce.currentTaskId?(_(),w("button",{key:0,type:"button",onClick:Ue=>Z(ce),class:"text-[10px] font-medium px-2 py-1 rounded-md bg-accent/10 text-accent border border-accent/20 hover:bg-accent/20 transition-all duration-150 flex items-center gap-1",title:"Preview live work"},[...O[11]||(O[11]=[p("span",{"aria-hidden":"true"},"👁",-1),ve(" Preview ",-1)])],8,n1)):ee("",!0),ce.status==="working"&&ce.currentTaskId?(_(),w("button",{key:1,type:"button",onClick:Ue=>W(X.slug,ce.currentTaskId),disabled:g.value.has(ce.currentTaskId),class:"text-[10px] font-medium px-2 py-1 rounded-md bg-red-500/10 text-red-400 border border-red-500/20 hover:bg-red-500/20 disabled:opacity-40 transition-all duration-150 flex items-center gap-1",title:"Stop task"},[O[12]||(O[12]=p("span",{class:"w-2 h-2 rounded-[2px] bg-red-400"},null,-1)),ve(" "+I(g.value.has(ce.currentTaskId)?"Stopping…":"Stop"),1)],8,r1)):ee("",!0)])],2))),128))]))])):ee("",!0)]))),128))]))])]),b.value?(_(),w("div",{key:0,class:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4 z-50",onClick:yt($,["self"])},[p("div",i1,[p("div",a1,[p("div",null,[p("h3",o1,[ve(I(b.value.character_name)+" ",1),p("span",l1,"— "+I(b.value.role_title),1)]),p("p",c1,[p("span",{class:ge(["inline-block w-1.5 h-1.5 rounded-full",x.value?"bg-emerald-400 animate-pulse":"bg-txt-muted/50"])},null,2),ve(" "+I(R.value),1)])]),p("div",u1,[p("label",d1,[dt(p("input",{type:"checkbox","onUpdate:modelValue":O[4]||(O[4]=X=>k.value=X),class:"rounded bg-surface-3 border-edge accent-accent"},null,512),[[su,k.value]]),O[14]||(O[14]=ve(" Summary ",-1))]),p("button",{type:"button",onClick:$,class:"text-txt-muted hover:text-txt-primary text-lg leading-none transition-colors p-1","aria-label":"Close"},"×")])]),p("div",{ref_key:"previewScrollEl",ref:P,class:"overflow-y-auto p-4 space-y-2 flex-1 font-mono text-xs"},[E.value?(_(),w("div",h1,I(E.value),1)):S.value.length===0?(_(),w("div",f1," Waiting for activity… ")):k.value?(_(),w(ke,{key:2},[(_(!0),w(ke,null,ze(v.value,(X,ce)=>(_(),w("div",{key:ce,class:"flex items-start gap-2 py-1.5 px-1"},[p("span",p1,I(X.summary.icon),1),p("div",g1,[p("span",m1,I(X.summary.summary),1),p("span",b1,I(C(X.ts)),1)])]))),128)),v.value.length===0?(_(),w("div",v1," Processing… ")):ee("",!0)],64)):(_(!0),w(ke,{key:3},ze(S.value,(X,ce)=>(_(),w("div",{key:ce,class:"border border-edge rounded-lg p-2.5 bg-surface-0"},[p("div",y1,[p("span",_1,I(X.type),1),p("span",w1,I(C(X.ts)),1)]),p("pre",x1,I(j(X)),1)]))),128))],512),p("div",{class:"px-4 py-3 border-t border-edge flex justify-end"},[p("button",{type:"button",onClick:$,class:"bg-surface-3/50 hover:bg-surface-3/70 text-txt-secondary text-sm px-4 py-1.5 rounded-lg border border-edge transition-all duration-150"}," Close ")])])])):ee("",!0)]))}}),k1={class:"flex flex-col h-full bg-surface-0"},S1={class:"flex-1 overflow-y-auto p-3 sm:p-6"},T1={class:"max-w-4xl"},A1={class:"flex justify-between items-end mb-6"},R1=["disabled"],C1={key:0,class:"flex items-center gap-2 bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg mb-6 text-sm"},O1={class:"mb-8"},$1={key:0,class:"flex items-center justify-center py-10"},N1={key:1,class:"text-txt-muted text-sm text-center py-10"},I1={key:2,class:"grid gap-3"},P1={class:"flex justify-between items-start mb-2.5"},L1={class:"flex items-center gap-3 min-w-0"},M1={class:"min-w-0"},j1={class:"font-semibold text-txt-primary text-sm"},D1={class:"flex items-center gap-1.5 mt-0.5 flex-wrap"},U1={class:"text-[10px] text-txt-muted font-mono"},B1={key:0,class:"text-[10px] text-txt-secondary bg-surface-3/50 px-1.5 py-0.5 rounded border border-edge"},H1={key:1,class:"text-[10px] text-purple-300 bg-purple-500/10 px-1.5 py-0.5 rounded border border-purple-500/20"},F1=["title"],V1={key:0,class:"bg-surface-0/60 border border-edge rounded-lg p-3 mb-2.5 ml-12"},q1={class:"text-sm text-txt-primary break-words"},z1={class:"flex justify-between items-center ml-12"},K1={class:"text-[10px] text-txt-muted"},W1=["onClick","disabled"],G1={key:0,class:"flex items-center justify-center py-10"},Z1={key:1,class:"text-txt-muted text-sm text-center py-10"},J1={key:2,class:"relative"},Y1={class:"space-y-1"},X1=["onClick"],Q1={class:"flex justify-between items-start gap-3"},ew={class:"min-w-0 flex-1"},tw={class:"flex items-center gap-2 mb-0.5"},sw={class:"text-sm font-medium text-txt-primary truncate group-hover:text-accent transition-colors"},nw={key:0,class:"text-[10px] text-txt-muted bg-surface-3/40 px-1.5 py-0.5 rounded border border-edge"},rw={class:"text-xs text-txt-secondary truncate"},iw={class:"text-[10px] text-txt-muted mt-1"},aw={key:0},ow={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"},lw={class:"bg-surface-1 border border-edge rounded-xl w-full max-w-2xl max-h-[85vh] flex flex-col shadow-2xl animate-fade-in"},cw={class:"overflow-y-auto p-5 space-y-4"},uw={key:0,class:"flex items-center justify-center py-10"},dw={key:1,class:"bg-red-500/10 text-red-400 border border-red-500/20 p-3 rounded-lg text-sm"},hw={class:"flex justify-between items-start gap-3"},fw={class:"text-sm text-txt-primary font-medium"},pw={key:0,class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"},gw={class:"text-[11px] text-txt-muted font-mono break-all bg-surface-0/60 px-2 py-1 rounded border border-edge"},mw={key:0},bw={class:"text-sm text-txt-secondary"},vw={class:"grid grid-cols-2 gap-4"},yw={class:"text-sm text-txt-secondary"},_w={class:"text-sm text-txt-secondary"},ww={key:1},xw={class:"text-sm text-accent font-mono"},Ew=["innerHTML"],kw={class:"flex justify-between items-center mb-2"},Sw={class:"flex items-center gap-1.5 text-[10px] text-txt-muted cursor-pointer select-none"},Tw={key:0,class:"text-sm text-txt-muted italic"},Aw={key:1,class:"text-sm text-txt-muted italic"},Rw={key:2,class:"bg-surface-0/60 border border-edge rounded-lg divide-y divide-edge max-h-96 overflow-y-auto"},Cw=["onClick"],Ow={class:"shrink-0"},$w={class:"flex-1 break-words"},Nw={class:"text-[10px] text-txt-muted shrink-0"},Iw={key:0,class:"mt-2 pl-6 space-y-1"},Pw={key:0,class:"text-xs text-txt-secondary bg-surface-1 border border-edge rounded-lg p-2 whitespace-pre-wrap break-words font-mono"},Lw={class:"text-[11px] text-txt-muted bg-surface-1 border border-edge rounded-lg p-2 whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto"},Mw={class:"text-[10px] text-txt-muted font-mono"},jw=["innerHTML"],Dw={key:1,class:"text-sm text-txt-muted italic"},Uw={class:"px-5 py-3 border-t border-edge flex justify-between items-center"},Bw=["disabled"],Hw={key:1},Fw=pt({__name:"AgentActivityView",setup(e){const t=Q([]),s=Q([]),n=Q(!0),r=Q(null),i=Q(new Set),a=Q(null),o=Q(null),l=Q(!1),c=Q(null),u=Q([]),d=Q(!1),h=Q(!1),f=Q(new Set);let g=null,b=null,S=null;const E=q=>q.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0}),x=q=>{if(!q)return"";const T=q.includes("T")?q:q.replace(" ","T")+"Z",O=new Date(T);return Number.isNaN(O.getTime())?q:O.toLocaleString()},k=q=>{switch(q){case"running":return"bg-accent/10 text-accent border border-accent/20";case"done":return"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20";case"failed":return"bg-red-500/10 text-red-400 border border-red-500/20";case"cancelled":return"bg-amber-500/10 text-amber-400 border border-amber-500/20";default:return"bg-surface-3/50 text-txt-muted border border-edge"}},P=je(()=>{if(!o.value)return null;const q=o.value.started_at,T=o.value.completed_at;if(!q||!T)return null;const O=new Date(q.includes("T")?q:q.replace(" ","T")+"Z").getTime(),X=new Date(T.includes("T")?T:T.replace(" ","T")+"Z").getTime();if(Number.isNaN(O)||Number.isNaN(X))return null;const ce=Math.max(0,Math.round((X-O)/1e3));if(ce<60)return`${ce}s`;const Ue=Math.floor(ce/60),F=ce%60;return`${Ue}m ${F}s`}),N=async q=>{if(!i.value.has(q)){i.value=new Set(i.value).add(q);try{await Ce(`/api/tasks/${encodeURIComponent(q)}/cancel`,{method:"POST"}),await C(),a.value===q&&await j(q)}catch(T){r.value=T instanceof Error?T.message:"Failed to stop task"}finally{const T=new Set(i.value);T.delete(q),i.value=T}}},R=async()=>{try{const q=await Ce("/api/agents");if(!q.ok)throw new Error(`HTTP error! status: ${q.status}`);const T=await q.json();t.value=T.agents}catch(q){r.value=q instanceof Error?q.message:"Failed to load agents"}},v=async()=>{try{const q=await Ce("/api/tasks?limit=50");if(!q.ok)throw new Error(`HTTP error! status: ${q.status}`);const T=await q.json();s.value=T.tasks}catch(q){r.value=q instanceof Error?q.message:"Failed to load tasks"}},C=async()=>{n.value=!0,r.value=null;try{await Promise.all([R(),v()])}finally{n.value=!1}},j=async q=>{l.value=!0,c.value=null;try{const T=await Ce(`/api/tasks/${encodeURIComponent(q)}`);if(!T.ok)throw new Error(`HTTP error! status: ${T.status}`);const O=await T.json();o.value=O.task}catch(T){c.value=T instanceof Error?T.message:"Failed to load task",o.value=null}finally{l.value=!1}},V=q=>{if(!q)return"";const T=new Date(q);return Number.isNaN(T.getTime())?"":T.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})},Z=q=>{try{return JSON.stringify(q,null,2)}catch{return String(q)}},$=q=>{if(q.status==="success")return"text-emerald-300";if(q.status==="error")return"text-red-300";if(q.status==="pending")return"text-accent";switch(q.kind){case"message":return"text-txt-primary";case"reasoning":return"text-purple-300";case"tool":return"text-blue-300";case"outcome":return"text-amber-300";default:return"text-txt-secondary"}},W=q=>{if(h.value)return;const T=new Set(f.value);T.has(q)?T.delete(q):T.add(q),f.value=T},L=async(q,T={})=>{T.initial&&(d.value=!0);try{const O=await Ce(`/api/tasks/${encodeURIComponent(q)}/activity`);if(!O.ok)return;const X=await O.json();u.value=X.activity??[]}catch{}finally{T.initial&&(d.value=!1)}},pe=q=>{b||(b=setTimeout(()=>{b=null,a.value===q&&L(q)},250))},M=async q=>{z(),L(q,{initial:!0});try{g=new EventSource(await fi(`/api/tasks/${encodeURIComponent(q)}/events`)),g.onmessage=()=>{pe(q)},g.onerror=()=>{}}catch{g=null}},z=()=>{g&&(g.close(),g=null),b&&(clearTimeout(b),b=null)},Y=q=>{a.value=q,o.value=null,u.value=[],f.value=new Set,j(q),M(q)},ue=()=>{a.value=null,o.value=null,c.value=null,u.value=[],f.value=new Set,z()},xe=q=>{q.key==="Escape"&&a.value&&ue()};return es(a,q=>{q?document.addEventListener("keydown",xe):document.removeEventListener("keydown",xe)}),Ht(()=>{C(),S=setInterval(C,5e3)}),es(()=>{var q;return(q=o.value)==null?void 0:q.status},q=>{q&&q!=="running"&&(a.value&&L(a.value),z())}),ti(()=>{S&&clearInterval(S),document.removeEventListener("keydown",xe),z()}),(q,T)=>(_(),w("div",k1,[p("div",S1,[p("div",T1,[p("div",A1,[T[2]||(T[2]=p("div",null,[p("h2",{class:"text-xl font-bold text-txt-primary tracking-tight"},"Activity"),p("p",{class:"text-xs text-txt-muted mt-0.5"},"Monitor agents and recent tasks")],-1)),p("button",{onClick:C,disabled:n.value,class:"px-3.5 py-2 rounded-lg text-sm font-medium transition-all duration-150 bg-accent/15 text-accent border border-accent/25 hover:bg-accent/25 hover:border-accent/40 disabled:opacity-30 disabled:cursor-not-allowed"},I(n.value?"Refreshing…":"Refresh"),9,R1)]),r.value?(_(),w("div",C1,[T[3]||(T[3]=p("span",null,"⚠",-1)),ve(" "+I(r.value),1)])):ee("",!0),p("section",O1,[T[7]||(T[7]=p("h3",{class:"text-xs font-semibold text-txt-secondary uppercase tracking-wider mb-3"},"Active Agents",-1)),n.value&&t.value.length===0?(_(),w("div",$1,[...T[4]||(T[4]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading agents… ")],-1)])])):t.value.length===0?(_(),w("div",N1," No active agents ")):(_(),w("div",I1,[(_(!0),w(ke,null,ze(t.value,O=>(_(),w("div",{key:O.slug+(O.characterName||""),class:ge(["group bg-surface-2/40 border rounded-xl p-4 transition-all duration-200",O.status==="working"?"border-accent/20 hover:border-accent/35":"border-edge hover:border-edge-bright"])},[p("div",P1,[p("div",L1,[p("div",{class:ge(["w-9 h-9 rounded-xl flex items-center justify-center shrink-0 text-xs font-bold",O.status==="working"?"bg-accent/15 text-accent border border-accent/25":O.status==="error"?"bg-red-500/15 text-red-400 border border-red-500/25":"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20"])},I((O.name??"?").charAt(0).toUpperCase()),3),p("div",M1,[p("h3",j1,I(O.name),1),p("div",D1,[p("span",U1,I(O.slug),1),O.roleTitle?(_(),w("span",B1,I(O.roleTitle),1)):ee("",!0),O.universe?(_(),w("span",H1," 🎬 "+I(O.universe),1)):ee("",!0),O.model&&O.status==="working"?(_(),w("span",{key:2,class:"text-[10px] text-emerald-300 bg-emerald-500/10 px-1.5 py-0.5 rounded border border-emerald-500/20",title:`Model: ${O.model}`}," 🧠 "+I(O.model),9,F1)):ee("",!0)])])]),p("span",{class:ge(["flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-medium shrink-0",O.status==="working"?"bg-accent/10 text-accent border border-accent/20":O.status==="error"?"bg-red-500/10 text-red-400 border border-red-500/20":"bg-emerald-500/10 text-emerald-400 border border-emerald-500/20"])},[p("span",{class:ge(["w-1.5 h-1.5 rounded-full",O.status==="working"?"bg-accent animate-pulse":O.status==="error"?"bg-red-400":"bg-emerald-400"])},null,2),ve(" "+I(O.status==="working"?"Working":O.status==="error"?"Error":"Idle"),1)],2)]),O.currentTask?(_(),w("div",V1,[T[5]||(T[5]=p("p",{class:"text-[10px] text-txt-muted uppercase tracking-wider mb-1"},"Current Task",-1)),p("p",q1,I(O.currentTask),1)])):ee("",!0),p("div",z1,[p("div",K1," Last updated: "+I(E(new Date)),1),O.status==="working"&&O.currentTaskId?(_(),w("button",{key:0,type:"button",onClick:X=>N(O.currentTaskId),disabled:i.value.has(O.currentTaskId),class:"text-[10px] font-medium px-2.5 py-1 rounded-md bg-red-500/10 text-red-400 border border-red-500/20 hover:bg-red-500/20 disabled:opacity-40 transition-all duration-150 flex items-center gap-1",title:"Stop task"},[T[6]||(T[6]=p("span",{class:"w-2 h-2 rounded-[2px] bg-red-400"},null,-1)),ve(" "+I(i.value.has(O.currentTaskId)?"Stopping…":"Stop"),1)],8,W1)):ee("",!0)])],2))),128))]))]),p("section",null,[T[10]||(T[10]=p("h3",{class:"text-xs font-semibold text-txt-secondary uppercase tracking-wider mb-3"},"Recent Activity",-1)),n.value&&s.value.length===0?(_(),w("div",G1,[...T[8]||(T[8]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading activity… ")],-1)])])):s.value.length===0?(_(),w("div",Z1," No recent activity yet ")):(_(),w("div",J1,[T[9]||(T[9]=p("div",{class:"absolute left-[15px] top-0 bottom-0 w-px bg-gradient-to-b from-accent/30 via-edge to-transparent"},null,-1)),p("div",Y1,[(_(!0),w(ke,null,ze(s.value,O=>(_(),w("button",{key:O.task_id,type:"button",onClick:X=>Y(O.task_id),class:"w-full text-left relative pl-10 pr-4 py-3 rounded-lg hover:bg-surface-2/40 transition-all duration-150 group"},[p("div",{class:ge(["absolute left-[11px] top-4 w-[9px] h-[9px] rounded-full border-2 z-10",O.status==="running"?"bg-accent border-accent shadow-glow-sm":O.status==="done"?"bg-emerald-400 border-emerald-400":O.status==="failed"?"bg-red-400 border-red-400":O.status==="cancelled"?"bg-amber-400 border-amber-400":"bg-surface-3 border-edge"])},null,2),p("div",Q1,[p("div",ew,[p("div",tw,[p("span",sw,I(O.agent_slug),1),O.origin_channel?(_(),w("span",nw,"via "+I(O.origin_channel),1)):ee("",!0)]),p("p",rw,I(O.description),1),p("p",iw,[ve(I(x(O.started_at))+" ",1),O.completed_at?(_(),w("span",aw," · "+I(x(O.completed_at)),1)):ee("",!0)])]),p("span",{class:ge(["flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-medium shrink-0",k(O.status)])},[O.status==="running"?(_(),w("span",ow)):ee("",!0),ve(" "+I(O.status),1)],2)])],8,X1))),128))])]))])])]),a.value?(_(),w("div",{key:0,class:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4 z-50",onClick:yt(ue,["self"])},[p("div",lw,[p("div",{class:"flex justify-between items-center px-5 py-3.5 border-b border-edge"},[T[11]||(T[11]=p("h3",{class:"text-sm font-semibold text-txt-primary"},"Task Details",-1)),p("button",{type:"button",onClick:ue,class:"text-txt-muted hover:text-txt-primary text-lg leading-none transition-colors p-1","aria-label":"Close"},"×")]),p("div",cw,[l.value?(_(),w("div",uw,[...T[12]||(T[12]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading task… ")],-1)])])):c.value?(_(),w("div",dw,I(c.value),1)):o.value?(_(),w(ke,{key:2},[p("div",hw,[p("div",null,[T[13]||(T[13]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Agent",-1)),p("p",fw,I(o.value.agent_slug),1)]),p("span",{class:ge(["flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-medium",k(o.value.status)])},[o.value.status==="running"?(_(),w("span",pw)):ee("",!0),ve(" "+I(o.value.status),1)],2)]),p("div",null,[T[14]||(T[14]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Task ID",-1)),p("p",gw,I(o.value.task_id),1)]),o.value.origin_channel?(_(),w("div",mw,[T[15]||(T[15]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Origin",-1)),p("p",bw,I(o.value.origin_channel),1)])):ee("",!0),p("div",vw,[p("div",null,[T[16]||(T[16]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Started",-1)),p("p",yw,I(x(o.value.started_at)),1)]),p("div",null,[T[17]||(T[17]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Completed",-1)),p("p",_w,I(o.value.completed_at?x(o.value.completed_at):"—"),1)])]),P.value?(_(),w("div",ww,[T[18]||(T[18]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Duration",-1)),p("p",xw,I(P.value),1)])):ee("",!0),p("div",null,[T[19]||(T[19]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Description",-1)),p("div",{class:"text-sm text-txt-primary bg-surface-0/60 border border-edge rounded-lg p-3 wiki-content",innerHTML:Ie(Ms)(o.value.description)},null,8,Ew)]),p("div",null,[p("div",kw,[T[21]||(T[21]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted"},"Activity",-1)),p("label",Sw,[dt(p("input",{type:"checkbox","onUpdate:modelValue":T[0]||(T[0]=O=>h.value=O),class:"rounded bg-surface-3 border-edge accent-accent"},null,512),[[su,h.value]]),T[20]||(T[20]=ve(" Show details ",-1))])]),d.value&&u.value.length===0?(_(),w("div",Tw,"Loading activity…")):u.value.length===0?(_(),w("div",Aw,"No activity yet")):(_(),w("ul",Rw,[(_(!0),w(ke,null,ze(u.value,(O,X)=>(_(),w("li",{key:`${O.ts}-${X}-${O.rawType}`,class:"px-3 py-2 text-sm hover:bg-surface-2/40 cursor-pointer transition-colors",onClick:ce=>W(X)},[p("div",{class:ge(["flex items-start gap-2",$(O)])},[p("span",Ow,I(O.icon),1),p("span",$w,I(O.summary),1),p("span",Nw,I(V(O.ts)),1)],2),h.value||f.value.has(X)?(_(),w("div",Iw,[O.detail?(_(),w("pre",Pw,I(O.detail),1)):ee("",!0),p("pre",Lw,I(Z(O.raw)),1),p("p",Mw,I(O.rawType),1)])):ee("",!0)],8,Cw))),128))]))]),p("div",null,[T[22]||(T[22]=p("p",{class:"text-[10px] uppercase tracking-widest text-txt-muted mb-0.5"},"Result",-1)),o.value.result?(_(),w("div",{key:0,class:"text-sm text-txt-primary bg-surface-0/60 border border-edge rounded-lg p-3 wiki-content max-h-96 overflow-y-auto",innerHTML:Ie(Ms)(o.value.result)},null,8,jw)):(_(),w("p",Dw,"No result yet"))])],64)):ee("",!0)]),p("div",Uw,[o.value&&o.value.status==="running"?(_(),w("button",{key:0,type:"button",onClick:T[1]||(T[1]=O=>N(o.value.task_id)),disabled:i.value.has(o.value.task_id),class:"text-xs font-medium px-3 py-1.5 rounded-lg bg-red-500/10 text-red-400 border border-red-500/20 hover:bg-red-500/20 disabled:opacity-40 transition-all duration-150"},I(i.value.has(o.value.task_id)?"Stopping…":"Stop Task"),9,Bw)):(_(),w("span",Hw)),p("button",{type:"button",onClick:ue,class:"bg-surface-3/50 hover:bg-surface-3/70 text-txt-secondary text-sm px-4 py-1.5 rounded-lg border border-edge transition-all duration-150"}," Close ")])])])):ee("",!0)]))}}),Vw={class:"flex flex-col h-full"},qw={class:"flex-1 overflow-y-auto p-3 sm:p-6"},zw={class:"flex justify-between items-center mb-6"},Kw=["disabled"],Ww={key:0,class:"flex items-center justify-center py-16"},Gw={key:1,class:"bg-red-500/10 border border-red-500/20 text-red-400 p-4 rounded-xl mb-4 text-sm"},Zw={open:"",class:"mb-8 group/section"},Jw={class:"cursor-pointer select-none flex items-center gap-3 text-sm font-semibold text-txt-primary mb-4 py-2"},Yw={class:"text-[10px] font-mono text-txt-muted bg-surface-2 px-2 py-0.5 rounded-full border border-edge"},Xw={key:0,class:"flex flex-col items-center py-8"},Qw={class:"w-10 h-10 rounded-xl bg-surface-2 border border-edge flex items-center justify-center mb-3"},ex={key:1,class:"grid gap-3"},tx={class:"flex flex-wrap items-start gap-3"},sx={class:"flex-1 min-w-0"},nx={class:"flex flex-wrap items-center gap-2 mb-1.5"},rx={class:"font-semibold text-txt-primary break-words min-w-0"},ix={key:0,class:"w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse"},ax={class:"flex flex-wrap items-center gap-3 text-xs text-txt-muted mt-1"},ox={class:"font-mono text-accent/80 bg-surface-0/60 px-2 py-0.5 rounded-lg border border-edge/50 break-all"},lx={key:0,class:"flex items-center gap-1 shrink-0"},cx={key:1,class:"flex items-center gap-1 shrink-0"},ux={key:0,class:"text-xs text-txt-muted mt-1.5 break-words"},dx={class:"flex flex-wrap items-center gap-1.5"},hx=["onClick","disabled"],fx=["onClick","disabled"],px=["onClick","disabled"],gx=["onClick"],mx=["onClick","disabled"],bx={key:0,class:"mt-3"},vx=["onClick"],yx={key:1,class:"mt-4 pt-4 border-t border-edge/50"},_x={class:"text-[10px] font-semibold text-txt-muted uppercase tracking-widest mb-3"},wx={key:0,class:"flex items-center gap-2 text-txt-muted text-xs py-2 justify-center"},xx={key:1,class:"text-txt-muted text-xs py-2 text-center"},Ex={key:2,class:"space-y-1.5"},kx={class:"flex-1 min-w-0"},Sx={class:"flex flex-wrap items-center gap-2"},Tx={class:"text-txt-secondary"},Ax={key:0,class:"text-txt-muted mt-0.5"},Rx={key:1,class:"text-red-400 mt-1 break-words bg-red-500/5 rounded px-2 py-1 border border-red-500/10"},Cx={open:"",class:"group/section"},Ox={class:"cursor-pointer select-none flex items-center gap-3 text-sm font-semibold text-txt-primary mb-4 py-2"},$x={class:"text-[10px] font-mono text-txt-muted bg-surface-2 px-2 py-0.5 rounded-full border border-edge"},Nx={key:0,class:"flex flex-col items-center py-8"},Ix={class:"w-10 h-10 rounded-xl bg-surface-2 border border-edge flex items-center justify-center mb-3"},Px={key:1,class:"grid gap-3"},Lx={class:"flex flex-wrap items-start gap-3"},Mx={class:"flex-1 min-w-0"},jx={class:"flex flex-wrap items-center gap-2 mb-1.5"},Dx={class:"font-semibold text-txt-primary break-words min-w-0"},Ux={class:"text-[10px] font-mono text-accent/60 bg-accent/5 px-2 py-0.5 rounded-full border border-accent/10 shrink-0"},Bx={key:0,class:"w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse"},Hx={class:"flex flex-wrap items-center gap-3 text-xs text-txt-muted mt-1"},Fx={class:"font-mono text-accent/80 bg-surface-0/60 px-2 py-0.5 rounded-lg border border-edge/50 break-all"},Vx={key:0,class:"flex items-center gap-1 shrink-0"},qx={key:1,class:"flex items-center gap-1 shrink-0"},zx={key:0,class:"text-xs text-txt-muted mt-1.5 break-words"},Kx={class:"flex flex-wrap items-center gap-1.5"},Wx=["onClick","disabled"],Gx=["onClick","disabled"],Zx=["onClick","disabled"],Jx=["onClick"],Yx=["onClick","disabled"],Xx={key:0,class:"mt-3"},Qx=["onClick"],eE={key:1,class:"mt-4 pt-4 border-t border-edge/50"},tE={class:"text-[10px] font-semibold text-txt-muted uppercase tracking-widest mb-3"},sE={key:0,class:"flex items-center gap-2 text-txt-muted text-xs py-2 justify-center"},nE={key:1,class:"text-txt-muted text-xs py-2 text-center"},rE={key:2,class:"space-y-1.5"},iE={class:"flex-1 min-w-0"},aE={class:"flex flex-wrap items-center gap-2"},oE={class:"text-txt-secondary"},lE={key:0,class:"text-txt-muted mt-0.5"},cE={key:1,class:"text-red-400 mt-1 break-words bg-red-500/5 rounded px-2 py-1 border border-red-500/10"},uE=pt({__name:"SchedulesView",setup(e){const t=Q([]),s=Q([]),n=Q(!0),r=Q(null),i=Q(new Set),a=Q(new Map),o=Q(new Map),l=Q(new Set),c=Q(new Set);function u(N){const R=N.includes("T")||N.endsWith("Z")?N:N.replace(" ","T")+"Z";return new Date(R).toLocaleString()}function d(N){return N==="done"?"bg-emerald-400":N==="failed"?"bg-red-400":"bg-accent animate-pulse"}function h(N){return N==="done"?"bg-emerald-500/10 text-emerald-400 border-emerald-500/20":N==="failed"?"bg-red-500/10 text-red-400 border-red-500/20":"bg-accent/10 text-accent border-accent/20"}function f(N,R){const v=`${N}-${R}`,C=new Set(c.value);C.has(v)?C.delete(v):C.add(v),c.value=C}async function g(N,R){const v=`${N}-${R}`,C=a.value.get(v)??!1,j=new Map(a.value);if(j.set(v,!C),a.value=j,!C&&!o.value.has(v)){const V=new Set(l.value);V.add(v),l.value=V;try{const Z=await Ce(`/api/schedules/${N}/${R}/runs?limit=25`);if(Z.ok){const $=await Z.json(),W=new Map(o.value);W.set(v,$.runs??[]),o.value=W}}catch{}finally{const Z=new Set(l.value);Z.delete(v),l.value=Z}}}async function b(){n.value=!0,r.value=null,o.value=new Map;try{const N=await Ce("/api/schedules");if(!N.ok)throw new Error(`HTTP ${N.status}`);const R=await N.json();t.value=R.io,s.value=R.squads}catch(N){r.value=N instanceof Error?N.message:"Failed to load schedules"}finally{n.value=!1}}async function S(N,R){if(!i.value.has(N)){i.value=new Set(i.value).add(N);try{await R(),await b()}catch(v){r.value=v instanceof Error?v.message:"Action failed"}finally{const v=new Set(i.value);v.delete(N),i.value=v}}}async function E(N,R){await S(`${N}-${R}`,async()=>{const v=await Ce(`/api/schedules/${N}/${R}/pause`,{method:"POST"});if(!v.ok)throw new Error(`HTTP ${v.status}`)})}async function x(N,R){await S(`${N}-${R}`,async()=>{const v=await Ce(`/api/schedules/${N}/${R}/resume`,{method:"POST"});if(!v.ok)throw new Error(`HTTP ${v.status}`)})}async function k(N,R){await S(`${N}-${R}`,async()=>{const v=await Ce(`/api/schedules/${N}/${R}/run-now`,{method:"POST"});if(!v.ok)throw new Error(`HTTP ${v.status}`)})}async function P(N,R,v){window.confirm(`Delete schedule '${v}'?`)&&await S(`${N}-${R}`,async()=>{const C=await Ce(`/api/schedules/${N}/${R}`,{method:"DELETE"});if(!C.ok)throw new Error(`HTTP ${C.status}`)})}return Ht(b),(N,R)=>(_(),w("div",Vw,[p("div",qw,[p("div",zw,[R[1]||(R[1]=p("div",null,[p("h2",{class:"text-xl font-semibold text-txt-primary tracking-tight"},"Schedules"),p("p",{class:"text-xs text-txt-muted mt-0.5"},"Automated tasks & cron jobs")],-1)),p("button",{onClick:b,disabled:n.value,class:"flex items-center gap-1.5 bg-surface-2/60 hover:bg-surface-3/60 disabled:opacity-50 text-txt-secondary hover:text-txt-primary border border-edge hover:border-edge-bright px-3.5 py-2 rounded-xl text-sm transition-all duration-200"},[be(Re,{paths:'<path d="M11.41 3.64a.5.5 0 0 0 0-.71L9.3.8a.5.5 0 0 0-.7.7l1 1a7.5 7.5 0 0 0-4.08 13.5.5.5 0 0 0 .6-.8A6.5 6.5 0 0 1 10.14 3.5L8.59 5.04a.5.5 0 0 0 .7.7l2.12-2.11ZM8.6 16.36a.5.5 0 0 0 0 .71l2.12 2.12a.5.5 0 0 0 .7-.7l-1-1a7.5 7.5 0 0 0 4.07-13.5.5.5 0 1 0-.59.8A6.5 6.5 0 0 1 9.86 16.5l1.55-1.55a.5.5 0 1 0-.7-.7l-2.12 2.11Z"/>',class:"w-3.5 h-3.5"}),R[0]||(R[0]=ve(" Refresh ",-1))],8,Kw)]),n.value?(_(),w("div",Ww,[...R[2]||(R[2]=[p("div",{class:"flex items-center gap-3 text-txt-muted text-sm"},[p("div",{class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"}),ve(" Loading schedules… ")],-1)])])):r.value?(_(),w("div",Gw,I(r.value),1)):(_(),w(ke,{key:2},[p("details",Zw,[p("summary",Jw,[be(Re,{paths:'<path d="M7.65 4.15c.2-.2.5-.2.7 0l5.49 5.46c.21.22.21.57 0 .78l-5.49 5.46a.5.5 0 0 1-.7-.7L12.8 10 7.65 4.85a.5.5 0 0 1 0-.7Z"/>',size:16,class:"text-accent transition-transform group-open/section:rotate-90"}),R[3]||(R[3]=p("span",{class:"tracking-wide uppercase text-xs text-txt-secondary"},"IO Schedules",-1)),p("span",Yw,I(t.value.length),1),R[4]||(R[4]=p("div",{class:"flex-1 h-px bg-gradient-to-r from-edge to-transparent"},null,-1))]),t.value.length===0?(_(),w("div",Xw,[p("div",Qw,[be(Re,{paths:'<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm0 1a7 7 0 1 0 0 14 7 7 0 0 0 0-14Zm-.5 2a.5.5 0 0 1 .5.41V10h2.5a.5.5 0 0 1 .09 1H9.5a.5.5 0 0 1-.5-.41V5.5c0-.28.22-.5.5-.5Z"/>',size:20,class:"text-txt-muted"})]),R[5]||(R[5]=p("p",{class:"text-txt-muted text-sm"},"No IO schedules configured",-1))])):(_(),w("div",ex,[(_(!0),w(ke,null,ze(t.value,v=>(_(),w("div",{key:v.id,class:"bg-surface-2/50 border border-edge rounded-xl p-4 hover:border-edge-bright hover:shadow-card transition-all duration-200 overflow-hidden"},[p("div",tx,[p("div",sx,[p("div",nx,[p("span",rx,I(v.name),1),p("span",{class:ge(["inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium tracking-wide uppercase border shrink-0",v.enabled?"bg-emerald-500/10 text-emerald-400 border-emerald-500/20":"bg-surface-3/60 text-txt-muted border-edge"])},[v.enabled?(_(),w("span",ix)):ee("",!0),ve(" "+I(v.enabled?"Active":"Paused"),1)],2)]),p("div",ax,[p("code",ox,I(v.cron_expr),1),v.next_run_at?(_(),w("span",lx,[be(Re,{paths:'<path d="M17.22 8.69a1.5 1.5 0 0 1 0 2.62l-10 5.5A1.5 1.5 0 0 1 5 15.5v-11A1.5 1.5 0 0 1 7.22 3.2l10 5.5Zm-.48 1.75a.5.5 0 0 0 0-.88l-10-5.5A.5.5 0 0 0 6 4.5v11c0 .38.4.62.74.44l10-5.5Z"/>',size:12}),ve(" "+I(u(v.next_run_at)),1)])):ee("",!0),v.last_run_at?(_(),w("span",cx,[be(Re,{paths:'<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm0 1a7 7 0 1 0 0 14 7 7 0 0 0 0-14Zm-.5 2a.5.5 0 0 1 .5.41V10h2.5a.5.5 0 0 1 .09 1H9.5a.5.5 0 0 1-.5-.41V5.5c0-.28.22-.5.5-.5Z"/>',size:12}),ve(" "+I(u(v.last_run_at)),1)])):ee("",!0)]),v.notes?(_(),w("p",ux,I(v.notes),1)):ee("",!0)]),p("div",dx,[v.enabled?(_(),w("button",{key:0,onClick:C=>E("io",v.id),disabled:i.value.has(`io-${v.id}`),class:"text-txt-secondary hover:text-txt-primary disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-surface-3/40 hover:bg-surface-3 border border-edge/50 hover:border-edge transition-all duration-200",title:"Pause"},"⏸ Pause",8,hx)):(_(),w("button",{key:1,onClick:C=>x("io",v.id),disabled:i.value.has(`io-${v.id}`),class:"text-txt-secondary hover:text-txt-primary disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-surface-3/40 hover:bg-surface-3 border border-edge/50 hover:border-edge transition-all duration-200",title:"Resume"},"▶ Resume",8,fx)),p("button",{onClick:C=>k("io",v.id),disabled:i.value.has(`io-${v.id}`),class:"text-accent hover:text-white disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-accent/10 hover:bg-accent/20 border border-accent/20 hover:border-accent/40 transition-all duration-200",title:"Run now"},"▶ Run now",8,px),p("button",{onClick:C=>g("io",v.id),class:ge(["text-xs px-2.5 py-1.5 rounded-lg border transition-all duration-200",a.value.get(`io-${v.id}`)?"bg-accent/10 text-accent border-accent/20":"bg-surface-3/40 hover:bg-surface-3 text-txt-secondary hover:text-txt-primary border-edge/50 hover:border-edge"]),title:"Toggle run history"},"📋 History",10,gx),p("button",{onClick:C=>P("io",v.id,v.name),disabled:i.value.has(`io-${v.id}`),class:"text-red-400/70 hover:text-red-400 disabled:opacity-50 text-xs px-2 py-1.5 rounded-lg hover:bg-red-500/10 border border-transparent hover:border-red-500/20 transition-all duration-200",title:"Delete"},[be(Re,{paths:'<path d="M8.5 4h3a1.5 1.5 0 0 0-3 0Zm-1 0a2.5 2.5 0 0 1 5 0h5a.5.5 0 0 1 0 1h-1.05l-1.2 10.34A3 3 0 0 1 12.27 18H7.73a3 3 0 0 1-2.98-2.66L3.55 5H2.5a.5.5 0 0 1 0-1h5ZM5.74 15.23A2 2 0 0 0 7.73 17h4.54a2 2 0 0 0 1.99-1.77L15.44 5H4.56l1.18 10.23ZM8.5 7.5c.28 0 .5.22.5.5v6a.5.5 0 0 1-1 0V8c0-.28.22-.5.5-.5ZM12 8a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V8Z"/>',size:14})],8,mx)])]),v.prompt?(_(),w("div",bx,[p("p",{class:ge(["text-xs text-txt-muted break-words",c.value.has(`io-${v.id}`)?"":"line-clamp-2"])},I(v.prompt),3),v.prompt.length>120?(_(),w("button",{key:0,onClick:C=>f("io",v.id),class:"text-[10px] text-accent/70 hover:text-accent mt-1 transition-colors"},I(c.value.has(`io-${v.id}`)?"Show less ▲":"Show more ▼"),9,vx)):ee("",!0)])):ee("",!0),a.value.get(`io-${v.id}`)?(_(),w("div",yx,[p("h4",_x," Run history — "+I(v.name),1),l.value.has(`io-${v.id}`)?(_(),w("div",wx,[...R[6]||(R[6]=[p("div",{class:"w-1 h-1 rounded-full bg-accent animate-pulse"},null,-1),ve(" Loading… ",-1)])])):!o.value.get(`io-${v.id}`)||o.value.get(`io-${v.id}`).length===0?(_(),w("div",xx," No history yet ")):(_(),w("ul",Ex,[(_(!0),w(ke,null,ze(o.value.get(`io-${v.id}`),C=>(_(),w("li",{key:C.id,class:"flex items-start gap-2.5 text-xs bg-surface-0/50 rounded-lg p-2.5 border border-edge/30"},[p("span",{class:ge(["w-2 h-2 rounded-full mt-1 shrink-0",d(C.status)])},null,2),p("div",kx,[p("div",Sx,[p("span",Tx,I(u(C.started_at)),1),p("span",{class:ge(["px-1.5 py-0.5 rounded-full text-[10px] font-medium tracking-wide uppercase border shrink-0",h(C.status)])},I(C.status),3)]),C.completed_at?(_(),w("div",Ax," Completed: "+I(u(C.completed_at)),1)):ee("",!0),C.error_text?(_(),w("div",Rx,I(C.error_text),1)):ee("",!0)])]))),128))]))])):ee("",!0)]))),128))]))]),p("details",Cx,[p("summary",Ox,[be(Re,{paths:'<path d="M7.65 4.15c.2-.2.5-.2.7 0l5.49 5.46c.21.22.21.57 0 .78l-5.49 5.46a.5.5 0 0 1-.7-.7L12.8 10 7.65 4.85a.5.5 0 0 1 0-.7Z"/>',size:16,class:"text-accent transition-transform group-open/section:rotate-90"}),R[7]||(R[7]=p("span",{class:"tracking-wide uppercase text-xs text-txt-secondary"},"Squad Schedules",-1)),p("span",$x,I(s.value.length),1),R[8]||(R[8]=p("div",{class:"flex-1 h-px bg-gradient-to-r from-edge to-transparent"},null,-1))]),s.value.length===0?(_(),w("div",Nx,[p("div",Ix,[be(Re,{paths:'<path d="M10 3a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM7.5 4.5a2.5 2.5 0 1 1 5 0 2.5 2.5 0 0 1-5 0Zm8-.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm-10 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm.6 12H5a2 2 0 0 1-2-2V9.25c0-.14.11-.25.25-.25h1.76c.04-.37.17-.7.37-1H3.25C2.56 8 2 8.56 2 9.25V13a3 3 0 0 0 3.4 2.97 4.96 4.96 0 0 1-.3-.97Zm9.5.97A3 3 0 0 0 18 13V9.25C18 8.56 17.44 8 16.75 8h-2.13c.2.3.33.63.37 1h1.76c.14 0 .25.11.25.25V13a2 2 0 0 1-2.1 2c-.07.34-.17.66-.3.97ZM7.25 8C6.56 8 6 8.56 6 9.25V14a4 4 0 0 0 8 0V9.25C14 8.56 13.44 8 12.75 8h-5.5ZM7 9.25c0-.14.11-.25.25-.25h5.5c.14 0 .25.11.25.25V14a3 3 0 1 1-6 0V9.25Z"/>',size:20,class:"text-txt-muted"})]),R[9]||(R[9]=p("p",{class:"text-txt-muted text-sm"},"No squad schedules configured",-1))])):(_(),w("div",Px,[(_(!0),w(ke,null,ze(s.value,v=>(_(),w("div",{key:v.id,class:"bg-surface-2/50 border border-edge rounded-xl p-4 hover:border-edge-bright hover:shadow-card transition-all duration-200 overflow-hidden"},[p("div",Lx,[p("div",Mx,[p("div",jx,[p("span",Dx,I(v.name),1),p("span",Ux,I(v.squad_slug),1),p("span",{class:ge(["inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium tracking-wide uppercase border shrink-0",v.enabled?"bg-emerald-500/10 text-emerald-400 border-emerald-500/20":"bg-surface-3/60 text-txt-muted border-edge"])},[v.enabled?(_(),w("span",Bx)):ee("",!0),ve(" "+I(v.enabled?"Active":"Paused"),1)],2)]),p("div",Hx,[p("code",Fx,I(v.cron_expr),1),v.next_run_at?(_(),w("span",Vx,[be(Re,{paths:'<path d="M17.22 8.69a1.5 1.5 0 0 1 0 2.62l-10 5.5A1.5 1.5 0 0 1 5 15.5v-11A1.5 1.5 0 0 1 7.22 3.2l10 5.5Zm-.48 1.75a.5.5 0 0 0 0-.88l-10-5.5A.5.5 0 0 0 6 4.5v11c0 .38.4.62.74.44l10-5.5Z"/>',size:12}),ve(" "+I(u(v.next_run_at)),1)])):ee("",!0),v.last_run_at?(_(),w("span",qx,[be(Re,{paths:'<path d="M10 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16Zm0 1a7 7 0 1 0 0 14 7 7 0 0 0 0-14Zm-.5 2a.5.5 0 0 1 .5.41V10h2.5a.5.5 0 0 1 .09 1H9.5a.5.5 0 0 1-.5-.41V5.5c0-.28.22-.5.5-.5Z"/>',size:12}),ve(" "+I(u(v.last_run_at)),1)])):ee("",!0)]),v.notes?(_(),w("p",zx,I(v.notes),1)):ee("",!0)]),p("div",Kx,[v.enabled?(_(),w("button",{key:0,onClick:C=>E("squads",v.id),disabled:i.value.has(`squads-${v.id}`),class:"text-txt-secondary hover:text-txt-primary disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-surface-3/40 hover:bg-surface-3 border border-edge/50 hover:border-edge transition-all duration-200",title:"Pause"},"⏸ Pause",8,Wx)):(_(),w("button",{key:1,onClick:C=>x("squads",v.id),disabled:i.value.has(`squads-${v.id}`),class:"text-txt-secondary hover:text-txt-primary disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-surface-3/40 hover:bg-surface-3 border border-edge/50 hover:border-edge transition-all duration-200",title:"Resume"},"▶ Resume",8,Gx)),p("button",{onClick:C=>k("squads",v.id),disabled:i.value.has(`squads-${v.id}`),class:"text-accent hover:text-white disabled:opacity-50 text-xs px-2.5 py-1.5 rounded-lg bg-accent/10 hover:bg-accent/20 border border-accent/20 hover:border-accent/40 transition-all duration-200",title:"Run now"},"▶ Run now",8,Zx),p("button",{onClick:C=>g("squads",v.id),class:ge(["text-xs px-2.5 py-1.5 rounded-lg border transition-all duration-200",a.value.get(`squads-${v.id}`)?"bg-accent/10 text-accent border-accent/20":"bg-surface-3/40 hover:bg-surface-3 text-txt-secondary hover:text-txt-primary border-edge/50 hover:border-edge"]),title:"Toggle run history"},"📋 History",10,Jx),p("button",{onClick:C=>P("squads",v.id,v.name),disabled:i.value.has(`squads-${v.id}`),class:"text-red-400/70 hover:text-red-400 disabled:opacity-50 text-xs px-2 py-1.5 rounded-lg hover:bg-red-500/10 border border-transparent hover:border-red-500/20 transition-all duration-200",title:"Delete"},[be(Re,{paths:'<path d="M8.5 4h3a1.5 1.5 0 0 0-3 0Zm-1 0a2.5 2.5 0 0 1 5 0h5a.5.5 0 0 1 0 1h-1.05l-1.2 10.34A3 3 0 0 1 12.27 18H7.73a3 3 0 0 1-2.98-2.66L3.55 5H2.5a.5.5 0 0 1 0-1h5ZM5.74 15.23A2 2 0 0 0 7.73 17h4.54a2 2 0 0 0 1.99-1.77L15.44 5H4.56l1.18 10.23ZM8.5 7.5c.28 0 .5.22.5.5v6a.5.5 0 0 1-1 0V8c0-.28.22-.5.5-.5ZM12 8a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V8Z"/>',size:14})],8,Yx)])]),v.prompt?(_(),w("div",Xx,[p("p",{class:ge(["text-xs text-txt-muted break-words",c.value.has(`squads-${v.id}`)?"":"line-clamp-2"])},I(v.prompt),3),v.prompt.length>120?(_(),w("button",{key:0,onClick:C=>f("squads",v.id),class:"text-[10px] text-accent/70 hover:text-accent mt-1 transition-colors"},I(c.value.has(`squads-${v.id}`)?"Show less ▲":"Show more ▼"),9,Qx)):ee("",!0)])):ee("",!0),a.value.get(`squads-${v.id}`)?(_(),w("div",eE,[p("h4",tE," Run history — "+I(v.name),1),l.value.has(`squads-${v.id}`)?(_(),w("div",sE,[...R[10]||(R[10]=[p("div",{class:"w-1 h-1 rounded-full bg-accent animate-pulse"},null,-1),ve(" Loading… ",-1)])])):!o.value.get(`squads-${v.id}`)||o.value.get(`squads-${v.id}`).length===0?(_(),w("div",nE," No history yet ")):(_(),w("ul",rE,[(_(!0),w(ke,null,ze(o.value.get(`squads-${v.id}`),C=>(_(),w("li",{key:C.id,class:"flex items-start gap-2.5 text-xs bg-surface-0/50 rounded-lg p-2.5 border border-edge/30"},[p("span",{class:ge(["w-2 h-2 rounded-full mt-1 shrink-0",d(C.status)])},null,2),p("div",iE,[p("div",aE,[p("span",oE,I(u(C.started_at)),1),p("span",{class:ge(["px-1.5 py-0.5 rounded-full text-[10px] font-medium tracking-wide uppercase border shrink-0",h(C.status)])},I(C.status),3)]),C.completed_at?(_(),w("div",lE," Completed: "+I(u(C.completed_at)),1)):ee("",!0),C.error_text?(_(),w("div",cE,I(C.error_text),1)):ee("",!0)])]))),128))]))])):ee("",!0)]))),128))]))])],64))])]))}}),dE={class:"relative flex flex-col h-full p-3 sm:p-6"},hE={class:"flex justify-between items-start mb-4"},fE={class:"flex items-center gap-2 flex-wrap justify-end"},pE={class:"flex gap-1.5 mb-4 p-1 bg-surface-2/50 rounded-xl border border-edge"},gE=["onClick"],mE={key:0,class:"ml-1 font-mono text-[10px] opacity-70"},bE={key:0,class:"flex-1 flex items-center justify-center"},vE={key:1,class:"flex-1 flex flex-col items-center justify-center"},yE={class:"w-14 h-14 rounded-xl bg-surface-2 border border-edge flex items-center justify-center mb-4"},_E={class:"text-txt-muted/60 text-xs mt-1"},wE=["onClick"],xE=["onClick"],EE={class:"mt-0.5 shrink-0"},kE={key:1,class:"mt-2 w-1.5 h-1.5 rounded-full bg-accent shadow-glow-sm shrink-0"},SE={key:2,class:"mt-2 w-1.5 h-1.5 rounded-full bg-edge shrink-0"},TE={class:"flex-1 min-w-0"},AE={class:"flex items-center gap-2 mb-0.5"},RE={class:"text-sm font-semibold text-txt-primary truncate leading-snug"},CE={key:0,class:"text-[10px] font-mono tracking-wider uppercase text-txt-muted bg-surface-0/60 px-1.5 py-0.5 rounded border border-edge/50 shrink-0"},OE={class:"text-[10px] text-txt-muted mb-1"},$E={key:0,class:"text-xs text-txt-secondary line-clamp-2 leading-relaxed"},NE={key:3,class:"flex items-center gap-1 shrink-0 opacity-0 group-hover:opacity-100 transition-opacity duration-200"},IE=["onClick"],PE=["onClick","disabled"],LE={key:0,class:"px-4 pb-4"},ME=["innerHTML"],jE={key:0,class:"absolute bottom-4 left-1/2 -translate-x-1/2 flex items-center gap-3 px-4 py-2.5 rounded-2xl bg-surface-3 border border-edge-bright shadow-card backdrop-blur-sm z-20"},DE={class:"text-xs font-semibold text-txt-secondary mr-1 whitespace-nowrap"},UE=["disabled"],BE=["disabled"],HE={key:3,class:"mt-3 flex items-center gap-2 text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-xl px-3.5 py-2.5"},FE=pt({__name:"FeedView",setup(e){const t=[{label:"All",value:"all"},{label:"Deliverables",value:"deliverable"},{label:"Notifications",value:"notification"}],s=Q([]),n=Q(!0),r=Q("all"),i=Q(new Set),a=Q(new Set),o=Q(null),l=Q(!1),c=Q(new Set),u=Q(!1),d=je(()=>r.value==="all"?s.value:s.value.filter(V=>V.type===r.value)),h=je(()=>d.value.length>0&&d.value.every(V=>c.value.has(V.id)));function f(V){return s.value.filter(Z=>Z.type===V).length}function g(V){try{const Z=V.includes("T")||V.endsWith("Z")?V:V.replace(" ","T")+"Z";return new Date(Z).toLocaleString()}catch{return V}}function b(V){return V.replace(/[#*`_~[\]()]/g,"").slice(0,200)}function S(V){const Z=new Set(i.value);Z.has(V)?Z.delete(V):Z.add(V),i.value=Z}function E(){l.value=!l.value,l.value||(c.value=new Set)}function x(V){const Z=new Set(c.value);Z.has(V)?Z.delete(V):Z.add(V),c.value=Z}function k(){h.value?c.value=new Set:c.value=new Set(d.value.map(V=>V.id))}async function P(){n.value=!0,o.value=null;try{const V=await Ce("/api/feed?limit=100");if(V.ok){const Z=await V.json();s.value=Z.entries??[]}}catch{}n.value=!1}async function N(V){try{await Ce(`/api/feed/${V}/read`,{method:"POST"});const Z=s.value.find($=>$.id===V);Z&&(Z.read_at=new Date().toISOString())}catch{}}async function R(){const V=r.value!=="all"?`?type=${r.value}`:"";try{await Ce(`/api/feed/read-all${V}`,{method:"POST"});const Z=new Date().toISOString();for(const $ of s.value)!$.read_at&&(r.value==="all"||$.type===r.value)&&($.read_at=Z)}catch{}}async function v(V){if(!window.confirm("Delete this entry?"))return;const Z=new Set(a.value);Z.add(V),a.value=Z;try{const $=await Ce(`/api/feed/${V}`,{method:"DELETE"});if($.ok){s.value=s.value.filter(L=>L.id!==V);const W=new Set(i.value);W.delete(V),i.value=W}else o.value=`Failed to delete entry (HTTP ${$.status})`}catch($){o.value=$ instanceof Error?$.message:"Delete failed"}finally{const $=new Set(a.value);$.delete(V),a.value=$}}async function C(){const V=Array.from(c.value);if(V.length!==0){u.value=!0;try{const Z=await Ce("/api/feed/batch-read",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:V})});if(Z.ok){const $=new Date().toISOString();for(const W of s.value)V.includes(W.id)&&(W.read_at=W.read_at??$);c.value=new Set}else o.value=`Bulk mark-read failed (HTTP ${Z.status})`}catch(Z){o.value=Z instanceof Error?Z.message:"Bulk mark-read failed"}finally{u.value=!1}}}async function j(){const V=Array.from(c.value);if(V.length!==0&&window.confirm(`Delete ${V.length} item${V.length===1?"":"s"}?`)){u.value=!0;try{const Z=await Ce("/api/feed/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:V})});if(Z.ok){s.value=s.value.filter(W=>!V.includes(W.id));const $=new Set(i.value);V.forEach(W=>$.delete(W)),i.value=$,c.value=new Set}else o.value=`Bulk delete failed (HTTP ${Z.status})`}catch(Z){o.value=Z instanceof Error?Z.message:"Bulk delete failed"}finally{u.value=!1}}}return Ht(P),(V,Z)=>(_(),w("div",dE,[p("div",hE,[Z[0]||(Z[0]=p("div",null,[p("h2",{class:"text-xl font-semibold text-txt-primary tracking-tight"},"Feed"),p("p",{class:"text-xs text-txt-muted mt-0.5"},"Messages, results & notifications")],-1)),p("div",fE,[l.value&&d.value.length>0?(_(),w("button",{key:0,onClick:k,class:"text-xs text-txt-secondary hover:text-txt-primary transition-colors font-medium"},I(h.value?"Deselect all":"Select all"),1)):ee("",!0),!l.value&&s.value.length>0?(_(),w("button",{key:1,onClick:R,class:"text-xs text-accent hover:text-accent-glow transition-colors font-medium"}," Mark all read ")):ee("",!0),s.value.length>0?(_(),w("button",{key:2,onClick:E,class:ge(["text-xs px-2.5 py-1 rounded-lg border transition-all duration-150 font-medium",l.value?"text-accent border-accent/30 bg-accent/10 hover:bg-accent/20":"text-txt-muted border-edge hover:text-txt-secondary hover:border-edge-bright hover:bg-surface-3/40"])},I(l.value?"Cancel":"Select"),3)):ee("",!0)])]),p("div",pE,[(_(),w(ke,null,ze(t,$=>p("button",{key:$.value,onClick:W=>r.value=$.value,class:ge(["flex-1 text-xs font-medium py-1.5 px-3 rounded-lg transition-all duration-150",r.value===$.value?"bg-accent/10 text-accent border border-accent/20":"text-txt-muted hover:text-txt-secondary hover:bg-surface-3/50 border border-transparent"])},[ve(I($.label)+" ",1),$.value!=="all"&&f($.value)>0?(_(),w("span",mE,"("+I(f($.value))+")",1)):ee("",!0)],10,gE)),64))]),n.value?(_(),w("div",bE,[...Z[1]||(Z[1]=[p("div",{class:"flex items-center gap-3 text-txt-muted text-sm"},[p("div",{class:"w-1.5 h-1.5 rounded-full bg-accent animate-pulse"}),ve(" Loading… ")],-1)])])):d.value.length===0?(_(),w("div",vE,[p("div",yE,[be(Re,{paths:'<path d="M10 2a5.92 5.92 0 0 1 5.98 5.36l.02.22V11.4l.92 2.22a1 1 0 0 1 .06.17l.01.08.01.13a1 1 0 0 1-.75.97l-.11.02L16 15h-3.5v.17a2.5 2.5 0 0 1-5 0V15H4a1 1 0 0 1-.26-.03l-.13-.04a1 1 0 0 1-.6-1.05l.02-.13.05-.13L4 11.4V7.57A5.9 5.9 0 0 1 10 2Zm1.5 13h-3v.15a1.5 1.5 0 0 0 1.36 1.34l.14.01c.78 0 1.42-.6 1.5-1.36V15ZM10 3a4.9 4.9 0 0 0-4.98 4.38L5 7.6V11.5l-.04.2L4 14h12l-.96-2.3-.04-.2V7.61A4.9 4.9 0 0 0 10 3Z"/>',size:28,class:"text-txt-muted"})]),Z[2]||(Z[2]=p("p",{class:"text-txt-muted text-sm font-medium"},"Nothing here yet",-1)),p("p",_E,I(r.value==="all"?"Your feed is empty":r.value==="deliverable"?"No deliverables":"No notifications"),1)])):(_(),w("ul",{key:2,class:ge(["space-y-2 overflow-y-auto flex-1 pr-1",l.value&&c.value.size>0?"pb-16":""])},[(_(!0),w(ke,null,ze(d.value,$=>(_(),w("li",{key:$.id,class:ge(["group bg-surface-2/50 border border-edge rounded-xl hover:border-edge-bright hover:shadow-card transition-all duration-200 overflow-hidden animate-fade-in",[$.read_at?"":"glow-inner",l.value&&c.value.has($.id)?"ring-1 ring-accent/40 bg-accent/5 border-accent/30":""]])},[p("div",{class:ge(["flex items-start gap-3 p-4",(l.value,"cursor-pointer")]),onClick:W=>l.value?x($.id):S($.id)},[l.value?(_(),w("div",{key:0,class:"mt-0.5 shrink-0",onClick:yt(W=>x($.id),["stop"])},[p("div",{class:ge(["w-5 h-5 rounded-full border-2 flex items-center justify-center transition-all duration-150",c.value.has($.id)?"border-accent bg-accent shadow-glow-sm":"border-edge hover:border-accent/60"])},[c.value.has($.id)?(_(),nn(Re,{key:0,paths:'<path d="M3.37 10.17a.5.5 0 0 0-.74.66l4 4.5c.19.22.52.23.72.02l10.5-10.5a.5.5 0 0 0-.7-.7L7.02 14.27l-3.65-4.1Z"/>',size:11,class:"text-surface-0"})):ee("",!0)],2)],8,xE)):ee("",!0),p("div",EE,[$.type==="deliverable"?(_(),nn(Re,{key:0,paths:'<path d="M6 3a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3H6Zm10 7h-3.5a.5.5 0 0 0-.5.5v.01a1.75 1.75 0 0 1-.03.3c-.04.2-.1.46-.23.72-.13.25-.3.49-.57.66-.26.18-.63.31-1.17.31-.54 0-.9-.13-1.17-.3a1.7 1.7 0 0 1-.57-.67A2.57 2.57 0 0 1 8 10.5v-.01a.5.5 0 0 0-.5-.5H4V6c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v4ZM4 11h3.05c.05.26.14.62.32.97.18.38.47.76.9 1.06.45.29 1.02.47 1.73.47s1.28-.18 1.72-.47c.44-.3.73-.68.91-1.06.18-.35.27-.7.32-.97H16v3a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3Z"/>',size:16,class:ge($.read_at?"text-txt-muted":"text-accent")},null,8,["class"])):(_(),nn(Re,{key:1,paths:'<path d="M10 2a5.92 5.92 0 0 1 5.98 5.36l.02.22V11.4l.92 2.22a1 1 0 0 1 .06.17l.01.08.01.13a1 1 0 0 1-.75.97l-.11.02L16 15h-3.5v.17a2.5 2.5 0 0 1-5 0V15H4a1 1 0 0 1-.26-.03l-.13-.04a1 1 0 0 1-.6-1.05l.02-.13.05-.13L4 11.4V7.57A5.9 5.9 0 0 1 10 2Zm1.5 13h-3v.15a1.5 1.5 0 0 0 1.36 1.34l.14.01c.78 0 1.42-.6 1.5-1.36V15ZM10 3a4.9 4.9 0 0 0-4.98 4.38L5 7.6V11.5l-.04.2L4 14h12l-.96-2.3-.04-.2V7.61A4.9 4.9 0 0 0 10 3Z"/>',size:16,class:ge($.read_at?"text-txt-muted":"text-accent")},null,8,["class"]))]),$.read_at?(_(),w("span",SE)):(_(),w("span",kE)),p("div",TE,[p("div",AE,[p("span",RE,I($.title),1),$.source_type?(_(),w("span",CE,I($.source_type),1)):ee("",!0)]),p("p",OE,I(g($.created_at)),1),i.value.has($.id)?ee("",!0):(_(),w("p",$E,I(b($.body)),1))]),l.value?ee("",!0):(_(),w("div",NE,[$.read_at?ee("",!0):(_(),w("button",{key:0,onClick:yt(W=>N($.id),["stop"]),class:"p-1.5 rounded-lg text-txt-muted hover:text-accent hover:bg-accent/10 border border-transparent hover:border-accent/20 transition-all duration-150",title:"Mark as read"},[be(Re,{paths:'<path d="M3.37 10.17a.5.5 0 0 0-.74.66l4 4.5c.19.22.52.23.72.02l10.5-10.5a.5.5 0 0 0-.7-.7L7.02 14.27l-3.65-4.1Z"/>',size:14})],8,IE)),p("button",{onClick:yt(W=>v($.id),["stop"]),disabled:a.value.has($.id),class:"p-1.5 rounded-lg text-txt-muted hover:text-red-400 hover:bg-red-500/10 border border-transparent hover:border-red-500/20 disabled:opacity-30 transition-all duration-150",title:"Delete"},[be(Re,{paths:'<path d="M8.5 4h3a1.5 1.5 0 0 0-3 0Zm-1 0a2.5 2.5 0 0 1 5 0h5a.5.5 0 0 1 0 1h-1.05l-1.2 10.34A3 3 0 0 1 12.27 18H7.73a3 3 0 0 1-2.98-2.66L3.55 5H2.5a.5.5 0 0 1 0-1h5ZM5.74 15.23A2 2 0 0 0 7.73 17h4.54a2 2 0 0 0 1.99-1.77L15.44 5H4.56l1.18 10.23ZM8.5 7.5c.28 0 .5.22.5.5v6a.5.5 0 0 1-1 0V8c0-.28.22-.5.5-.5ZM12 8a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V8Z"/>',size:14})],8,PE)]))],10,wE),!l.value&&i.value.has($.id)?(_(),w("div",LE,[p("div",{class:"text-sm text-txt-secondary bg-surface-0/60 rounded-xl p-4 border border-edge/50 wiki-content leading-relaxed",innerHTML:Ie(Ms)($.body)},null,8,ME)])):ee("",!0)],2))),128))],2)),be(ii,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 translate-y-4","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-4"},{default:gs(()=>[l.value&&c.value.size>0?(_(),w("div",jE,[p("span",DE,I(c.value.size)+" selected ",1),p("button",{onClick:C,disabled:u.value,class:"flex items-center gap-1.5 text-xs font-medium px-3 py-1.5 rounded-xl bg-accent/15 text-accent border border-accent/25 hover:bg-accent/25 disabled:opacity-40 transition-all duration-150"},[be(Re,{paths:'<path d="M3.37 10.17a.5.5 0 0 0-.74.66l4 4.5c.19.22.52.23.72.02l10.5-10.5a.5.5 0 0 0-.7-.7L7.02 14.27l-3.65-4.1Z"/>',size:14}),Z[3]||(Z[3]=ve(" Mark read ",-1))],8,UE),p("button",{onClick:j,disabled:u.value,class:"flex items-center gap-1.5 text-xs font-medium px-3 py-1.5 rounded-xl bg-red-500/10 text-red-400 border border-red-500/20 hover:bg-red-500/20 disabled:opacity-40 transition-all duration-150"},[be(Re,{paths:'<path d="M8.5 4h3a1.5 1.5 0 0 0-3 0Zm-1 0a2.5 2.5 0 0 1 5 0h5a.5.5 0 0 1 0 1h-1.05l-1.2 10.34A3 3 0 0 1 12.27 18H7.73a3 3 0 0 1-2.98-2.66L3.55 5H2.5a.5.5 0 0 1 0-1h5ZM5.74 15.23A2 2 0 0 0 7.73 17h4.54a2 2 0 0 0 1.99-1.77L15.44 5H4.56l1.18 10.23ZM8.5 7.5c.28 0 .5.22.5.5v6a.5.5 0 0 1-1 0V8c0-.28.22-.5.5-.5ZM12 8a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V8Z"/>',size:14}),Z[4]||(Z[4]=ve(" Delete ",-1))],8,BE)])):ee("",!0)]),_:1}),o.value?(_(),w("div",HE,[be(Re,{paths:'<path d="m4.09 4.22.06-.07a.5.5 0 0 1 .63-.06l.07.06L10 9.29l5.15-5.14a.5.5 0 0 1 .63-.06l.07.06c.18.17.2.44.06.63l-.06.07L10.71 10l5.14 5.15c.18.17.2.44.06.63l-.06.07a.5.5 0 0 1-.63.06l-.07-.06L10 10.71l-5.15 5.14a.5.5 0 0 1-.63.06l-.07-.06a.5.5 0 0 1-.06-.63l.06-.07L9.29 10 4.15 4.85a.5.5 0 0 1-.06-.63l.06-.07-.06.07Z"/>',size:16,class:"shrink-0"}),ve(" "+I(o.value),1)])):ee("",!0)]))}}),VE={class:"flex flex-col md:flex-row h-full overflow-hidden bg-surface-0"},qE={class:"p-3.5 shrink-0"},zE={class:"flex items-center justify-between mb-3"},KE={class:"text-[10px] text-txt-muted font-mono bg-surface-2/60 px-1.5 py-0.5 rounded"},WE={key:0,class:"flex-1 flex items-center justify-center"},GE={key:1,class:"flex-1 p-4"},ZE={class:"text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2"},JE={key:2,class:"flex-1 overflow-y-auto py-2 px-2"},YE={key:0,class:"px-2 py-3 text-sm text-txt-muted text-center"},XE=["onClick"],QE={key:0,class:"absolute left-0 top-1/2 -translate-y-1/2 w-[3px] h-5 rounded-r-full bg-accent shadow-glow-sm"},ek={key:0,class:"md:hidden flex items-center gap-2 px-3 py-2 border-b border-edge bg-surface-1/60 shrink-0"},tk={class:"text-xs text-txt-primary font-medium truncate"},sk={key:1,class:"flex-1 flex flex-col items-center justify-center select-none"},nk={key:2,class:"flex-1 flex items-center justify-center"},rk={key:3,class:"flex-1 p-6"},ik={class:"inline-flex items-center gap-2 text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2"},ak={key:4,class:"flex-1 overflow-y-auto"},ok={class:"max-w-3xl mx-auto px-6 py-6"},lk={class:"text-xl font-bold text-txt-primary mb-4 pb-3 border-b border-edge"},ck=["innerHTML"],uk=pt({__name:"WikiView",setup(e){const t=Q([]),s=Q(null),n=Q(""),r=Q(""),i=Q(!1),a=Q(!1),o=Q(""),l=Q(""),c=je(()=>{const f=r.value.trim().toLowerCase();return f?t.value.filter(g=>g.title.toLowerCase().includes(f)):t.value}),u=je(()=>Ms(n.value));async function d(){i.value=!0,o.value="";try{const f=await Ce("/api/wiki");if(!f.ok)throw new Error(`HTTP ${f.status}`);const g=await f.json();t.value=g.pages??[]}catch(f){o.value=f instanceof Error?f.message:"Failed to load pages"}finally{i.value=!1}}async function h(f){var g;if(((g=s.value)==null?void 0:g.path)!==f.path){s.value=f,n.value="",a.value=!0,l.value="";try{const b=await Ce(`/api/wiki/${encodeURIComponent(f.path)}`);if(!b.ok)throw new Error(`HTTP ${b.status}`);const S=await b.json();n.value=S.content??""}catch(b){l.value=b instanceof Error?b.message:"Failed to load page"}finally{a.value=!1}}}return Ht(d),(f,g)=>(_(),w("div",VE,[p("div",{class:ge(["bg-surface-1/70 backdrop-blur-sm border-edge flex flex-col",s.value?"hidden md:flex md:w-72 md:shrink-0 md:border-r":"flex w-full md:w-72 md:shrink-0 border-b md:border-b-0 md:border-r md:h-full max-h-64 md:max-h-none"])},[p("div",qE,[p("div",zE,[g[2]||(g[2]=p("h2",{class:"text-sm font-semibold text-txt-primary tracking-tight flex items-center gap-1.5"},[p("span",{class:"text-base"},"📚"),ve(" Wiki ")],-1)),p("span",KE,I(c.value.length),1)]),dt(p("input",{"onUpdate:modelValue":g[0]||(g[0]=b=>r.value=b),type:"text",placeholder:"Filter pages…",class:"w-full px-3 py-1.5 text-sm bg-surface-2/50 border border-edge rounded-lg text-txt-primary placeholder-txt-muted/50 focus:outline-none focus:border-accent/40 focus:shadow-glow-sm transition-all duration-200"},null,512),[[kt,r.value]])]),g[4]||(g[4]=p("div",{class:"mx-3 h-px bg-gradient-to-r from-transparent via-edge to-transparent"},null,-1)),i.value?(_(),w("div",WE,[...g[3]||(g[3]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading… ")],-1)])])):o.value?(_(),w("div",GE,[p("div",ZE,I(o.value),1)])):(_(),w("ul",JE,[c.value.length===0?(_(),w("li",YE," No pages found ")):ee("",!0),(_(!0),w(ke,null,ze(c.value,b=>{var S,E,x;return _(),w("li",{key:b.path,onClick:k=>h(b),class:ge(["relative px-2.5 py-2 rounded-lg cursor-pointer text-sm transition-all duration-150 mb-0.5",((S=s.value)==null?void 0:S.path)===b.path?"bg-accent/10 text-accent":"text-txt-secondary hover:text-txt-primary hover:bg-surface-3/40"])},[((E=s.value)==null?void 0:E.path)===b.path?(_(),w("span",QE)):ee("",!0),p("span",{class:ge(((x=s.value)==null?void 0:x.path)===b.path?"ml-1":"")},I(b.title),3)],10,XE)}),128))]))],2),p("div",{class:ge(["flex-1 min-w-0 flex flex-col overflow-hidden",s.value?"flex":"hidden md:flex"])},[s.value?(_(),w("div",ek,[p("button",{onClick:g[1]||(g[1]=b=>s.value=null),class:"flex items-center gap-1.5 text-xs text-txt-muted hover:text-accent transition-colors py-1"},[be(Re,{paths:'<path d="M12.35 15.85a.5.5 0 0 1-.7 0L6.16 10.4a.55.55 0 0 1 0-.78l5.49-5.46a.5.5 0 1 1 .7.7L7.2 10l5.16 5.15c.2.2.2.5 0 .7Z"/>',size:14}),g[5]||(g[5]=ve(" All pages ",-1))]),g[6]||(g[6]=p("span",{class:"text-txt-muted/30"},"·",-1)),p("span",tk,I(s.value.title),1)])):ee("",!0),s.value?a.value?(_(),w("div",nk,[...g[8]||(g[8]=[p("div",{class:"flex items-center gap-2 text-txt-muted text-sm"},[p("span",{class:"w-4 h-4 border-2 border-edge border-t-accent rounded-full animate-spin"}),ve(" Loading… ")],-1)])])):l.value?(_(),w("div",rk,[p("div",ik,[g[9]||(g[9]=p("span",null,"⚠",-1)),ve(" "+I(l.value),1)])])):(_(),w("div",ak,[p("div",ok,[p("h1",lk,I(s.value.title),1),p("div",{class:"wiki-content text-txt-secondary text-sm leading-relaxed",innerHTML:u.value},null,8,ck)])])):(_(),w("div",sk,[...g[7]||(g[7]=[p("div",{class:"w-12 h-12 rounded-xl bg-surface-2/60 border border-edge flex items-center justify-center mb-4"},[p("span",{class:"text-2xl"},"📖")],-1),p("p",{class:"text-txt-muted text-sm"},"Select a page to start reading",-1)])]))],2)]))}}),dk=rr(uk,[["__scopeId","data-v-5b6273c1"]]),hk={class:"relative flex items-center justify-center h-screen bg-surface-0 overflow-hidden"},fk={class:"relative w-full max-w-sm mx-4 animate-fade-in"},pk={class:"glass rounded-2xl border border-edge p-8 shadow-glow"},gk={key:0,class:"flex items-center gap-2 text-sm text-red-400 bg-red-500/10 border border-red-500/20 rounded-xl px-3.5 py-2.5"},mk=["disabled"],bk=pt({__name:"LoginView",setup(e){const t=nr(),s=xu(),n=Q(""),r=Q(""),i=Q(null);async function a(){i.value=null;const o=await t.signIn(n.value,r.value);o?i.value=o:s.push("/chat")}return(o,l)=>(_(),w("div",hk,[l[5]||(l[5]=p("div",{class:"pointer-events-none absolute inset-0"},[p("div",{class:"absolute top-1/4 left-1/3 w-[500px] h-[500px] bg-accent/[0.04] rounded-full blur-[120px]"}),p("div",{class:"absolute bottom-1/4 right-1/4 w-[400px] h-[400px] bg-accent-dim/[0.06] rounded-full blur-[100px]"})],-1)),p("div",fk,[p("div",pk,[l[4]||(l[4]=er('<div class="flex flex-col items-center mb-8"><div class="w-14 h-14 rounded-xl bg-accent/10 border border-accent/20 flex items-center justify-center mb-4 shadow-glow-sm"><span class="text-accent font-mono font-bold text-2xl tracking-tighter">IO</span></div><h1 class="text-xl font-semibold text-txt-primary tracking-tight">Welcome back</h1><p class="text-sm text-txt-muted mt-1">Sign in to continue</p></div>',1)),p("form",{onSubmit:yt(a,["prevent"]),class:"space-y-5"},[p("div",null,[l[2]||(l[2]=p("label",{for:"email",class:"block text-xs font-medium text-txt-secondary mb-1.5 tracking-wide uppercase"},"Email",-1)),dt(p("input",{id:"email","onUpdate:modelValue":l[0]||(l[0]=c=>n.value=c),type:"email",required:"",autocomplete:"email",class:"w-full px-3.5 py-2.5 bg-surface-0/60 border border-edge rounded-xl text-txt-primary placeholder-txt-muted text-sm focus:outline-none focus:border-accent/50 focus:ring-1 focus:ring-accent/20 focus:shadow-glow-sm transition-all duration-200",placeholder:"you@example.com"},null,512),[[kt,n.value]])]),p("div",null,[l[3]||(l[3]=p("label",{for:"password",class:"block text-xs font-medium text-txt-secondary mb-1.5 tracking-wide uppercase"},"Password",-1)),dt(p("input",{id:"password","onUpdate:modelValue":l[1]||(l[1]=c=>r.value=c),type:"password",required:"",autocomplete:"current-password",class:"w-full px-3.5 py-2.5 bg-surface-0/60 border border-edge rounded-xl text-txt-primary placeholder-txt-muted text-sm focus:outline-none focus:border-accent/50 focus:ring-1 focus:ring-accent/20 focus:shadow-glow-sm transition-all duration-200",placeholder:"••••••••"},null,512),[[kt,r.value]])]),i.value?(_(),w("div",gk,[be(Re,{paths:'<path d="m4.09 4.22.06-.07a.5.5 0 0 1 .63-.06l.07.06L10 9.29l5.15-5.14a.5.5 0 0 1 .63-.06l.07.06c.18.17.2.44.06.63l-.06.07L10.71 10l5.14 5.15c.18.17.2.44.06.63l-.06.07a.5.5 0 0 1-.63.06l-.07-.06L10 10.71l-5.15 5.14a.5.5 0 0 1-.63.06l-.07-.06a.5.5 0 0 1-.06-.63l.06-.07L9.29 10 4.15 4.85a.5.5 0 0 1-.06-.63l.06-.07-.06.07Z"/>',size:16,class:"shrink-0"}),ve(" "+I(i.value),1)])):ee("",!0),p("button",{type:"submit",disabled:Ie(t).loading,class:"w-full py-2.5 px-4 bg-accent hover:bg-accent-glow disabled:opacity-50 disabled:cursor-not-allowed text-surface-0 font-semibold text-sm rounded-xl transition-all duration-200 shadow-glow-sm hover:shadow-glow"},I(Ie(t).loading?"Signing in…":"Sign in"),9,mk)],32)])])]))}}),xd=gg({history:Zp("/"),routes:[{path:"/",redirect:"/chat"},{path:"/login",name:"login",component:bk,meta:{public:!0}},{path:"/chat",name:"chat",component:ky},{path:"/skills",name:"skills",component:x_},{path:"/squads",name:"squads",component:E1},{path:"/activity",name:"activity",component:Fw},{path:"/wiki",name:"wiki",component:dk},{path:"/schedules",name:"schedules",component:uE},{path:"/feed",name:"feed",component:FE},{path:"/notifications",redirect:"/feed"},{path:"/inbox",redirect:"/feed"}]});xd.beforeEach(async e=>{const t=nr();return t.initialized||await t.init(),!t.authEnabled||e.meta.public||t.user?!0:{name:"login"}});const Va=np(iy);Va.use(ap());Va.use(xd);Va.mount("#app");
@@ -8,8 +8,8 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
10
  <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
11
- <script type="module" crossorigin src="/assets/index--NY2Mgxw.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-CJCS-9Kg.css">
11
+ <script type="module" crossorigin src="/assets/index-VjIh_XUc.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-Bg0PZh6a.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="app"></div>