@agent-plan/server 0.2.22-next.0 → 0.2.22-next.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-plan/server",
3
- "version": "0.2.22-next.0",
3
+ "version": "0.2.22-next.2",
4
4
  "private": false,
5
5
  "description": "Local HTTP/WebSocket server for Agent Plan dashboards and planner APIs.",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  "@hono/node-server": "^1.14.0",
42
42
  "hono": "^4.7.0",
43
43
  "ws": "^8.18.0",
44
- "@agent-plan/core": "0.2.22-next.0"
44
+ "@agent-plan/core": "0.2.22-next.2"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/ws": "^8.18.0"
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap";/*! tailwindcss v4.3.1 | 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-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--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 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-xl:24px;--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-status-draft:#94a3b8;--color-status-discovery:#6366f1;--color-status-planned:#0ea5e9;--color-status-in-progress:#f59e0b;--color-status-paused:#ea580c;--color-status-done:#22c55e;--color-status-blocked:#ef4444;--color-status-canceled:#94a3b8;--color-status-waiting:#64748b;--color-status-deferred:#8b5cf6;--color-status-rejected:#f43f5e;--color-status-started:#6366f1;--color-status-closed:#0d9488}}@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}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[150\]{z-index:150}.z-\[200\]{z-index:200}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing) * 2)}.my-1{margin-block:var(--spacing)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-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-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-px{height:1px}.max-h-\[32dvh\]{max-height:32dvh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.min-h-0{min-height:0}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-52{width:calc(var(--spacing) * 52)}.w-\[1px\]{width:1px}.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-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-0{rotate:0deg}.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)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.scroll-mt-28{scroll-margin-top:calc(var(--spacing) * 28)}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:var(--spacing)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[24px\]{border-radius:24px}.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-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[color\:color-mix\(in_srgb\,var\(--color-status-done\)_0\%\,transparent\)\]{border-color:#0000}@supports (color:color-mix(in lab,red,red)){.border-\[color\:color-mix\(in_srgb\,var\(--color-status-done\)_0\%\,transparent\)\]{border-color:color-mix(in srgb,var(--color-status-done) 0%,transparent)}}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-strong\)\]{border-color:var(--border-strong)}.border-\[var\(--danger-soft\)\]{border-color:var(--danger-soft)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-transparent{border-color:#0000}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_8\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_8\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 8%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_10\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_10\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 10%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_12\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_12\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 12%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_16\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_16\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 16%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_18\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_18\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 18%,transparent)}}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--accent-soft\)\]{background-color:var(--accent-soft)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--danger-soft\)\],.bg-\[var\(--danger-soft\)\]\/50{background-color:var(--danger-soft)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--danger-soft\)\]\/50{background-color:color-mix(in oklab,var(--danger-soft) 50%,transparent)}}.bg-\[var\(--surface\)\]{background-color:var(--surface)}.bg-\[var\(--surface-card\)\]{background-color:var(--surface-card)}.bg-\[var\(--surface-elevated\)\],.bg-\[var\(--surface-elevated\)\]\/95{background-color:var(--surface-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface-elevated\)\]\/95{background-color:color-mix(in oklab,var(--surface-elevated) 95%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-current{background-color:currentColor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.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-5{padding-inline:calc(var(--spacing) * 5)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.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-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pl-1{padding-left:var(--spacing)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-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-\[0\.95em\]{font-size:.95em}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-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-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.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\(--accent\)\]{color:var(--accent)}.text-\[var\(--color-status-blocked\)\]{color:var(--color-status-blocked)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-subtle\)\]{color:var(--text-subtle)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-\[var\(--accent\)\]{accent-color:var(--accent)}.opacity-60{opacity:.6}.shadow-sm{--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-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[color\:color-mix\(in_srgb\,var\(--accent\)_55\%\,transparent\)\]{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.ring-\[color\:color-mix\(in_srgb\,var\(--accent\)_55\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--accent) 55%,transparent)}}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-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-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-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))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:border-\[var\(--accent\)\]:is(:where(.group):hover *){border-color:var(--accent)}.group-hover\:text-\[var\(--accent\)\]:is(:where(.group):hover *){color:var(--accent)}.hover\:border-\[var\(--accent\)\]:hover{border-color:var(--accent)}.hover\:bg-\[color-mix\(in_srgb\,var\(--danger-soft\)_88\%\,black_12\%\)\]:hover{background-color:var(--danger-soft)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_srgb\,var\(--danger-soft\)_88\%\,black_12\%\)\]:hover{background-color:color-mix(in srgb,var(--danger-soft) 88%,black 12%)}}.hover\:bg-\[var\(--accent\)\]:hover{background-color:var(--accent)}.hover\:bg-\[var\(--accent-hover\)\]:hover{background-color:var(--accent-hover)}.hover\:bg-\[var\(--accent-soft\)\]:hover{background-color:var(--accent-soft)}.hover\:bg-\[var\(--surface-card\)\]:hover{background-color:var(--surface-card)}.hover\:bg-\[var\(--surface-elevated\)\]:hover,.hover\:bg-\[var\(--surface-elevated\)\]\/65:hover{background-color:var(--surface-elevated)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--surface-elevated\)\]\/65:hover{background-color:color-mix(in oklab,var(--surface-elevated) 65%,transparent)}}.hover\:bg-\[var\(--surface-hover\)\]\/60:hover{background-color:var(--surface-hover)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--surface-hover\)\]\/60:hover{background-color:color-mix(in oklab,var(--surface-hover) 60%,transparent)}}.hover\:bg-\[var\(--surface-strong\)\]:hover{background-color:var(--surface-strong)}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:bg-\[var\(--surface-hover\)\]\/60:focus-visible{background-color:var(--surface-hover)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-\[var\(--surface-hover\)\]\/60:focus-visible{background-color:color-mix(in oklab,var(--surface-hover) 60%,transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--accent\)\]:focus-visible{--tw-ring-color:var(--accent)}.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\:ring-offset-\[var\(--surface\)\]:focus-visible{--tw-ring-offset-color:var(--surface)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:opacity-60:disabled{opacity:.6}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media(min-width:40rem){.sm\:ml-4{margin-left:calc(var(--spacing) * 4)}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-block{display:inline-block}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-9{height:calc(var(--spacing) * 9)}.sm\:min-h-8{min-height:calc(var(--spacing) * 8)}.sm\:min-h-9{min-height:calc(var(--spacing) * 9)}.sm\:min-h-11{min-height:calc(var(--spacing) * 11)}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-9{width:calc(var(--spacing) * 9)}.sm\:w-auto{width:auto}.sm\:flex-1{flex:1}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sm\:rounded-\[10px\]{border-radius:10px}.sm\:rounded-\[12px\]{border-radius:12px}.sm\:rounded-\[14px\]{border-radius:14px}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:48rem){.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-\[calc\(100vh-3rem\)\]{max-height:calc(100vh - 3rem)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_200px_auto_auto\]{grid-template-columns:minmax(0,1fr) 200px auto auto}.md\:grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:justify-end{justify-content:flex-end}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media(min-width:64rem){.lg\:block{display:block}.lg\:contents{display:contents}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,150px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,150px) 124px 44px 44px}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,168px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,168px) 124px 44px 44px}.lg\:items-center{align-items:center}}@media(min-width:80rem){.xl\:block{display:block}.xl\:contents{display:contents}.xl\:hidden{display:none}.xl\:w-auto{width:auto}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,132px\)_minmax\(0\,152px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,132px) minmax(0,152px) 124px 44px 44px}.xl\:items-center{align-items:center}}@media(prefers-color-scheme:dark){.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-rose-400{color:var(--color-rose-400)}.dark\:text-sky-400{color:var(--color-sky-400)}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:h-1\.5::-webkit-scrollbar{height:calc(var(--spacing) * 1.5)}}:root{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius-panel:24px;--radius-card:20px;--radius-input:14px;--container-width:1180px;--surface-blur:18px;--bg-base:#f8fafc;--bg-gradient-a:#3b82f62e;--bg-gradient-b:#8b5cf629;--surface:#ffffffc2;--surface-strong:#ffffffe6;--surface-elevated:#fffffffa;--border:#94a3b838;--border-strong:#94a3b857;--text:#0f172a;--text-muted:#475569;--text-subtle:#64748b;--accent:#6366f1;--accent-soft:#6366f124;--accent-hover:#4f46e5;--danger-soft:#ef44441f;--color-entity-feature:#8b5cf6;--color-entity-phase:#06b6d4;--color-entity-task:#10b981;--shadow-panel:0 20px 60px -24px #0f172a38;--shadow-card:0 12px 30px -18px #0f172a2e;color-scheme:light}[data-theme=dark]{--bg-base:#08111f;--bg-gradient-a:#3b82f61f;--bg-gradient-b:#8b5cf624;--surface:#0f172abd;--surface-strong:#0f172ae0;--surface-elevated:#0f172af5;--border:#94a3b824;--border-strong:#94a3b847;--text:#f8fafc;--text-muted:#94a3b8;--text-subtle:#64748b;--accent:#818cf8;--accent-soft:#818cf829;--accent-hover:#6366f1;--danger-soft:#ef44442e;--color-entity-feature:#a78bfa;--color-entity-phase:#22d3ee;--color-entity-task:#34d399;--shadow-panel:0 20px 60px -24px #0009;--shadow-card:0 12px 30px -18px #0000006b;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-sans);color:var(--text);background-color:var(--bg-base);background-image:radial-gradient(50% 55% at 0% 0%,var(--bg-gradient-a) 0%,transparent 70%),radial-gradient(42% 48% at 100% 0%,var(--bg-gradient-b) 0%,transparent 64%);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;line-height:1.5}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.page-shell{min-height:100vh}.page-container{width:min(100% - 3rem,var(--container-width));margin-inline:auto}.grid>*,.formatted-text{min-width:0}.formatted-text p,.formatted-text li,.formatted-text blockquote,.formatted-text a,.formatted-text code{overflow-wrap:anywhere}.surface-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);-webkit-backdrop-filter:blur(var(--surface-blur)) saturate(140%);box-shadow:var(--shadow-panel)}.surface-card{background:var(--surface-strong);border-radius:var(--radius-card);-webkit-backdrop-filter:blur(14px)saturate(130%);box-shadow:var(--shadow-card)}.field-control{border-radius:var(--radius-input);border:1px solid var(--border-strong);background:var(--surface-elevated);width:100%;min-height:48px;color:var(--text);outline:none;padding:.75rem .95rem}.field-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-textarea{resize:vertical;min-height:120px}.status-chip{border:1px solid var(--border-strong);letter-spacing:.02em;text-transform:capitalize;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .65rem;font-size:.72rem;font-weight:700;display:inline-flex}.status-draft{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-draft{background:color-mix(in srgb,var(--color-status-draft) 14%,transparent)}}.status-draft{color:var(--color-status-draft)}.status-discovery{background:#6366f124}@supports (color:color-mix(in lab,red,red)){.status-discovery{background:color-mix(in srgb,var(--color-status-discovery) 14%,transparent)}}.status-discovery{color:var(--color-status-discovery)}.status-planned{background:#0ea5e924}@supports (color:color-mix(in lab,red,red)){.status-planned{background:color-mix(in srgb,var(--color-status-planned) 14%,transparent)}}.status-planned{color:var(--color-status-planned)}.status-in-progress{background:#f59e0b29}@supports (color:color-mix(in lab,red,red)){.status-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 16%,transparent)}}.status-in-progress{color:var(--color-status-in-progress)}.status-paused{background:#ea580c24}@supports (color:color-mix(in lab,red,red)){.status-paused{background:color-mix(in srgb,var(--color-status-paused) 14%,transparent)}}.status-paused{color:var(--color-status-paused)}.status-done{background:#22c55e29}@supports (color:color-mix(in lab,red,red)){.status-done{background:color-mix(in srgb,var(--color-status-done) 16%,transparent)}}.status-done{color:var(--color-status-done)}.status-blocked{background:#ef444426}@supports (color:color-mix(in lab,red,red)){.status-blocked{background:color-mix(in srgb,var(--color-status-blocked) 15%,transparent)}}.status-blocked{color:var(--color-status-blocked)}.status-canceled{background:#94a3b81f}@supports (color:color-mix(in lab,red,red)){.status-canceled{background:color-mix(in srgb,var(--color-status-canceled) 12%,transparent)}}.status-canceled{color:var(--color-status-canceled)}.status-rejected{background:#f43f5e1f}@supports (color:color-mix(in lab,red,red)){.status-rejected{background:color-mix(in srgb,var(--color-status-rejected) 12%,transparent)}}.status-rejected{color:var(--color-status-rejected)}.status-deferred{background:#8b5cf61f}@supports (color:color-mix(in lab,red,red)){.status-deferred{background:color-mix(in srgb,var(--color-status-deferred) 12%,transparent)}}.status-deferred{color:var(--color-status-deferred)}.status-waiting{background:#64748b1f}@supports (color:color-mix(in lab,red,red)){.status-waiting{background:color-mix(in srgb,var(--color-status-waiting) 12%,transparent)}}.status-waiting{color:var(--color-status-waiting)}.status-started{background:#6366f11a}@supports (color:color-mix(in lab,red,red)){.status-started{background:color-mix(in srgb,var(--color-status-started) 10%,transparent)}}.status-started{color:var(--color-status-started)}.status-closed{background:#0d94881f}@supports (color:color-mix(in lab,red,red)){.status-closed{background:color-mix(in srgb,var(--color-status-closed) 12%,transparent)}}.status-closed{color:var(--color-status-closed)}.status-pattern-dashed{border-style:dashed;border-color:#6366f1b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed{border-color:color-mix(in srgb,var(--color-status-started) 70%,transparent)}}.status-pattern-dashed-planned{border-style:dashed;border-color:#0ea5e9a6}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-planned{border-color:color-mix(in srgb,var(--color-status-planned) 65%,transparent)}}.status-pattern-dashed-started{border-style:dashed;border-color:#6366f1b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-started{border-color:color-mix(in srgb,var(--color-status-started) 70%,transparent)}}.status-pattern-dashed-paused{border-style:dashed;border-color:#ea580cb3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-paused{border-color:color-mix(in srgb,var(--color-status-paused) 70%,transparent)}}.status-pattern-dashed-waiting{border-style:dashed;border-color:#64748bb3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-waiting{border-color:color-mix(in srgb,var(--color-status-waiting) 70%,transparent)}}.status-pattern-dashed-deferred{border-style:dashed;border-color:#8b5cf6b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-deferred{border-color:color-mix(in srgb,var(--color-status-deferred) 70%,transparent)}}@keyframes ap-status-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-status-in-progress) 40%,transparent)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-status-in-progress) 12%,transparent)}}.status-pattern-pulse{animation:2s ease-in-out infinite ap-status-pulse}.status-pattern-stripe{background-image:repeating-linear-gradient(135deg,#0000 0,#0000 10px,#0d948814 10px,#0d948814 20px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-stripe{background-image:repeating-linear-gradient(135deg,transparent 0 10px,color-mix(in srgb,var(--color-status-closed) 8%,transparent) 10px 20px)}}.status-pattern-hatch{background-image:repeating-linear-gradient(45deg,#0000 0,#0000 8px,#94a3b814 8px,#94a3b814 16px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-hatch{background-image:repeating-linear-gradient(45deg,transparent 0 8px,color-mix(in srgb,var(--color-status-canceled) 8%,transparent) 8px 16px)}}.status-pattern-crosshatch{background-image:repeating-linear-gradient(45deg,#0000 0,#0000 4px,#f43f5e14 4px,#f43f5e14 8px),repeating-linear-gradient(-45deg,#0000 0,#0000 4px,#f43f5e14 4px,#f43f5e14 8px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-crosshatch{background-image:repeating-linear-gradient(45deg,transparent 0 4px,color-mix(in srgb,var(--color-status-rejected) 8%,transparent) 4px 8px),repeating-linear-gradient(-45deg,transparent 0 4px,color-mix(in srgb,var(--color-status-rejected) 8%,transparent) 4px 8px)}}@media(prefers-reduced-motion:reduce){.status-pattern-pulse{animation:none}}.plan-description{background:var(--surface-elevated);border-left:3px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.plan-description{border-left:3px solid color-mix(in srgb,var(--accent) 55%,transparent)}}.plan-description{border-radius:var(--radius-card);color:var(--text);padding:.85rem 1rem}.plan-description p{margin:0}.entity-badge{border:1px solid var(--border-strong);letter-spacing:.03em;text-transform:uppercase;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.72rem;font-weight:800;display:inline-flex}.entity-badge--feature{color:var(--color-entity-feature);background:var(--color-entity-feature)}@supports (color:color-mix(in lab,red,red)){.entity-badge--feature{background:color-mix(in srgb,var(--color-entity-feature) 14%,transparent)}}.entity-badge--phase{color:var(--color-entity-phase);background:var(--color-entity-phase)}@supports (color:color-mix(in lab,red,red)){.entity-badge--phase{background:color-mix(in srgb,var(--color-entity-phase) 14%,transparent)}}.entity-badge--task{color:var(--color-entity-task);background:var(--color-entity-task)}@supports (color:color-mix(in lab,red,red)){.entity-badge--task{background:color-mix(in srgb,var(--color-entity-task) 14%,transparent)}}.entity-badge--requirement{color:var(--accent);background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.entity-badge--requirement{background:color-mix(in srgb,var(--accent) 14%,transparent)}}.entity-link--feature{color:var(--color-entity-feature)}.entity-link--phase{color:var(--color-entity-phase)}.entity-link--task{color:var(--color-entity-task)}.entity-path-badge{border:1px solid var(--border-strong);background:var(--surface-elevated);font-variant-numeric:tabular-nums;border-radius:7px;align-items:stretch;line-height:1;display:inline-flex;overflow:hidden}.entity-path-seg{letter-spacing:.02em;align-items:center;padding:.24rem .5rem;font-size:.72rem;font-weight:800;display:inline-flex}.entity-path-seg--feature{color:var(--color-entity-feature);background:var(--color-entity-feature)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--feature{background:color-mix(in srgb,var(--color-entity-feature) 14%,transparent)}}.entity-path-seg--phase{color:var(--color-entity-phase);background:var(--color-entity-phase)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--phase{background:color-mix(in srgb,var(--color-entity-phase) 14%,transparent)}}.entity-path-seg--task{color:var(--color-entity-task);background:var(--color-entity-task)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--task{background:color-mix(in srgb,var(--color-entity-task) 14%,transparent)}}.entity-path-seg--link{cursor:pointer;text-decoration:none;transition:filter .15s,transform 50ms}.entity-path-seg--link:hover{filter:brightness(1.15)}.entity-path-seg--link:active{transform:translateY(1px)}.entity-path-seg--link:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.entity-path-sep{color:var(--text-subtle);align-items:center;padding-inline:.2rem;font-size:.72rem;font-weight:700;display:inline-flex}.copyable-id{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;border-radius:8px;padding:0}.copyable-id:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.copyable-id__icon{opacity:.4;align-items:center;transition:opacity .15s;display:inline-flex}.copyable-id:hover .copyable-id__icon,.copyable-id:focus-visible .copyable-id__icon{opacity:1}.handoff-badge{border:1px solid var(--border);background:var(--surface-card);color:var(--text-muted);border-radius:9999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.6875rem;line-height:1.1;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.handoff-badge:hover{background:var(--surface-elevated);color:var(--text);border-color:var(--accent)}.handoff-badge svg{flex:none}.handoff-badge__label{white-space:nowrap;font-weight:500}@media(max-width:640px){:root{font-size:106.25%}}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}button:disabled,select:disabled,input:disabled,textarea:disabled{cursor:not-allowed;opacity:.6}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}@keyframes ap-progress-glow{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-status-in-progress) 0%,transparent)}50%{box-shadow:0 0 18px -2px color-mix(in srgb,var(--color-status-in-progress) 28%,transparent)}}.ap-in-progress{background:#f59e0b12;animation:2.6s ease-in-out infinite ap-progress-glow}@supports (color:color-mix(in lab,red,red)){.ap-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 7%,transparent)}}@keyframes ap-dot-ping{0%{opacity:.85;transform:scale(1)}75%,to{opacity:0;transform:scale(2.6)}}.status-item{border-radius:10px;position:relative;overflow:hidden}.ap-progress-dot{flex:none;width:9px;height:9px;margin-inline:6px;display:inline-block;position:relative;overflow:visible}.ap-progress-dot:before{content:"";background:var(--color-status-in-progress);border-radius:999px;position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 0 8px #f59e0bb3}@supports (color:color-mix(in lab,red,red)){.ap-progress-dot:before{box-shadow:0 0 8px color-mix(in srgb,var(--color-status-in-progress) 70%,transparent)}}.ap-progress-dot:after{content:"";background:var(--color-status-in-progress);transform-origin:50%;border-radius:999px;animation:1.9s cubic-bezier(0,0,.2,1) infinite ap-dot-ping;position:absolute;top:0;right:0;bottom:0;left:0}@media(prefers-reduced-motion:reduce){.ap-in-progress{animation:none}.ap-progress-dot:after{opacity:0;animation:none}}.short-id-badge{font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.04em;color:var(--text-muted);background:var(--accent);border-radius:6px;align-items:center;padding:3px 6px;font-size:10.5px;font-weight:700;line-height:1;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.short-id-badge{background:color-mix(in srgb,var(--accent) 8%,transparent)}}.short-id-badge{border:1px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.short-id-badge{border:1px solid color-mix(in srgb,var(--accent) 24%,transparent)}}.short-id-badge{font-variant-numeric:tabular-nums}.drag-handle{width:28px;height:28px;color:var(--text-subtle);cursor:grab;touch-action:none;opacity:.6;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;transition:opacity .12s,background .12s,color .12s,border-color .12s;display:inline-flex}.drag-handle:hover,.drag-handle:focus-visible{opacity:1;background:var(--surface-elevated);color:var(--text);border-color:var(--border)}.drag-handle:active{cursor:grabbing}.ap-sortable--dragging{opacity:.55;outline:2px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.ap-sortable--dragging{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent)}}.ap-sortable--dragging{outline-offset:2px;border-radius:12px}.ap-drag-overlay{border:1px solid var(--accent);box-shadow:0 12px 32px -8px #0006}@supports (color:color-mix(in lab,red,red)){.ap-drag-overlay{border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}}.ap-drag-overlay{cursor:grabbing;background:var(--surface-elevated);border-radius:12px}.search-bar .ei-placeholder{padding:0 12px}.ap-search-sticky{z-index:20;background:var(--surface-elevated);-webkit-backdrop-filter:saturate(180%)blur(10px);border-bottom:1px solid var(--border);margin-bottom:.75rem;padding-bottom:.5rem;position:sticky;top:0}.status-card-stepper{flex-wrap:wrap;align-items:center;gap:.15rem;min-width:0;display:flex}.status-card{border:1px solid var(--border-strong);background:var(--surface);opacity:.75;border-radius:.5rem;align-items:center;gap:.3rem;min-width:0;padding:.3rem .5rem;display:inline-flex}.status-card.status-card-current{opacity:1;border-width:2px;box-shadow:0 0 0 1px}@supports (color:color-mix(in lab,red,red)){.status-card.status-card-current{box-shadow:0 0 0 1px color-mix(in srgb,currentColor 35%,transparent)}}.status-card-icon{flex-shrink:0;width:.9rem;height:.9rem}.status-card-label{text-transform:capitalize;white-space:nowrap;font-size:.7rem;font-weight:700}.status-card-time{opacity:.8;white-space:nowrap;font-size:.62rem;font-weight:500}.status-card-time-initial{opacity:.6;font-style:italic}.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{background:var(--surface)}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{background:color-mix(in srgb,var(--surface) 60%,transparent)}}.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{border-color:color-mix(in srgb,currentColor 40%,var(--border-strong))}}.status-card.status-in-progress{background:#f59e0b24}@supports (color:color-mix(in lab,red,red)){.status-card.status-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 14%,transparent)}}.status-card.status-in-progress{color:var(--color-status-in-progress)}.status-card.status-paused{background:#ea580c24}@supports (color:color-mix(in lab,red,red)){.status-card.status-paused{background:color-mix(in srgb,var(--color-status-paused) 14%,transparent)}}.status-card.status-paused{color:var(--color-status-paused)}.status-card.status-done{background:#22c55e29}@supports (color:color-mix(in lab,red,red)){.status-card.status-done{background:color-mix(in srgb,var(--color-status-done) 16%,transparent)}}.status-card.status-done{color:var(--color-status-done)}.status-card.status-blocked{background:#ef444429}@supports (color:color-mix(in lab,red,red)){.status-card.status-blocked{background:color-mix(in srgb,var(--color-status-blocked) 16%,transparent)}}.status-card.status-blocked{color:var(--color-status-blocked)}.status-card.status-planned{background:#0ea5e924}@supports (color:color-mix(in lab,red,red)){.status-card.status-planned{background:color-mix(in srgb,var(--color-status-planned) 14%,transparent)}}.status-card.status-planned{color:var(--color-status-planned)}.status-card.status-draft{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft{background:color-mix(in srgb,var(--color-status-draft) 14%,transparent)}}.status-card.status-draft{color:var(--color-status-draft)}.status-card.status-discovery{background:#6366f124}@supports (color:color-mix(in lab,red,red)){.status-card.status-discovery{background:color-mix(in srgb,var(--color-status-discovery) 14%,transparent)}}.status-card.status-discovery{color:var(--color-status-discovery)}.status-card.status-canceled{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-card.status-canceled{background:color-mix(in srgb,var(--color-status-canceled) 14%,transparent)}}.status-card.status-canceled{color:var(--color-status-canceled)}.status-card.status-rejected{background:#f43f5e24}@supports (color:color-mix(in lab,red,red)){.status-card.status-rejected{background:color-mix(in srgb,var(--color-status-rejected) 14%,transparent)}}.status-card.status-rejected{color:var(--color-status-rejected)}.status-card.status-deferred{background:#8b5cf624}@supports (color:color-mix(in lab,red,red)){.status-card.status-deferred{background:color-mix(in srgb,var(--color-status-deferred) 14%,transparent)}}.status-card.status-deferred{color:var(--color-status-deferred)}.status-card.status-waiting{background:#64748b24}@supports (color:color-mix(in lab,red,red)){.status-card.status-waiting{background:color-mix(in srgb,var(--color-status-waiting) 14%,transparent)}}.status-card.status-waiting{color:var(--color-status-waiting)}.status-card.status-card-future{opacity:.55;border-style:dashed!important;border-color:var(--border-strong)!important;color:var(--text-subtle)!important;background:0 0!important}.status-card.status-card-future .status-card-icon{opacity:.6}.status-stepper{align-items:flex-start;gap:0;padding:.9rem 1rem .7rem;display:flex;overflow-x:auto}.status-step{flex-direction:column;flex:1 1 0;align-items:center;gap:.45rem;min-width:5.5rem;display:flex;position:relative}.status-step-label{text-align:center;white-space:nowrap;letter-spacing:.01em;font-size:.68rem;font-weight:700;line-height:1.25}.status-step-date{font-variant-numeric:tabular-nums;color:var(--text-subtle);text-align:center;white-space:nowrap;margin-top:.1rem;font-size:.58rem;line-height:1.2}.status-step--current .status-step-date{color:var(--text-muted)}.status-node{z-index:1;border-radius:9999px;flex-shrink:0;place-items:center;width:2rem;height:2rem;transition:background .2s,box-shadow .2s,border-color .2s;display:grid;position:relative}.status-node-icon{width:1rem;height:1rem}.status-step--completed .status-node{border:2px solid var(--step-color);background:0 0}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-node{border:2px solid color-mix(in srgb,var(--step-color) 45%,transparent)}}.status-step--completed .status-node{color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-node{color:color-mix(in srgb,var(--step-color) 70%,var(--text))}}.status-step--completed .status-step-label{color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-step-label{color:color-mix(in srgb,var(--step-color) 70%,var(--text))}}.status-step--current .status-node{border:2px solid var(--step-color);color:var(--step-color);box-shadow:0 0 0 4px var(--step-color);background:0 0}@supports (color:color-mix(in lab,red,red)){.status-step--current .status-node{box-shadow:0 0 0 4px color-mix(in srgb,var(--step-color) 16%,transparent)}}.status-step--current .status-step-label{color:var(--text);font-weight:800}.status-step--pending .status-node{background:var(--surface);border:2px dashed var(--border-strong);color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--pending .status-node{color:color-mix(in srgb,var(--step-color) 45%,var(--text-subtle))}}.status-step--pending .status-step-label{color:var(--text-subtle)}.status-connector{z-index:0;width:calc(100% - 2rem);height:2px;position:absolute;top:1rem;left:calc(1rem - 50%);transform:translateY(-1px)}.status-connector--traveled{background:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-connector--traveled{background:color-mix(in srgb,var(--step-color) 50%,transparent)}}.status-connector--pending{background:repeating-linear-gradient(90deg,var(--border-strong) 0 5px,transparent 5px 10px)}@media(max-width:640px){.status-step{min-width:4.2rem}.status-step-label{font-size:.62rem}.status-node{width:1.7rem;height:1.7rem}.status-node-icon{width:.85rem;height:.85rem}.status-connector{width:calc(100% - 1.7rem);top:.85rem;left:calc(.85rem - 50%)}}.checklist-num{background:var(--text-subtle);border-radius:.3rem;justify-content:center;align-items:center;min-width:1.6rem;padding:.05rem .3rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.checklist-num{background:color-mix(in srgb,var(--text-subtle) 12%,transparent)}}.checklist-num{color:var(--text-subtle);font-variant-numeric:tabular-nums;letter-spacing:.02em;text-transform:uppercase;margin-right:.15rem;font-size:.62rem;font-weight:800}@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-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-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-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}@keyframes pulse{50%{opacity:.5}}
@@ -273,7 +273,7 @@ Please change the parent <Route path="${R}"> to <Route path="${R==="/"?"*":`${R}
273
273
  *
274
274
  * This source code is licensed under the ISC license.
275
275
  * See the LICENSE file in the root directory of this source tree.
276
- */const jR=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Qb=St("x",jR),TR="/api",CR=120,DR=40;function Zu(t){return{...t,number:t.number??0,decisions:t.decisions??[],acceptedDecisions:t.acceptedDecisions??[],checklist:t.checklist??[],subtasks:t.subtasks??[],pauseSnapshot:t.pauseSnapshot??null,pauseHistory:t.pauseHistory??[],startedAt:t.startedAt??"",completedAt:t.completedAt??"",descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Ju(t){return{...t,discussedAt:t.discussedAt??"",contextReady:t.contextReady??!1,contextReadyReason:t.contextReadyReason??"",notes:t.notes??"",goals:t.goals??[],nonGoals:t.nonGoals??[],dependencies:t.dependencies??[],risks:t.risks??[],openQuestions:t.openQuestions??[],decisions:t.decisions??[],acceptedDecisions:t.acceptedDecisions??[],completionCriteria:t.completionCriteria??[],taskIds:t.taskIds??[],tasks:(t.tasks??[]).map(Zu),linkedRequirements:t.linkedRequirements??[],handoff:t.handoff??"",handoffUpdatedAt:t.handoffUpdatedAt??"",descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Wu(t){return{...t,number:t.number??0,discussedAt:t.discussedAt??"",contextReady:t.contextReady??!1,contextReadyReason:t.contextReadyReason??"",acceptedDecisions:t.acceptedDecisions??[],phaseIds:t.phaseIds??[],descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Kb(t){var a,l,s;return{...t,scope:t.scope??[],outOfScope:t.outOfScope??[],decisions:t.decisions??[],globalRules:t.globalRules??[],technologies:t.technologies??[],tools:t.tools??[],acceptedDecisions:t.acceptedDecisions??[],workDeviations:t.workDeviations??[],planRoot:t.planRoot??"",projectRoot:t.projectRoot??"",workflowRules:{beforePhaseStart:((a=t.workflowRules)==null?void 0:a.beforePhaseStart)??[],beforeTaskStart:((l=t.workflowRules)==null?void 0:l.beforeTaskStart)??[],afterPhaseComplete:((s=t.workflowRules)==null?void 0:s.afterPhaseComplete)??[]}}}function Sm(t){return{...t,description:t.description??"",macroTasks:t.macroTasks??[],linkedPhaseIds:t.linkedPhaseIds??[]}}async function ux(t,a){const l={"Content-Type":"application/json","X-Planner-Source":"web-ui",...a==null?void 0:a.headers};try{return await fetch(`${TR}${t}`,{...a,headers:l})}catch{throw new Response("Planner web server unavailable. Pi or planner-web may have stopped. Restart the planner web UI or Pi, then reload this page.",{status:503,statusText:"Planner web server unavailable"})}}async function Pt(t,a){let l=await ux(t,a),s=0;for(;l.status===503&&s<DR;)await new Promise(c=>setTimeout(c,CR)),s+=1,l=await ux(t,a);if(!l.ok){const c=await l.text().catch(()=>l.statusText);throw new Response(c||l.statusText,{status:l.status,statusText:l.statusText})}return l.json()}async function wm(){return Kb(await Pt("/project"))}async function AR(t){return Kb(await Pt("/project",{method:"PUT",body:JSON.stringify({...t,workDeviations:[]})}))}async function kR(){return Pt("/ui-config")}async function Zb(){return(await Pt("/features")).map(Wu)}async function Vo(t){return Wu(await Pt(`/features/${t}`))}async function OR(t){return Wu(await Pt("/features",{method:"POST",body:JSON.stringify(t)}))}async function Jb(t){return Wu(await Pt(`/features/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function MR(t){return Pt(`/features/${t}`,{method:"DELETE"})}async function Em(){return(await Pt("/requirements")).requirements.map(Sm)}async function _R(t){const a=new Date().toISOString();return Sm(await Pt("/requirements",{method:"POST",body:JSON.stringify({...t,macroTasks:[],createdAt:a,updatedAt:a})}))}async function LR(t){return Sm(await Pt(`/requirements/${t.id}`,{method:"PUT",body:JSON.stringify({...t,updatedAt:new Date().toISOString()})}))}async function zR(t){return Pt(`/requirements/${t}`,{method:"DELETE"})}async function ed(t){const a=t?`?featureId=${encodeURIComponent(t)}`:"";return(await Pt(`/phases${a}`)).map(Ju)}async function td(t){return Ju(await Pt(`/phases/${t}`))}async function UR(t){return Ju(await Pt("/phases",{method:"POST",body:JSON.stringify(t)}))}async function Wb(t){return Ju(await Pt(`/phases/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function BR(t){return Pt(`/phases/${t}`,{method:"DELETE"})}async function HR(t,a){return Zu(await Pt(`/phases/${t}/tasks`,{method:"POST",body:JSON.stringify(a)}))}async function nd(t){return Zu(await Pt(`/tasks/${t}`))}async function Nm(t){return Zu(await Pt(`/tasks/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function $R(t){return Pt(`/tasks/${t}`,{method:"DELETE"})}async function qR(){return Pt("/tasks/active")}async function IR(){const t=await Pt("/tasks/focus");return{active:t.active??[],pendingResume:t.pendingResume??[]}}async function Kh(){return(await Pt("/handoffs")).handoffs??[]}async function PR(){return(await Pt("/handoffs/archive")).archived??[]}async function e0(t){return Pt(`/phases/${t}/handoff`,{method:"DELETE"})}async function VR(t=!1){return Pt(`/export?full=${t?"true":"false"}`)}async function FR(){return Pt("/repair",{method:"POST"})}async function Eh(t,a,l,s){return Pt("/reorder",{method:"POST",body:JSON.stringify({kind:t,movedId:a,beforeId:l,afterId:s})})}function YR(){const[t,a]=v.useState(()=>{if(typeof window>"u")return"dark";const l=window.localStorage.getItem("plan-ui-theme");return l||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")});return v.useEffect(()=>{document.documentElement.setAttribute("data-theme",t),window.localStorage.setItem("plan-ui-theme",t)},[t]),{theme:t,toggleTheme:()=>a(l=>l==="dark"?"light":"dark")}}function GR({liveStatus:t}){const a=t==="live"?{label:"Live",className:"border-emerald-500/30 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",dotClassName:"bg-emerald-500"}:t==="reconnecting"?{label:"Reconnecting…",className:"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-400",dotClassName:"bg-amber-500 animate-pulse"}:t==="disconnected"?{label:"Disconnected",className:"border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-400",dotClassName:"bg-rose-500"}:{label:"Connecting…",className:"border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-400",dotClassName:"bg-sky-500 animate-pulse"};return u.jsxs("span",{className:`inline-flex max-w-full min-h-7 items-center gap-1.5 rounded-[10px] border px-2 py-1 text-xs font-semibold sm:min-h-8 sm:rounded-[12px] sm:px-2.5 sm:py-1.5 sm:text-sm ${a.className}`,children:[u.jsx("span",{className:`h-2 w-2 shrink-0 rounded-full ${a.dotClassName}`}),u.jsx("span",{className:"truncate",children:a.label})]})}function XR({projectName:t,projectRoot:a,planRoot:l,liveStatus:s}){const{theme:c,toggleTheme:o}=YR(),[f,m]=v.useState(!1),[p,g]=v.useState(null),[x,y]=v.useState(!1),N=[{to:"/features",label:"Features",icon:ku},{to:"/requirements",label:"Requirements",icon:Po},{to:"/handoff",label:"Handoff",icon:Xb}];async function w(S){g(S?"full":"summary");try{const R=await VR(S),z=new Blob([R.markdown],{type:"text/markdown;charset=utf-8"}),I=URL.createObjectURL(z),q=document.createElement("a");q.href=I,q.download=S?"EXPORT-full.md":R.filePath||"EXPORT.md",document.body.appendChild(q),q.click(),q.remove(),URL.revokeObjectURL(I),m(!1)}catch(R){window.alert(`Export failed: ${R instanceof Error?R.message:String(R)}`)}finally{g(null)}}return u.jsx("div",{className:"relative z-20 overflow-visible border-b border-[var(--border)] bg-[var(--surface-elevated)] backdrop-blur-xl backdrop-saturate-150",children:u.jsxs("div",{className:"page-container flex items-center gap-2 py-2 sm:gap-3 sm:py-2.5",children:[u.jsxs(Ve,{to:"/",title:a??t??"Agent Plan",className:"flex min-w-0 shrink-0 items-center gap-2 sm:gap-2.5",children:[u.jsx("div",{className:"surface-card flex h-8 w-8 shrink-0 items-center justify-center rounded-xl border border-[var(--border)] text-[var(--accent)] sm:h-9 sm:w-9",children:u.jsx(ku,{className:"h-4 w-4"})}),u.jsx("span",{className:"truncate text-sm font-black tracking-tight sm:text-base",children:t??"Agent Plan"})]}),u.jsx("nav",{className:"ml-1 hidden items-center gap-1 md:flex",children:N.map(S=>u.jsxs(Gh,{to:S.to,"aria-label":S.label,className:({isActive:j})=>`inline-flex min-h-7 shrink-0 items-center gap-1.5 rounded-[10px] border px-2 py-1 text-xs font-semibold transition sm:min-h-8 sm:rounded-[12px] sm:px-3 sm:py-1.5 sm:text-sm ${j?"border-transparent bg-[var(--accent-soft)] text-[var(--accent)]":"border-transparent text-[var(--text-muted)] hover:bg-[var(--accent-soft)] hover:text-[var(--text)]"}`,children:[u.jsx(S.icon,{className:"h-3.5 w-3.5 shrink-0 sm:h-4 sm:w-4"}),u.jsx("span",{children:S.label})]},S.to))}),u.jsxs("div",{className:"ml-auto flex shrink-0 items-center gap-1.5 sm:gap-2",children:[u.jsx(GR,{liveStatus:s}),u.jsx("button",{type:"button",onClick:o,"aria-label":c==="dark"?"Switch to light theme":"Switch to dark theme",title:c==="dark"?"Switch to light theme":"Switch to dark theme",className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] text-[var(--text-muted)] transition hover:text-[var(--text)] sm:h-9 sm:w-9 sm:rounded-[12px]",children:c==="dark"?u.jsx(wR,{className:"h-4 w-4"}):u.jsx(fR,{className:"h-4 w-4"})}),u.jsxs("div",{className:"relative md:hidden",children:[u.jsx("button",{type:"button","aria-label":"Open menu","aria-haspopup":"menu","aria-expanded":x,onClick:()=>y(S=>!S),className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] text-[var(--text-muted)] transition hover:text-[var(--text)]",children:x?u.jsx(Qb,{className:"h-4 w-4"}):u.jsx(uR,{className:"h-4 w-4"})}),x?u.jsxs(u.Fragment,{children:[u.jsx("div",{className:"fixed inset-0 z-[150]","aria-hidden":"true",onClick:()=>y(!1)}),u.jsxs("div",{role:"menu",onKeyDown:S=>{S.key==="Escape"&&y(!1)},className:"absolute right-0 top-full z-[200] mt-2 w-52 overflow-hidden rounded-[14px] border border-[var(--border)] bg-[var(--surface-elevated)] p-1 shadow-xl",children:[N.map(S=>u.jsxs(Gh,{to:S.to,"aria-label":S.label,onClick:()=>y(!1),className:({isActive:j})=>`flex items-center gap-2 rounded-[10px] px-3 py-2 text-sm font-semibold transition ${j?"bg-[var(--accent-soft)] text-[var(--accent)]":"text-[var(--text)] hover:bg-[var(--accent-soft)]"}`,children:[u.jsx(S.icon,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{children:S.label})]},S.to)),u.jsx("div",{className:"my-1 h-px bg-[var(--border)]"}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>{y(!1),w(!1)},className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Export summary",p==="summary"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>{y(!1),w(!0)},className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Export full",p==="full"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]})]})]}):null]}),u.jsxs("div",{className:"relative z-30 hidden md:block",children:[u.jsxs("button",{type:"button","aria-haspopup":"menu","aria-expanded":f,"aria-label":"Export",onClick:()=>m(S=>!S),className:"inline-flex min-h-7 items-center gap-1.5 rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] px-2 py-1 text-xs font-semibold text-[var(--text-muted)] transition hover:text-[var(--text)] sm:min-h-8 sm:rounded-[12px] sm:px-3 sm:py-1.5 sm:text-sm",children:[u.jsx(eR,{className:"h-3.5 w-3.5 shrink-0 sm:h-4 sm:w-4"}),u.jsx("span",{children:"Export"}),u.jsx(bs,{className:`h-3.5 w-3.5 shrink-0 transition-transform sm:h-4 sm:w-4 ${f?"rotate-180":""}`})]}),f?u.jsxs("div",{role:"menu",onKeyDown:S=>{var I;const j=Array.from(S.currentTarget.querySelectorAll("[role=menuitem]")).filter(q=>!q.hasAttribute("disabled"));if(j.length===0)return;const R=j.indexOf(document.activeElement);let z=R;if(S.key==="ArrowDown")z=R===-1?0:(R+1)%j.length;else if(S.key==="ArrowUp")z=R===-1?j.length-1:(R-1+j.length)%j.length;else if(S.key==="Home")z=0;else if(S.key==="End")z=j.length-1;else return;S.preventDefault(),(I=j[z])==null||I.focus()},className:"absolute right-0 top-full z-[200] mt-2 min-w-44 overflow-hidden rounded-[14px] border border-[var(--border)] bg-[var(--surface-elevated)] p-1 shadow-xl",children:[u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>void w(!1),className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Summary",p==="summary"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>void w(!0),className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Full",p==="full"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]})]}):null]})]})]})})}function dx(t,a,l){t.split(`
276
+ */const jR=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Qb=St("x",jR),TR="/api",CR=120,DR=40;function Zu(t){return{...t,number:t.number??0,decisions:t.decisions??[],acceptedDecisions:t.acceptedDecisions??[],checklist:t.checklist??[],subtasks:t.subtasks??[],pauseSnapshot:t.pauseSnapshot??null,pauseHistory:t.pauseHistory??[],startedAt:t.startedAt??"",completedAt:t.completedAt??"",descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Ju(t){return{...t,discussedAt:t.discussedAt??"",contextReady:t.contextReady??!1,contextReadyReason:t.contextReadyReason??"",notes:t.notes??"",goals:t.goals??[],nonGoals:t.nonGoals??[],dependencies:t.dependencies??[],risks:t.risks??[],openQuestions:t.openQuestions??[],decisions:t.decisions??[],acceptedDecisions:t.acceptedDecisions??[],completionCriteria:t.completionCriteria??[],taskIds:t.taskIds??[],tasks:(t.tasks??[]).map(Zu),linkedRequirements:t.linkedRequirements??[],handoff:t.handoff??"",handoffUpdatedAt:t.handoffUpdatedAt??"",descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Wu(t){return{...t,number:t.number??0,discussedAt:t.discussedAt??"",contextReady:t.contextReady??!1,contextReadyReason:t.contextReadyReason??"",acceptedDecisions:t.acceptedDecisions??[],phaseIds:t.phaseIds??[],descriptionUpdatedAt:t.descriptionUpdatedAt??""}}function Kb(t){var a,l,s;return{...t,scope:t.scope??[],outOfScope:t.outOfScope??[],decisions:t.decisions??[],globalRules:t.globalRules??[],technologies:t.technologies??[],tools:t.tools??[],acceptedDecisions:t.acceptedDecisions??[],workDeviations:t.workDeviations??[],planRoot:t.planRoot??"",projectRoot:t.projectRoot??"",workflowRules:{beforePhaseStart:((a=t.workflowRules)==null?void 0:a.beforePhaseStart)??[],beforeTaskStart:((l=t.workflowRules)==null?void 0:l.beforeTaskStart)??[],afterPhaseComplete:((s=t.workflowRules)==null?void 0:s.afterPhaseComplete)??[]}}}function Sm(t){return{...t,description:t.description??"",macroTasks:t.macroTasks??[],linkedPhaseIds:t.linkedPhaseIds??[]}}async function ux(t,a){const l={"Content-Type":"application/json","X-Planner-Source":"web-ui",...a==null?void 0:a.headers};try{return await fetch(`${TR}${t}`,{...a,headers:l})}catch{throw new Response("Planner web server unavailable. Pi or planner-web may have stopped. Restart the planner web UI or Pi, then reload this page.",{status:503,statusText:"Planner web server unavailable"})}}async function Pt(t,a){let l=await ux(t,a),s=0;for(;l.status===503&&s<DR;)await new Promise(c=>setTimeout(c,CR)),s+=1,l=await ux(t,a);if(!l.ok){const c=await l.text().catch(()=>l.statusText);throw new Response(c||l.statusText,{status:l.status,statusText:l.statusText})}return l.json()}async function wm(){return Kb(await Pt("/project"))}async function AR(t){return Kb(await Pt("/project",{method:"PUT",body:JSON.stringify({...t,workDeviations:[]})}))}async function kR(){return Pt("/ui-config")}async function Zb(){return(await Pt("/features")).map(Wu)}async function Vo(t){return Wu(await Pt(`/features/${t}`))}async function OR(t){return Wu(await Pt("/features",{method:"POST",body:JSON.stringify(t)}))}async function Jb(t){return Wu(await Pt(`/features/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function MR(t){return Pt(`/features/${t}`,{method:"DELETE"})}async function Em(){return(await Pt("/requirements")).requirements.map(Sm)}async function _R(t){const a=new Date().toISOString();return Sm(await Pt("/requirements",{method:"POST",body:JSON.stringify({...t,macroTasks:[],createdAt:a,updatedAt:a})}))}async function LR(t){return Sm(await Pt(`/requirements/${t.id}`,{method:"PUT",body:JSON.stringify({...t,updatedAt:new Date().toISOString()})}))}async function zR(t){return Pt(`/requirements/${t}`,{method:"DELETE"})}async function ed(t){const a=t?`?featureId=${encodeURIComponent(t)}`:"";return(await Pt(`/phases${a}`)).map(Ju)}async function td(t){return Ju(await Pt(`/phases/${t}`))}async function UR(t){return Ju(await Pt("/phases",{method:"POST",body:JSON.stringify(t)}))}async function Wb(t){return Ju(await Pt(`/phases/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function BR(t){return Pt(`/phases/${t}`,{method:"DELETE"})}async function HR(t,a){return Zu(await Pt(`/phases/${t}/tasks`,{method:"POST",body:JSON.stringify(a)}))}async function nd(t){return Zu(await Pt(`/tasks/${t}`))}async function Nm(t){return Zu(await Pt(`/tasks/${t.id}`,{method:"PUT",body:JSON.stringify(t)}))}async function $R(t){return Pt(`/tasks/${t}`,{method:"DELETE"})}async function qR(){return Pt("/tasks/active")}async function IR(){const t=await Pt("/tasks/focus");return{active:t.active??[],pendingResume:t.pendingResume??[]}}async function Kh(){return(await Pt("/handoffs")).handoffs??[]}async function PR(){return(await Pt("/handoffs/archive")).archived??[]}async function e0(t){return Pt(`/phases/${t}/handoff`,{method:"DELETE"})}async function VR(t=!1){return Pt(`/export?full=${t?"true":"false"}`)}async function FR(){return Pt("/repair",{method:"POST"})}async function Eh(t,a,l,s){return Pt("/reorder",{method:"POST",body:JSON.stringify({kind:t,movedId:a,beforeId:l,afterId:s})})}function YR(){const[t,a]=v.useState(()=>{if(typeof window>"u")return"dark";const l=window.localStorage.getItem("plan-ui-theme");return l||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")});return v.useEffect(()=>{document.documentElement.setAttribute("data-theme",t),window.localStorage.setItem("plan-ui-theme",t)},[t]),{theme:t,toggleTheme:()=>a(l=>l==="dark"?"light":"dark")}}function GR({liveStatus:t}){const a=t==="live"?{label:"Live",className:"border-emerald-500/30 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",dotClassName:"bg-emerald-500"}:t==="reconnecting"?{label:"Reconnecting…",className:"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-400",dotClassName:"bg-amber-500 animate-pulse"}:t==="disconnected"?{label:"Disconnected",className:"border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-400",dotClassName:"bg-rose-500"}:{label:"Connecting…",className:"border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-400",dotClassName:"bg-sky-500 animate-pulse"};return u.jsxs("span",{className:`inline-flex max-w-full min-h-7 items-center gap-1.5 rounded-[10px] border px-2 py-1 text-xs font-semibold sm:min-h-8 sm:rounded-[12px] sm:px-2.5 sm:py-1.5 sm:text-sm ${a.className}`,children:[u.jsx("span",{className:`h-2 w-2 shrink-0 rounded-full ${a.dotClassName}`}),u.jsx("span",{className:"truncate",children:a.label})]})}function XR({projectName:t,projectRoot:a,planRoot:l,liveStatus:s}){const{theme:c,toggleTheme:o}=YR(),[f,m]=v.useState(!1),[p,g]=v.useState(null),[x,y]=v.useState(!1),N=[{to:"/features",label:"Features",icon:ku},{to:"/requirements",label:"Requirements",icon:Po},{to:"/handoff",label:"Handoff",icon:Xb}];async function w(S){g(S?"full":"summary");try{const R=await VR(S),z=new Blob([R.markdown],{type:"text/markdown;charset=utf-8"}),I=URL.createObjectURL(z),q=document.createElement("a");q.href=I,q.download=S?"EXPORT-full.md":R.filePath||"EXPORT.md",document.body.appendChild(q),q.click(),q.remove(),URL.revokeObjectURL(I),m(!1)}catch(R){window.alert(`Export failed: ${R instanceof Error?R.message:String(R)}`)}finally{g(null)}}return u.jsx("div",{className:"relative z-20 overflow-visible border-b border-[var(--border)] bg-[var(--surface-elevated)] backdrop-blur-xl backdrop-saturate-150",children:u.jsxs("div",{className:"page-container flex items-center gap-2 py-2 sm:gap-3 sm:py-2.5",children:[u.jsxs(Ve,{to:"/",title:a??t??"Agent Plan",className:"flex min-w-0 shrink items-center gap-2 sm:gap-2.5",children:[u.jsx("div",{className:"surface-card flex h-8 w-8 shrink-0 items-center justify-center rounded-xl border border-[var(--border)] text-[var(--accent)] sm:h-9 sm:w-9",children:u.jsx(ku,{className:"h-4 w-4"})}),u.jsx("span",{className:"truncate text-sm font-black tracking-tight sm:text-base",children:t??"Agent Plan"})]}),u.jsx("nav",{className:"ml-1 hidden items-center gap-1 md:flex",children:N.map(S=>u.jsxs(Gh,{to:S.to,"aria-label":S.label,className:({isActive:j})=>`inline-flex min-h-7 shrink-0 items-center gap-1.5 rounded-[10px] border px-2 py-1 text-xs font-semibold transition sm:min-h-8 sm:rounded-[12px] sm:px-3 sm:py-1.5 sm:text-sm ${j?"border-transparent bg-[var(--accent-soft)] text-[var(--accent)]":"border-transparent text-[var(--text-muted)] hover:bg-[var(--accent-soft)] hover:text-[var(--text)]"}`,children:[u.jsx(S.icon,{className:"h-3.5 w-3.5 shrink-0 sm:h-4 sm:w-4"}),u.jsx("span",{children:S.label})]},S.to))}),u.jsxs("div",{className:"ml-auto flex shrink-0 items-center gap-1.5 sm:gap-2",children:[u.jsx(GR,{liveStatus:s}),u.jsx("button",{type:"button",onClick:o,"aria-label":c==="dark"?"Switch to light theme":"Switch to dark theme",title:c==="dark"?"Switch to light theme":"Switch to dark theme",className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] text-[var(--text-muted)] transition hover:text-[var(--text)] sm:h-9 sm:w-9 sm:rounded-[12px]",children:c==="dark"?u.jsx(wR,{className:"h-4 w-4"}):u.jsx(fR,{className:"h-4 w-4"})}),u.jsxs("div",{className:"relative md:hidden",children:[u.jsx("button",{type:"button","aria-label":"Open menu","aria-haspopup":"menu","aria-expanded":x,onClick:()=>y(S=>!S),className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] text-[var(--text-muted)] transition hover:text-[var(--text)]",children:x?u.jsx(Qb,{className:"h-4 w-4"}):u.jsx(uR,{className:"h-4 w-4"})}),x?u.jsxs(u.Fragment,{children:[u.jsx("div",{className:"fixed inset-0 z-[150]","aria-hidden":"true",onClick:()=>y(!1)}),u.jsxs("div",{role:"menu",onKeyDown:S=>{S.key==="Escape"&&y(!1)},className:"absolute right-0 top-full z-[200] mt-2 w-52 overflow-hidden rounded-[14px] border border-[var(--border)] bg-[var(--surface-elevated)] p-1 shadow-xl",children:[N.map(S=>u.jsxs(Gh,{to:S.to,"aria-label":S.label,onClick:()=>y(!1),className:({isActive:j})=>`flex items-center gap-2 rounded-[10px] px-3 py-2 text-sm font-semibold transition ${j?"bg-[var(--accent-soft)] text-[var(--accent)]":"text-[var(--text)] hover:bg-[var(--accent-soft)]"}`,children:[u.jsx(S.icon,{className:"h-4 w-4 shrink-0"}),u.jsx("span",{children:S.label})]},S.to)),u.jsx("div",{className:"my-1 h-px bg-[var(--border)]"}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>{y(!1),w(!1)},className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Export summary",p==="summary"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>{y(!1),w(!0)},className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Export full",p==="full"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]})]})]}):null]}),u.jsxs("div",{className:"relative z-30 hidden md:block",children:[u.jsxs("button",{type:"button","aria-haspopup":"menu","aria-expanded":f,"aria-label":"Export",onClick:()=>m(S=>!S),className:"inline-flex min-h-7 items-center gap-1.5 rounded-[10px] border border-[var(--border-strong)] bg-[var(--surface-elevated)] px-2 py-1 text-xs font-semibold text-[var(--text-muted)] transition hover:text-[var(--text)] sm:min-h-8 sm:rounded-[12px] sm:px-3 sm:py-1.5 sm:text-sm",children:[u.jsx(eR,{className:"h-3.5 w-3.5 shrink-0 sm:h-4 sm:w-4"}),u.jsx("span",{children:"Export"}),u.jsx(bs,{className:`h-3.5 w-3.5 shrink-0 transition-transform sm:h-4 sm:w-4 ${f?"rotate-180":""}`})]}),f?u.jsxs("div",{role:"menu",onKeyDown:S=>{var I;const j=Array.from(S.currentTarget.querySelectorAll("[role=menuitem]")).filter(q=>!q.hasAttribute("disabled"));if(j.length===0)return;const R=j.indexOf(document.activeElement);let z=R;if(S.key==="ArrowDown")z=R===-1?0:(R+1)%j.length;else if(S.key==="ArrowUp")z=R===-1?j.length-1:(R-1+j.length)%j.length;else if(S.key==="Home")z=0;else if(S.key==="End")z=j.length-1;else return;S.preventDefault(),(I=j[z])==null||I.focus()},className:"absolute right-0 top-full z-[200] mt-2 min-w-44 overflow-hidden rounded-[14px] border border-[var(--border)] bg-[var(--surface-elevated)] p-1 shadow-xl",children:[u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>void w(!1),className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Summary",p==="summary"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]}),u.jsxs("button",{type:"button",role:"menuitem",disabled:p!==null,onClick:()=>void w(!0),className:"flex w-full items-center justify-between rounded-[10px] px-3 py-2 text-left text-sm font-semibold text-[var(--text)] transition hover:bg-[var(--accent-soft)] disabled:cursor-wait disabled:opacity-60",children:["Full",p==="full"?u.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"…"}):null]})]}):null]})]})]})})}function dx(t,a,l){t.split(`
277
277
  `).forEach((c,o)=>{o>0&&a.push(u.jsx("br",{},`${l}-br-${o}`)),c&&a.push(c)})}function po(t,a){const l=[],s=/(\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)|\*\*([^*]+)\*\*|`([^`]+)`|\*([^*]+)\*)/g;let c=0,o=null,f=0;for(;(o=s.exec(t))!==null;)o.index>c&&dx(t.slice(c,o.index),l,`${a}-${f}`),o[2]&&o[3]?l.push(u.jsx("a",{href:o[3],target:"_blank",rel:"noreferrer",className:"font-semibold text-[var(--accent)] underline-offset-4 hover:underline",children:o[2]},`${a}-link-${f}`)):o[4]?l.push(u.jsx("strong",{className:"font-semibold text-[var(--text)]",children:o[4]},`${a}-strong-${f}`)):o[5]?l.push(u.jsx("code",{className:"rounded-md border border-[var(--border)] px-1.5 py-0.5 font-mono text-[0.95em] text-[var(--text)]",children:o[5]},`${a}-code-${f}`)):o[6]&&l.push(u.jsx("em",{className:"italic",children:o[6]},`${a}-em-${f}`)),c=s.lastIndex,f+=1;return c<t.length&&dx(t.slice(c),l,`${a}-tail`),l}function QR(t,a){var c;const l=t.split(`
278
278
  `);if(t.startsWith("```")){const o=t.replace(/^```[a-zA-Z]*\n?/,"").replace(/```\s*$/,"");return u.jsx("pre",{className:"overflow-x-auto rounded-lg border border-[var(--border)] bg-[var(--surface-elevated)] p-3 text-sm font-mono text-[var(--text)]",children:u.jsx("code",{children:o})},`code-${a}`)}const s=t.match(/^(#{1,6})\s+(.+)$/);if(s&&s[2]){const o=((c=s[1])==null?void 0:c.length)??1,f=s[2],m=o<=2?"text-base font-bold text-[var(--text)]":"text-sm font-bold text-[var(--text)]";return u.jsx("p",{className:m,children:po(f,`h-${a}`)},`h-${a}`)}return l.every(o=>/^\s*>\s?/.test(o))?u.jsx("blockquote",{className:"border-l-2 border-[var(--accent)] pl-4 text-sm italic text-[var(--text-muted)]",children:l.map((o,f)=>u.jsx("div",{children:po(o.replace(/^\s*>\s?/,""),`bq-${a}-${f}`)},`bq-${a}-${f}`))},`bq-${a}`):/^\s*([-*_])\1{2,}\s*$/.test(t.trim())?u.jsx("hr",{className:"border-[var(--border)]"},`hr-${a}`):l.every(o=>/^\s*[-*]\s+/.test(o))?u.jsx("ul",{className:"grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:l.map((o,f)=>u.jsx("li",{className:"list-disc",children:po(o.replace(/^\s*[-*]\s+/,""),`ul-${a}-${f}`)},`ul-${a}-${f}`))},`ul-${a}`):l.every(o=>/^\s*\d+\.\s+/.test(o))?u.jsx("ol",{className:"grid gap-2 pl-5 text-sm text-[var(--text-muted)] list-decimal",children:l.map((o,f)=>u.jsx("li",{children:po(o.replace(/^\s*\d+\.\s+/,""),`ol-${a}-${f}`)},`ol-${a}-${f}`))},`ol-${a}`):u.jsx("p",{className:"text-sm leading-6 text-[var(--text-muted)] whitespace-pre-wrap",children:po(t,`p-${a}`)},`p-${a}`)}function bn({text:t,className:a=""}){if(!(t!=null&&t.trim()))return null;const l=t.trim().split(/\n\s*\n/).filter(Boolean);return u.jsx("div",{className:`formatted-text grid grid-cols-1 gap-3 ${a}`,children:l.map((s,c)=>QR(s,c))})}function rl(t){return String(t&&t>0?t:0).padStart(3,"0")}function il({featureNum:t,phaseNum:a,taskNum:l}){const s=[];return t!==void 0&&s.push(`F${rl(t)}`),a!==void 0&&s.push(`P${rl(a)}`),l!==void 0&&s.push(`T${rl(l)}`),s.join("/")}async function KR(t){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(t),!0}catch{}try{const a=document.createElement("textarea");a.value=t,a.style.position="fixed",a.style.top="-1000px",a.style.opacity="0",document.body.appendChild(a),a.focus(),a.select();const l=document.execCommand("copy");return a.remove(),l}catch{return!1}}function t0({type:t,phaseNum:a,featureNum:l}){return t==="feature"?null:t==="phase"?l===void 0?null:u.jsx("div",{className:"shrink-0 inline-flex items-stretch font-mono text-[10.5px] font-semibold rounded-md overflow-hidden border border-[var(--border)] bg-[var(--surface-elevated)]",children:u.jsxs("span",{className:"px-2 py-1 text-[var(--text-muted)]",children:["F",rl(l)]})}):t==="task"?a===void 0?null:u.jsxs("div",{className:"shrink-0 inline-flex items-stretch font-mono text-[10.5px] font-semibold rounded-md overflow-hidden border border-[var(--border)] bg-[var(--surface-elevated)]",children:[u.jsxs("span",{className:"px-2 py-1 text-[var(--text-muted)]",children:["P",rl(a)]}),l!==void 0&&u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"w-[1px] bg-[var(--border)]"}),u.jsxs("span",{className:"px-2 py-1 text-[var(--text-subtle)]",children:["F",rl(l)]})]})]}):null}function ar({featureNum:t,phaseNum:a,taskNum:l,featureId:s,phaseId:c,taskId:o,featureName:f,phaseName:m,taskTitle:p}){const g=f?{title:f}:{},x=m?{title:m}:{},y=p?{title:p}:{},N=s?({children:j})=>u.jsx(Ve,{to:`/features/${s}`,...g,className:"entity-path-seg entity-path-seg--feature entity-path-seg--link",children:j}):({children:j})=>u.jsx("span",{className:"entity-path-seg entity-path-seg--feature",...g,children:j}),w=c?({children:j})=>u.jsx(Ve,{to:`/features/${s}/phases/${c}`,...x,className:"entity-path-seg entity-path-seg--phase entity-path-seg--link",children:j}):({children:j})=>u.jsx("span",{className:"entity-path-seg entity-path-seg--phase",...x,children:j}),S=o?({children:j})=>u.jsx(Ve,{to:`/features/${s}/phases/${c}/tasks/${o}`,...y,className:"entity-path-seg entity-path-seg--task entity-path-seg--link",children:j}):({children:j})=>u.jsx("span",{className:"entity-path-seg entity-path-seg--task",...y,children:j});return u.jsxs("span",{className:"entity-path-badge",children:[t!==void 0?u.jsxs(N,{children:["F",rl(t)]}):null,a!==void 0?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"entity-path-sep","aria-hidden":"true",children:"/"}),u.jsxs(w,{children:["P",rl(a)]})]}):null,l!==void 0?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"entity-path-sep","aria-hidden":"true",children:"/"}),u.jsxs(S,{children:["T",rl(l)]})]}):null]})}function lr({id:t,children:a}){const[l,s]=v.useState(!1);return u.jsxs("button",{type:"button",onClick:async c=>{c.preventDefault(),c.stopPropagation(),await KR(t)&&(s(!0),window.setTimeout(()=>s(!1),1200))},title:l?"Copied":`Copy ${t}`,"aria-label":l?"Copied":`Copy ${t}`,className:"copyable-id group inline-flex items-center gap-1.5",children:[a,u.jsx("span",{className:"copyable-id__icon","aria-hidden":"true",children:l?u.jsx(_N,{className:"h-3 w-3 text-emerald-500"}):u.jsx(JN,{className:"h-3 w-3"})})]})}function ol({shortId:t}){return u.jsx(lr,{id:t,children:u.jsx("span",{className:"short-id-badge",children:t})})}function n0({featureNum:t,phaseNum:a,taskNum:l,featureId:s,phaseId:c,taskId:o,shortId:f,featureName:m,phaseName:p,taskTitle:g}){return u.jsxs(u.Fragment,{children:[u.jsx(ar,{featureNum:t,phaseNum:a,taskNum:l,featureId:s,phaseId:c,taskId:o,featureName:m,phaseName:p,taskTitle:g}),u.jsx(lr,{id:il({featureNum:t,phaseNum:a,taskNum:l}),children:u.jsx("span",{className:"sr-only",children:"Copy path"})}),f?u.jsx(ol,{shortId:f}):null]})}function Rm({phaseId:t,updatedAt:a}){const l=`Phase handoff pending${a?` · updated ${new Date(a).toLocaleString()}`:""}`;return u.jsxs("a",{href:`/handoff#${t}`,className:"handoff-badge flex items-center gap-1 ml-2 shrink-0",title:l,"aria-label":l,children:[u.jsxs("svg",{viewBox:"0 0 16 16",width:"14",height:"14","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[u.jsx("path",{d:"M4 2h5l3 3v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z"}),u.jsx("path",{d:"M9 2v3h3"}),u.jsx("path",{d:"M5.5 8h5M5.5 10.5h5"})]}),u.jsx("span",{className:"handoff-badge__label",children:"handoff"})]})}const Zh={planned:{colorVar:"--color-status-planned",icon:"circle",pattern:"",label:"Planned",description:"Not started",borderStyle:"solid",bgOpacity:10,borderOpacity:30},started:{colorVar:"--color-status-started",icon:"play-start",pattern:"dashed",label:"Started",description:"Begun but not active now",borderStyle:"dashed",bgOpacity:10,borderOpacity:30},"in-progress":{colorVar:"--color-status-in-progress",icon:"play",pattern:"pulse",label:"In progress",description:"Active now",borderStyle:"solid",bgOpacity:12,borderOpacity:30},waiting:{colorVar:"--color-status-waiting",icon:"clock",pattern:"dashed",label:"Waiting",description:"Waiting on a dependency",borderStyle:"dashed",bgOpacity:10,borderOpacity:30},blocked:{colorVar:"--color-status-blocked",icon:"stop",pattern:"",label:"Blocked",description:"Impediment",borderStyle:"solid",bgOpacity:12,borderOpacity:30},deferred:{colorVar:"--color-status-deferred",icon:"pause",pattern:"dashed",label:"Deferred",description:"Postponed",borderStyle:"dashed",bgOpacity:10,borderOpacity:30},done:{colorVar:"--color-status-done",icon:"check",pattern:"",label:"Done",description:"Completed",borderStyle:"solid",bgOpacity:14,borderOpacity:30},closed:{colorVar:"--color-status-closed",icon:"check-mixed",pattern:"",label:"Closed",description:"Closed with mixed outcomes",borderStyle:"solid",bgOpacity:14,borderOpacity:30},canceled:{colorVar:"--color-status-canceled",icon:"ban",pattern:"hatch",label:"Canceled",description:"Canceled",borderStyle:"solid",bgOpacity:8,borderOpacity:30},rejected:{colorVar:"--color-status-rejected",icon:"x",pattern:"crosshatch",label:"Rejected",description:"Rejected",borderStyle:"solid",bgOpacity:10,borderOpacity:30}};function Il(t){return Zh[t]??Zh.planned}function Ou(t,a,l){switch(a){case"bg":return`color-mix(in srgb, var(${t.colorVar}) ${t.bgOpacity}%, transparent)`;case"border":return`color-mix(in srgb, var(${t.colorVar}) ${t.borderOpacity}%, transparent)`}}function ZR(t){const a=Il(t);return{backgroundColor:Ou(a,"bg"),borderStyle:a.borderStyle,borderColor:Ou(a,"border"),borderWidth:"1px"}}function JR(t){const a=Il(t);return{backgroundColor:Ou(a,"bg"),borderStyle:a.borderStyle,borderColor:Ou(a,"border"),borderWidth:"1px"}}function jm(t){const{pattern:a}=Il(t);return a?a==="dashed"?`status-pattern-dashed status-pattern-dashed-${t}`:`status-pattern-${a}`:""}function a0(t){return`status-${t}`}function r0(t,a=30){return`color-mix(in srgb, var(${Il(t).colorVar}) ${a}%, transparent)`}function l0(t){return t in Zh?t:"planned"}function WR(t,a){const s=[Il(t).label],c=[["done",a.done],["in-progress",a.inProgress],["planned",a.planned],["waiting",a.waiting],["blocked",a.blocked],["deferred",a.deferred],["canceled",a.canceled],["rejected",a.rejected]];for(const[o,f]of c)f>0&&s.push(`${f} ${o}`);return s.join(" · ")}const s0={circle:Ku,"play-start":gR,play:Fb,clock:KN,stop:Yb,pause:bm,check:xm,"check-mixed":BN,ban:Pb,x:GN};function e2({status:t,className:a=""}){const l=Il(t),s=s0[l.icon]??Ku;return u.jsx(s,{className:`h-4 w-4 shrink-0 ${a}`.trim(),"aria-hidden":"true"})}function tr({status:t}){const a=l0(t),l=Il(a);return u.jsxs("span",{className:`status-chip ${a0(a)} ${jm(a)}`,title:l.description,"aria-label":l.description,children:[u.jsx(e2,{status:a,className:"h-3.5 w-3.5"}),u.jsx("span",{children:l.label})]})}function Fo({status:t,breakdown:a,size:l="md",children:s}){const c=Il(t),o=s0[c.icon]??Ku,f=jm(t),m=a?WR(t,a):c.description,p=l==="sm"?"px-2 py-0.5 text-[10px]":"px-2.5 py-1 text-[11px]";return u.jsxs("span",{className:`status-chip ${a0(t)} ${f} ${p}`,title:m,"aria-label":m,children:[u.jsx(o,{className:"h-3.5 w-3.5"}),u.jsx("span",{children:c.label}),s]})}function Mu({status:t,breakdown:a,doneTasks:l,totalTasks:s,recentlyChanged:c,className:o}){const f=l!=null&&s!=null;return u.jsxs("div",{className:o,children:[c?u.jsx("span",{className:"rounded-full bg-[color:color-mix(in_srgb,var(--accent)_16%,transparent)] px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.12em] text-[var(--accent)]",children:"Updated"}):null,f?u.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["(",l,"/",s||0,")"]}):null,u.jsx(Fo,{status:t,breakdown:a})]})}function i0({task:t}){const a=kr(),l=t.featureId?`/features/${t.featureId}/phases/${t.phaseId}/tasks/${t.id}`:"/features";return u.jsx("article",{className:`min-w-0 rounded-[12px] border bg-[var(--surface-card)] px-3 py-2 text-sm text-[var(--text)] ${t.pendingResume?"border-[var(--accent)]":"border-[var(--border)]"}`,children:u.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[u.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[u.jsx(ar,{featureNum:t.featureNumber,phaseNum:t.phaseNumber,taskNum:t.number,featureId:t.featureId,phaseId:t.phaseId,taskId:t.id}),u.jsx(lr,{id:il({featureNum:t.featureNumber,phaseNum:t.phaseNumber,taskNum:t.number}),children:u.jsx("span",{className:"sr-only",children:"Copy task path"})}),t.shortId?u.jsx(ol,{shortId:t.shortId}):null,u.jsx("span",{className:"shrink-0",children:u.jsx(tr,{status:t.status})}),u.jsx(Ve,{to:l,className:"min-w-0 flex-1 truncate font-medium hover:text-[var(--accent)]",children:t.title}),t.pendingResume?u.jsx("span",{className:"shrink-0 rounded-full bg-[var(--accent-soft)] px-2 py-0.5 text-[10px] font-bold uppercase tracking-[0.12em] text-[var(--accent)]",children:"Resume required"}):null]}),u.jsx("button",{type:"button",onClick:s=>{s.preventDefault(),s.stopPropagation(),a(`/?locate=T${t.number}`)},"aria-label":`Locate T${t.number} in work tree`,title:"Locate in work tree",className:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-[8px] text-[var(--text-subtle)] transition-colors hover:bg-[var(--accent)] hover:text-white",children:u.jsx(oR,{className:"h-4 w-4"})})]})})}function t2({taskFocus:t}){const a=v.useMemo(()=>{const l=s=>{const c=new Set;return s.filter(o=>c.has(o.id)?!1:(c.add(o.id),!0))};return{active:l(t.active),pendingResume:l(t.pendingResume)}},[t.active,t.pendingResume]);return a.active.length===0?null:u.jsx("div",{className:"relative z-10 border-t border-[var(--border)] bg-[var(--surface-elevated)]/95 backdrop-blur-xl",children:u.jsx("div",{className:"page-container grid gap-3 py-2.5",children:a.active.length>0?u.jsxs("section",{"aria-labelledby":"active-task-heading",className:"grid gap-1.5",children:[u.jsxs("h2",{id:"active-task-heading",className:"text-[10px] font-semibold uppercase tracking-[0.22em] text-[var(--text-subtle)]",children:["Active tasks (",a.active.length,")"]}),a.active.map(l=>u.jsx(i0,{task:l},l.id))]}):null})})}function n2({project:t,taskFocus:a,serverInfo:l}){const s=pr(),[c,o]=v.useState("connecting");return v.useEffect(()=>{const f=m=>{var g;const p=(g=m.detail)==null?void 0:g.status;p&&o(p)};return window.addEventListener("agent-plan:ws-status",f),()=>window.removeEventListener("agent-plan:ws-status",f)},[]),u.jsxs("div",{className:"page-shell",children:[u.jsxs("header",{className:"sticky top-0 z-30 overflow-visible",children:[u.jsx(XR,{projectName:t==null?void 0:t.name,projectRoot:t==null?void 0:t.projectRoot,planRoot:t==null?void 0:t.planRoot,liveStatus:c}),u.jsx(t2,{taskFocus:a})]}),u.jsxs("div",{className:"page-container py-8",children:[u.jsxs("div",{className:"mb-8 flex flex-col gap-3 md:flex-row md:items-end md:justify-between md:gap-6",children:[u.jsxs("div",{className:"min-w-0",children:[u.jsx("p",{className:"text-sm font-semibold uppercase tracking-[0.24em] text-[var(--text-subtle)]",children:"Current project"}),u.jsx("h1",{className:"text-2xl font-black tracking-tight text-[var(--text)] md:text-3xl",children:u.jsx(Ve,{to:"/",className:"hover:text-[var(--accent)]",children:(t==null?void 0:t.name)??"Agent Plan"})}),t!=null&&t.projectRoot?u.jsx("p",{className:"mt-2 truncate font-mono text-xs text-[var(--text-subtle)]",title:t.projectRoot,children:t.projectRoot}):null,l?u.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs",children:[u.jsxs("span",{className:`inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 font-semibold uppercase tracking-[0.12em] ${l.mode==="lan"?"bg-[color:color-mix(in_srgb,var(--accent)_16%,transparent)] text-[var(--accent)]":"bg-[var(--surface-elevated)] text-[var(--text-muted)]"}`,children:[u.jsx("span",{"aria-hidden":"true",className:"inline-block h-1.5 w-1.5 rounded-full bg-current"}),l.mode==="lan"?"LAN visible":"Local only"]}),u.jsx("a",{href:l.localUrl,target:"_blank",rel:"noreferrer",className:"font-mono text-[var(--text-subtle)] underline-offset-2 hover:text-[var(--accent)] hover:underline",children:l.localUrl}),l.lanUrl?u.jsxs(u.Fragment,{children:[u.jsx("span",{className:"text-[var(--text-subtle)]",children:"·"}),u.jsx("a",{href:l.lanUrl,target:"_blank",rel:"noreferrer",className:"font-mono text-[var(--text-subtle)] underline-offset-2 hover:text-[var(--accent)] hover:underline",children:l.lanUrl})]}):null]}):null,t!=null&&t.description?u.jsx(bn,{text:t.description,className:"mt-2 max-w-3xl"}):null]}),s.state!=="idle"?u.jsx("div",{className:"text-sm font-semibold text-[var(--accent)]",children:"Updating…"}):null]}),u.jsx(gi,{})]})]})}const Ra=32,o0=4,a2=Math.PI*1.2;function c0(){if(typeof document>"u")return"#7b68ee";const t=document.createElement("div");t.style.color="var(--accent, #7b68ee)",document.body.appendChild(t);const a=getComputedStyle(t).color||"#7b68ee";return t.remove(),a}function r2(){const t=document.createElement("canvas");t.width=Ra,t.height=Ra;const a=t.getContext("2d");if(!a)return"";const l=c0();return a.beginPath(),a.arc(Ra/2,Ra/2,Ra/2-o0,0,Math.PI*2),a.fillStyle=l,a.fill(),a.fillStyle="#ffffff",a.font="bold 16px system-ui, sans-serif",a.textAlign="center",a.textBaseline="middle",a.fillText("A",Ra/2,Ra/2+1),t.toDataURL("image/png")}function l2(t,a){const l=t.getContext("2d");if(!l)return"";const s=c0();l.clearRect(0,0,Ra,Ra);const c=Ra/2,o=Ra/2,f=Ra/2-o0;return l.beginPath(),l.arc(c,o,f,0,Math.PI*2),l.fillStyle=s,l.globalAlpha=.85,l.fill(),l.globalAlpha=1,l.beginPath(),l.arc(c,o,f-3,a,a+a2),l.strokeStyle="#ffffff",l.lineWidth=3,l.lineCap="round",l.stroke(),l.fillStyle="#ffffff",l.font="bold 14px system-ui, sans-serif",l.textAlign="center",l.textBaseline="middle",l.fillText("A",c,o+1),t.toDataURL("image/png")}function s2(){let t=document.querySelector("link[rel~='icon']");return t||(t=document.createElement("link"),t.rel="icon",t.type="image/png",document.head.appendChild(t)),t}function i2(t){const a=v.useRef(null),l=v.useRef(null),s=v.useRef(null),c=v.useRef(0);v.useEffect(()=>{if(a.current||(a.current=s2()),s.current||(s.current=r2()),!l.current){const m=document.createElement("canvas");m.width=Ra,m.height=Ra,l.current=m}const o=a.current;if(!t){o.href=s.current;return}const f=window.setInterval(()=>{document.hidden||(c.current+=Math.PI/10,o.href=l2(l.current,c.current))},100);return()=>{window.clearInterval(f),o.href=s.current}},[t])}const Eo={create:{key:"n",primary:!0},edit:{key:"e",primary:!0},delete:{key:"d",primary:!0},submit:{key:"Enter",primary:!0}},u0=v.createContext(Eo);function d0(){return typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform)}function o2(t){return typeof t!="string"}function c2(t){return{create:(t==null?void 0:t.create)??Eo.create,edit:(t==null?void 0:t.edit)??Eo.edit,delete:(t==null?void 0:t.delete)??Eo.delete,submit:(t==null?void 0:t.submit)??Eo.submit}}function u2(t){const a=[],l=d0();t.primary&&a.push(l?"⌘":"Ctrl"),t.meta&&a.push(l?"⌘":"Meta"),t.ctrl&&a.push(l?"⌃":"Ctrl"),t.shift&&a.push(l?"⇧":"Shift"),t.alt&&a.push(l?"⌥":"Alt");const s=t.key==="Backspace"?l?"⌫":"Backspace":t.key==="Enter"?l?"↩":"Enter":t.key.length===1?t.key.toUpperCase():t.key;return a.push(s),l?a.join(""):a.join("+")}function d2(t){return t instanceof HTMLElement?!!t.closest("input, textarea, select, [contenteditable='true']"):!1}function f2(t,a){const l=a.key.length===1?a.key.toLowerCase():a.key,s=t.key.length===1?t.key.toLowerCase():t.key,c=d0(),o=a.meta??(a.primary?c:!1),f=a.ctrl??(a.primary?!c:!1);return s===l&&!!o===t.metaKey&&!!f===t.ctrlKey&&!!a.shift===t.shiftKey&&!!a.alt===t.altKey}function h2({shortcuts:t,children:a}){return v.createElement(u0.Provider,{value:c2(t)},a)}function f0(t){const a=v.useContext(u0);if(t)return o2(t)?t:a[t]}function An(t,a,l){const s=f0(t);v.useEffect(()=>{if(!s||(l==null?void 0:l.enabled)===!1)return;const c=o=>{!(l!=null&&l.allowInEditable)&&d2(o.target)||f2(o,s)&&(o.preventDefault(),a())};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[a,l==null?void 0:l.allowInEditable,l==null?void 0:l.enabled,s])}const m2=1500,p2=80,g2=12e3,v2=5e3;function y2(){const{revalidate:t}=NE(),a=v.useRef(null),l=v.useRef(null),s=v.useRef(null),c=v.useRef(null),o=v.useRef(null);return v.useEffect(()=>{let f=!0;const m=X=>{window.dispatchEvent(new CustomEvent("agent-plan:ws-status",{detail:{status:X}}))},p=()=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null)},g=()=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null)},x=()=>{o.current!==null&&(window.clearTimeout(o.current),o.current=null)},y=()=>{c.current!==null&&(window.clearInterval(c.current),c.current=null)},N=()=>{g(),s.current=window.setTimeout(()=>{t()},p2)},w=()=>{!f||l.current!==null||(m("reconnecting"),l.current=window.setTimeout(()=>{l.current=null,R()},m2))},S=()=>{y(),x();const X=a.current;if(a.current=null,X&&(X.readyState===WebSocket.OPEN||X.readyState===WebSocket.CONNECTING))try{X.close()}catch{}},j=()=>{y(),x(),c.current=window.setInterval(()=>{const X=a.current;if(!(!X||X.readyState!==WebSocket.OPEN)){try{X.send(JSON.stringify({type:"ping"}))}catch{S(),w();return}x(),o.current=window.setTimeout(()=>{S(),w()},v2)}},g2)},R=()=>{if(!f)return;const X=a.current;if(X&&(X.readyState===WebSocket.OPEN||X.readyState===WebSocket.CONNECTING))return;m(l.current!==null?"reconnecting":"connecting"),p();const ee=window.location.protocol==="https:"?"wss":"ws",ne=new WebSocket(`${ee}://${window.location.host}/ws`);a.current=ne,ne.onopen=()=>{p(),m("live"),j()},ne.onmessage=M=>{x();try{const C=JSON.parse(M.data);if(!C.type||C.type==="pong"||C.type==="connected")return;switch(window.dispatchEvent(new CustomEvent("agent-plan:ws-event",{detail:C})),C.type){case"project-updated":case"features-updated":case"phases-updated":case"requirements-updated":case"plan-rendered":case"file-changed":case"handoffUpdated":case"handoffCleared":N();break;default:break}}catch{}},ne.onclose=()=>{y(),x(),a.current===ne&&(a.current=null),f&&w()},ne.onerror=()=>{try{ne.close()}catch{}}},z=()=>{const X=a.current;(!X||X.readyState===WebSocket.CLOSED||X.readyState===WebSocket.CLOSING)&&R()},I=()=>{document.visibilityState==="visible"&&z()},q=()=>{z()};return m("connecting"),R(),window.addEventListener("online",q),document.addEventListener("visibilitychange",I),()=>{f=!1,m("disconnected"),window.removeEventListener("online",q),document.removeEventListener("visibilitychange",I),p(),g(),y(),x(),S()}},[t]),null}async function x2(){const[t,a,l]=await Promise.all([wm(),kR(),IR()]);return{project:t,uiConfig:a,taskFocus:l}}function b2(){const{project:t,uiConfig:a,taskFocus:l}=sl();return v.useEffect(()=>{var f,m;const s=(f=t==null?void 0:t.name)==null?void 0:f.trim(),c=(m=t==null?void 0:t.projectRoot)==null?void 0:m.trim(),o=c?c.split(/[/\\]/).filter(Boolean).pop():void 0;s?o&&o!==s?document.title=`${s} · ${o}`:document.title=`${s} · Agent Plan`:document.title="Agent Plan"},[t==null?void 0:t.name,t==null?void 0:t.projectRoot]),i2(l.active.length>0),u.jsxs(h2,{shortcuts:a.shortcuts,children:[u.jsx(y2,{}),u.jsx(Hb,{getKey:s=>s.pathname}),u.jsx(n2,{project:t,taskFocus:l,serverInfo:a.server})]})}function S2(){const t=zb(),a=fi(t),l=a&&t.status===503,s=a?l?"Planner web UI disconnected":`Request failed (${t.status})`:"Planner web UI unavailable",c=a?t.data||t.statusText:t instanceof Error?t.message:"The planner web UI could not reach its local server.";return v.useEffect(()=>{document.title="Agent Plan"},[]),u.jsx("div",{className:"page-shell min-h-screen",children:u.jsx("div",{className:"page-container flex min-h-screen items-center justify-center py-12",children:u.jsxs("div",{className:"surface-card max-w-2xl rounded-[24px] px-8 py-8",children:[u.jsx("p",{className:"text-sm font-semibold uppercase tracking-[0.24em] text-[var(--text-subtle)]",children:"Agent Plan"}),u.jsx("h1",{className:"mt-2 text-2xl font-black tracking-tight text-[var(--text)] md:text-3xl",children:s}),u.jsx("p",{className:"mt-4 text-sm text-[var(--text-muted)]",children:String(c)}),u.jsx("div",{className:"mt-6 grid gap-2 text-sm text-[var(--text-muted)]",children:l?u.jsxs(u.Fragment,{children:[u.jsx("p",{children:"Possible cause: Pi was closed or the local planner web server stopped."}),u.jsx("p",{children:"What to do:"}),u.jsxs("ul",{className:"grid gap-1 pl-5",children:[u.jsxs("li",{className:"list-disc",children:["restart Pi or run ",u.jsx("code",{children:"planner-web start"})]}),u.jsx("li",{className:"list-disc",children:"reopen this planner UI from the new session if needed"}),u.jsx("li",{className:"list-disc",children:"then reload this page"})]})]}):u.jsxs(u.Fragment,{children:[u.jsx("p",{children:"The request reached the planner server, but the server rejected it."}),u.jsx("p",{children:"Fix the validation issue above, then try again."})]})}),u.jsx("div",{className:"mt-6 flex flex-wrap gap-3",children:u.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"inline-flex min-h-9 items-center whitespace-nowrap rounded-[12px] bg-[var(--accent)] px-3 py-1.5 text-sm font-semibold text-white transition hover:opacity-90 sm:min-h-11 sm:rounded-[14px] sm:px-4 sm:py-2",children:"Reload page"})})]})})})}async function w2(){const[t,a,l]=await Promise.all([Zb(),ed(),qR()]);return{features:t,phases:a,activeTasks:l}}function E2({shortcut:t}){const a=f0(t);return a?u.jsx("span",{className:"hidden rounded-md border border-[var(--border-strong)] bg-[var(--surface-elevated)] px-2 py-0.5 text-[11px] font-bold tracking-wide text-[var(--text-muted)] sm:inline-block",children:u2(a)}):null}const N2={primary:"border-transparent bg-[var(--accent)] text-white hover:bg-[var(--accent-hover)]",secondary:"border-[var(--border-strong)] bg-[var(--surface-elevated)] text-[var(--text)] hover:bg-[var(--accent-soft)] hover:text-[var(--text)]",ghost:"border-transparent bg-transparent text-[var(--text-muted)] hover:bg-[var(--accent-soft)] hover:text-[var(--text)]",danger:"border-transparent bg-[var(--danger-soft)] text-[var(--color-status-blocked)] hover:bg-[color-mix(in_srgb,var(--danger-soft)_88%,black_12%)]"};function gt({variant:t="secondary",className:a="",children:l,shortcut:s,...c}){return u.jsxs("button",{className:`inline-flex min-h-9 items-center justify-center gap-1.5 whitespace-nowrap rounded-[12px] border px-3 py-1.5 text-sm font-semibold transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--surface)] disabled:cursor-not-allowed disabled:opacity-60 sm:min-h-11 sm:rounded-[14px] sm:px-4 sm:py-2 sm:gap-2 ${N2[t]} ${a}`,...c,children:[u.jsx("span",{className:"inline-flex items-center gap-1.5 sm:gap-2",children:l}),s?u.jsx(E2,{shortcut:s}):null]})}function Gt({className:t="",children:a,...l}){return u.jsx("div",{className:`surface-card p-6 ${t}`,...l,children:a})}function R2({decisions:t}){return t.length===0?null:u.jsxs("details",{className:"group rounded-[18px] border border-[var(--border)] bg-[var(--surface-card)] px-4 py-4",children:[u.jsxs("summary",{className:"cursor-pointer select-none font-semibold text-[var(--text)]",children:["Accepted decisions (",t.length,")"]}),u.jsx("div",{className:"mt-4 grid gap-3",children:t.map(a=>u.jsxs("div",{className:"rounded-[14px] border border-[var(--border)] bg-[var(--surface-elevated)] px-4 py-3",children:[u.jsx("p",{className:"text-sm font-semibold text-[var(--text)]",children:a.title}),a.decision?u.jsxs("div",{className:"mt-2 text-sm text-[var(--text-muted)]",children:[u.jsx("span",{className:"font-semibold text-[var(--text)]",children:"Decision:"})," ",u.jsx(bn,{text:a.decision})]}):null,a.rationale?u.jsxs("div",{className:"mt-1 text-sm text-[var(--text-muted)]",children:[u.jsx("span",{className:"font-semibold text-[var(--text)]",children:"Rationale:"})," ",u.jsx(bn,{text:a.rationale})]}):null,a.implementationNotes?u.jsxs("div",{className:"mt-1 text-sm text-[var(--text-muted)]",children:[u.jsx("span",{className:"font-semibold text-[var(--text)]",children:"Implementation:"})," ",u.jsx(bn,{text:a.implementationNotes})]}):null]},a.id))})]})}function j2({project:t}){var x,y,N;const a=t.scope??[],l=t.outOfScope??[],s=t.technologies??[],c=t.tools??[],o=t.globalRules??[],f=t.decisions??[],m=t.acceptedDecisions??[],p={beforePhaseStart:((x=t.workflowRules)==null?void 0:x.beforePhaseStart)??[],beforeTaskStart:((y=t.workflowRules)==null?void 0:y.beforeTaskStart)??[],afterPhaseComplete:((N=t.workflowRules)==null?void 0:N.afterPhaseComplete)??[]};return a.length>0||l.length>0||s.length>0||c.length>0||o.length>0||f.length>0||m.length>0||p.beforePhaseStart.length>0||p.beforeTaskStart.length>0||p.afterPhaseComplete.length>0?u.jsx(Gt,{className:"grid gap-4",children:u.jsxs("details",{className:"group",children:[u.jsx("summary",{className:"cursor-pointer select-none text-lg font-bold text-[var(--text)]",children:"AI Consolidated Context"}),u.jsxs("div",{className:"mt-4 grid gap-4",children:[a.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-[var(--text-subtle)]",children:"In scope"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:a.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,l.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-[var(--text-subtle)]",children:"Out of scope"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:l.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,s.length>0||c.length>0?u.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[s.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-[var(--text-subtle)]",children:"Technologies"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:s.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,c.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-[var(--text-subtle)]",children:"Tools"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:c.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null]}):null,o.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-[var(--text-subtle)]",children:"Global rules"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:o.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,p.beforePhaseStart.length>0||p.beforeTaskStart.length>0||p.afterPhaseComplete.length>0?u.jsxs("details",{className:"group rounded-[18px] border border-[var(--border)] bg-[var(--surface-card)] px-4 py-4",children:[u.jsx("summary",{className:"cursor-pointer select-none font-semibold text-[var(--text)]",children:"Workflow rules"}),u.jsxs("div",{className:"mt-4 grid gap-4 text-sm text-[var(--text-muted)]",children:[p.beforePhaseStart.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"font-semibold text-[var(--text)]",children:"Before phase start"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5",children:p.beforePhaseStart.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,p.beforeTaskStart.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"font-semibold text-[var(--text)]",children:"Before task start"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5",children:p.beforeTaskStart.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,p.afterPhaseComplete.length>0?u.jsxs("div",{children:[u.jsx("h3",{className:"font-semibold text-[var(--text)]",children:"After phase complete"}),u.jsx("ul",{className:"mt-2 grid gap-2 pl-5",children:p.afterPhaseComplete.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null]})]}):null,f.length>0?u.jsxs("details",{className:"group rounded-[18px] border border-[var(--border)] bg-[var(--surface-card)] px-4 py-4",children:[u.jsxs("summary",{className:"cursor-pointer select-none font-semibold text-[var(--text)]",children:["Legacy decisions (",f.length,")"]}),u.jsx("ul",{className:"mt-4 grid gap-2 pl-5 text-sm text-[var(--text-muted)]",children:f.map(w=>u.jsx("li",{className:"list-disc",children:w},w))})]}):null,u.jsx(R2,{decisions:m})]})]})}):null}function T2(t){try{return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t))}catch{return t}}function C2({features:t,phases:a}){const l=v.useMemo(()=>{const s=new Map(t.map(c=>[c.id,c.name]));return a.flatMap(c=>c.tasks.filter(o=>o.status==="done").map(o=>({task:o,phase:c,feature:t.find(f=>f.id===c.featureId),featureName:c.featureId?s.get(c.featureId)??c.featureId:"Unlinked feature",completedAt:o.completedAt||o.updatedAt}))).sort((c,o)=>o.completedAt.localeCompare(c.completedAt)).slice(0,3)},[t,a]);return u.jsxs(Gt,{className:"grid gap-4",children:[u.jsxs("div",{children:[u.jsx("h2",{className:"text-lg font-bold text-[var(--text)]",children:"Latest completed tasks"}),u.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:"Most recently completed tasks, ordered by completion timestamp."})]}),u.jsx("div",{className:"grid gap-3",children:l.length>0?l.map(({task:s,phase:c,feature:o,featureName:f,completedAt:m})=>u.jsxs("div",{className:"surface-card grid min-w-0 grid-cols-1 gap-1 px-4 py-3 transition hover:border-[var(--accent)] hover:bg-[var(--accent-soft)]",children:[u.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[u.jsx(n0,{featureNum:o==null?void 0:o.number,phaseNum:c.number,taskNum:s.number,featureId:o==null?void 0:o.id,phaseId:c.id,taskId:s.id,shortId:s.shortId,featureName:o==null?void 0:o.name,phaseName:c.title,taskTitle:s.title}),u.jsx("span",{className:"ml-auto shrink-0",children:u.jsx(tr,{status:s.status})})]}),u.jsx(Ve,{to:c.featureId?`/features/${c.featureId}/phases/${c.id}/tasks/${s.id}`:"/features",className:"entity-link--task min-w-0 break-words text-sm font-semibold underline-offset-4 [overflow-wrap:anywhere]",children:s.title}),u.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-xs text-[var(--text-muted)]",children:[u.jsx(t0,{type:"phase",featureNum:o==null?void 0:o.number}),u.jsxs("span",{className:"min-w-0 truncate",children:[f," · ",c.title]})]}),u.jsxs("div",{className:"text-[11px] text-[var(--text-subtle)]",children:["Completed ",T2(m)]})]},s.id)):u.jsx("p",{className:"py-4 text-center text-sm text-[var(--text-muted)]",children:"No completed tasks yet."})})]})}const fx=1440*60*1e3;function D2(t){const a=Date.now()-new Date(t).getTime();if(a<0)return"just now";const l=Math.floor(a/1e3);if(l<60)return`${l}s ago`;const s=Math.floor(l/60);return s<60?`${s}m ago`:new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(t))}function A2({features:t,phases:a}){const[,l]=v.useState(0),s=Date.now(),c=v.useMemo(()=>{const o=new Map(t.map(f=>[f.id,f.name]));return a.flatMap(f=>f.tasks.map(m=>({task:m,phase:f,feature:t.find(p=>p.id===f.featureId),featureName:f.featureId?o.get(f.featureId)??f.featureId:"Unlinked feature",createdAt:m.createdAt}))).filter(f=>{const m=new Date(f.createdAt).getTime();return Number.isFinite(m)&&s-m<fx&&s-m>=0&&f.task.status==="planned"&&!f.task.startedAt}).sort((f,m)=>m.createdAt.localeCompare(f.createdAt)).slice(0,10)},[t,a,s]);return v.useEffect(()=>{if(c.length===0)return;const o=c.reduce((m,p)=>{const g=new Date(p.createdAt).getTime()+fx-Date.now();return Math.min(m,g)},1/0);if(!Number.isFinite(o)||o<=0)return;const f=window.setTimeout(()=>l(m=>m+1),o+50);return()=>window.clearTimeout(f)},[c]),c.length===0?null:u.jsxs(Gt,{className:"grid gap-4",children:[u.jsxs("div",{children:[u.jsx("h2",{className:"text-lg font-bold text-[var(--text)]",children:"New Added Tasks"}),u.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:"Tasks created in the last 24 hours."})]}),u.jsx("div",{className:"grid gap-3",children:c.map(({task:o,phase:f,feature:m,featureName:p,createdAt:g})=>u.jsxs("div",{className:"surface-card grid min-w-0 grid-cols-1 gap-1 border-[color:color-mix(in_srgb,var(--color-status-done)_0%,transparent)] px-4 py-3 transition hover:border-[var(--accent)] hover:bg-[var(--accent-soft)]",children:[u.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[u.jsx(n0,{featureNum:m==null?void 0:m.number,phaseNum:f.number,taskNum:o.number,featureId:m==null?void 0:m.id,phaseId:f.id,taskId:o.id,shortId:o.shortId,featureName:m==null?void 0:m.name,phaseName:f.title,taskTitle:o.title}),u.jsx("span",{className:"inline-flex items-center rounded-full bg-[color:color-mix(in_srgb,var(--accent)_18%,transparent)] px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider text-[var(--accent)]",children:"New"}),u.jsx("span",{className:"ml-auto shrink-0",children:u.jsx(tr,{status:o.status})})]}),u.jsx(Ve,{to:f.featureId?`/features/${f.featureId}/phases/${f.id}/tasks/${o.id}`:"/features",className:"entity-link--task min-w-0 break-words text-sm font-semibold underline-offset-4 [overflow-wrap:anywhere]",children:o.title}),u.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-xs text-[var(--text-muted)]",children:[u.jsx(t0,{type:"phase",featureNum:m==null?void 0:m.number}),u.jsxs("span",{className:"min-w-0 truncate",children:[p," · ",f.title]})]}),u.jsxs("div",{className:"text-[11px] text-[var(--text-subtle)]",children:["Added ",D2(g)]})]},o.id))})]})}const k2=new Set(["in-progress"]),O2=new Set(["planned","waiting","blocked","deferred"]),M2=new Set(["done","canceled","rejected"]);function h0(t){return t==="discovery"?"in-progress":t==="draft"?"planned":t}function _2(t){const a={planned:0,inProgress:0,waiting:0,blocked:0,deferred:0,done:0,canceled:0,rejected:0};for(const l of t)switch(l){case"planned":a.planned++;break;case"in-progress":a.inProgress++;break;case"waiting":a.waiting++;break;case"blocked":a.blocked++;break;case"deferred":a.deferred++;break;case"done":a.done++;break;case"canceled":a.canceled++;break;case"rejected":a.rejected++;break}return a}function L2(){return{planned:0,inProgress:0,waiting:0,blocked:0,deferred:0,done:0,canceled:0,rejected:0}}function m0(t){const a=t,l=_2(a),s=a.length;if(s===0)return{displayStatus:"planned",breakdown:L2(),hasStarted:!1,totalChildren:0,meaningfulChildren:0};const c=a.filter(g=>g!=="canceled"&&g!=="rejected"),o=c.length,f=c.some(g=>g!=="planned");if(c.some(g=>k2.has(g)))return{displayStatus:"in-progress",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o};if(a.every(g=>M2.has(g)))return a.every(g=>g==="done")?{displayStatus:"done",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:a.every(g=>g==="canceled")?{displayStatus:"canceled",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:a.every(g=>g==="rejected")?{displayStatus:"rejected",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:{displayStatus:"closed",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o};const m=c.filter(g=>O2.has(g));return m.length>0&&m.every(g=>g==="waiting")?{displayStatus:"waiting",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:m.length>0&&m.every(g=>g==="blocked")?{displayStatus:"blocked",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:m.length>0&&m.every(g=>g==="deferred")?{displayStatus:"deferred",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:m.length>0&&m.every(g=>g==="planned")&&!f?{displayStatus:"planned",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}:{displayStatus:"started",breakdown:l,hasStarted:f,totalChildren:s,meaningfulChildren:o}}function Tm(t){const a=t.map(l=>h0(l.status));return m0(a)}function Cm(t){const a=t.map(l=>h0(l.status));return m0(a)}function p0(t){return Cm(t)}function g0(t){return Tm(t)}const No={key:"priority",direction:"asc"},z2=4200;function U2(t){return t.reduce((a,l)=>a+l.tasks.length,0)}function B2(t){return t.reduce((a,l)=>a+l.tasks.filter(s=>s.status==="done").length,0)}function H2(t){return String(t&&t>0?t:0).padStart(3,"0")}const $2={draft:0,discovery:1,planned:2,waiting:3,blocked:4,deferred:5,"in-progress":7,done:8,canceled:9,rejected:10};function hx(t,a){if(a==="title")return"name"in t?t.name:t.title;if(a==="status")return $2[t.status]??99;if(a==="startedAt"){if("startedAt"in t){const l=t.startedAt;return l?new Date(l).getTime():Number.MAX_SAFE_INTEGER}return Number.MAX_SAFE_INTEGER}if(a==="completedAt"){if("completedAt"in t){const l=t.completedAt;return l?new Date(l).getTime():Number.MAX_SAFE_INTEGER}return Number.MAX_SAFE_INTEGER}if(a==="shortId")return t.shortId??"";if(a==="priority"||a==="number")return t[a]??0;if(a==="createdAt"||a==="updatedAt"){const l=t[a];return l?new Date(l).getTime():0}return 0}function jo(t,a,l,s){const c=hx(t,l),o=hx(a,l);let f;return typeof c=="number"&&typeof o=="number"?f=c-o:f=String(c).localeCompare(String(o)),f===0&&(f=(t.priority??0)-(a.priority??0)||t.number-a.number||t.createdAt.localeCompare(a.createdAt)),s==="desc"?-f:f}function q2(t,a,l=No){const s=new Map;for(const c of a){if(!c.featureId)continue;const o=s.get(c.featureId)??[];o.push(c),s.set(c.featureId,o)}return t.map(c=>{const o=s.get(c.id)??[],f=o.reduce((x,y)=>x+y.tasks.length,0),m=o.reduce((x,y)=>x+y.tasks.filter(N=>N.status==="done").length,0),p=o.map(x=>{const y=[...x.tasks].sort((w,S)=>jo(w,S,l.key,l.direction)),N=y.some(w=>w.status==="in-progress");return{phase:x,totalTasks:x.tasks.length,doneTasks:x.tasks.filter(w=>w.status==="done").length,allTasks:y,hasActiveTask:N,display:Tm(y)}}),g=p.some(({phase:x,allTasks:y})=>x.status==="in-progress"||x.status==="discovery"||y.some(N=>N.status==="in-progress"));return{feature:c,totalTasks:f,doneTasks:m,allPhases:p.sort((x,y)=>jo(x.phase,y.phase,l.key,l.direction)),hasActiveTask:p.some(x=>x.hasActiveTask),isActive:g,display:Cm(p.map(x=>x.phase))}}).sort((c,o)=>jo(c.feature,o.feature,l.key,l.direction))}function du({title:t,value:a,valueSuffix:l,subtitle:s,icon:c,valueClassName:o,iconClassName:f}){return u.jsxs(Gt,{className:"flex items-start justify-between gap-4",children:[u.jsxs("div",{className:"min-w-0",children:[u.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.22em] text-[var(--text-subtle)]",children:t}),u.jsxs("div",{className:"mt-2 flex items-end gap-2",children:[u.jsx("p",{className:`text-3xl font-black tracking-tight ${o??"text-[var(--text)]"}`,children:a}),l?u.jsx("span",{className:"pb-1 text-sm font-semibold text-[var(--text-muted)]",children:l}):null]}),u.jsx("p",{className:"mt-1 text-sm text-[var(--text-muted)]",children:s})]}),u.jsx("div",{className:`surface-card flex h-11 w-11 shrink-0 items-center justify-center rounded-2xl border border-[var(--border)] bg-[var(--accent-soft)] ${f??"text-[var(--accent)]"}`,children:c})]})}function mx(t){return t>=80?"text-emerald-600 dark:text-emerald-400":t>=30?"text-amber-600 dark:text-amber-400":"text-rose-600 dark:text-rose-400"}function I2({features:t,phases:a}){const l=new Map;for(const y of a)y.featureId&&l.set(y.featureId,[...l.get(y.featureId)??[],y]);const s=t.filter(y=>{const N=l.get(y.id)??[];return Cm(N).displayStatus==="done"}).length,c=Math.max(t.length-s,0),o=a.filter(y=>Tm(y.tasks).displayStatus==="done").length,f=Math.max(a.length-o,0),m=U2(a),p=B2(a),g=Math.max(m-p,0),x=m>0?Math.round(p/m*100):0;return u.jsxs("div",{className:"grid gap-4 lg:grid-cols-4",children:[u.jsx(du,{title:"Features",value:String(t.length),valueSuffix:"total",subtitle:u.jsxs(u.Fragment,{children:[u.jsxs("span",{className:"font-semibold text-emerald-600 dark:text-emerald-400",children:[s," done"]}),u.jsx("span",{children:" · "}),u.jsxs("span",{className:"font-semibold text-amber-600 dark:text-amber-400",children:[c," left"]})]}),icon:u.jsx(ku,{className:"h-4 w-4"})}),u.jsx(du,{title:"Phases",value:String(a.length),valueSuffix:"total",subtitle:u.jsxs(u.Fragment,{children:[u.jsxs("span",{className:"font-semibold text-emerald-600 dark:text-emerald-400",children:[o," done"]}),u.jsx("span",{children:" · "}),u.jsxs("span",{className:"font-semibold text-amber-600 dark:text-amber-400",children:[f," left"]})]}),icon:u.jsx(ON,{className:"h-4 w-4"})}),u.jsx(du,{title:"Tasks",value:String(m),valueSuffix:"total",subtitle:u.jsxs(u.Fragment,{children:[u.jsxs("span",{className:"font-semibold text-emerald-600 dark:text-emerald-400",children:[p," done"]}),u.jsx("span",{children:" · "}),u.jsxs("span",{className:"font-semibold text-amber-600 dark:text-amber-400",children:[g," left"]})]}),icon:u.jsx(Po,{className:"h-4 w-4"})}),u.jsx(du,{title:"Completion",value:`${x}%`,subtitle:"Task completion rate",valueClassName:mx(x),iconClassName:mx(x),icon:u.jsx(xm,{className:"h-4 w-4"})})]})}function P2(){for(var t=arguments.length,a=new Array(t),l=0;l<t;l++)a[l]=arguments[l];return v.useMemo(()=>s=>{a.forEach(c=>c(s))},a)}const ad=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function vi(t){const a=Object.prototype.toString.call(t);return a==="[object Window]"||a==="[object global]"}function Dm(t){return"nodeType"in t}function pa(t){var a,l;return t?vi(t)?t:Dm(t)&&(a=(l=t.ownerDocument)==null?void 0:l.defaultView)!=null?a:window:window}function Am(t){const{Document:a}=pa(t);return t instanceof a}function Yo(t){return vi(t)?!1:t instanceof pa(t).HTMLElement}function v0(t){return t instanceof pa(t).SVGElement}function yi(t){return t?vi(t)?t.document:Dm(t)?Am(t)?t:Yo(t)||v0(t)?t.ownerDocument:document:document:document}const hr=ad?v.useLayoutEffect:v.useEffect;function rd(t){const a=v.useRef(t);return hr(()=>{a.current=t}),v.useCallback(function(){for(var l=arguments.length,s=new Array(l),c=0;c<l;c++)s[c]=arguments[c];return a.current==null?void 0:a.current(...s)},[])}function V2(){const t=v.useRef(null),a=v.useCallback((s,c)=>{t.current=setInterval(s,c)},[]),l=v.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[a,l]}function _o(t,a){a===void 0&&(a=[t]);const l=v.useRef(t);return hr(()=>{l.current!==t&&(l.current=t)},a),l}function Go(t,a){const l=v.useRef();return v.useMemo(()=>{const s=t(l.current);return l.current=s,s},[...a])}function _u(t){const a=rd(t),l=v.useRef(null),s=v.useCallback(c=>{c!==l.current&&(a==null||a(c,l.current)),l.current=c},[]);return[l,s]}function Lu(t){const a=v.useRef();return v.useEffect(()=>{a.current=t},[t]),a.current}let Nh={};function Xo(t,a){return v.useMemo(()=>{if(a)return a;const l=Nh[t]==null?0:Nh[t]+1;return Nh[t]=l,t+"-"+l},[t,a])}function y0(t){return function(a){for(var l=arguments.length,s=new Array(l>1?l-1:0),c=1;c<l;c++)s[c-1]=arguments[c];return s.reduce((o,f)=>{const m=Object.entries(f);for(const[p,g]of m){const x=o[p];x!=null&&(o[p]=x+t*g)}return o},{...a})}}const di=y0(1),zu=y0(-1);function F2(t){return"clientX"in t&&"clientY"in t}function ld(t){if(!t)return!1;const{KeyboardEvent:a}=pa(t.target);return a&&t instanceof a}function Y2(t){if(!t)return!1;const{TouchEvent:a}=pa(t.target);return a&&t instanceof a}function Uu(t){if(Y2(t)){if(t.touches&&t.touches.length){const{clientX:a,clientY:l}=t.touches[0];return{x:a,y:l}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:a,clientY:l}=t.changedTouches[0];return{x:a,y:l}}}return F2(t)?{x:t.clientX,y:t.clientY}:null}const ql=Object.freeze({Translate:{toString(t){if(!t)return;const{x:a,y:l}=t;return"translate3d("+(a?Math.round(a):0)+"px, "+(l?Math.round(l):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:a,scaleY:l}=t;return"scaleX("+a+") scaleY("+l+")"}},Transform:{toString(t){if(t)return[ql.Translate.toString(t),ql.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:a,duration:l,easing:s}=t;return a+" "+l+"ms "+s}}}),px="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function G2(t){return t.matches(px)?t:t.querySelector(px)}const X2={display:"none"};function Q2(t){let{id:a,value:l}=t;return cn.createElement("div",{id:a,style:X2},l)}function K2(t){let{id:a,announcement:l,ariaLiveType:s="assertive"}=t;const c={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return cn.createElement("div",{id:a,style:c,role:"status","aria-live":s,"aria-atomic":!0},l)}function Z2(){const[t,a]=v.useState("");return{announce:v.useCallback(s=>{s!=null&&a(s)},[]),announcement:t}}const x0=v.createContext(null);function J2(t){const a=v.useContext(x0);v.useEffect(()=>{if(!a)throw new Error("useDndMonitor must be used within a children of <DndContext>");return a(t)},[t,a])}function W2(){const[t]=v.useState(()=>new Set),a=v.useCallback(s=>(t.add(s),()=>t.delete(s)),[t]);return[v.useCallback(s=>{let{type:c,event:o}=s;t.forEach(f=>{var m;return(m=f[c])==null?void 0:m.call(f,o)})},[t]),a]}const ej={draggable:`
279
279
  To pick up a draggable item, press the space bar.
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Agent Plan</title>
7
7
  <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='13' fill='%237b68ee'/%3E%3Ctext x='16' y='17' text-anchor='middle' dominant-baseline='middle' font-size='16' font-weight='bold' fill='white'%3EA%3C/text%3E%3C/svg%3E" />
8
- <script type="module" crossorigin src="/assets/index-MvITvgH7.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-B2Nv9Ykv.css">
8
+ <script type="module" crossorigin src="/assets/index-ZGucilYi.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-COpkshJD.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -1 +0,0 @@
1
- @import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap";/*! tailwindcss v4.3.1 | 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-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--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 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-xl:24px;--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-status-draft:#94a3b8;--color-status-discovery:#6366f1;--color-status-planned:#0ea5e9;--color-status-in-progress:#f59e0b;--color-status-paused:#ea580c;--color-status-done:#22c55e;--color-status-blocked:#ef4444;--color-status-canceled:#94a3b8;--color-status-waiting:#64748b;--color-status-deferred:#8b5cf6;--color-status-rejected:#f43f5e;--color-status-started:#6366f1;--color-status-closed:#0d9488}}@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}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.right-0{right:0}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[150\]{z-index:150}.z-\[200\]{z-index:200}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing) * 2)}.my-1{margin-block:var(--spacing)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-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-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-px{height:1px}.max-h-\[32dvh\]{max-height:32dvh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.min-h-0{min-height:0}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-52{width:calc(var(--spacing) * 52)}.w-\[1px\]{width:1px}.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-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-0{rotate:0deg}.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)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.scroll-mt-28{scroll-margin-top:calc(var(--spacing) * 28)}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:var(--spacing)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[24px\]{border-radius:24px}.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-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[color\:color-mix\(in_srgb\,var\(--color-status-done\)_0\%\,transparent\)\]{border-color:#0000}@supports (color:color-mix(in lab,red,red)){.border-\[color\:color-mix\(in_srgb\,var\(--color-status-done\)_0\%\,transparent\)\]{border-color:color-mix(in srgb,var(--color-status-done) 0%,transparent)}}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--border-strong\)\]{border-color:var(--border-strong)}.border-\[var\(--danger-soft\)\]{border-color:var(--danger-soft)}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-transparent{border-color:#0000}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_8\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_8\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 8%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_10\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_10\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 10%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_12\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_12\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 12%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_16\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_16\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 16%,transparent)}}.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_18\%\,transparent\)\]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-\[color\:color-mix\(in_srgb\,var\(--accent\)_18\%\,transparent\)\]{background-color:color-mix(in srgb,var(--accent) 18%,transparent)}}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--accent-soft\)\]{background-color:var(--accent-soft)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--danger-soft\)\],.bg-\[var\(--danger-soft\)\]\/50{background-color:var(--danger-soft)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--danger-soft\)\]\/50{background-color:color-mix(in oklab,var(--danger-soft) 50%,transparent)}}.bg-\[var\(--surface\)\]{background-color:var(--surface)}.bg-\[var\(--surface-card\)\]{background-color:var(--surface-card)}.bg-\[var\(--surface-elevated\)\],.bg-\[var\(--surface-elevated\)\]\/95{background-color:var(--surface-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--surface-elevated\)\]\/95{background-color:color-mix(in oklab,var(--surface-elevated) 95%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-current{background-color:currentColor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.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-5{padding-inline:calc(var(--spacing) * 5)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.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-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pl-1{padding-left:var(--spacing)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-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-\[0\.95em\]{font-size:.95em}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-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-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.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\(--accent\)\]{color:var(--accent)}.text-\[var\(--color-status-blocked\)\]{color:var(--color-status-blocked)}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-\[var\(--text-subtle\)\]{color:var(--text-subtle)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-\[var\(--accent\)\]{accent-color:var(--accent)}.opacity-60{opacity:.6}.shadow-sm{--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-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[color\:color-mix\(in_srgb\,var\(--accent\)_55\%\,transparent\)\]{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.ring-\[color\:color-mix\(in_srgb\,var\(--accent\)_55\%\,transparent\)\]{--tw-ring-color:color-mix(in srgb,var(--accent) 55%,transparent)}}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-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-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-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))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:border-\[var\(--accent\)\]:is(:where(.group):hover *){border-color:var(--accent)}.group-hover\:text-\[var\(--accent\)\]:is(:where(.group):hover *){color:var(--accent)}.hover\:border-\[var\(--accent\)\]:hover{border-color:var(--accent)}.hover\:bg-\[color-mix\(in_srgb\,var\(--danger-soft\)_88\%\,black_12\%\)\]:hover{background-color:var(--danger-soft)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_srgb\,var\(--danger-soft\)_88\%\,black_12\%\)\]:hover{background-color:color-mix(in srgb,var(--danger-soft) 88%,black 12%)}}.hover\:bg-\[var\(--accent\)\]:hover{background-color:var(--accent)}.hover\:bg-\[var\(--accent-hover\)\]:hover{background-color:var(--accent-hover)}.hover\:bg-\[var\(--accent-soft\)\]:hover{background-color:var(--accent-soft)}.hover\:bg-\[var\(--surface-card\)\]:hover{background-color:var(--surface-card)}.hover\:bg-\[var\(--surface-elevated\)\]:hover,.hover\:bg-\[var\(--surface-elevated\)\]\/65:hover{background-color:var(--surface-elevated)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--surface-elevated\)\]\/65:hover{background-color:color-mix(in oklab,var(--surface-elevated) 65%,transparent)}}.hover\:bg-\[var\(--surface-hover\)\]\/60:hover{background-color:var(--surface-hover)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[var\(--surface-hover\)\]\/60:hover{background-color:color-mix(in oklab,var(--surface-hover) 60%,transparent)}}.hover\:bg-\[var\(--surface-strong\)\]:hover{background-color:var(--surface-strong)}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus-visible\:bg-\[var\(--surface-hover\)\]\/60:focus-visible{background-color:var(--surface-hover)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-\[var\(--surface-hover\)\]\/60:focus-visible{background-color:color-mix(in oklab,var(--surface-hover) 60%,transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--accent\)\]:focus-visible{--tw-ring-color:var(--accent)}.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\:ring-offset-\[var\(--surface\)\]:focus-visible{--tw-ring-offset-color:var(--surface)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:opacity-60:disabled{opacity:.6}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media(min-width:40rem){.sm\:ml-4{margin-left:calc(var(--spacing) * 4)}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-block{display:inline-block}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-9{height:calc(var(--spacing) * 9)}.sm\:min-h-8{min-height:calc(var(--spacing) * 8)}.sm\:min-h-9{min-height:calc(var(--spacing) * 9)}.sm\:min-h-11{min-height:calc(var(--spacing) * 11)}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-9{width:calc(var(--spacing) * 9)}.sm\:w-auto{width:auto}.sm\:flex-1{flex:1}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sm\:rounded-\[10px\]{border-radius:10px}.sm\:rounded-\[12px\]{border-radius:12px}.sm\:rounded-\[14px\]{border-radius:14px}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:pl-4{padding-left:calc(var(--spacing) * 4)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:48rem){.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-\[calc\(100vh-3rem\)\]{max-height:calc(100vh - 3rem)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_200px_auto_auto\]{grid-template-columns:minmax(0,1fr) 200px auto auto}.md\:grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:justify-end{justify-content:flex-end}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media(min-width:64rem){.lg\:block{display:block}.lg\:contents{display:contents}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,150px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,150px) 124px 44px 44px}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,168px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,168px) 124px 44px 44px}.lg\:items-center{align-items:center}}@media(min-width:80rem){.xl\:block{display:block}.xl\:contents{display:contents}.xl\:hidden{display:none}.xl\:w-auto{width:auto}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,132px\)_minmax\(0\,152px\)_124px_44px_44px\]{grid-template-columns:minmax(0,1fr) minmax(0,132px) minmax(0,152px) 124px 44px 44px}.xl\:items-center{align-items:center}}@media(prefers-color-scheme:dark){.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-emerald-400{color:var(--color-emerald-400)}.dark\:text-rose-400{color:var(--color-rose-400)}.dark\:text-sky-400{color:var(--color-sky-400)}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:h-1\.5::-webkit-scrollbar{height:calc(var(--spacing) * 1.5)}}:root{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius-panel:24px;--radius-card:20px;--radius-input:14px;--container-width:1180px;--surface-blur:18px;--bg-base:#f8fafc;--bg-gradient-a:#3b82f62e;--bg-gradient-b:#8b5cf629;--surface:#ffffffc2;--surface-strong:#ffffffe6;--surface-elevated:#fffffffa;--border:#94a3b838;--border-strong:#94a3b857;--text:#0f172a;--text-muted:#475569;--text-subtle:#64748b;--accent:#6366f1;--accent-soft:#6366f124;--accent-hover:#4f46e5;--danger-soft:#ef44441f;--color-entity-feature:#8b5cf6;--color-entity-phase:#06b6d4;--color-entity-task:#10b981;--shadow-panel:0 20px 60px -24px #0f172a38;--shadow-card:0 12px 30px -18px #0f172a2e;color-scheme:light}[data-theme=dark]{--bg-base:#08111f;--bg-gradient-a:#3b82f61f;--bg-gradient-b:#8b5cf624;--surface:#0f172abd;--surface-strong:#0f172ae0;--surface-elevated:#0f172af5;--border:#94a3b824;--border-strong:#94a3b847;--text:#f8fafc;--text-muted:#94a3b8;--text-subtle:#64748b;--accent:#818cf8;--accent-soft:#818cf829;--accent-hover:#6366f1;--danger-soft:#ef44442e;--color-entity-feature:#a78bfa;--color-entity-phase:#22d3ee;--color-entity-task:#34d399;--shadow-panel:0 20px 60px -24px #0009;--shadow-card:0 12px 30px -18px #0000006b;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-sans);color:var(--text);background-color:var(--bg-base);background-image:radial-gradient(50% 55% at 0% 0%,var(--bg-gradient-a) 0%,transparent 70%),radial-gradient(42% 48% at 100% 0%,var(--bg-gradient-b) 0%,transparent 64%);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;line-height:1.5}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.page-shell{min-height:100vh}.page-container{width:min(100% - 3rem,var(--container-width));margin-inline:auto}.grid>*,.formatted-text{min-width:0}.formatted-text p,.formatted-text li,.formatted-text blockquote,.formatted-text a,.formatted-text code{overflow-wrap:anywhere}.surface-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);-webkit-backdrop-filter:blur(var(--surface-blur)) saturate(140%);box-shadow:var(--shadow-panel)}.surface-card{background:var(--surface-strong);border-radius:var(--radius-card);-webkit-backdrop-filter:blur(14px)saturate(130%);box-shadow:var(--shadow-card)}.field-control{border-radius:var(--radius-input);border:1px solid var(--border-strong);background:var(--surface-elevated);width:100%;min-height:48px;color:var(--text);outline:none;padding:.75rem .95rem}.field-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-textarea{resize:vertical;min-height:120px}.status-chip{border:1px solid var(--border-strong);letter-spacing:.02em;text-transform:capitalize;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .65rem;font-size:.72rem;font-weight:700;display:inline-flex}.status-draft{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-draft{background:color-mix(in srgb,var(--color-status-draft) 14%,transparent)}}.status-draft{color:var(--color-status-draft)}.status-discovery{background:#6366f124}@supports (color:color-mix(in lab,red,red)){.status-discovery{background:color-mix(in srgb,var(--color-status-discovery) 14%,transparent)}}.status-discovery{color:var(--color-status-discovery)}.status-planned{background:#0ea5e924}@supports (color:color-mix(in lab,red,red)){.status-planned{background:color-mix(in srgb,var(--color-status-planned) 14%,transparent)}}.status-planned{color:var(--color-status-planned)}.status-in-progress{background:#f59e0b29}@supports (color:color-mix(in lab,red,red)){.status-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 16%,transparent)}}.status-in-progress{color:var(--color-status-in-progress)}.status-paused{background:#ea580c24}@supports (color:color-mix(in lab,red,red)){.status-paused{background:color-mix(in srgb,var(--color-status-paused) 14%,transparent)}}.status-paused{color:var(--color-status-paused)}.status-done{background:#22c55e29}@supports (color:color-mix(in lab,red,red)){.status-done{background:color-mix(in srgb,var(--color-status-done) 16%,transparent)}}.status-done{color:var(--color-status-done)}.status-blocked{background:#ef444426}@supports (color:color-mix(in lab,red,red)){.status-blocked{background:color-mix(in srgb,var(--color-status-blocked) 15%,transparent)}}.status-blocked{color:var(--color-status-blocked)}.status-canceled{background:#94a3b81f}@supports (color:color-mix(in lab,red,red)){.status-canceled{background:color-mix(in srgb,var(--color-status-canceled) 12%,transparent)}}.status-canceled{color:var(--color-status-canceled)}.status-rejected{background:#f43f5e1f}@supports (color:color-mix(in lab,red,red)){.status-rejected{background:color-mix(in srgb,var(--color-status-rejected) 12%,transparent)}}.status-rejected{color:var(--color-status-rejected)}.status-deferred{background:#8b5cf61f}@supports (color:color-mix(in lab,red,red)){.status-deferred{background:color-mix(in srgb,var(--color-status-deferred) 12%,transparent)}}.status-deferred{color:var(--color-status-deferred)}.status-waiting{background:#64748b1f}@supports (color:color-mix(in lab,red,red)){.status-waiting{background:color-mix(in srgb,var(--color-status-waiting) 12%,transparent)}}.status-waiting{color:var(--color-status-waiting)}.status-started{background:#6366f11a}@supports (color:color-mix(in lab,red,red)){.status-started{background:color-mix(in srgb,var(--color-status-started) 10%,transparent)}}.status-started{color:var(--color-status-started)}.status-closed{background:#0d94881f}@supports (color:color-mix(in lab,red,red)){.status-closed{background:color-mix(in srgb,var(--color-status-closed) 12%,transparent)}}.status-closed{color:var(--color-status-closed)}.status-pattern-dashed{border-style:dashed;border-color:#6366f1b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed{border-color:color-mix(in srgb,var(--color-status-started) 70%,transparent)}}.status-pattern-dashed-planned{border-style:dashed;border-color:#0ea5e9a6}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-planned{border-color:color-mix(in srgb,var(--color-status-planned) 65%,transparent)}}.status-pattern-dashed-started{border-style:dashed;border-color:#6366f1b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-started{border-color:color-mix(in srgb,var(--color-status-started) 70%,transparent)}}.status-pattern-dashed-paused{border-style:dashed;border-color:#ea580cb3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-paused{border-color:color-mix(in srgb,var(--color-status-paused) 70%,transparent)}}.status-pattern-dashed-waiting{border-style:dashed;border-color:#64748bb3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-waiting{border-color:color-mix(in srgb,var(--color-status-waiting) 70%,transparent)}}.status-pattern-dashed-deferred{border-style:dashed;border-color:#8b5cf6b3}@supports (color:color-mix(in lab,red,red)){.status-pattern-dashed-deferred{border-color:color-mix(in srgb,var(--color-status-deferred) 70%,transparent)}}@keyframes ap-status-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-status-in-progress) 40%,transparent)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-status-in-progress) 12%,transparent)}}.status-pattern-pulse{animation:2s ease-in-out infinite ap-status-pulse}.status-pattern-stripe{background-image:repeating-linear-gradient(135deg,#0000 0,#0000 10px,#0d948814 10px,#0d948814 20px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-stripe{background-image:repeating-linear-gradient(135deg,transparent 0 10px,color-mix(in srgb,var(--color-status-closed) 8%,transparent) 10px 20px)}}.status-pattern-hatch{background-image:repeating-linear-gradient(45deg,#0000 0,#0000 8px,#94a3b814 8px,#94a3b814 16px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-hatch{background-image:repeating-linear-gradient(45deg,transparent 0 8px,color-mix(in srgb,var(--color-status-canceled) 8%,transparent) 8px 16px)}}.status-pattern-crosshatch{background-image:repeating-linear-gradient(45deg,#0000 0,#0000 4px,#f43f5e14 4px,#f43f5e14 8px),repeating-linear-gradient(-45deg,#0000 0,#0000 4px,#f43f5e14 4px,#f43f5e14 8px)}@supports (color:color-mix(in lab,red,red)){.status-pattern-crosshatch{background-image:repeating-linear-gradient(45deg,transparent 0 4px,color-mix(in srgb,var(--color-status-rejected) 8%,transparent) 4px 8px),repeating-linear-gradient(-45deg,transparent 0 4px,color-mix(in srgb,var(--color-status-rejected) 8%,transparent) 4px 8px)}}@media(prefers-reduced-motion:reduce){.status-pattern-pulse{animation:none}}.plan-description{background:var(--surface-elevated);border-left:3px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.plan-description{border-left:3px solid color-mix(in srgb,var(--accent) 55%,transparent)}}.plan-description{border-radius:var(--radius-card);color:var(--text);padding:.85rem 1rem}.plan-description p{margin:0}.entity-badge{border:1px solid var(--border-strong);letter-spacing:.03em;text-transform:uppercase;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.72rem;font-weight:800;display:inline-flex}.entity-badge--feature{color:var(--color-entity-feature);background:var(--color-entity-feature)}@supports (color:color-mix(in lab,red,red)){.entity-badge--feature{background:color-mix(in srgb,var(--color-entity-feature) 14%,transparent)}}.entity-badge--phase{color:var(--color-entity-phase);background:var(--color-entity-phase)}@supports (color:color-mix(in lab,red,red)){.entity-badge--phase{background:color-mix(in srgb,var(--color-entity-phase) 14%,transparent)}}.entity-badge--task{color:var(--color-entity-task);background:var(--color-entity-task)}@supports (color:color-mix(in lab,red,red)){.entity-badge--task{background:color-mix(in srgb,var(--color-entity-task) 14%,transparent)}}.entity-badge--requirement{color:var(--accent);background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.entity-badge--requirement{background:color-mix(in srgb,var(--accent) 14%,transparent)}}.entity-link--feature{color:var(--color-entity-feature)}.entity-link--phase{color:var(--color-entity-phase)}.entity-link--task{color:var(--color-entity-task)}.entity-path-badge{border:1px solid var(--border-strong);background:var(--surface-elevated);font-variant-numeric:tabular-nums;border-radius:7px;align-items:stretch;line-height:1;display:inline-flex;overflow:hidden}.entity-path-seg{letter-spacing:.02em;align-items:center;padding:.24rem .5rem;font-size:.72rem;font-weight:800;display:inline-flex}.entity-path-seg--feature{color:var(--color-entity-feature);background:var(--color-entity-feature)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--feature{background:color-mix(in srgb,var(--color-entity-feature) 14%,transparent)}}.entity-path-seg--phase{color:var(--color-entity-phase);background:var(--color-entity-phase)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--phase{background:color-mix(in srgb,var(--color-entity-phase) 14%,transparent)}}.entity-path-seg--task{color:var(--color-entity-task);background:var(--color-entity-task)}@supports (color:color-mix(in lab,red,red)){.entity-path-seg--task{background:color-mix(in srgb,var(--color-entity-task) 14%,transparent)}}.entity-path-seg--link{cursor:pointer;text-decoration:none;transition:filter .15s,transform 50ms}.entity-path-seg--link:hover{filter:brightness(1.15)}.entity-path-seg--link:active{transform:translateY(1px)}.entity-path-seg--link:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.entity-path-sep{color:var(--text-subtle);align-items:center;padding-inline:.2rem;font-size:.72rem;font-weight:700;display:inline-flex}.copyable-id{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;border-radius:8px;padding:0}.copyable-id:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.copyable-id__icon{opacity:.4;align-items:center;transition:opacity .15s;display:inline-flex}.copyable-id:hover .copyable-id__icon,.copyable-id:focus-visible .copyable-id__icon{opacity:1}.handoff-badge{border:1px solid var(--border);background:var(--surface-card);color:var(--text-muted);border-radius:9999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.6875rem;line-height:1.1;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.handoff-badge:hover{background:var(--surface-elevated);color:var(--text);border-color:var(--accent)}.handoff-badge svg{flex:none}.handoff-badge__label{white-space:nowrap;font-weight:500}@media(max-width:640px){:root{font-size:106.25%}}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}button:disabled,select:disabled,input:disabled,textarea:disabled{cursor:not-allowed;opacity:.6}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}@keyframes ap-progress-glow{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-status-in-progress) 0%,transparent)}50%{box-shadow:0 0 18px -2px color-mix(in srgb,var(--color-status-in-progress) 28%,transparent)}}.ap-in-progress{background:#f59e0b12;animation:2.6s ease-in-out infinite ap-progress-glow}@supports (color:color-mix(in lab,red,red)){.ap-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 7%,transparent)}}@keyframes ap-dot-ping{0%{opacity:.85;transform:scale(1)}75%,to{opacity:0;transform:scale(2.6)}}.status-item{border-radius:10px;position:relative;overflow:hidden}.ap-progress-dot{flex:none;width:9px;height:9px;margin-inline:6px;display:inline-block;position:relative;overflow:visible}.ap-progress-dot:before{content:"";background:var(--color-status-in-progress);border-radius:999px;position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 0 8px #f59e0bb3}@supports (color:color-mix(in lab,red,red)){.ap-progress-dot:before{box-shadow:0 0 8px color-mix(in srgb,var(--color-status-in-progress) 70%,transparent)}}.ap-progress-dot:after{content:"";background:var(--color-status-in-progress);transform-origin:50%;border-radius:999px;animation:1.9s cubic-bezier(0,0,.2,1) infinite ap-dot-ping;position:absolute;top:0;right:0;bottom:0;left:0}@media(prefers-reduced-motion:reduce){.ap-in-progress{animation:none}.ap-progress-dot:after{opacity:0;animation:none}}.short-id-badge{font-family:var(--font-mono,ui-monospace, monospace);letter-spacing:.04em;color:var(--text-muted);background:var(--accent);border-radius:6px;align-items:center;padding:3px 6px;font-size:10.5px;font-weight:700;line-height:1;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.short-id-badge{background:color-mix(in srgb,var(--accent) 8%,transparent)}}.short-id-badge{border:1px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.short-id-badge{border:1px solid color-mix(in srgb,var(--accent) 24%,transparent)}}.short-id-badge{font-variant-numeric:tabular-nums}.drag-handle{width:28px;height:28px;color:var(--text-subtle);cursor:grab;touch-action:none;opacity:.6;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;transition:opacity .12s,background .12s,color .12s,border-color .12s;display:inline-flex}.drag-handle:hover,.drag-handle:focus-visible{opacity:1;background:var(--surface-elevated);color:var(--text);border-color:var(--border)}.drag-handle:active{cursor:grabbing}.ap-sortable--dragging{opacity:.55;outline:2px solid var(--accent)}@supports (color:color-mix(in lab,red,red)){.ap-sortable--dragging{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent)}}.ap-sortable--dragging{outline-offset:2px;border-radius:12px}.ap-drag-overlay{border:1px solid var(--accent);box-shadow:0 12px 32px -8px #0006}@supports (color:color-mix(in lab,red,red)){.ap-drag-overlay{border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}}.ap-drag-overlay{cursor:grabbing;background:var(--surface-elevated);border-radius:12px}.search-bar .ei-placeholder{padding:0 12px}.ap-search-sticky{z-index:20;background:var(--surface-elevated);-webkit-backdrop-filter:saturate(180%)blur(10px);border-bottom:1px solid var(--border);margin-bottom:.75rem;padding-bottom:.5rem;position:sticky;top:0}.status-card-stepper{flex-wrap:wrap;align-items:center;gap:.15rem;min-width:0;display:flex}.status-card{border:1px solid var(--border-strong);background:var(--surface);opacity:.75;border-radius:.5rem;align-items:center;gap:.3rem;min-width:0;padding:.3rem .5rem;display:inline-flex}.status-card.status-card-current{opacity:1;border-width:2px;box-shadow:0 0 0 1px}@supports (color:color-mix(in lab,red,red)){.status-card.status-card-current{box-shadow:0 0 0 1px color-mix(in srgb,currentColor 35%,transparent)}}.status-card-icon{flex-shrink:0;width:.9rem;height:.9rem}.status-card-label{text-transform:capitalize;white-space:nowrap;font-size:.7rem;font-weight:700}.status-card-time{opacity:.8;white-space:nowrap;font-size:.62rem;font-weight:500}.status-card-time-initial{opacity:.6;font-style:italic}.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{background:var(--surface)}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{background:color-mix(in srgb,var(--surface) 60%,transparent)}}.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft,.status-card.status-discovery,.status-card.status-planned,.status-card.status-in-progress,.status-card.status-paused,.status-card.status-done,.status-card.status-blocked,.status-card.status-canceled,.status-card.status-rejected,.status-card.status-deferred,.status-card.status-waiting{border-color:color-mix(in srgb,currentColor 40%,var(--border-strong))}}.status-card.status-in-progress{background:#f59e0b24}@supports (color:color-mix(in lab,red,red)){.status-card.status-in-progress{background:color-mix(in srgb,var(--color-status-in-progress) 14%,transparent)}}.status-card.status-in-progress{color:var(--color-status-in-progress)}.status-card.status-paused{background:#ea580c24}@supports (color:color-mix(in lab,red,red)){.status-card.status-paused{background:color-mix(in srgb,var(--color-status-paused) 14%,transparent)}}.status-card.status-paused{color:var(--color-status-paused)}.status-card.status-done{background:#22c55e29}@supports (color:color-mix(in lab,red,red)){.status-card.status-done{background:color-mix(in srgb,var(--color-status-done) 16%,transparent)}}.status-card.status-done{color:var(--color-status-done)}.status-card.status-blocked{background:#ef444429}@supports (color:color-mix(in lab,red,red)){.status-card.status-blocked{background:color-mix(in srgb,var(--color-status-blocked) 16%,transparent)}}.status-card.status-blocked{color:var(--color-status-blocked)}.status-card.status-planned{background:#0ea5e924}@supports (color:color-mix(in lab,red,red)){.status-card.status-planned{background:color-mix(in srgb,var(--color-status-planned) 14%,transparent)}}.status-card.status-planned{color:var(--color-status-planned)}.status-card.status-draft{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-card.status-draft{background:color-mix(in srgb,var(--color-status-draft) 14%,transparent)}}.status-card.status-draft{color:var(--color-status-draft)}.status-card.status-discovery{background:#6366f124}@supports (color:color-mix(in lab,red,red)){.status-card.status-discovery{background:color-mix(in srgb,var(--color-status-discovery) 14%,transparent)}}.status-card.status-discovery{color:var(--color-status-discovery)}.status-card.status-canceled{background:#94a3b824}@supports (color:color-mix(in lab,red,red)){.status-card.status-canceled{background:color-mix(in srgb,var(--color-status-canceled) 14%,transparent)}}.status-card.status-canceled{color:var(--color-status-canceled)}.status-card.status-rejected{background:#f43f5e24}@supports (color:color-mix(in lab,red,red)){.status-card.status-rejected{background:color-mix(in srgb,var(--color-status-rejected) 14%,transparent)}}.status-card.status-rejected{color:var(--color-status-rejected)}.status-card.status-deferred{background:#8b5cf624}@supports (color:color-mix(in lab,red,red)){.status-card.status-deferred{background:color-mix(in srgb,var(--color-status-deferred) 14%,transparent)}}.status-card.status-deferred{color:var(--color-status-deferred)}.status-card.status-waiting{background:#64748b24}@supports (color:color-mix(in lab,red,red)){.status-card.status-waiting{background:color-mix(in srgb,var(--color-status-waiting) 14%,transparent)}}.status-card.status-waiting{color:var(--color-status-waiting)}.status-card.status-card-future{opacity:.55;border-style:dashed!important;border-color:var(--border-strong)!important;color:var(--text-subtle)!important;background:0 0!important}.status-card.status-card-future .status-card-icon{opacity:.6}.status-stepper{align-items:flex-start;gap:0;padding:.9rem 1rem .7rem;display:flex;overflow-x:auto}.status-step{flex-direction:column;flex:1 1 0;align-items:center;gap:.45rem;min-width:5.5rem;display:flex;position:relative}.status-step-label{text-align:center;white-space:nowrap;letter-spacing:.01em;font-size:.68rem;font-weight:700;line-height:1.25}.status-step-date{font-variant-numeric:tabular-nums;color:var(--text-subtle);text-align:center;white-space:nowrap;margin-top:.1rem;font-size:.58rem;line-height:1.2}.status-step--current .status-step-date{color:var(--text-muted)}.status-node{z-index:1;border-radius:9999px;flex-shrink:0;place-items:center;width:2rem;height:2rem;transition:background .2s,box-shadow .2s,border-color .2s;display:grid;position:relative}.status-node-icon{width:1rem;height:1rem}.status-step--completed .status-node{border:2px solid var(--step-color);background:0 0}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-node{border:2px solid color-mix(in srgb,var(--step-color) 45%,transparent)}}.status-step--completed .status-node{color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-node{color:color-mix(in srgb,var(--step-color) 70%,var(--text))}}.status-step--completed .status-step-label{color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--completed .status-step-label{color:color-mix(in srgb,var(--step-color) 70%,var(--text))}}.status-step--current .status-node{border:2px solid var(--step-color);color:var(--step-color);box-shadow:0 0 0 4px var(--step-color);background:0 0}@supports (color:color-mix(in lab,red,red)){.status-step--current .status-node{box-shadow:0 0 0 4px color-mix(in srgb,var(--step-color) 16%,transparent)}}.status-step--current .status-step-label{color:var(--text);font-weight:800}.status-step--pending .status-node{background:var(--surface);border:2px dashed var(--border-strong);color:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-step--pending .status-node{color:color-mix(in srgb,var(--step-color) 45%,var(--text-subtle))}}.status-step--pending .status-step-label{color:var(--text-subtle)}.status-connector{z-index:0;width:calc(100% - 2rem);height:2px;position:absolute;top:1rem;left:calc(1rem - 50%);transform:translateY(-1px)}.status-connector--traveled{background:var(--step-color)}@supports (color:color-mix(in lab,red,red)){.status-connector--traveled{background:color-mix(in srgb,var(--step-color) 50%,transparent)}}.status-connector--pending{background:repeating-linear-gradient(90deg,var(--border-strong) 0 5px,transparent 5px 10px)}@media(max-width:640px){.status-step{min-width:4.2rem}.status-step-label{font-size:.62rem}.status-node{width:1.7rem;height:1.7rem}.status-node-icon{width:.85rem;height:.85rem}.status-connector{width:calc(100% - 1.7rem);top:.85rem;left:calc(.85rem - 50%)}}.checklist-num{background:var(--text-subtle);border-radius:.3rem;justify-content:center;align-items:center;min-width:1.6rem;padding:.05rem .3rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.checklist-num{background:color-mix(in srgb,var(--text-subtle) 12%,transparent)}}.checklist-num{color:var(--text-subtle);font-variant-numeric:tabular-nums;letter-spacing:.02em;text-transform:uppercase;margin-right:.15rem;font-size:.62rem;font-weight:800}@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-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-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-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}@keyframes pulse{50%{opacity:.5}}