@vohongtho.infotech/code-intel 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/dist/cli/main.js +3739 -2427
- package/dist/cli/main.js.map +1 -1
- package/dist/index.d.ts +70 -6
- package/dist/index.js +4265 -3530
- package/dist/index.js.map +1 -1
- package/dist/web/assets/index-BcUIJvDD.css +2 -0
- package/dist/web/assets/{index-CkCM74It.js → index-Ds0yq7oU.js} +1 -7
- package/dist/web/index.html +2 -2
- package/package.json +15 -17
- package/dist/web/assets/index-eJGDkRsL.css +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-400:oklch(75% .183 55.934);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-amber-400:oklch(82.8% .189 84.429);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-cyan-900:oklch(39.8% .07 227.392);--color-cyan-950:oklch(30.2% .056 229.695);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-14{right:calc(var(--spacing) * 14)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-10{bottom:calc(var(--spacing) * 10)}.bottom-14{bottom:calc(var(--spacing) * 14)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-72{height:calc(var(--spacing) * 72)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[30ch\]{max-width:30ch}.max-w-\[80px\]{max-width:80px}.max-w-\[90\%\]{max-width:90%}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-blue-700\/40{border-color:#1447e666}@supports (color:color-mix(in lab, red, red)){.border-blue-700\/40{border-color:color-mix(in oklab, var(--color-blue-700) 40%, transparent)}}.border-blue-800\/40{border-color:#193cb866}@supports (color:color-mix(in lab, red, red)){.border-blue-800\/40{border-color:color-mix(in oklab, var(--color-blue-800) 40%, transparent)}}.border-cyan-500{border-color:var(--color-cyan-500)}.border-cyan-500\/50{border-color:#00b7d780}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\/50{border-color:color-mix(in oklab, var(--color-cyan-500) 50%, transparent)}}.border-cyan-700\/30{border-color:#0074924d}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/30{border-color:color-mix(in oklab, var(--color-cyan-700) 30%, transparent)}}.border-cyan-700\/50{border-color:#00749280}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/50{border-color:color-mix(in oklab, var(--color-cyan-700) 50%, transparent)}}.border-cyan-700\/60{border-color:#00749299}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/60{border-color:color-mix(in oklab, var(--color-cyan-700) 60%, transparent)}}.border-cyan-800\/50{border-color:#005f7880}@supports (color:color-mix(in lab, red, red)){.border-cyan-800\/50{border-color:color-mix(in oklab, var(--color-cyan-800) 50%, transparent)}}.border-emerald-800\/40{border-color:#005f4666}@supports (color:color-mix(in lab, red, red)){.border-emerald-800\/40{border-color:color-mix(in oklab, var(--color-emerald-800) 40%, transparent)}}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-700\/50{border-color:#36415380}@supports (color:color-mix(in lab, red, red)){.border-gray-700\/50{border-color:color-mix(in oklab, var(--color-gray-700) 50%, transparent)}}.border-gray-700\/60{border-color:#36415399}@supports (color:color-mix(in lab, red, red)){.border-gray-700\/60{border-color:color-mix(in oklab, var(--color-gray-700) 60%, transparent)}}.border-gray-800{border-color:var(--color-gray-800)}.border-gray-800\/30{border-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/30{border-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.border-gray-800\/50{border-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/50{border-color:color-mix(in oklab, var(--color-gray-800) 50%, transparent)}}.border-gray-800\/60{border-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/60{border-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.border-gray-800\/80{border-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/80{border-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.border-green-700\/40{border-color:#00813866}@supports (color:color-mix(in lab, red, red)){.border-green-700\/40{border-color:color-mix(in oklab, var(--color-green-700) 40%, transparent)}}.border-green-800\/40{border-color:#01663066}@supports (color:color-mix(in lab, red, red)){.border-green-800\/40{border-color:color-mix(in oklab, var(--color-green-800) 40%, transparent)}}.border-indigo-700\/50{border-color:#432dd780}@supports (color:color-mix(in lab, red, red)){.border-indigo-700\/50{border-color:color-mix(in oklab, var(--color-indigo-700) 50%, transparent)}}.border-indigo-800\/50{border-color:#372aac80}@supports (color:color-mix(in lab, red, red)){.border-indigo-800\/50{border-color:color-mix(in oklab, var(--color-indigo-800) 50%, transparent)}}.border-orange-800\/40{border-color:#9f2d0066}@supports (color:color-mix(in lab, red, red)){.border-orange-800\/40{border-color:color-mix(in oklab, var(--color-orange-800) 40%, transparent)}}.border-purple-600{border-color:var(--color-purple-600)}.border-purple-800\/30{border-color:#6e11b04d}@supports (color:color-mix(in lab, red, red)){.border-purple-800\/30{border-color:color-mix(in oklab, var(--color-purple-800) 30%, transparent)}}.border-purple-800\/40{border-color:#6e11b066}@supports (color:color-mix(in lab, red, red)){.border-purple-800\/40{border-color:color-mix(in oklab, var(--color-purple-800) 40%, transparent)}}.border-red-700{border-color:var(--color-red-700)}.border-red-700\/40{border-color:#bf000f66}@supports (color:color-mix(in lab, red, red)){.border-red-700\/40{border-color:color-mix(in oklab, var(--color-red-700) 40%, transparent)}}.border-red-700\/50{border-color:#bf000f80}@supports (color:color-mix(in lab, red, red)){.border-red-700\/50{border-color:color-mix(in oklab, var(--color-red-700) 50%, transparent)}}.border-red-800\/40{border-color:#9f071266}@supports (color:color-mix(in lab, red, red)){.border-red-800\/40{border-color:color-mix(in oklab, var(--color-red-800) 40%, transparent)}}.border-red-800\/50{border-color:#9f071280}@supports (color:color-mix(in lab, red, red)){.border-red-800\/50{border-color:color-mix(in oklab, var(--color-red-800) 50%, transparent)}}.border-sky-800\/40{border-color:#00598666}@supports (color:color-mix(in lab, red, red)){.border-sky-800\/40{border-color:color-mix(in oklab, var(--color-sky-800) 40%, transparent)}}.border-yellow-700{border-color:var(--color-yellow-700)}.border-yellow-800{border-color:var(--color-yellow-800)}.border-t-purple-400{border-top-color:var(--color-purple-400)}.bg-\[\#0a0a0f\]{background-color:#0a0a0f}.bg-\[\#0a0d18\]{background-color:#0a0d18}.bg-\[\#0c0f1e\]{background-color:#0c0f1e}.bg-\[\#080b14\]{background-color:#080b14}.bg-\[\#090c16\]{background-color:#090c16}.bg-\[\#040812\]{background-color:#040812}.bg-\[\#050810\]{background-color:#050810}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/20{background-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.bg-blue-600\/20{background-color:color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.bg-blue-600\/30{background-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.bg-blue-600\/30{background-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.bg-blue-900\/30{background-color:color-mix(in oklab, var(--color-blue-900) 30%, transparent)}}.bg-cyan-400{background-color:var(--color-cyan-400)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/5{background-color:#00b7d70d}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/5{background-color:color-mix(in oklab, var(--color-cyan-500) 5%, transparent)}}.bg-cyan-500\/15{background-color:#00b7d726}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/15{background-color:color-mix(in oklab, var(--color-cyan-500) 15%, transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/20{background-color:color-mix(in oklab, var(--color-cyan-500) 20%, transparent)}}.bg-cyan-900\/20{background-color:#104e6433}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/20{background-color:color-mix(in oklab, var(--color-cyan-900) 20%, transparent)}}.bg-cyan-900\/30{background-color:#104e644d}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/30{background-color:color-mix(in oklab, var(--color-cyan-900) 30%, transparent)}}.bg-cyan-900\/40{background-color:#104e6466}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/40{background-color:color-mix(in oklab, var(--color-cyan-900) 40%, transparent)}}.bg-cyan-900\/50{background-color:#104e6480}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/50{background-color:color-mix(in oklab, var(--color-cyan-900) 50%, transparent)}}.bg-cyan-900\/90{background-color:#104e64e6}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/90{background-color:color-mix(in oklab, var(--color-cyan-900) 90%, transparent)}}.bg-cyan-950\/40{background-color:#05334566}@supports (color:color-mix(in lab, red, red)){.bg-cyan-950\/40{background-color:color-mix(in oklab, var(--color-cyan-950) 40%, transparent)}}.bg-emerald-900\/40{background-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.bg-emerald-900\/40{background-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-800\/30{background-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/30{background-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.bg-gray-800\/40{background-color:#1e293966}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/40{background-color:color-mix(in oklab, var(--color-gray-800) 40%, transparent)}}.bg-gray-800\/60{background-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/60{background-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.bg-gray-800\/80{background-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/80{background-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-900\/40{background-color:#10182866}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/40{background-color:color-mix(in oklab, var(--color-gray-900) 40%, transparent)}}.bg-gray-900\/50{background-color:#10182880}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/50{background-color:color-mix(in oklab, var(--color-gray-900) 50%, transparent)}}.bg-gray-900\/60{background-color:#10182899}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/60{background-color:color-mix(in oklab, var(--color-gray-900) 60%, transparent)}}.bg-gray-900\/80{background-color:#101828cc}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/80{background-color:color-mix(in oklab, var(--color-gray-900) 80%, transparent)}}.bg-gray-950{background-color:var(--color-gray-950)}.bg-gray-950\/50{background-color:#03071280}@supports (color:color-mix(in lab, red, red)){.bg-gray-950\/50{background-color:color-mix(in oklab, var(--color-gray-950) 50%, transparent)}}.bg-gray-950\/90{background-color:#030712e6}@supports (color:color-mix(in lab, red, red)){.bg-gray-950\/90{background-color:color-mix(in oklab, var(--color-gray-950) 90%, transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/20{background-color:color-mix(in oklab, var(--color-green-900) 20%, transparent)}}.bg-green-900\/40{background-color:#0d542b66}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/40{background-color:color-mix(in oklab, var(--color-green-900) 40%, transparent)}}.bg-indigo-900\/20{background-color:#312c8533}@supports (color:color-mix(in lab, red, red)){.bg-indigo-900\/20{background-color:color-mix(in oklab, var(--color-indigo-900) 20%, transparent)}}.bg-indigo-900\/50{background-color:#312c8580}@supports (color:color-mix(in lab, red, red)){.bg-indigo-900\/50{background-color:color-mix(in oklab, var(--color-indigo-900) 50%, transparent)}}.bg-orange-900\/20{background-color:#7e2a0c33}@supports (color:color-mix(in lab, red, red)){.bg-orange-900\/20{background-color:color-mix(in oklab, var(--color-orange-900) 20%, transparent)}}.bg-purple-900\/20{background-color:#59168b33}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/20{background-color:color-mix(in oklab, var(--color-purple-900) 20%, transparent)}}.bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/30{background-color:color-mix(in oklab, var(--color-purple-900) 30%, transparent)}}.bg-purple-900\/40{background-color:#59168b66}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/40{background-color:color-mix(in oklab, var(--color-purple-900) 40%, transparent)}}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/20{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)}}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/40{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.bg-red-950\/40{background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.bg-red-950\/40{background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.bg-sky-900\/20{background-color:#024a7033}@supports (color:color-mix(in lab, red, red)){.bg-sky-900\/20{background-color:color-mix(in oklab, var(--color-sky-900) 20%, transparent)}}.bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.bg-yellow-900\/30{background-color:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/30{background-color:color-mix(in oklab, var(--color-yellow-900) 30%, transparent)}}.bg-yellow-900\/40{background-color:#733e0a66}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/40{background-color:color-mix(in oklab, var(--color-yellow-900) 40%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-500{--tw-gradient-from:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-cyan-600{--tw-gradient-from:var(--color-cyan-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-600{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-28{padding-right:calc(var(--spacing) * 28)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-amber-400{color:var(--color-amber-400)}.text-blue-100{color:var(--color-blue-100)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-cyan-200{color:var(--color-cyan-200)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-cyan-500{color:var(--color-cyan-500)}.text-cyan-500\/70{color:#00b7d7b3}@supports (color:color-mix(in lab, red, red)){.text-cyan-500\/70{color:color-mix(in oklab, var(--color-cyan-500) 70%, transparent)}}.text-cyan-500\/80{color:#00b7d7cc}@supports (color:color-mix(in lab, red, red)){.text-cyan-500\/80{color:color-mix(in oklab, var(--color-cyan-500) 80%, transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-400\/80{color:#7d87ffcc}@supports (color:color-mix(in lab, red, red)){.text-indigo-400\/80{color:color-mix(in oklab, var(--color-indigo-400) 80%, transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.placeholder-gray-600::placeholder{color:var(--color-gray-600)}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-cyan-900\/40{--tw-shadow-color:#104e6466}@supports (color:color-mix(in lab, red, red)){.shadow-cyan-900\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-cyan-900) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[\#0a0d18\]{--tw-ring-offset-color:#0a0d18}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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(var(--blur-sm));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:-0\.3s\]{animation-delay:-.3s}.\[animation-delay\:-0\.15s\]{animation-delay:-.15s}@media (hover:hover){.group-hover\:text-cyan-500:is(:where(.group):hover *){color:var(--color-cyan-500)}.group-hover\:text-indigo-400:is(:where(.group):hover *){color:var(--color-indigo-400)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:border-cyan-600:hover{border-color:var(--color-cyan-600)}.hover\:border-cyan-700\/50:hover{border-color:#00749280}@supports (color:color-mix(in lab, red, red)){.hover\:border-cyan-700\/50:hover{border-color:color-mix(in oklab, var(--color-cyan-700) 50%, transparent)}}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:border-indigo-600:hover{border-color:var(--color-indigo-600)}.hover\:border-indigo-700\/50:hover{border-color:#432dd780}@supports (color:color-mix(in lab, red, red)){.hover\:border-indigo-700\/50:hover{border-color:color-mix(in oklab, var(--color-indigo-700) 50%, transparent)}}.hover\:border-purple-600:hover{border-color:var(--color-purple-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-cyan-900\/70:hover{background-color:#104e64b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-900\/70:hover{background-color:color-mix(in oklab, var(--color-cyan-900) 70%, transparent)}}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-gray-800\/30:hover{background-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/30:hover{background-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.hover\:bg-gray-800\/50:hover{background-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/50:hover{background-color:color-mix(in oklab, var(--color-gray-800) 50%, transparent)}}.hover\:bg-gray-800\/60:hover{background-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/60:hover{background-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.hover\:bg-gray-800\/80:hover{background-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/80:hover{background-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.hover\:bg-red-950\/30:hover{background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-950\/30:hover{background-color:color-mix(in oklab, var(--color-red-950) 30%, transparent)}}.hover\:from-cyan-500:hover{--tw-gradient-from:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-500:hover{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-blue-500:hover{--tw-gradient-to:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-indigo-500:hover{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-cyan-400:hover{color:var(--color-cyan-400)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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,)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-cyan-500:focus{border-color:var(--color-cyan-500)}.focus\:border-cyan-600:focus{border-color:var(--color-cyan-600)}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-cyan-500\/40:focus{--tw-ring-color:#00b7d766}@supports (color:color-mix(in lab, red, red)){.focus\:ring-cyan-500\/40:focus{--tw-ring-color:color-mix(in oklab, var(--color-cyan-500) 40%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
|
|
@@ -329,10 +329,4 @@ _Use **inspect <symbol>** to dive deeper, or **impact <symbol>** to see blast ra
|
|
|
329
329
|
`}if(d.callees.length){p+=`**Calls:**
|
|
330
330
|
`;for(let e of d.callees.slice(0,8))p+=`- \`${e.name??e.id}\`\n`;p+=`
|
|
331
331
|
`}d.extends.length&&(p+=`**Extends:** ${d.extends.map(e=>`\`${e.name}\``).join(`, `)}\n\n`),d.implementsEdges.length&&(p+=`**Implements:** ${d.implementsEdges.map(e=>`\`${e.name}\``).join(`, `)}\n\n`),d.members.length&&(p+=`**Members:** ${d.members.length} (${[...new Set(d.members.map(e=>e.kind))].join(`, `)})\n`),n({type:`final`,text:p,citations:i})}var Hi=[{label:`Architecture`,items:[`Explain the project architecture`,`What are the main modules?`]},{label:`Search`,items:[`Find code about HTTP server`,`Who calls runPipeline`]},{label:`Inspect`,items:[`Inspect KnowledgeGraph`,`Impact of textSearch`]}];function Ui(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(``),i=(0,b.useRef)(null);(0,b.useEffect)(()=>{i.current?.scrollTo({top:i.current.scrollHeight,behavior:`smooth`})},[e.chat.messages]);let a=async n=>{let i=n.trim();if(!i||e.chat.loading)return;r(``),t({type:`ADD_CHAT_MESSAGE`,message:{role:`user`,content:i,timestamp:Date.now()}}),t({type:`SET_CHAT_LOADING`,loading:!0}),t({type:`ADD_CHAT_MESSAGE`,message:{role:`assistant`,content:``,timestamp:Date.now(),toolCalls:[],citations:[]}});let a=new E(e.serverUrl),o=[];try{await Vi(i,a,e=>{if(e.type===`tool-start`&&e.toolCall)o.push(e.toolCall),t({type:`UPDATE_LAST_CHAT_MESSAGE`,message:{toolCalls:[...o]}});else if(e.type===`tool-end`&&e.toolCall){let n=o.findIndex(t=>t.tool===e.toolCall.tool&&t.status===`running`);n>=0?o[n]=e.toolCall:o.push(e.toolCall),t({type:`UPDATE_LAST_CHAT_MESSAGE`,message:{toolCalls:[...o]}})}else e.type===`final`&&t({type:`UPDATE_LAST_CHAT_MESSAGE`,message:{content:e.text??``,citations:e.citations??[]}})})}catch(e){t({type:`UPDATE_LAST_CHAT_MESSAGE`,message:{content:`Error: ${e instanceof Error?e.message:`unknown`}`}})}finally{t({type:`SET_CHAT_LOADING`,loading:!1})}},o=n=>{if(n.nodeId){let r=e.nodes.find(e=>e.id===n.nodeId);if(r){t({type:`SELECT_NODE`,node:r});return}}let r=e.nodes.find(e=>e.kind===`file`&&e.filePath===n.filePath);r&&t({type:`SELECT_NODE`,node:r})};return(0,x.jsxs)(`div`,{className:`flex flex-col h-full bg-gray-900`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2.5 border-b border-gray-800/50 bg-gray-950/50`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-purple-400`,children:`✦`}),(0,x.jsx)(`h3`,{className:`text-sm font-semibold text-gray-100`,children:`Code AI`}),(0,x.jsx)(`span`,{className:`text-[10px] bg-purple-900/40 text-purple-300 px-1.5 py-0.5 rounded-full border border-purple-800/30`,children:`Grounded`})]}),(0,x.jsx)(`button`,{onClick:()=>t({type:`CLEAR_CHAT`}),className:`text-[10px] text-gray-600 hover:text-gray-300 px-2 py-1 rounded hover:bg-gray-800/50 transition`,children:`Clear`})]}),(0,x.jsxs)(`div`,{ref:i,className:`flex-1 overflow-y-auto p-3 space-y-3`,children:[e.chat.messages.length===0&&(0,x.jsxs)(`div`,{className:`mt-4 px-2`,children:[(0,x.jsx)(`p`,{className:`text-gray-500 text-xs mb-3 leading-relaxed text-center`,children:`Ask grounded questions. Every answer cites source files.`}),(0,x.jsx)(`div`,{className:`space-y-3`,children:Hi.map(({label:e,items:t})=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] font-bold tracking-wider text-gray-600 uppercase mb-1 px-1`,children:e}),(0,x.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>(0,x.jsx)(`button`,{onClick:()=>a(e),className:`block w-full text-left px-2.5 py-1.5 text-xs bg-gray-800/40 hover:bg-gray-800/80 text-gray-300 hover:text-white rounded-lg border border-gray-800/50 hover:border-gray-700 transition`,children:e},e))})]},e))})]}),e.chat.messages.map((e,t)=>(0,x.jsx)(Wi,{message:e,onCitationClick:o},t)),e.chat.loading&&(0,x.jsxs)(`div`,{className:`flex items-center gap-2 text-gray-500 text-xs`,children:[(0,x.jsx)(`div`,{className:`animate-spin w-3 h-3 border-2 border-gray-700 border-t-purple-400 rounded-full`}),`Thinking…`]})]}),(0,x.jsx)(`div`,{className:`p-2 border-t border-gray-800 bg-gray-950`,children:(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>e.key===`Enter`&&a(n),disabled:e.chat.loading,className:`flex-1 bg-gray-800 border border-gray-700 rounded-lg px-3 py-1.5 text-sm text-white placeholder-gray-500 focus:border-purple-500 focus:outline-none disabled:opacity-50`,placeholder:`Ask about the codebase…`}),(0,x.jsx)(`button`,{onClick:()=>a(n),disabled:e.chat.loading||!n.trim(),className:`bg-gradient-to-r from-purple-600 to-indigo-600 hover:from-purple-500 hover:to-indigo-500 disabled:opacity-40 rounded-lg px-3 py-1.5 text-sm text-white`,children:`➤`})]})})]})}function Wi({message:e,onCitationClick:t}){return e.role===`user`?(0,x.jsx)(`div`,{className:`flex justify-end`,children:(0,x.jsx)(`div`,{className:`max-w-[90%] bg-blue-600/20 border border-blue-700/40 text-blue-100 rounded-lg px-3 py-1.5 text-sm`,children:e.content})}):(0,x.jsxs)(`div`,{className:`space-y-2`,children:[e.toolCalls&&e.toolCalls.length>0&&(0,x.jsx)(`div`,{className:`space-y-1`,children:e.toolCalls.map((e,t)=>(0,x.jsx)(Gi,{tc:e},t))}),e.content&&(0,x.jsx)(`div`,{className:`bg-gray-800/60 border border-gray-800 rounded-lg p-3 text-sm text-gray-200`,children:(0,x.jsx)(Ki,{text:e.content,onCitationClick:t})})]})}function Gi({tc:e}){return(0,x.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 rounded border bg-gray-900/60 text-xs ${e.status===`done`?`border-green-700/40 text-green-400`:e.status===`error`?`border-red-700/40 text-red-400`:`border-gray-700 text-gray-400 animate-pulse`}`,children:[(0,x.jsx)(`span`,{className:`font-mono`,children:`⚙`}),(0,x.jsx)(`span`,{className:`font-mono font-medium`,children:e.tool}),(0,x.jsx)(`span`,{className:`text-gray-500 truncate flex-1`,children:e.resultSummary??Object.values(e.input).slice(0,1).join(` `)}),(0,x.jsx)(`span`,{className:`text-[10px]`,children:e.status===`running`?`…`:e.status===`done`?`✓`:`✗`})]})}function Ki({text:e,onCitationClick:t}){return(0,x.jsx)(x.Fragment,{children:e.split(`
|
|
332
|
-
`).map((e,n)=>(0,x.jsx)(`div`,{className:`leading-relaxed`,children:Zi(e,t)},n))})}var qi=/\[\[([^\]]+)\]\]/g,Ji=/^(#{1,4})\s+(.*)$/,Yi=/\*\*([^*]+)\*\*/g,Xi=/`([^`]+)`/g;function Zi(e,t){let n=e.match(Ji);if(n){let e=n[1].length,r=n[2];return(0,x.jsx)(`h${Math.min(4,e+1)}`,{className:e<=2?`text-base font-bold text-white mt-2`:e===3?`text-sm font-semibold text-gray-100 mt-2`:`text-xs font-semibold text-gray-300 mt-1`,children:Qi(r,t)})}return e.startsWith(`- `)?(0,x.jsxs)(`div`,{className:`ml-3`,children:[`• `,Qi(e.slice(2),t)]}):e.trim()===``?(0,x.jsx)(`div`,{className:`h-1`}):(0,x.jsx)(`span`,{children:Qi(e,t)})}function Qi(e,t){let n=[],r=0;qi.lastIndex=0;let i;for(;(i=qi.exec(e))!==null;){i.index>r&&n.push((0,x.jsx)(b.Fragment,{children:ta(e.slice(r,i.index))},`t-${r}`));let a=i[1],o=$i(a);n.push((0,x.jsxs)(`button`,{onClick:()=>t(o),className:`inline-flex items-center gap-0.5 mx-0.5 px-1.5 py-0.5 text-[10px] font-mono bg-cyan-900/40 hover:bg-cyan-900/70 text-cyan-300 rounded border border-cyan-700/30 align-baseline`,title:o.filePath,children:[ea(o.filePath),o.startLine?`:${o.startLine}`:``]},`c-${i.index}`)),r=i.index+i[0].length}return r<e.length&&n.push((0,x.jsx)(b.Fragment,{children:ta(e.slice(r))},`t-${r}`)),n}function $i(e){let t=e.lastIndexOf(`:`);if(t>0&&/^\d/.test(e.slice(t+1))){let n=e.slice(0,t),[r,i]=e.slice(t+1).split(`-`).map(e=>parseInt(e,10));return{filePath:n,startLine:r,endLine:i}}return{filePath:e}}function ea(e){let t=e.split(`/`);return t.length<=2?e:`…/${t.slice(-2).join(`/`)}`}function ta(e){let t=[],n=0;for(;n<e.length;){Yi.lastIndex=n,Xi.lastIndex=n;let r=Yi.exec(e),i=Xi.exec(e),a=null;if(r&&i?a=r.index<i.index?{match:r,type:`b`}:{match:i,type:`c`}:r?a={match:r,type:`b`}:i&&(a={match:i,type:`c`}),!a){t.push(e.slice(n));break}a.match.index>n&&t.push(e.slice(n,a.match.index)),a.type===`b`?t.push((0,x.jsx)(`strong`,{className:`text-white`,children:a.match[1]},`b-${a.match.index}`)):t.push((0,x.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-gray-950 text-cyan-300 font-mono text-[11px]`,children:a.match[1]},`c-${a.match.index}`)),n=a.match.index+a.match[0].length}return(0,x.jsx)(x.Fragment,{children:t})}function na(e){let t={name:``,path:``,children:new Map,files:[]};for(let n of e){let e=n.split(`/`),r=t;for(let t=0;t<e.length-1;t++){let n=e[t];r.children.has(n)||r.children.set(n,{name:n,path:e.slice(0,t+1).join(`/`),children:new Map,files:[]}),r=r.children.get(n)}r.files.push(n)}return t}function ra(e){let t=e.files.length;for(let n of e.children.values())t+=ra(n);return t}function ia({node:e,depth:t,onFileClick:n,selectedPath:r}){let i=[...e.children.entries()].sort((e,t)=>e[0].localeCompare(t[0])),a=[...e.files].sort(),o=ra(e),s=t*12,[c,l]=(0,b.useState)(t<=1||e.children.size===1);return t===0?(0,x.jsxs)(x.Fragment,{children:[i.map(([,e])=>(0,x.jsx)(ia,{node:e,depth:t+1,onFileClick:n,selectedPath:r},e.path)),a.map(e=>(0,x.jsx)(aa,{fp:e,indent:s,selected:e===r,onClick:()=>n(e)},e))]}):(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 pr-2 cursor-pointer hover:bg-gray-800/50 rounded-sm group transition select-none`,style:{paddingLeft:`${s+6}px`},onClick:()=>l(e=>!e),children:[(0,x.jsx)(`span`,{className:`text-gray-500 text-[10px] w-3 flex-shrink-0 text-center`,children:i.length>0||a.length>0?c?`▾`:`▸`:` `}),(0,x.jsx)(`span`,{className:`text-[13px] mr-1`,children:c?`📂`:`📁`}),(0,x.jsx)(`span`,{className:`text-xs text-gray-200 font-medium truncate flex-1 group-hover:text-white`,children:e.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 font-mono ml-1 flex-shrink-0`,children:o})]}),c&&(0,x.jsxs)(`div`,{children:[i.map(([,e])=>(0,x.jsx)(ia,{node:e,depth:t+1,onFileClick:n,selectedPath:r},e.path)),a.map(e=>(0,x.jsx)(aa,{fp:e,indent:s+16,selected:e===r,onClick:()=>n(e)},e))]})]})}function aa({fp:e,indent:t,selected:n,onClick:r}){let i=e.split(`/`).pop(),a=oa[i.split(`.`).pop()??``]??`📄`;return(0,x.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 pr-2 cursor-pointer rounded-sm transition select-none ${n?`bg-cyan-500/15 text-cyan-300`:`hover:bg-gray-800/50 text-gray-400 hover:text-gray-200`}`,style:{paddingLeft:`${t+6}px`},onClick:r,title:e,children:[(0,x.jsx)(`span`,{className:`text-[11px] mr-1 flex-shrink-0`,children:a}),(0,x.jsx)(`span`,{className:`text-xs truncate`,children:i})]})}var oa={ts:`🔷`,tsx:`⚛️`,js:`🟨`,jsx:`⚛️`,json:`📋`,md:`📝`,py:`🐍`,go:`🐹`,rs:`🦀`,java:`☕`,cs:`🔵`,css:`🎨`,html:`🌐`,yaml:`⚙️`,yml:`⚙️`,toml:`⚙️`,sh:`🐚`,txt:`📄`,gitignore:`🚫`};function sa(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(``),i=(0,b.useMemo)(()=>e.nodes.filter(e=>e.kind===`file`).map(e=>e.filePath).sort(),[e.nodes]),a=(0,b.useMemo)(()=>{if(!n.trim())return i;let e=n.toLowerCase();return i.filter(t=>t.toLowerCase().includes(e))},[i,n]),o=(0,b.useMemo)(()=>na(a),[a]),s=e.selectedNode?.kind===`file`?e.selectedNode.filePath:void 0;return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsx)(`div`,{className:`p-2 border-b border-gray-800/50`,children:(0,x.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`Filter files…`,className:`w-full bg-gray-900/60 border border-gray-700/50 rounded-md px-2.5 py-1.5 text-xs text-gray-200 placeholder-gray-600 focus:border-cyan-600 focus:outline-none`})}),(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto py-1 text-sm`,children:a.length===0?(0,x.jsx)(`p`,{className:`text-center text-gray-600 text-xs mt-4`,children:`No files match`}):(0,x.jsx)(ia,{node:o,depth:0,onFileClick:n=>{let r=e.nodes.find(e=>e.filePath===n&&e.kind===`file`);r&&t({type:`SELECT_NODE`,node:r})},selectedPath:s})}),(0,x.jsxs)(`div`,{className:`px-3 py-1.5 border-t border-gray-800/50 text-[10px] text-gray-600 font-mono`,children:[a.length,` file`,a.length===1?``:`s`]})]})}var ca={directory:`Folder`,file:`File`,class:`Class`,function:`Function`,method:`Method`,variable:`Variable`,interface:`Interface`,module:`Module`,struct:`Struct`,enum:`Enum`,trait:`Trait`,namespace:`Namespace`,type_alias:`Type Alias`,constant:`Constant`,property:`Property`,constructor:`Constructor`,route:`Route`,cluster:`Cluster`,flow:`Flow`},la={contains:`Contains`,calls:`Calls`,imports:`Imports`,extends:`Extends`,implements:`Implements`,has_member:`Has Member`,accesses:`Accesses`,overrides:`Overrides`,belongs_to:`Belongs To`,step_of:`Step Of`,handles:`Handles`},ua=[`all`,1,2,3,5];function da(){let{state:e,dispatch:t}=T(),{nodeKindCounts:n,edgeKindCounts:r}=(0,b.useMemo)(()=>{let t=new Map,n=new Map;for(let n of e.nodes)t.set(n.kind,(t.get(n.kind)??0)+1);for(let t of e.edges)n.set(t.kind,(n.get(t.kind)??0)+1);return{nodeKindCounts:t,edgeKindCounts:n}},[e.nodes,e.edges]),i=[...n.entries()].sort((e,t)=>t[1]-e[1]),a=[...r.entries()].sort((e,t)=>t[1]-e[1]);return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[(0,x.jsx)(fa,{title:`Node Types`,subtitle:`Toggle visibility of node types in the graph`,children:(0,x.jsx)(`div`,{className:`space-y-1`,children:i.map(([n,r])=>{let i=e.filters.hiddenNodeKinds.has(n);return(0,x.jsxs)(`button`,{onClick:()=>t({type:`TOGGLE_NODE_KIND`,kind:n}),className:`w-full flex items-center gap-2 px-2 py-1 rounded hover:bg-gray-800/60 text-left`,children:[(0,x.jsx)(`span`,{className:`w-2.5 h-2.5 rounded-full flex-shrink-0`,style:{backgroundColor:wi[n]??`#666`,opacity:i?.25:1}}),(0,x.jsx)(`span`,{className:`flex-1 text-xs ${i?`text-gray-600 line-through`:`text-gray-200`}`,children:ca[n]??n}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-500 font-mono`,children:r}),(0,x.jsx)(`span`,{className:`w-4 h-4 rounded flex items-center justify-center text-[10px] ${i?`bg-gray-800 text-gray-600`:`bg-blue-600/30 text-blue-300`}`,children:i?`+`:`✓`})]},n)})})}),(0,x.jsx)(fa,{title:`Edge Types`,subtitle:`Toggle visibility of relationship types`,children:(0,x.jsx)(`div`,{className:`space-y-1`,children:a.map(([n,r])=>{let i=e.filters.hiddenEdgeKinds.has(n);return(0,x.jsxs)(`button`,{onClick:()=>t({type:`TOGGLE_EDGE_KIND`,kind:n}),className:`w-full flex items-center gap-2 px-2 py-1 rounded hover:bg-gray-800/60 text-left`,children:[(0,x.jsx)(`span`,{className:`w-4 h-0.5 flex-shrink-0`,style:{backgroundColor:Ti[n]??`#666`,opacity:i?.25:1}}),(0,x.jsx)(`span`,{className:`flex-1 text-xs ${i?`text-gray-600 line-through`:`text-gray-200`}`,children:la[n]??n}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-500 font-mono`,children:r}),(0,x.jsx)(`span`,{className:`w-4 h-4 rounded flex items-center justify-center text-[10px] ${i?`bg-gray-800 text-gray-600`:`bg-blue-600/30 text-blue-300`}`,children:i?`+`:`✓`})]},n)})})}),(0,x.jsxs)(fa,{title:`Focus Depth`,subtitle:`Show nodes within N hops of selection`,children:[(0,x.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:ua.map(n=>(0,x.jsx)(`button`,{onClick:()=>t({type:`SET_FOCUS_DEPTH`,depth:n}),className:`px-2.5 py-1 rounded text-xs font-medium ${e.filters.focusDepth===n?`bg-cyan-500 text-gray-900`:`bg-gray-800 text-gray-400 hover:bg-gray-700`}`,children:n===`all`?`All`:`${n} hop${n===1?``:`s`}`},String(n)))}),!e.selectedNode&&e.filters.focusDepth!==`all`&&(0,x.jsx)(`p`,{className:`text-[10px] text-amber-400 mt-2`,children:`Select a node to apply focus depth.`})]}),(0,x.jsx)(`div`,{className:`px-3 pb-4`,children:(0,x.jsx)(`button`,{onClick:()=>t({type:`RESET_FILTERS`}),className:`w-full px-2 py-1.5 text-xs bg-gray-800 hover:bg-gray-700 text-gray-300 rounded`,children:`Reset filters`})})]})}function fa({title:e,subtitle:t,children:n}){return(0,x.jsxs)(`div`,{className:`px-3 py-3 border-b border-gray-800`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-0.5`,children:e}),t&&(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600 mb-2`,children:t}),n]})}function pa(){let{state:e}=T(),[t,n]=(0,b.useState)(`unknown`),[r,i]=(0,b.useState)(!1),a=(0,b.useRef)(null),o=(0,b.useCallback)(async()=>{if(!e.connected)return;let t=new E(e.serverUrl);try{let e=await t.vectorStatus();if(e.ready){n(`ready`),i(!1),a.current&&clearTimeout(a.current);return}e.building?(n(`building`),i(!0)):(n(`unknown`),i(!1))}catch{n(`unknown`),i(!1)}a.current=setTimeout(()=>void o(),5e3)},[e.connected,e.serverUrl]);(0,b.useEffect)(()=>(a.current&&clearTimeout(a.current),n(`unknown`),i(!1),e.connected&&o(),()=>{a.current&&clearTimeout(a.current)}),[e.connected,e.serverUrl]);let s=e.connected?`bg-green-500`:`bg-gray-500`,c;c=t===`building`?(0,x.jsxs)(`span`,{className:`flex items-center gap-1 text-yellow-400`,children:[(0,x.jsx)(`span`,{className:`inline-block`,style:{animation:r?`spin 1s linear infinite`:`none`},children:`⟳`}),(0,x.jsx)(`span`,{children:`vec building…`})]}):t===`ready`?(0,x.jsx)(`span`,{className:`text-green-400`,children:`⚡ vec ready`}):(0,x.jsx)(`span`,{className:`text-gray-600`,children:`vec –`});let l=e.selectedNode;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`style`,{children:`@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }`}),(0,x.jsxs)(`div`,{className:`h-7 bg-[#050810] border-t border-gray-800 flex items-center px-3 text-xs text-gray-500 shrink-0`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,x.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`span`,{className:`w-2 h-2 rounded-full ${s}`}),(0,x.jsx)(`span`,{className:e.connected?`text-gray-400`:`text-gray-600`,children:e.connected?e.serverUrl:`Disconnected`})]}),(0,x.jsx)(`span`,{className:`text-gray-700`,children:`·`}),c,e.nodes.length>0&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-gray-700`,children:`·`}),(0,x.jsxs)(`span`,{className:`text-gray-500`,children:[e.nodes.length.toLocaleString(),` nodes / `,e.edges.length.toLocaleString(),` edges`]})]})]}),(0,x.jsx)(`div`,{className:`flex-1`}),l&&(0,x.jsx)(`span`,{className:`
|
|
333
|
-
max-w-[30ch] truncate
|
|
334
|
-
px-2 py-0.5 rounded-full
|
|
335
|
-
bg-gray-800 text-gray-300
|
|
336
|
-
border border-gray-700
|
|
337
|
-
font-mono
|
|
338
|
-
`,title:l.name,children:l.name})]})]})}var ma={admin:`text-red-400 border-red-700/50 bg-red-900/20`,analyst:`text-cyan-400 border-cyan-700/50 bg-cyan-900/20`,viewer:`text-gray-400 border-gray-700/50 bg-gray-800/30`,"repo-owner":`text-indigo-400 border-indigo-700/50 bg-indigo-900/20`};function ha({onToggleAI:e,aiOpen:t}){let{state:n,dispatch:r}=T(),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(!1),[g,_]=(0,b.useState)(!1),v=(0,b.useRef)(null),y=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(!n.connected)return;let e=async()=>{try{let t=await new E(n.serverUrl).vectorStatus();d(t.ready),!t.ready&&t.building&&setTimeout(e,3e3)}catch{}};e()},[n.connected,n.serverUrl]),(0,b.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),v.current?.focus(),s(!0)),e.key===`Escape`&&(s(!1),h(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,b.useEffect)(()=>{let e=e=>{y.current&&!y.current.contains(e.target)&&h(!1)};return m&&document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[m]);let S=async e=>{if(!e.trim()){s(!1);return}p(!0);try{let t=new E(n.serverUrl);if(c&&u){let{results:n,source:i}=await t.vectorSearch(e,12);r({type:`SET_SEARCH`,query:e,results:n}),console.log(`[search] vector source:`,i)}else{let{results:n}=await t.search(e,12);r({type:`SET_SEARCH`,query:e,results:n})}s(!0)}catch(e){console.error(e)}finally{p(!1)}},C=async()=>{_(!0);try{await new E(n.serverUrl).logout()}catch{}finally{r({type:`SET_CURRENT_USER`,user:null}),r({type:`SET_CONNECTED`,connected:!1}),r({type:`SET_GRAPH`,nodes:[],edges:[]}),r({type:`SET_VIEW`,view:`login`}),_(!1),h(!1)}},w=n.currentUser;return(0,x.jsxs)(`div`,{className:`h-12 bg-[#0a0a0f] border-b border-gray-800 flex items-center px-4 gap-4 relative z-30`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`div`,{className:`w-7 h-7 rounded-md bg-gradient-to-br from-cyan-500 to-blue-600 flex items-center justify-center text-white font-bold text-sm`,children:`◈`}),(0,x.jsx)(`span`,{className:`text-white font-semibold tracking-tight`,children:`Code Intel`}),n.repoName&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-gray-600`,children:`·`}),n.mode===`group`?(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`text-xs bg-indigo-900/50 text-indigo-300 border border-indigo-700/50 rounded px-1.5 py-0.5 font-mono`,children:`group`}),(0,x.jsx)(`span`,{className:`text-cyan-400 text-sm font-mono`,children:n.repoName})]}):(0,x.jsx)(`span`,{className:`text-cyan-400 text-sm font-mono`,children:n.repoName})]})]}),(0,x.jsxs)(`div`,{className:`flex-1 max-w-2xl mx-auto relative`,children:[(0,x.jsxs)(`div`,{className:`relative flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 text-sm z-10`,children:f?(0,x.jsx)(`span`,{className:`animate-spin inline-block`,children:`⟳`}):`⌕`}),(0,x.jsx)(`input`,{ref:v,type:`text`,value:i,onChange:e=>a(e.target.value),onFocus:()=>s(n.search.results.length>0||i.length>0),onBlur:()=>setTimeout(()=>s(!1),150),onKeyDown:e=>{e.key===`Enter`&&S(i),e.key===`Escape`&&(s(!1),v.current?.blur())},placeholder:c&&u?`Semantic search…`:`Search nodes…`,className:`w-full bg-gray-900/80 border border-gray-700 rounded-lg pl-9 pr-28 py-1.5 text-sm text-white placeholder-gray-500 focus:border-cyan-500 focus:outline-none`}),(0,x.jsx)(`button`,{onClick:()=>l(e=>!e),title:u?c?`Switch to keyword search`:`Switch to vector/semantic search`:`Vector index building…`,className:`absolute right-14 top-1/2 -translate-y-1/2 text-[10px] px-1.5 py-0.5 rounded border font-mono transition-all ${u===null?`text-gray-600 border-gray-700`:u&&c?`text-purple-300 border-purple-600 bg-purple-900/30`:u?`text-gray-400 border-gray-700 hover:border-purple-600 hover:text-purple-300`:`text-yellow-600 border-yellow-800 animate-pulse`}`,children:u===null?`…`:u?c?`⚡ vec`:`vec`:`⟳ vec`}),(0,x.jsx)(`span`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 text-xs border border-gray-700 rounded px-1.5 py-0.5 font-mono bg-gray-800/60`,children:`⌘K`})]}),o&&n.search.results.length>0&&(0,x.jsx)(`div`,{className:`absolute top-full left-0 right-0 mt-1 bg-gray-900 border border-gray-700 rounded-lg shadow-2xl max-h-96 overflow-y-auto`,children:n.search.results.map(e=>(0,x.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 hover:bg-gray-800 cursor-pointer border-b border-gray-800/60 last:border-0`,onMouseDown:t=>{t.preventDefault();let i=n.nodes.find(t=>t.id===e.nodeId);i&&(r({type:`SELECT_NODE`,node:i}),s(!1))},children:[(0,x.jsx)(`span`,{className:`w-2 h-2 rounded-full flex-shrink-0`,style:{backgroundColor:wi[e.kind]??`#666`}}),(0,x.jsx)(`span`,{className:`text-sm text-white font-medium truncate`,children:e.name}),(0,x.jsx)(`span`,{className:`text-xs text-gray-500 ml-auto truncate max-w-xs`,children:e.filePath})]},e.nodeId))})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-gray-400 font-mono`,children:[(0,x.jsxs)(`span`,{children:[n.nodes.length.toLocaleString(),` nodes`]}),(0,x.jsx)(`span`,{children:`·`}),(0,x.jsxs)(`span`,{children:[n.edges.length.toLocaleString(),` edges`]})]}),(0,x.jsxs)(`button`,{onClick:e,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm font-medium transition ${t?`bg-gradient-to-r from-indigo-600 to-purple-600 text-white`:`bg-gray-800 hover:bg-gray-700 text-gray-200 border border-gray-700`}`,children:[(0,x.jsx)(`span`,{children:`✦`}),`Code AI`]}),w&&(0,x.jsxs)(`div`,{className:`relative`,ref:y,children:[(0,x.jsxs)(`button`,{onClick:()=>h(e=>!e),className:`flex items-center gap-2 px-2.5 py-1.5 rounded-lg hover:bg-gray-800 border border-gray-700/60 transition`,children:[(0,x.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-gradient-to-br from-cyan-600 to-blue-600 flex items-center justify-center text-white text-xs font-bold select-none`,children:w.username.charAt(0).toUpperCase()}),(0,x.jsx)(`span`,{className:`text-sm text-gray-200 max-w-[80px] truncate`,children:w.username}),(0,x.jsx)(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded border font-mono ${ma[w.role]??ma.viewer}`,children:w.role}),(0,x.jsx)(`svg`,{className:`w-3 h-3 text-gray-500 transition-transform ${m?`rotate-180`:``}`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:(0,x.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19 9l-7 7-7-7`})})]}),m&&(0,x.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 w-52 bg-gray-900 border border-gray-700 rounded-xl shadow-2xl py-1 z-50`,children:[(0,x.jsxs)(`div`,{className:`px-4 py-2.5 border-b border-gray-800`,children:[(0,x.jsx)(`p`,{className:`text-sm text-white font-semibold`,children:w.username}),(0,x.jsx)(`p`,{className:`text-xs text-gray-500 mt-0.5 capitalize`,children:w.role})]}),(0,x.jsxs)(`button`,{onClick:()=>{h(!1),r({type:`SET_CONNECTED`,connected:!1}),r({type:`SET_VIEW`,view:`connect`})},className:`w-full text-left px-4 py-2 text-sm text-gray-300 hover:bg-gray-800 hover:text-white transition flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-gray-500`,children:`⬡`}),`Switch Repository`]}),(0,x.jsxs)(`button`,{onClick:C,disabled:g,className:`w-full text-left px-4 py-2 text-sm text-red-400 hover:bg-red-950/30 hover:text-red-300 transition flex items-center gap-2 disabled:opacity-50`,children:[g?(0,x.jsx)(`span`,{className:`animate-spin inline-block text-xs`,children:`⟳`}):(0,x.jsx)(`svg`,{className:`w-3.5 h-3.5`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:(0,x.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1`})}),g?`Signing out…`:`Sign out`]})]})]})]})}var ga=[{title:`Navigation`,shortcuts:[{keys:[`Esc`],description:`Close panel / Deselect node`},{keys:[`Tab`],description:`Cycle through NodeDetail tabs`},{keys:[`←`,`→`],description:`Navigate search results`}]},{title:`Search`,shortcuts:[{keys:[`⌘K`,`Ctrl+K`],description:`Focus search`},{keys:[`?`],description:`Toggle shortcuts panel`}]},{title:`Graph`,shortcuts:[{keys:[`F`],description:`Fit graph to view`},{keys:[`G`],description:`Jump to graph`}]}];function _a({open:e,onClose:t}){let n=(0,b.useRef)(null);if((0,b.useEffect)(()=>{if(!e)return;function n(e){e.key===`Escape`&&t()}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]),!e)return null;function r(e){e.target===n.current&&t()}return(0,x.jsx)(`div`,{ref:n,onClick:r,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,children:(0,x.jsxs)(`div`,{className:`w-full max-w-sm bg-[#0c0f1e] border border-gray-800 rounded-xl shadow-2xl overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-gray-800`,children:[(0,x.jsx)(`h2`,{className:`text-sm font-semibold text-gray-100 tracking-wide`,children:`Keyboard Shortcuts`}),(0,x.jsx)(`button`,{onClick:t,className:`text-gray-500 hover:text-gray-200 transition text-base leading-none`,"aria-label":`Close shortcuts panel`,children:`×`})]}),(0,x.jsx)(`div`,{className:`p-4 space-y-5`,children:ga.map(e=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] font-bold tracking-widest text-cyan-500/70 uppercase mb-2`,children:e.title}),(0,x.jsx)(`div`,{className:`space-y-2`,children:e.shortcuts.map(e=>(0,x.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,x.jsx)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:e.keys.map(e=>(0,x.jsx)(`span`,{className:`bg-gray-800 border border-gray-700 text-gray-300 font-mono text-xs rounded px-1.5 py-0.5`,children:e},e))}),(0,x.jsx)(`span`,{className:`text-gray-400 text-xs text-right`,children:e.description})]},e.description))})]},e.title))})]})})}function va(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(`explorer`),[i,a]=(0,b.useState)(!0),[o,s]=(0,b.useState)(!1);return(0,b.useEffect)(()=>{function e(e){let t=e.target,n=t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable;e.key===`?`&&!n&&s(e=>!e)}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,x.jsxs)(`div`,{className:`flex flex-col h-screen bg-[#040812] text-white`,children:[(0,x.jsx)(ha,{onToggleAI:()=>a(e=>!e),aiOpen:i}),(0,x.jsx)(_a,{open:o,onClose:()=>s(!1)}),(0,x.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`w-72 bg-[#080b14] border-r border-gray-800/50 flex flex-col`,children:[(0,x.jsx)(`div`,{className:`flex border-b border-gray-800/50`,children:[`explorer`,`filters`,`files`].concat(e.mode===`group`?[`group`]:[]).map(e=>(0,x.jsx)(`button`,{onClick:()=>r(e),className:`flex-1 px-3 py-2.5 text-xs font-semibold capitalize tracking-wide transition ${n===e?`text-cyan-400 border-b-2 border-cyan-500 bg-cyan-500/5`:`text-gray-500 hover:text-gray-300 hover:bg-gray-800/30`}`,children:e===`group`?`⬢ group`:e},e))}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-hidden`,children:[n===`explorer`&&(0,x.jsx)(ya,{}),n===`filters`&&(0,x.jsx)(da,{}),n===`files`&&(0,x.jsx)(sa,{}),n===`group`&&e.mode===`group`&&(0,x.jsx)(ba,{})]})]}),(0,x.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,x.jsx)(`div`,{className:`flex-1 relative`,children:(0,x.jsx)(ki,{})}),e.selectedNode&&(0,x.jsx)(Fi,{node:e.selectedNode,onClose:()=>t({type:`SELECT_NODE`,node:null})})]}),i&&(0,x.jsx)(`div`,{className:`w-96 border-l border-gray-800/50 flex flex-col`,children:(0,x.jsx)(Ui,{})})]}),(0,x.jsx)(pa,{})]})}function ya(){let{state:e,dispatch:t}=T(),n=new Map;for(let t of e.nodes)n.set(t.kind,(n.get(t.kind)??0)+1);let r=[...n.entries()].sort((e,t)=>t[1]-e[1]).slice(0,10),i=r[0]?.[1]??1;return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[e.search.results.length>0&&(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-cyan-500/80 uppercase`,children:`Search Results`}),(0,x.jsx)(`span`,{className:`text-[10px] bg-cyan-900/30 text-cyan-400 px-1.5 py-0.5 rounded-full font-mono`,children:e.search.results.length})]}),(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-500 mb-2 truncate`,children:[`"`,e.search.query,`"`]}),(0,x.jsx)(`div`,{className:`space-y-0.5`,children:e.search.results.map(n=>(0,x.jsxs)(`button`,{onClick:()=>{let r=e.nodes.find(e=>e.id===n.nodeId);r&&t({type:`SELECT_NODE`,node:r})},className:`w-full flex items-center gap-2 px-2 py-1.5 rounded-md hover:bg-gray-800/50 text-left group transition`,children:[(0,x.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full flex-shrink-0`,style:{backgroundColor:wi[n.kind]??`#6b7280`}}),(0,x.jsx)(`span`,{className:`text-xs text-gray-200 font-medium truncate flex-1 group-hover:text-white`,children:n.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 font-mono`,children:n.kind})]},n.nodeId))})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-3`,children:`Graph Composition`}),(0,x.jsx)(`div`,{className:`space-y-2`,children:r.map(([e,t])=>{let n=wi[e]??`#6b7280`,r=t/i*100;return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between text-[11px] mb-0.5`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full flex-shrink-0`,style:{backgroundColor:n}}),(0,x.jsx)(`span`,{className:`text-gray-300`,children:e})]}),(0,x.jsx)(`span`,{className:`text-gray-500 font-mono tabular-nums`,children:t})]}),(0,x.jsx)(`div`,{className:`h-1 bg-gray-800/80 rounded-full overflow-hidden`,children:(0,x.jsx)(`div`,{className:`h-full rounded-full transition-all duration-500`,style:{width:`${r}%`,backgroundColor:n,opacity:.7}})})]},e)})})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:`Overview`}),(0,x.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:[{label:`Nodes`,value:e.nodes.length,color:`text-cyan-400`},{label:`Edges`,value:e.edges.length,color:`text-purple-400`},{label:`Files`,value:n.get(`file`)??0,color:`text-blue-400`},{label:`Functions`,value:n.get(`function`)??0,color:`text-sky-400`}].map(({label:e,value:t,color:n})=>(0,x.jsxs)(`div`,{className:`bg-gray-900/50 rounded-lg p-2 border border-gray-800/50`,children:[(0,x.jsx)(`p`,{className:`text-base font-bold font-mono ${n}`,children:t}),(0,x.jsx)(`p`,{className:`text-[10px] text-gray-500`,children:e})]},e))})]}),(0,x.jsx)(`div`,{className:`p-3`,children:(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-600 leading-relaxed`,children:[(0,x.jsx)(`span`,{className:`text-gray-400 font-mono`,children:`⌘K`}),` to search. Click nodes to inspect. Toggle `,(0,x.jsx)(`span`,{className:`text-cyan-500`,children:`⚡ vec`}),` for semantic search. Use `,(0,x.jsx)(`span`,{className:`text-gray-400`,children:`Filters`}),` to show/hide node types.`]})})]})}function ba(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(``);return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-indigo-400/80 uppercase`,children:[`⬢ `,e.groupName]}),(0,x.jsx)(`button`,{onClick:async()=>{r(!0),a(``);try{let n=await new E(e.serverUrl).syncGroup(e.groupName);t({type:`SET_GROUP_CONTRACTS`,contracts:n.contracts,links:n.links,syncedAt:n.syncedAt})}catch(e){a(e instanceof Error?e.message:`Sync failed`)}finally{r(!1)}},disabled:n,className:`text-[10px] text-indigo-400 hover:text-indigo-300 border border-indigo-800/50 hover:border-indigo-600 rounded px-1.5 py-0.5 transition disabled:opacity-50`,children:n?`⟳ syncing…`:`↻ sync`})]}),i&&(0,x.jsx)(`p`,{className:`text-red-400 text-[10px] mt-1`,children:i}),e.groupSyncedAt&&(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-600`,children:[`Last sync: `,new Date(e.groupSyncedAt).toLocaleString()]})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Members (`,e.groupMembers.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-1`,children:e.groupMembers.map(e=>(0,x.jsxs)(`div`,{className:`bg-gray-900/40 rounded-md px-2 py-1.5 border border-gray-800/30`,children:[(0,x.jsx)(`div`,{className:`text-[10px] text-gray-500 font-mono truncate`,children:e.groupPath}),(0,x.jsx)(`div`,{className:`text-xs text-cyan-400 font-medium truncate`,children:e.registryName})]},e.groupPath))})]}),e.groupContracts.length>0&&(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Contracts (`,e.groupContracts.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-0.5 max-h-40 overflow-y-auto`,children:e.groupContracts.slice(0,30).map((e,t)=>(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5 py-0.5`,children:[(0,x.jsx)(`span`,{className:`text-[9px] px-1 rounded font-mono ${e.kind===`export`?`bg-cyan-900/40 text-cyan-400`:e.kind===`route`?`bg-green-900/40 text-green-400`:e.kind===`event`?`bg-purple-900/40 text-purple-400`:`bg-yellow-900/40 text-yellow-400`}`,children:e.kind}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-300 truncate`,children:e.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 ml-auto shrink-0`,children:e.repoName})]},t))})]}),e.groupLinks.length>0&&(0,x.jsxs)(`div`,{className:`p-3`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Cross-repo Links (`,e.groupLinks.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-1 max-h-48 overflow-y-auto`,children:e.groupLinks.filter(e=>e.confidence>=.7).slice(0,20).map((e,t)=>(0,x.jsxs)(`div`,{className:`bg-gray-900/40 rounded-md px-2 py-1.5 border border-gray-800/30 text-[10px]`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1 mb-0.5`,children:[(0,x.jsx)(`span`,{className:`text-green-400 font-mono`,children:e.providerRepo}),(0,x.jsx)(`span`,{className:`text-gray-600`,children:`∷`}),(0,x.jsx)(`span`,{className:`text-white truncate`,children:e.providerContract})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`text-gray-600 pl-3`,children:`↔`}),(0,x.jsx)(`span`,{className:`text-indigo-400 font-mono`,children:e.consumerRepo}),(0,x.jsx)(`span`,{className:`text-gray-600`,children:`∷`}),(0,x.jsx)(`span`,{className:`text-white truncate`,children:e.consumerContract}),(0,x.jsxs)(`span`,{className:`ml-auto text-gray-600`,children:[(e.confidence*100).toFixed(0),`%`]})]})]},t))})]}),e.groupContracts.length===0&&e.groupMembers.length>0&&(0,x.jsxs)(`div`,{className:`p-3 text-center`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600`,children:`No contract data yet.`}),(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600 mt-1`,children:`Click ↻ sync to extract contracts.`})]})]})}function xa(){let{state:e}=T();switch(e.view){case`login`:return(0,x.jsx)(te,{});case`connect`:return(0,x.jsx)(re,{});case`loading`:return(0,x.jsx)(O,{});case`exploring`:return(0,x.jsx)(va,{})}}function Sa(){return(0,x.jsx)(ee,{children:(0,x.jsx)(xa,{})})}y.createRoot(document.getElementById(`root`)).render((0,x.jsx)(b.StrictMode,{children:(0,x.jsx)(Sa,{})}));
|
|
332
|
+
`).map((e,n)=>(0,x.jsx)(`div`,{className:`leading-relaxed`,children:Zi(e,t)},n))})}var qi=/\[\[([^\]]+)\]\]/g,Ji=/^(#{1,4})\s+(.*)$/,Yi=/\*\*([^*]+)\*\*/g,Xi=/`([^`]+)`/g;function Zi(e,t){let n=e.match(Ji);if(n){let e=n[1].length,r=n[2];return(0,x.jsx)(`h${Math.min(4,e+1)}`,{className:e<=2?`text-base font-bold text-white mt-2`:e===3?`text-sm font-semibold text-gray-100 mt-2`:`text-xs font-semibold text-gray-300 mt-1`,children:Qi(r,t)})}return e.startsWith(`- `)?(0,x.jsxs)(`div`,{className:`ml-3`,children:[`• `,Qi(e.slice(2),t)]}):e.trim()===``?(0,x.jsx)(`div`,{className:`h-1`}):(0,x.jsx)(`span`,{children:Qi(e,t)})}function Qi(e,t){let n=[],r=0;qi.lastIndex=0;let i;for(;(i=qi.exec(e))!==null;){i.index>r&&n.push((0,x.jsx)(b.Fragment,{children:ta(e.slice(r,i.index))},`t-${r}`));let a=i[1],o=$i(a);n.push((0,x.jsxs)(`button`,{onClick:()=>t(o),className:`inline-flex items-center gap-0.5 mx-0.5 px-1.5 py-0.5 text-[10px] font-mono bg-cyan-900/40 hover:bg-cyan-900/70 text-cyan-300 rounded border border-cyan-700/30 align-baseline`,title:o.filePath,children:[ea(o.filePath),o.startLine?`:${o.startLine}`:``]},`c-${i.index}`)),r=i.index+i[0].length}return r<e.length&&n.push((0,x.jsx)(b.Fragment,{children:ta(e.slice(r))},`t-${r}`)),n}function $i(e){let t=e.lastIndexOf(`:`);if(t>0&&/^\d/.test(e.slice(t+1))){let n=e.slice(0,t),[r,i]=e.slice(t+1).split(`-`).map(e=>parseInt(e,10));return{filePath:n,startLine:r,endLine:i}}return{filePath:e}}function ea(e){let t=e.split(`/`);return t.length<=2?e:`…/${t.slice(-2).join(`/`)}`}function ta(e){let t=[],n=0;for(;n<e.length;){Yi.lastIndex=n,Xi.lastIndex=n;let r=Yi.exec(e),i=Xi.exec(e),a=null;if(r&&i?a=r.index<i.index?{match:r,type:`b`}:{match:i,type:`c`}:r?a={match:r,type:`b`}:i&&(a={match:i,type:`c`}),!a){t.push(e.slice(n));break}a.match.index>n&&t.push(e.slice(n,a.match.index)),a.type===`b`?t.push((0,x.jsx)(`strong`,{className:`text-white`,children:a.match[1]},`b-${a.match.index}`)):t.push((0,x.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-gray-950 text-cyan-300 font-mono text-[11px]`,children:a.match[1]},`c-${a.match.index}`)),n=a.match.index+a.match[0].length}return(0,x.jsx)(x.Fragment,{children:t})}function na(e){let t={name:``,path:``,children:new Map,files:[]};for(let n of e){let e=n.split(`/`),r=t;for(let t=0;t<e.length-1;t++){let n=e[t];r.children.has(n)||r.children.set(n,{name:n,path:e.slice(0,t+1).join(`/`),children:new Map,files:[]}),r=r.children.get(n)}r.files.push(n)}return t}function ra(e){let t=e.files.length;for(let n of e.children.values())t+=ra(n);return t}function ia({node:e,depth:t,onFileClick:n,selectedPath:r}){let i=[...e.children.entries()].sort((e,t)=>e[0].localeCompare(t[0])),a=[...e.files].sort(),o=ra(e),s=t*12,[c,l]=(0,b.useState)(t<=1||e.children.size===1);return t===0?(0,x.jsxs)(x.Fragment,{children:[i.map(([,e])=>(0,x.jsx)(ia,{node:e,depth:t+1,onFileClick:n,selectedPath:r},e.path)),a.map(e=>(0,x.jsx)(aa,{fp:e,indent:s,selected:e===r,onClick:()=>n(e)},e))]}):(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 pr-2 cursor-pointer hover:bg-gray-800/50 rounded-sm group transition select-none`,style:{paddingLeft:`${s+6}px`},onClick:()=>l(e=>!e),children:[(0,x.jsx)(`span`,{className:`text-gray-500 text-[10px] w-3 flex-shrink-0 text-center`,children:i.length>0||a.length>0?c?`▾`:`▸`:` `}),(0,x.jsx)(`span`,{className:`text-[13px] mr-1`,children:c?`📂`:`📁`}),(0,x.jsx)(`span`,{className:`text-xs text-gray-200 font-medium truncate flex-1 group-hover:text-white`,children:e.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 font-mono ml-1 flex-shrink-0`,children:o})]}),c&&(0,x.jsxs)(`div`,{children:[i.map(([,e])=>(0,x.jsx)(ia,{node:e,depth:t+1,onFileClick:n,selectedPath:r},e.path)),a.map(e=>(0,x.jsx)(aa,{fp:e,indent:s+16,selected:e===r,onClick:()=>n(e)},e))]})]})}function aa({fp:e,indent:t,selected:n,onClick:r}){let i=e.split(`/`).pop(),a=oa[i.split(`.`).pop()??``]??`📄`;return(0,x.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 pr-2 cursor-pointer rounded-sm transition select-none ${n?`bg-cyan-500/15 text-cyan-300`:`hover:bg-gray-800/50 text-gray-400 hover:text-gray-200`}`,style:{paddingLeft:`${t+6}px`},onClick:r,title:e,children:[(0,x.jsx)(`span`,{className:`text-[11px] mr-1 flex-shrink-0`,children:a}),(0,x.jsx)(`span`,{className:`text-xs truncate`,children:i})]})}var oa={ts:`🔷`,tsx:`⚛️`,js:`🟨`,jsx:`⚛️`,json:`📋`,md:`📝`,py:`🐍`,go:`🐹`,rs:`🦀`,java:`☕`,cs:`🔵`,css:`🎨`,html:`🌐`,yaml:`⚙️`,yml:`⚙️`,toml:`⚙️`,sh:`🐚`,txt:`📄`,gitignore:`🚫`};function sa(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(``),i=(0,b.useMemo)(()=>e.nodes.filter(e=>e.kind===`file`).map(e=>e.filePath).sort(),[e.nodes]),a=(0,b.useMemo)(()=>{if(!n.trim())return i;let e=n.toLowerCase();return i.filter(t=>t.toLowerCase().includes(e))},[i,n]),o=(0,b.useMemo)(()=>na(a),[a]),s=e.selectedNode?.kind===`file`?e.selectedNode.filePath:void 0;return(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsx)(`div`,{className:`p-2 border-b border-gray-800/50`,children:(0,x.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`Filter files…`,className:`w-full bg-gray-900/60 border border-gray-700/50 rounded-md px-2.5 py-1.5 text-xs text-gray-200 placeholder-gray-600 focus:border-cyan-600 focus:outline-none`})}),(0,x.jsx)(`div`,{className:`flex-1 overflow-y-auto py-1 text-sm`,children:a.length===0?(0,x.jsx)(`p`,{className:`text-center text-gray-600 text-xs mt-4`,children:`No files match`}):(0,x.jsx)(ia,{node:o,depth:0,onFileClick:n=>{let r=e.nodes.find(e=>e.filePath===n&&e.kind===`file`);r&&t({type:`SELECT_NODE`,node:r})},selectedPath:s})}),(0,x.jsxs)(`div`,{className:`px-3 py-1.5 border-t border-gray-800/50 text-[10px] text-gray-600 font-mono`,children:[a.length,` file`,a.length===1?``:`s`]})]})}var ca={directory:`Folder`,file:`File`,class:`Class`,function:`Function`,method:`Method`,variable:`Variable`,interface:`Interface`,module:`Module`,struct:`Struct`,enum:`Enum`,trait:`Trait`,namespace:`Namespace`,type_alias:`Type Alias`,constant:`Constant`,property:`Property`,constructor:`Constructor`,route:`Route`,cluster:`Cluster`,flow:`Flow`},la={contains:`Contains`,calls:`Calls`,imports:`Imports`,extends:`Extends`,implements:`Implements`,has_member:`Has Member`,accesses:`Accesses`,overrides:`Overrides`,belongs_to:`Belongs To`,step_of:`Step Of`,handles:`Handles`},ua=[`all`,1,2,3,5];function da(){let{state:e,dispatch:t}=T(),{nodeKindCounts:n,edgeKindCounts:r}=(0,b.useMemo)(()=>{let t=new Map,n=new Map;for(let n of e.nodes)t.set(n.kind,(t.get(n.kind)??0)+1);for(let t of e.edges)n.set(t.kind,(n.get(t.kind)??0)+1);return{nodeKindCounts:t,edgeKindCounts:n}},[e.nodes,e.edges]),i=[...n.entries()].sort((e,t)=>t[1]-e[1]),a=[...r.entries()].sort((e,t)=>t[1]-e[1]);return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[(0,x.jsx)(fa,{title:`Node Types`,subtitle:`Toggle visibility of node types in the graph`,children:(0,x.jsx)(`div`,{className:`space-y-1`,children:i.map(([n,r])=>{let i=e.filters.hiddenNodeKinds.has(n);return(0,x.jsxs)(`button`,{onClick:()=>t({type:`TOGGLE_NODE_KIND`,kind:n}),className:`w-full flex items-center gap-2 px-2 py-1 rounded hover:bg-gray-800/60 text-left`,children:[(0,x.jsx)(`span`,{className:`w-2.5 h-2.5 rounded-full flex-shrink-0`,style:{backgroundColor:wi[n]??`#666`,opacity:i?.25:1}}),(0,x.jsx)(`span`,{className:`flex-1 text-xs ${i?`text-gray-600 line-through`:`text-gray-200`}`,children:ca[n]??n}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-500 font-mono`,children:r}),(0,x.jsx)(`span`,{className:`w-4 h-4 rounded flex items-center justify-center text-[10px] ${i?`bg-gray-800 text-gray-600`:`bg-blue-600/30 text-blue-300`}`,children:i?`+`:`✓`})]},n)})})}),(0,x.jsx)(fa,{title:`Edge Types`,subtitle:`Toggle visibility of relationship types`,children:(0,x.jsx)(`div`,{className:`space-y-1`,children:a.map(([n,r])=>{let i=e.filters.hiddenEdgeKinds.has(n);return(0,x.jsxs)(`button`,{onClick:()=>t({type:`TOGGLE_EDGE_KIND`,kind:n}),className:`w-full flex items-center gap-2 px-2 py-1 rounded hover:bg-gray-800/60 text-left`,children:[(0,x.jsx)(`span`,{className:`w-4 h-0.5 flex-shrink-0`,style:{backgroundColor:Ti[n]??`#666`,opacity:i?.25:1}}),(0,x.jsx)(`span`,{className:`flex-1 text-xs ${i?`text-gray-600 line-through`:`text-gray-200`}`,children:la[n]??n}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-500 font-mono`,children:r}),(0,x.jsx)(`span`,{className:`w-4 h-4 rounded flex items-center justify-center text-[10px] ${i?`bg-gray-800 text-gray-600`:`bg-blue-600/30 text-blue-300`}`,children:i?`+`:`✓`})]},n)})})}),(0,x.jsxs)(fa,{title:`Focus Depth`,subtitle:`Show nodes within N hops of selection`,children:[(0,x.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:ua.map(n=>(0,x.jsx)(`button`,{onClick:()=>t({type:`SET_FOCUS_DEPTH`,depth:n}),className:`px-2.5 py-1 rounded text-xs font-medium ${e.filters.focusDepth===n?`bg-cyan-500 text-gray-900`:`bg-gray-800 text-gray-400 hover:bg-gray-700`}`,children:n===`all`?`All`:`${n} hop${n===1?``:`s`}`},String(n)))}),!e.selectedNode&&e.filters.focusDepth!==`all`&&(0,x.jsx)(`p`,{className:`text-[10px] text-amber-400 mt-2`,children:`Select a node to apply focus depth.`})]}),(0,x.jsx)(`div`,{className:`px-3 pb-4`,children:(0,x.jsx)(`button`,{onClick:()=>t({type:`RESET_FILTERS`}),className:`w-full px-2 py-1.5 text-xs bg-gray-800 hover:bg-gray-700 text-gray-300 rounded`,children:`Reset filters`})})]})}function fa({title:e,subtitle:t,children:n}){return(0,x.jsxs)(`div`,{className:`px-3 py-3 border-b border-gray-800`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-0.5`,children:e}),t&&(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600 mb-2`,children:t}),n]})}function pa(){let{state:e}=T(),[t,n]=(0,b.useState)(`unknown`),[r,i]=(0,b.useState)(!1),a=(0,b.useRef)(null),[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(null),u=(0,b.useRef)(null),d=e=>{l(e),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>l(null),4e3)};(0,b.useEffect)(()=>{if(!e.connected)return;let t=e.serverUrl.replace(/^http/,`ws`)+`/ws`,n=null,r=null,i=!1;function a(){if(!i)try{n=new WebSocket(t),n.onopen=()=>s(!0),n.onclose=()=>{if(s(!1),!i){let e=Math.random()*500;r=setTimeout(a,3e3+e)}},n.onerror=()=>{},n.onmessage=e=>{try{let t=JSON.parse(e.data);if(t.type===`graph:updated`){let e=t.changedFiles?.length??0;d(`Graph updated — ${e} file${e===1?``:`s`} changed`)}}catch{}}}catch{}}return a(),()=>{i=!0,r&&clearTimeout(r),n?.close(),s(!1)}},[e.connected,e.serverUrl]);let f=(0,b.useCallback)(async()=>{if(!e.connected)return;let t=new E(e.serverUrl);try{let e=await t.vectorStatus();if(e.ready){n(`ready`),i(!1),a.current&&clearTimeout(a.current);return}e.building?(n(`building`),i(!0)):(n(`unknown`),i(!1))}catch{n(`unknown`),i(!1)}a.current=setTimeout(()=>void f(),5e3)},[e.connected,e.serverUrl]);(0,b.useEffect)(()=>(a.current&&clearTimeout(a.current),n(`unknown`),i(!1),e.connected&&f(),()=>{a.current&&clearTimeout(a.current)}),[e.connected,e.serverUrl]);let p=e.connected?`bg-green-500`:`bg-gray-500`,m;m=t===`building`?(0,x.jsxs)(`span`,{className:`flex items-center gap-1 text-yellow-400`,children:[(0,x.jsx)(`span`,{className:`inline-block`,style:{animation:r?`spin 1s linear infinite`:`none`},children:`⟳`}),(0,x.jsx)(`span`,{children:`vec building…`})]}):t===`ready`?(0,x.jsx)(`span`,{className:`text-green-400`,children:`⚡ vec ready`}):(0,x.jsx)(`span`,{className:`text-gray-600`,children:`vec –`});let h=e.selectedNode;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`style`,{children:`@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }`}),c&&(0,x.jsxs)(`div`,{className:`fixed bottom-10 left-1/2 -translate-x-1/2 z-50 bg-cyan-900/90 border border-cyan-500/50 text-cyan-200 text-xs px-4 py-2 rounded-lg shadow-lg flex items-center gap-2 pointer-events-none`,children:[(0,x.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-cyan-400 animate-pulse`}),c]}),(0,x.jsxs)(`div`,{className:`h-7 bg-[#050810] border-t border-gray-800 flex items-center px-3 text-xs text-gray-500 shrink-0`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,x.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`span`,{className:`w-2 h-2 rounded-full ${p}`}),(0,x.jsx)(`span`,{className:e.connected?`text-gray-400`:`text-gray-600`,children:e.connected?e.serverUrl:`Disconnected`})]}),e.connected&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-gray-700`,children:`·`}),(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,title:o?`Live updates active`:`Live updates disconnected`,children:[(0,x.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full ${o?`bg-green-400`:`bg-gray-600`}`}),(0,x.jsx)(`span`,{className:o?`text-green-400`:`text-gray-600`,children:`live`})]})]}),(0,x.jsx)(`span`,{className:`text-gray-700`,children:`·`}),m,e.nodes.length>0&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-gray-700`,children:`·`}),(0,x.jsxs)(`span`,{className:`text-gray-500`,children:[e.nodes.length.toLocaleString(),` nodes / `,e.edges.length.toLocaleString(),` edges`]})]})]}),(0,x.jsx)(`div`,{className:`flex-1`}),h&&(0,x.jsx)(`span`,{className:`max-w-[30ch] truncate px-2 py-0.5 rounded-full bg-gray-800 text-gray-300 border border-gray-700 font-mono`,title:h.name,children:h.name})]})]})}var ma={admin:`text-red-400 border-red-700/50 bg-red-900/20`,analyst:`text-cyan-400 border-cyan-700/50 bg-cyan-900/20`,viewer:`text-gray-400 border-gray-700/50 bg-gray-800/30`,"repo-owner":`text-indigo-400 border-indigo-700/50 bg-indigo-900/20`};function ha({onToggleAI:e,aiOpen:t}){let{state:n,dispatch:r}=T(),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(!1),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(!1),[g,_]=(0,b.useState)(!1),v=(0,b.useRef)(null),y=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(!n.connected)return;let e=async()=>{try{let t=await new E(n.serverUrl).vectorStatus();d(t.ready),!t.ready&&t.building&&setTimeout(e,3e3)}catch{}};e()},[n.connected,n.serverUrl]),(0,b.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),v.current?.focus(),s(!0)),e.key===`Escape`&&(s(!1),h(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,b.useEffect)(()=>{let e=e=>{y.current&&!y.current.contains(e.target)&&h(!1)};return m&&document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[m]);let S=async e=>{if(!e.trim()){s(!1);return}p(!0);try{let t=new E(n.serverUrl);if(c&&u){let{results:n,source:i}=await t.vectorSearch(e,12);r({type:`SET_SEARCH`,query:e,results:n}),console.log(`[search] vector source:`,i)}else{let{results:n}=await t.search(e,12);r({type:`SET_SEARCH`,query:e,results:n})}s(!0)}catch(e){console.error(e)}finally{p(!1)}},C=async()=>{_(!0);try{await new E(n.serverUrl).logout()}catch{}finally{r({type:`SET_CURRENT_USER`,user:null}),r({type:`SET_CONNECTED`,connected:!1}),r({type:`SET_GRAPH`,nodes:[],edges:[]}),r({type:`SET_VIEW`,view:`login`}),_(!1),h(!1)}},w=n.currentUser;return(0,x.jsxs)(`div`,{className:`h-12 bg-[#0a0a0f] border-b border-gray-800 flex items-center px-4 gap-4 relative z-30`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`div`,{className:`w-7 h-7 rounded-md bg-gradient-to-br from-cyan-500 to-blue-600 flex items-center justify-center text-white font-bold text-sm`,children:`◈`}),(0,x.jsx)(`span`,{className:`text-white font-semibold tracking-tight`,children:`Code Intel`}),n.repoName&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-gray-600`,children:`·`}),n.mode===`group`?(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`text-xs bg-indigo-900/50 text-indigo-300 border border-indigo-700/50 rounded px-1.5 py-0.5 font-mono`,children:`group`}),(0,x.jsx)(`span`,{className:`text-cyan-400 text-sm font-mono`,children:n.repoName})]}):(0,x.jsx)(`span`,{className:`text-cyan-400 text-sm font-mono`,children:n.repoName})]})]}),(0,x.jsxs)(`div`,{className:`flex-1 max-w-2xl mx-auto relative`,children:[(0,x.jsxs)(`div`,{className:`relative flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`absolute left-3 top-1/2 -translate-y-1/2 text-gray-500 text-sm z-10`,children:f?(0,x.jsx)(`span`,{className:`animate-spin inline-block`,children:`⟳`}):`⌕`}),(0,x.jsx)(`input`,{ref:v,type:`text`,value:i,onChange:e=>a(e.target.value),onFocus:()=>s(n.search.results.length>0||i.length>0),onBlur:()=>setTimeout(()=>s(!1),150),onKeyDown:e=>{e.key===`Enter`&&S(i),e.key===`Escape`&&(s(!1),v.current?.blur())},placeholder:c&&u?`Semantic search…`:`Search nodes…`,className:`w-full bg-gray-900/80 border border-gray-700 rounded-lg pl-9 pr-28 py-1.5 text-sm text-white placeholder-gray-500 focus:border-cyan-500 focus:outline-none`}),(0,x.jsx)(`button`,{onClick:()=>l(e=>!e),title:u?c?`Switch to keyword search`:`Switch to vector/semantic search`:`Vector index building…`,className:`absolute right-14 top-1/2 -translate-y-1/2 text-[10px] px-1.5 py-0.5 rounded border font-mono transition-all ${u===null?`text-gray-600 border-gray-700`:u&&c?`text-purple-300 border-purple-600 bg-purple-900/30`:u?`text-gray-400 border-gray-700 hover:border-purple-600 hover:text-purple-300`:`text-yellow-600 border-yellow-800 animate-pulse`}`,children:u===null?`…`:u?c?`⚡ vec`:`vec`:`⟳ vec`}),(0,x.jsx)(`span`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 text-xs border border-gray-700 rounded px-1.5 py-0.5 font-mono bg-gray-800/60`,children:`⌘K`})]}),o&&n.search.results.length>0&&(0,x.jsx)(`div`,{className:`absolute top-full left-0 right-0 mt-1 bg-gray-900 border border-gray-700 rounded-lg shadow-2xl max-h-96 overflow-y-auto`,children:n.search.results.map(e=>(0,x.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 hover:bg-gray-800 cursor-pointer border-b border-gray-800/60 last:border-0`,onMouseDown:t=>{t.preventDefault();let i=n.nodes.find(t=>t.id===e.nodeId);i&&(r({type:`SELECT_NODE`,node:i}),s(!1))},children:[(0,x.jsx)(`span`,{className:`w-2 h-2 rounded-full flex-shrink-0`,style:{backgroundColor:wi[e.kind]??`#666`}}),(0,x.jsx)(`span`,{className:`text-sm text-white font-medium truncate`,children:e.name}),(0,x.jsx)(`span`,{className:`text-xs text-gray-500 ml-auto truncate max-w-xs`,children:e.filePath})]},e.nodeId))})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-xs text-gray-400 font-mono`,children:[(0,x.jsxs)(`span`,{children:[n.nodes.length.toLocaleString(),` nodes`]}),(0,x.jsx)(`span`,{children:`·`}),(0,x.jsxs)(`span`,{children:[n.edges.length.toLocaleString(),` edges`]})]}),(0,x.jsxs)(`button`,{onClick:e,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm font-medium transition ${t?`bg-gradient-to-r from-indigo-600 to-purple-600 text-white`:`bg-gray-800 hover:bg-gray-700 text-gray-200 border border-gray-700`}`,children:[(0,x.jsx)(`span`,{children:`✦`}),`Code AI`]}),w&&(0,x.jsxs)(`div`,{className:`relative`,ref:y,children:[(0,x.jsxs)(`button`,{onClick:()=>h(e=>!e),className:`flex items-center gap-2 px-2.5 py-1.5 rounded-lg hover:bg-gray-800 border border-gray-700/60 transition`,children:[(0,x.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-gradient-to-br from-cyan-600 to-blue-600 flex items-center justify-center text-white text-xs font-bold select-none`,children:w.username.charAt(0).toUpperCase()}),(0,x.jsx)(`span`,{className:`text-sm text-gray-200 max-w-[80px] truncate`,children:w.username}),(0,x.jsx)(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded border font-mono ${ma[w.role]??ma.viewer}`,children:w.role}),(0,x.jsx)(`svg`,{className:`w-3 h-3 text-gray-500 transition-transform ${m?`rotate-180`:``}`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:(0,x.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19 9l-7 7-7-7`})})]}),m&&(0,x.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 w-52 bg-gray-900 border border-gray-700 rounded-xl shadow-2xl py-1 z-50`,children:[(0,x.jsxs)(`div`,{className:`px-4 py-2.5 border-b border-gray-800`,children:[(0,x.jsx)(`p`,{className:`text-sm text-white font-semibold`,children:w.username}),(0,x.jsx)(`p`,{className:`text-xs text-gray-500 mt-0.5 capitalize`,children:w.role})]}),(0,x.jsxs)(`button`,{onClick:()=>{h(!1),r({type:`SET_CONNECTED`,connected:!1}),r({type:`SET_VIEW`,view:`connect`})},className:`w-full text-left px-4 py-2 text-sm text-gray-300 hover:bg-gray-800 hover:text-white transition flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`text-gray-500`,children:`⬡`}),`Switch Repository`]}),(0,x.jsxs)(`button`,{onClick:C,disabled:g,className:`w-full text-left px-4 py-2 text-sm text-red-400 hover:bg-red-950/30 hover:text-red-300 transition flex items-center gap-2 disabled:opacity-50`,children:[g?(0,x.jsx)(`span`,{className:`animate-spin inline-block text-xs`,children:`⟳`}):(0,x.jsx)(`svg`,{className:`w-3.5 h-3.5`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:2,children:(0,x.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1`})}),g?`Signing out…`:`Sign out`]})]})]})]})}var ga=[{title:`Navigation`,shortcuts:[{keys:[`Esc`],description:`Close panel / Deselect node`},{keys:[`Tab`],description:`Cycle through NodeDetail tabs`},{keys:[`←`,`→`],description:`Navigate search results`}]},{title:`Search`,shortcuts:[{keys:[`⌘K`,`Ctrl+K`],description:`Focus search`},{keys:[`?`],description:`Toggle shortcuts panel`}]},{title:`Graph`,shortcuts:[{keys:[`F`],description:`Fit graph to view`},{keys:[`G`],description:`Jump to graph`}]}];function _a({open:e,onClose:t}){let n=(0,b.useRef)(null);if((0,b.useEffect)(()=>{if(!e)return;function n(e){e.key===`Escape`&&t()}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]),!e)return null;function r(e){e.target===n.current&&t()}return(0,x.jsx)(`div`,{ref:n,onClick:r,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,children:(0,x.jsxs)(`div`,{className:`w-full max-w-sm bg-[#0c0f1e] border border-gray-800 rounded-xl shadow-2xl overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-gray-800`,children:[(0,x.jsx)(`h2`,{className:`text-sm font-semibold text-gray-100 tracking-wide`,children:`Keyboard Shortcuts`}),(0,x.jsx)(`button`,{onClick:t,className:`text-gray-500 hover:text-gray-200 transition text-base leading-none`,"aria-label":`Close shortcuts panel`,children:`×`})]}),(0,x.jsx)(`div`,{className:`p-4 space-y-5`,children:ga.map(e=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-[10px] font-bold tracking-widest text-cyan-500/70 uppercase mb-2`,children:e.title}),(0,x.jsx)(`div`,{className:`space-y-2`,children:e.shortcuts.map(e=>(0,x.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,x.jsx)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:e.keys.map(e=>(0,x.jsx)(`span`,{className:`bg-gray-800 border border-gray-700 text-gray-300 font-mono text-xs rounded px-1.5 py-0.5`,children:e},e))}),(0,x.jsx)(`span`,{className:`text-gray-400 text-xs text-right`,children:e.description})]},e.description))})]},e.title))})]})})}function va(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(`explorer`),[i,a]=(0,b.useState)(!0),[o,s]=(0,b.useState)(!1);return(0,b.useEffect)(()=>{function e(e){let t=e.target,n=t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable;e.key===`?`&&!n&&s(e=>!e)}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,x.jsxs)(`div`,{className:`flex flex-col h-screen bg-[#040812] text-white`,children:[(0,x.jsx)(ha,{onToggleAI:()=>a(e=>!e),aiOpen:i}),(0,x.jsx)(_a,{open:o,onClose:()=>s(!1)}),(0,x.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,x.jsxs)(`div`,{className:`w-72 bg-[#080b14] border-r border-gray-800/50 flex flex-col`,children:[(0,x.jsx)(`div`,{className:`flex border-b border-gray-800/50`,children:[`explorer`,`filters`,`files`].concat(e.mode===`group`?[`group`]:[]).map(e=>(0,x.jsx)(`button`,{onClick:()=>r(e),className:`flex-1 px-3 py-2.5 text-xs font-semibold capitalize tracking-wide transition ${n===e?`text-cyan-400 border-b-2 border-cyan-500 bg-cyan-500/5`:`text-gray-500 hover:text-gray-300 hover:bg-gray-800/30`}`,children:e===`group`?`⬢ group`:e},e))}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-hidden`,children:[n===`explorer`&&(0,x.jsx)(ya,{}),n===`filters`&&(0,x.jsx)(da,{}),n===`files`&&(0,x.jsx)(sa,{}),n===`group`&&e.mode===`group`&&(0,x.jsx)(ba,{})]})]}),(0,x.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,x.jsx)(`div`,{className:`flex-1 relative`,children:(0,x.jsx)(ki,{})}),e.selectedNode&&(0,x.jsx)(Fi,{node:e.selectedNode,onClose:()=>t({type:`SELECT_NODE`,node:null})})]}),i&&(0,x.jsx)(`div`,{className:`w-96 border-l border-gray-800/50 flex flex-col`,children:(0,x.jsx)(Ui,{})})]}),(0,x.jsx)(pa,{})]})}function ya(){let{state:e,dispatch:t}=T(),n=new Map;for(let t of e.nodes)n.set(t.kind,(n.get(t.kind)??0)+1);let r=[...n.entries()].sort((e,t)=>t[1]-e[1]).slice(0,10),i=r[0]?.[1]??1;return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[e.search.results.length>0&&(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-cyan-500/80 uppercase`,children:`Search Results`}),(0,x.jsx)(`span`,{className:`text-[10px] bg-cyan-900/30 text-cyan-400 px-1.5 py-0.5 rounded-full font-mono`,children:e.search.results.length})]}),(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-500 mb-2 truncate`,children:[`"`,e.search.query,`"`]}),(0,x.jsx)(`div`,{className:`space-y-0.5`,children:e.search.results.map(n=>(0,x.jsxs)(`button`,{onClick:()=>{let r=e.nodes.find(e=>e.id===n.nodeId);r&&t({type:`SELECT_NODE`,node:r})},className:`w-full flex items-center gap-2 px-2 py-1.5 rounded-md hover:bg-gray-800/50 text-left group transition`,children:[(0,x.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full flex-shrink-0`,style:{backgroundColor:wi[n.kind]??`#6b7280`}}),(0,x.jsx)(`span`,{className:`text-xs text-gray-200 font-medium truncate flex-1 group-hover:text-white`,children:n.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 font-mono`,children:n.kind})]},n.nodeId))})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-3`,children:`Graph Composition`}),(0,x.jsx)(`div`,{className:`space-y-2`,children:r.map(([e,t])=>{let n=wi[e]??`#6b7280`,r=t/i*100;return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between text-[11px] mb-0.5`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,x.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full flex-shrink-0`,style:{backgroundColor:n}}),(0,x.jsx)(`span`,{className:`text-gray-300`,children:e})]}),(0,x.jsx)(`span`,{className:`text-gray-500 font-mono tabular-nums`,children:t})]}),(0,x.jsx)(`div`,{className:`h-1 bg-gray-800/80 rounded-full overflow-hidden`,children:(0,x.jsx)(`div`,{className:`h-full rounded-full transition-all duration-500`,style:{width:`${r}%`,backgroundColor:n,opacity:.7}})})]},e)})})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsx)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:`Overview`}),(0,x.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:[{label:`Nodes`,value:e.nodes.length,color:`text-cyan-400`},{label:`Edges`,value:e.edges.length,color:`text-purple-400`},{label:`Files`,value:n.get(`file`)??0,color:`text-blue-400`},{label:`Functions`,value:n.get(`function`)??0,color:`text-sky-400`}].map(({label:e,value:t,color:n})=>(0,x.jsxs)(`div`,{className:`bg-gray-900/50 rounded-lg p-2 border border-gray-800/50`,children:[(0,x.jsx)(`p`,{className:`text-base font-bold font-mono ${n}`,children:t}),(0,x.jsx)(`p`,{className:`text-[10px] text-gray-500`,children:e})]},e))})]}),(0,x.jsx)(`div`,{className:`p-3`,children:(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-600 leading-relaxed`,children:[(0,x.jsx)(`span`,{className:`text-gray-400 font-mono`,children:`⌘K`}),` to search. Click nodes to inspect. Toggle `,(0,x.jsx)(`span`,{className:`text-cyan-500`,children:`⚡ vec`}),` for semantic search. Use `,(0,x.jsx)(`span`,{className:`text-gray-400`,children:`Filters`}),` to show/hide node types.`]})})]})}function ba(){let{state:e,dispatch:t}=T(),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(``);return(0,x.jsxs)(`div`,{className:`overflow-y-auto h-full text-sm`,children:[(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-indigo-400/80 uppercase`,children:[`⬢ `,e.groupName]}),(0,x.jsx)(`button`,{onClick:async()=>{r(!0),a(``);try{let n=await new E(e.serverUrl).syncGroup(e.groupName);t({type:`SET_GROUP_CONTRACTS`,contracts:n.contracts,links:n.links,syncedAt:n.syncedAt})}catch(e){a(e instanceof Error?e.message:`Sync failed`)}finally{r(!1)}},disabled:n,className:`text-[10px] text-indigo-400 hover:text-indigo-300 border border-indigo-800/50 hover:border-indigo-600 rounded px-1.5 py-0.5 transition disabled:opacity-50`,children:n?`⟳ syncing…`:`↻ sync`})]}),i&&(0,x.jsx)(`p`,{className:`text-red-400 text-[10px] mt-1`,children:i}),e.groupSyncedAt&&(0,x.jsxs)(`p`,{className:`text-[10px] text-gray-600`,children:[`Last sync: `,new Date(e.groupSyncedAt).toLocaleString()]})]}),(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Members (`,e.groupMembers.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-1`,children:e.groupMembers.map(e=>(0,x.jsxs)(`div`,{className:`bg-gray-900/40 rounded-md px-2 py-1.5 border border-gray-800/30`,children:[(0,x.jsx)(`div`,{className:`text-[10px] text-gray-500 font-mono truncate`,children:e.groupPath}),(0,x.jsx)(`div`,{className:`text-xs text-cyan-400 font-medium truncate`,children:e.registryName})]},e.groupPath))})]}),e.groupContracts.length>0&&(0,x.jsxs)(`div`,{className:`p-3 border-b border-gray-800/50`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Contracts (`,e.groupContracts.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-0.5 max-h-40 overflow-y-auto`,children:e.groupContracts.slice(0,30).map((e,t)=>(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5 py-0.5`,children:[(0,x.jsx)(`span`,{className:`text-[9px] px-1 rounded font-mono ${e.kind===`export`?`bg-cyan-900/40 text-cyan-400`:e.kind===`route`?`bg-green-900/40 text-green-400`:e.kind===`event`?`bg-purple-900/40 text-purple-400`:`bg-yellow-900/40 text-yellow-400`}`,children:e.kind}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-300 truncate`,children:e.name}),(0,x.jsx)(`span`,{className:`text-[10px] text-gray-600 ml-auto shrink-0`,children:e.repoName})]},t))})]}),e.groupLinks.length>0&&(0,x.jsxs)(`div`,{className:`p-3`,children:[(0,x.jsxs)(`h3`,{className:`text-[10px] font-bold tracking-wider text-gray-500 uppercase mb-2`,children:[`Cross-repo Links (`,e.groupLinks.length,`)`]}),(0,x.jsx)(`div`,{className:`space-y-1 max-h-48 overflow-y-auto`,children:e.groupLinks.filter(e=>e.confidence>=.7).slice(0,20).map((e,t)=>(0,x.jsxs)(`div`,{className:`bg-gray-900/40 rounded-md px-2 py-1.5 border border-gray-800/30 text-[10px]`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1 mb-0.5`,children:[(0,x.jsx)(`span`,{className:`text-green-400 font-mono`,children:e.providerRepo}),(0,x.jsx)(`span`,{className:`text-gray-600`,children:`∷`}),(0,x.jsx)(`span`,{className:`text-white truncate`,children:e.providerContract})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`text-gray-600 pl-3`,children:`↔`}),(0,x.jsx)(`span`,{className:`text-indigo-400 font-mono`,children:e.consumerRepo}),(0,x.jsx)(`span`,{className:`text-gray-600`,children:`∷`}),(0,x.jsx)(`span`,{className:`text-white truncate`,children:e.consumerContract}),(0,x.jsxs)(`span`,{className:`ml-auto text-gray-600`,children:[(e.confidence*100).toFixed(0),`%`]})]})]},t))})]}),e.groupContracts.length===0&&e.groupMembers.length>0&&(0,x.jsxs)(`div`,{className:`p-3 text-center`,children:[(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600`,children:`No contract data yet.`}),(0,x.jsx)(`p`,{className:`text-[10px] text-gray-600 mt-1`,children:`Click ↻ sync to extract contracts.`})]})]})}function xa(){let{state:e}=T();switch(e.view){case`login`:return(0,x.jsx)(te,{});case`connect`:return(0,x.jsx)(re,{});case`loading`:return(0,x.jsx)(O,{});case`exploring`:return(0,x.jsx)(va,{})}}function Sa(){return(0,x.jsx)(ee,{children:(0,x.jsx)(xa,{})})}y.createRoot(document.getElementById(`root`)).render((0,x.jsx)(b.StrictMode,{children:(0,x.jsx)(Sa,{})}));
|
package/dist/web/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Code Intelligence Platform</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-Ds0yq7oU.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BcUIJvDD.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vohongtho.infotech/code-intel",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Static code analysis platform
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Static code analysis platform — builds a Knowledge Graph from source code with Web UI, HTTP API, CLI, and MCP server",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -55,7 +55,8 @@
|
|
|
55
55
|
"@opentelemetry/sdk-node": "^0.215.0",
|
|
56
56
|
"@opentelemetry/semantic-conventions": "^1.40.0",
|
|
57
57
|
"bcrypt": "^6.0.0",
|
|
58
|
-
"better-sqlite3": "^
|
|
58
|
+
"better-sqlite3": "^12.9.0",
|
|
59
|
+
"chokidar": "^3.6.0",
|
|
59
60
|
"code-intel-shared": "^0.1.0",
|
|
60
61
|
"commander": "^14.0.3",
|
|
61
62
|
"cookie-parser": "^1.4.7",
|
|
@@ -68,25 +69,22 @@
|
|
|
68
69
|
"helmet": "^8.1.0",
|
|
69
70
|
"openid-client": "^6.8.4",
|
|
70
71
|
"prom-client": "^15.1.3",
|
|
71
|
-
"tree-sitter-c": "
|
|
72
|
-
"tree-sitter-c-sharp": "
|
|
72
|
+
"tree-sitter-c": "0.23.2",
|
|
73
|
+
"tree-sitter-c-sharp": "0.23.1",
|
|
73
74
|
"tree-sitter-cpp": "^0.23.4",
|
|
74
|
-
"tree-sitter-go": "^0.
|
|
75
|
+
"tree-sitter-go": "^0.23.4",
|
|
75
76
|
"tree-sitter-java": "^0.23.5",
|
|
76
|
-
"tree-sitter-javascript": "^0.
|
|
77
|
-
"tree-sitter-php": "^0.
|
|
78
|
-
"tree-sitter-python": "^0.
|
|
77
|
+
"tree-sitter-javascript": "^0.23.1",
|
|
78
|
+
"tree-sitter-php": "^0.23.12",
|
|
79
|
+
"tree-sitter-python": "^0.23.6",
|
|
79
80
|
"tree-sitter-ruby": "^0.23.1",
|
|
80
|
-
"tree-sitter-rust": "
|
|
81
|
+
"tree-sitter-rust": "0.23.1",
|
|
81
82
|
"tree-sitter-typescript": "^0.23.2",
|
|
82
83
|
"uuid": "^14.0.0",
|
|
83
84
|
"web-tree-sitter": "^0.26.8",
|
|
84
85
|
"winston": "^3.19.0",
|
|
85
86
|
"winston-daily-rotate-file": "^5.0.0",
|
|
86
|
-
"ws": "^8.20.0"
|
|
87
|
-
"tree-sitter-swift": "^0.7.1",
|
|
88
|
-
"tree-sitter-kotlin": "^0.3.8",
|
|
89
|
-
"tree-sitter-dart": "^1.0.0"
|
|
87
|
+
"ws": "^8.20.0"
|
|
90
88
|
},
|
|
91
89
|
"devDependencies": {
|
|
92
90
|
"@types/bcrypt": "^6.0.0",
|
|
@@ -104,8 +102,8 @@
|
|
|
104
102
|
},
|
|
105
103
|
"optionalDependencies": {
|
|
106
104
|
"keytar": "^7.9.0",
|
|
107
|
-
"tree-sitter-
|
|
105
|
+
"tree-sitter-dart": "^1.0.0",
|
|
108
106
|
"tree-sitter-kotlin": "^0.3.8",
|
|
109
|
-
"tree-sitter-
|
|
107
|
+
"tree-sitter-swift": "^0.7.1"
|
|
110
108
|
}
|
|
111
|
-
}
|
|
109
|
+
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-orange-400:oklch(75% .183 55.934);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-amber-400:oklch(82.8% .189 84.429);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-cyan-800:oklch(45% .085 224.283);--color-cyan-900:oklch(39.8% .07 227.392);--color-cyan-950:oklch(30.2% .056 229.695);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-14{right:calc(var(--spacing) * 14)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-14{bottom:calc(var(--spacing) * 14)}.left-0{left:calc(var(--spacing) * 0)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-72{height:calc(var(--spacing) * 72)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[30ch\]{max-width:30ch}.max-w-\[80px\]{max-width:80px}.max-w-\[90\%\]{max-width:90%}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-blue-700\/40{border-color:#1447e666}@supports (color:color-mix(in lab, red, red)){.border-blue-700\/40{border-color:color-mix(in oklab, var(--color-blue-700) 40%, transparent)}}.border-blue-800\/40{border-color:#193cb866}@supports (color:color-mix(in lab, red, red)){.border-blue-800\/40{border-color:color-mix(in oklab, var(--color-blue-800) 40%, transparent)}}.border-cyan-500{border-color:var(--color-cyan-500)}.border-cyan-700\/30{border-color:#0074924d}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/30{border-color:color-mix(in oklab, var(--color-cyan-700) 30%, transparent)}}.border-cyan-700\/50{border-color:#00749280}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/50{border-color:color-mix(in oklab, var(--color-cyan-700) 50%, transparent)}}.border-cyan-700\/60{border-color:#00749299}@supports (color:color-mix(in lab, red, red)){.border-cyan-700\/60{border-color:color-mix(in oklab, var(--color-cyan-700) 60%, transparent)}}.border-cyan-800\/50{border-color:#005f7880}@supports (color:color-mix(in lab, red, red)){.border-cyan-800\/50{border-color:color-mix(in oklab, var(--color-cyan-800) 50%, transparent)}}.border-emerald-800\/40{border-color:#005f4666}@supports (color:color-mix(in lab, red, red)){.border-emerald-800\/40{border-color:color-mix(in oklab, var(--color-emerald-800) 40%, transparent)}}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-700\/50{border-color:#36415380}@supports (color:color-mix(in lab, red, red)){.border-gray-700\/50{border-color:color-mix(in oklab, var(--color-gray-700) 50%, transparent)}}.border-gray-700\/60{border-color:#36415399}@supports (color:color-mix(in lab, red, red)){.border-gray-700\/60{border-color:color-mix(in oklab, var(--color-gray-700) 60%, transparent)}}.border-gray-800{border-color:var(--color-gray-800)}.border-gray-800\/30{border-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/30{border-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.border-gray-800\/50{border-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/50{border-color:color-mix(in oklab, var(--color-gray-800) 50%, transparent)}}.border-gray-800\/60{border-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/60{border-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.border-gray-800\/80{border-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/80{border-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.border-green-700\/40{border-color:#00813866}@supports (color:color-mix(in lab, red, red)){.border-green-700\/40{border-color:color-mix(in oklab, var(--color-green-700) 40%, transparent)}}.border-green-800\/40{border-color:#01663066}@supports (color:color-mix(in lab, red, red)){.border-green-800\/40{border-color:color-mix(in oklab, var(--color-green-800) 40%, transparent)}}.border-indigo-700\/50{border-color:#432dd780}@supports (color:color-mix(in lab, red, red)){.border-indigo-700\/50{border-color:color-mix(in oklab, var(--color-indigo-700) 50%, transparent)}}.border-indigo-800\/50{border-color:#372aac80}@supports (color:color-mix(in lab, red, red)){.border-indigo-800\/50{border-color:color-mix(in oklab, var(--color-indigo-800) 50%, transparent)}}.border-orange-800\/40{border-color:#9f2d0066}@supports (color:color-mix(in lab, red, red)){.border-orange-800\/40{border-color:color-mix(in oklab, var(--color-orange-800) 40%, transparent)}}.border-purple-600{border-color:var(--color-purple-600)}.border-purple-800\/30{border-color:#6e11b04d}@supports (color:color-mix(in lab, red, red)){.border-purple-800\/30{border-color:color-mix(in oklab, var(--color-purple-800) 30%, transparent)}}.border-purple-800\/40{border-color:#6e11b066}@supports (color:color-mix(in lab, red, red)){.border-purple-800\/40{border-color:color-mix(in oklab, var(--color-purple-800) 40%, transparent)}}.border-red-700{border-color:var(--color-red-700)}.border-red-700\/40{border-color:#bf000f66}@supports (color:color-mix(in lab, red, red)){.border-red-700\/40{border-color:color-mix(in oklab, var(--color-red-700) 40%, transparent)}}.border-red-700\/50{border-color:#bf000f80}@supports (color:color-mix(in lab, red, red)){.border-red-700\/50{border-color:color-mix(in oklab, var(--color-red-700) 50%, transparent)}}.border-red-800\/40{border-color:#9f071266}@supports (color:color-mix(in lab, red, red)){.border-red-800\/40{border-color:color-mix(in oklab, var(--color-red-800) 40%, transparent)}}.border-red-800\/50{border-color:#9f071280}@supports (color:color-mix(in lab, red, red)){.border-red-800\/50{border-color:color-mix(in oklab, var(--color-red-800) 50%, transparent)}}.border-sky-800\/40{border-color:#00598666}@supports (color:color-mix(in lab, red, red)){.border-sky-800\/40{border-color:color-mix(in oklab, var(--color-sky-800) 40%, transparent)}}.border-yellow-700{border-color:var(--color-yellow-700)}.border-yellow-800{border-color:var(--color-yellow-800)}.border-t-purple-400{border-top-color:var(--color-purple-400)}.bg-\[\#0a0a0f\]{background-color:#0a0a0f}.bg-\[\#0a0d18\]{background-color:#0a0d18}.bg-\[\#0c0f1e\]{background-color:#0c0f1e}.bg-\[\#080b14\]{background-color:#080b14}.bg-\[\#090c16\]{background-color:#090c16}.bg-\[\#040812\]{background-color:#040812}.bg-\[\#050810\]{background-color:#050810}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/20{background-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.bg-blue-600\/20{background-color:color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.bg-blue-600\/30{background-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.bg-blue-600\/30{background-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab, red, red)){.bg-blue-900\/30{background-color:color-mix(in oklab, var(--color-blue-900) 30%, transparent)}}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-500\/5{background-color:#00b7d70d}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/5{background-color:color-mix(in oklab, var(--color-cyan-500) 5%, transparent)}}.bg-cyan-500\/15{background-color:#00b7d726}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/15{background-color:color-mix(in oklab, var(--color-cyan-500) 15%, transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/20{background-color:color-mix(in oklab, var(--color-cyan-500) 20%, transparent)}}.bg-cyan-900\/20{background-color:#104e6433}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/20{background-color:color-mix(in oklab, var(--color-cyan-900) 20%, transparent)}}.bg-cyan-900\/30{background-color:#104e644d}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/30{background-color:color-mix(in oklab, var(--color-cyan-900) 30%, transparent)}}.bg-cyan-900\/40{background-color:#104e6466}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/40{background-color:color-mix(in oklab, var(--color-cyan-900) 40%, transparent)}}.bg-cyan-900\/50{background-color:#104e6480}@supports (color:color-mix(in lab, red, red)){.bg-cyan-900\/50{background-color:color-mix(in oklab, var(--color-cyan-900) 50%, transparent)}}.bg-cyan-950\/40{background-color:#05334566}@supports (color:color-mix(in lab, red, red)){.bg-cyan-950\/40{background-color:color-mix(in oklab, var(--color-cyan-950) 40%, transparent)}}.bg-emerald-900\/40{background-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.bg-emerald-900\/40{background-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-800\/30{background-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/30{background-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.bg-gray-800\/40{background-color:#1e293966}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/40{background-color:color-mix(in oklab, var(--color-gray-800) 40%, transparent)}}.bg-gray-800\/60{background-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/60{background-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.bg-gray-800\/80{background-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.bg-gray-800\/80{background-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-900\/40{background-color:#10182866}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/40{background-color:color-mix(in oklab, var(--color-gray-900) 40%, transparent)}}.bg-gray-900\/50{background-color:#10182880}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/50{background-color:color-mix(in oklab, var(--color-gray-900) 50%, transparent)}}.bg-gray-900\/60{background-color:#10182899}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/60{background-color:color-mix(in oklab, var(--color-gray-900) 60%, transparent)}}.bg-gray-900\/80{background-color:#101828cc}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/80{background-color:color-mix(in oklab, var(--color-gray-900) 80%, transparent)}}.bg-gray-950{background-color:var(--color-gray-950)}.bg-gray-950\/50{background-color:#03071280}@supports (color:color-mix(in lab, red, red)){.bg-gray-950\/50{background-color:color-mix(in oklab, var(--color-gray-950) 50%, transparent)}}.bg-gray-950\/90{background-color:#030712e6}@supports (color:color-mix(in lab, red, red)){.bg-gray-950\/90{background-color:color-mix(in oklab, var(--color-gray-950) 90%, transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/20{background-color:color-mix(in oklab, var(--color-green-900) 20%, transparent)}}.bg-green-900\/40{background-color:#0d542b66}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/40{background-color:color-mix(in oklab, var(--color-green-900) 40%, transparent)}}.bg-indigo-900\/20{background-color:#312c8533}@supports (color:color-mix(in lab, red, red)){.bg-indigo-900\/20{background-color:color-mix(in oklab, var(--color-indigo-900) 20%, transparent)}}.bg-indigo-900\/50{background-color:#312c8580}@supports (color:color-mix(in lab, red, red)){.bg-indigo-900\/50{background-color:color-mix(in oklab, var(--color-indigo-900) 50%, transparent)}}.bg-orange-900\/20{background-color:#7e2a0c33}@supports (color:color-mix(in lab, red, red)){.bg-orange-900\/20{background-color:color-mix(in oklab, var(--color-orange-900) 20%, transparent)}}.bg-purple-900\/20{background-color:#59168b33}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/20{background-color:color-mix(in oklab, var(--color-purple-900) 20%, transparent)}}.bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/30{background-color:color-mix(in oklab, var(--color-purple-900) 30%, transparent)}}.bg-purple-900\/40{background-color:#59168b66}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/40{background-color:color-mix(in oklab, var(--color-purple-900) 40%, transparent)}}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/20{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)}}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/40{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.bg-red-950\/40{background-color:#46080966}@supports (color:color-mix(in lab, red, red)){.bg-red-950\/40{background-color:color-mix(in oklab, var(--color-red-950) 40%, transparent)}}.bg-sky-900\/20{background-color:#024a7033}@supports (color:color-mix(in lab, red, red)){.bg-sky-900\/20{background-color:color-mix(in oklab, var(--color-sky-900) 20%, transparent)}}.bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.bg-yellow-900\/30{background-color:#733e0a4d}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/30{background-color:color-mix(in oklab, var(--color-yellow-900) 30%, transparent)}}.bg-yellow-900\/40{background-color:#733e0a66}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/40{background-color:color-mix(in oklab, var(--color-yellow-900) 40%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-500{--tw-gradient-from:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-cyan-600{--tw-gradient-from:var(--color-cyan-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-indigo-600{--tw-gradient-to:var(--color-indigo-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-28{padding-right:calc(var(--spacing) * 28)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-amber-400{color:var(--color-amber-400)}.text-blue-100{color:var(--color-blue-100)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-cyan-500{color:var(--color-cyan-500)}.text-cyan-500\/70{color:#00b7d7b3}@supports (color:color-mix(in lab, red, red)){.text-cyan-500\/70{color:color-mix(in oklab, var(--color-cyan-500) 70%, transparent)}}.text-cyan-500\/80{color:#00b7d7cc}@supports (color:color-mix(in lab, red, red)){.text-cyan-500\/80{color:color-mix(in oklab, var(--color-cyan-500) 80%, transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-400\/80{color:#7d87ffcc}@supports (color:color-mix(in lab, red, red)){.text-indigo-400\/80{color:color-mix(in oklab, var(--color-indigo-400) 80%, transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-sky-400{color:var(--color-sky-400)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.placeholder-gray-600::placeholder{color:var(--color-gray-600)}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-cyan-900\/40{--tw-shadow-color:#104e6466}@supports (color:color-mix(in lab, red, red)){.shadow-cyan-900\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-cyan-900) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[\#0a0d18\]{--tw-ring-offset-color:#0a0d18}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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(var(--blur-sm));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:-0\.3s\]{animation-delay:-.3s}.\[animation-delay\:-0\.15s\]{animation-delay:-.15s}@media (hover:hover){.group-hover\:text-cyan-500:is(:where(.group):hover *){color:var(--color-cyan-500)}.group-hover\:text-indigo-400:is(:where(.group):hover *){color:var(--color-indigo-400)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:border-cyan-600:hover{border-color:var(--color-cyan-600)}.hover\:border-cyan-700\/50:hover{border-color:#00749280}@supports (color:color-mix(in lab, red, red)){.hover\:border-cyan-700\/50:hover{border-color:color-mix(in oklab, var(--color-cyan-700) 50%, transparent)}}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:border-indigo-600:hover{border-color:var(--color-indigo-600)}.hover\:border-indigo-700\/50:hover{border-color:#432dd780}@supports (color:color-mix(in lab, red, red)){.hover\:border-indigo-700\/50:hover{border-color:color-mix(in oklab, var(--color-indigo-700) 50%, transparent)}}.hover\:border-purple-600:hover{border-color:var(--color-purple-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-cyan-900\/70:hover{background-color:#104e64b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-900\/70:hover{background-color:color-mix(in oklab, var(--color-cyan-900) 70%, transparent)}}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-gray-800\/30:hover{background-color:#1e29394d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/30:hover{background-color:color-mix(in oklab, var(--color-gray-800) 30%, transparent)}}.hover\:bg-gray-800\/50:hover{background-color:#1e293980}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/50:hover{background-color:color-mix(in oklab, var(--color-gray-800) 50%, transparent)}}.hover\:bg-gray-800\/60:hover{background-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/60:hover{background-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.hover\:bg-gray-800\/80:hover{background-color:#1e2939cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-800\/80:hover{background-color:color-mix(in oklab, var(--color-gray-800) 80%, transparent)}}.hover\:bg-red-950\/30:hover{background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-950\/30:hover{background-color:color-mix(in oklab, var(--color-red-950) 30%, transparent)}}.hover\:from-cyan-500:hover{--tw-gradient-from:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:from-purple-500:hover{--tw-gradient-from:var(--color-purple-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-blue-500:hover{--tw-gradient-to:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-indigo-500:hover{--tw-gradient-to:var(--color-indigo-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-cyan-400:hover{color:var(--color-cyan-400)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:brightness-125:hover{--tw-brightness:brightness(125%);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,)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-cyan-500:focus{border-color:var(--color-cyan-500)}.focus\:border-cyan-600:focus{border-color:var(--color-cyan-600)}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-cyan-500\/40:focus{--tw-ring-color:#00b7d766}@supports (color:color-mix(in lab, red, red)){.focus\:ring-cyan-500\/40:focus{--tw-ring-color:color-mix(in oklab, var(--color-cyan-500) 40%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
|