@coralai/sps-cli 0.55.0 → 0.55.1

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 CHANGED
@@ -12,7 +12,7 @@ SPS (Smart Pipeline System) drives a Claude Code worker through task cards — c
12
12
  |---|---|---|
13
13
  | **Harness** | `sps agent` | Zero-config — one-shot or multi-turn chat with Claude. No project, no PM. |
14
14
  | **Pipeline** | `sps tick <project>` | Automated card-driven workflow with YAML-configurable stages. |
15
- | **Console** | `sps console` | Web UI — kanban, logs, workers, projects, chat (since v0.44). |
15
+ | **Console** | `sps console` | Web UI — kanban, logs, workers, projects, chat, processes, audit log (since v0.44). |
16
16
 
17
17
  The headline feature in v0.51 is the **Wiki Knowledge Base** — opt-in per project, structured cross-linked pages (modules / concepts / decisions / lessons / sources), 5-layer retrieval auto-injected into worker prompts. See [doc-28](../../docs/design/28-wiki-system.md) and [`ATTRIBUTION.md`](./ATTRIBUTION.md).
18
18
 
@@ -0,0 +1,10 @@
1
+ pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2
+ Theme: GitHub
3
+ Description: Light theme as seen on github.com
4
+ Author: github.com
5
+ Maintainer: @Hirse
6
+ Updated: 2021-05-15
7
+
8
+ Outdated base version: https://github.com/primer/github-syntax-light
9
+ Current colors taken from GitHub's CSS
10
+ */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,: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-divide-y-reverse:0;--tw-border-style:solid;--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-outline-style:solid;--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;--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-ease: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:"JetBrains Mono", "SF Mono", Monaco, Consolas, monospace;--color-green-600:oklch(62.7% .194 149.214);--color-gray-400:oklch(70.7% .022 261.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--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);--color-bg:#fff;--color-bg-cream:#fff9f5;--color-text:#2d3748;--color-text-muted:#475569;--color-text-subtle:#64748b;--color-border-light:#e2e8f0;--color-primary:#fdbcb4;--color-secondary:#add8e6;--color-accent-mint:#98ff98;--color-accent-purple:#e6e6fa;--color-accent-yellow:#fff3b0;--color-accent-pink:#ffd1dc;--color-running:#166534;--color-running-bg:#d4f5e4;--color-stuck:#92400e;--color-stuck-bg:#ffe8cf;--color-crashed:#991b1b;--color-crashed-bg:#ffe4e6;--color-idle:#475569;--color-idle-bg:#f1f5f9;--color-cta:#22c55e;--font-heading:"Fredoka", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}}@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%;-moz-tab-size:4;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;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]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg-cream);min-height:100vh;font-size:15px;line-height:1.5}h1,h2,h3,h4,h5{font-family:var(--font-heading);color:var(--color-text);letter-spacing:-.01em;margin:0;font-weight:700}:focus-visible{outline:3px solid var(--color-text);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}}@layer components{.nb-card{background:var(--color-bg);border:3px solid var(--color-text);box-shadow:5px 5px 0 var(--color-text);border-radius:16px;padding:16px}.nb-card-interactive{cursor:pointer;transition:transform .18s ease-out,box-shadow .18s ease-out}.nb-card-interactive:hover{box-shadow:7px 7px 0 var(--color-text);transform:translate(-2px,-2px)}.nb-card-interactive:active{box-shadow:3px 3px 0 var(--color-text);transform:translate(1px,1px)}.nb-btn{border:3px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);box-shadow:3px 3px 0 var(--color-text);-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:700;line-height:20px;transition:transform .12s ease-out,box-shadow .12s ease-out;display:inline-flex}.nb-btn:hover{box-shadow:4px 4px 0 var(--color-text);transform:translate(-1px,-1px)}.nb-btn:active{box-shadow:1px 1px 0 var(--color-text);transform:translate(2px,2px)}.nb-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:2px 2px 0 var(--color-text);transform:none}.nb-btn:disabled:hover{box-shadow:2px 2px 0 var(--color-text);transform:none}.nb-btn-primary{background:var(--color-cta)}.nb-btn-mint{background:var(--color-accent-mint)}.nb-btn-peach{background:var(--color-primary)}.nb-btn-blue{background:var(--color-secondary)}.nb-btn-yellow{background:var(--color-accent-yellow)}.nb-btn-purple{background:var(--color-accent-purple)}.nb-btn-danger{background:var(--color-crashed);color:#fff}.nb-input{border:3px solid var(--color-text);background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);box-shadow:3px 3px 0 var(--color-text);border-radius:12px;padding:10px 16px;font-size:14px;font-weight:500;line-height:20px;transition:transform .12s,box-shadow .12s}.nb-input:focus{box-shadow:4px 4px 0 var(--color-text);outline:none;transform:translate(-1px,-1px)}.nb-badge{border:2px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);border-radius:9999px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:700;line-height:16px;display:inline-flex}.nb-status{border:2px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);border-radius:9999px;align-items:center;gap:5px;padding:4px 10px 4px 9px;font-size:11px;font-weight:700;line-height:16px;display:inline-flex}.nb-status:before{content:"";border:1.5px solid var(--color-text);background:currentColor;border-radius:50%;width:8px;height:8px}.prose-chat{color:var(--color-text);line-height:1.6}.prose-chat>:first-child{margin-top:0}.prose-chat>:last-child{margin-bottom:0}.prose-chat h1{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.5rem;font-weight:700}.prose-chat h2{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.25rem;font-weight:700}.prose-chat h3{font-family:var(--font-heading);margin:.8em 0 .4em;font-size:1.1rem;font-weight:700}.prose-chat h4,.prose-chat h5,.prose-chat h6{font-family:var(--font-heading);margin:.8em 0 .3em;font-weight:700}.prose-chat p{margin:.6em 0}.prose-chat ul,.prose-chat ol{margin:.6em 0;padding-left:1.6em}.prose-chat ul{list-style:outside}.prose-chat ol{list-style:decimal}.prose-chat li,.prose-chat li>ul,.prose-chat li>ol{margin:.2em 0}.prose-chat code{font-family:var(--font-mono);background:var(--color-bg-cream);border:1.5px solid var(--color-text);border-radius:4px;padding:0 4px;font-size:.9em}.prose-chat pre{background:var(--color-bg-cream);border:2px solid var(--color-text);font-family:var(--font-mono);border-radius:8px;margin:.8em 0;padding:12px;font-size:.85em;line-height:1.45;overflow-x:auto}.prose-chat pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose-chat blockquote{border-left:3px solid var(--color-text);color:var(--color-text-muted);margin:.8em 0;padding-left:1em}.prose-chat table{border-collapse:collapse;border:2px solid var(--color-text);border-radius:8px;margin:.8em 0;overflow:hidden}.prose-chat th,.prose-chat td{border:1px solid var(--color-text);text-align:left;padding:6px 10px}.prose-chat th{background:var(--color-bg-cream);font-weight:700}.prose-chat a{color:var(--color-running);text-underline-offset:2px;text-decoration:underline}.prose-chat a:hover{color:var(--color-text)}.prose-chat hr{border:0;border-top:2px dashed var(--color-text);margin:1em 0}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.left-0{left:calc(var(--spacing) * 0)}.left-3{left:calc(var(--spacing) * 3)}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.row-span-1{grid-row:span 1/span 1}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.mx-auto{margin-inline:auto}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.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-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.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-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.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-10{height:calc(var(--spacing) * 10)}.h-20{height:calc(var(--spacing) * 20)}.h-\[calc\(100vh-140px\)\]{height:calc(100vh - 140px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[280px\]{min-height:280px}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.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-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[12rem\]{max-width:12rem}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[260px\]{max-width:260px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[130px\]{min-width:130px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.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-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[100px_60px_1fr\]{grid-template-columns:100px 60px 1fr}.grid-cols-\[100px_90px_60px_1fr\]{grid-template-columns:100px 90px 60px 1fr}.grid-cols-\[160px_1fr\]{grid-template-columns:160px 1fr}.grid-cols-\[220px_1fr\]{grid-template-columns:220px 1fr}.grid-cols-\[240px_1fr\]{grid-template-columns:240px 1fr}.grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr}.grid-cols-\[repeat\(auto-fill\,minmax\(280px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-rows-\[1fr_40px\]{grid-template-rows:1fr 40px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.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)))}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y-2>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(2px * var(--tw-divide-y-reverse));border-bottom-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:#2d374833}@supports (color:color-mix(in lab,red,red)){:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--color-text) 20%,transparent)}}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.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-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-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-\[1\.5px\]{border-top-style:var(--tw-border-style);border-top-width:1.5px}.border-t-\[3px\]{border-top-style:var(--tw-border-style);border-top-width:3px}.border-r-\[3px\]{border-right-style:var(--tw-border-style);border-right-width:3px}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--color-border-light\)\]{border-color:var(--color-border-light)}.border-\[var\(--color-cta\)\]{border-color:var(--color-cta)}.border-\[var\(--color-running\)\]{border-color:var(--color-running)}.border-\[var\(--color-stuck\)\]{border-color:var(--color-stuck)}.border-\[var\(--color-text\)\]{border-color:var(--color-text)}.border-\[var\(--color-text\)\]\/10{border-color:#2d37481a}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/10{border-color:color-mix(in oklab,var(--color-text) 10%,transparent)}}.border-\[var\(--color-text\)\]\/30{border-color:#2d37484d}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/30{border-color:color-mix(in oklab,var(--color-text) 30%,transparent)}}.border-transparent{border-color:#0000}.bg-\[rgba\(45\,55\,72\,0\.4\)\]{background-color:#2d374866}.bg-\[rgba\(45\,55\,72\,0\.5\)\]{background-color:#2d374880}.bg-\[rgba\(45\,55\,72\,0\.6\)\]{background-color:#2d374899}.bg-\[var\(--color-accent-blue\)\]{background-color:var(--color-accent-blue)}.bg-\[var\(--color-accent-mint\)\]{background-color:var(--color-accent-mint)}.bg-\[var\(--color-accent-peach\)\]{background-color:var(--color-accent-peach)}.bg-\[var\(--color-accent-purple\)\]{background-color:var(--color-accent-purple)}.bg-\[var\(--color-accent-yellow\)\]{background-color:var(--color-accent-yellow)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-cream\)\]{background-color:var(--color-bg-cream)}.bg-\[var\(--color-border-light\)\]{background-color:var(--color-border-light)}.bg-\[var\(--color-crashed\)\]{background-color:var(--color-crashed)}.bg-\[var\(--color-crashed-bg\)\]{background-color:var(--color-crashed-bg)}.bg-\[var\(--color-cta\)\]{background-color:var(--color-cta)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-running-bg\)\]{background-color:var(--color-running-bg)}.bg-\[var\(--color-secondary\)\]{background-color:var(--color-secondary)}.bg-\[var\(--color-stuck\)\]{background-color:var(--color-stuck)}.bg-\[var\(--color-stuck-bg\)\]{background-color:var(--color-stuck-bg)}.bg-\[var\(--color-text\)\]{background-color:var(--color-text)}.bg-\[var\(--color-text-subtle\)\]{background-color:var(--color-text-subtle)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-600{background-color:var(--color-green-600)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.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-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.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)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.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-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.font-\[family-name\:var\(--font-body\)\]{font-family:var(--font-body)}.font-\[family-name\:var\(--font-heading\)\]{font-family:var(--font-heading)}.font-\[family-name\:var\(--font-mono\)\],.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--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-\[12px\]{font-size:12px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-bg\)\]{color:var(--color-bg)}.text-\[var\(--color-crashed\)\]{color:var(--color-crashed)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-\[var\(--color-stuck\)\]{color:var(--color-stuck)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.text-\[var\(--color-text\)\]\/40{color:#2d374866}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/40{color:color-mix(in oklab,var(--color-text) 40%,transparent)}}.text-\[var\(--color-text\)\]\/50{color:#2d374880}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/50{color:color-mix(in oklab,var(--color-text) 50%,transparent)}}.text-\[var\(--color-text\)\]\/60{color:#2d374899}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/60{color:color-mix(in oklab,var(--color-text) 60%,transparent)}}.text-\[var\(--color-text\)\]\/70{color:#2d3748b3}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/70{color:color-mix(in oklab,var(--color-text) 70%,transparent)}}.text-\[var\(--color-text-muted\)\]{color:var(--color-text-muted)}.text-\[var\(--color-text-subtle\)\]{color:var(--color-text-subtle)}.normal-case{text-transform:none}.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}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.accent-\[var\(--color-cta\)\]{accent-color:var(--color-cta)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.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-\[1px_1px_0_var\(--color-text\)\]{--tw-shadow:1px 1px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0_var\(--color-text\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[3px_3px_0_var\(--color-text\)\]{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[4px_4px_0_var\(--color-cta\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-cta));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[4px_4px_0_var\(--color-text\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[5px_5px_0_var\(--color-text\)\]{--tw-shadow:5px 5px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-nb{--tw-shadow:5px 5px 0 var(--tw-shadow-color,#2d3748);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + 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-\[var\(--color-text\)\]{--tw-ring-color:var(--color-text)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:-translate-x-0\.5:hover{--tw-translate-x:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-x-px:hover{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-\[var\(--color-text\)\]:hover{border-color:var(--color-text)}.hover\:bg-\[var\(--color-accent-mint\)\]:hover{background-color:var(--color-accent-mint)}.hover\:bg-\[var\(--color-accent-yellow\)\]:hover{background-color:var(--color-accent-yellow)}.hover\:bg-\[var\(--color-bg-cream\)\]:hover{background-color:var(--color-bg-cream)}.hover\:text-\[var\(--color-crashed\)\]:hover{color:var(--color-crashed)}.hover\:text-\[var\(--color-text\)\]:hover{color:var(--color-text)}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[2px_2px_0_var\(--color-text\)\]:hover{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[3px_3px_0_var\(--color-text\)\]:hover{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[4px_4px_0_var\(--color-text\)\]:hover{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[5px_5px_0_var\(--color-text\)\]:hover{--tw-shadow:5px 5px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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-visible\:ring-\[var\(--color-text\)\]:focus-visible{--tw-ring-color:var(--color-text)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.active\:translate-x-0\.5:active{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-0\.5:active{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}}@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-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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}@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-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -564,4 +564,4 @@ ${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.pus
564
564
  https://github.com/highlightjs/highlight.js/issues/2277`),Qt=fe,ft=Ae),Ye===void 0&&(Ye=!0);const bn={code:ft,language:Qt};Mr("before:highlight",bn);const Vn=bn.result?bn.result:ia(bn.language,bn.code,Ye);return Vn.code=bn.code,Mr("after:highlight",Vn),Vn}function ia(fe,Ae,Ye,ft){const Qt=Object.create(null);function bn(be,Ne){return be.keywords[Ne]}function Vn(){if(!Le.keywords){Xt.addText(ht);return}let be=0;Le.keywordPatternRe.lastIndex=0;let Ne=Le.keywordPatternRe.exec(ht),qe="";for(;Ne;){qe+=ht.substring(be,Ne.index);const Ze=un.case_insensitive?Ne[0].toLowerCase():Ne[0],Bt=bn(Le,Ze);if(Bt){const[di,Jl]=Bt;if(Xt.addText(qe),qe="",Qt[Ze]=(Qt[Ze]||0)+1,Qt[Ze]<=ws&&(Ia+=Jl),di.startsWith("_"))qe+=Ne[0];else{const zc=un.classNameAliases[di]||di;Wn(Ne[0],zc)}}else qe+=Ne[0];be=Le.keywordPatternRe.lastIndex,Ne=Le.keywordPatternRe.exec(ht)}qe+=ht.substring(be),Xt.addText(qe)}function In(){if(ht==="")return;let be=null;if(typeof Le.subLanguage=="string"){if(!se[Le.subLanguage]){Xt.addText(ht);return}be=ia(Le.subLanguage,ht,!0,Ic[Le.subLanguage]),Ic[Le.subLanguage]=be._top}else be=Es(ht,Le.subLanguage.length?Le.subLanguage:null);Le.relevance>0&&(Ia+=be.relevance),Xt.__addSublanguage(be._emitter,be.language)}function _t(){Le.subLanguage!=null?In():Vn(),ht=""}function Wn(be,Ne){be!==""&&(Xt.startScope(Ne),Xt.addText(be),Xt.endScope())}function Rc(be,Ne){let qe=1;const Ze=Ne.length-1;for(;qe<=Ze;){if(!be._emit[qe]){qe++;continue}const Bt=un.classNameAliases[be[qe]]||be[qe],di=Ne[qe];Bt?Wn(di,Bt):(ht=di,Vn(),ht=""),qe++}}function _s(be,Ne){return be.scope&&typeof be.scope=="string"&&Xt.openNode(un.classNameAliases[be.scope]||be.scope),be.beginScope&&(be.beginScope._wrap?(Wn(ht,un.classNameAliases[be.beginScope._wrap]||be.beginScope._wrap),ht=""):be.beginScope._multi&&(Rc(be.beginScope,Ne),ht="")),Le=Object.create(be,{parent:{value:Le}}),Le}function Wl(be,Ne,qe){let Ze=T(be.endRe,qe);if(Ze){if(be["on:end"]){const Bt=new t(be);be["on:end"](Ne,Bt),Bt.isMatchIgnored&&(Ze=!1)}if(Ze){for(;be.endsParent&&be.parent;)be=be.parent;return be}}if(be.endsWithParent)return Wl(be.parent,Ne,qe)}function Ns(be){return Le.matcher.regexIndex===0?(ht+=be[0],1):(za=!0,0)}function sf(be){const Ne=be[0],qe=be.rule,Ze=new t(qe),Bt=[qe.__beforeBegin,qe["on:begin"]];for(const di of Bt)if(di&&(di(be,Ze),Ze.isMatchIgnored))return Ns(Ne);return qe.skip?ht+=Ne:(qe.excludeBegin&&(ht+=Ne),_t(),!qe.returnBegin&&!qe.excludeBegin&&(ht=Ne)),_s(qe,be),qe.returnBegin?0:Ne.length}function zn(be){const Ne=be[0],qe=Ae.substring(be.index),Ze=Wl(Le,be,qe);if(!Ze)return jr;const Bt=Le;Le.endScope&&Le.endScope._wrap?(_t(),Wn(Ne,Le.endScope._wrap)):Le.endScope&&Le.endScope._multi?(_t(),Rc(Le.endScope,be)):Bt.skip?ht+=Ne:(Bt.returnEnd||Bt.excludeEnd||(ht+=Ne),_t(),Bt.excludeEnd&&(ht=Ne));do Le.scope&&Xt.closeNode(),!Le.skip&&!Le.subLanguage&&(Ia+=Le.relevance),Le=Le.parent;while(Le!==Ze.parent);return Ze.starts&&_s(Ze.starts,be),Bt.returnEnd?0:Ne.length}function Xl(){const be=[];for(let Ne=Le;Ne!==un;Ne=Ne.parent)Ne.scope&&be.unshift(Ne.scope);be.forEach(Ne=>Xt.openNode(Ne))}let Rr={};function Cs(be,Ne){const qe=Ne&&Ne[0];if(ht+=be,qe==null)return _t(),0;if(Rr.type==="begin"&&Ne.type==="end"&&Rr.index===Ne.index&&qe===""){if(ht+=Ae.slice(Ne.index,Ne.index+1),!Ct){const Ze=new Error(`0 width match regex (${fe})`);throw Ze.languageName=fe,Ze.badRule=Rr.rule,Ze}return 1}if(Rr=Ne,Ne.type==="begin")return sf(Ne);if(Ne.type==="illegal"&&!Ye){const Ze=new Error('Illegal lexeme "'+qe+'" for mode "'+(Le.scope||"<unnamed>")+'"');throw Ze.mode=Le,Ze}else if(Ne.type==="end"){const Ze=zn(Ne);if(Ze!==jr)return Ze}if(Ne.type==="illegal"&&qe==="")return ht+=`
565
565
  `,1;if(Zl>1e5&&Zl>Ne.index*3)throw new Error("potential infinite loop, way more iterations than matches");return ht+=qe,qe.length}const un=Cn(fe);if(!un)throw zt(vt.replace("{}",fe)),new Error('Unknown language: "'+fe+'"');const Lc=cn(un);let Ts="",Le=ft||Lc;const Ic={},Xt=new ke.__emitter(ke);Xl();let ht="",Ia=0,sa=0,Zl=0,za=!1;try{if(un.__emitTokens)un.__emitTokens(Ae,Xt);else{for(Le.matcher.considerAll();;){Zl++,za?za=!1:Le.matcher.considerAll(),Le.matcher.lastIndex=sa;const be=Le.matcher.exec(Ae);if(!be)break;const Ne=Ae.substring(sa,be.index),qe=Cs(Ne,be);sa=be.index+qe}Cs(Ae.substring(sa))}return Xt.finalize(),Ts=Xt.toHTML(),{language:fe,value:Ts,relevance:Ia,illegal:!1,_emitter:Xt,_top:Le}}catch(be){if(be.message&&be.message.includes("Illegal"))return{language:fe,value:Nn(Ae),illegal:!0,relevance:0,_illegalBy:{message:be.message,index:sa,context:Ae.slice(sa-100,sa+100),mode:be.mode,resultSoFar:Ts},_emitter:Xt};if(Ct)return{language:fe,value:Nn(Ae),illegal:!1,relevance:0,errorRaised:be,_emitter:Xt,_top:Le};throw be}}function ks(fe){const Ae={value:Nn(fe),illegal:!1,relevance:0,_top:Se,_emitter:new ke.__emitter(ke)};return Ae._emitter.addText(fe),Ae}function Es(fe,Ae){Ae=Ae||ke.languages||Object.keys(se);const Ye=ks(fe),ft=Ae.filter(Cn).filter(Ra).map(_t=>ia(_t,fe,!1));ft.unshift(Ye);const Qt=ft.sort((_t,Wn)=>{if(_t.relevance!==Wn.relevance)return Wn.relevance-_t.relevance;if(_t.language&&Wn.language){if(Cn(_t.language).supersetOf===Wn.language)return 1;if(Cn(Wn.language).supersetOf===_t.language)return-1}return 0}),[bn,Vn]=Qt,In=bn;return In.secondBest=Vn,In}function $i(fe,Ae,Ye){const ft=Ae&&ve[Ae]||Ye;fe.classList.add("hljs"),fe.classList.add(`language-${ft}`)}function Gt(fe){let Ae=null;const Ye=Kt(fe);if(Ie(Ye))return;if(Mr("before:highlightElement",{el:fe,language:Ye}),fe.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",fe);return}if(fe.children.length>0&&(ke.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(fe)),ke.throwUnescapedHTML))throw new qi("One of your code blocks includes unescaped HTML.",fe.innerHTML);Ae=fe;const ft=Ae.textContent,Qt=Ye?Dt(ft,{language:Ye,ignoreIllegals:!0}):Es(ft);fe.innerHTML=Qt.value,fe.dataset.highlighted="yes",$i(fe,Ye,Qt.language),fe.result={language:Qt.language,re:Qt.relevance,relevance:Qt.relevance},Qt.secondBest&&(fe.secondBest={language:Qt.secondBest.language,relevance:Qt.secondBest.relevance}),Mr("after:highlightElement",{el:fe,result:Qt,text:ft})}function gn(fe){ke=jc(ke,fe)}const Ma=()=>{Ss(),ne("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Yl(){Ss(),ne("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Oc=!1;function Ss(){function fe(){Ss()}if(document.readyState==="loading"){Oc||window.addEventListener("DOMContentLoaded",fe,!1),Oc=!0;return}document.querySelectorAll(ke.cssSelector).forEach(Gt)}function Dc(fe,Ae){let Ye=null;try{Ye=Ae(z)}catch(ft){if(zt("Language definition for '{}' could not be registered.".replace("{}",fe)),Ct)zt(ft);else throw ft;Ye=Se}Ye.name||(Ye.name=fe),se[fe]=Ye,Ye.rawDefinition=Ae.bind(null,z),Ye.aliases&&aa(Ye.aliases,{languageName:fe})}function Dr(fe){delete se[fe];for(const Ae of Object.keys(ve))ve[Ae]===fe&&delete ve[Ae]}function Vl(){return Object.keys(se)}function Cn(fe){return fe=(fe||"").toLowerCase(),se[fe]||se[ve[fe]]}function aa(fe,{languageName:Ae}){typeof fe=="string"&&(fe=[fe]),fe.forEach(Ye=>{ve[Ye.toLowerCase()]=Ae})}function Ra(fe){const Ae=Cn(fe);return Ae&&!Ae.disableAutodetect}function La(fe){fe["before:highlightBlock"]&&!fe["before:highlightElement"]&&(fe["before:highlightElement"]=Ae=>{fe["before:highlightBlock"](Object.assign({block:Ae.el},Ae))}),fe["after:highlightBlock"]&&!fe["after:highlightElement"]&&(fe["after:highlightElement"]=Ae=>{fe["after:highlightBlock"](Object.assign({block:Ae.el},Ae))})}function Wt(fe){La(fe),Be.push(fe)}function Mc(fe){const Ae=Be.indexOf(fe);Ae!==-1&&Be.splice(Ae,1)}function Mr(fe,Ae){const Ye=fe;Be.forEach(function(ft){ft[Ye]&&ft[Ye](Ae)})}function ra(fe){return ne("10.7.0","highlightBlock will be removed entirely in v12.0"),ne("10.7.0","Please use highlightElement now."),Gt(fe)}Object.assign(z,{highlight:Dt,highlightAuto:Es,highlightAll:Ss,highlightElement:Gt,highlightBlock:ra,configure:gn,initHighlighting:Ma,initHighlightingOnLoad:Yl,registerLanguage:Dc,unregisterLanguage:Dr,listLanguages:Vl,getLanguage:Cn,registerAliases:aa,autoDetection:Ra,inherit:jc,addPlugin:Wt,removePlugin:Mc}),z.debugMode=function(){Ct=!1},z.safeMode=function(){Ct=!0},z.versionString=dt,z.regex={concat:w,lookahead:v,either:_,optional:E,anyNumberOfTimes:x};for(const fe in ye)typeof ye[fe]=="object"&&e(ye[fe]);return Object.assign(z,ye),z},Ln=Or({});return Ln.newInstance=()=>Or({}),Gp=Ln,Ln.HighlightJS=Ln,Ln.default=Ln,Gp}var NB=_B();const CB=Lm(NB),cw={},TB="hljs-";function AB(e){const t=CB.newInstance();return e&&o(e),{highlight:n,highlightAuto:a,listLanguages:s,register:o,registerAlias:c,registered:d};function n(h,p,b){const g=b||cw,v=typeof g.prefix=="string"?g.prefix:TB;if(!t.getLanguage(h))throw new Error("Unknown language: `"+h+"` is not registered");t.configure({__emitter:jB,classPrefix:v});const x=t.highlight(p,{ignoreIllegals:!0,language:h});if(x.errorRaised)throw new Error("Could not highlight with `Highlight.js`",{cause:x.errorRaised});const E=x._emitter.root,w=E.data;return w.language=x.language,w.relevance=x.relevance,E}function a(h,p){const g=(p||cw).subset||s();let v=-1,x=0,E;for(;++v<g.length;){const w=g[v];if(!t.getLanguage(w))continue;const S=n(w,h,p);S.data&&S.data.relevance!==void 0&&S.data.relevance>x&&(x=S.data.relevance,E=S)}return E||{type:"root",children:[],data:{language:void 0,relevance:x}}}function s(){return t.listLanguages()}function o(h,p){if(typeof h=="string")t.registerLanguage(h,p);else{let b;for(b in h)Object.hasOwn(h,b)&&t.registerLanguage(b,h[b])}}function c(h,p){if(typeof h=="string")t.registerAliases(typeof p=="string"?p:[...p],{languageName:h});else{let b;for(b in h)if(Object.hasOwn(h,b)){const g=h[b];t.registerAliases(typeof g=="string"?g:[...g],{languageName:b})}}}function d(h){return!!t.getLanguage(h)}}class jB{constructor(t){this.options=t,this.root={type:"root",children:[],data:{language:void 0,relevance:0}},this.stack=[this.root]}addText(t){if(t==="")return;const n=this.stack[this.stack.length-1],a=n.children[n.children.length-1];a&&a.type==="text"?a.value+=t:n.children.push({type:"text",value:t})}startScope(t){this.openNode(String(t))}endScope(){this.closeNode()}__addSublanguage(t,n){const a=this.stack[this.stack.length-1],s=t.root.children;n?a.children.push({type:"element",tagName:"span",properties:{className:[n]},children:s}):a.children.push(...s)}openNode(t){const n=this,a=t.split(".").map(function(c,d){return d?c+"_".repeat(d):n.options.classPrefix+c}),s=this.stack[this.stack.length-1],o={type:"element",tagName:"span",properties:{className:a},children:[]};s.children.push(o),this.stack.push(o)}closeNode(){this.stack.pop()}finalize(){}toHTML(){return""}}const OB={};function Pg(e){const t=e||OB,n=t.aliases,a=t.detect||!1,s=t.languages||SB,o=t.plainText,c=t.prefix,d=t.subset;let h="hljs";const p=AB(s);if(n&&p.registerAlias(n),c){const b=c.indexOf("-");h=b===-1?c:c.slice(0,b)}return function(b,g){rf(b,"element",function(v,x,E){if(v.tagName!=="code"||!E||E.type!=="element"||E.tagName!=="pre")return;const w=DB(v);if(w===!1||!w&&!a||w&&o&&o.includes(w))return;Array.isArray(v.properties.className)||(v.properties.className=[]),v.properties.className.includes(h)||v.properties.className.unshift(h);const S=Xz(v,{whitespace:"pre"});let _;try{_=w?p.highlight(w,S,{prefix:c}):p.highlightAuto(S,{prefix:c,subset:d})}catch(C){const T=C;if(w&&/Unknown language/.test(T.message)){g.message("Cannot highlight as `"+w+"`, it’s not registered",{ancestors:[E,v],cause:T,place:v.position,ruleId:"missing-language",source:"rehype-highlight"});return}throw T}!w&&_.data&&_.data.language&&v.properties.className.push("language-"+_.data.language),_.children.length>0&&(v.children=_.children)})}}function DB(e){const t=e.properties.className;let n=-1;if(!Array.isArray(t))return;let a;for(;++n<t.length;){const s=String(t[n]);if(s==="no-highlight"||s==="nohighlight")return!1;!a&&s.slice(0,5)==="lang-"&&(a=s.slice(5)),!a&&s.slice(0,9)==="language-"&&(a=s.slice(9))}return a}function MB({name:e,projects:t,onClose:n,onChange:a}){const s=ze(),{confirm:o,alert:c}=ci(),{data:d,isLoading:h,isError:p,error:b,refetch:g}=rt({queryKey:["skill",e],queryFn:()=>xO(e)});A.useEffect(()=>{const C=T=>{T.key==="Escape"&&n()};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[n]);const v=async(C,T)=>{try{await T(),await g(),a()}catch(D){c({title:s("skillDetail.actionFailed",{label:C}),body:D instanceof Error?D.message:String(D)})}},x=C=>v("link",()=>wO(e,C)),E=async C=>{await o({title:s("skillDetail.removeConfirm.title",{project:C,name:e}),body:s("skillDetail.removeConfirm.body"),confirm:s("skillDetail.removeConfirm.button"),danger:!0})&&await v("unlink",()=>kO(e,C))},w=C=>v("freeze",()=>EO(e,C)),S=async C=>{await o({title:s("skillDetail.unfreezeConfirm.title",{name:e,project:C}),body:s("skillDetail.unfreezeConfirm.body"),confirm:s("skillDetail.unfreezeConfirm.button"),danger:!0})&&await v("unfreeze",()=>SO(e,C))},_=new Map(((d==null?void 0:d.linkedProjects)??[]).map(C=>[C.project,C.state]));return f.jsx("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-40 flex items-start justify-center p-6 bg-black/30 overflow-auto",children:f.jsxs("div",{className:"nb-card mt-8 w-full max-w-4xl",children:[f.jsxs("header",{className:"flex items-start justify-between gap-4 mb-4",children:[f.jsxs("div",{children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] text-3xl font-bold",children:e}),d&&f.jsxs("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:[d.category," · ",d.origin||"local"]})]}),f.jsx("button",{onClick:n,className:"nb-btn nb-btn-mint p-2","aria-label":s("skillDetail.close.aria"),type:"button",children:f.jsx(_i,{size:16,strokeWidth:3})})]}),h&&f.jsx("p",{children:s("skillDetail.loading")}),p&&f.jsx("p",{className:"text-[var(--color-crashed)]",children:s("skillDetail.error.load",{detail:b instanceof Error?b.message:String(b)})}),d&&f.jsxs("div",{className:"flex flex-col gap-4",children:[f.jsxs("div",{className:"nb-card bg-[var(--color-bg-cream)] p-4",children:[f.jsx("h3",{className:"font-[family-name:var(--font-heading)] text-sm font-bold mb-3 uppercase tracking-wider",children:s("skillDetail.section.projects")}),f.jsxs("div",{className:"flex flex-col gap-2",children:[t.map(C=>{const T=_.get(C);return f.jsxs("div",{className:"flex items-center justify-between gap-3 p-2 bg-[var(--color-bg)] border-2 border-[var(--color-text)] rounded-lg",children:[f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx("span",{className:"font-[family-name:var(--font-mono)] font-bold text-sm",children:C}),T==="linked"&&f.jsx("span",{className:"nb-status",style:{background:"var(--color-running-bg)",color:"var(--color-running)"},children:"linked"}),T==="frozen"&&f.jsx("span",{className:"nb-status",style:{background:"var(--color-stuck-bg)",color:"var(--color-stuck)"},children:"frozen"}),!T&&f.jsx("span",{className:"nb-status",style:{background:"var(--color-idle-bg)",color:"var(--color-idle)"},children:"absent"})]}),f.jsxs("div",{className:"flex gap-2",children:[!T&&f.jsxs("button",{className:"nb-btn nb-btn-primary",style:{padding:"4px 10px",fontSize:11},onClick:()=>x(C),type:"button",children:[f.jsx(TT,{size:11})," link"]}),T==="linked"&&f.jsxs(f.Fragment,{children:[f.jsxs("button",{className:"nb-btn",style:{padding:"4px 10px",fontSize:11},onClick:()=>w(C),type:"button",children:[f.jsx(ZT,{size:11})," freeze"]}),f.jsx("button",{className:"nb-btn nb-btn-danger",style:{padding:"4px 10px",fontSize:11},onClick:()=>E(C),type:"button",children:"unlink"})]}),T==="frozen"&&f.jsxs(f.Fragment,{children:[f.jsxs("button",{className:"nb-btn",style:{padding:"4px 10px",fontSize:11},onClick:()=>S(C),type:"button",children:[f.jsx(sT,{size:11})," unfreeze"]}),f.jsx("button",{className:"nb-btn nb-btn-danger",style:{padding:"4px 10px",fontSize:11},onClick:()=>E(C),type:"button",children:"unlink"})]})]})]},C)}),t.length===0&&f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] italic",children:s("skillDetail.section.empty")})]})]}),f.jsxs("div",{children:[f.jsx("h3",{className:"font-[family-name:var(--font-heading)] text-sm font-bold mb-2 uppercase tracking-wider",children:s("skillDetail.section.preview")}),f.jsx("div",{className:"prose-chat bg-[var(--color-bg-cream)] border-2 border-[var(--color-text)] rounded-lg p-4 max-h-80 overflow-auto text-sm",children:d.body?f.jsx(Dg,{remarkPlugins:[Ig],rehypePlugins:[Pg],children:d.body}):f.jsx("p",{className:"text-[var(--color-text-muted)] italic",children:"(empty)"})})]}),d.references.length>0&&f.jsxs("div",{children:[f.jsx("h3",{className:"font-[family-name:var(--font-heading)] text-sm font-bold mb-2 uppercase tracking-wider",children:"References"}),f.jsx("ul",{className:"flex flex-col gap-2",children:d.references.map(C=>f.jsx(RB,{skillName:e,file:C.name,lines:C.lines},C.name))})]})]})]})})}function RB({skillName:e,file:t,lines:n}){const a=ze(),[s,o]=A.useState(!1),{data:c,isLoading:d,isError:h,error:p}=rt({queryKey:["skill-ref",e,t],queryFn:()=>vO(e,t),enabled:s,staleTime:1/0});return f.jsxs("li",{className:"border-2 border-[var(--color-text)] rounded-lg overflow-hidden bg-[var(--color-bg-cream)]",children:[f.jsxs("button",{type:"button",onClick:()=>o(b=>!b),"aria-label":a("skillDetail.toggleSection.aria",{action:a(s?"skillDetail.collapse":"skillDetail.expand"),file:t}),"aria-expanded":s,className:"w-full flex items-center gap-2 px-3 py-2 text-sm font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-yellow)] transition-colors",children:[f.jsx(Bd,{size:12,strokeWidth:3,className:["transition-transform",s?"rotate-90":""].join(" ")}),f.jsx(kc,{size:12,strokeWidth:2.5}),f.jsx("span",{className:"flex-1 text-left font-bold",children:t}),f.jsxs("span",{className:"text-xs text-[var(--color-text-subtle)]",children:[n," lines"]})]}),s&&f.jsxs("div",{className:"px-4 py-3 border-t-2 border-[var(--color-text)] bg-[var(--color-bg)] max-h-96 overflow-auto",children:[d&&f.jsx("p",{className:"text-xs text-[var(--color-text-muted)]",children:a("skillDetail.loading")}),h&&f.jsx("p",{className:"text-xs text-[var(--color-crashed)]",children:a("skillDetail.error.load",{detail:p instanceof Error?p.message:String(p)})}),c&&f.jsx("div",{className:"prose-chat text-sm",children:f.jsx(Dg,{remarkPlugins:[Ig],rehypePlugins:[Pg],children:c.content})})]})]})}const LB=[{value:"all",labelKey:"skills.category.all"},{value:"language",labelKey:"skills.category.language"},{value:"end",labelKey:"skills.category.end"},{value:"persona",labelKey:"skills.category.persona"},{value:"workflow",labelKey:"skills.category.workflow"},{value:"other",labelKey:"skills.category.other"}],IB={language:"var(--color-accent-purple)",end:"var(--color-secondary)",persona:"var(--color-primary)",workflow:"var(--color-accent-mint)",other:"var(--color-bg-cream)"};function zB(){var x;const e=ze(),[t,n]=A.useState("all"),[a,s]=A.useState(""),[o,c]=A.useState(null),d=En(),{data:h,isLoading:p}=rt({queryKey:["skills"],queryFn:()=>pg()}),b=rt({queryKey:["projects"],queryFn:Nr}),g=A.useMemo(()=>((h==null?void 0:h.data)??[]).filter(w=>!(t!=="all"&&w.category!==t||a&&!w.name.toLowerCase().includes(a.toLowerCase()))),[h,t,a]),v=A.useMemo(()=>{const E=(h==null?void 0:h.data)??[],w={all:E.length};for(const S of E)w[S.category]=(w[S.category]??0)+1;return w},[h]);return f.jsxs("div",{className:"flex flex-col gap-4 max-w-full",children:[f.jsxs("header",{className:"flex items-center justify-between flex-wrap gap-3",children:[f.jsxs("div",{children:[f.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold",children:"Skills 🎯"}),f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:p?e("common.loading"):e("skills.subtitleCount",{count:(h==null?void 0:h.data.length)??0})})]}),f.jsx("div",{className:"flex gap-3 items-center",children:f.jsxs("button",{className:"nb-btn nb-btn-mint",onClick:async()=>{await _O(),d.invalidateQueries({queryKey:["skills"]})},type:"button",children:[f.jsx(Er,{size:14,strokeWidth:2.5}),"Sync bundled"]})})]}),f.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[f.jsxs("div",{className:"relative flex-1 max-w-md",children:[f.jsx(kd,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-[var(--color-text-subtle)]"}),f.jsx("input",{className:"nb-input pl-9 w-full",placeholder:e("skills.search.placeholder"),value:a,onChange:E=>s(E.target.value),"aria-label":e("skills.search.aria")})]}),f.jsx("div",{className:"flex gap-1 p-1 bg-[var(--color-bg)] border-[2px] border-[var(--color-text)] rounded-full shadow-[2px_2px_0_var(--color-text)]",children:LB.map(E=>f.jsxs("button",{type:"button",onClick:()=>n(E.value),className:["px-3 py-1 rounded-full text-xs font-bold font-[family-name:var(--font-body)]",t===E.value?"bg-[var(--color-text)] text-[var(--color-bg)]":"text-[var(--color-text-muted)] hover:text-[var(--color-text)]"].join(" "),children:[e(E.labelKey)," ",v[E.value]]},E.value))})]}),f.jsx("div",{className:"grid gap-4 grid-cols-[repeat(auto-fill,minmax(280px,1fr))]",children:g.map(E=>{var w;return f.jsx(BB,{skill:E,projectCount:((w=b.data)==null?void 0:w.data.length)??0,onOpen:()=>c(E.name)},E.name)})}),o&&f.jsx(MB,{name:o,projects:((x=b.data)==null?void 0:x.data.map(E=>E.name))??[],onClose:()=>c(null),onChange:()=>d.invalidateQueries({queryKey:["skills"]})})]})}function BB({skill:e,projectCount:t,onOpen:n}){const a=IB[e.category];return f.jsxs("article",{onClick:n,onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),n())},tabIndex:0,role:"button","aria-label":`Open ${e.name}`,className:"nb-card nb-card-interactive flex flex-col gap-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsx("h3",{className:"font-[family-name:var(--font-heading)] font-bold text-lg",children:e.name}),f.jsx("span",{className:"nb-badge text-[10px]",style:{background:a},children:e.category})]}),f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] leading-5 line-clamp-3",children:e.description||"(no description)"}),f.jsxs("div",{className:"flex items-center justify-between text-xs font-[family-name:var(--font-mono)] pt-2 border-t-[1.5px] border-dashed border-[var(--color-border-light)]",children:[f.jsx("span",{className:"font-bold",children:e.linkedProjects.length>0?`● linked in ${e.linkedProjects.length}`:"○ not linked"}),f.jsxs("span",{className:"text-[var(--color-text-subtle)]",children:[t," projects"]})]})]})}function PB(){var o;const e=ze(),t=rt({queryKey:["system-info"],queryFn:wk}),n=rt({queryKey:["system-env"],queryFn:wA}),[a,s]=A.useState(!1);return f.jsxs("div",{className:"flex flex-col gap-6 max-w-4xl",children:[f.jsx("header",{children:f.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold",children:e("system.h1")})}),f.jsx(UB,{current:(o=t.data)==null?void 0:o.version}),f.jsxs("section",{className:"nb-card",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] text-xl font-bold mb-3",children:e("system.runtime")}),t.data?f.jsxs("dl",{className:"grid grid-cols-[160px_1fr] gap-y-2 text-sm",children:[f.jsx("dt",{className:"font-bold",children:"Node"}),f.jsx("dd",{className:"font-[family-name:var(--font-mono)]",children:t.data.nodeVersion}),f.jsx("dt",{className:"font-bold",children:"Platform"}),f.jsx("dd",{className:"font-[family-name:var(--font-mono)]",children:t.data.platform}),f.jsx("dt",{className:"font-bold",children:"PID"}),f.jsx("dd",{className:"font-[family-name:var(--font-mono)]",children:t.data.pid??"—"}),f.jsx("dt",{className:"font-bold",children:"Uptime"}),f.jsx("dd",{className:"font-[family-name:var(--font-mono)]",children:HB(t.data.uptimeMs)})]}):f.jsx("p",{className:"text-[var(--color-text-muted)]",children:e("common.loading")})]}),f.jsxs("section",{className:"nb-card",children:[f.jsxs("div",{className:"flex items-center justify-between mb-3",children:[f.jsxs("h2",{className:"font-[family-name:var(--font-heading)] text-xl font-bold",children:[e("system.env.title.prefix"),f.jsx("code",{className:"text-sm font-[family-name:var(--font-mono)] font-normal bg-[var(--color-bg-cream)] border-2 border-[var(--color-text)] px-2 py-0.5 rounded",children:"~/.coral/env"})]}),a?f.jsx("span",{className:"text-xs text-[var(--color-stuck)] font-bold",children:e("system.env.editing.label")}):f.jsxs("button",{className:"nb-btn",style:{padding:"6px 12px",fontSize:12},onClick:()=>s(!0),type:"button","aria-label":e("system.env.edit.aria"),children:[f.jsx(Wm,{size:12,strokeWidth:2.5})," ",e("system.env.edit.button")]})]}),a?f.jsx(FB,{onClose:()=>{s(!1),n.refetch()}}):n.data&&n.data.exists?f.jsx("dl",{className:"grid grid-cols-[220px_1fr] gap-y-1 text-sm font-[family-name:var(--font-mono)]",children:n.data.entries.map(c=>f.jsxs("div",{className:"contents",children:[f.jsxs("dt",{className:"font-bold flex items-center gap-2",children:[c.masked&&f.jsx("span",{className:"text-[var(--color-stuck)]",children:"🔒"}),c.key]}),f.jsx("dd",{className:"text-[var(--color-text-muted)] truncate",children:c.value})]},c.key))}):f.jsxs("p",{className:"text-[var(--color-text-muted)] text-sm",children:[e("system.env.empty.before"),f.jsx("code",{className:"bg-[var(--color-bg-cream)] border-2 border-[var(--color-text)] px-2 py-0.5 rounded font-[family-name:var(--font-mono)]",children:"sps setup"}),e("system.env.empty.after")]})]}),f.jsx(qB,{})]})}function UB({current:e}){var w;const t=ze(),{confirm:n,alert:a}=ci(),[s,o]=A.useState(!1),[c,d]=A.useState(null),h=rt({queryKey:["latest-version"],queryFn:SA,enabled:!1}),[p,b]=A.useState(null),[g,v]=A.useState("npm i -g @coralai/sps-cli@latest"),x=async()=>{var _;if(await n({title:t("system.upgrade.confirm.title"),body:t("system.upgrade.confirm.body",{current:e??"?",latest:((_=h.data)==null?void 0:_.latest)??"?"}),confirm:t("system.upgrade.confirm.button")})){o(!0),d(null),b(null);try{const C=await _A();if(d(C.output),b(C.installedVersion),v(C.command),C.ok)a({title:t("system.upgrade.success.title"),body:t("system.upgrade.success.body",{version:C.installedVersion??"?"})});else{const T=C.installedVersion&&C.installedVersion===e?t("system.upgrade.notEffective.same",{version:C.installedVersion}):t("system.upgrade.notEffective.notInstalled");a({title:t("system.upgrade.notEffective.title"),body:T})}}catch(C){d(C.message),a({title:t("system.upgrade.error.title"),body:C.message})}finally{o(!1)}}},E=async()=>{const S=h.data&&!h.data.upToDate?`npm i -g @coralai/sps-cli@${h.data.latest}`:g;try{await navigator.clipboard.writeText(S),a({title:t("system.upgrade.copy.success.title"),body:t("system.upgrade.copy.success.body",{cmd:S})})}catch{a({title:t("system.upgrade.copy.fail.title"),body:t("system.upgrade.copy.fail.body",{cmd:S})})}};return f.jsxs("section",{className:"nb-card",children:[f.jsxs("div",{className:"flex items-center justify-between mb-3",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] text-xl font-bold",children:t("system.upgrade.title")}),f.jsxs("button",{className:"nb-btn",style:{padding:"6px 12px",fontSize:12},onClick:()=>h.refetch(),disabled:h.isFetching||!e,type:"button","aria-label":t("system.upgrade.checkLatest.aria"),children:[h.isFetching?f.jsx(jt,{size:12,strokeWidth:3,className:"animate-spin"}):f.jsx(Er,{size:12,strokeWidth:2.5}),t("system.upgrade.checkUpdate")]})]}),f.jsxs("dl",{className:"grid grid-cols-[160px_1fr] gap-y-2 text-sm",children:[f.jsx("dt",{className:"font-bold",children:t("system.upgrade.label.current")}),f.jsx("dd",{className:"font-[family-name:var(--font-mono)]",children:e??"—"}),h.data&&f.jsxs(f.Fragment,{children:[f.jsx("dt",{className:"font-bold",children:t("system.upgrade.label.latest")}),f.jsxs("dd",{className:"font-[family-name:var(--font-mono)] flex items-center gap-2 flex-wrap",children:[h.data.latest,h.data.upToDate?f.jsx("span",{className:"nb-status",style:{background:"var(--color-running-bg)",color:"var(--color-running)"},children:t("system.upgrade.latestPill")}):f.jsxs(f.Fragment,{children:[f.jsxs("button",{className:"nb-btn nb-btn-primary",style:{padding:"3px 10px",fontSize:11},onClick:x,disabled:s,type:"button","aria-label":t("system.upgrade.button.upgradeAria"),children:[s?f.jsx(jt,{size:11,strokeWidth:3,className:"animate-spin"}):f.jsx(sk,{size:11,strokeWidth:2.5}),t("system.upgrade.button.upgrade")]}),f.jsxs("button",{className:"nb-btn",style:{padding:"3px 10px",fontSize:11},onClick:E,type:"button","aria-label":t("system.upgrade.button.copyAria"),title:t("system.upgrade.button.copyTitle"),children:[f.jsx(Z2,{size:11,strokeWidth:2.5})," ",t("system.upgrade.button.copy")]})]})]})]}),p&&f.jsxs(f.Fragment,{children:[f.jsx("dt",{className:"font-bold",children:t("system.upgrade.label.installed")}),f.jsxs("dd",{className:"font-[family-name:var(--font-mono)] flex items-center gap-2",children:[p,p===((w=h.data)==null?void 0:w.latest)?f.jsx("span",{className:"nb-status",style:{background:"var(--color-running-bg)",color:"var(--color-running)"},children:t("system.upgrade.installed.ok")}):p===e?f.jsx("span",{className:"nb-status",style:{background:"var(--color-stuck-bg)",color:"var(--color-stuck)"},children:t("system.upgrade.installed.fail")}):null]})]}),h.isError&&f.jsxs(f.Fragment,{children:[f.jsx("dt",{className:"font-bold",children:t("system.upgrade.label.check")}),f.jsx("dd",{className:"text-[var(--color-crashed)] text-xs",children:h.error instanceof Error?h.error.message:String(h.error)})]})]}),c&&f.jsx("pre",{className:"mt-3 text-xs font-[family-name:var(--font-mono)] bg-[var(--color-bg-cream)] border-2 border-[var(--color-text)] rounded-lg p-3 max-h-40 overflow-auto whitespace-pre-wrap",children:c})]})}function FB({onClose:e}){const t=ze(),n=En(),{alert:a}=ci(),s=rt({queryKey:["system-env-raw"],queryFn:kA}),[o,c]=A.useState(null),[d,h]=A.useState(null);A.useEffect(()=>{s.data&&o===null&&(c(s.data.content),h(s.data.etag))},[s.data,o]);const p=o!==null&&s.data&&o!==s.data.content,b=Mn({mutationFn:()=>{if(o===null)throw new Error("no draft");return EA(o,d??"")},onSuccess:()=>{n.invalidateQueries({queryKey:["system-env"]}),n.invalidateQueries({queryKey:["system-env-raw"]}),e()},onError:g=>{const v=g.status;a({title:t(v===409?"system.env.error.conflict.title":"system.env.error.save.title"),body:v===409?t("system.env.error.conflict.body"):g instanceof Error?g.message:String(g)})}});return s.isLoading?f.jsx("p",{className:"text-[var(--color-text-muted)]",children:t("common.loading")}):f.jsxs("div",{children:[f.jsx("p",{className:"text-xs text-[var(--color-stuck)] font-bold mb-2",children:t("system.env.warning")}),f.jsx("textarea",{className:"nb-input w-full font-[family-name:var(--font-mono)] text-xs",style:{minHeight:320,resize:"vertical"},value:o??"",onChange:g=>c(g.target.value),spellCheck:!1,"aria-label":t("system.env.aria")}),f.jsxs("div",{className:"flex items-center justify-between mt-3",children:[f.jsxs("span",{className:"text-xs text-[var(--color-text-muted)] font-[family-name:var(--font-mono)]",children:[d?`etag: ${d}`:"",p?t("system.env.dirtyMark"):""]}),f.jsxs("div",{className:"flex gap-2",children:[f.jsxs("button",{className:"nb-btn",style:{padding:"6px 12px"},onClick:e,disabled:b.isPending,type:"button",children:[f.jsx(_i,{size:12,strokeWidth:3})," ",t("system.env.cancel")]}),f.jsxs("button",{className:"nb-btn nb-btn-primary",style:{padding:"6px 12px"},onClick:()=>b.mutate(),disabled:!p||b.isPending,type:"button","aria-label":t("system.env.save.aria"),children:[b.isPending?f.jsx(jt,{size:12,strokeWidth:3,className:"animate-spin"}):f.jsx(Pd,{size:12,strokeWidth:3}),t("system.env.save")]})]})]})]})}function qB(){var v;const e=ze(),{alert:t}=ci(),n=rt({queryKey:["projects"],queryFn:Nr}),[a,s]=A.useState({}),[o,c]=A.useState({}),[d,h]=A.useState({}),p=(((v=n.data)==null?void 0:v.data)??[]).map(x=>({project:x.name})),b=async(x,E)=>{c(w=>({...w,[x]:E?"fix":"check"}));try{const w=await NA(x,E);s(S=>({...S,[x]:w})),h(S=>({...S,[x]:!0}))}catch(w){t({title:e(E?"system.diagnostics.error.fix":"system.diagnostics.error.check"),body:w instanceof Error?w.message:String(w)})}finally{c(w=>({...w,[x]:null}))}},g=async()=>{for(const x of p)await b(x.project,!1)};return f.jsxs("section",{className:"nb-card",children:[f.jsxs("div",{className:"flex items-center justify-between mb-3",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] text-xl font-bold",children:e("system.diagnostics.title")}),f.jsxs("button",{className:"nb-btn nb-btn-mint",style:{padding:"6px 12px",fontSize:12},onClick:()=>{g()},disabled:p.length===0||Object.values(o).some(Boolean),type:"button",children:[f.jsx(Er,{size:12,strokeWidth:2.5}),e("system.diagnostics.checkAll")]})]}),p.length===0?f.jsx("p",{className:"text-[var(--color-text-muted)] text-sm",children:e("system.diagnostics.empty")}):f.jsx("ul",{className:"flex flex-col gap-2",children:p.map(x=>{const E=a[x.project],w=o[x.project],S=E?E.checks.filter(D=>D.status==="fail").length:0,_=E?E.checks.filter(D=>D.status==="warn").length:0,C=d[x.project]??!1,T=E!=null;return f.jsxs("li",{className:"bg-[var(--color-bg-cream)] border-2 border-[var(--color-text)] rounded-lg",children:[f.jsxs("div",{className:"flex items-center gap-3 px-3 py-2",children:[f.jsxs("button",{type:"button",onClick:()=>h(D=>({...D,[x.project]:!C})),disabled:!T,className:"flex items-center gap-2 flex-1 text-left min-w-0","aria-label":e(C?"system.diagnostics.collapseAria":"system.diagnostics.expandAria"),children:[T&&E.ok?f.jsx(fm,{size:16,className:"text-[var(--color-running)] shrink-0",strokeWidth:2.5}):T?f.jsx(sc,{size:16,className:"text-[var(--color-stuck)] shrink-0",strokeWidth:2.5}):f.jsx(fm,{size:16,className:"text-[var(--color-text-subtle)] shrink-0",strokeWidth:2.5}),T&&(C?f.jsx(wc,{size:12}):f.jsx(Bd,{size:12})),f.jsx("span",{className:"font-bold font-[family-name:var(--font-mono)]",children:x.project}),T?E.ok?f.jsx("span",{className:"text-xs text-[var(--color-running)] font-semibold",children:"OK"}):f.jsxs("span",{className:"text-xs text-[var(--color-stuck)] font-semibold",children:[S," fail · ",_," warn"]}):f.jsx("span",{className:"text-xs text-[var(--color-text-muted)]",children:e("system.diagnostics.never")})]}),f.jsxs("button",{className:"nb-btn",style:{padding:"4px 10px",fontSize:11},onClick:()=>{b(x.project,!1)},disabled:!!w,type:"button","aria-label":e("system.diagnostics.checkAria"),children:[w==="check"?f.jsx(jt,{size:11,strokeWidth:3,className:"animate-spin"}):f.jsx(Er,{size:11,strokeWidth:2.5}),e("system.diagnostics.check")]}),f.jsxs("button",{className:"nb-btn nb-btn-primary",style:{padding:"4px 10px",fontSize:11},onClick:()=>{b(x.project,!0)},disabled:!!w||T&&E.ok,type:"button","aria-label":e("system.diagnostics.fixAria"),title:T&&E.ok?e("system.diagnostics.noFixesNeeded"):e("system.diagnostics.fix.tip"),children:[w==="fix"?f.jsx(jt,{size:11,strokeWidth:3,className:"animate-spin"}):f.jsx(gk,{size:11,strokeWidth:2.5}),e("system.diagnostics.fix")]})]}),C&&T&&f.jsxs("div",{className:"border-t-2 border-dashed border-[var(--color-text)] px-3 py-2",children:[f.jsx("ul",{className:"flex flex-col gap-1 text-xs font-[family-name:var(--font-mono)]",children:E.checks.map((D,B)=>f.jsx($B,{check:D},`${D.name}-${B}`))}),E.fixes.length>0&&f.jsxs("div",{className:"mt-3 bg-[var(--color-running-bg)] border-2 border-[var(--color-running)] rounded p-2",children:[f.jsx("div",{className:"text-xs font-bold text-[var(--color-running)] mb-1",children:e("system.diagnostics.fixed")}),f.jsx("ul",{className:"text-xs list-disc pl-4",children:E.fixes.map((D,B)=>f.jsx("li",{children:D},B))})]})]})]},x.project)})})]})}function $B({check:e}){const t=e.status==="pass"?f.jsx(fm,{size:12,className:"text-[var(--color-running)]",strokeWidth:2.5}):e.status==="fail"?f.jsx(sc,{size:12,className:"text-[var(--color-crashed)]",strokeWidth:2.5}):e.status==="warn"?f.jsx(sc,{size:12,className:"text-[var(--color-stuck)]",strokeWidth:2.5}):f.jsx("span",{className:"w-3 h-3 rounded-full bg-[var(--color-text-subtle)] inline-block"});return f.jsxs("li",{className:"flex items-start gap-2",children:[f.jsx("span",{className:"pt-0.5 shrink-0",children:t}),f.jsx("span",{className:"font-bold w-32 shrink-0",children:e.name}),f.jsx("span",{className:"text-[var(--color-text-muted)] break-words",children:e.message})]})}function HB(e){const t=Math.floor(e/1e3),n=Math.floor(t/3600),a=Math.floor(t%3600/60),s=t%60;return n>0?`${n}h ${a}m ${s}s`:a>0?`${a}m ${s}s`:`${s}s`}function KB(){return It("/api/chat/sessions")}function GB(e){return It(`/api/chat/sessions/${e}`)}async function Qp(e={}){const t=await fetch("/api/chat/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`${t.status}: ${await t.text()}`);return await t.json()}async function QB(e){const t=await fetch(`/api/chat/sessions/${e}`,{method:"DELETE"});if(!t.ok)throw new Error(`${t.status}`)}async function YB(e,t,n){const a=await fetch(`/api/chat/sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t,attachments:n})});if(!a.ok)throw new Error(`${a.status}: ${await a.text()}`);return await a.json()}async function VB(e){const t=await fetch(`/api/chat/sessions/${e}/interrupt`,{method:"POST"});if(!t.ok&&t.status!==204)throw new Error(`${t.status}: ${await t.text()}`)}function WB(e,t){const n=t?`?since=${encodeURIComponent(t)}`:"";return It(`/api/chat/sessions/${e}/messages${n}`)}function uw(){var ce,de,re,O,R,Q,j,ge,_e;const e=ze(),{sessionId:t}=Qw(),n=_r(),a=En(),{confirm:s,alert:o}=ci(),c=rt({queryKey:["chat-sessions"],queryFn:KB}),d=rt({queryKey:["chat-session",t],queryFn:()=>GB(t??""),enabled:!!t}),[h,p]=A.useState(null),[b,g]=A.useState(""),[v,x]=A.useState(!1),E=A.useRef(null),[w,S]=A.useState(!1),[_,C]=A.useState([]),[T,D]=A.useState(!1),[B,M]=A.useState(!1),[q,F]=A.useState(!1),[ee,P]=A.useState(null);A.useEffect(()=>{if(!t)return;const Y=new EventSource(`/stream/chat/${encodeURIComponent(t)}`);let xe=!0;return Y.addEventListener("open",()=>{if(xe){xe=!1;return}const V=a.getQueryData(["chat-session",t]),ae=V!=null&&V.messages.length?V.messages[V.messages.length-1].ts:void 0;WB(t,ae).then(ye=>{ye.data.length!==0&&a.setQueryData(["chat-session",t],Pe=>{if(!Pe)return Pe;const Ot=new Set(Pe.messages.map(on=>on.id)),St=ye.data.filter(on=>!Ot.has(on.id));return St.length===0?Pe:{...Pe,messages:[...Pe.messages,...St],lastMessageAt:St[St.length-1].ts,messageCount:Pe.messageCount+St.length}})}).catch(()=>{})}),Y.addEventListener("chat.message",V=>{try{const ae=JSON.parse(V.data);a.setQueryData(["chat-session",t],ye=>{if(!ye||ye.messages.some(St=>St.id===ae.message.id))return ye;const Ot=ye.messages.findIndex(St=>St.role==="user"&&St.id.startsWith("optim-")&&St.content===ae.message.content);if(Ot>=0){const St=[...ye.messages];return St[Ot]=ae.message,{...ye,messages:St}}return{...ye,messages:[...ye.messages,ae.message]}})}catch{}}),Y.addEventListener("chat.message.pending",V=>{try{const ae=JSON.parse(V.data);p({id:ae.assistantId,blocks:[],done:!1,finalMessage:null})}catch{}}),Y.addEventListener("chat.message.chunk.text",V=>{try{const ae=JSON.parse(V.data);p(ye=>{if(!ye||ye.id!==ae.assistantId)return ye;const Pe=[...ye.blocks],Ot=Pe[Pe.length-1];return Ot&&Ot.type==="text"?Pe[Pe.length-1]={...Ot,target:Ot.target+ae.text}:Pe.push({type:"text",target:ae.text,displayed:""}),{...ye,blocks:Pe}})}catch{}}),Y.addEventListener("chat.message.chunk.tool_use",V=>{try{const ae=JSON.parse(V.data);p(ye=>!ye||ye.id!==ae.assistantId?ye:{...ye,blocks:[...ye.blocks,{type:"tool_use",id:ae.id,title:ae.title,kind:ae.kind,status:ae.status}]})}catch{}}),Y.addEventListener("chat.message.chunk.tool_update",V=>{try{const ae=JSON.parse(V.data);p(ye=>!ye||ye.id!==ae.assistantId?ye:{...ye,blocks:ye.blocks.map(Pe=>Pe.type==="tool_use"&&Pe.id===ae.id?{...Pe,status:ae.status}:Pe)})}catch{}}),Y.addEventListener("chat.message.complete",V=>{try{const ae=JSON.parse(V.data);p(ye=>ye&&ye.id===ae.assistantId?{...ye,done:!0,finalMessage:ae.message}:ye)}catch{}}),()=>Y.close()},[t,a]),A.useEffect(()=>{if(!h)return;const Y=h.blocks.reduce((V,ae)=>ae.type==="text"?V+(ae.target.length-ae.displayed.length):V,0);if(Y<=0){if(h.done&&h.finalMessage){const V=h.finalMessage;a.setQueryData(["chat-session",t],ae=>!ae||ae.messages.some(ye=>ye.id===V.id)?ae:{...ae,messages:[...ae.messages,V],lastMessageAt:V.ts,messageCount:ae.messageCount+1}),a.invalidateQueries({queryKey:["chat-sessions"]}),p(null),x(!1)}return}const xe=setTimeout(()=>{p(V=>{if(!V)return V;let ae=Math.max(1,Math.ceil(Y/40));const ye=V.blocks.map(Pe=>{if(Pe.type!=="text"||ae<=0)return Pe;const Ot=Pe.target.length-Pe.displayed.length;if(Ot<=0)return Pe;const St=Math.min(Ot,ae);return ae-=St,{...Pe,displayed:Pe.target.slice(0,Pe.displayed.length+St)}});return{...V,blocks:ye}})},25);return()=>clearTimeout(xe)},[h,a,t]),A.useEffect(()=>{const Y=E.current;Y&&(Y.scrollTop=Y.scrollHeight)},[d.data,h]);const X=A.useCallback(async(Y={})=>{var xe,V;try{const ae=await Qp({cwd:((xe=Y.cwd)==null?void 0:xe.trim())||void 0,title:((V=Y.title)==null?void 0:V.trim())||void 0});a.invalidateQueries({queryKey:["chat-sessions"]}),n(`/chat/${ae.id}`),S(!1)}catch(ae){o({title:e("chat.error.create.title"),body:ae instanceof Error?ae.message:String(ae)})}},[a,n,o,e]),J=A.useCallback(async()=>{const Y=b.trim();if(!Y&&_.length===0||v)return;let xe=t;if(!xe){const ye=await Qp();a.invalidateQueries({queryKey:["chat-sessions"]}),xe=ye.id,n(`/chat/${xe}`,{replace:!0})}const V=_.map(ye=>ye.path),ae={id:`optim-${Date.now()}`,role:"user",content:Y||e("chat.placeholder.attachment"),ts:new Date().toISOString(),status:"complete",attachments:V.length>0?V:void 0};a.setQueryData(["chat-session",xe],ye=>ye?{...ye,messages:[...ye.messages,ae],lastMessageAt:ae.ts,messageCount:ye.messageCount+1}:{id:xe,createdAt:ae.ts,lastMessageAt:ae.ts,title:Y.slice(0,60)||e("chat.placeholder.attachmentTitle"),project:null,messageCount:1,messages:[ae]}),g(""),C([]),x(!0);try{await YB(xe,Y||e("chat.placeholder.viewAttachment"),V.length>0?V:void 0)}catch(ye){x(!1),console.error("sendMessage failed",ye),o({title:e("chat.error.send.title"),body:ye instanceof Error?ye.message:String(ye)})}},[b,_,v,t,a,n,o,e]),pe=A.useCallback(async Y=>{if(Y.size>kk){o({title:e("chat.error.fileTooBig.title"),body:e("chat.error.fileTooBig.body",{size:(Y.size/1024/1024).toFixed(2),name:Y.name})});return}let xe=t;if(!xe){const V=await Qp();a.invalidateQueries({queryKey:["chat-sessions"]}),xe=V.id,n(`/chat/${xe}`,{replace:!0})}D(!0);try{const V=await WA(xe,Y);C(ae=>[...ae,{path:V.path,name:V.name}])}catch(V){o({title:e("chat.error.uploadAttachment.title"),body:V instanceof Error?V.message:String(V)})}finally{D(!1)}},[t,a,n,o,e]),ue=A.useCallback(Y=>{C(xe=>xe.filter(V=>V.path!==Y))},[]),te=A.useCallback(async(Y,xe)=>{await s({title:e("chat.delete.confirm.title"),body:e(xe==="cli"?"chat.delete.confirm.body.cli":"chat.delete.confirm.body.console"),confirm:e("chat.delete.confirm.button"),danger:!0})&&(await QB(Y),a.invalidateQueries({queryKey:["chat-sessions"]}),t===Y&&n("/chat"))},[a,t,n,s,e]),$=A.useCallback(async()=>{if(t)try{await VB(t)}catch(Y){o({title:e("chat.error.interrupt.title"),body:Y instanceof Error?Y.message:String(Y)})}},[t,o,e]);return f.jsxs("div",{className:"grid grid-cols-[260px_1fr] gap-4 h-[calc(100vh-140px)]",children:[f.jsxs("aside",{className:"nb-card p-3 overflow-auto flex flex-col gap-2",children:[f.jsxs("button",{className:"nb-btn nb-btn-primary w-full justify-center",onClick:()=>S(!0),type:"button",children:[f.jsx(Bi,{size:14,strokeWidth:3}),e("chat.list.new")]}),f.jsx("div",{className:"mt-2 text-xs font-[family-name:var(--font-heading)] uppercase tracking-wider text-[var(--color-text-muted)] px-2",children:e("chat.list.heading",{count:((ce=c.data)==null?void 0:ce.data.length)??0})}),f.jsxs("div",{className:"flex flex-col gap-1.5 mt-1",children:[(((de=c.data)==null?void 0:de.data)??[]).map(Y=>f.jsxs("div",{className:["group flex items-start gap-2 p-2 rounded-lg border-2 border-transparent",t===Y.id?"bg-[var(--color-accent-mint)] border-[var(--color-text)] shadow-[2px_2px_0_var(--color-text)]":"hover:bg-[var(--color-bg-cream)] hover:border-[var(--color-text)]"].join(" "),children:[f.jsxs("button",{type:"button","aria-label":e("chat.list.openAria",{title:Y.title,cwd:Y.cwd?e("chat.list.cwdSuffix",{cwd:Y.cwd}):""}),onClick:()=>n(`/chat/${Y.id}`),className:"flex items-start gap-2 flex-1 min-w-0 text-left",children:[f.jsx(Yv,{size:14,strokeWidth:2.5,className:"mt-0.5 flex-shrink-0"}),f.jsxs("div",{className:"flex-1 min-w-0",children:[f.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[f.jsx("p",{className:"text-sm font-semibold truncate flex-1",children:Y.title}),Y.source==="cli"&&f.jsx("span",{className:"flex-shrink-0 px-1.5 py-0 rounded-md bg-[var(--color-accent-purple)] border-2 border-[var(--color-text)] text-[9px] font-[family-name:var(--font-mono)] uppercase tracking-wider leading-tight",title:e("chat.cliBadge.tooltip"),children:e("chat.cliBadge")})]}),f.jsx("p",{className:"text-[10px] text-[var(--color-text-muted)] font-[family-name:var(--font-mono)] truncate",children:e("chat.list.msgs",{count:Y.messageCount,time:X1(Y.lastMessageAt??Y.createdAt,e)})}),Y.cwd&&f.jsxs("p",{className:"text-[10px] text-[var(--color-text-subtle)] font-[family-name:var(--font-mono)] truncate flex items-center gap-1",title:Y.cwd,children:[f.jsx(oc,{size:9,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("span",{className:"truncate",dir:"rtl",children:Y.cwd})]})]})]}),f.jsx("button",{type:"button","aria-label":Y.source==="cli"?e("chat.list.deleteCli.aria"):e("chat.list.delete.aria"),className:"opacity-0 group-hover:opacity-100 p-1 hover:text-[var(--color-crashed)]",onClick:xe=>{xe.stopPropagation(),te(Y.id,Y.source)},children:f.jsx(zl,{size:12})})]},Y.id)),(((re=c.data)==null?void 0:re.data)??[]).length===0&&f.jsx("p",{className:"text-xs text-[var(--color-text-subtle)] italic text-center py-4",children:e("chat.list.empty")})]})]}),f.jsx("div",{className:"nb-card p-0 flex flex-col overflow-hidden",children:t?f.jsxs(f.Fragment,{children:[f.jsxs("header",{className:"px-4 py-3 border-b-2 border-[var(--color-text)] bg-[var(--color-bg-cream)]",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] font-bold text-lg",children:((O=d.data)==null?void 0:O.title)??e("common.loading")}),f.jsx("p",{className:"text-xs text-[var(--color-text-muted)] font-[family-name:var(--font-mono)]",children:t}),((R=d.data)==null?void 0:R.cwd)&&f.jsxs("p",{className:"text-xs text-[var(--color-text-muted)] font-[family-name:var(--font-mono)] flex items-center gap-1 mt-1",title:d.data.cwd,children:[f.jsx(oc,{size:11,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("span",{className:"truncate",children:d.data.cwd})]})]}),f.jsxs("div",{ref:E,className:"flex-1 overflow-auto p-4 flex flex-col gap-4",children:[(((Q=d.data)==null?void 0:Q.messages)??[]).map(Y=>f.jsx(JB,{msg:Y,sessionId:t??null,onPreviewAttachment:xe=>P(xe)},Y.id)),h&&f.jsx(tP,{pending:h}),!d.isLoading&&(((j=d.data)==null?void 0:j.messages)??[]).length===0&&!h&&!v&&f.jsx("p",{className:"text-center text-[var(--color-text-subtle)] italic mt-12",children:e("chat.session.empty")})]}),((ge=d.data)==null?void 0:ge.source)==="cli"?f.jsxs("div",{className:"border-t-2 border-[var(--color-text)] p-4 bg-[var(--color-accent-purple)]",children:[f.jsxs("p",{className:"text-sm font-[family-name:var(--font-mono)] text-[var(--color-text-muted)] text-center",children:[f.jsx("strong",{children:e("chat.cli.banner.bold")})," — ",e("chat.cli.banner")]}),f.jsxs("pre",{className:"mt-2 px-3 py-2 bg-[var(--color-bg)] border-2 border-[var(--color-text)] rounded-md text-xs font-[family-name:var(--font-mono)] overflow-x-auto",children:["sps agent --chat --name ",(t??"").replace(/^session-/,"")]})]}):f.jsxs("div",{className:["border-t-2 border-[var(--color-text)] p-3 bg-[var(--color-bg-cream)] transition-colors",q?"bg-[var(--color-accent-mint)]":""].join(" "),onDragOver:Y=>{Y.dataTransfer.types.includes("Files")&&(Y.preventDefault(),Y.dataTransfer.dropEffect="copy",q||F(!0))},onDragLeave:()=>F(!1),onDrop:Y=>{if(!Y.dataTransfer.types.includes("Files"))return;Y.preventDefault(),F(!1);const xe=Array.from(Y.dataTransfer.files??[]);for(const V of xe)pe(V)},children:[(_.length>0||T)&&f.jsxs("div",{className:"flex flex-wrap gap-2 mb-2",children:[_.map(Y=>f.jsxs("button",{type:"button",className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-[var(--color-bg)] border-2 border-[var(--color-text)] text-xs font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-mint)] group",onClick:()=>P(Y.path),title:e("chat.attachment.previewTooltip",{name:Y.name,path:Y.path}),children:[Md(Y.path)?f.jsx(kT,{size:11,strokeWidth:2.5,className:"flex-shrink-0"}):f.jsx(kc,{size:11,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("span",{className:"truncate max-w-[180px]",children:Y.name}),f.jsx("span",{role:"button","aria-label":e("chat.input.removeAttachment",{name:Y.name}),className:"ml-1 hover:text-[var(--color-crashed)] cursor-pointer",onClick:xe=>{xe.stopPropagation(),ue(Y.path)},children:f.jsx(_i,{size:11,strokeWidth:3})})]},Y.path)),T&&f.jsxs("span",{className:"flex items-center gap-1.5 px-2 py-1 text-xs text-[var(--color-text-muted)] font-[family-name:var(--font-mono)]",children:[f.jsx(jt,{size:11,strokeWidth:2.5,className:"animate-spin"}),e("chat.input.uploading")]})]}),f.jsxs("div",{className:"flex gap-2 items-end",children:[f.jsx("button",{type:"button",className:"nb-btn flex-shrink-0",onClick:()=>M(!0),disabled:v,"aria-label":e("chat.input.attach.aria"),title:e("chat.input.attach.title"),children:f.jsx(RT,{size:14,strokeWidth:2.5})}),f.jsx("textarea",{className:"nb-input flex-1 resize-none",placeholder:e(q?"chat.input.dragOver":"chat.input.placeholder"),rows:2,value:b,onChange:Y=>g(Y.target.value),onKeyDown:Y=>{Y.key==="Enter"&&!Y.shiftKey&&!Y.nativeEvent.isComposing&&(Y.preventDefault(),J())},onPaste:Y=>{const V=Array.from(Y.clipboardData.items??[]).filter(ae=>ae.kind==="file"&&ae.type.startsWith("image/"));if(V.length!==0){Y.preventDefault();for(const ae of V){const ye=ae.getAsFile();ye&&pe(ye)}}},"aria-label":e("chat.input.aria")}),h?f.jsxs("button",{className:"nb-btn nb-btn-danger",onClick:$,type:"button","aria-label":e("chat.input.interrupt.aria"),children:[f.jsx(fk,{size:14,strokeWidth:3}),e("chat.input.interrupt")]}):f.jsxs("button",{className:"nb-btn nb-btn-primary",onClick:J,disabled:!b.trim()&&_.length===0||v,type:"button","aria-label":e("chat.input.send.aria"),children:[v?f.jsx(jt,{size:14,strokeWidth:3,className:"animate-spin"}):f.jsx(QT,{size:14,strokeWidth:3}),e("chat.input.send")]})]})]})]}):f.jsx("div",{className:"flex-1 flex items-center justify-center p-8",children:f.jsxs("div",{className:"text-center max-w-md",children:[f.jsx("div",{className:"w-20 h-20 rounded-2xl bg-[var(--color-accent-mint)] border-[3px] border-[var(--color-text)] shadow-[3px_3px_0_var(--color-text)] flex items-center justify-center mx-auto mb-4",children:f.jsx(Yv,{size:32,strokeWidth:2.5})}),f.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-2xl font-bold mb-2",children:e("chat.empty.title")}),f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] mb-4",children:e("chat.empty.hint")}),f.jsx("p",{className:"text-xs text-[var(--color-text-subtle)] italic",children:e("chat.empty.shortcuts")})]})})}),w&&f.jsx(ZB,{onCancel:()=>S(!1),onCreate:Y=>X(Y)}),B&&f.jsx(Zm,{mode:"file",title:e("chat.filePicker.title"),initialPath:((_e=d.data)==null?void 0:_e.cwd)??void 0,onCancel:()=>M(!1),onSelect:Y=>{C(xe=>{if(xe.some(ae=>ae.path===Y))return xe;const V=Y.split(/[\\/]/).pop()||Y;return[...xe,{path:Y,name:V}]}),M(!1)}}),ee&&t&&f.jsx(XB,{sessionId:t,path:ee,onClose:()=>P(null)})]})}function Md(e){return/\.(png|jpe?g|gif|webp|svg|avif)$/i.test(e)}function dw(e){return/\.pdf$/i.test(e)}function Yp(e){return/\.(txt|md|log|json|yaml|yml|csv|html|xml|tsx?|jsx?|css|sh|ya?ml|conf|toml|ini|env|gitignore|sql|py|rb|go|rs|java|kt|swift|c|cc|cpp|h|hpp)$/i.test(e)}function XB({sessionId:e,path:t,onClose:n}){const a=ze(),[s,o]=A.useState(null),[c,d]=A.useState(null);A.useEffect(()=>{const b=g=>{g.key==="Escape"&&(g.preventDefault(),n())};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[n]),A.useEffect(()=>{if(!Yp(t))return;let b=!1;return fetch(pm(e,t)).then(async g=>{if(!g.ok)throw new Error(`${g.status}`);return g.text()}).then(g=>{b||o(g.length>2e5?g.slice(0,2e5)+`
566
566
 
567
- …(truncated)`:g)}).catch(g=>{b||d(g instanceof Error?g.message:String(g))}),()=>{b=!0}},[e,t]);const h=pm(e,t),p=t.split(/[\\/]/).pop()??t;return f.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-[rgba(45,55,72,0.6)] p-4",role:"presentation",children:f.jsxs("div",{className:"nb-card bg-[var(--color-bg)] max-w-3xl w-full p-5 flex flex-col",style:{maxHeight:"85vh"},role:"dialog","aria-modal":"true","aria-label":a("chat.attachment.preview.aria",{name:p}),children:[f.jsxs("header",{className:"flex items-center justify-between mb-3 shrink-0",children:[f.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[f.jsx(nT,{size:16,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("h3",{className:"font-[family-name:var(--font-heading)] font-bold text-base truncate",children:p})]}),f.jsx("button",{type:"button",className:"p-1 hover:bg-[var(--color-bg-cream)] rounded flex-shrink-0",onClick:n,"aria-label":a("chat.attachment.close.aria"),children:f.jsx(_i,{size:16,strokeWidth:3})})]}),f.jsx("p",{className:"text-[10px] text-[var(--color-text-muted)] font-[family-name:var(--font-mono)] truncate mb-2 shrink-0",title:t,dir:"rtl",children:t}),f.jsxs("div",{className:"flex-1 overflow-auto border-2 border-[var(--color-text)] rounded-lg bg-[var(--color-bg-cream)] min-h-0",children:[Md(t)&&f.jsx("div",{className:"flex items-center justify-center p-4",children:f.jsx("img",{src:h,alt:`Preview: ${p}`,className:"max-w-full max-h-[60vh] object-contain"})}),dw(t)&&f.jsx("iframe",{src:h,title:`PDF: ${p}`,className:"w-full",style:{height:"60vh",border:0}}),Yp(t)&&f.jsx("pre",{className:"p-3 text-xs font-[family-name:var(--font-mono)] whitespace-pre-wrap break-words",children:c?f.jsx("span",{className:"text-[var(--color-crashed)]",children:a("chat.attachment.readErr",{detail:c})}):s===null?f.jsx("span",{className:"text-[var(--color-text-muted)]",children:a("chat.attachment.loading")}):s}),!Md(t)&&!dw(t)&&!Yp(t)&&f.jsxs("div",{className:"p-6 text-center text-sm text-[var(--color-text-muted)]",children:[f.jsx("p",{className:"mb-3",children:a("chat.attachment.unsupported")}),f.jsx("a",{href:h,download:p,className:"nb-btn nb-btn-primary inline-flex",children:a("chat.attachment.download")})]})]})]})})}function ZB({onCancel:e,onCreate:t}){const n=ze(),[a,s]=A.useState(""),[o,c]=A.useState(""),[d,h]=A.useState(!1),[p,b]=A.useState(!1);A.useEffect(()=>{if(p)return;const v=x=>{x.key==="Escape"&&(x.preventDefault(),e())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[e,p]);const g=async()=>{if(!d){h(!0);try{t({title:a.trim()||void 0,cwd:o.trim()||void 0})}finally{h(!1)}}};return f.jsxs("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-[rgba(45,55,72,0.4)] p-4",role:"presentation",children:[f.jsxs("div",{className:"nb-card bg-[var(--color-bg)] max-w-md w-full p-5",role:"dialog","aria-modal":"true","aria-label":n("chat.newSession.title.aria"),children:[f.jsxs("header",{className:"flex items-center justify-between mb-4",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] font-bold text-lg",children:n("chat.newSession.title")}),f.jsx("button",{type:"button",className:"p-1 hover:bg-[var(--color-bg-cream)] rounded",onClick:e,"aria-label":n("chat.newSession.close.aria"),children:f.jsx(_i,{size:16,strokeWidth:3})})]}),f.jsxs("div",{className:"flex flex-col gap-4",children:[f.jsxs("div",{children:[f.jsx("label",{htmlFor:"new-session-title",className:"block text-xs font-bold mb-1.5 uppercase tracking-wider",children:n("chat.newSession.field.title")}),f.jsx("input",{id:"new-session-title",type:"text",className:"nb-input w-full",placeholder:n("chat.newSession.field.title.placeholder"),value:a,onChange:v=>s(v.target.value),autoFocus:!0})]}),f.jsxs("div",{children:[f.jsx("label",{htmlFor:"new-session-cwd",className:"block text-xs font-bold mb-1.5 uppercase tracking-wider",children:n("chat.newSession.field.cwd")}),f.jsxs("div",{className:"flex gap-2",children:[f.jsx("input",{id:"new-session-cwd",type:"text",className:"nb-input flex-1 font-[family-name:var(--font-mono)] text-sm",placeholder:"/home/coral/projects/my-app",value:o,onChange:v=>c(v.target.value)}),f.jsxs("button",{type:"button",className:"nb-btn flex-shrink-0",onClick:()=>b(!0),"aria-label":n("chat.newSession.field.cwd.browseAria"),title:n("chat.newSession.field.cwd.browseAria"),children:[f.jsx(lk,{size:14,strokeWidth:2.5}),n("chat.newSession.field.cwd.browse")]})]}),f.jsxs("p",{className:"text-[11px] text-[var(--color-text-muted)] mt-1.5 leading-relaxed",children:[f.jsx(oc,{size:10,strokeWidth:2.5,className:"inline mr-1 -mt-0.5"}),n("chat.newSession.field.cwd.help1")," ",n("chat.newSession.field.cwd.help2")]})]}),f.jsxs("div",{className:"flex gap-2 justify-end pt-2",children:[f.jsx("button",{type:"button",className:"nb-btn",onClick:e,children:n("chat.newSession.cancel")}),f.jsxs("button",{type:"button",className:"nb-btn nb-btn-primary",onClick:g,disabled:d,children:[d?f.jsx(jt,{size:14,strokeWidth:3,className:"animate-spin"}):f.jsx(Bi,{size:14,strokeWidth:3}),n("chat.newSession.create")]})]})]})]}),p&&f.jsx(Zm,{initialPath:o.trim()||void 0,onCancel:()=>b(!1),onSelect:v=>{c(v),b(!1)}})]})}function JB({msg:e,sessionId:t,onPreviewAttachment:n}){const a=ze(),s=e.role==="user",o=e.role==="error",c=e.blocks&&e.blocks.length>0?e.blocks:[{type:"text",text:e.content}],d=e.attachments??[];return f.jsx("div",{className:s?"self-end max-w-3xl":"self-start max-w-3xl",children:f.jsxs("div",{className:["nb-card",s?"bg-[var(--color-secondary)]":o?"bg-[var(--color-crashed-bg)]":"bg-[var(--color-bg)]"].join(" "),children:[f.jsxs("p",{className:"text-xs font-bold uppercase tracking-wider text-[var(--color-text-muted)] mb-2 flex items-center gap-2",children:[a(s?"chat.message.role.you":o?"chat.message.role.error":"chat.message.role.assistant"),f.jsx("span",{className:"font-normal",children:"·"}),f.jsx("span",{className:"font-normal cursor-help",title:iP(e.ts),children:X1(e.ts,a)})]}),f.jsx("div",{className:"flex flex-col gap-2",children:c.map((h,p)=>f.jsx(nP,{block:h},p))}),d.length>0&&t&&f.jsx("div",{className:"mt-3 pt-3 border-t-2 border-dashed border-[var(--color-text)]/30 flex flex-wrap gap-2",children:d.map(h=>f.jsx(eP,{sessionId:t,path:h,onPreview:()=>n(h)},h))}),e.truncated&&f.jsx("p",{className:"mt-3 px-3 py-2 bg-[var(--color-stuck-bg)] border-2 border-[var(--color-stuck)] rounded-lg text-xs text-[var(--color-stuck)] font-bold",children:a("chat.message.truncated")})]})})}function eP({sessionId:e,path:t,onPreview:n}){const a=ze(),s=t.split(/[\\/]/).pop()??t;return Md(t)?f.jsx("button",{type:"button",onClick:n,className:"block rounded-md overflow-hidden border-2 border-[var(--color-text)] hover:shadow-[2px_2px_0_var(--color-text)] transition-shadow",title:a("chat.attachment.previewSimpleTooltip",{name:s}),children:f.jsx("img",{src:pm(e,t),alt:s,className:"block max-h-40 max-w-[12rem] object-cover",loading:"lazy"})}):f.jsxs("button",{type:"button",onClick:n,className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-[var(--color-bg)] border-2 border-[var(--color-text)] text-xs font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-mint)]",title:a("chat.attachment.previewTooltip",{name:s,path:t}),children:[f.jsx(kc,{size:11,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("span",{className:"truncate max-w-[200px]",children:s})]})}function tP({pending:e}){const t=(()=>{for(let n=e.blocks.length-1;n>=0;n--)if(e.blocks[n].type==="text")return n;return-1})();return f.jsx("div",{className:"self-start max-w-3xl",children:f.jsxs("div",{className:"nb-card bg-[var(--color-bg)]",children:[f.jsxs("p",{className:"text-xs font-bold uppercase tracking-wider text-[var(--color-text-muted)] mb-2 flex items-center gap-2",children:["assistant",f.jsx("span",{className:"font-normal",children:"·"}),f.jsxs("span",{className:"flex items-center gap-1 font-normal text-[var(--color-running)]",children:[f.jsx(jt,{size:10,strokeWidth:3,className:"animate-spin"}),"streaming"]})]}),f.jsxs("div",{className:"flex flex-col gap-2",children:[e.blocks.length===0&&f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] italic",children:"…"}),e.blocks.map((n,a)=>{if(n.type==="text"){const s=a===t;return f.jsxs("div",{className:"relative",children:[f.jsx(V1,{text:n.displayed}),s&&f.jsx("span",{className:"inline-block w-2 h-4 ml-1 bg-[var(--color-text)] animate-pulse align-middle"})]},a)}return f.jsx(W1,{tool:n},a)})]})]})})}function nP({block:e}){return e.type==="text"?f.jsx(V1,{text:e.text}):f.jsx(W1,{tool:e})}function V1({text:e}){return e?f.jsx("div",{className:"text-sm font-[family-name:var(--font-body)] break-words prose-chat",children:f.jsx(Dg,{remarkPlugins:[Ig],rehypePlugins:[Pg],children:e})}):null}function W1({tool:e}){const[t,n]=A.useState(!1),a=e.status==="completed",s=e.status==="failed",o=!a&&!s;return f.jsxs("div",{className:"border-2 border-[var(--color-text)] rounded-lg overflow-hidden bg-[var(--color-bg-cream)]",children:[f.jsxs("button",{type:"button",onClick:()=>n(c=>!c),className:"w-full flex items-center gap-2 px-3 py-2 text-xs font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-yellow)] transition-colors",children:[f.jsx(Bd,{size:12,strokeWidth:3,className:["transition-transform",t?"rotate-90":""].join(" ")}),f.jsx(gk,{size:12,strokeWidth:2.5}),f.jsx("span",{className:"font-bold",children:e.kind}),f.jsx("span",{className:"flex-1 text-left text-[var(--color-text-muted)] truncate",children:e.title}),o&&f.jsx(jt,{size:12,strokeWidth:3,className:"animate-spin text-[var(--color-running)]"}),a&&f.jsx(lc,{size:12,strokeWidth:2.5,className:"text-[var(--color-running)]"}),s&&f.jsx(ak,{size:12,strokeWidth:2.5,className:"text-[var(--color-crashed)]"})]}),t&&f.jsxs("div",{className:"px-3 py-2 text-xs font-[family-name:var(--font-mono)] text-[var(--color-text-muted)] border-t-2 border-[var(--color-text)]",children:[f.jsxs("div",{children:["id: ",f.jsx("span",{className:"text-[var(--color-text)]",children:e.id})]}),f.jsxs("div",{children:["status: ",f.jsx("span",{className:"text-[var(--color-text)]",children:e.status})]})]})]})}function X1(e,t){if(!e)return"";const n=new Date(e),a=Date.now()-n.getTime();return a<6e4?t("kanban.time.justNow"):a<36e5?t("kanban.time.minutes",{n:Math.floor(a/6e4)}):a<864e5?t("kanban.time.hours",{n:Math.floor(a/36e5)}):n.toLocaleDateString()}function iP(e){if(!e)return;const t=new Date(e),n=a=>String(a).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function aP(){return It("/api/processes").then(e=>e.data)}function rP(e){return vA(`/api/processes/${e}/kill`)}const sP="border-[3px] border-[var(--color-text)] rounded-2xl bg-white shadow-[4px_4px_0_var(--color-text)]";function lP({p:e}){const t=e.alive?e.sessionState??"alive":"offline",n=e.alive?"bg-[var(--color-accent-mint)]":"bg-[var(--color-bg-cream)] text-[var(--color-text)]/60";return f.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-lg border-2 border-[var(--color-text)] text-xs font-bold font-[family-name:var(--font-mono)] ${n}`,children:[f.jsx("span",{className:`w-2 h-2 rounded-full ${e.alive?"bg-green-600":"bg-gray-400"}`}),t]})}function oP(){const e=ze(),t=En(),[n,a]=A.useState(null),s=rt({queryKey:["processes"],queryFn:aP,refetchInterval:5e3}),o=Mn({mutationFn:rP,onSuccess:h=>{a(h.message),t.invalidateQueries({queryKey:["processes"]})},onError:h=>a(h instanceof Error?h.message:String(h))}),c=s.data??[],d=c.filter(h=>h.alive).length;return f.jsxs("div",{className:"p-6 max-w-[1100px] mx-auto",children:[f.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[f.jsx(rk,{size:22,strokeWidth:2.5}),f.jsx("h1",{className:"font-[family-name:var(--font-heading)] font-bold text-2xl",children:e("processes.title")}),f.jsxs("button",{type:"button","aria-label":e("processes.refresh"),onClick:()=>t.invalidateQueries({queryKey:["processes"]}),className:"ml-auto inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl border-2 border-[var(--color-text)] bg-white text-sm font-semibold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px focus-visible:outline focus-visible:outline-2",children:[s.isFetching?f.jsx(jt,{size:15,className:"animate-spin"}):f.jsx(Er,{size:15}),e("processes.refresh")]})]}),f.jsxs("p",{className:"text-sm text-[var(--color-text)]/70 mb-4",children:[e("processes.subtitle")," · ",e("processes.aliveCount").replace("{n}",String(d)).replace("{total}",String(c.length))]}),n&&f.jsx("div",{className:"mb-3 px-3 py-2 rounded-xl border-2 border-[var(--color-text)] bg-[var(--color-bg-cream)] text-sm font-mono",children:n}),f.jsx("div",{className:`${sP} overflow-hidden`,children:f.jsxs("table",{className:"w-full text-sm",children:[f.jsx("thead",{className:"bg-[var(--color-bg-cream)] font-[family-name:var(--font-heading)]",children:f.jsxs("tr",{className:"text-left",children:[f.jsx("th",{className:"px-3 py-2",children:e("processes.col.slot")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.project")}),f.jsx("th",{className:"px-3 py-2",children:"PID"}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.state")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.memory")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.action")})]})}),f.jsxs("tbody",{className:"font-[family-name:var(--font-mono)]",children:[c.length===0&&f.jsx("tr",{children:f.jsx("td",{colSpan:6,className:"px-3 py-6 text-center text-[var(--color-text)]/50",children:e("processes.empty")})}),c.map(h=>f.jsxs("tr",{className:"border-t-2 border-[var(--color-text)]/10",title:h.cwd??"",children:[f.jsx("td",{className:"px-3 py-2 max-w-[260px] truncate",children:h.slot}),f.jsx("td",{className:"px-3 py-2",children:h.project??"—"}),f.jsx("td",{className:"px-3 py-2",children:h.pid??"—"}),f.jsx("td",{className:"px-3 py-2",children:f.jsx(lP,{p:h})}),f.jsx("td",{className:"px-3 py-2",children:h.memoryMB!=null?`${h.memoryMB} MB`:"—"}),f.jsx("td",{className:"px-3 py-2",children:h.alive&&h.pid!=null?f.jsxs("button",{type:"button","aria-label":`${e("processes.kill")} ${h.slot}`,onClick:()=>{confirm(e("processes.killConfirm").replace("{slot}",h.slot))&&o.mutate(h.pid)},className:"inline-flex items-center gap-1 px-2.5 py-1 rounded-lg border-2 border-[var(--color-text)] bg-[var(--color-accent-peach)] text-xs font-bold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px active:translate-x-0.5 active:translate-y-0.5 focus-visible:outline focus-visible:outline-2",children:[f.jsx(ak,{size:13})," ",e("processes.kill")]}):f.jsx("span",{className:"text-[var(--color-text)]/40 text-xs",children:"—"})})]},h.slot))]})]})})]})}function cP(e={}){const t=new URLSearchParams;e.project&&t.set("project",e.project),e.action&&t.set("action",e.action);const n=t.toString();return It(`/api/audit${n?`?${n}`:""}`).then(a=>a.data)}const uP="border-[3px] border-[var(--color-text)] rounded-2xl bg-white shadow-[4px_4px_0_var(--color-text)]",dP={create:"bg-[var(--color-accent-mint)]",modify:"bg-[var(--color-accent-yellow)]",delete:"bg-[var(--color-accent-peach)]"};function fP(){const e=ze(),t=En(),[n,a]=A.useState(""),s=rt({queryKey:["audit",n],queryFn:()=>cP(n?{action:n}:{}),refetchInterval:8e3}),o=s.data??[],c=d=>e(`audit.action.${d}`);return f.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto",children:[f.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[f.jsx(uk,{size:22,strokeWidth:2.5}),f.jsx("h1",{className:"font-[family-name:var(--font-heading)] font-bold text-2xl",children:e("audit.title")}),f.jsxs("button",{type:"button","aria-label":e("audit.refresh"),onClick:()=>t.invalidateQueries({queryKey:["audit"]}),className:"ml-auto inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl border-2 border-[var(--color-text)] bg-white text-sm font-semibold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px focus-visible:outline focus-visible:outline-2",children:[s.isFetching?f.jsx(jt,{size:15,className:"animate-spin"}):f.jsx(Er,{size:15}),e("audit.refresh")]})]}),f.jsx("p",{className:"text-sm text-[var(--color-text)]/70 mb-4",children:e("audit.subtitle")}),f.jsx("div",{className:"flex gap-2 mb-3",children:["","create","modify","delete"].map(d=>f.jsx("button",{type:"button","aria-label":d?c(d):e("audit.filter.all"),onClick:()=>a(d),className:`px-3 py-1 rounded-lg border-2 border-[var(--color-text)] text-sm font-bold shadow-[2px_2px_0_var(--color-text)] focus-visible:outline focus-visible:outline-2 ${n===d?"bg-[var(--color-accent-blue)]":"bg-white hover:-translate-x-px hover:-translate-y-px"}`,children:d?c(d):e("audit.filter.all")},d||"all"))}),f.jsx("div",{className:`${uP} overflow-hidden`,children:f.jsxs("table",{className:"w-full text-sm",children:[f.jsx("thead",{className:"bg-[var(--color-bg-cream)] font-[family-name:var(--font-heading)]",children:f.jsxs("tr",{className:"text-left",children:[f.jsx("th",{className:"px-3 py-2",children:e("audit.col.time")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.action")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.project")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.detail")})]})}),f.jsxs("tbody",{className:"font-[family-name:var(--font-mono)]",children:[o.length===0&&f.jsx("tr",{children:f.jsx("td",{colSpan:4,className:"px-3 py-6 text-center text-[var(--color-text)]/50",children:e("audit.empty")})}),o.map((d,h)=>f.jsxs("tr",{className:"border-t-2 border-[var(--color-text)]/10",children:[f.jsx("td",{className:"px-3 py-2 whitespace-nowrap",children:new Date(d.ts).toLocaleString()}),f.jsx("td",{className:"px-3 py-2",children:f.jsx("span",{className:`inline-block px-2 py-0.5 rounded-lg border-2 border-[var(--color-text)] text-xs font-bold ${dP[d.action]}`,children:c(d.action)})}),f.jsx("td",{className:"px-3 py-2",children:d.project}),f.jsx("td",{className:"px-3 py-2 text-[var(--color-text)]/70",children:d.detail??(d.source?`(${d.source})`:"—")})]},`${d.ts}-${h}`))]})]})})]})}function hP(){const e=ze();return f.jsxs("div",{className:"nb-card max-w-2xl mt-12",children:[f.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold mb-2",children:e("notFound.title")}),f.jsx("p",{className:"text-[var(--color-text-muted)] mb-6",children:e("notFound.body")}),f.jsx(ps,{to:"/",className:"nb-btn nb-btn-mint inline-flex",children:e("notFound.home")})]})}function pP(){return f.jsx($A,{children:f.jsx(WC,{children:f.jsxs(xn,{element:f.jsx(FA,{}),children:[f.jsx(xn,{index:!0,element:f.jsx(QC,{to:"/projects",replace:!0})}),f.jsx(xn,{path:"/projects",element:f.jsx(HA,{})}),f.jsx(xn,{path:"/projects/new",element:f.jsx(tj,{})}),f.jsx(xn,{path:"/projects/:name",element:f.jsx(pO,{})}),f.jsx(xn,{path:"/board",element:f.jsx(eD,{})}),f.jsx(xn,{path:"/workers",element:f.jsx(mD,{})}),f.jsx(xn,{path:"/logs",element:f.jsx(vD,{})}),f.jsx(xn,{path:"/skills",element:f.jsx(zB,{})}),f.jsx(xn,{path:"/system",element:f.jsx(PB,{})}),f.jsx(xn,{path:"/processes",element:f.jsx(oP,{})}),f.jsx(xn,{path:"/audit",element:f.jsx(fP,{})}),f.jsx(xn,{path:"/chat",element:f.jsx(uw,{})}),f.jsx(xn,{path:"/chat/:sessionId",element:f.jsx(uw,{})}),f.jsx(xn,{path:"*",element:f.jsx(hP,{})})]})})})}qA();const mP=new zN({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1}}}),Z1=document.getElementById("root");if(!Z1)throw new Error("#root not found");fN.createRoot(Z1).render(f.jsx(A.StrictMode,{children:f.jsx(gA,{children:f.jsx(BN,{client:mP,children:f.jsx(w2,{children:f.jsx(ZA,{children:f.jsx(pP,{})})})})})}));
567
+ …(truncated)`:g)}).catch(g=>{b||d(g instanceof Error?g.message:String(g))}),()=>{b=!0}},[e,t]);const h=pm(e,t),p=t.split(/[\\/]/).pop()??t;return f.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-[rgba(45,55,72,0.6)] p-4",role:"presentation",children:f.jsxs("div",{className:"nb-card bg-[var(--color-bg)] max-w-3xl w-full p-5 flex flex-col",style:{maxHeight:"85vh"},role:"dialog","aria-modal":"true","aria-label":a("chat.attachment.preview.aria",{name:p}),children:[f.jsxs("header",{className:"flex items-center justify-between mb-3 shrink-0",children:[f.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[f.jsx(nT,{size:16,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("h3",{className:"font-[family-name:var(--font-heading)] font-bold text-base truncate",children:p})]}),f.jsx("button",{type:"button",className:"p-1 hover:bg-[var(--color-bg-cream)] rounded flex-shrink-0",onClick:n,"aria-label":a("chat.attachment.close.aria"),children:f.jsx(_i,{size:16,strokeWidth:3})})]}),f.jsx("p",{className:"text-[10px] text-[var(--color-text-muted)] font-[family-name:var(--font-mono)] truncate mb-2 shrink-0",title:t,dir:"rtl",children:t}),f.jsxs("div",{className:"flex-1 overflow-auto border-2 border-[var(--color-text)] rounded-lg bg-[var(--color-bg-cream)] min-h-0",children:[Md(t)&&f.jsx("div",{className:"flex items-center justify-center p-4",children:f.jsx("img",{src:h,alt:`Preview: ${p}`,className:"max-w-full max-h-[60vh] object-contain"})}),dw(t)&&f.jsx("iframe",{src:h,title:`PDF: ${p}`,className:"w-full",style:{height:"60vh",border:0}}),Yp(t)&&f.jsx("pre",{className:"p-3 text-xs font-[family-name:var(--font-mono)] whitespace-pre-wrap break-words",children:c?f.jsx("span",{className:"text-[var(--color-crashed)]",children:a("chat.attachment.readErr",{detail:c})}):s===null?f.jsx("span",{className:"text-[var(--color-text-muted)]",children:a("chat.attachment.loading")}):s}),!Md(t)&&!dw(t)&&!Yp(t)&&f.jsxs("div",{className:"p-6 text-center text-sm text-[var(--color-text-muted)]",children:[f.jsx("p",{className:"mb-3",children:a("chat.attachment.unsupported")}),f.jsx("a",{href:h,download:p,className:"nb-btn nb-btn-primary inline-flex",children:a("chat.attachment.download")})]})]})]})})}function ZB({onCancel:e,onCreate:t}){const n=ze(),[a,s]=A.useState(""),[o,c]=A.useState(""),[d,h]=A.useState(!1),[p,b]=A.useState(!1);A.useEffect(()=>{if(p)return;const v=x=>{x.key==="Escape"&&(x.preventDefault(),e())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[e,p]);const g=async()=>{if(!d){h(!0);try{t({title:a.trim()||void 0,cwd:o.trim()||void 0})}finally{h(!1)}}};return f.jsxs("div",{className:"fixed inset-0 z-40 flex items-center justify-center bg-[rgba(45,55,72,0.4)] p-4",role:"presentation",children:[f.jsxs("div",{className:"nb-card bg-[var(--color-bg)] max-w-md w-full p-5",role:"dialog","aria-modal":"true","aria-label":n("chat.newSession.title.aria"),children:[f.jsxs("header",{className:"flex items-center justify-between mb-4",children:[f.jsx("h2",{className:"font-[family-name:var(--font-heading)] font-bold text-lg",children:n("chat.newSession.title")}),f.jsx("button",{type:"button",className:"p-1 hover:bg-[var(--color-bg-cream)] rounded",onClick:e,"aria-label":n("chat.newSession.close.aria"),children:f.jsx(_i,{size:16,strokeWidth:3})})]}),f.jsxs("div",{className:"flex flex-col gap-4",children:[f.jsxs("div",{children:[f.jsx("label",{htmlFor:"new-session-title",className:"block text-xs font-bold mb-1.5 uppercase tracking-wider",children:n("chat.newSession.field.title")}),f.jsx("input",{id:"new-session-title",type:"text",className:"nb-input w-full",placeholder:n("chat.newSession.field.title.placeholder"),value:a,onChange:v=>s(v.target.value),autoFocus:!0})]}),f.jsxs("div",{children:[f.jsx("label",{htmlFor:"new-session-cwd",className:"block text-xs font-bold mb-1.5 uppercase tracking-wider",children:n("chat.newSession.field.cwd")}),f.jsxs("div",{className:"flex gap-2",children:[f.jsx("input",{id:"new-session-cwd",type:"text",className:"nb-input flex-1 font-[family-name:var(--font-mono)] text-sm",placeholder:"/home/coral/projects/my-app",value:o,onChange:v=>c(v.target.value)}),f.jsxs("button",{type:"button",className:"nb-btn flex-shrink-0",onClick:()=>b(!0),"aria-label":n("chat.newSession.field.cwd.browseAria"),title:n("chat.newSession.field.cwd.browseAria"),children:[f.jsx(lk,{size:14,strokeWidth:2.5}),n("chat.newSession.field.cwd.browse")]})]}),f.jsxs("p",{className:"text-[11px] text-[var(--color-text-muted)] mt-1.5 leading-relaxed",children:[f.jsx(oc,{size:10,strokeWidth:2.5,className:"inline mr-1 -mt-0.5"}),n("chat.newSession.field.cwd.help1")," ",n("chat.newSession.field.cwd.help2")]})]}),f.jsxs("div",{className:"flex gap-2 justify-end pt-2",children:[f.jsx("button",{type:"button",className:"nb-btn",onClick:e,children:n("chat.newSession.cancel")}),f.jsxs("button",{type:"button",className:"nb-btn nb-btn-primary",onClick:g,disabled:d,children:[d?f.jsx(jt,{size:14,strokeWidth:3,className:"animate-spin"}):f.jsx(Bi,{size:14,strokeWidth:3}),n("chat.newSession.create")]})]})]})]}),p&&f.jsx(Zm,{initialPath:o.trim()||void 0,onCancel:()=>b(!1),onSelect:v=>{c(v),b(!1)}})]})}function JB({msg:e,sessionId:t,onPreviewAttachment:n}){const a=ze(),s=e.role==="user",o=e.role==="error",c=e.blocks&&e.blocks.length>0?e.blocks:[{type:"text",text:e.content}],d=e.attachments??[];return f.jsx("div",{className:s?"self-end max-w-3xl":"self-start max-w-3xl",children:f.jsxs("div",{className:["nb-card",s?"bg-[var(--color-secondary)]":o?"bg-[var(--color-crashed-bg)]":"bg-[var(--color-bg)]"].join(" "),children:[f.jsxs("p",{className:"text-xs font-bold uppercase tracking-wider text-[var(--color-text-muted)] mb-2 flex items-center gap-2",children:[a(s?"chat.message.role.you":o?"chat.message.role.error":"chat.message.role.assistant"),f.jsx("span",{className:"font-normal",children:"·"}),f.jsx("span",{className:"font-normal cursor-help",title:iP(e.ts),children:X1(e.ts,a)})]}),f.jsx("div",{className:"flex flex-col gap-2",children:c.map((h,p)=>f.jsx(nP,{block:h},p))}),d.length>0&&t&&f.jsx("div",{className:"mt-3 pt-3 border-t-2 border-dashed border-[var(--color-text)]/30 flex flex-wrap gap-2",children:d.map(h=>f.jsx(eP,{sessionId:t,path:h,onPreview:()=>n(h)},h))}),e.truncated&&f.jsx("p",{className:"mt-3 px-3 py-2 bg-[var(--color-stuck-bg)] border-2 border-[var(--color-stuck)] rounded-lg text-xs text-[var(--color-stuck)] font-bold",children:a("chat.message.truncated")})]})})}function eP({sessionId:e,path:t,onPreview:n}){const a=ze(),s=t.split(/[\\/]/).pop()??t;return Md(t)?f.jsx("button",{type:"button",onClick:n,className:"block rounded-md overflow-hidden border-2 border-[var(--color-text)] hover:shadow-[2px_2px_0_var(--color-text)] transition-shadow",title:a("chat.attachment.previewSimpleTooltip",{name:s}),children:f.jsx("img",{src:pm(e,t),alt:s,className:"block max-h-40 max-w-[12rem] object-cover",loading:"lazy"})}):f.jsxs("button",{type:"button",onClick:n,className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-[var(--color-bg)] border-2 border-[var(--color-text)] text-xs font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-mint)]",title:a("chat.attachment.previewTooltip",{name:s,path:t}),children:[f.jsx(kc,{size:11,strokeWidth:2.5,className:"flex-shrink-0"}),f.jsx("span",{className:"truncate max-w-[200px]",children:s})]})}function tP({pending:e}){const t=(()=>{for(let n=e.blocks.length-1;n>=0;n--)if(e.blocks[n].type==="text")return n;return-1})();return f.jsx("div",{className:"self-start max-w-3xl",children:f.jsxs("div",{className:"nb-card bg-[var(--color-bg)]",children:[f.jsxs("p",{className:"text-xs font-bold uppercase tracking-wider text-[var(--color-text-muted)] mb-2 flex items-center gap-2",children:["assistant",f.jsx("span",{className:"font-normal",children:"·"}),f.jsxs("span",{className:"flex items-center gap-1 font-normal text-[var(--color-running)]",children:[f.jsx(jt,{size:10,strokeWidth:3,className:"animate-spin"}),"streaming"]})]}),f.jsxs("div",{className:"flex flex-col gap-2",children:[e.blocks.length===0&&f.jsx("p",{className:"text-sm text-[var(--color-text-muted)] italic",children:"…"}),e.blocks.map((n,a)=>{if(n.type==="text"){const s=a===t;return f.jsxs("div",{className:"relative",children:[f.jsx(V1,{text:n.displayed}),s&&f.jsx("span",{className:"inline-block w-2 h-4 ml-1 bg-[var(--color-text)] animate-pulse align-middle"})]},a)}return f.jsx(W1,{tool:n},a)})]})]})})}function nP({block:e}){return e.type==="text"?f.jsx(V1,{text:e.text}):f.jsx(W1,{tool:e})}function V1({text:e}){return e?f.jsx("div",{className:"text-sm font-[family-name:var(--font-body)] break-words prose-chat",children:f.jsx(Dg,{remarkPlugins:[Ig],rehypePlugins:[Pg],children:e})}):null}function W1({tool:e}){const[t,n]=A.useState(!1),a=e.status==="completed",s=e.status==="failed",o=!a&&!s;return f.jsxs("div",{className:"border-2 border-[var(--color-text)] rounded-lg overflow-hidden bg-[var(--color-bg-cream)]",children:[f.jsxs("button",{type:"button",onClick:()=>n(c=>!c),className:"w-full flex items-center gap-2 px-3 py-2 text-xs font-[family-name:var(--font-mono)] hover:bg-[var(--color-accent-yellow)] transition-colors",children:[f.jsx(Bd,{size:12,strokeWidth:3,className:["transition-transform",t?"rotate-90":""].join(" ")}),f.jsx(gk,{size:12,strokeWidth:2.5}),f.jsx("span",{className:"font-bold",children:e.kind}),f.jsx("span",{className:"flex-1 text-left text-[var(--color-text-muted)] truncate",children:e.title}),o&&f.jsx(jt,{size:12,strokeWidth:3,className:"animate-spin text-[var(--color-running)]"}),a&&f.jsx(lc,{size:12,strokeWidth:2.5,className:"text-[var(--color-running)]"}),s&&f.jsx(ak,{size:12,strokeWidth:2.5,className:"text-[var(--color-crashed)]"})]}),t&&f.jsxs("div",{className:"px-3 py-2 text-xs font-[family-name:var(--font-mono)] text-[var(--color-text-muted)] border-t-2 border-[var(--color-text)]",children:[f.jsxs("div",{children:["id: ",f.jsx("span",{className:"text-[var(--color-text)]",children:e.id})]}),f.jsxs("div",{children:["status: ",f.jsx("span",{className:"text-[var(--color-text)]",children:e.status})]})]})]})}function X1(e,t){if(!e)return"";const n=new Date(e),a=Date.now()-n.getTime();return a<6e4?t("kanban.time.justNow"):a<36e5?t("kanban.time.minutes",{n:Math.floor(a/6e4)}):a<864e5?t("kanban.time.hours",{n:Math.floor(a/36e5)}):n.toLocaleDateString()}function iP(e){if(!e)return;const t=new Date(e),n=a=>String(a).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function aP(){return It("/api/processes").then(e=>e.data)}function rP(e){return vA(`/api/processes/${e}/kill`)}const sP="border-[3px] border-[var(--color-text)] rounded-2xl bg-white shadow-[4px_4px_0_var(--color-text)]";function lP({p:e}){const t=e.alive?e.sessionState??"alive":"offline",n=e.alive?"bg-[var(--color-accent-mint)]":"bg-[var(--color-bg-cream)] text-[var(--color-text)]/60";return f.jsxs("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-lg border-2 border-[var(--color-text)] text-xs font-bold font-[family-name:var(--font-mono)] ${n}`,children:[f.jsx("span",{className:`w-2 h-2 rounded-full ${e.alive?"bg-green-600":"bg-gray-400"}`}),t]})}function oP(){const e=ze(),t=En(),[n,a]=A.useState(null),s=rt({queryKey:["processes"],queryFn:aP,refetchInterval:5e3}),o=Mn({mutationFn:rP,onSuccess:h=>{a(h.message),t.invalidateQueries({queryKey:["processes"]})},onError:h=>a(h instanceof Error?h.message:String(h))}),c=s.data??[],d=c.filter(h=>h.alive).length;return f.jsxs("div",{className:"max-w-full",children:[f.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[f.jsx(rk,{size:22,strokeWidth:2.5}),f.jsx("h1",{className:"font-[family-name:var(--font-heading)] font-bold text-2xl",children:e("processes.title")}),f.jsxs("button",{type:"button","aria-label":e("processes.refresh"),onClick:()=>t.invalidateQueries({queryKey:["processes"]}),className:"ml-auto inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl border-2 border-[var(--color-text)] bg-white text-sm font-semibold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px focus-visible:outline focus-visible:outline-2",children:[s.isFetching?f.jsx(jt,{size:15,className:"animate-spin"}):f.jsx(Er,{size:15}),e("processes.refresh")]})]}),f.jsxs("p",{className:"text-sm text-[var(--color-text)]/70 mb-4",children:[e("processes.subtitle")," · ",e("processes.aliveCount").replace("{n}",String(d)).replace("{total}",String(c.length))]}),n&&f.jsx("div",{className:"mb-3 px-3 py-2 rounded-xl border-2 border-[var(--color-text)] bg-[var(--color-bg-cream)] text-sm font-mono",children:n}),f.jsx("div",{className:`${sP} overflow-hidden`,children:f.jsxs("table",{className:"w-full text-sm",children:[f.jsx("thead",{className:"bg-[var(--color-bg-cream)] font-[family-name:var(--font-heading)]",children:f.jsxs("tr",{className:"text-left",children:[f.jsx("th",{className:"px-3 py-2",children:e("processes.col.slot")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.project")}),f.jsx("th",{className:"px-3 py-2",children:"PID"}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.state")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.memory")}),f.jsx("th",{className:"px-3 py-2",children:e("processes.col.action")})]})}),f.jsxs("tbody",{className:"font-[family-name:var(--font-mono)]",children:[c.length===0&&f.jsx("tr",{children:f.jsx("td",{colSpan:6,className:"px-3 py-6 text-center text-[var(--color-text)]/50",children:e("processes.empty")})}),c.map(h=>f.jsxs("tr",{className:"border-t-2 border-[var(--color-text)]/10",title:h.cwd??"",children:[f.jsx("td",{className:"px-3 py-2 max-w-[260px] truncate",children:h.slot}),f.jsx("td",{className:"px-3 py-2",children:h.project??"—"}),f.jsx("td",{className:"px-3 py-2",children:h.pid??"—"}),f.jsx("td",{className:"px-3 py-2",children:f.jsx(lP,{p:h})}),f.jsx("td",{className:"px-3 py-2",children:h.memoryMB!=null?`${h.memoryMB} MB`:"—"}),f.jsx("td",{className:"px-3 py-2",children:h.alive&&h.pid!=null?f.jsxs("button",{type:"button","aria-label":`${e("processes.kill")} ${h.slot}`,onClick:()=>{confirm(e("processes.killConfirm").replace("{slot}",h.slot))&&o.mutate(h.pid)},className:"inline-flex items-center gap-1 px-2.5 py-1 rounded-lg border-2 border-[var(--color-text)] bg-[var(--color-accent-peach)] text-xs font-bold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px active:translate-x-0.5 active:translate-y-0.5 focus-visible:outline focus-visible:outline-2",children:[f.jsx(ak,{size:13})," ",e("processes.kill")]}):f.jsx("span",{className:"text-[var(--color-text)]/40 text-xs",children:"—"})})]},h.slot))]})]})})]})}function cP(e={}){const t=new URLSearchParams;e.project&&t.set("project",e.project),e.action&&t.set("action",e.action);const n=t.toString();return It(`/api/audit${n?`?${n}`:""}`).then(a=>a.data)}const uP="border-[3px] border-[var(--color-text)] rounded-2xl bg-white shadow-[4px_4px_0_var(--color-text)]",dP={create:"bg-[var(--color-accent-mint)]",modify:"bg-[var(--color-accent-yellow)]",delete:"bg-[var(--color-accent-peach)]"};function fP(){const e=ze(),t=En(),[n,a]=A.useState(""),s=rt({queryKey:["audit",n],queryFn:()=>cP(n?{action:n}:{}),refetchInterval:8e3}),o=s.data??[],c=d=>e(`audit.action.${d}`);return f.jsxs("div",{className:"max-w-full",children:[f.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[f.jsx(uk,{size:22,strokeWidth:2.5}),f.jsx("h1",{className:"font-[family-name:var(--font-heading)] font-bold text-2xl",children:e("audit.title")}),f.jsxs("button",{type:"button","aria-label":e("audit.refresh"),onClick:()=>t.invalidateQueries({queryKey:["audit"]}),className:"ml-auto inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl border-2 border-[var(--color-text)] bg-white text-sm font-semibold shadow-[2px_2px_0_var(--color-text)] hover:-translate-x-px hover:-translate-y-px focus-visible:outline focus-visible:outline-2",children:[s.isFetching?f.jsx(jt,{size:15,className:"animate-spin"}):f.jsx(Er,{size:15}),e("audit.refresh")]})]}),f.jsx("p",{className:"text-sm text-[var(--color-text)]/70 mb-4",children:e("audit.subtitle")}),f.jsx("div",{className:"flex gap-2 mb-3",children:["","create","modify","delete"].map(d=>f.jsx("button",{type:"button","aria-label":d?c(d):e("audit.filter.all"),onClick:()=>a(d),className:`px-3 py-1 rounded-lg border-2 border-[var(--color-text)] text-sm font-bold shadow-[2px_2px_0_var(--color-text)] focus-visible:outline focus-visible:outline-2 ${n===d?"bg-[var(--color-accent-blue)]":"bg-white hover:-translate-x-px hover:-translate-y-px"}`,children:d?c(d):e("audit.filter.all")},d||"all"))}),f.jsx("div",{className:`${uP} overflow-hidden`,children:f.jsxs("table",{className:"w-full text-sm",children:[f.jsx("thead",{className:"bg-[var(--color-bg-cream)] font-[family-name:var(--font-heading)]",children:f.jsxs("tr",{className:"text-left",children:[f.jsx("th",{className:"px-3 py-2",children:e("audit.col.time")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.action")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.project")}),f.jsx("th",{className:"px-3 py-2",children:e("audit.col.detail")})]})}),f.jsxs("tbody",{className:"font-[family-name:var(--font-mono)]",children:[o.length===0&&f.jsx("tr",{children:f.jsx("td",{colSpan:4,className:"px-3 py-6 text-center text-[var(--color-text)]/50",children:e("audit.empty")})}),o.map((d,h)=>f.jsxs("tr",{className:"border-t-2 border-[var(--color-text)]/10",children:[f.jsx("td",{className:"px-3 py-2 whitespace-nowrap",children:new Date(d.ts).toLocaleString()}),f.jsx("td",{className:"px-3 py-2",children:f.jsx("span",{className:`inline-block px-2 py-0.5 rounded-lg border-2 border-[var(--color-text)] text-xs font-bold ${dP[d.action]}`,children:c(d.action)})}),f.jsx("td",{className:"px-3 py-2",children:d.project}),f.jsx("td",{className:"px-3 py-2 text-[var(--color-text)]/70",children:d.detail??(d.source?`(${d.source})`:"—")})]},`${d.ts}-${h}`))]})]})})]})}function hP(){const e=ze();return f.jsxs("div",{className:"nb-card max-w-2xl mt-12",children:[f.jsx("h1",{className:"font-[family-name:var(--font-heading)] text-4xl font-bold mb-2",children:e("notFound.title")}),f.jsx("p",{className:"text-[var(--color-text-muted)] mb-6",children:e("notFound.body")}),f.jsx(ps,{to:"/",className:"nb-btn nb-btn-mint inline-flex",children:e("notFound.home")})]})}function pP(){return f.jsx($A,{children:f.jsx(WC,{children:f.jsxs(xn,{element:f.jsx(FA,{}),children:[f.jsx(xn,{index:!0,element:f.jsx(QC,{to:"/projects",replace:!0})}),f.jsx(xn,{path:"/projects",element:f.jsx(HA,{})}),f.jsx(xn,{path:"/projects/new",element:f.jsx(tj,{})}),f.jsx(xn,{path:"/projects/:name",element:f.jsx(pO,{})}),f.jsx(xn,{path:"/board",element:f.jsx(eD,{})}),f.jsx(xn,{path:"/workers",element:f.jsx(mD,{})}),f.jsx(xn,{path:"/logs",element:f.jsx(vD,{})}),f.jsx(xn,{path:"/skills",element:f.jsx(zB,{})}),f.jsx(xn,{path:"/system",element:f.jsx(PB,{})}),f.jsx(xn,{path:"/processes",element:f.jsx(oP,{})}),f.jsx(xn,{path:"/audit",element:f.jsx(fP,{})}),f.jsx(xn,{path:"/chat",element:f.jsx(uw,{})}),f.jsx(xn,{path:"/chat/:sessionId",element:f.jsx(uw,{})}),f.jsx(xn,{path:"*",element:f.jsx(hP,{})})]})})})}qA();const mP=new zN({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1}}}),Z1=document.getElementById("root");if(!Z1)throw new Error("#root not found");fN.createRoot(Z1).render(f.jsx(A.StrictMode,{children:f.jsx(gA,{children:f.jsx(BN,{client:mP,children:f.jsx(w2,{children:f.jsx(ZA,{children:f.jsx(pP,{})})})})})}));
@@ -7,8 +7,8 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
  <link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
10
- <script type="module" crossorigin src="/assets/index-MD2KZ6Dd.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-BJcVygZ0.css">
10
+ <script type="module" crossorigin src="/assets/index-DiJJ_AmA.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-BsxZE28I.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coralai/sps-cli",
3
- "version": "0.55.0",
3
+ "version": "0.55.1",
4
4
  "description": "SPS CLI — AI-driven development pipeline orchestrator",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
@@ -1,10 +0,0 @@
1
- pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2
- Theme: GitHub
3
- Description: Light theme as seen on github.com
4
- Author: github.com
5
- Maintainer: @Hirse
6
- Updated: 2021-05-15
7
-
8
- Outdated base version: https://github.com/primer/github-syntax-light
9
- Current colors taken from GitHub's CSS
10
- */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,: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-divide-y-reverse:0;--tw-border-style:solid;--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-outline-style:solid;--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;--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-ease: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:"JetBrains Mono", "SF Mono", Monaco, Consolas, monospace;--color-green-600:oklch(62.7% .194 149.214);--color-gray-400:oklch(70.7% .022 261.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--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);--color-bg:#fff;--color-bg-cream:#fff9f5;--color-text:#2d3748;--color-text-muted:#475569;--color-text-subtle:#64748b;--color-border-light:#e2e8f0;--color-primary:#fdbcb4;--color-secondary:#add8e6;--color-accent-mint:#98ff98;--color-accent-purple:#e6e6fa;--color-accent-yellow:#fff3b0;--color-accent-pink:#ffd1dc;--color-running:#166534;--color-running-bg:#d4f5e4;--color-stuck:#92400e;--color-stuck-bg:#ffe8cf;--color-crashed:#991b1b;--color-crashed-bg:#ffe4e6;--color-idle:#475569;--color-idle-bg:#f1f5f9;--color-cta:#22c55e;--font-heading:"Fredoka", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}}@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%;-moz-tab-size:4;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;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]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg-cream);min-height:100vh;font-size:15px;line-height:1.5}h1,h2,h3,h4,h5{font-family:var(--font-heading);color:var(--color-text);letter-spacing:-.01em;margin:0;font-weight:700}:focus-visible{outline:3px solid var(--color-text);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}}@layer components{.nb-card{background:var(--color-bg);border:3px solid var(--color-text);box-shadow:5px 5px 0 var(--color-text);border-radius:16px;padding:16px}.nb-card-interactive{cursor:pointer;transition:transform .18s ease-out,box-shadow .18s ease-out}.nb-card-interactive:hover{box-shadow:7px 7px 0 var(--color-text);transform:translate(-2px,-2px)}.nb-card-interactive:active{box-shadow:3px 3px 0 var(--color-text);transform:translate(1px,1px)}.nb-btn{border:3px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);box-shadow:3px 3px 0 var(--color-text);-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:700;line-height:20px;transition:transform .12s ease-out,box-shadow .12s ease-out;display:inline-flex}.nb-btn:hover{box-shadow:4px 4px 0 var(--color-text);transform:translate(-1px,-1px)}.nb-btn:active{box-shadow:1px 1px 0 var(--color-text);transform:translate(2px,2px)}.nb-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:2px 2px 0 var(--color-text);transform:none}.nb-btn:disabled:hover{box-shadow:2px 2px 0 var(--color-text);transform:none}.nb-btn-primary{background:var(--color-cta)}.nb-btn-mint{background:var(--color-accent-mint)}.nb-btn-peach{background:var(--color-primary)}.nb-btn-blue{background:var(--color-secondary)}.nb-btn-yellow{background:var(--color-accent-yellow)}.nb-btn-purple{background:var(--color-accent-purple)}.nb-btn-danger{background:var(--color-crashed);color:#fff}.nb-input{border:3px solid var(--color-text);background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);box-shadow:3px 3px 0 var(--color-text);border-radius:12px;padding:10px 16px;font-size:14px;font-weight:500;line-height:20px;transition:transform .12s,box-shadow .12s}.nb-input:focus{box-shadow:4px 4px 0 var(--color-text);outline:none;transform:translate(-1px,-1px)}.nb-badge{border:2px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);border-radius:9999px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:700;line-height:16px;display:inline-flex}.nb-status{border:2px solid var(--color-text);font-family:var(--font-body);color:var(--color-text);border-radius:9999px;align-items:center;gap:5px;padding:4px 10px 4px 9px;font-size:11px;font-weight:700;line-height:16px;display:inline-flex}.nb-status:before{content:"";border:1.5px solid var(--color-text);background:currentColor;border-radius:50%;width:8px;height:8px}.prose-chat{color:var(--color-text);line-height:1.6}.prose-chat>:first-child{margin-top:0}.prose-chat>:last-child{margin-bottom:0}.prose-chat h1{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.5rem;font-weight:700}.prose-chat h2{font-family:var(--font-heading);margin:1em 0 .5em;font-size:1.25rem;font-weight:700}.prose-chat h3{font-family:var(--font-heading);margin:.8em 0 .4em;font-size:1.1rem;font-weight:700}.prose-chat h4,.prose-chat h5,.prose-chat h6{font-family:var(--font-heading);margin:.8em 0 .3em;font-weight:700}.prose-chat p{margin:.6em 0}.prose-chat ul,.prose-chat ol{margin:.6em 0;padding-left:1.6em}.prose-chat ul{list-style:outside}.prose-chat ol{list-style:decimal}.prose-chat li,.prose-chat li>ul,.prose-chat li>ol{margin:.2em 0}.prose-chat code{font-family:var(--font-mono);background:var(--color-bg-cream);border:1.5px solid var(--color-text);border-radius:4px;padding:0 4px;font-size:.9em}.prose-chat pre{background:var(--color-bg-cream);border:2px solid var(--color-text);font-family:var(--font-mono);border-radius:8px;margin:.8em 0;padding:12px;font-size:.85em;line-height:1.45;overflow-x:auto}.prose-chat pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose-chat blockquote{border-left:3px solid var(--color-text);color:var(--color-text-muted);margin:.8em 0;padding-left:1em}.prose-chat table{border-collapse:collapse;border:2px solid var(--color-text);border-radius:8px;margin:.8em 0;overflow:hidden}.prose-chat th,.prose-chat td{border:1px solid var(--color-text);text-align:left;padding:6px 10px}.prose-chat th{background:var(--color-bg-cream);font-weight:700}.prose-chat a{color:var(--color-running);text-underline-offset:2px;text-decoration:underline}.prose-chat a:hover{color:var(--color-text)}.prose-chat hr{border:0;border-top:2px dashed var(--color-text);margin:1em 0}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.left-0{left:calc(var(--spacing) * 0)}.left-3{left:calc(var(--spacing) * 3)}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.row-span-1{grid-row:span 1/span 1}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.mx-auto{margin-inline:auto}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.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-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.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-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.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-10{height:calc(var(--spacing) * 10)}.h-20{height:calc(var(--spacing) * 20)}.h-\[calc\(100vh-140px\)\]{height:calc(100vh - 140px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[280px\]{min-height:280px}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.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-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[12rem\]{max-width:12rem}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[260px\]{max-width:260px}.max-w-\[1000px\]{max-width:1000px}.max-w-\[1100px\]{max-width:1100px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[130px\]{min-width:130px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.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-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[100px_60px_1fr\]{grid-template-columns:100px 60px 1fr}.grid-cols-\[100px_90px_60px_1fr\]{grid-template-columns:100px 90px 60px 1fr}.grid-cols-\[160px_1fr\]{grid-template-columns:160px 1fr}.grid-cols-\[220px_1fr\]{grid-template-columns:220px 1fr}.grid-cols-\[240px_1fr\]{grid-template-columns:240px 1fr}.grid-cols-\[260px_1fr\]{grid-template-columns:260px 1fr}.grid-cols-\[repeat\(auto-fill\,minmax\(280px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-rows-\[1fr_40px\]{grid-template-rows:1fr 40px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.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)))}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y-2>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(2px * var(--tw-divide-y-reverse));border-bottom-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:#2d374833}@supports (color:color-mix(in lab,red,red)){:where(.divide-\[var\(--color-text\)\]\/20>:not(:last-child)){border-color:color-mix(in oklab,var(--color-text) 20%,transparent)}}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.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-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-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-\[1\.5px\]{border-top-style:var(--tw-border-style);border-top-width:1.5px}.border-t-\[3px\]{border-top-style:var(--tw-border-style);border-top-width:3px}.border-r-\[3px\]{border-right-style:var(--tw-border-style);border-right-width:3px}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--color-border-light\)\]{border-color:var(--color-border-light)}.border-\[var\(--color-cta\)\]{border-color:var(--color-cta)}.border-\[var\(--color-running\)\]{border-color:var(--color-running)}.border-\[var\(--color-stuck\)\]{border-color:var(--color-stuck)}.border-\[var\(--color-text\)\]{border-color:var(--color-text)}.border-\[var\(--color-text\)\]\/10{border-color:#2d37481a}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/10{border-color:color-mix(in oklab,var(--color-text) 10%,transparent)}}.border-\[var\(--color-text\)\]\/30{border-color:#2d37484d}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-text\)\]\/30{border-color:color-mix(in oklab,var(--color-text) 30%,transparent)}}.border-transparent{border-color:#0000}.bg-\[rgba\(45\,55\,72\,0\.4\)\]{background-color:#2d374866}.bg-\[rgba\(45\,55\,72\,0\.5\)\]{background-color:#2d374880}.bg-\[rgba\(45\,55\,72\,0\.6\)\]{background-color:#2d374899}.bg-\[var\(--color-accent-blue\)\]{background-color:var(--color-accent-blue)}.bg-\[var\(--color-accent-mint\)\]{background-color:var(--color-accent-mint)}.bg-\[var\(--color-accent-peach\)\]{background-color:var(--color-accent-peach)}.bg-\[var\(--color-accent-purple\)\]{background-color:var(--color-accent-purple)}.bg-\[var\(--color-accent-yellow\)\]{background-color:var(--color-accent-yellow)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-cream\)\]{background-color:var(--color-bg-cream)}.bg-\[var\(--color-border-light\)\]{background-color:var(--color-border-light)}.bg-\[var\(--color-crashed\)\]{background-color:var(--color-crashed)}.bg-\[var\(--color-crashed-bg\)\]{background-color:var(--color-crashed-bg)}.bg-\[var\(--color-cta\)\]{background-color:var(--color-cta)}.bg-\[var\(--color-primary\)\]{background-color:var(--color-primary)}.bg-\[var\(--color-running-bg\)\]{background-color:var(--color-running-bg)}.bg-\[var\(--color-secondary\)\]{background-color:var(--color-secondary)}.bg-\[var\(--color-stuck\)\]{background-color:var(--color-stuck)}.bg-\[var\(--color-stuck-bg\)\]{background-color:var(--color-stuck-bg)}.bg-\[var\(--color-text\)\]{background-color:var(--color-text)}.bg-\[var\(--color-text-subtle\)\]{background-color:var(--color-text-subtle)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-600{background-color:var(--color-green-600)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.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-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.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)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.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-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.font-\[family-name\:var\(--font-body\)\]{font-family:var(--font-body)}.font-\[family-name\:var\(--font-heading\)\]{font-family:var(--font-heading)}.font-\[family-name\:var\(--font-mono\)\],.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--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-\[12px\]{font-size:12px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-bg\)\]{color:var(--color-bg)}.text-\[var\(--color-crashed\)\]{color:var(--color-crashed)}.text-\[var\(--color-running\)\]{color:var(--color-running)}.text-\[var\(--color-stuck\)\]{color:var(--color-stuck)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.text-\[var\(--color-text\)\]\/40{color:#2d374866}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/40{color:color-mix(in oklab,var(--color-text) 40%,transparent)}}.text-\[var\(--color-text\)\]\/50{color:#2d374880}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/50{color:color-mix(in oklab,var(--color-text) 50%,transparent)}}.text-\[var\(--color-text\)\]\/60{color:#2d374899}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/60{color:color-mix(in oklab,var(--color-text) 60%,transparent)}}.text-\[var\(--color-text\)\]\/70{color:#2d3748b3}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--color-text\)\]\/70{color:color-mix(in oklab,var(--color-text) 70%,transparent)}}.text-\[var\(--color-text-muted\)\]{color:var(--color-text-muted)}.text-\[var\(--color-text-subtle\)\]{color:var(--color-text-subtle)}.normal-case{text-transform:none}.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}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.accent-\[var\(--color-cta\)\]{accent-color:var(--color-cta)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.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-\[1px_1px_0_var\(--color-text\)\]{--tw-shadow:1px 1px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0_var\(--color-text\)\]{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[3px_3px_0_var\(--color-text\)\]{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[4px_4px_0_var\(--color-cta\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-cta));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[4px_4px_0_var\(--color-text\)\]{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[5px_5px_0_var\(--color-text\)\]{--tw-shadow:5px 5px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-nb{--tw-shadow:5px 5px 0 var(--tw-shadow-color,#2d3748);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + 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-\[var\(--color-text\)\]{--tw-ring-color:var(--color-text)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;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-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:-translate-x-0\.5:hover{--tw-translate-x:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-x-px:hover{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-\[var\(--color-text\)\]:hover{border-color:var(--color-text)}.hover\:bg-\[var\(--color-accent-mint\)\]:hover{background-color:var(--color-accent-mint)}.hover\:bg-\[var\(--color-accent-yellow\)\]:hover{background-color:var(--color-accent-yellow)}.hover\:bg-\[var\(--color-bg-cream\)\]:hover{background-color:var(--color-bg-cream)}.hover\:text-\[var\(--color-crashed\)\]:hover{color:var(--color-crashed)}.hover\:text-\[var\(--color-text\)\]:hover{color:var(--color-text)}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[2px_2px_0_var\(--color-text\)\]:hover{--tw-shadow:2px 2px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[3px_3px_0_var\(--color-text\)\]:hover{--tw-shadow:3px 3px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[4px_4px_0_var\(--color-text\)\]:hover{--tw-shadow:4px 4px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[5px_5px_0_var\(--color-text\)\]:hover{--tw-shadow:5px 5px 0 var(--tw-shadow-color,var(--color-text));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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-visible\:ring-\[var\(--color-text\)\]:focus-visible{--tw-ring-color:var(--color-text)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.active\:translate-x-0\.5:active{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-0\.5:active{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}}@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-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@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}@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-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}