hex-audit 0.5.2 → 0.5.3

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.
Files changed (51) hide show
  1. package/dashboard/.next/BUILD_ID +1 -1
  2. package/dashboard/.next/app-build-manifest.json +20 -19
  3. package/dashboard/.next/app-path-routes-manifest.json +1 -1
  4. package/dashboard/.next/build-manifest.json +2 -2
  5. package/dashboard/.next/next-minimal-server.js.nft.json +1 -1
  6. package/dashboard/.next/next-server.js.nft.json +1 -1
  7. package/dashboard/.next/prerender-manifest.js +1 -1
  8. package/dashboard/.next/prerender-manifest.json +1 -1
  9. package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/dashboard/.next/server/app/_not-found.html +1 -1
  11. package/dashboard/.next/server/app/_not-found.rsc +4 -4
  12. package/dashboard/.next/server/app/access/page_client-reference-manifest.js +1 -1
  13. package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +1 -1
  14. package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +1 -1
  15. package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +1 -1
  16. package/dashboard/.next/server/app/diagram.html +1 -1
  17. package/dashboard/.next/server/app/diagram.rsc +4 -4
  18. package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  19. package/dashboard/.next/server/app/flows.html +1 -1
  20. package/dashboard/.next/server/app/flows.rsc +4 -4
  21. package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +1 -1
  22. package/dashboard/.next/server/app/issues/page.js +28 -5
  23. package/dashboard/.next/server/app/issues/page.js.nft.json +1 -1
  24. package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
  25. package/dashboard/.next/server/app/overleaf/page_client-reference-manifest.js +1 -1
  26. package/dashboard/.next/server/app/page.js +2 -2
  27. package/dashboard/.next/server/app/page.js.nft.json +1 -1
  28. package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  29. package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +1 -1
  30. package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  31. package/dashboard/.next/server/app-paths-manifest.json +8 -8
  32. package/dashboard/.next/server/chunks/494.js +1 -0
  33. package/dashboard/.next/server/chunks/530.js +1 -1
  34. package/dashboard/.next/server/functions-config-manifest.json +1 -1
  35. package/dashboard/.next/server/middleware-build-manifest.js +1 -1
  36. package/dashboard/.next/server/pages/404.html +1 -1
  37. package/dashboard/.next/server/pages/500.html +1 -1
  38. package/dashboard/.next/server/server-reference-manifest.js +1 -1
  39. package/dashboard/.next/server/server-reference-manifest.json +1 -1
  40. package/dashboard/.next/static/chunks/app/issues/page-abb062e4cf118340.js +1 -0
  41. package/dashboard/.next/static/chunks/app/{layout-23765c356f43208c.js → layout-2c5383c11b1fbd97.js} +1 -1
  42. package/dashboard/.next/static/chunks/app/{page-a0f25953d4457935.js → page-1226422e170d8895.js} +1 -1
  43. package/dashboard/.next/static/css/691f4e9edab008c8.css +3 -0
  44. package/dashboard/app/issues/IssuesBoardClient.tsx +68 -22
  45. package/dashboard/app/layout.tsx +2 -2
  46. package/dashboard/components/DashboardLayout.tsx +3 -1
  47. package/package.json +1 -1
  48. package/dashboard/.next/static/chunks/app/issues/page-6bfbf80884d3c9d8.js +0 -1
  49. package/dashboard/.next/static/css/9c84313d0484b74f.css +0 -3
  50. /package/dashboard/.next/static/{QeyYu_4EslVR8FTiyQpNs → 8MjKGPuSZw4OIpcHY4G0W}/_buildManifest.js +0 -0
  51. /package/dashboard/.next/static/{QeyYu_4EslVR8FTiyQpNs → 8MjKGPuSZw4OIpcHY4G0W}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-78c92fac7aa8fdd8.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:["static/QeyYu_4EslVR8FTiyQpNs/_buildManifest.js","static/QeyYu_4EslVR8FTiyQpNs/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-08869f2b18792e51.js","static/chunks/618f8807-547c5614e1318888.js","static/chunks/3205-728c260fbb4f89c6.js","static/chunks/main-app-9d2f6b8a47133e9b.js"],pages:{"/_app":["static/chunks/webpack-08869f2b18792e51.js","static/chunks/framework-cf6f5bdca6ba0184.js","static/chunks/main-8f1e837090aef5cf.js","static/chunks/pages/_app-6ad2b50514c24ab4.js"],"/_error":["static/chunks/webpack-08869f2b18792e51.js","static/chunks/framework-cf6f5bdca6ba0184.js","static/chunks/main-8f1e837090aef5cf.js","static/chunks/pages/_error-d5eb11c5c4626811.js"]},ampFirstPages:[]};
1
+ self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-78c92fac7aa8fdd8.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:["static/8MjKGPuSZw4OIpcHY4G0W/_buildManifest.js","static/8MjKGPuSZw4OIpcHY4G0W/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-08869f2b18792e51.js","static/chunks/618f8807-547c5614e1318888.js","static/chunks/3205-728c260fbb4f89c6.js","static/chunks/main-app-9d2f6b8a47133e9b.js"],pages:{"/_app":["static/chunks/webpack-08869f2b18792e51.js","static/chunks/framework-cf6f5bdca6ba0184.js","static/chunks/main-8f1e837090aef5cf.js","static/chunks/pages/_app-6ad2b50514c24ab4.js"],"/_error":["static/chunks/webpack-08869f2b18792e51.js","static/chunks/framework-cf6f5bdca6ba0184.js","static/chunks/main-8f1e837090aef5cf.js","static/chunks/pages/_error-d5eb11c5c4626811.js"]},ampFirstPages:[]};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/9c84313d0484b74f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-23765c356f43208c.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v<!-- -->0.5.2</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/overleaf"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"></path></svg><span>Overleaf</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 5:54:41 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/9c84313d0484b74f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-23765c356f43208c.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-23765c356f43208c.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-23765c356f43208c.js\"],\"DashboardLayout\"]\n10:I[9690,[],\"\"]\nb:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nc:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nd:{\"display\":\"inline-block\"}\ne:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n11:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/9c84313d0484b74f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"QeyYu_4EslVR8FTiyQpNs\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/_not-found\",\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"version\":\"0.5.2\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$b\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$c\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$e\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lf\"],\"globalErrorComponent\":\"$10\",\"missingSlots\":\"$W11\"}]]\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4c9affa5bc8f420e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/691f4e9edab008c8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-08869f2b18792e51.js"/><script src="/_next/static/chunks/618f8807-547c5614e1318888.js" async=""></script><script src="/_next/static/chunks/3205-728c260fbb4f89c6.js" async=""></script><script src="/_next/static/chunks/main-app-9d2f6b8a47133e9b.js" async=""></script><script src="/_next/static/chunks/7498-ea83cb9e30ec5491.js" async=""></script><script src="/_next/static/chunks/app/layout-2c5383c11b1fbd97.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Hex</title><meta name="description" content="Local dashboard for Solidity smart contract audits"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans"><script>((e,t,r,n,o,l,a,u)=>{let i=document.documentElement,s=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&l?o.map(e=>l[e]||e):o;r?(i.classList.remove(...n),i.classList.add(l&&l[t]?l[t]:t)):i.setAttribute(e,t)}),u&&s.includes(t)&&(i.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("data-theme","theme","dark",null,["light","dark"],null,false,true)</script><div class="min-h-screen"><button type="button" aria-label="Toggle navigation" class="fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden"><svg class="h-5 w-5" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path></svg></button><nav aria-label="Main navigation" class="fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 -translate-x-full md:translate-x-0"><div class="px-5 pb-4 pt-6"><div class="flex items-baseline gap-2"><span class="text-title font-semibold text-text-primary">Hex</span><span class="text-caption text-text-tertiary">v<!-- -->0.5.3</span></div></div><div class="flex-1 overflow-y-auto px-3 pb-4"><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Recon</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"></path></svg><span>Home</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/progress"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"></path></svg><span>Progress</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/stats"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"></path></svg><span>Stats</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Analysis</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/access"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"></path></svg><span>Access Control</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/functions"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"></path></svg><span>Functions</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/calls"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"></path></svg><span>Ext Calls</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Reasoning</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/conformance"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"></path></svg><span>Spec Conformance</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Visual</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/diagram"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></svg><span>Diagram</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/flows"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"></path></svg><span>Flows</span></a></div><div class="mt-6 first:mt-0"><div class="mb-1.5 px-3 text-caption font-medium text-text-tertiary">Issues</div><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/issues"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"></path></svg><span>Board</span></a><a class="group flex items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary" href="/overleaf"><svg class="h-4 w-4 shrink-0" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"></path></svg><span>Overleaf</span></a></div></div><div class="border-t border-border-subtle px-3 py-3 space-y-1"><div class="px-3 py-1 text-caption text-text-tertiary" aria-live="polite"><div class="flex items-center gap-2" title="Last refresh 5:57:49 PM — watcher disconnected"><span class="inline-block h-1.5 w-1.5 rounded-full bg-[var(--medium)]" aria-hidden="true"></span><span>Reconnecting…</span></div></div><div class="h-9"></div><div class="flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary"><kbd class="rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]">⌘K</kbd><span>Quick nav</span></div></div></nav><main class="min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6"><div class="mx-auto max-w-6xl"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/4c9affa5bc8f420e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/691f4e9edab008c8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[5268,[],\"\"]\n6:I[5276,[],\"\"]\n7:I[3297,[],\"\"]\n8:I[4595,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-2c5383c11b1fbd97.js\"],\"ThemeProvider\"]\n9:I[2198,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-2c5383c11b1fbd97.js\"],\"CommandPalette\"]\na:I[1187,[\"7498\",\"static/chunks/7498-ea83cb9e30ec5491.js\",\"3185\",\"static/chunks/app/layout-2c5383c11b1fbd97.js\"],\"DashboardLayout\"]\n10:I[9690,[],\"\"]\nb:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nc:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\nd:{\"display\":\"inline-block\"}\ne:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n11:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/691f4e9edab008c8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"buildId\":\"8MjKGPuSZw4OIpcHY4G0W\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/_not-found\",\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],null],null]},[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_73ee6c __variable_3c557b min-h-screen bg-surface-0 text-text-primary font-sans\",\"children\":[\"$\",\"$L8\",null,{\"attribute\":\"data-theme\",\"defaultTheme\":\"dark\",\"enableSystem\":false,\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{\"version\":\"0.5.3\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$b\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$c\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$d\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$e\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lf\"],\"globalErrorComponent\":\"$10\",\"missingSlots\":\"$W11\"}]]\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Hex\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Local dashboard for Solidity smart contract audits\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" defer=""></script><script src="/_next/static/chunks/framework-cf6f5bdca6ba0184.js" defer=""></script><script src="/_next/static/chunks/main-8f1e837090aef5cf.js" defer=""></script><script src="/_next/static/chunks/pages/_app-6ad2b50514c24ab4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-d5eb11c5c4626811.js" defer=""></script><script src="/_next/static/QeyYu_4EslVR8FTiyQpNs/_buildManifest.js" defer=""></script><script src="/_next/static/QeyYu_4EslVR8FTiyQpNs/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"QeyYu_4EslVR8FTiyQpNs","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-08869f2b18792e51.js" defer=""></script><script src="/_next/static/chunks/framework-cf6f5bdca6ba0184.js" defer=""></script><script src="/_next/static/chunks/main-8f1e837090aef5cf.js" defer=""></script><script src="/_next/static/chunks/pages/_app-6ad2b50514c24ab4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-d5eb11c5c4626811.js" defer=""></script><script src="/_next/static/8MjKGPuSZw4OIpcHY4G0W/_buildManifest.js" defer=""></script><script src="/_next/static/8MjKGPuSZw4OIpcHY4G0W/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"8MjKGPuSZw4OIpcHY4G0W","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"5RAu7DJwfAGqwgjcFIG+jevqrC8oJ5WWS9aFk4+iRKk=\"}"
1
+ self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"ANHSdFkG7n0GOhQF3z10jqblV5hcA8G4ZZr5w6Fwbc0=\"}"
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"5RAu7DJwfAGqwgjcFIG+jevqrC8oJ5WWS9aFk4+iRKk="}
1
+ {"node":{},"edge":{},"encryptionKey":"ANHSdFkG7n0GOhQF3z10jqblV5hcA8G4ZZr5w6Fwbc0="}
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4521],{4260:function(e,t,n){Promise.resolve().then(n.bind(n,7063))},7063:function(e,t,n){"use strict";n.d(t,{IssuesBoardClient:function(){return m}});var r=n(7821),a=n(8078),o=n(3924);let s={Critical:"bg-[var(--critical)]/18 text-[var(--critical)]",High:"bg-[var(--high)]/18 text-[var(--high)]",Medium:"bg-[var(--medium)]/18 text-[var(--medium)]",Low:"bg-[var(--low)]/18 text-[var(--low)]",Info:"bg-[var(--info)]/18 text-[var(--info)]"};function i(e){var t;let{severity:n}=e,a=null!==(t=s[n])&&void 0!==t?t:s.Info;return(0,r.jsx)("span",{className:"inline-flex items-center rounded-md px-2 py-0.5 text-caption font-medium ".concat(a),children:n})}var c=n(9487);function l(e,t){var n;let r=new Set,a=e.code_locations.map(e=>e.file).filter(e=>e&&!r.has(e)&&r.add(e)).map(e=>(function(e,t){if(t.repositoryUrl&&t.commit){let n=t.repositoryUrl.replace(/\/+$/,"");return"[`".concat(e,"`](").concat(n,"/blob/").concat(t.commit,"/").concat(e,")")}return"[`".concat(e,"`]()")})(e,t)).join(", "),o=e.resolution||"Unresolved",s=null!==(n=e.update_from_client)&&void 0!==n?n:"";return["**File(s)**: ".concat(a),"","**Description**: ".concat(function(e){if(!e)return e;let t=!1,n="";return e.split("\n").map(e=>{let r=e.match(/^\s*(```+|~~~+)/);if(r)return t?r[1][0]===n&&(t=!1,n=""):(t=!0,n=r[1][0]),e;if(t)return e;let a=e.match(/^\s*#{1,6}\s+(.*\S)\s*$/);return a?"**".concat(a[1],"**"):/^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(e)?"":e}).join("\n")}(e.description)),"","**Recommendation(s)**: ".concat(e.recommendation),"","**Status**: ".concat(o),"","**Update from the client**: ".concat(s)].join("\n")}let d=[{id:"potential",label:"Potential",description:"Awaiting validation"},{id:"verified",label:"Verified",description:"Confirmed, ready to push"},{id:"synced",label:"Synced to GitHub",description:"On GitHub — edit there, not here"},{id:"invalid",label:"Invalid",description:"Rejected after review"},{id:"duplicate",label:"Duplicate",description:"Covered by another entry"}],u={Critical:0,High:1,Medium:2,Low:3,Info:4},x=["Critical","High","Medium","Low","Info"],p=["Fixed","Mitigated","Acknowledged","Not Fixed","Unresolved"];function m(e){var t;let{issues:n,formatCtx:s={}}=e,[i,c]=(0,a.useState)(n),[l,x]=(0,a.useState)(null),[p,m]=(0,a.useState)("all");(0,a.useEffect)(()=>{c(n)},[n]);let h=(0,o.Dy)((0,o.VT)(o.we,{activationConstraint:{distance:4}})),y=(0,a.useMemo)(()=>"all"===p?i:i.filter(e=>e.source===p),[i,p]),v=(0,a.useMemo)(()=>{let e={potential:[],verified:[],synced:[],invalid:[],duplicate:[]};for(let t of y)e[t.column].push(t);for(let t of Object.values(e))t.sort((e,t)=>{var n,r;return(null!==(n=u[e.severity])&&void 0!==n?n:5)-(null!==(r=u[t.severity])&&void 0!==r?r:5)||e.id.localeCompare(t.id)});return e},[y]),j=(0,a.useMemo)(()=>{let e={potential:0,verified:0,synced:0,invalid:0,duplicate:0};for(let t of i)e[t.column]++;return e},[i]),N=(0,a.useCallback)(async(e,t)=>{c(n=>n.map(n=>n.id===e?{...n,column:t,status:function(e){switch(e){case"potential":return"pending_validation";case"verified":return"verified";case"synced":return"synced";case"invalid":return"rejected";case"duplicate":return"duplicate"}}(t),duplicate_of:"duplicate"===t?n.duplicate_of:null}:n));try{let n=await fetch("/api/issues/".concat(encodeURIComponent(e),"/move"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({column:t})});if(!n.ok){var r;let e=await n.json().catch(()=>({}));throw Error(null!==(r=e.error)&&void 0!==r?r:"move failed")}}catch(t){console.error(t),c(t=>t.map(t=>{var r;return t.id===e&&null!==(r=n.find(t=>t.id===e))&&void 0!==r?r:t}))}},[n]),w=(0,a.useCallback)(async(e,t)=>{c(n=>n.map(n=>n.id===e?{...n,...t}:n));try{let r=await fetch("/api/issues/".concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){var n;let e=await r.json().catch(()=>({}));throw Error(null!==(n=e.error)&&void 0!==n?n:"update failed")}}catch(e){console.error(e)}},[]),_=null!==(t=i.find(e=>e.id===l))&&void 0!==t?t:null;return(0,r.jsxs)("div",{children:[(0,r.jsxs)("header",{className:"mb-6 flex flex-wrap items-end justify-between gap-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-title font-semibold text-text-primary",children:"Issues"}),(0,r.jsxs)("p",{className:"mt-1 text-body text-text-secondary",children:[i.length," total — ",j.potential," potential, ",j.verified," verified,"," ",j.synced," synced, ",j.invalid," invalid, ",j.duplicate," duplicate. Drag a card between columns; click to edit. Synced cards are read-only (edit on GitHub)."]})]}),(0,r.jsx)(b,{value:p,onChange:m})]}),(0,r.jsx)(o.LB,{sensors:h,onDragEnd:e=>{let{active:t,over:n}=e;if(!n)return;let r=n.id,a=t.id,o=i.find(e=>e.id===a);o&&o.column!==r&&"synced"!==r&&"synced"!==o.column&&N(a,r)},children:(0,r.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-5",children:d.map(e=>(0,r.jsx)(f,{column:e,issues:v[e.id],onOpen:x},e.id))})}),_&&(0,r.jsx)(g,{issue:_,formatCtx:s,onClose:()=>x(null),onSave:e=>w(_.id,e)})]})}function b(e){let{value:t,onChange:n}=e;return(0,r.jsx)("div",{className:"flex flex-wrap gap-1.5",children:[{id:"all",label:"All sources"},{id:"manual",label:"Manual"},{id:"auditagent",label:"AuditAgent"},{id:"conformance",label:"Conformance"},{id:"github",label:"GitHub"}].map(e=>{let a=t===e.id;return(0,r.jsx)("button",{type:"button",onClick:()=>n(e.id),className:"rounded-md px-2.5 py-1 text-caption font-medium ".concat(a?"bg-accent text-surface-0":"bg-surface-2 text-text-secondary hover:text-text-primary"),children:e.label},e.id)})})}function f(e){let{column:t,issues:n,onOpen:a}=e,{isOver:s,setNodeRef:i}=(0,o.Zj)({id:t.id,disabled:"synced"===t.id});return(0,r.jsxs)("section",{ref:i,"aria-label":t.label,className:"flex flex-col gap-2 rounded-lg border bg-surface-1 p-3 transition-colors ".concat(s?"border-accent bg-surface-2":"border-border-subtle"),children:[(0,r.jsxs)("header",{className:"flex items-baseline justify-between",children:[(0,r.jsx)("h2",{className:"text-heading font-medium text-text-primary",children:t.label}),(0,r.jsx)("span",{className:"text-caption text-text-tertiary",children:n.length})]}),(0,r.jsx)("p",{className:"text-caption text-text-tertiary",children:t.description}),(0,r.jsxs)("div",{className:"mt-1 flex flex-col gap-2",children:[n.map(e=>(0,r.jsx)(h,{issue:e,onOpen:a},e.id)),0===n.length&&(0,r.jsx)("div",{className:"rounded-md border border-dashed border-border-subtle py-6 text-center text-caption text-text-tertiary",children:"Empty"})]})]})}function h(e){let{issue:t,onOpen:n}=e,a="synced"===t.column,{attributes:s,listeners:c,setNodeRef:l,isDragging:d,transform:u}=(0,o.O1)({id:t.id,disabled:a}),x=u?{transform:"translate3d(".concat(u.x,"px, ").concat(u.y,"px, 0)"),zIndex:30}:{};return(0,r.jsxs)("article",{ref:l,style:x,...a?{}:s,...a?{}:c,onClick:e=>{u||(e.stopPropagation(),n(t.id))},className:"group rounded-md border bg-surface-0 p-3 text-left ".concat(a?"cursor-pointer":"cursor-grab active:cursor-grabbing"," ").concat(d?"border-accent shadow-lg":"border-border-subtle hover:border-border-default"),children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,r.jsx)("span",{className:"font-mono text-caption text-text-tertiary",children:t.id}),(0,r.jsx)(i,{severity:t.severity})]}),(0,r.jsx)("h3",{title:t.title,className:"mt-1 text-body font-medium text-text-primary line-clamp-3",children:t.title}),(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1.5 text-caption",children:[(0,r.jsx)(y,{source:t.source}),(0,r.jsx)(v,{issue:t}),t.duplicate_of&&(0,r.jsxs)("span",{className:"rounded-md bg-surface-2 px-1.5 py-0.5 text-text-secondary",children:["dup of ",t.duplicate_of]}),"passing"===t.poc_status&&(0,r.jsx)("span",{className:"rounded-md bg-[var(--low)]/15 px-1.5 py-0.5 text-[var(--low)]",children:"PoC ✓"}),"failing"===t.poc_status&&(0,r.jsx)("span",{className:"rounded-md bg-[var(--critical)]/15 px-1.5 py-0.5 text-[var(--critical)]",children:"PoC ✕"}),t.resolution&&(0,r.jsx)("span",{className:"rounded-md bg-surface-2 px-1.5 py-0.5 text-text-secondary",children:t.resolution})]}),t.match_signals&&(0,r.jsx)("div",{className:"mt-2 text-caption text-text-tertiary",children:(0,r.jsx)("span",{className:"font-mono",children:[t.match_signals.contract?"contract":null,t.match_signals.function?"function":null,"different"!==t.match_signals.root_cause?"rc:".concat(t.match_signals.root_cause):null,"different"!==t.match_signals.attack_vector?"av:".concat(t.match_signals.attack_vector):null].filter(Boolean).join(" \xb7 ")})})]})}function y(e){var t;let{source:n}=e;return(0,r.jsx)("span",{className:"rounded-md bg-surface-2 px-1.5 py-0.5 text-text-tertiary",children:null!==(t=({manual:"Manual",auditagent:"AuditAgent",conformance:"Conformance",github:"GitHub"})[n])&&void 0!==t?t:n})}function v(e){var t,n;let{issue:a}=e,o=null!==(t=a.sync_state)&&void 0!==t?t:"none";if("none"===o)return null;if("unsynced"===o)return(0,r.jsx)("span",{title:"Run /sync-issues to push verified findings to GitHub.",className:"rounded-md border border-dashed border-border-default px-1.5 py-0.5 text-text-tertiary",children:"GH unsynced"});if("conflict"===o)return(0,r.jsx)("span",{title:"Local and remote diverged. Re-run /sync-issues to reconcile.",className:"rounded-md bg-[var(--critical)]/15 px-1.5 py-0.5 text-[var(--critical)]",children:"GH conflict"});let s="synced_closed"===o,i="GH #".concat(null!==(n=a.github_issue_number)&&void 0!==n?n:"?"," ").concat(s?"closed":"open"),c=s?"bg-surface-2 text-text-tertiary":"bg-[var(--low)]/15 text-[var(--low)]";return a.github_issue_url?(0,r.jsx)("a",{href:a.github_issue_url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"rounded-md px-1.5 py-0.5 hover:underline ".concat(c),children:i}):(0,r.jsx)("span",{className:"rounded-md px-1.5 py-0.5 ".concat(c),children:i})}function g(e){var t,n,o;let{issue:s,formatCtx:i,onClose:d,onSave:u}=e,[m,b]=(0,a.useState)(s.title),[f,h]=(0,a.useState)(s.severity),[g,N]=(0,a.useState)(s.description),[w,_]=(0,a.useState)(s.recommendation),[C,k]=(0,a.useState)(null!==(t=s.resolution)&&void 0!==t?t:""),[S,H]=(0,a.useState)(null!==(n=s.update_from_client)&&void 0!==n?n:""),[M,G]=(0,a.useState)(!1),[E,I]=(0,a.useState)(!1),[R,O]=(0,a.useState)(!1),P=(0,a.useRef)(null),T="synced"===s.status;(0,a.useEffect)(()=>{var e;null===(e=P.current)||void 0===e||e.focus()},[]);let D=async()=>{let e=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"## [".concat(e.severity,"] ").concat(e.title,"\n\n").concat(l(e,t),"\n\n---\n")}({...s,title:m,severity:f,description:g,recommendation:w,resolution:C||void 0,update_from_client:S||void 0},i);try{await navigator.clipboard.writeText(e),I(!0),setTimeout(()=>I(!1),1500)}catch(e){}},U=async()=>{G(!0),await u({title:m,severity:f,description:g,recommendation:w,resolution:C||void 0,update_from_client:S||void 0}),G(!1),O(!1)};return(0,r.jsx)("div",{ref:P,tabIndex:-1,className:"fixed inset-0 z-50 flex items-center justify-center p-4 outline-none",style:{background:"var(--overlay-bg)"},onClick:d,onKeyDown:e=>{"Escape"===e.key&&d()},children:(0,r.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Issue ".concat(s.id),className:"relative flex h-[85vh] w-full max-w-4xl flex-col overflow-hidden border border-border-emphasis bg-surface-1 shadow-2xl",style:{borderRadius:"var(--radius-md)",boxShadow:"var(--shadow-accent)"},onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b border-border-default bg-surface-2 px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-caption",children:[(0,r.jsx)("span",{className:"font-mono text-body text-text-tertiary",children:s.id}),(0,r.jsx)(y,{source:s.source}),(0,r.jsx)(v,{issue:s})]}),(0,r.jsx)("button",{type:"button",onClick:d,"aria-label":"Close",className:"rounded p-1 text-text-tertiary hover:bg-surface-3 hover:text-text-primary",children:(0,r.jsx)("svg",{className:"h-5 w-5","aria-hidden":"true",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),(0,r.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[T&&(0,r.jsxs)("div",{className:"mb-4 rounded-md border border-border-default bg-surface-2 px-3 py-2 text-caption text-text-secondary",children:["This issue is synced to GitHub and is read-only here. Edit it on GitHub, then run"," ",(0,r.jsx)("span",{className:"font-mono",children:"/sync-issues"})," to pull the changes back."]}),R?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j,{label:"Title",children:(0,r.jsx)("input",{type:"text",value:m,onChange:e=>b(e.target.value),disabled:T,className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 text-body text-text-primary focus:border-accent focus:outline-none disabled:opacity-60"})}),(0,r.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3",children:[(0,r.jsx)(j,{label:"Severity",children:(0,r.jsx)("select",{value:f,onChange:e=>h(e.target.value),disabled:T,className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 text-body text-text-primary focus:border-accent focus:outline-none disabled:opacity-60",children:x.map(e=>(0,r.jsx)("option",{value:e,children:e},e))})}),(0,r.jsx)(j,{label:"Resolution (verified only)",children:(0,r.jsxs)("select",{value:C,onChange:e=>k(e.target.value),disabled:T,className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 text-body text-text-primary focus:border-accent focus:outline-none disabled:opacity-60",children:[(0,r.jsx)("option",{value:"",children:"— none —"}),p.map(e=>(0,r.jsx)("option",{value:e,children:e},e))]})})]}),(0,r.jsx)(j,{label:"Description",className:"mt-3",children:(0,r.jsx)("textarea",{value:g,onChange:e=>N(e.target.value),rows:8,disabled:T,className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 font-mono text-caption text-text-primary focus:border-accent focus:outline-none disabled:opacity-60"})}),(0,r.jsx)(j,{label:"Recommendation",className:"mt-3",children:(0,r.jsx)("textarea",{value:w,onChange:e=>_(e.target.value),rows:4,disabled:T,className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 font-mono text-caption text-text-primary focus:border-accent focus:outline-none disabled:opacity-60"})}),(0,r.jsx)(j,{label:"Update from the client",className:"mt-3",children:(0,r.jsx)("textarea",{value:S,onChange:e=>H(e.target.value),rows:4,disabled:T,placeholder:"How the client responded — used by /generate-overleaf.",className:"w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 font-mono text-caption text-text-primary focus:border-accent focus:outline-none disabled:opacity-60"})})]}):(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(c.MarkdownRenderer,{content:"**Title**: ".concat(s.title,"\n\n**Severity**: ").concat(s.severity,"\n\n").concat(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(e,t)}(s,i))})}),s.code_locations.length>0&&(0,r.jsxs)("div",{className:"mt-4",children:[(0,r.jsx)("div",{className:"mb-1 text-caption font-medium text-text-tertiary",children:"Code locations"}),(0,r.jsx)("ul",{className:"space-y-1 font-mono text-caption text-text-secondary",children:s.code_locations.map((e,t)=>(0,r.jsx)("li",{children:e.file},"".concat(e.file,"-").concat(t)))})]}),s.match_signals&&(0,r.jsxs)("div",{className:"mt-4",children:[(0,r.jsx)("div",{className:"mb-1 text-caption font-medium text-text-tertiary",children:"Duplicate signals"}),(0,r.jsx)("p",{className:"text-caption text-text-secondary",children:null!==(o=s.reasoning)&&void 0!==o?o:"Matched against another entry."}),(0,r.jsxs)("div",{className:"mt-1 flex flex-wrap gap-1.5 font-mono text-caption text-text-tertiary",children:[(0,r.jsxs)("span",{children:["contract: ",s.match_signals.contract?"✓":"—"]}),(0,r.jsxs)("span",{children:["function: ",s.match_signals.function?"✓":"—"]}),(0,r.jsxs)("span",{children:["root_cause: ",s.match_signals.root_cause]}),(0,r.jsxs)("span",{children:["attack_vector: ",s.match_signals.attack_vector]})]})]})]}),(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-t border-border-default bg-surface-2 px-4 py-3",children:[(0,r.jsx)("button",{type:"button",onClick:D,className:"rounded-md border border-border-default px-3 py-1.5 text-body text-text-secondary hover:bg-surface-3 hover:text-text-primary",children:E?"Copied!":"Copy as HackMD"}),(0,r.jsx)("div",{className:"flex items-center gap-2",children:R?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>O(!1),className:"rounded-md px-3 py-1.5 text-body text-text-secondary hover:text-text-primary",children:"Cancel"}),(0,r.jsx)("button",{type:"button",onClick:U,disabled:M,className:"rounded-md bg-accent px-3 py-1.5 text-body font-medium text-surface-0 hover:bg-accent-secondary disabled:opacity-50",children:M?"Saving…":"Save"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:d,className:"rounded-md px-3 py-1.5 text-body text-text-secondary hover:text-text-primary",children:"Close"}),(0,r.jsx)("button",{type:"button",onClick:()=>O(!0),disabled:T,title:T?"Synced to GitHub — edit it there, then run /sync-issues to pull the changes back.":void 0,className:"rounded-md bg-accent px-3 py-1.5 text-body font-medium text-surface-0 hover:bg-accent-secondary disabled:cursor-not-allowed disabled:opacity-40",children:"Edit"})]})})]})]})})}function j(e){let{label:t,className:n,children:a}=e;return(0,r.jsxs)("label",{className:"block ".concat(null!=n?n:""),children:[(0,r.jsx)("span",{className:"mb-1 block text-caption font-medium text-text-tertiary",children:t}),a]})}},9487:function(e,t,n){"use strict";n.d(t,{MarkdownRenderer:function(){return s}});var r=n(7821),a=n(8525),o=n(5592);function s(e){let{content:t,className:n}=e;return(0,r.jsx)("div",{className:"prose max-w-none\n prose-headings:text-text-primary\n prose-p:text-text-secondary\n prose-strong:text-text-primary\n prose-code:text-accent\n prose-code:before:content-none\n prose-code:after:content-none\n prose-pre:bg-surface-0\n prose-pre:border\n prose-pre:border-border-default\n prose-a:text-accent\n prose-a:no-underline\n hover:prose-a:underline\n prose-th:text-text-primary\n prose-td:text-text-secondary\n prose-hr:border-border-default\n prose-blockquote:border-border-emphasis\n prose-blockquote:text-text-secondary\n prose-li:text-text-secondary\n ".concat(null!=n?n:""),children:(0,r.jsx)(a.UG,{remarkPlugins:[o.Z],children:t})})}}},function(e){e.O(0,[7397,3924,7115,3205,1744],function(){return e(e.s=4260)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{9640:function(e,t,r){Promise.resolve().then(r.t.bind(r,3812,23)),Promise.resolve().then(r.bind(r,2198)),Promise.resolve().then(r.bind(r,1187)),Promise.resolve().then(r.bind(r,4595)),Promise.resolve().then(r.t.bind(r,8414,23)),Promise.resolve().then(r.t.bind(r,5256,23))},2198:function(e,t,r){"use strict";r.d(t,{CommandPalette:function(){return i}});var n=r(7821),a=r(8078),s=r(168);let o=r(1187).p.flatMap(e=>e.items.map(t=>({href:t.href,label:"".concat(e.label," / ").concat(t.label)})));function i(){let[e,t]=(0,a.useState)(!1),[r,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(0),d=(0,a.useRef)(null),u=(0,s.useRouter)(),h=r.trim()?o.filter(e=>e.label.toLowerCase().includes(r.toLowerCase())||e.href.includes(r.toLowerCase())):o;(0,a.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&"k"===e.key&&(e.preventDefault(),t(e=>!e),i(""),c(0)),"Escape"===e.key&&t(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,a.useEffect)(()=>{e&&setTimeout(()=>{var e;return null===(e=d.current)||void 0===e?void 0:e.focus()},50)},[e]),(0,a.useEffect)(()=>c(0),[r]);let m=e=>{u.push(e),t(!1),i("")};return e?(0,n.jsx)("div",{className:"fixed inset-0 z-[9000] flex items-start justify-center px-4 pt-[12vh]",style:{background:"var(--overlay-bg)"},onClick:()=>t(!1),children:(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Quick navigation",className:"w-full max-w-lg rounded-lg border border-border-default bg-surface-1 shadow-lg",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"flex items-center border-b border-border-default px-4 py-3 gap-2",children:[(0,n.jsx)("span",{className:"text-accent text-body font-medium shrink-0","aria-hidden":"true",children:">"}),(0,n.jsx)("input",{ref:d,type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"search pages...","aria-label":"Search pages",className:"flex-1 bg-transparent text-body text-text-primary placeholder-text-tertiary outline-none",onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),c(e=>Math.min(e+1,h.length-1))):"ArrowUp"===e.key?(e.preventDefault(),c(e=>Math.max(e-1,0))):"Enter"===e.key&&h[l]?m(h[l].href):"Tab"===e.key&&e.preventDefault()}}),(0,n.jsx)("kbd",{className:"shrink-0 border border-border-default px-1.5 py-0.5 text-caption text-text-tertiary",style:{borderRadius:"var(--radius-sm)"},children:"ESC"})]}),(0,n.jsx)("div",{className:"max-h-72 overflow-y-auto py-1",children:0===h.length?(0,n.jsx)("div",{className:"px-4 py-3 text-body text-text-tertiary",children:"no results"}):h.map((e,t)=>(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-3 px-4 py-2.5 text-left text-body focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent ".concat(t===l?"bg-accent-subtle text-accent":"text-text-secondary hover:bg-surface-2 hover:text-text-primary"),onClick:()=>m(e.href),onMouseEnter:()=>c(t),children:[(0,n.jsx)("span",{className:"text-text-tertiary text-caption shrink-0",children:t===l?">":" "}),(0,n.jsx)("span",{children:e.label}),(0,n.jsx)("span",{className:"ml-auto text-caption text-text-tertiary shrink-0",children:e.href})]},e.href))})]})}):null}},1187:function(e,t,r){"use strict";r.d(t,{DashboardLayout:function(){return p},p:function(){return f}});var n=r(7821),a=r(7498),s=r.n(a),o=r(168),i=r(4595),l=r(8078);function c(e,t){let r=Math.round((t.getTime()-e.getTime())/1e3);return r<5?"just now":r<60?"".concat(r,"s ago"):r<3600?"".concat(Math.round(r/60),"m ago"):"".concat(Math.round(r/3600),"h ago")}function d(){let e=(0,o.useRouter)(),[t,r]=(0,l.useState)(()=>new Date),[a,s]=(0,l.useState)(!1),[i,d]=(0,l.useState)(()=>new Date),[u,h]=(0,l.useState)(null),m=(0,l.useRef)(null),f=()=>{fetch("/api/github-status",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{if(e&&"string"==typeof e.last_synced_at){var t;h({repo:null!==(t=e.repo)&&void 0!==t?t:"",last_synced_at:e.last_synced_at})}else h(null)}).catch(()=>h(null))};(0,l.useEffect)(()=>{f();let e=new EventSource("/api/watch");return e.onopen=()=>s(!0),e.onmessage=()=>{r(new Date),f()},e.onerror=()=>s(!1),()=>e.close()},[e]),(0,l.useEffect)(()=>{let e=setInterval(()=>d(new Date),3e4);return()=>clearInterval(e)},[]),(0,l.useEffect)(()=>()=>{m.current&&clearTimeout(m.current)},[]);let x=a?"Updated ".concat(c(t,i)):"Reconnecting…";return(0,n.jsxs)("div",{className:"px-3 py-1 text-caption text-text-tertiary","aria-live":"polite",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",title:"Last refresh ".concat(t.toLocaleTimeString()).concat(a?"":" — watcher disconnected"),children:[(0,n.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full ".concat(a?"bg-[var(--success)]":"bg-[var(--medium)]"),"aria-hidden":"true"}),(0,n.jsx)("span",{children:x})]}),u&&(0,n.jsxs)("div",{className:"mt-1 flex items-center gap-2",title:"GitHub sync with ".concat(u.repo," at ").concat(new Date(u.last_synced_at).toLocaleTimeString()),children:[(0,n.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full bg-accent","aria-hidden":"true"}),(0,n.jsxs)("span",{children:["GitHub ",c(new Date(u.last_synced_at),i)]})]})]})}function u(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"})})}function h(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"})})}function m(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"})})}let f=[{label:"Recon",items:[{href:"/",label:"Home",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"})})}},{href:"/progress",label:"Progress",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"})})}},{href:"/stats",label:"Stats",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}}]},{label:"Analysis",items:[{href:"/access",label:"Access Control",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"})})}},{href:"/functions",label:"Functions",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"})})}},{href:"/calls",label:"Ext Calls",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"})})}}]},{label:"Reasoning",items:[{href:"/conformance",label:"Spec Conformance",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"})})}}]},{label:"Visual",items:[{href:"/diagram",label:"Diagram",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})})}},{href:"/flows",label:"Flows",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"})})}}]},{label:"Issues",items:[{href:"/issues",label:"Board",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})})}},{href:"/overleaf",label:"Overleaf",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})})}}]}];function x(){let{theme:e,setTheme:t}=(0,i.F)(),[r,a]=(0,l.useState)(!1);return((0,l.useEffect)(()=>a(!0),[]),r)?(0,n.jsxs)("button",{type:"button",onClick:()=>t("dark"===e?"light":"dark"),"aria-label":"Switch to ".concat("dark"===e?"light":"dark"," mode"),className:"flex w-full items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary",children:[(0,n.jsx)("light"===e?h:m,{className:"h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:"light"===e?"Light":"Dark"})]}):(0,n.jsx)("div",{className:"h-9"})}function p(e){let{children:t,version:r}=e,a=(0,o.usePathname)(),[i,c]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{c(!1)},[a]),(0,n.jsxs)("div",{className:"min-h-screen",children:[(0,n.jsx)("button",{type:"button","aria-label":"Toggle navigation",onClick:()=>c(!i),className:"fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden",children:(0,n.jsx)(u,{className:"h-5 w-5"})}),i&&(0,n.jsx)("div",{className:"fixed inset-0 z-40 md:hidden",style:{background:"var(--overlay-bg)"},onClick:()=>c(!1)}),(0,n.jsxs)("nav",{"aria-label":"Main navigation",className:"fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 ".concat(i?"translate-x-0":"-translate-x-full"," md:translate-x-0"),children:[(0,n.jsx)("div",{className:"px-5 pb-4 pt-6",children:(0,n.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,n.jsx)("span",{className:"text-title font-semibold text-text-primary",children:"Hex"}),(0,n.jsxs)("span",{className:"text-caption text-text-tertiary",children:["v",r]})]})}),(0,n.jsx)("div",{className:"flex-1 overflow-y-auto px-3 pb-4",children:f.map(e=>(0,n.jsxs)("div",{className:"mt-6 first:mt-0",children:[(0,n.jsx)("div",{className:"mb-1.5 px-3 text-caption font-medium text-text-tertiary",children:e.label}),e.items.map(e=>{let t=a===e.href;return(0,n.jsxs)(s(),{href:e.href,"aria-current":t?"page":void 0,className:"group flex items-center gap-2.5 rounded-md px-3 py-2 text-body ".concat(t?"bg-accent-subtle text-accent font-medium":"text-text-secondary hover:bg-surface-2 hover:text-text-primary"),children:[(0,n.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:e.label})]},e.href)})]},e.label))}),(0,n.jsxs)("div",{className:"border-t border-border-subtle px-3 py-3 space-y-1",children:[(0,n.jsx)(d,{}),(0,n.jsx)(x,{}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary",children:[(0,n.jsx)("kbd",{className:"rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]",children:"⌘K"}),(0,n.jsx)("span",{children:"Quick nav"})]})]})]}),(0,n.jsx)("main",{className:"min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6",children:(0,n.jsx)("div",{className:"mx-auto max-w-6xl",children:t})})]})}},168:function(e,t,r){"use strict";var n=r(7462);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},3812:function(){},5256:function(e){e.exports={style:{fontFamily:"'__JetBrains_Mono_3c557b', '__JetBrains_Mono_Fallback_3c557b'",fontStyle:"normal"},className:"__className_3c557b",variable:"__variable_3c557b"}},8414:function(e){e.exports={style:{fontFamily:"'__Manrope_73ee6c', '__Manrope_Fallback_73ee6c'",fontStyle:"normal"},className:"__className_73ee6c",variable:"__variable_73ee6c"}},4595:function(e,t,r){"use strict";r.d(t,{F:function(){return d},ThemeProvider:function(){return u}});var n=r(8078),a=(e,t,r,n,a,s,o,i)=>{let l=document.documentElement,c=["light","dark"];function d(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&s?a.map(e=>s[e]||e):a;r?(l.classList.remove(...n),l.classList.add(s&&s[t]?s[t]:t)):l.setAttribute(e,t)}),i&&c.includes(t)&&(l.style.colorScheme=t)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=o&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},s=["light","dark"],o="(prefers-color-scheme: dark)",i="undefined"==typeof window,l=n.createContext(void 0),c={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=n.useContext(l))?e:c},u=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(m,{...e}),h=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:a=!0,enableColorScheme:i=!0,storageKey:c="theme",themes:d=h,defaultTheme:u=a?"system":"light",attribute:m="data-theme",value:b,children:y,nonce:k,scriptProps:g}=e,[j,w]=n.useState(()=>x(c,u)),[L,C]=n.useState(()=>"system"===j?v():j),M=b?Object.values(b):d,N=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=v());let n=b?b[t]:t,o=r?p(k):null,l=document.documentElement,c=e=>{"class"===e?(l.classList.remove(...M),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(m)?m.forEach(c):c(m),i){let e=s.includes(u)?u:null,r=s.includes(t)?t:e;l.style.colorScheme=r}null==o||o()},[k]),_=n.useCallback(e=>{let t="function"==typeof e?e(j):e;w(t);try{localStorage.setItem(c,t)}catch(e){}},[j]),S=n.useCallback(e=>{C(v(e)),"system"===j&&a&&!t&&N("system")},[j,t]);n.useEffect(()=>{let e=window.matchMedia(o);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?w(e.newValue):_(u))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[_]),n.useEffect(()=>{N(null!=t?t:j)},[t,j]);let E=n.useMemo(()=>({theme:j,setTheme:_,forcedTheme:t,resolvedTheme:"system"===j?L:j,themes:a?[...d,"system"]:d,systemTheme:a?L:void 0}),[j,_,t,L,a,d]);return n.createElement(l.Provider,{value:E},n.createElement(f,{forcedTheme:t,storageKey:c,attribute:m,enableSystem:a,enableColorScheme:i,defaultTheme:u,value:b,themes:d,nonce:k,scriptProps:g}),y)},f=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:s,enableSystem:o,enableColorScheme:i,defaultTheme:l,value:c,themes:d,nonce:u,scriptProps:h}=e,m=JSON.stringify([s,r,l,t,d,c,o,i]).slice(1,-1);return n.createElement("script",{...h,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:"(".concat(a.toString(),")(").concat(m,")")}})}),x=(e,t)=>{let r;if(!i){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(o)),e.matches?"dark":"light")}},function(e){e.O(0,[5116,7498,7115,3205,1744],function(){return e(e.s=9640)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{9640:function(e,t,r){Promise.resolve().then(r.t.bind(r,3812,23)),Promise.resolve().then(r.bind(r,2198)),Promise.resolve().then(r.bind(r,1187)),Promise.resolve().then(r.bind(r,4595)),Promise.resolve().then(r.t.bind(r,8414,23)),Promise.resolve().then(r.t.bind(r,5256,23))},2198:function(e,t,r){"use strict";r.d(t,{CommandPalette:function(){return i}});var n=r(7821),a=r(8078),s=r(168);let o=r(1187).p.flatMap(e=>e.items.map(t=>({href:t.href,label:"".concat(e.label," / ").concat(t.label)})));function i(){let[e,t]=(0,a.useState)(!1),[r,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(0),d=(0,a.useRef)(null),u=(0,s.useRouter)(),h=r.trim()?o.filter(e=>e.label.toLowerCase().includes(r.toLowerCase())||e.href.includes(r.toLowerCase())):o;(0,a.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&"k"===e.key&&(e.preventDefault(),t(e=>!e),i(""),c(0)),"Escape"===e.key&&t(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,a.useEffect)(()=>{e&&setTimeout(()=>{var e;return null===(e=d.current)||void 0===e?void 0:e.focus()},50)},[e]),(0,a.useEffect)(()=>c(0),[r]);let m=e=>{u.push(e),t(!1),i("")};return e?(0,n.jsx)("div",{className:"fixed inset-0 z-[9000] flex items-start justify-center px-4 pt-[12vh]",style:{background:"var(--overlay-bg)"},onClick:()=>t(!1),children:(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"Quick navigation",className:"w-full max-w-lg rounded-lg border border-border-default bg-surface-1 shadow-lg",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"flex items-center border-b border-border-default px-4 py-3 gap-2",children:[(0,n.jsx)("span",{className:"text-accent text-body font-medium shrink-0","aria-hidden":"true",children:">"}),(0,n.jsx)("input",{ref:d,type:"text",value:r,onChange:e=>i(e.target.value),placeholder:"search pages...","aria-label":"Search pages",className:"flex-1 bg-transparent text-body text-text-primary placeholder-text-tertiary outline-none",onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),c(e=>Math.min(e+1,h.length-1))):"ArrowUp"===e.key?(e.preventDefault(),c(e=>Math.max(e-1,0))):"Enter"===e.key&&h[l]?m(h[l].href):"Tab"===e.key&&e.preventDefault()}}),(0,n.jsx)("kbd",{className:"shrink-0 border border-border-default px-1.5 py-0.5 text-caption text-text-tertiary",style:{borderRadius:"var(--radius-sm)"},children:"ESC"})]}),(0,n.jsx)("div",{className:"max-h-72 overflow-y-auto py-1",children:0===h.length?(0,n.jsx)("div",{className:"px-4 py-3 text-body text-text-tertiary",children:"no results"}):h.map((e,t)=>(0,n.jsxs)("button",{type:"button",className:"flex w-full items-center gap-3 px-4 py-2.5 text-left text-body focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent ".concat(t===l?"bg-accent-subtle text-accent":"text-text-secondary hover:bg-surface-2 hover:text-text-primary"),onClick:()=>m(e.href),onMouseEnter:()=>c(t),children:[(0,n.jsx)("span",{className:"text-text-tertiary text-caption shrink-0",children:t===l?">":" "}),(0,n.jsx)("span",{children:e.label}),(0,n.jsx)("span",{className:"ml-auto text-caption text-text-tertiary shrink-0",children:e.href})]},e.href))})]})}):null}},1187:function(e,t,r){"use strict";r.d(t,{DashboardLayout:function(){return p},p:function(){return f}});var n=r(7821),a=r(7498),s=r.n(a),o=r(168),i=r(4595),l=r(8078);function c(e,t){let r=Math.round((t.getTime()-e.getTime())/1e3);return r<5?"just now":r<60?"".concat(r,"s ago"):r<3600?"".concat(Math.round(r/60),"m ago"):"".concat(Math.round(r/3600),"h ago")}function d(){let e=(0,o.useRouter)(),[t,r]=(0,l.useState)(()=>new Date),[a,s]=(0,l.useState)(!1),[i,d]=(0,l.useState)(()=>new Date),[u,h]=(0,l.useState)(null),m=(0,l.useRef)(null),f=()=>{fetch("/api/github-status",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{if(e&&"string"==typeof e.last_synced_at){var t;h({repo:null!==(t=e.repo)&&void 0!==t?t:"",last_synced_at:e.last_synced_at})}else h(null)}).catch(()=>h(null))};(0,l.useEffect)(()=>{f();let e=new EventSource("/api/watch");return e.onopen=()=>s(!0),e.onmessage=()=>{r(new Date),f()},e.onerror=()=>s(!1),()=>e.close()},[e]),(0,l.useEffect)(()=>{let e=setInterval(()=>d(new Date),3e4);return()=>clearInterval(e)},[]),(0,l.useEffect)(()=>()=>{m.current&&clearTimeout(m.current)},[]);let x=a?"Updated ".concat(c(t,i)):"Reconnecting…";return(0,n.jsxs)("div",{className:"px-3 py-1 text-caption text-text-tertiary","aria-live":"polite",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",title:"Last refresh ".concat(t.toLocaleTimeString()).concat(a?"":" — watcher disconnected"),children:[(0,n.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full ".concat(a?"bg-[var(--success)]":"bg-[var(--medium)]"),"aria-hidden":"true"}),(0,n.jsx)("span",{children:x})]}),u&&(0,n.jsxs)("div",{className:"mt-1 flex items-center gap-2",title:"GitHub sync with ".concat(u.repo," at ").concat(new Date(u.last_synced_at).toLocaleTimeString()),children:[(0,n.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full bg-accent","aria-hidden":"true"}),(0,n.jsxs)("span",{children:["GitHub ",c(new Date(u.last_synced_at),i)]})]})]})}function u(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"})})}function h(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"})})}function m(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"})})}let f=[{label:"Recon",items:[{href:"/",label:"Home",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m2.25 12 8.954-8.955a1.126 1.126 0 0 1 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"})})}},{href:"/progress",label:"Progress",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15a2.25 2.25 0 0 1 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"})})}},{href:"/stats",label:"Stats",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}}]},{label:"Analysis",items:[{href:"/access",label:"Access Control",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"})})}},{href:"/functions",label:"Functions",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"})})}},{href:"/calls",label:"Ext Calls",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"})})}}]},{label:"Reasoning",items:[{href:"/conformance",label:"Spec Conformance",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375"})})}}]},{label:"Visual",items:[{href:"/diagram",label:"Diagram",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})})}},{href:"/flows",label:"Flows",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5"})})}}]},{label:"Issues",items:[{href:"/issues",label:"Board",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})})}},{href:"/overleaf",label:"Overleaf",icon:function(e){return(0,n.jsx)("svg",{...e,"aria-hidden":"true",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})})}}]}];function x(){let{theme:e,setTheme:t}=(0,i.F)(),[r,a]=(0,l.useState)(!1);return((0,l.useEffect)(()=>a(!0),[]),r)?(0,n.jsxs)("button",{type:"button",onClick:()=>t("dark"===e?"light":"dark"),"aria-label":"Switch to ".concat("dark"===e?"light":"dark"," mode"),className:"flex w-full items-center gap-2.5 rounded-md px-3 py-2 text-body text-text-secondary hover:bg-surface-2 hover:text-text-primary",children:[(0,n.jsx)("light"===e?h:m,{className:"h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:"light"===e?"Light":"Dark"})]}):(0,n.jsx)("div",{className:"h-9"})}function p(e){let{children:t,version:r}=e,a=(0,o.usePathname)(),[i,c]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{c(!1)},[a]),(0,n.jsxs)("div",{className:"min-h-screen",children:[(0,n.jsx)("button",{type:"button","aria-label":"Toggle navigation",onClick:()=>c(!i),className:"fixed left-3 top-3 z-[60] flex h-10 w-10 items-center justify-center rounded-md bg-surface-1 border border-border-default text-text-secondary hover:text-text-primary md:hidden",children:(0,n.jsx)(u,{className:"h-5 w-5"})}),i&&(0,n.jsx)("div",{className:"fixed inset-0 z-40 md:hidden",style:{background:"var(--overlay-bg)"},onClick:()=>c(!1)}),(0,n.jsxs)("nav",{"aria-label":"Main navigation",className:"fixed left-0 top-0 z-50 flex h-screen w-[220px] flex-col border-r border-border-subtle bg-surface-1 transition-transform duration-200 ".concat(i?"translate-x-0":"-translate-x-full"," md:translate-x-0"),children:[(0,n.jsx)("div",{className:"px-5 pb-4 pt-6",children:(0,n.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,n.jsx)("span",{className:"text-title font-semibold text-text-primary",children:"Hex"}),(0,n.jsxs)("span",{className:"text-caption text-text-tertiary",children:["v",r]})]})}),(0,n.jsx)("div",{className:"flex-1 overflow-y-auto px-3 pb-4",children:f.map(e=>(0,n.jsxs)("div",{className:"mt-6 first:mt-0",children:[(0,n.jsx)("div",{className:"mb-1.5 px-3 text-caption font-medium text-text-tertiary",children:e.label}),e.items.map(e=>{let t=a===e.href;return(0,n.jsxs)(s(),{href:e.href,"aria-current":t?"page":void 0,className:"group flex items-center gap-2.5 rounded-md px-3 py-2 text-body ".concat(t?"bg-accent-subtle text-accent font-medium":"text-text-secondary hover:bg-surface-2 hover:text-text-primary"),children:[(0,n.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:e.label})]},e.href)})]},e.label))}),(0,n.jsxs)("div",{className:"border-t border-border-subtle px-3 py-3 space-y-1",children:[(0,n.jsx)(d,{}),(0,n.jsx)(x,{}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-1 text-caption text-text-tertiary",children:[(0,n.jsx)("kbd",{className:"rounded border border-border-default bg-surface-2 px-1.5 py-0.5 text-[11px]",children:"⌘K"}),(0,n.jsx)("span",{children:"Quick nav"})]})]})]}),(0,n.jsx)("main",{className:"min-h-screen bg-surface-0 p-6 pt-16 md:ml-[220px] md:pt-6",children:(0,n.jsx)("div",{className:"mx-auto ".concat("/issues"===a?"max-w-none":"max-w-6xl"),children:t})})]})}},168:function(e,t,r){"use strict";var n=r(7462);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},3812:function(){},5256:function(e){e.exports={style:{fontFamily:"'__JetBrains_Mono_3c557b', '__JetBrains_Mono_Fallback_3c557b'",fontStyle:"normal"},className:"__className_3c557b",variable:"__variable_3c557b"}},8414:function(e){e.exports={style:{fontFamily:"'__Manrope_73ee6c', '__Manrope_Fallback_73ee6c'",fontStyle:"normal"},className:"__className_73ee6c",variable:"__variable_73ee6c"}},4595:function(e,t,r){"use strict";r.d(t,{F:function(){return d},ThemeProvider:function(){return u}});var n=r(8078),a=(e,t,r,n,a,s,o,i)=>{let l=document.documentElement,c=["light","dark"];function d(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&s?a.map(e=>s[e]||e):a;r?(l.classList.remove(...n),l.classList.add(s&&s[t]?s[t]:t)):l.setAttribute(e,t)}),i&&c.includes(t)&&(l.style.colorScheme=t)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=o&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},s=["light","dark"],o="(prefers-color-scheme: dark)",i="undefined"==typeof window,l=n.createContext(void 0),c={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=n.useContext(l))?e:c},u=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(m,{...e}),h=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:a=!0,enableColorScheme:i=!0,storageKey:c="theme",themes:d=h,defaultTheme:u=a?"system":"light",attribute:m="data-theme",value:b,children:y,nonce:k,scriptProps:g}=e,[j,w]=n.useState(()=>x(c,u)),[L,C]=n.useState(()=>"system"===j?v():j),M=b?Object.values(b):d,N=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=v());let n=b?b[t]:t,o=r?p(k):null,l=document.documentElement,c=e=>{"class"===e?(l.classList.remove(...M),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(m)?m.forEach(c):c(m),i){let e=s.includes(u)?u:null,r=s.includes(t)?t:e;l.style.colorScheme=r}null==o||o()},[k]),_=n.useCallback(e=>{let t="function"==typeof e?e(j):e;w(t);try{localStorage.setItem(c,t)}catch(e){}},[j]),S=n.useCallback(e=>{C(v(e)),"system"===j&&a&&!t&&N("system")},[j,t]);n.useEffect(()=>{let e=window.matchMedia(o);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?w(e.newValue):_(u))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[_]),n.useEffect(()=>{N(null!=t?t:j)},[t,j]);let E=n.useMemo(()=>({theme:j,setTheme:_,forcedTheme:t,resolvedTheme:"system"===j?L:j,themes:a?[...d,"system"]:d,systemTheme:a?L:void 0}),[j,_,t,L,a,d]);return n.createElement(l.Provider,{value:E},n.createElement(f,{forcedTheme:t,storageKey:c,attribute:m,enableSystem:a,enableColorScheme:i,defaultTheme:u,value:b,themes:d,nonce:k,scriptProps:g}),y)},f=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:s,enableSystem:o,enableColorScheme:i,defaultTheme:l,value:c,themes:d,nonce:u,scriptProps:h}=e,m=JSON.stringify([s,r,l,t,d,c,o,i]).slice(1,-1);return n.createElement("script",{...h,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:"(".concat(a.toString(),")(").concat(m,")")}})}),x=(e,t)=>{let r;if(!i){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(o)),e.matches?"dark":"light")}},function(e){e.O(0,[5116,7498,7115,3205,1744],function(){return e(e.s=9640)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{9778:function(e,r,n){Promise.resolve().then(n.bind(n,9487)),Promise.resolve().then(n.t.bind(n,7498,23))},9487:function(e,r,n){"use strict";n.d(r,{MarkdownRenderer:function(){return c}});var t=n(7821),o=n(8525),s=n(5592);function c(e){let{content:r,className:n}=e;return(0,t.jsx)("div",{className:"prose max-w-none\n prose-headings:text-text-primary\n prose-p:text-text-secondary\n prose-strong:text-text-primary\n prose-code:text-accent\n prose-code:before:content-none\n prose-code:after:content-none\n prose-pre:bg-surface-0\n prose-pre:border\n prose-pre:border-border-default\n prose-a:text-accent\n prose-a:no-underline\n hover:prose-a:underline\n prose-th:text-text-primary\n prose-td:text-text-secondary\n prose-hr:border-border-default\n prose-blockquote:border-border-emphasis\n prose-blockquote:text-text-secondary\n prose-li:text-text-secondary\n ".concat(null!=n?n:""),children:(0,t.jsx)(o.UG,{remarkPlugins:[s.Z],children:r})})}}},function(e){e.O(0,[7498,7397,7115,3205,1744],function(){return e(e.s=9778)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{9778:function(e,r,n){Promise.resolve().then(n.bind(n,9487)),Promise.resolve().then(n.t.bind(n,7498,23))},9487:function(e,r,n){"use strict";n.d(r,{MarkdownRenderer:function(){return c}});var t=n(7821),o=n(8525),s=n(5592);function c(e){let{content:r,className:n}=e;return(0,t.jsx)("div",{className:"prose max-w-none\n prose-headings:text-text-primary\n prose-p:text-text-secondary\n prose-strong:text-text-primary\n prose-code:text-accent\n prose-code:before:content-none\n prose-code:after:content-none\n prose-pre:bg-surface-0\n prose-pre:border\n prose-pre:border-border-default\n prose-a:text-accent\n prose-a:no-underline\n hover:prose-a:underline\n prose-th:text-text-primary\n prose-td:text-text-secondary\n prose-hr:border-border-default\n prose-blockquote:border-border-emphasis\n prose-blockquote:text-text-secondary\n prose-li:text-text-secondary\n ".concat(null!=n?n:""),children:(0,t.jsx)(o.UG,{remarkPlugins:[s.Z],children:r})})}}},function(e){e.O(0,[7397,7498,7115,3205,1744],function(){return e(e.s=9778)}),_N_E=e.O()}]);
@@ -0,0 +1,3 @@
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
+ ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-3{bottom:.75rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[9000\]{z-index:9000}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-sp-2{margin-bottom:var(--space-2)}.mb-sp-3{margin-bottom:var(--space-3)}.mb-sp-4{margin-bottom:var(--space-4)}.mb-sp-5{margin-bottom:var(--space-5)}.mb-sp-6{margin-bottom:var(--space-6)}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-sp-2{margin-top:var(--space-2)}.mt-sp-3{margin-top:var(--space-3)}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-9{height:2.25rem}.h-\[600px\]{height:600px}.h-\[700px\]{height:700px}.h-\[85vh\]{height:85vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.min-h-9{min-height:2.25rem}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-\[220px\]{width:220px}.w-full{width:100%}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-\[200px\]{max-width:200px}.max-w-lg{max-width:32rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.translate-x-0{--tw-translate-x:0px}.rotate-180,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-sp-2{gap:var(--space-2)}.gap-sp-3{gap:var(--space-3)}.gap-sp-4{gap:var(--space-4)}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1{row-gap:.25rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border-subtle>:not([hidden])~:not([hidden]){border-color:var(--border-subtle)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[var\(--accent\)\],.border-accent{border-color:var(--accent)}.border-border-default{border-color:var(--border-default)}.border-border-emphasis{border-color:var(--border-emphasis)}.border-border-subtle{border-color:var(--border-subtle)}.bg-\[var\(--accent\)\]{background-color:var(--accent)}.bg-\[var\(--critical\)\]{background-color:var(--critical)}.bg-\[var\(--medium\)\]{background-color:var(--medium)}.bg-\[var\(--success\)\]{background-color:var(--success)}.bg-accent{background-color:var(--accent)}.bg-accent-subtle{background-color:var(--accent-subtle)}.bg-surface-0{background-color:var(--surface-0)}.bg-surface-1{background-color:var(--surface-1)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface-3{background-color:var(--surface-3)}.bg-text-tertiary{background-color:var(--text-tertiary)}.bg-transparent{background-color:transparent}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-sp-4{padding:var(--space-4)}.p-sp-6{padding:var(--space-6)}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-sp-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-sp-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-sp-5{padding-left:var(--space-5);padding-right:var(--space-5)}.px-sp-6{padding-left:var(--space-6);padding-right:var(--space-6)}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-sp-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-sp-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-sp-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.py-sp-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.py-sp-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.pb-4{padding-bottom:1rem}.pt-16{padding-top:4rem}.pt-6{padding-top:1.5rem}.pt-\[12vh\]{padding-top:12vh}.pt-sp-2{padding-top:var(--space-2)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-\[11px\]{font-size:11px}.text-body{font-size:14px;line-height:1.55;font-weight:400}.text-caption{font-size:12px;line-height:1.4;font-weight:400}.text-display{font-size:28px;line-height:1.2;font-weight:600}.text-heading{font-size:15px;line-height:1.4;font-weight:500}.text-title{font-size:20px;line-height:1.3;font-weight:600}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-relaxed{line-height:1.625}.tracking-wider{letter-spacing:.05em}.text-\[var\(--critical\)\]{color:var(--critical)}.text-\[var\(--high\)\]{color:var(--high)}.text-\[var\(--info\)\]{color:var(--info)}.text-\[var\(--low\)\]{color:var(--low)}.text-\[var\(--medium\)\]{color:var(--medium)}.text-\[var\(--neutral\)\]{color:var(--neutral)}.text-\[var\(--success\)\]{color:var(--success)}.text-accent{color:var(--accent)}.text-severity-critical{color:var(--critical)}.text-surface-0{color:var(--surface-0)}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.text-text-tertiary{color:var(--text-tertiary)}.placeholder-text-tertiary::-moz-placeholder{color:var(--text-tertiary)}.placeholder-text-tertiary::placeholder{color:var(--text-tertiary)}.opacity-20{opacity:.2}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg)}.shadow-sm{--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--critical:oklch(0.58 0.22 25);--high:oklch(0.68 0.16 55);--medium:oklch(0.72 0.14 85);--low:oklch(0.58 0.14 250);--info:oklch(0.55 0.01 265);--success:oklch(0.60 0.16 145);--neutral:oklch(0.50 0.005 265);--font-sans:"Manrope",system-ui,-apple-system,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-8:48px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--overlay-bg:oklch(0.08 0.005 265/0.75);--shadow-sm:0 1px 2px oklch(0 0 0/0.05);--shadow-md:0 2px 8px oklch(0 0 0/0.08),0 1px 2px oklch(0 0 0/0.04);--shadow-lg:0 8px 24px oklch(0 0 0/0.12),0 2px 8px oklch(0 0 0/0.06)}[data-theme=dark]{--surface-0:oklch(0.13 0.005 265);--surface-1:oklch(0.17 0.006 265);--surface-2:oklch(0.21 0.006 265);--surface-3:oklch(0.26 0.006 265);--border-subtle:oklch(0.28 0.005 265/0.5);--border-default:oklch(0.32 0.006 265/0.55);--border-emphasis:oklch(0.42 0.01 265/0.65);--text-primary:oklch(0.93 0.005 265);--text-secondary:oklch(0.65 0.01 265);--text-tertiary:oklch(0.48 0.008 265);--accent:oklch(0.58 0.19 265);--accent-subtle:oklch(0.58 0.19 265/0.10);--accent-secondary:oklch(0.68 0.14 265);--accent-warm:oklch(0.68 0.16 55)}[data-theme=light]{--surface-0:oklch(0.97 0.003 265);--surface-1:oklch(1 0 0);--surface-2:oklch(0.96 0.004 265);--surface-3:oklch(0.93 0.005 265);--border-subtle:oklch(0.85 0.005 265/0.5);--border-default:oklch(0.80 0.006 265/0.45);--border-emphasis:oklch(0.70 0.01 265/0.5);--text-primary:oklch(0.15 0.01 265);--text-secondary:oklch(0.42 0.01 265);--text-tertiary:oklch(0.60 0.008 265);--accent:oklch(0.48 0.22 265);--accent-subtle:oklch(0.48 0.22 265/0.08);--accent-secondary:oklch(0.55 0.18 265);--accent-warm:oklch(0.58 0.16 55)}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--surface-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.55}.font-mono,code,pre{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.transition-colors,[role=button],a,button,input,select,textarea{transition:color .2s ease,background-color .2s ease,border-color .2s ease,opacity .2s ease,box-shadow .2s ease}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-emphasis)}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.stagger>*{opacity:0;animation:fade-in .3s ease-out forwards}.stagger>:first-child{animation-delay:.03s}.stagger>:nth-child(2){animation-delay:.06s}.stagger>:nth-child(3){animation-delay:.09s}.stagger>:nth-child(4){animation-delay:.12s}.stagger>:nth-child(5){animation-delay:.15s}.stagger>:nth-child(6){animation-delay:.18s}.stagger>:nth-child(7){animation-delay:.21s}.stagger>:nth-child(8){animation-delay:.24s}@keyframes scale-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.scale-in{animation:scale-in .35s ease-out forwards}.mermaid svg{background:transparent!important}.first\:mt-0:first-child{margin-top:0}.hover\:border-\[var\(--accent\)\]:hover{border-color:var(--accent)}.hover\:border-border-default:hover{border-color:var(--border-default)}.hover\:bg-accent-secondary:hover{background-color:var(--accent-secondary)}.hover\:bg-surface-2:hover{background-color:var(--surface-2)}.hover\:bg-surface-3:hover{background-color:var(--surface-3)}.hover\:text-text-primary:hover{color:var(--text-primary)}.hover\:text-text-secondary:hover{color:var(--text-secondary)}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-accent:focus{border-color:var(--accent)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:-2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-accent:focus-visible{outline-color:var(--accent)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:text-accent{color:var(--accent)}.prose-headings\:text-text-primary :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-primary)}.prose-p\:text-text-secondary :is(:where(p):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-secondary)}.prose-a\:text-accent :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--accent)}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-blockquote\:border-border-emphasis :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){border-color:var(--border-emphasis)}.prose-blockquote\:text-text-secondary :is(:where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-secondary)}.prose-strong\:text-text-primary :is(:where(strong):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-primary)}.prose-code\:text-accent :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--accent)}.prose-code\:before\:content-none :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))):before{--tw-content:none;content:var(--tw-content)}.prose-code\:after\:content-none :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))):after{--tw-content:none;content:var(--tw-content)}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-border-default :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-color:var(--border-default)}.prose-pre\:bg-surface-0 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:var(--surface-0)}.prose-li\:text-text-secondary :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-secondary)}.prose-th\:text-text-primary :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-primary)}.prose-td\:text-text-secondary :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){color:var(--text-secondary)}.prose-hr\:border-border-default :is(:where(hr):not(:where([class~=not-prose],[class~=not-prose] *))){border-color:var(--border-default)}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:768px){.md\:ml-\[220px\]{margin-left:220px}.md\:hidden{display:none}.md\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:pt-6{padding-top:1.5rem}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/438aa629764e75f3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/875ae681bfde4580-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/51251f8b9793cdb3-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/e857b654a2caa584-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/cc978ac5ee68c2b6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Manrope_73ee6c;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_next/static/media/4c9affa5bc8f420e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Manrope_Fallback_73ee6c;src:local("Arial");ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.00%;size-adjust:103.19%}.__className_73ee6c{font-family:__Manrope_73ee6c,__Manrope_Fallback_73ee6c;font-style:normal}.__variable_73ee6c{--font-sans:"__Manrope_73ee6c","__Manrope_Fallback_73ee6c"}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/886030b0b59bc5a7-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/0aa834ed78bf6d07-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/67957d42bae0796d-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/f911b923c6adde36-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/939c4f875ee75fbb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__JetBrains_Mono_3c557b;font-style:normal;font-weight:100 800;font-display:swap;src:url(/_next/static/media/bb3ef058b751a6ad-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__JetBrains_Mono_Fallback_3c557b;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_3c557b{font-family:__JetBrains_Mono_3c557b,__JetBrains_Mono_Fallback_3c557b;font-style:normal}.__variable_3c557b{--font-mono:"__JetBrains_Mono_3c557b","__JetBrains_Mono_Fallback_3c557b"}
@@ -11,7 +11,8 @@ import {
11
11
  useDroppable,
12
12
  } from '@dnd-kit/core';
13
13
  import { SeverityBadge } from '@/components/SeverityBadge';
14
- import { findingToHackmd, type FormatContext } from '@/lib/finding-markdown';
14
+ import { MarkdownRenderer } from '@/components/MarkdownRenderer';
15
+ import { findingToHackmd, findingToGithubBody, type FormatContext } from '@/lib/finding-markdown';
15
16
 
16
17
  export type BoardColumn = 'potential' | 'verified' | 'synced' | 'invalid' | 'duplicate';
17
18
  export type SyncState = 'none' | 'unsynced' | 'synced_open' | 'synced_closed' | 'conflict';
@@ -218,7 +219,7 @@ export function IssuesBoardClient({
218
219
  </header>
219
220
 
220
221
  <DndContext sensors={sensors} onDragEnd={handleDragEnd}>
221
- <div className="grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-5">
222
+ <div className="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-5">
222
223
  {COLUMN_DEFS.map((col) => (
223
224
  <Column key={col.id} column={col} issues={grouped[col.id]} onOpen={setOpenId} />
224
225
  ))}
@@ -364,7 +365,12 @@ function Card({ issue, onOpen }: { issue: BoardIssue; onOpen: (id: string) => vo
364
365
  <span className="font-mono text-caption text-text-tertiary">{issue.id}</span>
365
366
  <SeverityBadge severity={issue.severity} />
366
367
  </div>
367
- <h3 className="mt-1 text-body font-medium text-text-primary line-clamp-2">{issue.title}</h3>
368
+ <h3
369
+ title={issue.title}
370
+ className="mt-1 text-body font-medium text-text-primary line-clamp-3"
371
+ >
372
+ {issue.title}
373
+ </h3>
368
374
  <div className="mt-2 flex flex-wrap items-center gap-1.5 text-caption">
369
375
  <SourceChip source={issue.source} />
370
376
  <SyncChip issue={issue} />
@@ -490,6 +496,8 @@ function IssueModal({
490
496
  const [updateFromClient, setUpdateFromClient] = useState(issue.update_from_client ?? '');
491
497
  const [saving, setSaving] = useState(false);
492
498
  const [copied, setCopied] = useState(false);
499
+ // Open in read-only view mode; the Edit button switches to the form below.
500
+ const [isEditing, setIsEditing] = useState(false);
493
501
  const overlayRef = useRef<HTMLDivElement>(null);
494
502
 
495
503
  // Synced issues are read-only in Hex; edits happen on GitHub.
@@ -534,7 +542,7 @@ function IssueModal({
534
542
  };
535
543
  await onSave(updates);
536
544
  setSaving(false);
537
- onClose();
545
+ setIsEditing(false); // back to the rendered view, now showing the saved values
538
546
  };
539
547
 
540
548
  return (
@@ -551,8 +559,8 @@ function IssueModal({
551
559
  <div
552
560
  role="dialog"
553
561
  aria-modal="true"
554
- aria-label={`Edit issue ${issue.id}`}
555
- className="relative flex max-h-[90vh] w-full max-w-2xl flex-col overflow-hidden border border-border-emphasis bg-surface-1 shadow-2xl"
562
+ aria-label={`Issue ${issue.id}`}
563
+ className="relative flex h-[85vh] w-full max-w-4xl flex-col overflow-hidden border border-border-emphasis bg-surface-1 shadow-2xl"
556
564
  style={{ borderRadius: 'var(--radius-md)', boxShadow: 'var(--shadow-accent)' }}
557
565
  onClick={(e) => e.stopPropagation()}
558
566
  >
@@ -588,6 +596,8 @@ function IssueModal({
588
596
  <span className="font-mono">/sync-issues</span> to pull the changes back.
589
597
  </div>
590
598
  )}
599
+ {isEditing ? (
600
+ <>
591
601
  <Field label="Title">
592
602
  <input
593
603
  type="text"
@@ -660,6 +670,17 @@ function IssueModal({
660
670
  className="w-full rounded-md border border-border-default bg-surface-0 px-3 py-2 font-mono text-caption text-text-primary focus:border-accent focus:outline-none disabled:opacity-60"
661
671
  />
662
672
  </Field>
673
+ </>
674
+ ) : (
675
+ <>
676
+ <MarkdownRenderer
677
+ content={`**Title**: ${issue.title}\n\n**Severity**: ${issue.severity}\n\n${findingToGithubBody(
678
+ issue,
679
+ formatCtx,
680
+ )}`}
681
+ />
682
+ </>
683
+ )}
663
684
 
664
685
  {issue.code_locations.length > 0 && (
665
686
  <div className="mt-4">
@@ -699,22 +720,47 @@ function IssueModal({
699
720
  {copied ? 'Copied!' : 'Copy as HackMD'}
700
721
  </button>
701
722
  <div className="flex items-center gap-2">
702
- <button
703
- type="button"
704
- onClick={onClose}
705
- className="rounded-md px-3 py-1.5 text-body text-text-secondary hover:text-text-primary"
706
- >
707
- {locked ? 'Close' : 'Cancel'}
708
- </button>
709
- {!locked && (
710
- <button
711
- type="button"
712
- onClick={submit}
713
- disabled={saving}
714
- className="rounded-md bg-accent px-3 py-1.5 text-body font-medium text-surface-0 hover:bg-accent-secondary disabled:opacity-50"
715
- >
716
- {saving ? 'Saving…' : 'Save'}
717
- </button>
723
+ {isEditing ? (
724
+ <>
725
+ <button
726
+ type="button"
727
+ onClick={() => setIsEditing(false)}
728
+ className="rounded-md px-3 py-1.5 text-body text-text-secondary hover:text-text-primary"
729
+ >
730
+ Cancel
731
+ </button>
732
+ <button
733
+ type="button"
734
+ onClick={submit}
735
+ disabled={saving}
736
+ className="rounded-md bg-accent px-3 py-1.5 text-body font-medium text-surface-0 hover:bg-accent-secondary disabled:opacity-50"
737
+ >
738
+ {saving ? 'Saving…' : 'Save'}
739
+ </button>
740
+ </>
741
+ ) : (
742
+ <>
743
+ <button
744
+ type="button"
745
+ onClick={onClose}
746
+ className="rounded-md px-3 py-1.5 text-body text-text-secondary hover:text-text-primary"
747
+ >
748
+ Close
749
+ </button>
750
+ <button
751
+ type="button"
752
+ onClick={() => setIsEditing(true)}
753
+ disabled={locked}
754
+ title={
755
+ locked
756
+ ? 'Synced to GitHub — edit it there, then run /sync-issues to pull the changes back.'
757
+ : undefined
758
+ }
759
+ className="rounded-md bg-accent px-3 py-1.5 text-body font-medium text-surface-0 hover:bg-accent-secondary disabled:cursor-not-allowed disabled:opacity-40"
760
+ >
761
+ Edit
762
+ </button>
763
+ </>
718
764
  )}
719
765
  </div>
720
766
  </div>
@@ -3,7 +3,7 @@ import { Manrope, JetBrains_Mono } from 'next/font/google';
3
3
  import { ThemeProvider } from 'next-themes';
4
4
  import { DashboardLayout } from '@/components/DashboardLayout';
5
5
  import { CommandPalette } from '@/components/CommandPalette';
6
- import { version } from '../../package.json';
6
+ import pkg from '../../package.json';
7
7
  import './globals.css';
8
8
 
9
9
  const manrope = Manrope({
@@ -33,7 +33,7 @@ export default function RootLayout({
33
33
  <body className={`${manrope.variable} ${jetbrainsMono.variable} min-h-screen bg-surface-0 text-text-primary font-sans`}>
34
34
  <ThemeProvider attribute="data-theme" defaultTheme="dark" enableSystem={false}>
35
35
  <CommandPalette />
36
- <DashboardLayout version={version}>{children}</DashboardLayout>
36
+ <DashboardLayout version={pkg.version}>{children}</DashboardLayout>
37
37
  </ThemeProvider>
38
38
  </body>
39
39
  </html>