geneseed 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +24 -14
  3. package/SETUP.md +38 -7
  4. package/SHIPPED.md +6 -5
  5. package/adapters/bob/README.md +40 -10
  6. package/adapters/claude-code/README.md +5 -0
  7. package/adapters/claude-code/settings.json +8 -1
  8. package/adapters/copilot/README.md +52 -25
  9. package/adapters/opencode/README.md +11 -3
  10. package/adapters/opencode/plugins/geneseed-guard.js +40 -6
  11. package/bin/build-driver.mjs +16 -10
  12. package/bin/geneseed-cli.mjs +55 -56
  13. package/bin/geneseed-hook.mjs +21 -14
  14. package/docs/candidate-hosts.md +74 -0
  15. package/docs/extending.md +10 -8
  16. package/docs/token-footprint.md +32 -21
  17. package/docs/web/agents.md +1 -1
  18. package/docs/web/first-session.md +1 -1
  19. package/docs/web/skills.md +1 -1
  20. package/docs/web-ui.md +5 -13
  21. package/harness.config.json +1 -1
  22. package/js/README.md +5 -6
  23. package/js/build/emit-claude.mjs +22 -7
  24. package/js/build/render.mjs +37 -19
  25. package/js/build/source.mjs +22 -2
  26. package/js/cli-table.json +84 -0
  27. package/js/hosts/hooks.mjs +240 -78
  28. package/js/hosts/hosts.mjs +56 -2
  29. package/js/hosts/link.mjs +1 -1
  30. package/js/hosts/mcp.mjs +3 -1
  31. package/js/hosts/native.mjs +86 -15
  32. package/js/hosts/opencode.mjs +14 -0
  33. package/js/hosts/settings.mjs +173 -5
  34. package/js/inspect/excludes.mjs +1 -1
  35. package/js/inspect/inventory.mjs +13 -8
  36. package/js/inspect/status.mjs +50 -2
  37. package/js/maintain/uninstall.mjs +38 -11
  38. package/js/maintain/update.mjs +2 -2
  39. package/js/web/actions.mjs +8 -8
  40. package/js/web/api.mjs +5 -10
  41. package/js/web/docs.mjs +9 -31
  42. package/js/web/handler.mjs +20 -30
  43. package/js/web/jobs.mjs +5 -26
  44. package/js/web/routes.mjs +18 -84
  45. package/js/web/server.mjs +3 -3
  46. package/package.json +1 -1
  47. package/registry.json +99 -78
  48. package/src/AGENT.md.tmpl +69 -28
  49. package/src/agents/architect.md +4 -1
  50. package/src/agents/explorer.md +3 -1
  51. package/src/agents/operator.md +13 -0
  52. package/src/agents/pragmatist.md +12 -0
  53. package/src/agents/researcher.md +72 -0
  54. package/src/agents/security.md +7 -1
  55. package/src/agents/skeptic.md +2 -1
  56. package/src/agents/tester.md +5 -1
  57. package/src/agents/user-advocate.md +13 -0
  58. package/src/doctrines/README.md +3 -3
  59. package/src/doctrines/rigor.md +14 -1
  60. package/src/laws/universal.md +98 -20
  61. package/src/ontology/universal.md +38 -13
  62. package/src/skills/_self-improvement.md +19 -0
  63. package/src/skills/_template.md +6 -13
  64. package/src/skills/brainstorm.md +37 -19
  65. package/src/skills/bruno-collection-generator.md +52 -0
  66. package/src/skills/bruno-test-writer.md +51 -0
  67. package/src/skills/ci-fix.md +49 -0
  68. package/src/skills/codebase-design.md +1 -12
  69. package/src/skills/commit.md +1 -12
  70. package/src/skills/consolidate-memory.md +50 -0
  71. package/src/skills/council.md +1 -12
  72. package/src/skills/debug.md +1 -12
  73. package/src/skills/deps-audit.md +46 -0
  74. package/src/skills/develop.md +38 -20
  75. package/src/skills/document-project.md +1 -12
  76. package/src/skills/domain-modeling.md +1 -12
  77. package/src/skills/forge-mcp.md +2 -13
  78. package/src/skills/fresh-eyes.md +1 -12
  79. package/src/skills/frontend-design.md +1 -12
  80. package/src/skills/geneseed-code-review.md +1 -12
  81. package/src/skills/geneseed.md +1 -12
  82. package/src/skills/git-archaeology.md +1 -12
  83. package/src/skills/git-rescue.md +1 -12
  84. package/src/skills/handoff.md +1 -12
  85. package/src/skills/herdr.md +2 -12
  86. package/src/skills/ingest.md +1 -12
  87. package/src/skills/migrate.md +1 -12
  88. package/src/skills/opencode-theme.md +2 -12
  89. package/src/skills/parallel-agents.md +1 -12
  90. package/src/skills/pipeline.md +2 -13
  91. package/src/skills/plan.md +1 -12
  92. package/src/skills/ponytail.md +1 -12
  93. package/src/skills/profile.md +1 -12
  94. package/src/skills/prose.md +1 -12
  95. package/src/skills/prototype.md +1 -12
  96. package/src/skills/quiz.md +43 -0
  97. package/src/skills/refactor.md +1 -12
  98. package/src/skills/release.md +1 -12
  99. package/src/skills/repo-map.md +1 -12
  100. package/src/skills/research.md +6 -14
  101. package/src/skills/review-response.md +1 -12
  102. package/src/skills/roast-me.md +1 -12
  103. package/src/skills/rule.md +1 -12
  104. package/src/skills/security-audit.md +51 -0
  105. package/src/skills/ship.md +1 -12
  106. package/src/skills/skill-forge.md +59 -0
  107. package/src/skills/teach.md +50 -0
  108. package/src/skills/tickets.md +1 -12
  109. package/src/skills/wayfinder.md +1 -12
  110. package/src/skills/wiki.md +1 -12
  111. package/src/skills/workflow.md +74 -26
  112. package/src/skills/worktree.md +52 -0
  113. package/themes/_TEMPLATE.json +12 -8
  114. package/themes/biker.json +12 -8
  115. package/themes/commentator.json +12 -8
  116. package/themes/cyberpunk.json +12 -8
  117. package/themes/gamer.json +12 -8
  118. package/themes/imperial.json +12 -8
  119. package/themes/joker.json +12 -8
  120. package/themes/marvin.json +12 -8
  121. package/themes/mean.json +12 -8
  122. package/themes/military.json +12 -8
  123. package/themes/neutral.json +12 -8
  124. package/themes/pirate.json +12 -8
  125. package/themes/sports.json +12 -8
  126. package/themes/verstappen.json +12 -8
  127. package/themes/wizard.json +12 -8
  128. package/web/dist/assets/Activity-DMGhhjQc.js +1 -0
  129. package/web/dist/assets/ActivityDetail-CeQcDA7e.js +1 -0
  130. package/web/dist/assets/{CatalogRow-DqS4e5XM.js → CatalogRow-CnSbDPyg.js} +1 -1
  131. package/web/dist/assets/{Diff-CIrGbiqm.js → Diff-D_ksMBD1.js} +1 -1
  132. package/web/dist/assets/{Doctor-CpI53oHY.js → Doctor-Brb3_oCT.js} +1 -1
  133. package/web/dist/assets/FilterInput-DbRWPhtT.js +1 -0
  134. package/web/dist/assets/GreenhouseView-F3VNFr73.js +2 -0
  135. package/web/dist/assets/{Harness-vRYs11kX.js → Harness-DJSwfYeF.js} +1 -1
  136. package/web/dist/assets/JournalView-BLRYRnB3.js +1 -0
  137. package/web/dist/assets/Laws-CKYns9qe.js +3 -0
  138. package/web/dist/assets/Library-BK0YloSv.js +1 -0
  139. package/web/dist/assets/{Markdown-kgpg9EQM.js → Markdown-BzTRzc7a.js} +1 -1
  140. package/web/dist/assets/OperatorHudView-D3OQSGp5.js +2 -0
  141. package/web/dist/assets/{Profile-CHr-PPf6.js → Profile-CPA2u_0g.js} +1 -1
  142. package/web/dist/assets/{Rules-CsC6hfqk.js → Rules-Lukel-Ru.js} +1 -1
  143. package/web/dist/assets/Skills-BKRLHH7m.js +1 -0
  144. package/web/dist/assets/{StatusBadge-gRrak0nO.js → StatusBadge-DI3weRKd.js} +1 -1
  145. package/web/dist/assets/{activity-B0-FXZCj.js → activity-C_H2Bx1P.js} +1 -1
  146. package/web/dist/assets/{index-Bx3I7cRW.js → index-B7_Wga23.js} +1 -1
  147. package/web/dist/assets/index-DzdQjvM1.css +1 -0
  148. package/web/dist/assets/{index-DJOhOwwR.js → index-N8dTrVro.js} +1 -1
  149. package/web/dist/assets/index-Py_IQjgK.js +10 -0
  150. package/web/dist/assets/jobBuckets-DfTUJUxR.js +1 -0
  151. package/web/dist/assets/lawCats-DUS9UTH4.js +1 -0
  152. package/web/dist/index.html +2 -2
  153. package/web/src/pages/Laws.jsx +82 -64
  154. package/js/web/graph.mjs +0 -0
  155. package/src/skills/clarify.md +0 -28
  156. package/src/skills/crash-course.md +0 -28
  157. package/src/skills/decode.md +0 -28
  158. package/src/skills/drill.md +0 -28
  159. package/src/skills/feynman.md +0 -26
  160. package/src/skills/gap-detector.md +0 -27
  161. package/src/skills/learning-path.md +0 -26
  162. package/src/skills/tdd.md +0 -31
  163. package/web/dist/assets/Activity-BTCG2gMl.js +0 -1
  164. package/web/dist/assets/ActivityDetail-julsmPDB.js +0 -1
  165. package/web/dist/assets/Graph-CS4tA7YS.js +0 -1
  166. package/web/dist/assets/Laws-BjbHJrJt.js +0 -3
  167. package/web/dist/assets/Library-CjC7BAWN.js +0 -1
  168. package/web/dist/assets/Skills-BvatJGfe.js +0 -1
  169. package/web/dist/assets/index-BnRWQbZb.js +0 -12
  170. package/web/dist/assets/index-D0f9tJlA.css +0 -1
  171. package/web/dist/assets/roman-DkYN0LX9.js +0 -1
@@ -1,12 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Activity-BTCG2gMl.js","assets/react-DOpiTn5v.js","assets/activity-B0-FXZCj.js","assets/ActivityDetail-julsmPDB.js","assets/Library-CjC7BAWN.js","assets/Markdown-kgpg9EQM.js","assets/StatusBadge-gRrak0nO.js","assets/Laws-BjbHJrJt.js","assets/roman-DkYN0LX9.js","assets/CatalogRow-DqS4e5XM.js","assets/Rules-CsC6hfqk.js","assets/Profile-CHr-PPf6.js","assets/Skills-BvatJGfe.js","assets/Diff-CIrGbiqm.js","assets/Doctor-CpI53oHY.js","assets/Graph-CS4tA7YS.js","assets/index-DJOhOwwR.js","assets/Harness-vRYs11kX.js","assets/index-Bx3I7cRW.js"])))=>i.map(i=>d[i]);
2
- import{r as b,c as vs}from"./react-DOpiTn5v.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))a(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&a(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function a(i){if(i.ep)return;i.ep=!0;const r=n(i);fetch(i.href,r)}})();var Ge={exports:{}},ye={};/**
3
- * @license React
4
- * react-jsx-runtime.production.min.js
5
- *
6
- * Copyright (c) Facebook, Inc. and its affiliates.
7
- *
8
- * This source code is licensed under the MIT license found in the
9
- * LICENSE file in the root directory of this source tree.
10
- */var bs=b,Ns=Symbol.for("react.element"),ws=Symbol.for("react.fragment"),ks=Object.prototype.hasOwnProperty,_s=bs.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Ms={key:!0,ref:!0,__self:!0,__source:!0};function Ke(e,t,n){var a,i={},r=null,l=null;n!==void 0&&(r=""+n),t.key!==void 0&&(r=""+t.key),t.ref!==void 0&&(l=t.ref);for(a in t)ks.call(t,a)&&!Ms.hasOwnProperty(a)&&(i[a]=t[a]);if(e&&e.defaultProps)for(a in t=e.defaultProps,t)i[a]===void 0&&(i[a]=t[a]);return{$$typeof:Ns,type:e,key:r,ref:l,props:i,_owner:_s.current}}ye.Fragment=ws;ye.jsx=Ke;ye.jsxs=Ke;Ge.exports=ye;var s=Ge.exports;const Ss="modulepreload",Es=function(e){return"/"+e},Le={},P=function(t,n,a){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));i=Promise.allSettled(n.map(u=>{if(u=Es(u),u in Le)return;Le[u]=!0;const m=u.endsWith(".css"),g=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${g}`))return;const j=document.createElement("link");if(j.rel=m?"stylesheet":Ss,m||(j.as="script"),j.crossOrigin="",j.href=u,c&&j.setAttribute("nonce",c),document.head.appendChild(j),m)return new Promise((f,h)=>{j.addEventListener("load",f),j.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${u}`)))})}))}function r(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return i.then(l=>{for(const c of l||[])c.status==="rejected"&&r(c.reason);return t().catch(r)})},As=typeof window<"u"?window.__GENESEED_TOKEN__:"";async function Ze(e){const t=await e.json().catch(()=>({})),n=e.status===403&&(t.error||"").startsWith("forbidden")?"the web server restarted since this page loaded — reload the page, then re-apply your edit":t.error||t.message||e.statusText,a=new Error(n);return a.status=e.status,a.body=t,a}async function E(e){const t=await fetch(e);if(!t.ok)throw await Ze(t);return t.json()}async function T(e,t={}){const n=await fetch(e,{method:"POST",headers:{"X-Geneseed-Token":As||"","Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok)throw await Ze(n);return n.json()}const Cs=()=>E("/api/overview"),$s=()=>E("/api/recent"),Ts=()=>E("/api/activity"),Fs=e=>E("/api/activity/"+encodeURIComponent(e)),Os=e=>T("/api/activity",{enabled:e}),Ls=()=>E("/api/setup"),Rs=()=>E("/api/doctor"),Is=()=>E("/api/themes"),Ds=()=>E("/api/graph"),Ps=Object.freeze(Object.defineProperty({__proto__:null,activity:Ts,activityDetail:Fs,activityToggle:Os,doctor:Rs,graph:Ds,overview:Cs,recent:$s,setup:Ls,themes:Is},Symbol.toStringTag,{value:"Module"})),zs=e=>E(`/api/catalog/${e}`),Bs=(e,t)=>E(`/api/item/${e}/${encodeURIComponent(t)}`),Vs=e=>T("/api/memory/delete",{name:e}),Hs=Object.freeze(Object.defineProperty({__proto__:null,catalog:zs,item:Bs,memoryDelete:Vs},Symbol.toStringTag,{value:"Module"})),Us=()=>E("/api/diff"),Ws=e=>T("/api/actions/restore",{files:e}),Gs=Object.freeze(Object.defineProperty({__proto__:null,diff:Us,restore:Ws},Symbol.toStringTag,{value:"Module"})),Ks=409,Zs=e=>E(`/api/jobs/${e}`),Ys=()=>E("/api/jobs"),qs=e=>T(`/api/jobs/${e}/cancel`);async function Js(e,t){try{return await T(`/api/actions/${e}`,t||{})}catch(n){throw n.status===Ks?new Error("An action is already running."):n}}const Xs=Object.freeze(Object.defineProperty({__proto__:null,action:Js,cancelJob:qs,job:Zs,jobs:Ys},Symbol.toStringTag,{value:"Module"})),Qs=()=>E("/api/mcp"),et=(e,t,n)=>T("/api/mcp",{path:e,name:t,enabled:n}),st=e=>T("/api/reveal",{path:e}),tt=Object.freeze(Object.defineProperty({__proto__:null,mcp:Qs,mcpReveal:st,mcpToggle:et},Symbol.toStringTag,{value:"Module"})),nt=()=>E("/api/installs"),at=(e,t,n)=>T("/api/install",{host:e,path:t,action:n}),it=(e,t,n)=>T("/api/install",{host:e,path:t,action:"remove",memory:n}),rt=(e,t)=>T("/api/view",{host:e,path:t}),ct=()=>T("/api/pick-folder",{}),lt=Object.freeze(Object.defineProperty({__proto__:null,installRemove:it,installToggle:at,installs:nt,pickFolder:ct,selectView:rt},Symbol.toStringTag,{value:"Module"})),ot=()=>E("/api/ping"),dt=()=>T("/api/shutdown"),ht=()=>T("/api/restart"),ut=Object.freeze(Object.defineProperty({__proto__:null,ping:ot,restart:ht,shutdown:dt},Symbol.toStringTag,{value:"Module"})),Ye=e=>e?`?harness=${encodeURIComponent(e)}`:"",mt=e=>E(`/api/docs${Ye(e)}`),xt=(e,t)=>E(`/api/docs/page/${encodeURIComponent(e)}${Ye(t)}`),pt=Object.freeze(Object.defineProperty({__proto__:null,docs:mt,docsPage:xt},Symbol.toStringTag,{value:"Module"})),ft=()=>E("/api/rules"),gt=e=>T("/api/rules",e),jt=e=>T("/api/rules/promote",e),yt=Object.freeze(Object.defineProperty({__proto__:null,rules:ft,rulesMutate:gt,rulesPromote:jt},Symbol.toStringTag,{value:"Module"})),vt=()=>E("/api/profile"),bt=e=>T("/api/profile",e),Nt=Object.freeze(Object.defineProperty({__proto__:null,profile:vt,profileSave:bt},Symbol.toStringTag,{value:"Module"})),wt=()=>E("/api/excludes"),kt=(e,t)=>T("/api/excludes",{action:e,path:t}),_t=Object.freeze(Object.defineProperty({__proto__:null,excludeMutate:kt,excludes:wt},Symbol.toStringTag,{value:"Module"})),C={...Ps,...Hs,...Gs,...Xs,...tt,...lt,...ut,...pt,...yt,...Nt,..._t},Mt=new Set(["activity","diff","settings","harness","harnesses","doctor","themes","graph","library","laws","rules","profile","skills","agents","about"]),St={themes:"harness",harnesses:"harness",about:"settings"};function Et(){const e=()=>{const i=((typeof window<"u"?window.location.hash:"")||"#/").slice(2).split("/").filter(Boolean);return i[0]==="section"?{view:"section",section:i[1]}:i[0]==="item"?{view:"item",type:i[1],name:decodeURIComponent(i[2]||"")}:i[0]==="docs"?{view:"docs",page:decodeURIComponent(i.slice(1).join("/")||"")}:i[0]==="activity"&&i[1]?{view:"activity-detail",sid:decodeURIComponent(i[1])}:Mt.has(i[0])?{view:St[i[0]]||i[0]}:{view:"dashboard"}},[t,n]=b.useState(e);return b.useEffect(()=>{const a=()=>n(e());return window.addEventListener("hashchange",a),()=>window.removeEventListener("hashchange",a)},[]),t}const L=e=>{window.location.hash=e},Re={red:"#FF5C57",green:"#4ED888",yellow:"#E8B53D",blue:"#5B8CFF",magenta:"#C77DFF",cyan:"#3AD4C4",white:"#E9EFEA"},ue={red:"#C53A36",green:"#2FA864",yellow:"#B8862A",blue:"#3C66D8",magenta:"#9A52D6",cyan:"#2BA89B",white:"#AEB8B0"},ce=e=>Re[e]||Re.cyan,At=e=>e==="yellow"||e==="white"||e==="cyan"||e==="green"?"#06100D":"#FFFFFF";function Ct(e,t,n){if(!e)return;const a=n==="light";let i=a?ue[t]||ue.cyan:ce(t),r=a?"#FFFFFF":At(t);a&&t==="white"&&(i="#566B62",r="#FFFFFF"),e.style.setProperty("--accent",i),e.style.setProperty("--accent-2",ue[t]||ue.cyan),e.style.setProperty("--accent-ink",r)}const $t={cultivar:{dark:"#3AD4C4",light:"#127E73",ink:"#06100D",inkLight:"#FFFFFF"},greenhouse:{dark:"#74CE86",light:"#1C8450",ink:"#06140C",inkLight:"#FFFFFF"},operator:{dark:"#E8A23B",light:"#8F5E10",ink:"#1A1306",inkLight:"#FFFFFF"},heirloom:{dark:"#B9A6C6",light:"#6E5A7C",ink:"#1B1622",inkLight:"#FFFFFF"},matrix:{dark:"#19E37C",light:"#0B7A47",ink:"#04140C",inkLight:"#FFFFFF"},aurora:{dark:"#2DE0B8",light:"#0B7D62",ink:"#04231A",inkLight:"#FFFFFF"},perspective:{dark:"#FF7A59",light:"#C24A2C",ink:"#2A0E04",inkLight:"#FFFFFF"},sequencer:{dark:"#5B57E8",light:"#4F46E5",ink:"#FFFFFF",inkLight:"#FFFFFF"},cobalt:{dark:"#2BA8FF",light:"#1668A8",ink:"#021018",inkLight:"#FFFFFF"},cosmic:{dark:"#C081FF",light:"#7A33CC",ink:"#1A0833",inkLight:"#FFFFFF"},neon:{dark:"#DB245C",light:"#D81E5B",ink:"#FFFFFF",inkLight:"#FFFFFF"},atlas:{dark:"#8FD694",light:"#1C8450",ink:"#14200F",inkLight:"#FFFFFF"}};function Tt(e,t,n){const a=$t[t];if(!e||!a)return!1;const i=n==="light";return e.style.setProperty("--accent",i?a.light:a.dark),e.style.setProperty("--accent-2",a.light),e.style.setProperty("--accent-ink",i?a.inkLight:a.ink),!0}const I={agents:{label:"Agents",type:"agent",desc:"capability specialists",icon:"agent"},skills:{label:"Skills",type:"skill",desc:"repeatable workflows",icon:"skill"},laws:{label:"Constitution",type:"law",desc:"ontology, invariants, doctrines",icon:"law"},memory:{label:"Memory",type:"memory",desc:"durable facts",icon:"library"},notebook:{label:"Notebook",type:"notebook",desc:"sovereign space",icon:"notebook"},wiki:{label:"Knowledge",type:"wiki",desc:"knowledge base + setup",icon:"graph"},config:{label:"Config",type:"config",desc:"install metadata",icon:"settings"}},z=["agents","memory","notebook","wiki","config"],si=z.filter(e=>e!=="agents"&&e!=="config"),ti={config:"wiki"},Ft=Object.fromEntries(Object.entries(I).map(([e,t])=>[t.type,e]));function ve(e,t){const[n,a]=b.useState(()=>{try{return t(localStorage.getItem(e))}catch{return t(null)}});return b.useEffect(()=>{try{localStorage.setItem(e,n)}catch{}},[e,n]),[n,a]}const Ot="geneseed-mode";function Lt(){const[e,t]=ve(Ot,a=>a==="light"?"light":"dark");return[e,()=>t(a=>a==="light"?"dark":"light")]}const Rt="geneseed-flavour",It=[{id:"cultivar",short:"Cultivar",name:"Cultivar Evolved",tagline:"The calm default — cool teal ink, geometric sans, soft flat cards lit by one quiet shadow."},{id:"greenhouse",short:"Greenhouse",name:"Greenhouse",tagline:"Warm loam dark, fresh sage green, rounded humanist type — the softest, friendliest skin."},{id:"operator",short:"Operator",name:"Operator HUD",tagline:"Amber phosphor on cool charcoal — all-mono, zero-radius instrument readout."},{id:"heirloom",short:"Heirloom",name:"Heirloom",tagline:"Aubergine plum and serif display — the one luxe, calm, editorial skin."},{id:"matrix",short:"Matrix",name:"Matrix",tagline:"Acid-green order-book terminal on pure black — all Space Mono, square 2px, a faint code-grid."},{id:"aurora",short:"Aurora",name:"Aurora Glass",tagline:"The glass skin — frosted navy panels lit by a cyan-to-violet aurora, airy and weightless."},{id:"perspective",short:"Perspective",name:"Perspective",tagline:"Coral on cool slate, condensed-architectural headings, cards that physically lift off the page."},{id:"sequencer",short:"Sequencer",name:"Sequencer",tagline:"A quant terminal in daylight — indigo on white, Inter, lining numerals on a fine ruled grid."},{id:"cobalt",short:"Cobalt",name:"Cobalt Terminal",tagline:"Electric-blue hacker terminal — all-mono, 2px corners, CRT scanlines on near-black."},{id:"cosmic",short:"Cosmic",name:"Cosmic",tagline:"Violet-magenta nebula on near-black — wide Audiowide wordmark, chamfered sci-fi instrumentation."},{id:"neon",short:"Neon",name:"Neon",tagline:"Neon-noir: hot-pink edge-glow on near-black, all-mono Geist, frosted glass."},{id:"atlas",short:"Atlas",name:"Atlas",tagline:"The field journal — loam dark, sage ink, the codex as a living map."}],Dt=new Set(It.map(e=>e.id)),Pt={a:"cultivar",b:"greenhouse",c:"operator",d:"heirloom",e:"matrix",f:"aurora",g:"perspective",z:"sequencer",cb:"cobalt",cm:"cosmic"};function zt(){return ve(Rt,e=>Dt.has(e)?e:Pt[e]||"cultivar")}const Bt="geneseed-accent",Vt=[{id:"auto",short:"Auto",tagline:"Follows the deployed voice's accent."},{id:"curated",short:"Curated",tagline:"Each theme's own signature colour."}],Ht=new Set(Vt.map(e=>e.id));function Ut(){return ve(Bt,e=>e&&Ht.has(e)?e:"auto")}const Wt="geneseed-layout",Gt=[{id:"auto",short:"Auto",tagline:"Follows the theme."},{id:"cultivar",short:"Cultivar",tagline:"Hero, KPIs & genome grid."},{id:"greenhouse",short:"Greenhouse",tagline:"Ring, tiles & mix donut."},{id:"operator",short:"Operator",tagline:"Dense terminal readout."},{id:"journal",short:"Journal",tagline:"Growth rings & the constitution map."}],qe=new Set(Gt.map(e=>e.id));function Kt(e){return e==="atlas"||e==="greenhouse"?"journal":e==="cobalt"?"greenhouse":e==="operator"?"operator":"cultivar"}function Zt(e,t){return t&&t!=="auto"&&qe.has(t)?t:Kt(e)}function Yt(){return ve(Wt,e=>e&&qe.has(e)?e:"auto")}function qt(e){const[t,n]=b.useState(null),[a,i]=b.useState([]),r=()=>C.overview().then(n).catch(l=>e==null?void 0:e(l));return b.useEffect(()=>{r()},[]),b.useEffect(()=>{C.themes().then(l=>i(l.themes)).catch(()=>{})},[]),{overview:t,themes:a,reload:r}}const Jt=1e3,Xt=30;async function Ie(e=0){await new Promise(t=>setTimeout(t,e));for(let t=0;t<Xt;t++)try{await C.ping();break}catch{await new Promise(n=>setTimeout(n,Jt))}window.location.reload()}const Qt=600;function en({onFinish:e,onError:t}={}){const[n,a]=b.useState([]),[i,r]=b.useState(null),[l,c]=b.useState(!1);return b.useEffect(()=>{C.jobs().then(({jobs:g})=>{if(!g.length)return;a(g.map(f=>({id:f.id,action:f.action,status:f.status,output:f.output||"",duration:f.duration,started:f.started})));const j=g.find(f=>f.status==="running");j&&(r(j.id),c(!0))}).catch(()=>{})},[]),b.useEffect(()=>{var f;if(!i)return;const g=((f=n.find(h=>h.id===i))==null?void 0:f.action)==="update",j=setInterval(async()=>{try{const h=await C.job(i);if(a(y=>{const d=y.findIndex(N=>N.id===i);if(d===-1)return y;const o=y[d],x=h.output||"";if(o.output===x&&o.status===h.status&&o.duration===h.duration)return y;const p=y.slice();return p[d]={...o,output:x,status:h.status,duration:h.duration},p}),h.status!=="running"){if(clearInterval(j),r(null),g){Ie(2e3);return}e==null||e()}}catch{clearInterval(j),g&&Ie(0)}},Qt);return()=>clearInterval(j)},[i]),{runs:n,activeId:i,consoleOpen:l,setConsoleOpen:c,runAction:async(g,j)=>{try{const{job_id:f}=await C.action(g,j),h=g==="build"&&(j!=null&&j.theme)?`build (${j.theme} · ${j.emit})`:g;return a(y=>[...y,{id:f,action:h,status:"running",output:"",started:Date.now()/1e3}]),r(f),c(!0),f}catch(f){t==null||t(f)}},cancelJob:g=>C.cancelJob(g).catch(j=>t==null?void 0:t(j)),clearRuns:()=>a([])}}function Ee(e,t=[]){const[n,a]=b.useState(null),[i,r]=b.useState(""),[l,c]=b.useState(!0),u=b.useRef(e);u.current=e;const m=b.useCallback(()=>(c(!0),r(""),Promise.resolve(u.current()).then(g=>a(g)).catch(g=>r(g.message)).finally(()=>c(!1))),t);return b.useEffect(()=>{m()},[m]),{data:n,error:i,loading:l,reload:m,setData:a}}const Je=60,Xe=3600,sn=86400,_e={seconds:90,minutes:90*Je,hours:36*Xe};function fe(e){const t=Math.max(0,Date.now()/1e3-e);return t<_e.seconds?`${Math.round(t)}s`:t<_e.minutes?`${Math.round(t/Je)}m`:t<_e.hours?`${Math.round(t/Xe)}h`:`${Math.round(t/sn)}d`}function tn(e){return e?e.replace(/\\/g,"/").replace(/^\/?(home|Users)\/[^/]+/i,"~").replace(/^[A-Z]:\/Users\/[^/]+/i,"~"):"~"}const W={deployed:.4,doctorClean:.25,doctorMinor:.15,doctorMinorMax:2,doctorFail:.05,versionSynced:.2,diskClean:.15};function Qe(e,t){var r,l,c;if(!e)return 0;const n=((l=(r=e.doctor)==null?void 0:r.problems)==null?void 0:l.length)??99,a=(c=e.doctor)!=null&&c.ok?W.doctorClean:n<=W.doctorMinorMax?W.doctorMinor:W.doctorFail,i=t&&t.installed_fp&&t.installed_fp===t.source_fp;return(e.deployed?W.deployed:0)+a+(i?W.versionSynced:0)+(e.diff&&e.diff.missing===0?W.diskClean:0)}const es=e=>Math.max(...z.map(t=>(e==null?void 0:e[t])??0),1),Y=e=>((e==null?void 0:e.edited)??0)+((e==null?void 0:e.added)??0),ss=e=>{var t;return((e==null?void 0:e.laws)??0)+(((t=e==null?void 0:e.doctrines)==null?void 0:t.rules)??0)},nn={dashboard:"M3 13h7V3H3v10Zm0 8h7v-6H3v6Zm11 0h7V11h-7v10Zm0-18v6h7V3h-7Z",library:"M4 5h10v14H4zM16 7h4v12h-4M7 9h4M7 12h4",graph:"M6 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM18 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM18 20a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM7.5 14.5l8-8M16.7 15.2L8.8 16.6",changes:"M4 6h10M4 12h7M4 18h12M17 4l3 3-3 3M20 7h-6",doctor:"M12 3v6m0 0a4 4 0 0 1-4 4H7a3 3 0 0 0-3 3v2m8-9a4 4 0 0 0 4 4h1a3 3 0 0 1 3 3v2M12 3a1.5 1.5 0 1 0 0-.01",themes:"M12 3a9 9 0 1 0 0 18c1.1 0 2-.9 2-2 0-.5-.2-1-.5-1.3-.3-.4-.5-.8-.5-1.2 0-1 .8-1.5 1.7-1.5H17a4 4 0 0 0 4-4c0-4.4-4-8-9-8Z",settings:"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm8-3a8 8 0 0 0-.1-1.3l2-1.6-2-3.4-2.4 1a8 8 0 0 0-2.2-1.3L15 2H9l-.3 2.6a8 8 0 0 0-2.2 1.3l-2.4-1-2 3.4 2 1.6A8 8 0 0 0 4 12c0 .4 0 .9.1 1.3l-2 1.6 2 3.4 2.4-1a8 8 0 0 0 2.2 1.3L9 22h6l.3-2.6a8 8 0 0 0 2.2-1.3l2.4 1 2-3.4-2-1.6c.1-.4.1-.9.1-1.3Z",search:"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM21 21l-4.3-4.3",chevron:"M9 6l6 6-6 6",x:"M6 6l12 12M18 6L6 18",menu:"M4 7h16M4 12h16M4 17h16",play:"M7 5v14l11-7L7 5Z",clear:"M3 6h18M8 6V4h8v2M6 6l1 14h10l1-14",download:"M12 3v12m0 0l-4-4m4 4l4-4M4 19h16",refresh:"M21 12a9 9 0 1 1-3-6.7M21 4v5h-5",folder:"M3 7a2 2 0 0 1 2-2h3.5l2 2H19a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z",build:"M14 3l-1 4 4-1 3 3-4 1 1 4-3 3-1-4-4 1-3-3 4-1-1-4 3-3 5 0Z",arrow:"M5 12h14M13 6l6 6-6 6",external:"M14 5h5v5M19 5l-8 8M12 5H6a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2v-6",copy:"M9 9h11v11H9zM5 15H4V4h11v1",spark:"M12 3v3m0 12v3m9-9h-3M6 12H3m13.5-6.5-2 2m-7 7-2 2m11 0-2-2m-7-7-2-2",activity:"M3 12h4l2.5-7 5 14 2.5-7H21",agent:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM22 21v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8",layers:"M12 3l9 5-9 5-9-5 9-5ZM3 13l9 5 9-5M3 17l9 5 9-5",sun:"M12 4V2M12 22v-2M4 12H2M22 12h-2M5.6 5.6 4.2 4.2M19.8 19.8l-1.4-1.4M18.4 5.6l1.4-1.4M4.2 19.8l1.4-1.4M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Z",moon:"M21 12.8A8.5 8.5 0 1 1 11.2 3a6.5 6.5 0 0 0 9.8 9.8Z",power:"M12 3v9M7.5 6.5a7 7 0 1 0 9 0",docs:"M5 4h9l5 5v11a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1ZM14 4v5h5M8 12h7M8 16h7",skill:"M21.7 6.6a5 5 0 0 1-6.6 6.6l-7.4 7.4a2 2 0 1 1-2.8-2.8l7.4-7.4a5 5 0 0 1 6.6-6.6l-2.6 2.6a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0Z",law:"M12 3v18M5 6h14M8 21h8M6 6l-3 6h6zM3 12a3 3 0 0 1 6 0M18 6l-3 6h6zM15 12a3 3 0 0 1 6 0",rule:"M7 3h10a1 1 0 0 1 1 1v17l-6-3.5L6 21V4a1 1 0 0 1 1-1ZM9.5 9.5l1.8 1.8 3.4-3.6",profile:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM5 20a7 7 0 0 1 14 0",notebook:"M7 4h11v16H7zM4 8h3M4 12h3M4 16h3M11 9h5M11 13h5M11 17h3",about:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM12 11v6M12 7.6h.01",github:"M12 2a10 10 0 0 0-3.2 19.5c.5.1.7-.2.7-.5v-1.8c-2.8.6-3.4-1.2-3.4-1.2-.5-1.2-1.1-1.5-1.1-1.5-.9-.6.1-.6.1-.6 1 .1 1.5 1 1.5 1 .9 1.5 2.3 1.1 2.9.8.1-.6.3-1.1.6-1.3-2.2-.3-4.6-1.1-4.6-5 0-1.1.4-2 1-2.7-.1-.3-.4-1.3.1-2.7 0 0 .8-.3 2.7 1a9.4 9.4 0 0 1 5 0c1.9-1.3 2.7-1 2.7-1 .5 1.4.2 2.4.1 2.7.6.7 1 1.6 1 2.7 0 3.9-2.4 4.7-4.6 5 .4.3.7.9.7 1.8v2.6c0 .3.2.6.7.5A10 10 0 0 0 12 2Z"};function $({name:e,className:t="glyph",style:n}){return s.jsx("svg",{className:t,style:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:s.jsx("path",{d:nn[e]||""})})}function an({className:e="sprout"}){return s.jsxs("svg",{className:e,viewBox:"0 0 24 24","aria-hidden":"true",children:[s.jsx("path",{d:"M12 21.5v-9",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",fill:"none"}),s.jsx("path",{d:"M12 13c0-4.5 3.2-7.5 7.5-7.5 0 4.5-3.2 7.5-7.5 7.5z",fill:"var(--accent)"}),s.jsx("path",{d:"M12 14.5c0-3.6-2.6-6-6-6 0 3.6 2.6 6 6 6z",fill:"var(--accent)",opacity:".42"}),s.jsx("circle",{cx:"12",cy:"12.4",r:"1.1",fill:"var(--bg)"})]})}const rn=[{hash:"#/",id:"dashboard",label:"Dashboard",icon:"dashboard",match:e=>e.view==="dashboard",tag:()=>"today"},{group:"Codex"},{hash:"#/laws",id:"laws",label:"Constitution",icon:"law",match:e=>e.view==="laws"||e.view==="section"&&e.section==="laws"||e.view==="item"&&e.type==="law",tag:e=>{var t;return((t=e==null?void 0:e.counts)==null?void 0:t.laws)??null}},{hash:"#/rules",id:"rules",label:"Rules",icon:"rule",match:e=>e.view==="rules"},{hash:"#/profile",id:"profile",label:"Profile",icon:"profile",match:e=>e.view==="profile"},{hash:"#/skills",id:"skills",label:"Skills",icon:"skill",match:e=>e.view==="skills"||e.view==="section"&&e.section==="skills"||e.view==="item"&&e.type==="skill",tag:e=>{var t;return((t=e==null?void 0:e.counts)==null?void 0:t.skills)??null}},{hash:"#/agents",id:"agents",label:"Agents",icon:"agent",match:e=>e.view==="agents"||e.view==="section"&&e.section==="agents"||e.view==="item"&&e.type==="agent",tag:e=>{var t;return((t=e==null?void 0:e.counts)==null?void 0:t.agents)??null}},{hash:"#/library",id:"library",label:"Library",icon:"library",match:e=>e.view==="library"||e.view==="section"&&!["laws","skills","agents"].includes(e.section)||e.view==="item"&&!["law","skill","agent"].includes(e.type),tag:e=>e!=null&&e.counts?(e.counts.memory??0)+(e.counts.notebook??0)+(e.counts.wiki??0)+(e.counts.config??0):null},{hash:"#/docs",id:"docs",label:"Docs",icon:"docs",match:e=>e.view==="docs"},{hash:"#/graph",id:"graph",label:"Graph",icon:"graph",match:e=>e.view==="graph"},{group:"Care"},{hash:"#/activity",id:"activity",label:"Activity",icon:"activity",match:e=>e.view==="activity"||e.view==="activity-detail"},{hash:"#/diff",id:"changes",label:"Changes",icon:"changes",match:e=>e.view==="diff",tag:e=>(e!=null&&e.diff?Y(e.diff):null)||null},{hash:"#/doctor",id:"doctor",label:"Doctor",icon:"doctor",match:e=>e.view==="doctor",tag:e=>e!=null&&e.doctor?e.doctor.ok?"clean":e.doctor.problems.length:null,warn:e=>!!(e!=null&&e.doctor)&&!e.doctor.ok},{group:"Setup"},{hash:"#/harness",id:"harness",label:"Harness",icon:"layers",match:e=>e.view==="harness",tag:e=>(e==null?void 0:e.theme)??null},{hash:"#/settings",id:"settings",label:"Settings",icon:"settings",match:e=>e.view==="settings"}];function cn({value:e}){const n=2*Math.PI*30;return s.jsxs("svg",{className:"rv-ring",width:"66",height:"66",viewBox:"0 0 72 72",role:"img","aria-label":`Growth ${Math.round(e*100)} of 100`,children:[s.jsx("circle",{cx:"36",cy:"36",r:30,fill:"none",stroke:"var(--line-2)",strokeWidth:"6"}),s.jsx("circle",{cx:"36",cy:"36",r:30,fill:"none",stroke:"var(--accent)",strokeWidth:"6",strokeLinecap:"round",strokeDasharray:`${n*e} ${n}`,transform:"rotate(-90 36 36)",style:{transition:"stroke-dasharray 1.1s cubic-bezier(.2,.7,.2,1)"}}),s.jsx("text",{className:"rv-ring-num",x:"36",y:"34",textAnchor:"middle",children:Math.round(e*100)}),s.jsx("text",{className:"rv-ring-lbl",x:"36",y:"47",textAnchor:"middle",children:"GROWTH"})]})}function ln({overview:e,setup:t}){if(!e)return null;const n=e.doctor?e.doctor.ok?"clean":`${e.doctor.problems.length} to fix`:"—";return s.jsxs("div",{className:"rail-vitals",children:[s.jsx(cn,{value:Qe(e,t)}),s.jsxs("div",{className:"rv-rows",children:[s.jsxs("div",{children:[s.jsx("span",{children:"Drift"}),s.jsx("b",{children:Y(e.diff)})]}),s.jsxs("div",{children:[s.jsx("span",{children:"Doctor"}),s.jsx("b",{children:n})]}),s.jsxs("div",{children:[s.jsx("span",{children:"Built"}),s.jsx("b",{className:"plain",title:e.build_time||void 0,children:e.build_epoch?fe(e.build_epoch):"never"})]})]})]})}function on({route:e,overview:t,setup:n,onOpenVoice:a,onNavigate:i}){return s.jsxs("aside",{className:"rail",id:"rail-nav","aria-label":"Harness navigation",children:[s.jsxs("button",{className:"rail-brand",onClick:()=>{L("#/"),i==null||i()},title:"Dashboard",children:[s.jsx(an,{}),s.jsxs("div",{className:"brand-text",children:[s.jsxs("span",{className:"brand-name",children:["Gene",s.jsx("b",{children:"seed"})]}),s.jsx("span",{className:"brand-sub",children:"harness console"})]})]}),s.jsx(ln,{overview:t,setup:n}),rn.map((r,l)=>{if(r.group)return s.jsx("div",{className:"rail-group",children:r.group},"g"+l);const c=r.tag?r.tag(t):null,u=r.match(e),m=typeof r.warn=="function"?r.warn(t):!!r.warn;return s.jsx("div",{className:"rail-nav",children:s.jsxs("a",{className:`rail-item ${u?"active":""}`,href:r.hash,"aria-current":u?"page":void 0,title:r.label,onClick:()=>i==null?void 0:i(),children:[s.jsx($,{name:r.icon}),s.jsx("span",{children:r.label}),c?s.jsx("span",{className:"tag",style:m?{color:"var(--warn)"}:null,children:c}):null]})},r.id)}),s.jsx("div",{className:"rail-spacer"}),s.jsx("div",{className:"rail-foot",children:s.jsxs("button",{className:"voice",onClick:a,title:"Switch deployed voice",children:[s.jsx("span",{className:"voice-orb"}),s.jsxs("div",{className:"voice-meta",children:[s.jsx("div",{className:"vk",children:"deployed voice"}),s.jsx("div",{className:"vv",children:(t==null?void 0:t.theme)||"—"})]}),s.jsx($,{name:"chevron",className:"chev glyph"})]})})]})}function dn(){const[e,t]=b.useState(null),[n,a]=b.useState(""),i=b.useRef(null),r=b.useCallback(()=>{if(e||i.current)return i.current;const l=(async()=>{const c=[],u=["laws","skills",...z],m=await Promise.all(u.map(async g=>{try{const j=await C.catalog(g);return{sec:g,items:(j==null?void 0:j.items)||[]}}catch{return{sec:g,items:[]}}}));for(const{sec:g,items:j}of m){const f=I[g];for(const h of j){const y=h.title||h.name;c.push({kind:f.label,sortKey:u.indexOf(g),title:y,desc:h.desc||"",hay:`${y} ${h.desc||""} ${h.name||""}`.toLowerCase(),route:`#/item/${f.type}/${encodeURIComponent(h.name)}`})}}try{const g=await C.mcp(),j=new Set;for(const f of(g==null?void 0:g.targets)||[])for(const h of f.servers||[]){if(j.has(h.name))continue;j.add(h.name);const y=h.label||h.name;c.push({kind:"MCP servers",sortKey:100,title:y,desc:h.desc||"",hay:`${y} ${h.desc||""} ${h.name||""} mcp`.toLowerCase(),route:"#/settings"})}}catch{}try{const g=await C.docs();for(const j of(g==null?void 0:g.groups)||[])for(const f of j.pages||[])c.push({kind:"Docs",sortKey:110,title:f.title,desc:j.label,hay:`${f.title||""} ${f.id||""} ${j.label||""}`.toLowerCase(),route:`#/docs/${encodeURIComponent(f.id)}`})}catch{}return t(c),i.current=null,c})().catch(c=>(i.current=null,a(c.message||String(c)),[]));return i.current=l,l},[e]);return{index:e,error:n,prime:r}}const hn=24;function un(e,t){const n=e.title.toLowerCase();return n.startsWith(t)?0:n.includes(t)?1:e.hay.includes(t)?2:-1}function ts(e,t){const n=t.toLowerCase().trim();if(!n||!e)return[];const a=[];for(const i of e){const r=un(i,n);r>=0&&a.push({e:i,s:r})}return a.sort((i,r)=>i.s-r.s||i.e.sortKey-r.e.sortKey||i.e.title.localeCompare(r.e.title)),a.slice(0,hn).map(i=>i.e)}function mn({query:e,index:t,loading:n,error:a,active:i,onActive:r,onClose:l}){const c=b.useMemo(()=>ts(t,e),[t,e]),u=b.useRef(null);b.useEffect(()=>{i>=c.length&&r(0)},[c,i,r]),b.useEffect(()=>{var h;const f=(h=u.current)==null?void 0:h.querySelector(`[data-spot-row="${i}"]`);f==null||f.scrollIntoView({block:"nearest"})},[i]);const m=f=>{f&&(L(f.route),l())},g=[];let j=null;return c.forEach((f,h)=>{(!j||j.kind!==f.kind)&&(j={kind:f.kind,rows:[]},g.push(j)),j.rows.push({entry:f,index:h})}),e.trim()?s.jsxs("div",{className:"spotlight",ref:u,id:"spotlight-list",role:"listbox","aria-label":"Search results",children:[a&&!t&&s.jsxs("div",{className:"spot-empty",role:"presentation",children:["Could not load the search index — ",a]}),n&&!t&&!a&&s.jsx("div",{className:"spot-empty",role:"presentation",children:"Loading…"}),!n&&c.length===0&&t&&s.jsxs("div",{className:"spot-empty",role:"presentation",children:["No matches for “",e,"”."]}),g.map(f=>s.jsxs("div",{className:"spot-group",role:"group","aria-label":f.kind,children:[s.jsx("div",{className:"spot-group-head","aria-hidden":"true",children:f.kind}),f.rows.map(({entry:h,index:y})=>s.jsxs("div",{id:`spot-opt-${y}`,"data-spot-row":y,role:"option","aria-selected":y===i,className:`spot-row ${y===i?"on":""}`,onMouseDown:d=>{d.preventDefault(),m(h)},onMouseEnter:()=>r(y),children:[s.jsx("div",{className:"spot-title",children:h.title}),h.desc?s.jsx("div",{className:"spot-desc",children:h.desc}):null]},`${h.route}-${y}`))]},f.kind))]}):null}function xn({value:e,onChange:t}){const n=b.useRef(null),a=b.useRef(null),[i,r]=b.useState(!1),[l,c]=b.useState(0),{index:u,error:m,prime:g}=dn();b.useEffect(()=>{const d=o=>{var p;!((o.metaKey||o.ctrlKey)&&!o.altKey&&o.key.toLowerCase()==="k")&&(o.key!=="/"||o.target.closest("input, textarea, select"))||(o.preventDefault(),(p=n.current)==null||p.focus())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[]),b.useEffect(()=>{if(!i)return;const d=o=>{var x;(x=a.current)!=null&&x.contains(o.target)||r(!1)};return window.addEventListener("mousedown",d),()=>window.removeEventListener("mousedown",d)},[i]);const j=i&&!!e.trim(),f=j&&u?ts(u,e):[],h=l<f.length?`spot-opt-${l}`:void 0,y=d=>{var o,x;if(j)if(d.key==="ArrowDown")d.preventDefault(),c(p=>Math.min(p+1,Math.max(f.length-1,0)));else if(d.key==="ArrowUp")d.preventDefault(),c(p=>Math.max(p-1,0));else if(d.key==="Enter"){const p=f[l];p&&(d.preventDefault(),L(p.route),r(!1),(o=n.current)==null||o.blur())}else d.key==="Escape"&&(d.preventDefault(),e?t(""):(r(!1),(x=n.current)==null||x.blur()))};return s.jsxs("div",{className:"tb-search",ref:a,children:[s.jsx($,{name:"search",className:"mag glyph"}),s.jsx("input",{ref:n,role:"combobox","aria-label":"Search the harness","aria-autocomplete":"list","aria-expanded":j,"aria-controls":j?"spotlight-list":void 0,"aria-activedescendant":h,value:e,onChange:d=>{t(d.target.value),c(0)},onFocus:()=>{r(!0),g()},onKeyDown:y,placeholder:"Search the harness…",title:"Press / to jump here, or Ctrl-K / ⌘K from inside any field"}),s.jsx("span",{className:"kbd",children:"/"}),s.jsx("span",{className:"sr-only",role:"status","aria-live":"polite",children:j?f.length?`${f.length} results`:"no matches":""}),j&&s.jsx(mn,{query:e,index:u,loading:!u,error:m,active:l,onActive:c,onClose:()=>{var d;r(!1),(d=n.current)==null||d.blur()}})]})}function pn({dataRev:e,onSwitch:t}){const{data:n}=Ee(()=>C.installs(),[e]),a=((n==null?void 0:n.installs)||[]).filter(l=>l.state==="active");if(a.length<2)return null;const i=a.find(l=>l.selected)||a[0],r=async l=>{const c=a.find(u=>u.id===l.target.value);if(c)try{await C.selectView(c.host,c.path),t==null||t()}catch{}};return s.jsxs("div",{className:"row gap-8",style:{alignItems:"center"},title:"Harness the console is viewing",children:[s.jsx("span",{style:{fontSize:12,color:"var(--text-3)"},children:"harness"}),s.jsx("select",{className:"sel","aria-label":"harness to view",value:i.id,onChange:r,children:a.map(l=>s.jsxs("option",{value:l.id,children:[l.host," · ",l.scope]},l.id))})]})}const fn={dashboard:"overview",diff:"diff",doctor:"doctor",harness:"harness",graph:"graph",settings:"settings"};function gn(e){return e.view==="section"?["laws","skills"].includes(e.section)?e.section:"library":e.view==="item"?e.type==="law"?"laws":e.type==="skill"?"skills":"library":fn[e.view]||e.view}function jn({route:e,navOpen:t,onToggleNav:n,target:a,version:i,query:r,onQuery:l,mode:c,onToggleMode:u,onShutdown:m,dataRev:g,onSwitch:j}){return s.jsxs("header",{className:"topbar",children:[s.jsx("button",{className:"tb-menu",onClick:n,"aria-label":t?"Close navigation":"Open navigation","aria-expanded":!!t,"aria-controls":"rail-nav",children:s.jsx($,{name:t?"x":"menu"})}),s.jsxs("div",{className:"prompt",children:[s.jsx("span",{className:"path",children:tn(a)}),s.jsx("span",{className:"sep",children:"$"}),s.jsx("span",{className:"cmd",children:"geneseed"})," ",s.jsxs("span",{className:"flag",children:["--tab=",gn(e)]}),i&&s.jsxs("span",{className:"flag ver",children:[" --version=",i]}),s.jsx("span",{className:"cur"})]}),s.jsx("div",{className:"topbar-spacer"}),s.jsx(pn,{dataRev:g,onSwitch:j}),s.jsx(xn,{value:r,onChange:l}),s.jsx("button",{className:"iconbtn",title:c==="light"?"Switch to dark":"Switch to light",onClick:u,children:s.jsx($,{name:c==="light"?"moon":"sun"})}),s.jsx("button",{className:"iconbtn",title:"Stop server",onClick:m,children:s.jsx($,{name:"power"})})]})}function yn({themes:e,current:t,onPick:n,onClose:a}){const i=b.useRef(null);return b.useEffect(()=>{const r=l=>{i.current&&!i.current.contains(l.target)&&a()};return document.addEventListener("mousedown",r),()=>document.removeEventListener("mousedown",r)},[a]),s.jsxs("div",{className:"pop",ref:i,children:[s.jsx("div",{className:"tick",style:{padding:"4px 10px 8px"},children:"Switch voice"}),e.map(r=>s.jsxs("div",{className:`pop-item ${r.name===t?"on":""}`,onClick:()=>n(r.name),children:[s.jsx("span",{className:"po",style:{background:ce(r.accent),boxShadow:`0 0 8px ${ce(r.accent)}`}}),s.jsx("span",{className:"pn",children:r.name})]},r.name))]})}const vn=3500;function bn({toast:e,onClose:t}){return b.useEffect(()=>{const n=setTimeout(t,vn);return()=>clearTimeout(n)},[e]),s.jsxs("div",{className:`toast ${e.kind}`,role:e.kind==="err"?"alert":"status","aria-live":e.kind==="err"?void 0:"polite",children:[s.jsx("div",{children:e.msg}),s.jsx("div",{style:{marginTop:8},children:s.jsx("button",{className:"btn ghost",onClick:t,children:"Dismiss"})})]})}function Nn({runs:e,open:t,onToggle:n,onClear:a,onCancel:i,busy:r}){const l=b.useRef(null),c=e.length?e[e.length-1].output.length:0;return b.useEffect(()=>{const u=l.current;u&&t&&(u.scrollTop=u.scrollHeight)},[e.length,c,t]),s.jsxs("div",{className:"console",style:{height:"42vh",transform:t?"none":"translateY(calc(42vh - 42px))"},children:[s.jsxs("div",{className:"console-head",onClick:n,children:[s.jsxs("span",{className:"ttl",children:[s.jsx("span",{className:`live ${r?"on":""}`}),"terminal"]}),s.jsx("span",{className:"count",children:e.length}),s.jsxs("div",{className:"right",onClick:u=>u.stopPropagation(),children:[s.jsx("button",{className:"iconbtn",title:"Clear",onClick:a,disabled:!e.length,children:s.jsx($,{name:"clear"})}),s.jsx("button",{className:"iconbtn",title:t?"Collapse":"Expand","aria-expanded":t,onClick:n,children:s.jsx($,{name:"chevron",className:"glyph",style:{transform:t?"rotate(90deg)":"rotate(-90deg)"}})})]})]}),t&&s.jsxs("div",{className:"console-body",ref:l,children:[e.length===0&&s.jsx("div",{className:"console-empty",children:"No commands run yet. Actions you trigger stream here."}),e.map(u=>s.jsxs("div",{className:"run",children:[s.jsxs("div",{className:"run-head",children:[s.jsx("span",{className:"pr",children:"$"}),s.jsx("span",{className:"act",children:u.action}),s.jsx("span",{className:`st ${u.status}`,children:u.status==="running"?"…running":`${u.status==="done"?"✓ done":"✗ failed"}${u.duration?` · ${u.duration}s`:""}`}),u.status==="running"&&i&&s.jsx("button",{className:"iconbtn run-cancel",title:"Cancel this run",onClick:()=>i(u.id),children:s.jsx($,{name:"x"})})]}),u.output&&s.jsx("pre",{className:"run-out",children:u.output})]},u.id))]})]})}const wn=550,De="gs-splash-seen";function kn(){try{if(window.localStorage.getItem(De))return 0;window.localStorage.setItem(De,"1")}catch{}return wn}function _n({ready:e,onDone:t}){const[n,a]=b.useState(!1),[i,r]=b.useState(!1);b.useEffect(()=>{const c=kn();if(!c){a(!0);return}const u=setTimeout(()=>a(!0),c);return()=>clearTimeout(u)},[]),b.useEffect(()=>{e&&n&&r(!0)},[e,n]),b.useEffect(()=>{if(!i)return;const c=setTimeout(()=>t==null?void 0:t(),700);return()=>clearTimeout(c)},[i]);const l=c=>{c.animationName==="splashOut"&&(t==null||t())};return s.jsxs("div",{className:`boot-splash${i?" fading":""}`,"aria-hidden":"true",onAnimationEnd:l,children:[s.jsxs("div",{className:"boot-dial",children:[s.jsxs("svg",{className:"boot-ring",viewBox:"0 0 172 172",children:[s.jsx("circle",{cx:"86",cy:"86",r:"72",fill:"none",stroke:"var(--surface-3)",strokeWidth:"9"}),s.jsx("circle",{cx:"86",cy:"86",r:"50",fill:"none",stroke:"var(--line-2)",strokeWidth:"8",strokeDasharray:"1.2 5.3",opacity:".7"}),s.jsx("circle",{className:"boot-progress",cx:"86",cy:"86",r:"72",fill:"none",stroke:"var(--accent)",strokeWidth:"9",strokeLinecap:"round"})]}),s.jsxs("svg",{className:"boot-sprout",viewBox:"0 0 24 24",children:[s.jsx("path",{className:"bs-stem",d:"M12 21.5v-9",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",fill:"none"}),s.jsx("path",{className:"bs-leaf bs-leaf-main",d:"M12 13c0-4.5 3.2-7.5 7.5-7.5 0 4.5-3.2 7.5-7.5 7.5z",fill:"var(--accent)"}),s.jsx("path",{className:"bs-leaf bs-leaf-back",d:"M12 14.5c0-3.6-2.6-6-6-6 0 3.6 2.6 6 6 6z",fill:"var(--accent)",opacity:".42"}),s.jsx("circle",{cx:"12",cy:"12.4",r:"1.1",fill:"var(--bg)"})]})]}),s.jsxs("div",{className:"boot-status",children:[s.jsx("span",{children:"germinating harness"}),s.jsx("span",{className:"boot-caret"})]})]})}function ns({label:e="Loading…"}){return s.jsx("div",{className:"loading",children:e})}function Mn({value:e,size:t=232}){const n=t/2-14,a=2*Math.PI*n,i=a*(1-e);return s.jsxs("div",{className:"ring-wrap",style:{width:t,height:t},children:[s.jsxs("svg",{viewBox:`0 0 ${t} ${t}`,children:[s.jsx("circle",{cx:t/2,cy:t/2,r:n,fill:"none",stroke:"var(--surface-3)",strokeWidth:"10"}),s.jsx("circle",{cx:t/2,cy:t/2,r:n,fill:"none",stroke:"var(--accent)",strokeWidth:"10",strokeLinecap:"round",strokeDasharray:a,strokeDashoffset:i,style:{transition:"stroke-dashoffset 1.1s cubic-bezier(.2,.7,.2,1)"}}),Array.from({length:48}).map((r,l)=>{const c=l/48*2*Math.PI,u=n-18,m=n-24,g=t/2+Math.cos(c)*u,j=t/2+Math.sin(c)*u,f=t/2+Math.cos(c)*m,h=t/2+Math.sin(c)*m;return s.jsx("line",{x1:g,y1:j,x2:f,y2:h,stroke:"var(--line-2)",strokeWidth:"1",opacity:l/48<e?.9:.25},l)})]}),s.jsxs("div",{className:"ring-center",children:[s.jsxs("div",{className:"pct",children:[Math.round(e*100),s.jsx("span",{style:{fontSize:20,color:"var(--text-3)"},children:"%"})]}),s.jsx("div",{className:"lbl",children:"germination"})]})]})}function Sn({overview:e}){const t=Y(e.diff),n=e.counts||{},a=[{key:"agents",label:"Agents",hash:"#/agents"},{key:"skills",label:"Skills",hash:"#/skills"},{key:"laws",label:"Invariants",hash:"#/laws"}];return s.jsxs("div",{className:"card kpiband rise mb-16",children:[a.map(i=>{const r=n[i.key];return s.jsxs("a",{className:"kseg",href:i.hash,title:`Open ${i.label}`,children:[s.jsx("span",{className:"kseg-n"+(r===0?" zero":""),children:r??"—"}),s.jsx("span",{className:"kseg-l",children:i.label})]},i.key)}),s.jsx("div",{className:"kseg-spacer"}),s.jsxs("button",{className:"kseg"+(t>0?" hot":""),onClick:()=>L("#/diff"),title:"Open changes",children:[s.jsx("span",{className:"kseg-n"+(t===0?" zero":""),children:t}),s.jsx("span",{className:"kseg-l",children:"Local edits"}),t>0&&s.jsx("span",{className:"delta up",children:"▲"})]})]})}function En({overview:e}){return s.jsx("div",{className:"genome",children:z.map((t,n)=>{var r;const a=I[t],i=(r=e.counts)==null?void 0:r[t];return s.jsxs("div",{className:"card gcell rise",style:{animationDelay:`${n*50}ms`},onClick:()=>L("#/section/"+t),children:[s.jsxs("div",{className:"gtop",children:[s.jsx("span",{className:"gname",children:a.label}),s.jsx($,{name:a.icon,className:"gicon"})]}),s.jsx("div",{className:"gcount"+(i===0?" zero":""),children:i??"—"}),s.jsx("div",{className:"gdesc",children:a.desc})]},t)})})}function Ae({jobs:e}){if(!e||e.length===0)return s.jsx("div",{className:"feed",children:s.jsxs("div",{className:"empty",children:[s.jsx("div",{className:"big",children:"No activity yet"}),"Actions you run appear here."]})});const t={done:"ok",running:"acc",failed:"bad"},n=[...e].sort((a,i)=>i.started-a.started).slice(0,8);return s.jsx("div",{className:"feed",children:n.map(a=>s.jsxs("div",{className:"feed-row",children:[s.jsx("span",{className:`feed-dot ${t[a.status]||"ok"}`}),s.jsx("span",{className:"feed-txt",children:s.jsx("b",{children:a.action})}),s.jsxs("span",{className:"feed-when",children:[fe(a.started)," ago"]})]},a.id))})}const An={neutral:"Loaded & ready",imperial:"The Codex in force",military:"The unit stands ready",cyberpunk:"Jacked in",wizard:"Wards in place",pirate:"The crew stands ready",gamer:"Game loaded",sports:"The squad takes the field",biker:"The crew rolls out",commentator:"Lights out, away we go",verstappen:"Setup's in",joker:"Mic check",mean:"Rules are up",marvin:"Online. Reluctantly."};function Cn({overview:e,sigil:t,setup:n,jobs:a,onAction:i}){const r=e.deployed?An[e.theme]||"Loaded & ready":"Not deployed",l=Qe(e,n);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"card pad-lg rise mb-16",children:s.jsxs("div",{className:"hero",children:[s.jsx(Mn,{value:l}),s.jsxs("div",{className:"hero-facts",children:[s.jsx("div",{className:"ttl",children:r}),t&&s.jsxs("div",{className:"voice-readout",children:[s.jsx("span",{className:"vr-cur",children:"▕"}),s.jsx("span",{className:"vr-txt",children:t})]},e.theme),s.jsxs("p",{className:"sub",children:["One source rendered into ",s.jsx("code",{children:e.target}),". Every repo on this machine inherits it."]}),s.jsxs("div",{className:"hero-chips",children:[s.jsxs("span",{className:"chip",children:[s.jsx("span",{className:"ck",children:"voice"}),s.jsx("span",{className:"cv",style:{textTransform:"capitalize"},children:e.theme})]}),s.jsxs("span",{className:"chip",children:[s.jsx("span",{className:"ck",children:"mode"}),s.jsx("span",{className:"cv",children:e.emit})]}),s.jsxs("span",{className:"chip",children:[s.jsx("span",{className:"ck",children:"footprint"}),s.jsx("span",{className:"cv",children:e.footprint})]}),s.jsxs("span",{className:"chip",children:[s.jsx("span",{className:"ck",children:"built"}),s.jsx("span",{className:"cv",children:e.build_time||"unknown"})]}),s.jsxs("span",{className:"chip",children:[s.jsx("span",{className:"ck",children:"fp"}),s.jsx("span",{className:"cv",children:(n==null?void 0:n.installed_fp)||"—"})]})]}),s.jsxs("div",{className:"row wrap gap-10",children:[s.jsxs("button",{className:"btn",onClick:()=>i("update"),children:[s.jsx($,{name:"refresh"}),"Update"]}),s.jsxs("button",{className:"btn ghost",onClick:()=>i("build-all"),children:[s.jsx($,{name:"build"}),"Rebuild"]}),s.jsxs("button",{className:"btn ghost",onClick:()=>i("doctor"),children:[s.jsx($,{name:"doctor"}),"Run doctor"]})]})]})]})}),s.jsx(Sn,{overview:e}),s.jsxs("div",{className:"grid split-status",children:[s.jsxs("div",{className:"card pad-lg",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Capability genome"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"tick",children:[z.length," sections"]})})]}),s.jsx(En,{overview:e})]}),s.jsxs("div",{className:"card pad-lg",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Recent activity"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"badge acc",children:[s.jsx("span",{className:"dot"}),"live"]})})]}),s.jsx(Ae,{jobs:a})]})]})]})}function $n({k:e,overview:t,max:n}){var r;const a=I[e],i=((r=t.counts)==null?void 0:r[e])??0;return s.jsxs("div",{className:"strand",onClick:()=>L("#/section/"+e),children:[s.jsxs("span",{className:"strand-name",children:[s.jsx("span",{className:"strand-dot"}),s.jsx("span",{children:a.label})]}),s.jsx("div",{className:"hbar",children:s.jsx("i",{style:{width:`${i/n*100}%`}})}),s.jsx("span",{className:"strand-val",children:i})]})}function Tn(e,t){var n,a=1;e==null&&(e=0),t==null&&(t=0);function i(){var r,l=n.length,c,u=0,m=0;for(r=0;r<l;++r)c=n[r],u+=c.x,m+=c.y;for(u=(u/l-e)*a,m=(m/l-t)*a,r=0;r<l;++r)c=n[r],c.x-=u,c.y-=m}return i.initialize=function(r){n=r},i.x=function(r){return arguments.length?(e=+r,i):e},i.y=function(r){return arguments.length?(t=+r,i):t},i.strength=function(r){return arguments.length?(a=+r,i):a},i}function Fn(e){const t=+this._x.call(null,e),n=+this._y.call(null,e);return as(this.cover(t,n),t,n,e)}function as(e,t,n,a){if(isNaN(t)||isNaN(n))return e;var i,r=e._root,l={data:a},c=e._x0,u=e._y0,m=e._x1,g=e._y1,j,f,h,y,d,o,x,p;if(!r)return e._root=l,e;for(;r.length;)if((d=t>=(j=(c+m)/2))?c=j:m=j,(o=n>=(f=(u+g)/2))?u=f:g=f,i=r,!(r=r[x=o<<1|d]))return i[x]=l,e;if(h=+e._x.call(null,r.data),y=+e._y.call(null,r.data),t===h&&n===y)return l.next=r,i?i[x]=l:e._root=l,e;do i=i?i[x]=new Array(4):e._root=new Array(4),(d=t>=(j=(c+m)/2))?c=j:m=j,(o=n>=(f=(u+g)/2))?u=f:g=f;while((x=o<<1|d)===(p=(y>=f)<<1|h>=j));return i[p]=r,i[x]=l,e}function On(e){var t,n,a=e.length,i,r,l=new Array(a),c=new Array(a),u=1/0,m=1/0,g=-1/0,j=-1/0;for(n=0;n<a;++n)isNaN(i=+this._x.call(null,t=e[n]))||isNaN(r=+this._y.call(null,t))||(l[n]=i,c[n]=r,i<u&&(u=i),i>g&&(g=i),r<m&&(m=r),r>j&&(j=r));if(u>g||m>j)return this;for(this.cover(u,m).cover(g,j),n=0;n<a;++n)as(this,l[n],c[n],e[n]);return this}function Ln(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var n=this._x0,a=this._y0,i=this._x1,r=this._y1;if(isNaN(n))i=(n=Math.floor(e))+1,r=(a=Math.floor(t))+1;else{for(var l=i-n||1,c=this._root,u,m;n>e||e>=i||a>t||t>=r;)switch(m=(t<a)<<1|e<n,u=new Array(4),u[m]=c,c=u,l*=2,m){case 0:i=n+l,r=a+l;break;case 1:n=i-l,r=a+l;break;case 2:i=n+l,a=r-l;break;case 3:n=i-l,a=r-l;break}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=a,this._x1=i,this._y1=r,this}function Rn(){var e=[];return this.visit(function(t){if(!t.length)do e.push(t.data);while(t=t.next)}),e}function In(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function O(e,t,n,a,i){this.node=e,this.x0=t,this.y0=n,this.x1=a,this.y1=i}function Dn(e,t,n){var a,i=this._x0,r=this._y0,l,c,u,m,g=this._x1,j=this._y1,f=[],h=this._root,y,d;for(h&&f.push(new O(h,i,r,g,j)),n==null?n=1/0:(i=e-n,r=t-n,g=e+n,j=t+n,n*=n);y=f.pop();)if(!(!(h=y.node)||(l=y.x0)>g||(c=y.y0)>j||(u=y.x1)<i||(m=y.y1)<r))if(h.length){var o=(l+u)/2,x=(c+m)/2;f.push(new O(h[3],o,x,u,m),new O(h[2],l,x,o,m),new O(h[1],o,c,u,x),new O(h[0],l,c,o,x)),(d=(t>=x)<<1|e>=o)&&(y=f[f.length-1],f[f.length-1]=f[f.length-1-d],f[f.length-1-d]=y)}else{var p=e-+this._x.call(null,h.data),N=t-+this._y.call(null,h.data),v=p*p+N*N;if(v<n){var w=Math.sqrt(n=v);i=e-w,r=t-w,g=e+w,j=t+w,a=h.data}}return a}function Pn(e){if(isNaN(g=+this._x.call(null,e))||isNaN(j=+this._y.call(null,e)))return this;var t,n=this._root,a,i,r,l=this._x0,c=this._y0,u=this._x1,m=this._y1,g,j,f,h,y,d,o,x;if(!n)return this;if(n.length)for(;;){if((y=g>=(f=(l+u)/2))?l=f:u=f,(d=j>=(h=(c+m)/2))?c=h:m=h,t=n,!(n=n[o=d<<1|y]))return this;if(!n.length)break;(t[o+1&3]||t[o+2&3]||t[o+3&3])&&(a=t,x=o)}for(;n.data!==e;)if(i=n,!(n=n.next))return this;return(r=n.next)&&delete n.next,i?(r?i.next=r:delete i.next,this):t?(r?t[o]=r:delete t[o],(n=t[0]||t[1]||t[2]||t[3])&&n===(t[3]||t[2]||t[1]||t[0])&&!n.length&&(a?a[x]=n:this._root=n),this):(this._root=r,this)}function zn(e){for(var t=0,n=e.length;t<n;++t)this.remove(e[t]);return this}function Bn(){return this._root}function Vn(){var e=0;return this.visit(function(t){if(!t.length)do++e;while(t=t.next)}),e}function Hn(e){var t=[],n,a=this._root,i,r,l,c,u;for(a&&t.push(new O(a,this._x0,this._y0,this._x1,this._y1));n=t.pop();)if(!e(a=n.node,r=n.x0,l=n.y0,c=n.x1,u=n.y1)&&a.length){var m=(r+c)/2,g=(l+u)/2;(i=a[3])&&t.push(new O(i,m,g,c,u)),(i=a[2])&&t.push(new O(i,r,g,m,u)),(i=a[1])&&t.push(new O(i,m,l,c,g)),(i=a[0])&&t.push(new O(i,r,l,m,g))}return this}function Un(e){var t=[],n=[],a;for(this._root&&t.push(new O(this._root,this._x0,this._y0,this._x1,this._y1));a=t.pop();){var i=a.node;if(i.length){var r,l=a.x0,c=a.y0,u=a.x1,m=a.y1,g=(l+u)/2,j=(c+m)/2;(r=i[0])&&t.push(new O(r,l,c,g,j)),(r=i[1])&&t.push(new O(r,g,c,u,j)),(r=i[2])&&t.push(new O(r,l,j,g,m)),(r=i[3])&&t.push(new O(r,g,j,u,m))}n.push(a)}for(;a=n.pop();)e(a.node,a.x0,a.y0,a.x1,a.y1);return this}function Wn(e){return e[0]}function Gn(e){return arguments.length?(this._x=e,this):this._x}function Kn(e){return e[1]}function Zn(e){return arguments.length?(this._y=e,this):this._y}function is(e,t,n){var a=new Ce(t??Wn,n??Kn,NaN,NaN,NaN,NaN);return e==null?a:a.addAll(e)}function Ce(e,t,n,a,i,r){this._x=e,this._y=t,this._x0=n,this._y0=a,this._x1=i,this._y1=r,this._root=void 0}function Pe(e){for(var t={data:e.data},n=t;e=e.next;)n=n.next={data:e.data};return t}var R=is.prototype=Ce.prototype;R.copy=function(){var e=new Ce(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,n,a;if(!t)return e;if(!t.length)return e._root=Pe(t),e;for(n=[{source:t,target:e._root=new Array(4)}];t=n.pop();)for(var i=0;i<4;++i)(a=t.source[i])&&(a.length?n.push({source:a,target:t.target[i]=new Array(4)}):t.target[i]=Pe(a));return e};R.add=Fn;R.addAll=On;R.cover=Ln;R.data=Rn;R.extent=In;R.find=Dn;R.remove=Pn;R.removeAll=zn;R.root=Bn;R.size=Vn;R.visit=Hn;R.visitAfter=Un;R.x=Gn;R.y=Zn;function re(e){return function(){return e}}function X(e){return(e()-.5)*1e-6}function Yn(e){return e.index}function ze(e,t){var n=e.get(t);if(!n)throw new Error("node not found: "+t);return n}function qn(e){var t=Yn,n=j,a,i=re(30),r,l,c,u,m,g=1;e==null&&(e=[]);function j(o){return 1/Math.min(c[o.source.index],c[o.target.index])}function f(o){for(var x=0,p=e.length;x<g;++x)for(var N=0,v,w,M,A,F,k,D;N<p;++N)v=e[N],w=v.source,M=v.target,A=M.x+M.vx-w.x-w.vx||X(m),F=M.y+M.vy-w.y-w.vy||X(m),k=Math.sqrt(A*A+F*F),k=(k-r[N])/k*o*a[N],A*=k,F*=k,M.vx-=A*(D=u[N]),M.vy-=F*D,w.vx+=A*(D=1-D),w.vy+=F*D}function h(){if(l){var o,x=l.length,p=e.length,N=new Map(l.map((w,M)=>[t(w,M,l),w])),v;for(o=0,c=new Array(x);o<p;++o)v=e[o],v.index=o,typeof v.source!="object"&&(v.source=ze(N,v.source)),typeof v.target!="object"&&(v.target=ze(N,v.target)),c[v.source.index]=(c[v.source.index]||0)+1,c[v.target.index]=(c[v.target.index]||0)+1;for(o=0,u=new Array(p);o<p;++o)v=e[o],u[o]=c[v.source.index]/(c[v.source.index]+c[v.target.index]);a=new Array(p),y(),r=new Array(p),d()}}function y(){if(l)for(var o=0,x=e.length;o<x;++o)a[o]=+n(e[o],o,e)}function d(){if(l)for(var o=0,x=e.length;o<x;++o)r[o]=+i(e[o],o,e)}return f.initialize=function(o,x){l=o,m=x,h()},f.links=function(o){return arguments.length?(e=o,h(),f):e},f.id=function(o){return arguments.length?(t=o,f):t},f.iterations=function(o){return arguments.length?(g=+o,f):g},f.strength=function(o){return arguments.length?(n=typeof o=="function"?o:re(+o),y(),f):n},f.distance=function(o){return arguments.length?(i=typeof o=="function"?o:re(+o),d(),f):i},f}var Jn={value:()=>{}};function rs(){for(var e=0,t=arguments.length,n={},a;e<t;++e){if(!(a=arguments[e]+"")||a in n||/[\s.]/.test(a))throw new Error("illegal type: "+a);n[a]=[]}return new pe(n)}function pe(e){this._=e}function Xn(e,t){return e.trim().split(/^|\s+/).map(function(n){var a="",i=n.indexOf(".");if(i>=0&&(a=n.slice(i+1),n=n.slice(0,i)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:a}})}pe.prototype=rs.prototype={constructor:pe,on:function(e,t){var n=this._,a=Xn(e+"",n),i,r=-1,l=a.length;if(arguments.length<2){for(;++r<l;)if((i=(e=a[r]).type)&&(i=Qn(n[i],e.name)))return i;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++r<l;)if(i=(e=a[r]).type)n[i]=Be(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Be(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new pe(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=new Array(i),a=0,i,r;a<i;++a)n[a]=arguments[a+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(r=this._[e],a=0,i=r.length;a<i;++a)r[a].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var a=this._[e],i=0,r=a.length;i<r;++i)a[i].value.apply(t,n)}};function Qn(e,t){for(var n=0,a=e.length,i;n<a;++n)if((i=e[n]).name===t)return i.value}function Be(e,t,n){for(var a=0,i=e.length;a<i;++a)if(e[a].name===t){e[a]=Jn,e=e.slice(0,a).concat(e.slice(a+1));break}return n!=null&&e.push({name:t,value:n}),e}var Q=0,ae=0,se=0,cs=1e3,ge,ie,je=0,Z=0,be=0,le=typeof performance=="object"&&performance.now?performance:Date,ls=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function os(){return Z||(ls(ea),Z=le.now()+be)}function ea(){Z=0}function Me(){this._call=this._time=this._next=null}Me.prototype=ds.prototype={constructor:Me,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?os():+n)+(t==null?0:+t),!this._next&&ie!==this&&(ie?ie._next=this:ge=this,ie=this),this._call=e,this._time=n,Se()},stop:function(){this._call&&(this._call=null,this._time=1/0,Se())}};function ds(e,t,n){var a=new Me;return a.restart(e,t,n),a}function sa(){os(),++Q;for(var e=ge,t;e;)(t=Z-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Q}function Ve(){Z=(je=le.now())+be,Q=ae=0;try{sa()}finally{Q=0,na(),Z=0}}function ta(){var e=le.now(),t=e-je;t>cs&&(be-=t,je=e)}function na(){for(var e,t=ge,n,a=1/0;t;)t._call?(a>t._time&&(a=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:ge=n);ie=e,Se(a)}function Se(e){if(!Q){ae&&(ae=clearTimeout(ae));var t=e-Z;t>24?(e<1/0&&(ae=setTimeout(Ve,e-le.now()-be)),se&&(se=clearInterval(se))):(se||(je=le.now(),se=setInterval(ta,cs)),Q=1,ls(Ve))}}const aa=1664525,ia=1013904223,He=4294967296;function ra(){let e=1;return()=>(e=(aa*e+ia)%He)/He}function ca(e){return e.x}function la(e){return e.y}var oa=10,da=Math.PI*(3-Math.sqrt(5));function ha(e){var t,n=1,a=.001,i=1-Math.pow(a,1/300),r=0,l=.6,c=new Map,u=ds(j),m=rs("tick","end"),g=ra();e==null&&(e=[]);function j(){f(),m.call("tick",t),n<a&&(u.stop(),m.call("end",t))}function f(d){var o,x=e.length,p;d===void 0&&(d=1);for(var N=0;N<d;++N)for(n+=(r-n)*i,c.forEach(function(v){v(n)}),o=0;o<x;++o)p=e[o],p.fx==null?p.x+=p.vx*=l:(p.x=p.fx,p.vx=0),p.fy==null?p.y+=p.vy*=l:(p.y=p.fy,p.vy=0);return t}function h(){for(var d=0,o=e.length,x;d<o;++d){if(x=e[d],x.index=d,x.fx!=null&&(x.x=x.fx),x.fy!=null&&(x.y=x.fy),isNaN(x.x)||isNaN(x.y)){var p=oa*Math.sqrt(.5+d),N=d*da;x.x=p*Math.cos(N),x.y=p*Math.sin(N)}(isNaN(x.vx)||isNaN(x.vy))&&(x.vx=x.vy=0)}}function y(d){return d.initialize&&d.initialize(e,g),d}return h(),t={tick:f,restart:function(){return u.restart(j),t},stop:function(){return u.stop(),t},nodes:function(d){return arguments.length?(e=d,h(),c.forEach(y),t):e},alpha:function(d){return arguments.length?(n=+d,t):n},alphaMin:function(d){return arguments.length?(a=+d,t):a},alphaDecay:function(d){return arguments.length?(i=+d,t):+i},alphaTarget:function(d){return arguments.length?(r=+d,t):r},velocityDecay:function(d){return arguments.length?(l=1-d,t):1-l},randomSource:function(d){return arguments.length?(g=d,c.forEach(y),t):g},force:function(d,o){return arguments.length>1?(o==null?c.delete(d):c.set(d,y(o)),t):c.get(d)},find:function(d,o,x){var p=0,N=e.length,v,w,M,A,F;for(x==null?x=1/0:x*=x,p=0;p<N;++p)A=e[p],v=d-A.x,w=o-A.y,M=v*v+w*w,M<x&&(F=A,x=M);return F},on:function(d,o){return arguments.length>1?(m.on(d,o),t):m.on(d)}}}function ua(){var e,t,n,a,i=re(-30),r,l=1,c=1/0,u=.81;function m(h){var y,d=e.length,o=is(e,ca,la).visitAfter(j);for(a=h,y=0;y<d;++y)t=e[y],o.visit(f)}function g(){if(e){var h,y=e.length,d;for(r=new Array(y),h=0;h<y;++h)d=e[h],r[d.index]=+i(d,h,e)}}function j(h){var y=0,d,o,x=0,p,N,v;if(h.length){for(p=N=v=0;v<4;++v)(d=h[v])&&(o=Math.abs(d.value))&&(y+=d.value,x+=o,p+=o*d.x,N+=o*d.y);h.x=p/x,h.y=N/x}else{d=h,d.x=d.data.x,d.y=d.data.y;do y+=r[d.data.index];while(d=d.next)}h.value=y}function f(h,y,d,o){if(!h.value)return!0;var x=h.x-t.x,p=h.y-t.y,N=o-y,v=x*x+p*p;if(N*N/u<v)return v<c&&(x===0&&(x=X(n),v+=x*x),p===0&&(p=X(n),v+=p*p),v<l&&(v=Math.sqrt(l*v)),t.vx+=x*h.value*a/v,t.vy+=p*h.value*a/v),!0;if(h.length||v>=c)return;(h.data!==t||h.next)&&(x===0&&(x=X(n),v+=x*x),p===0&&(p=X(n),v+=p*p),v<l&&(v=Math.sqrt(l*v)));do h.data!==t&&(N=r[h.data.index]*a/v,t.vx+=x*N,t.vy+=p*N);while(h=h.next)}return m.initialize=function(h,y){e=h,n=y,g()},m.strength=function(h){return arguments.length?(i=typeof h=="function"?h:re(+h),g(),m):i},m.distanceMin=function(h){return arguments.length?(l=h*h,m):Math.sqrt(l)},m.distanceMax=function(h){return arguments.length?(c=h*h,m):Math.sqrt(c)},m.theta=function(h){return arguments.length?(u=h*h,m):Math.sqrt(u)},m}const B={maxNodes:28,iterations:150,chargeStrength:-220,linkDistance:46,boundsMargin:{x:16,y:14},edgeCurve:{max:20,scale:.14}},G={baseRadius:{agent:4,law:3,skill:3.2},degreeScale:.45,degreeMax:3.6,hubGlowScale:3.2,hub:{minDegree:3,maxFraction:.55}};function ma({graph:e}){const[a,i]=b.useState(null),{nodes:r,edges:l,pos:c,degrees:u,maxDeg:m}=b.useMemo(()=>{const y={nodes:[],edges:[],pos:new Map,degrees:new Map,maxDeg:0};if(!e||!e.nodes.length)return y;const d=new Map;e.edges.forEach(k=>{d.set(k.source,(d.get(k.source)||0)+1),d.set(k.target,(d.get(k.target)||0)+1)});const x=[...e.nodes].sort((k,D)=>(d.get(D.id)||0)-(d.get(k.id)||0)).slice(0,B.maxNodes),p=new Set(x.map(k=>k.id)),N=e.edges.filter(k=>p.has(k.source)&&p.has(k.target)),v=440/2,w=230/2,M=ha(x.map(k=>({id:k.id}))).force("charge",ua().strength(B.chargeStrength)).force("link",qn(N.map(k=>({source:k.source,target:k.target}))).id(k=>k.id).distance(B.linkDistance)).force("center",Tn(v,w)).stop();for(let k=0;k<B.iterations;k++)M.tick();const A=new Map;M.nodes().forEach(k=>{A.set(k.id,{x:Math.max(B.boundsMargin.x,Math.min(440-B.boundsMargin.x,k.x)),y:Math.max(B.boundsMargin.y,Math.min(230-B.boundsMargin.y,k.y))})});const F=Math.max(1,...d.values());return{nodes:x,edges:N,pos:A,degrees:d,maxDeg:F}},[e]),g=b.useMemo(()=>{if(!a)return null;const y=new Set([a]);return l.forEach(d=>{d.source===a&&y.add(d.target),d.target===a&&y.add(d.source)}),y},[a,l]);if(!r.length)return s.jsx("div",{style:{height:200,display:"grid",placeItems:"center",color:"var(--text-3)",fontSize:13},children:"no cross-links yet"});const j=a?c.get(a):null,f=a?r.find(y=>y.id===a):null,h=(f==null?void 0:f.type)==="law"?`Rule ${a}`:a;return s.jsxs("svg",{viewBox:"0 0 440 230",style:{width:"100%",height:"auto",display:"block"},role:"img","aria-label":"Cross-link constellation",onMouseLeave:()=>i(null),children:[s.jsx("defs",{children:s.jsxs("radialGradient",{id:"mg-hub-glow",cx:"50%",cy:"50%",r:"50%",children:[s.jsx("stop",{offset:"0%",stopColor:"var(--accent)",stopOpacity:"0.42"}),s.jsx("stop",{offset:"60%",stopColor:"var(--accent)",stopOpacity:"0.08"}),s.jsx("stop",{offset:"100%",stopColor:"var(--accent)",stopOpacity:"0"})]})}),l.map((y,d)=>{const o=c.get(y.source),x=c.get(y.target);if(!o||!x)return null;const p=a&&(y.source===a||y.target===a),N=a&&!p,v=x.x-o.x,w=x.y-o.y,M=Math.sqrt(v*v+w*w)||1,A=Math.min(B.edgeCurve.max,M*B.edgeCurve.scale),F=(o.x+x.x)/2+-w/M*A,k=(o.y+x.y)/2+v/M*A;return s.jsx("path",{d:`M${o.x},${o.y} Q${F},${k} ${x.x},${x.y}`,fill:"none",stroke:p?"var(--accent)":"var(--line-2)",strokeWidth:p?1.3:.9,opacity:N?.14:p?.95:.55},d)}),r.map(y=>{const d=c.get(y.id);if(!d)return null;const o=u.get(y.id)||0,p=(G.baseRadius[y.type]??G.baseRadius.skill)+Math.min(G.degreeMax,o*G.degreeScale),N=o>=Math.max(G.hub.minDegree,m*G.hub.maxFraction),v=o===0,w=g&&!g.has(y.id),M=y.type==="agent"?"var(--accent)":y.type==="law"?"var(--warn)":"var(--good)";return s.jsxs("g",{opacity:w?.22:1,onMouseEnter:()=>i(y.id),style:{cursor:"pointer"},children:[N&&s.jsx("circle",{cx:d.x,cy:d.y,r:p*G.hubGlowScale,fill:"url(#mg-hub-glow)"}),s.jsx("circle",{cx:d.x,cy:d.y,r:p,fill:M,fillOpacity:v?.55:1,stroke:"var(--bg)",strokeWidth:"1.4"})]},y.id)}),j&&s.jsx("text",{x:j.x+(j.x>350?-10:10),y:j.y-9,textAnchor:j.x>350?"end":"start",fontSize:"11",fill:"var(--text)",style:{paintOrder:"stroke",stroke:"var(--bg)",strokeWidth:3},children:h})]})}function xa({overview:e,sigil:t,setup:n,jobs:a,graph:i}){const r=es(e.counts),l=(n==null?void 0:n.version_verdict)||"",c=l.includes("up to date"),u=Y(e.diff),m=[["Source","src/, the canonical genetic material",(n==null?void 0:n.source_fp)||"—",!0],["Render",`geneseed build → ${e.emit}`,e.theme+" voice",!0],["Deployed",e.target,"inherited by every repo",!1]];return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid split-lineage mb-16",children:[s.jsxs("div",{className:"card pad-lg rise",style:{position:"relative",overflow:"hidden"},children:[s.jsx("h2",{className:"h",style:{fontSize:22,margin:"0 0 18px"},children:"Gene-seed lineage"}),s.jsxs("div",{className:"lineage-track",children:[s.jsx("div",{className:"spine"}),m.map(([g,j,f,h],y)=>s.jsxs("div",{className:"lineage-step",children:[s.jsx("span",{className:`node ${h?"on":""}`}),s.jsx("div",{className:"lt",children:g}),s.jsx("div",{className:"ld",children:j}),s.jsx("div",{className:"ltag",children:f})]},y))]}),s.jsx("hr",{className:"hr"}),t&&s.jsxs("div",{className:"voice-readout",style:{marginBottom:14},children:[s.jsx("span",{className:"vr-cur",children:"▕"}),s.jsx("span",{className:"vr-txt",children:t})]},e.theme),s.jsxs("div",{className:"row wrap gap-10",children:[s.jsxs("span",{className:`badge ${c?"ok":"warn"}`,children:[s.jsx("span",{className:"dot"}),"in sync · ",l]}),s.jsxs("span",{className:"badge",children:[s.jsx("span",{className:"dot"}),u," local edits"]})]})]}),s.jsxs("div",{className:"card pad-lg rise",style:{animationDelay:"80ms"},children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Cross-link constellation"}),s.jsx("div",{className:"right",children:s.jsxs("button",{className:"btn soft sm",onClick:()=>L("#/graph"),children:["Open graph",s.jsx($,{name:"arrow"})]})})]}),s.jsx(ma,{graph:i})]})]}),s.jsxs("div",{className:"grid split-even",children:[s.jsxs("div",{className:"card pad-lg",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Genome strand"}),s.jsx("div",{className:"right",children:s.jsx("span",{className:"tick",children:"by volume"})})]}),z.map(g=>s.jsx($n,{k:g,overview:e,max:r},g))]}),s.jsxs("div",{className:"card pad-lg",children:[s.jsx("div",{className:"card-head",children:s.jsx("h3",{children:"Recent activity"})}),s.jsx(Ae,{jobs:a})]})]})]})}function pa({overview:e,setup:t,jobs:n}){var u,m,g;const a=z.reduce((j,f)=>{var h;return j+(((h=e.counts)==null?void 0:h[f])??0)},0),i=es(e.counts),r=(u=e.doctor)==null?void 0:u.ok,l=((g=(m=e.doctor)==null?void 0:m.problems)==null?void 0:g.length)??0,c=Y(e.diff);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"card pad-md rise mb-16",children:s.jsx("div",{className:"row wrap between gap-16",children:s.jsxs("div",{className:"row",style:{gap:20,flexWrap:"wrap"},children:[s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"status"}),s.jsx("div",{className:"row",style:{gap:8,marginTop:4},children:s.jsxs("span",{className:`badge ${e.deployed?"ok":"warn"}`,children:[s.jsx("span",{className:"dot"}),e.deployed?"deployed":"not deployed"]})})]}),s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"voice"}),s.jsx("div",{className:"metric",style:{fontSize:18,marginTop:6,textTransform:"capitalize"},children:e.theme})]}),s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"mode"}),s.jsx("div",{className:"mono",style:{fontSize:14,marginTop:6},children:e.emit})]}),s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"fingerprint"}),s.jsx("div",{className:"mono",style:{fontSize:14,marginTop:6,color:"var(--accent)"},children:(t==null?void 0:t.installed_fp)||"—"})]}),s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"doctor"}),s.jsx("div",{className:"row",style:{gap:8,marginTop:4},children:r?s.jsxs("span",{className:"badge ok",children:[s.jsx("span",{className:"dot"}),"clean"]}):s.jsxs("span",{className:"badge warn",children:[s.jsx("span",{className:"dot"}),l," issue",l!==1?"s":""]})})]}),s.jsxs("div",{children:[s.jsx("div",{className:"tick",children:"edits"}),s.jsx("div",{className:"metric",style:{fontSize:18,marginTop:6},children:c})]})]})})}),s.jsxs("div",{className:"grid split-operator",children:[s.jsxs("div",{className:"card rise",style:{animationDelay:"60ms"},children:[s.jsxs("div",{className:"card-head pad-lg",style:{padding:"18px 20px 0",marginBottom:14},children:[s.jsx("h3",{children:"Sections"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"tick",children:[a," entries total"]})})]}),s.jsxs("table",{className:"tbl",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"Section"}),s.jsx("th",{children:"Detail"}),s.jsx("th",{style:{width:130},children:"Share"}),s.jsx("th",{className:"num",children:"Count"})]})}),s.jsx("tbody",{children:z.map(j=>{var y;const f=I[j],h=((y=e.counts)==null?void 0:y[j])??0;return s.jsxs("tr",{className:"clickable",onClick:()=>L("#/section/"+j),children:[s.jsx("td",{className:"name",children:f.label}),s.jsx("td",{className:"muted",children:f.desc}),s.jsx("td",{children:s.jsx("div",{className:"hbar",children:s.jsx("i",{style:{width:`${h/i*100}%`}})})}),s.jsx("td",{className:"num",children:h})]},j)})})]})]}),s.jsxs("div",{className:"card pad-lg rise",style:{animationDelay:"120ms"},children:[s.jsx("div",{className:"card-head",children:s.jsx("h3",{children:"Run log"})}),s.jsx(Ae,{jobs:n})]})]})]})}const fa=864e5;function hs(e,t=10,n="today"){const a=new Array(t).fill(0).map((r,l)=>({t:l===t-1?n:`${t-1-l}d`,v:0})),i=Date.now();for(const r of e){const l=r.started||r.finished||r.created||r.ts;if(!l)continue;const c=typeof l=="string"?Date.parse(l):l*1e3;if(!Number.isFinite(c))continue;const u=Math.floor((i-c)/fa);u<0||u>=t||(a[t-1-u].v+=1)}return a}const ga=12,ja=120,H=["#2BB673","#16A6A6","#E8A23B","#E07A5F","#8E7DBE","#5BD08A","#79856E"];function Ue({segments:e,size:t=186,stroke:n=26,caption:a="capabilities"}){const i=e.reduce((m,g)=>m+g.value,0)||1,r=t/2-n/2,l=t/2,c=t/2;let u=0;return s.jsxs("svg",{width:t,height:t,viewBox:`0 0 ${t} ${t}`,children:[s.jsx("circle",{cx:l,cy:c,r,fill:"none",stroke:"var(--surface-3)",strokeWidth:n}),e.map((m,g)=>{if(m.value/i<=0)return null;const f=u/i*2*Math.PI-Math.PI/2,h=(u+m.value)/i*2*Math.PI-Math.PI/2;u+=m.value;const y=l+r*Math.cos(f),d=c+r*Math.sin(f),o=l+r*Math.cos(h),x=c+r*Math.sin(h),p=h-f>Math.PI?1:0;return s.jsx("path",{d:`M ${y} ${d} A ${r} ${r} 0 ${p} 1 ${o} ${x}`,fill:"none",stroke:m.color,strokeWidth:n,strokeLinecap:"butt",children:s.jsxs("title",{children:[m.label,": ",m.value]})},g)}),s.jsx("text",{x:l,y:c-4,textAnchor:"middle",className:"donut-c-num",children:i}),s.jsx("text",{x:l,y:c+16,textAnchor:"middle",className:"donut-c-cap",children:a})]})}function ya(e){if(e.length<2)return e.length?`M${e[0][0]},${e[0][1]}`:"";let t=`M${e[0][0]},${e[0][1]}`;for(let n=0;n<e.length-1;n++){const a=e[n-1]||e[n],i=e[n],r=e[n+1],l=e[n+2]||r,c=i[0]+(r[0]-a[0])/6,u=i[1]+(r[1]-a[1])/6,m=r[0]-(l[0]-i[0])/6,g=r[1]-(l[1]-i[1])/6;t+=` C${c},${u} ${m},${g} ${r[0]},${r[1]}`}return t}function va({data:e,height:t=156,accent:n}){if(!e.length)return null;const a=600,i=t,r=6,l=14,c=6,u=Math.max(...e.map(o=>o.v),1)+1,m=a-r*2,g=e.length>1?m/(e.length-1):m,j=e.map((o,x)=>{const p=r+x*g,N=i-c-o.v/u*(i-l-c);return[p,N]}),f=ya(j),h=j[j.length-1],y=j[0],d=`${f} L${h[0]},${i} L${y[0]},${i} Z`;return s.jsxs("svg",{viewBox:`0 0 ${a} ${i}`,preserveAspectRatio:"none",style:{width:"100%",height:t,display:"block",overflow:"visible"},children:[s.jsx("defs",{children:s.jsxs("linearGradient",{id:"b-grad",x1:"0",y1:"0",x2:"0",y2:"1",children:[s.jsx("stop",{offset:"0",stopColor:n,stopOpacity:".28"}),s.jsx("stop",{offset:"1",stopColor:n,stopOpacity:"0"})]})}),s.jsx("path",{d,fill:"url(#b-grad)"}),s.jsx("path",{d:f,fill:"none",stroke:n,strokeWidth:"2",strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}),s.jsx("circle",{cx:h[0],cy:h[1],r:"3.5",fill:n,vectorEffect:"non-scaling-stroke"})]})}function me({label:e,value:t,sub:n,color:a,icon:i}){return s.jsxs("div",{className:"b-tile",children:[s.jsx("span",{className:"b-tile-ic",style:{background:`color-mix(in srgb, ${a} 18%, transparent)`,color:a},children:s.jsx($,{name:i})}),s.jsxs("div",{className:"b-tile-body",children:[s.jsx("div",{className:"b-tile-val"+(t===0?" zero":""),children:t}),s.jsx("div",{className:"b-tile-label",children:e})]}),s.jsx("div",{className:"b-tile-sub",children:n})]})}const ba={neutral:"Loaded & ready",imperial:"The Codex in force",military:"The unit stands ready",cyberpunk:"Jacked in",wizard:"Wards in place",pirate:"The crew stands ready",gamer:"Game loaded",sports:"The squad takes the field",biker:"The crew rolls out",commentator:"Lights out, away we go",verstappen:"Setup's in",joker:"Mic check",mean:"Rules are up",marvin:"Online. Reluctantly."};function Na({overview:e,sigil:t,jobs:n,doctor:a,onAction:i}){const r=e.counts||{},l=(a==null?void 0:a.groups)||[],c=l.length>0,u=l.filter(o=>o.problems.length===0).length,m=l.length||1,g=e.deployed?ba[e.theme]||"Loaded & ready":"Not deployed",j=Y(e.diff),f=z.filter(o=>(r[o]||0)>0).map((o,x)=>({label:I[o].label,value:r[o]||0,color:H[x%H.length]})),h=f.reduce((o,x)=>o+x.value,0),y=hs(n||[],10),d=y.reduce((o,x)=>o+x.v,0);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"b-greet",children:[s.jsxs("div",{children:[s.jsx("div",{className:"eyebrow",children:"your harness"}),s.jsx("h1",{className:"h b-h",children:g}),s.jsx("p",{className:"sub",children:t||"A friendly read of every layer growing in your harness."})]}),s.jsxs("div",{className:"row gap-8",children:[s.jsxs("button",{className:"btn",onClick:()=>i("update"),children:[s.jsx($,{name:"refresh"}),"Update"]}),s.jsxs("button",{className:"btn ghost",onClick:()=>i("build-all"),children:[s.jsx($,{name:"build"}),"Rebuild"]})]})]}),s.jsxs("div",{className:"grid b-hero-grid mb-16",children:[s.jsxs("div",{className:"card b-hero",children:[s.jsx("div",{className:"b-hero-ring",children:s.jsx(Ue,{segments:[{label:"pass",value:u,color:H[0]},{label:"attention",value:Math.max(m-u,0),color:H[2]}],size:168,stroke:20,caption:"checks"})}),s.jsxs("div",{className:"b-hero-side",children:[s.jsx("h3",{className:"b-hero-title",children:c?`${u} of ${m} checks pass`:"Running checks…"}),s.jsxs("p",{className:"sub",children:["One source, rendered into ",s.jsx("code",{children:e.target})," and inherited by every repo on this machine."]}),c&&s.jsx("ul",{className:"b-hero-checks",children:l.map(o=>{const x=o.problems.length===0;return s.jsxs("li",{className:`b-hcheck ${x?"ok":"bad"}`,title:x?"clean":o.problems.join("; "),children:[s.jsx("span",{className:"b-hcheck-mark",children:x?"✓":"!"}),s.jsx("span",{className:"b-hcheck-label",children:o.label})]},o.label)})}),s.jsxs("div",{className:"b-chips",children:[s.jsxs("span",{className:"b-chip",children:[s.jsx("b",{style:{textTransform:"capitalize"},children:e.theme})," voice"]}),s.jsx("span",{className:"b-chip",children:s.jsx("b",{children:e.emit})}),s.jsxs("span",{className:"b-chip",children:["built ",s.jsx("b",{children:e.build_time||"unknown"})]})]})]})]}),s.jsxs("div",{className:"b-tiles",children:[s.jsx(me,{label:"Agents",value:r.agents??"—",sub:"specialists",color:H[0],icon:"layers"}),s.jsx(me,{label:"Skills",value:r.skills??"—",sub:"workflows",color:H[1],icon:"skill"}),s.jsx(me,{label:"Invariants",value:r.laws??"—",sub:r.doctrines?`${r.doctrines.active}/${r.doctrines.total} packs · ${r.doctrines.rules} rules`:"all upheld",color:H[2],icon:"law"}),s.jsx(me,{label:"Edits",value:j,sub:"to graft",color:H[3],icon:"changes"})]})]}),s.jsxs("div",{className:"grid split-even mb-16",children:[s.jsxs("div",{className:"card pad-lg b-mix-card",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Capability mix"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"tick",children:[h," total"]})})]}),s.jsxs("div",{className:"b-mix",children:[s.jsx(Ue,{segments:f,size:186,stroke:26}),s.jsx("div",{className:"b-legend",children:f.map(o=>s.jsxs("div",{className:"b-leg-row",children:[s.jsx("span",{className:"b-leg-dot",style:{background:o.color}}),s.jsx("span",{className:"b-leg-name",children:o.label}),s.jsx("span",{className:"b-leg-bar",children:s.jsx("i",{style:{width:`${o.value/h*100}%`,background:o.color}})}),s.jsx("span",{className:"b-leg-val",children:o.value})]},o.label))})]})]}),s.jsxs("div",{className:"card pad-lg",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Recent runs"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"badge ok",children:[s.jsx("span",{className:"dot"}),"job log"]})})]}),s.jsxs("div",{className:"b-stat-lead",children:[s.jsx("span",{className:"b-stat-big",children:d}),s.jsxs("span",{className:"b-stat-cap",children:["runs in the last 10 days · ",u,"/",m," checks pass now"]})]}),s.jsx(va,{data:y,accent:H[0],height:156})]})]}),s.jsxs("div",{className:"card pad-lg",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Recent activity"}),s.jsx("div",{className:"right",children:s.jsxs("span",{className:"tick",children:["last ",Math.min((n==null?void 0:n.length)||0,12)," runs"]})})]}),s.jsxs("div",{className:"b-timeline",children:[(n||[]).slice(0,ga).map(o=>{const x=o.status==="done",N=o.status==="failed"?"warn":x?"ok":"acc";return s.jsxs("div",{className:"b-tl-row",children:[s.jsx("span",{className:`b-tl-node ${N}`}),s.jsxs("div",{className:"b-tl-body",children:[s.jsx("b",{children:o.action}),o.output?`: ${o.output.split(`
11
- `)[0].slice(0,ja)}`:""]}),s.jsx("span",{className:"b-tl-when",children:o.duration?`${o.duration}s`:o.status})]},o.id)}),(!n||n.length===0)&&s.jsxs("div",{className:"b-tl-row",children:[s.jsx("span",{className:"b-tl-node"}),s.jsx("div",{className:"b-tl-body sub",children:"No runs yet. Trigger an action to populate this."}),s.jsx("span",{className:"b-tl-when",children:"—"})]})]})]})]})}const wa=14,ka=120;function te({title:e,right:t,children:n,span:a}){return s.jsxs("div",{className:"c-mod",style:a?{gridColumn:`span ${a}`}:null,children:[s.jsxs("div",{className:"c-mod-head",children:[s.jsx("span",{className:"c-tab"}),s.jsx("h3",{children:e}),t&&s.jsx("span",{className:"c-mod-right",children:t})]}),s.jsx("div",{className:"c-mod-body",children:n})]})}function K({label:e,value:t}){return s.jsxs("div",{className:"c-kpi",children:[s.jsx("div",{className:"c-kpi-label",children:e}),s.jsx("div",{className:"c-kpi-val"+(t===0?" zero":""),children:t})]})}function _a({data:e,height:t=120,hi:n}){if(!e.length)return null;const a=Math.max(...e.map(i=>i.v),1);return s.jsx("div",{className:"c-cols",style:{height:t},children:e.map((i,r)=>{const l=Math.max(i.v/a*(t-6),2);return s.jsx("div",{className:`c-col ${r===n?"hi":""}`,style:{height:l},title:`${i.t}: ${i.v}`},r)})})}function Ma({checks:e}){return s.jsx("div",{className:"c-band",children:e.map((t,n)=>s.jsx("span",{className:`c-band-cell ${t.problems.length===0?"ok":"bad"}`,title:`${t.label}: ${t.problems.length===0?"pass":`${t.problems.length} problem(s)`}`},n))})}function Sa(e){const t={};for(const n of e||[]){const a=n.action||"unknown";t[a]=(t[a]||0)+1}return Object.entries(t).map(([n,a])=>({label:n,value:a})).sort((n,a)=>a.value-n.value)}function Ea({overview:e,jobs:t,doctor:n,onAction:a}){const i=e.counts||{},r=z.reduce((d,o)=>d+(i[o]||0),0),l=Math.max(...z.map(d=>i[d]||0),1),c=(n==null?void 0:n.groups)||[],u=c.filter(d=>d.problems.length===0).length,m=hs(t||[],10,"0d"),g=m.reduce((d,o)=>d+o.v,0),j=Sa(t),f=Math.max(...j.map(d=>d.value),1),h=Y(e.diff),y=[["status",e.deployed?s.jsx("span",{className:"c-pill ok",children:"DEPLOYED"}):s.jsx("span",{className:"c-pill warn",children:"NOT DEPLOYED"})],["voice",s.jsx("span",{style:{textTransform:"capitalize"},children:e.theme})],["mode",e.emit],["doctor",c.length===0?s.jsx("span",{className:"c-pill",children:"—"}):u===c.length?s.jsx("span",{className:"c-pill ok",children:"CLEAN"}):s.jsxs("span",{className:"c-pill warn",children:[c.length-u," ISSUES"]})],["edits",String(h)],["built",e.build_time||"—"],["target",s.jsx("span",{className:"c-dim mono",children:e.target})]];return s.jsxs("div",{className:"c-root",children:[s.jsxs("div",{className:"c-titlebar",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"c-h1",children:"HARNESS // STATUS READOUT"}),s.jsxs("div",{className:"c-sub",children:[e.target," · rendered from src/ · inherited everywhere"]})]}),s.jsxs("div",{className:"row gap-8",children:[s.jsxs("button",{className:"btn",onClick:()=>a("update"),children:[s.jsx($,{name:"refresh"}),"UPDATE"]}),s.jsx("button",{className:"btn ghost",onClick:()=>a("build-all"),children:"REBUILD"}),s.jsx("button",{className:"btn ghost",onClick:()=>a("doctor"),children:"DOCTOR"})]})]}),s.jsx("div",{className:"c-strip",children:y.map(([d,o],x)=>s.jsxs("div",{className:"c-strip-cell",children:[s.jsx("div",{className:"c-strip-k",children:d}),s.jsx("div",{className:"c-strip-v",children:o})]},x))}),s.jsxs("div",{className:"c-kpi-row",children:[s.jsx(K,{label:"AGENTS",value:i.agents??"—"}),s.jsx(K,{label:"SKILLS",value:i.skills??"—"}),s.jsx(K,{label:"INVARIANTS",value:i.laws??"—"}),s.jsx(K,{label:"PACKS",value:i.doctrines?`${i.doctrines.active}/${i.doctrines.total}`:"—"}),s.jsx(K,{label:"MEMORY",value:i.memory??"—"}),s.jsx(K,{label:"NOTEBOOK",value:i.notebook??"—"}),s.jsx(K,{label:"EDITS",value:h})]}),s.jsxs("div",{className:"c-grid",children:[s.jsx(te,{title:"CAPABILITY DISTRIBUTION",right:`${r} ENTRIES`,span:2,children:s.jsxs("table",{className:"c-tbl",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"SECTION"}),s.jsx("th",{children:"DETAIL"}),s.jsx("th",{style:{width:150},children:"SHARE"}),s.jsx("th",{className:"num",children:"N"})]})}),s.jsx("tbody",{children:z.map(d=>s.jsxs("tr",{children:[s.jsx("td",{className:"c-name",children:I[d].label}),s.jsx("td",{className:"c-dim",children:I[d].desc}),s.jsx("td",{children:s.jsx("div",{className:"c-bar",children:s.jsx("i",{style:{width:`${(i[d]||0)/l*100}%`,background:d==="agents"||d==="skills"?"var(--accent)":"var(--line-3)"}})})}),s.jsx("td",{className:(i[d]||0)>0?"num":"num c-dim",children:i[d]??0})]},d))})]})}),s.jsx(te,{title:"DOCTOR // CHECKS",right:c.length?`${u}/${c.length}`:"—",children:c.length>0?s.jsxs(s.Fragment,{children:[s.jsx(Ma,{checks:c}),s.jsx("div",{className:"c-check-list",children:c.map(d=>{const o=d.problems.length===0;return s.jsxs("div",{className:"c-check-row",children:[s.jsx("span",{className:`c-dotmark ${o?"ok":"bad"}`}),s.jsx("span",{className:"c-check-name",children:d.label}),s.jsx("span",{className:"c-check-detail",children:o?"clean":`${d.problems.length} problem${d.problems.length===1?"":"s"}`})]},d.label)})})]}):s.jsx("p",{className:"c-dim mono",style:{fontSize:11},children:"No doctor run loaded yet."})}),s.jsxs(te,{title:"RUN RATE // 10D",right:`${g} RUNS`,span:2,children:[s.jsx(_a,{data:m,height:120,hi:m.length-1}),s.jsx("div",{className:"c-axis",children:m.map((d,o)=>s.jsx("span",{children:o%2===0?d.t:""},o))})]}),s.jsx(te,{title:"RUN LOG // BY TYPE",right:`${(t||[]).length} LOGGED`,children:j.length>0?s.jsx("table",{className:"c-tbl",children:s.jsx("tbody",{children:j.map(d=>s.jsxs("tr",{children:[s.jsx("td",{className:"c-name",style:{textTransform:"uppercase",fontWeight:400},children:d.label}),s.jsx("td",{children:s.jsx("div",{className:"c-bar",children:s.jsx("i",{style:{width:`${d.value/f*100}%`,background:"var(--accent)"}})})}),s.jsx("td",{className:"num",children:d.value})]},d.label))})}):s.jsx("p",{className:"c-dim mono",style:{fontSize:11},children:"No runs logged."})}),s.jsx(te,{title:"RECENT // RUN LOG",span:3,children:s.jsx("table",{className:"c-tbl",children:s.jsxs("tbody",{children:[(t||[]).slice(0,wa).map(d=>{const o=d.status==="done",p=d.status==="failed"?"bad":o?"ok":"acc",N=d.output?d.output.split(`
12
- `)[0].slice(0,ka):"—";return s.jsxs("tr",{children:[s.jsxs("td",{style:{width:96},children:[s.jsx("span",{className:`c-dotmark ${p}`})," ",s.jsx("span",{className:"c-dim",children:d.action})]}),s.jsx("td",{className:"c-name",style:{fontWeight:400},children:N}),s.jsx("td",{className:"num c-dim",children:d.duration?`${d.duration}s`:d.status})]},d.id)}),(!t||t.length===0)&&s.jsx("tr",{children:s.jsx("td",{colSpan:"3",className:"c-dim",style:{fontSize:11},children:"No runs logged."})})]})})})]})]})}const V={security:"oklch(0.74 0.085 45)",verify:"oklch(0.78 0.075 200)",process:"oklch(0.76 0.075 150)",craft:"oklch(0.78 0.085 95)",context:"oklch(0.74 0.08 280)",comms:"oklch(0.76 0.085 345)"},ni={security:{label:"Security",c:V.security},verify:{label:"Verification",c:V.verify},process:{label:"Process",c:V.process},craft:{label:"Craft",c:V.craft},context:{label:"Context",c:V.context},comms:{label:"Communication",c:V.comms}},ai=["security","verify","process","craft","context","comms"],Aa={craft:V.craft,rigor:V.verify,ops:V.process,process:V.security},We=e=>Aa[e]||"var(--text-3)",Ca=.62,$a=(e,t)=>String(e).length*t*Ca;function J(e,t){let n=0;for(const a of e){if(a.t===""||a.t==null)continue;const i=$a(a.t,a.size)/2;n=Math.max(n,Math.hypot(i,a.dy-a.size*.75),Math.hypot(i,a.dy+a.size*.25))}return Math.ceil(n+t)}function xe(e,t,n=0){const a=t.x-e.x,i=t.y-e.y,r=Math.hypot(a,i)||1,l=a/r,c=i/r,u=e.x+l*e.r,m=e.y+c*e.r,g=t.x-l*t.r,j=t.y-c*t.r,f=n*r,h=y=>y.toFixed(1);return`M${h(u)} ${h(m)} C${h(u+l*r*.3-c*f)} ${h(m+c*r*.3+l*f)} ${h(g-l*r*.3-c*f)} ${h(j-c*r*.3+l*f)} ${h(g)} ${h(j)}`}function ne({hash:e,label:t,children:n}){return s.jsx("g",{className:"cm-node",role:"button",tabIndex:0,"aria-label":t,onClick:()=>L(e),onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),L(e))},children:n})}function Ta({overview:e}){var d,o,x;const[t,n]=b.useState(null);b.useEffect(()=>{let p=!0;return C.catalog("laws").then(N=>p&&n(N.items||[])).catch(()=>{}),()=>{p=!1}},[]);const a=(e==null?void 0:e.counts)||{},i=ss(a),r=[];for(const p of(t||[]).filter(N=>N.tier==="doctrine")){let N=r.find(v=>v.id===p.pack);N||r.push(N={id:p.pack,on:0}),p.active!==!1&&(N.on+=1)}const l=(e==null?void 0:e.footprint)==="lean"?"lean — first line only":"full text inlined",c={x:330,y:165,r:J([{t:"Constitution",size:17,dy:-12},{t:`${i} rules in force`,size:10,dy:8},{t:l,size:8.5,dy:24}],12)},u={x:126,y:95,r:J([{t:"Ontology",size:12.5,dy:-7},{t:`${a.ontology??0} sections`,size:10,dy:10}],11)},m={x:560,y:78,r:J([{t:"Invariants",size:12.5,dy:-6},{t:`${a.laws??0}`,size:13,dy:12}],11)},g={x:560,y:252,r:J([{t:"Doctrines",size:12.5,dy:-6},{t:`${((d=a.doctrines)==null?void 0:d.rules)??0}`,size:13,dy:12}],11)},j=(p,N,v,w)=>({x:p,y:N,label:v,count:w,r:J([{t:v,size:10.5,dy:-2},{t:`${w}`,size:9,dy:10}],9)}),f=[{...j(812,52,"Skills",a.skills??0),hash:"#/skills",from:m},{...j(820,126,"Agents",a.agents??0),hash:"#/agents",from:m},{...j(816,232,"Memory",a.memory??0),hash:"#/section/memory",from:g},{...j(812,300,"Wiki",a.wiki??0),hash:"#/section/wiki",from:g}],h={rx:122,ry:68,from:212,to:112},y=r.map((p,N)=>{const w=(r.length===1?(h.from+h.to)/2:h.from+(h.to-h.from)*N/(r.length-1))*Math.PI/180;return{...p,x:g.x+h.rx*Math.cos(w),y:g.y+h.ry*Math.sin(w),r:J([{t:p.id,size:7.5,dy:-2},{t:`${p.on}`,size:7.5,dy:8}],4)}});return s.jsxs("svg",{className:"cmap",viewBox:"0 0 940 350",role:"group","aria-label":"The constitution map",children:[s.jsx("path",{d:xe(c,u,.05),className:"cm-edge"}),s.jsx("path",{d:xe(c,m,-.07),className:"cm-edge"}),s.jsx("path",{d:xe(c,g,.07),className:"cm-edge"}),f.map(p=>s.jsx("path",{d:xe(p.from,p,.03),className:"cm-edge-gov"},`e-${p.label}`)),s.jsxs(ne,{hash:"#/laws",label:`Constitution: ${i} rules in force`,children:[s.jsx("circle",{cx:c.x,cy:c.y,r:c.r,className:"cm-hub-disc"}),s.jsx("text",{x:c.x,y:c.y-12,textAnchor:"middle",className:"cm-hub-name",children:"Constitution"}),s.jsxs("text",{x:c.x,y:c.y+8,textAnchor:"middle",className:"cm-hub-num",children:[i," rules in force"]}),s.jsx("text",{x:c.x,y:c.y+24,textAnchor:"middle",className:"cm-note",children:l})]}),s.jsxs(ne,{hash:"#/laws",label:`Ontology: ${a.ontology??0} sections`,children:[s.jsx("circle",{cx:u.x,cy:u.y,r:u.r,className:"cm-sat-disc"}),s.jsx("text",{x:u.x,y:u.y-7,textAnchor:"middle",className:"cm-sat-name",children:"Ontology"}),s.jsxs("text",{x:u.x,y:u.y+10,textAnchor:"middle",className:"cm-sat-num",children:[a.ontology??0," sections"]})]}),s.jsx("text",{x:u.x,y:u.y+u.r+16,textAnchor:"middle",className:"cm-note",children:"how it thinks, not a rule"}),s.jsxs(ne,{hash:"#/laws",label:`Invariants: ${a.laws??0}, never broken`,children:[s.jsx("circle",{cx:m.x,cy:m.y,r:m.r,className:"cm-sat-disc"}),s.jsx("text",{x:m.x,y:m.y-6,textAnchor:"middle",className:"cm-sat-name",children:"Invariants"}),s.jsx("text",{x:m.x,y:m.y+12,textAnchor:"middle",className:"cm-sat-big",children:a.laws??0})]}),s.jsx("text",{x:m.x,y:m.y+m.r+16,textAnchor:"middle",className:"cm-note",children:"never broken"}),s.jsxs(ne,{hash:"#/laws",label:`Doctrines: ${((o=a.doctrines)==null?void 0:o.rules)??0} rules chosen at build`,children:[s.jsx("circle",{cx:g.x,cy:g.y,r:g.r,className:"cm-sat-disc"}),s.jsx("text",{x:g.x,y:g.y-6,textAnchor:"middle",className:"cm-sat-name",children:"Doctrines"}),s.jsx("text",{x:g.x,y:g.y+12,textAnchor:"middle",className:"cm-sat-big",children:((x=a.doctrines)==null?void 0:x.rules)??0})]}),s.jsx("text",{x:g.x+22,y:g.y+g.r+20,className:"cm-note",children:a.doctrines?`chosen at build · ${a.doctrines.active}/${a.doctrines.total} packs lit`:"chosen at build"}),s.jsx("g",{className:"cm-mini",children:y.map(p=>s.jsxs("g",{children:[s.jsx("circle",{cx:p.x,cy:p.y,r:p.r,className:"cm-pack-disc",style:{stroke:We(p.id)}}),s.jsx("text",{x:p.x,y:p.y-2,textAnchor:"middle",className:"cm-pack-id",children:p.id}),s.jsx("text",{x:p.x,y:p.y+8,textAnchor:"middle",style:{fill:We(p.id)},children:p.on})]},p.id))}),s.jsx("text",{x:866,y:16,textAnchor:"middle",className:"cm-govern-label",children:"GOVERNS THE HARNESS"}),f.map(p=>s.jsxs(ne,{hash:p.hash,label:`${p.label}: ${p.count}`,children:[s.jsx("circle",{cx:p.x,cy:p.y,r:p.r,className:"cm-gov-disc"}),s.jsx("text",{x:p.x,y:p.y-2,textAnchor:"middle",className:"cm-gov-name",children:p.label}),s.jsx("text",{x:p.x,y:p.y+10,textAnchor:"middle",className:"cm-gov-num",children:p.count})]},p.label)),s.jsx("text",{x:u.x,y:228,textAnchor:"middle",className:"cm-note",children:"tap any node to open its ledger"})]})}function Fa(){const e=new Date,t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function Oa({counts:e}){const t=[{label:I.skills.label,n:e.skills??0,hash:"#/skills"},{label:"Rules in force",n:ss(e),hash:"#/laws"},{label:I.agents.label,n:e.agents??0,hash:"#/agents"},{label:I.memory.label,n:e.memory??0,hash:"#/section/memory"},{label:I.notebook.label,n:e.notebook??0,hash:"#/section/notebook"},{label:I.wiki.label,n:e.wiki??0,hash:"#/section/wiki"},{label:I.config.label,n:e.config??0,hash:"#/section/config"}],n=Math.max(...t.map(a=>a.n),1);return s.jsxs("div",{className:"card pad-lg jr-card",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Growth rings"}),s.jsx("span",{className:"tick right",children:"by section"})]}),t.map(a=>s.jsxs("button",{className:"jr-ring",onClick:()=>L(a.hash),children:[s.jsx("span",{className:"jr-ring-label",children:a.label}),s.jsx("span",{className:"jr-ring-track",children:s.jsx("span",{className:"jr-ring-fill",style:{width:`${a.n/n*100}%`}})}),s.jsx("span",{className:"jr-ring-num",children:a.n})]},a.label))]})}function La({recent:e,buildEpoch:t}){const n=(e==null?void 0:e.items)||[],a=(e==null?void 0:e.skipped)||[];return s.jsxs("div",{className:"card pad-lg jr-card",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"Freshly grown"}),s.jsx("span",{className:"tick right",children:"newest"})]}),e?n.length===0?s.jsx("p",{className:"sub",children:"Nothing here carries a date yet."}):n.slice(0,5).map(i=>s.jsxs("button",{className:"jr-fresh",onClick:()=>L(`#/item/${i.type}/${encodeURIComponent(i.name)}`),children:[s.jsx("span",{className:"jr-fresh-kind",children:i.section}),s.jsx("span",{className:"jr-fresh-name",children:i.title}),s.jsx("span",{className:"jr-fresh-when",children:fe(i.mtime)})]},`${i.section}:${i.name}`)):s.jsx("p",{className:"sub",children:"Reading the shelves…"}),a.length>0&&s.jsxs("p",{className:"sub jr-skipped",children:["Not dated: ",a.join(", ")," — too many files to stat on every load."]}),s.jsxs("p",{className:"jr-care",children:[t?`Last built ✓ ${fe(t)}`:"Never built here"," ·"," ",s.jsx("button",{className:"jr-go",onClick:()=>L("#/activity"),children:"log →"})]})]})}function Ra({overview:e,recent:t,onAction:n,onDirection:a}){const i=(e==null?void 0:e.counts)||{};return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"head-row jr-head",children:[s.jsxs("div",{children:[s.jsxs("div",{className:"eyebrow",children:["Field journal · ",Fa()]}),s.jsx("h1",{className:"h",children:"Today in this harness"})]}),s.jsxs("div",{className:"row wrap gap-10",children:[s.jsx("button",{className:"btn primary",onClick:()=>n==null?void 0:n("update"),children:"Update & rebuild"}),s.jsx("button",{className:"btn",onClick:()=>L("#/doctor"),children:"Doctor"})]})]}),s.jsxs("div",{className:"jr-row2",children:[s.jsx(Oa,{counts:i}),s.jsx(La,{recent:t,buildEpoch:e==null?void 0:e.build_epoch})]}),s.jsxs("div",{className:"card pad-lg jr-map",children:[s.jsxs("div",{className:"card-head",children:[s.jsx("h3",{children:"The Constitution — and the harness it governs"}),s.jsx("button",{className:"jr-go right",onClick:()=>L("#/laws"),children:"open →"})]}),s.jsx(Ta,{overview:e})]}),s.jsxs("p",{className:"sub jr-others",children:["Other views:"," ",s.jsx("button",{className:"jr-go",onClick:()=>a==null?void 0:a("lineage"),children:"Lineage"})," ","·"," ",s.jsx("button",{className:"jr-go",onClick:()=>a==null?void 0:a("operator"),children:"Operator"})]})]})}function Ia({error:e,style:t}){return e?s.jsx("p",{className:"badge bad",style:t,children:e}):null}function Da({onAction:e}){var f,h,y,d,o;const{data:t,error:n}=Ee(()=>C.themes(),[]),[a,i]=b.useState(""),[r,l]=b.useState("");if(n)return s.jsx(Ia,{error:n});if(!t)return s.jsx(ns,{});const c=a||((f=t.current)==null?void 0:f.theme)||"neutral",u=(h=t.emits)==null?void 0:h.some(x=>x.name==="opencode-global"),m=r||(u?"opencode-global":((y=t.current)==null?void 0:y.emit)||((o=(d=t.emits)==null?void 0:d[0])==null?void 0:o.name)||""),g=i,j=l;return s.jsxs("div",{className:"narrow-lg",children:[s.jsx("div",{className:"head-row mb-18",children:s.jsxs("div",{children:[s.jsx("h1",{className:"h",children:"Deploy your harness"}),s.jsx("p",{className:"sub",children:"Geneseed isn't implanted on this machine yet. Pick a voice and an install mode, then deploy. The graft runs in the console below, and this dashboard lights up when it lands."})]})}),s.jsxs("div",{className:"card pad-lg mb-16",children:[s.jsx("div",{className:"card-head",children:s.jsx("h3",{children:"1 · Choose a voice"})}),s.jsx("div",{className:"row wrap gap-10",children:t.themes.map(x=>s.jsxs("button",{className:`btn ${x.name===c?"soft":"ghost"}`,onClick:()=>g(x.name),title:x.blurb||x.tagline||x.name,children:[s.jsx("span",{className:"po",style:{width:10,height:10,borderRadius:"50%",background:ce(x.accent),boxShadow:`0 0 8px ${ce(x.accent)}`}}),s.jsx("span",{style:{textTransform:"capitalize"},children:x.name})]},x.name))})]}),s.jsxs("div",{className:"card pad-lg mb-16",children:[s.jsx("div",{className:"card-head",children:s.jsx("h3",{children:"2 · Install mode"})}),s.jsxs("p",{className:"sub mb-16",children:[s.jsx("code",{children:"opencode-global"})," deploys once to your global config so every repo on this machine inherits the harness (recommended). Other modes render into a chosen directory."]}),s.jsxs("label",{className:"stack",style:{gap:6,maxWidth:360},children:[s.jsx("span",{className:"tick",children:"Mode"}),s.jsx("select",{className:"sel",value:m,onChange:x=>j(x.target.value),children:t.emits.map(x=>s.jsxs("option",{value:x.name,children:[x.name,x.desc?` · ${x.desc}`:""]},x.name))})]})]}),s.jsxs("button",{className:"btn btn-grid",disabled:!m,onClick:()=>e("build",{theme:c,emit:m}),children:[s.jsx($,{name:"build"}),"Deploy harness"]})]})}function Pa({overview:e,themes:t,setup:n,runs:a,onAction:i,flavour:r="a",layout:l="auto",dataRev:c}){var N;const u=Zt(r,l),[m,g]=b.useState("status"),[j,f]=b.useState(null),[h,y]=b.useState(null),[d,o]=b.useState(null),x=e&&((N=t.find(v=>v.name===e.theme))==null?void 0:N.sigil)||"";b.useEffect(()=>{let v=!0;return(u==="greenhouse"||u==="operator")&&C.doctor().then(w=>v&&y(w)).catch(()=>{}),u==="journal"&&C.recent().then(w=>v&&o(w)).catch(()=>{}),()=>{v=!1}},[u,c]);const p=b.useRef(null);return b.useEffect(()=>{if(m!=="lineage"||p.current===c)return;let v=!0;return C.graph().then(w=>{v&&(f(w),p.current=c)}).catch(()=>{}),()=>{v=!1}},[m,c]),e?e.deployed?m==="status"&&u==="journal"?s.jsx(Ra,{overview:e,recent:d,onAction:i,onDirection:g}):s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"head-row",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"h",children:"Harness console"}),s.jsx("p",{className:"sub",children:"A live readout of the harness this machine carries. Its voice, its capabilities, its drift from source."})]}),s.jsx("div",{className:"seg",role:"group","aria-label":"Dashboard view",children:[["status","Status"],["lineage","Lineage"],["operator","Operator"]].map(([v,w])=>s.jsx("button",{className:m===v?"on":"",onClick:()=>g(v),"aria-pressed":m===v,children:w},v))})]}),m==="status"&&u==="cultivar"&&s.jsx(Cn,{overview:e,sigil:x,setup:n,jobs:a,onAction:i}),m==="status"&&u==="greenhouse"&&s.jsx(Na,{overview:e,sigil:x,jobs:a,doctor:h,onAction:i}),m==="status"&&u==="operator"&&s.jsx(Ea,{overview:e,jobs:a,doctor:h,onAction:i}),m==="lineage"&&s.jsx(xa,{overview:e,sigil:x,setup:n,jobs:a,graph:j}),m==="operator"&&s.jsx(pa,{overview:e,setup:n,jobs:a})]}):s.jsx(Da,{onAction:i}):s.jsx("div",{className:"loading",children:"Loading…"})}const za=b.lazy(()=>P(()=>import("./Activity-BTCG2gMl.js"),__vite__mapDeps([0,1,2]))),Ba=b.lazy(()=>P(()=>import("./ActivityDetail-julsmPDB.js"),__vite__mapDeps([3,1,2]))),Va=b.lazy(()=>P(()=>import("./Library-CjC7BAWN.js"),__vite__mapDeps([4,1,5,6]))),Ha=b.lazy(()=>P(()=>import("./Laws-BjbHJrJt.js"),__vite__mapDeps([7,1,8,9]))),Ua=b.lazy(()=>P(()=>import("./Rules-CsC6hfqk.js"),__vite__mapDeps([10,1]))),Wa=b.lazy(()=>P(()=>import("./Profile-CHr-PPf6.js"),__vite__mapDeps([11,1,5]))),Ga=b.lazy(()=>P(()=>import("./Skills-BvatJGfe.js"),__vite__mapDeps([12,1,5,6,9]))),Ka=b.lazy(()=>P(()=>import("./Diff-CIrGbiqm.js"),__vite__mapDeps([13,1]))),Za=b.lazy(()=>P(()=>import("./Doctor-CpI53oHY.js"),__vite__mapDeps([14,1]))),Ya=b.lazy(()=>P(()=>import("./Graph-CS4tA7YS.js"),__vite__mapDeps([15,1,8]))),qa=b.lazy(()=>P(()=>import("./index-DJOhOwwR.js"),__vite__mapDeps([16,1]))),Ja=b.lazy(()=>P(()=>import("./Harness-vRYs11kX.js"),__vite__mapDeps([17,1]))),Xa=b.lazy(()=>P(()=>import("./index-Bx3I7cRW.js"),__vite__mapDeps([18,1,5])));function Qa(){const e=Et(),t=e.view==="section",n=e.view==="item",a=e.view==="laws"||t&&e.section==="laws"||n&&e.type==="law",i=e.view==="skills"||t&&e.section==="skills"||n&&e.type==="skill",r=e.view==="library"||e.view==="agents"||(t||n)&&!a&&!i,l=e.view==="agents"?"agents":t?e.section:n?Ft[e.type]||e.type:void 0,c=n?e.name:void 0,[u,m]=b.useState(""),[g,j]=b.useState(null),[f,h]=b.useState(!1),[y,d]=b.useState(!1),[o,x]=Lt(),[p,N]=zt(),[v,w]=Ut(),[M,A]=Yt(),[F,k]=b.useState(()=>!window.sessionStorage.getItem("gs-booted")),[D,oe]=b.useState(!1),Ne=b.useRef(null);b.useEffect(()=>{if(!D)return;const S=he=>{he.key==="Escape"&&oe(!1)};return window.addEventListener("keydown",S),()=>window.removeEventListener("keydown",S)},[D]);const $e=S=>{var he,Oe;return j({kind:((he=S==null?void 0:S.body)==null?void 0:he.kind)||"err",msg:((Oe=S==null?void 0:S.body)==null?void 0:Oe.message)||S.message})},{overview:_,themes:we,reload:Te}=qt($e),[U,us]=b.useState(0),ke=()=>{Te(),us(S=>S+1)},{runs:de,activeId:ms,consoleOpen:xs,setConsoleOpen:ps,runAction:q,cancelJob:fs,clearRuns:gs}=en({onFinish:ke,onError:$e}),{data:Fe}=Ee(()=>C.setup().catch(()=>null),[U]),ee=de[de.length-1],js=ee?ee.status==="running"?`${ee.action} running`:`${ee.action} ${ee.status}`:"";b.useEffect(()=>{const S=Ne.current;S&&(v==="curated"&&Tt(S,p,o)||_!=null&&_.accent&&Ct(S,_.accent,o))},[_,o,v,p]);const ys=async()=>{if(window.confirm("Stop the local Geneseed server? The console goes offline until you start it again.")){try{await C.shutdown()}catch{}d(!0)}};return y?s.jsxs("div",{className:`app fl-${p} ${o==="light"?"light":""}`,ref:Ne,children:[s.jsx("div",{className:"atmos","aria-hidden":"true"}),s.jsx("div",{className:"page",style:{display:"grid",placeItems:"center"},children:s.jsxs("p",{className:"sub",style:{textAlign:"center",maxWidth:480},children:["Server stopped. You can close this tab and reopen any time with"," ",s.jsx("code",{children:"geneseed web"}),"."]})})]}):s.jsxs("div",{className:`app fl-${p} ${o==="light"?"light":""}${D?" nav-open":""}`,ref:Ne,children:[s.jsx("div",{className:"atmos","aria-hidden":"true"}),s.jsx("a",{className:"skip-link",href:"#main",children:"Skip to content"}),s.jsx("p",{className:"sr-only",role:"status","aria-live":"polite",children:js}),D&&s.jsx("button",{type:"button",className:"nav-scrim","aria-label":"Close navigation",onClick:()=>oe(!1)}),s.jsx(on,{route:e,overview:_,setup:Fe,onOpenVoice:()=>h(S=>!S),onNavigate:()=>oe(!1)}),f&&s.jsx(yn,{themes:we,current:_==null?void 0:_.theme,onPick:S=>{h(!1),q("build",{theme:S,emit:_==null?void 0:_.emit})},onClose:()=>h(!1)}),s.jsxs("div",{className:"col",children:[s.jsx(jn,{route:e,navOpen:D,onToggleNav:()=>oe(S=>!S),target:_==null?void 0:_.target,version:_==null?void 0:_.version,query:u,onQuery:m,mode:o,onToggleMode:x,onShutdown:ys,dataRev:U,onSwitch:ke}),s.jsx("main",{className:"page",id:"main",tabIndex:-1,children:s.jsx("div",{className:e.view==="harness"?"pad pad-wide":"pad",children:s.jsxs(b.Suspense,{fallback:s.jsx(ns,{}),children:[e.view==="dashboard"&&s.jsx(Pa,{overview:_,themes:we,setup:Fe,runs:de,onAction:q,flavour:p,layout:M,dataRev:U}),e.view==="activity"&&s.jsx(za,{}),e.view==="activity-detail"&&s.jsx(Ba,{sid:e.sid},e.sid),a&&s.jsx(Ha,{selected:c,overview:_,onAction:q,dataRev:U}),i&&s.jsx(Ga,{selected:c,dataRev:U}),r&&s.jsx(Va,{overview:_,section:l,selected:c,dataRev:U}),e.view==="rules"&&s.jsx(Ua,{}),e.view==="profile"&&s.jsx(Wa,{}),e.view==="diff"&&s.jsx(Ka,{onMutated:Te,dataRev:U}),e.view==="doctor"&&s.jsx(Za,{}),e.view==="graph"&&s.jsx(Ya,{}),e.view==="settings"&&s.jsx(qa,{overview:_,onAction:q,flavour:p,onFlavour:N,accentMode:v,onAccentMode:w,layout:M,onLayout:A}),e.view==="harness"&&s.jsx(Ja,{onAction:q,themes:we,currentTheme:_==null?void 0:_.theme,overview:_,dataRev:U,onMutated:ke}),e.view==="docs"&&s.jsx(Xa,{page:e.page,query:u,onAction:q,overview:_})]})})}),s.jsx(Nn,{runs:de,open:xs,busy:!!ms,onToggle:()=>ps(S=>!S),onClear:gs,onCancel:fs})]}),g&&s.jsx(bn,{toast:g,onClose:()=>j(null)}),F&&s.jsx(_n,{ready:!!_,onDone:()=>{window.sessionStorage.setItem("gs-booted","1"),k(!1)}})]})}vs(document.getElementById("root")).render(s.jsx(Qa,{}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});export{Vt as A,V as C,Ia as E,It as F,$ as I,ns as L,Aa as P,Jt as R,I as S,C as a,si as b,ti as c,ni as d,ai as e,Gt as f,L as g,Kt as h,ve as i,s as j,fe as r,Ee as u,Ie as w};
@@ -1 +0,0 @@
1
- @font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2) format("woff2")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/hanken-grotesk-latin-400-normal-BG6hkEXj.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/hanken-grotesk-latin-500-normal-DrDcrrxK.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/hanken-grotesk-latin-600-normal-CIXX6EOa.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/hanken-grotesk-latin-700-normal-CeQ8H3UY.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/hanken-grotesk-latin-400-italic-Bserb8X5.woff2) format("woff2")}@font-face{font-family:Hanken Grotesk;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/hanken-grotesk-latin-500-italic-BGfwwhek.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-normal-mWgeinG7.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-italic-YylcN9Ay.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-italic-vNvENeTh.woff2) format("woff2")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-latin-400-normal-BIGslYFI.woff2) format("woff2")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2) format("woff2")}@font-face{font-family:"IBM Plex Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2")}@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/oswald-latin-400-normal-BAFo8sP8.woff2) format("woff2")}@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/oswald-latin-500-normal-B-eyT0Dw.woff2) format("woff2")}@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/oswald-latin-600-normal-plFmSr5g.woff2) format("woff2")}@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/oswald-latin-700-normal-vy6hmKSr.woff2) format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/poppins-latin-400-normal-cpxAROuN.woff2) format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/poppins-latin-500-normal-C8OXljZJ.woff2) format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/poppins-latin-600-normal-zEkxB9Mr.woff2) format("woff2")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/poppins-latin-700-normal-Qrb0O0WB.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2")}@font-face{font-family:Audiowide;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/audiowide-latin-400-normal-6GFCX7ni.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-400-normal-DKaoCDn5.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-latin-500-normal-C3sF8Y1B.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/geist-mono-latin-600-normal-BHzjB6_C.woff2) format("woff2")}:root{--bg: #08090B;--bg-2: #0C0E11;--surface: #101317;--surface-2: #14181D;--surface-3: #1B2026;--line: #2C333B;--line-2: #3A434D;--line-3: #4C5762;--text: #EAEEF2;--text-2: #9AA6B2;--text-3: #687481;--accent: #3AD4C4;--accent-2: #2BA89B;--accent-ink: #04100D;--accent-soft: color-mix(in srgb, var(--accent) 13%, transparent);--accent-line: color-mix(in srgb, var(--accent) 34%, transparent);--good: #4ED888;--warn: #E8B53D;--bad: #FF5C57;--r-xs: 4px;--r-sm: 7px;--r-md: 11px;--r-lg: 16px;--r-xl: 22px;--rail-w: clamp(232px, 18vw, 256px);--topbar-h: 56px;--shadow-pop: 0 18px 50px -12px rgba(0,0,0,.7), 0 2px 0 rgba(255,255,255,.02) inset;--shadow-card: 0 1px 0 rgba(255,255,255,.02) inset, 0 14px 40px -28px rgba(0,0,0,.9);--font-display: "Space Grotesk", system-ui, sans-serif;--font-ui: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{height:100%}::selection{background:var(--accent-soft);color:var(--text)}a{color:var(--accent);text-decoration:none}button{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.law-rowhead .toggle-col{width:42px;text-align:center;vertical-align:middle}.law-row .toggle-col{display:flex;align-items:center;justify-content:center;vertical-align:middle}.skip-link{position:fixed;top:8px;left:-999px;z-index:100;padding:10px 16px;border-radius:10px;border:1px solid var(--accent);background:var(--surface);color:var(--text);text-decoration:none;font-size:13px}.skip-link:focus{left:8px}.atmos{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(900px 520px at 78% -8%,var(--accent-soft),transparent 60%),radial-gradient(700px 600px at -6% 102%,color-mix(in srgb,var(--accent) 5%,transparent),transparent 60%);opacity:.9}.atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");opacity:.025;mix-blend-mode:overlay}.app{position:relative;z-index:1;display:grid;color:var(--text);background:var(--bg);grid-template-columns:var(--rail-w) 1fr;min-height:100%}.app{scrollbar-color:var(--line-2) transparent}.app,.app *{scrollbar-width:thin}.app ::-webkit-scrollbar{width:9px;height:9px}.app ::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:999px}.app ::-webkit-scrollbar-thumb:hover{background:var(--line-3)}.app ::-webkit-scrollbar-track,.app ::-webkit-scrollbar-corner{background:transparent}.rail{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:18px 14px;border-right:1px solid var(--line);background:linear-gradient(180deg,var(--bg-2),var(--bg))}.rail-vitals{flex:none}.rail-brand{display:flex;align-items:center;gap:11px;padding:6px 10px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;background:none;border:0;font:inherit;color:inherit;text-align:left}.sprout{width:30px;height:30px;flex:none;filter:drop-shadow(0 0 10px var(--accent-soft))}.rail-brand:hover .sprout{transform:rotate(-7deg)}.sprout{transition:transform .25s ease;transform-origin:50% 88%}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:-.01em}.brand-name b{color:var(--accent);font-weight:600}.brand-sub{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-top:2px}.rail-group{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);padding:16px 12px 6px}.rail-nav{display:flex;flex-direction:column;gap:1px;position:relative}.rail-thread{position:absolute;left:4px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--line-2),transparent);border-radius:2px}.rail-item{display:flex;align-items:center;gap:11px;position:relative;padding:9px 12px 9px 18px;border-radius:var(--r-sm);cursor:pointer;color:var(--text-2);font-weight:500;font-size:13.5px;transition:color .14s,background .14s}.rail-item:hover{color:var(--text);background:var(--surface)}.rail-item .glyph{width:17px;height:17px;flex:none;opacity:.8}.rail-item .tag{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.rail-item.active{color:var(--text);background:linear-gradient(90deg,var(--accent-soft),transparent 88%)}.rail-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:3px;background:var(--accent);box-shadow:0 0 12px var(--accent)}.rail-item.active .glyph{opacity:1;color:var(--accent)}.rail-item.active .tag{color:var(--accent)}.rail-spacer{flex:1}.rail-sub{display:flex;flex-direction:column;gap:1px;position:relative;margin:2px 0 4px}.rail-sub:before{content:"";position:absolute;left:25px;top:4px;bottom:6px;width:1px;background:var(--line-2)}.rail-subitem{display:flex;align-items:center;gap:9px;position:relative;padding:7px 12px 7px 38px;border-radius:var(--r-sm);cursor:pointer;color:var(--text-3);font-weight:500;font-size:12.5px;text-decoration:none;transition:color .14s,background .14s}.rail-subitem:hover{color:var(--text);background:var(--surface)}.rail-subitem .tag{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.rail-subitem.active{color:var(--text);background:linear-gradient(90deg,var(--accent-soft),transparent 88%)}.rail-subitem.active:before{content:"";position:absolute;left:24px;top:50%;transform:translateY(-50%);width:3px;height:13px;border-radius:3px;background:var(--accent);box-shadow:0 0 10px var(--accent)}.rail-subitem.active .tag{color:var(--accent)}.rail-foot{border-top:1px solid var(--line);padding:12px 12px 2px;margin-top:8px}.rail-foot .voice{display:flex;align-items:center;gap:9px;cursor:pointer;padding:8px 10px;border-radius:var(--r-sm);background:none;border:0;font:inherit;color:inherit;text-align:left;width:100%}.rail-foot .voice:hover{background:var(--surface)}.voice-orb{width:13px;height:13px;border-radius:50%;flex:none;background:var(--accent);box-shadow:0 0 10px var(--accent)}.voice-meta{line-height:1.2;min-width:0}.voice-meta .vk{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.voice-meta .vv{font-weight:600;font-size:13px;text-transform:capitalize}.voice .chev{margin-left:auto;color:var(--text-3);font-size:12px}@media (max-width: 960px){:root{--rail-w: 62px}.rail{padding:18px 6px}.rail-brand{justify-content:center;padding:6px 0 14px}.brand-text,.voice-meta,.voice .chev{display:none}.rail-item span,.rail-item .tag{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.rail-group{font-size:0;height:1px;padding:0;margin:10px 10px 8px;background:var(--line-2)}.rail-item{justify-content:center;padding:10px 0 10px 6px}.rail-foot{padding:12px 0 2px}.rail-foot .voice{justify-content:center;padding:8px 0}}.tb-menu,.nav-scrim{display:none}@media (max-width: 720px){.topbar .prompt{display:none}.tb-search input{width:150px}.app{grid-template-columns:1fr}.tb-menu{display:inline-grid;place-items:center;width:34px;height:34px;flex:none;margin-left:-6px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text-2);cursor:pointer}.tb-menu:hover{color:var(--text);border-color:var(--line-2)}:root{--rail-w: 248px}.rail{position:fixed;top:0;left:0;bottom:0;z-index:40;width:var(--rail-w);height:100dvh;overflow-y:auto;padding:18px 14px;visibility:hidden;transform:translate(-100%);transition:transform .22s ease,visibility .22s;box-shadow:0 0 60px -10px #000c}.app.nav-open .rail{visibility:visible;transform:none}.brand-text,.voice-meta,.voice .chev{display:flex}.rail-item span,.rail-item .tag{position:static;width:auto;height:auto;clip-path:none}.rail-group{font-size:9.5px;height:auto;padding:0 10px;margin:14px 0 6px;background:none}.rail-item{justify-content:flex-start;padding:9px 10px}.nav-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;border:0;padding:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer}}@media (max-width: 720px) and (prefers-reduced-motion: reduce){.rail{transition:none}}.col{display:flex;flex-direction:column;min-width:0;min-height:100vh}.topbar{position:sticky;top:0;z-index:6;height:var(--topbar-h);display:flex;align-items:center;gap:16px;padding:0 26px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}.prompt{font-family:var(--font-mono);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt .path{color:var(--text-3)}.prompt .sep{color:var(--accent);margin:0 7px 0 2px}.prompt .cmd{color:var(--text)}.prompt .flag{color:var(--text-2)}.prompt .ver{color:var(--text-3, var(--text-2));opacity:.75}@media (max-width: 720px){.prompt .ver{display:none}}.prompt .cur{display:inline-block;width:7px;height:15px;vertical-align:-2px;margin-left:5px;background:var(--accent);animation:blink 1.05s steps(2) infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.topbar-spacer{flex:1}.tb-search{position:relative}.tb-search input{width:240px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 12px 8px 32px;font-family:var(--font-ui);font-size:13px;transition:border-color .14s}.tb-search input:focus{border-color:var(--accent-line);outline:none}.tb-search .mag{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-3)}.kbd{font-family:var(--font-mono);font-size:10px;color:var(--text-3);border:1px solid var(--line-2);border-radius:4px;padding:1px 5px;position:absolute;right:9px;top:50%;transform:translateY(-50%)}.spotlight{position:absolute;top:calc(100% + 6px);right:0;width:380px;max-height:60vh;overflow-y:auto;z-index:12;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:0 14px 40px #00000052;padding:6px 0}.spot-empty{padding:14px 16px;font-size:12.5px;color:var(--text-3)}.spot-group+.spot-group{border-top:1px solid var(--line-2);margin-top:4px;padding-top:4px}.spot-group-head{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);padding:6px 14px 4px}.spot-row{padding:7px 14px;cursor:pointer}.spot-row.on{background:color-mix(in srgb,var(--accent) 16%,transparent)}.spot-title{font-size:13px;color:var(--text)}.spot-desc{font-size:11.5px;color:var(--text-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{flex:1;overflow:auto;padding:30px 34px 120px}.page.center{max-width:1180px;margin:0 auto;width:100%}.pad{max-width:1180px;margin:0 auto}.pad-wide{max-width:none}.eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);display:inline-flex;align-items:center;gap:8px}.eyebrow:before{content:"";width:14px;height:2px;background:var(--accent);border-radius:2px}h1.h{font-family:var(--font-display);font-weight:600;font-size:27px;letter-spacing:-.02em;margin:10px 0 4px}h2.h{font-family:var(--font-display);font-weight:600;font-size:19px;letter-spacing:-.01em;margin:0}.sub{color:var(--text-2);font-size:14px;margin:0;max-width:70ch}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--text-2)}.dim{color:var(--text-3)}svg.glyph{width:16px;height:16px;flex:none}.card{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card)}.card.pad-lg{padding:22px 24px}.card.pad-md{padding:18px 20px}.act-card{transition:border-color .15s,transform .12s}.act-card:hover{border-color:var(--line-2);transform:translateY(-1px)}.act-chev{color:var(--text-3);transition:color .14s,transform .14s}.act-card:hover .act-chev{color:var(--text);transform:translate(2px)}.card-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.card-head h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:16.5px;letter-spacing:-.01em}.card-head .right{margin-left:auto;display:flex;align-items:center;gap:8px}.tick{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.metric{font-family:var(--font-display);font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1}.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;padding:3px 9px;border-radius:999px;border:1px solid var(--line-2);color:var(--text-2);white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 36%,transparent);background:color-mix(in srgb,var(--good) 9%,transparent)}.badge.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 36%,transparent);background:color-mix(in srgb,var(--warn) 9%,transparent)}.badge.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 36%,transparent);background:color-mix(in srgb,var(--bad) 9%,transparent)}.badge.acc{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.btn{display:inline-flex;align-items:center;gap:8px;cursor:pointer;white-space:nowrap;font-family:var(--font-ui);font-weight:600;font-size:13px;padding:9px 15px;border-radius:var(--r-sm);border:1px solid transparent;background:var(--accent);color:var(--accent-ink);transition:filter .14s,transform .08s}.btn:hover{filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default;filter:none}.btn.ghost{background:transparent;color:var(--text);border-color:var(--line-2)}.btn.ghost:hover{border-color:var(--accent-line);background:var(--surface);filter:none}.btn.soft{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}.btn.soft:hover{background:color-mix(in srgb,var(--accent) 18%,transparent);filter:none}.btn.sm{padding:5px 10px;font-size:12px}.btn .glyph{width:15px;height:15px}.fl-heirloom .btn:not(.ghost):not(.soft):disabled,.fl-perspective .btn:not(.ghost):not(.soft):disabled,.fl-matrix .btn:not(.ghost):not(.soft):not(.btn-grid):disabled{box-shadow:none;background-image:none}.fl-aurora .btn:disabled,.fl-neon .btn:disabled,.fl-cosmic .btn:not(.ghost):not(.soft):disabled{opacity:1;background:var(--surface-3);color:var(--text-3);box-shadow:none;background-image:none}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm)}.seg button{border:0;background:transparent;cursor:pointer;color:var(--text-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:6px 13px;border-radius:5px;transition:color .14s,background .14s}.seg button:hover{color:var(--text)}.seg button.on{color:var(--accent-ink);background:var(--accent)}.kv{display:grid;grid-template-columns:168px 1fr;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);align-items:baseline;font-size:13.5px}.kv:last-child{border-bottom:0}.kv .k{color:var(--text-3);font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em}.kv .v{color:var(--text);word-break:break-word}.meter{height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden}.meter>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-2),var(--accent))}.hr{height:1px;background:var(--line);border:0;margin:22px 0}code{font-family:var(--font-mono);font-size:.92em;background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-xs);padding:1px 6px;color:var(--text)}.sel{background:var(--surface);color:var(--text);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:9px 12px;font-family:var(--font-mono);font-size:12.5px;min-width:180px;cursor:pointer}.sel:focus{outline:none;border-color:var(--accent-line)}.sel option{background:var(--surface-2)}.grid{display:grid;gap:16px}.g-2{grid-template-columns:repeat(2,1fr)}.g-3{grid-template-columns:repeat(3,1fr)}.g-4{grid-template-columns:repeat(4,1fr)}.row{display:flex;align-items:center;gap:12px}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.stack{display:flex;flex-direction:column}.grid.split-status{grid-template-columns:1.55fr 1fr;align-items:start}.grid.split-operator{grid-template-columns:1.6fr 1fr;align-items:start}.grid.split-even{grid-template-columns:1fr 1fr;align-items:start}.grid.split-lineage{grid-template-columns:1fr 1.1fr;align-items:stretch}.head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:24px}.hero{display:grid;grid-template-columns:232px 1fr;gap:28px;align-items:center}.ring-wrap{position:relative;width:232px;height:232px}.ring-wrap svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.ring-center .pct{font-family:var(--font-display);font-weight:600;font-size:44px;letter-spacing:-.03em;line-height:1}.ring-center .lbl{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);margin-top:6px}.hero-facts{display:flex;flex-direction:column;gap:4px}.hero-facts .ttl{font-family:var(--font-display);font-weight:600;font-size:25px;letter-spacing:-.02em}.hero-chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 18px}.chip{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-family:var(--font-mono);font-size:12px}.chip .ck{color:var(--text-3)}.chip .cv{color:var(--text)}.kpiband{display:flex;align-items:center;gap:30px;padding:16px 22px;flex-wrap:wrap}.kseg{display:flex;align-items:baseline;gap:9px;background:none;border:0;padding:0;cursor:pointer;font:inherit;color:inherit;text-decoration:none}.kseg-n{font-family:var(--font-display);font-weight:500;font-size:27px;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}.kseg-n.zero{color:var(--text-3)}.kseg-l{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.kseg:hover .kseg-l{color:var(--accent)}.kseg-spacer{flex:1}.kseg.hot .kseg-n{color:var(--good)}.delta{font-family:var(--font-mono);font-size:11.5px}.delta.up{color:var(--good)}.delta.down{color:var(--bad)}.genome{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:14px}.gcell{padding:18px;cursor:pointer;background:var(--bg-2);box-shadow:none;border-radius:var(--r-md);transition:border-color .15s,transform .15s,background .15s;position:relative;overflow:hidden}.gcell:hover{border-color:var(--accent-line);background:var(--surface-2);transform:translateY(-2px)}.gcell .gtop{display:flex;align-items:center;justify-content:space-between}.gcell .gname{font-family:var(--font-display);font-weight:600;font-size:15px}.gcell .gcount{font-family:var(--font-display);font-weight:500;font-size:34px;letter-spacing:-.02em;line-height:1;margin:14px 0 4px;font-variant-numeric:tabular-nums}.gcell .gcount.zero{color:var(--text-3)}.gcell .gdesc{font-size:12.5px;color:var(--text-2)}.gcell .gicon{width:20px;height:20px;color:var(--text-3)}.gcell:hover .gicon{color:var(--accent)}.fl-aurora .gcell{background:var(--surface)}.feed{display:flex;flex-direction:column}.feed-row{display:grid;grid-template-columns:14px 1fr auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.feed-row:last-child{border-bottom:0}.feed-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3)}.feed-dot.ok{background:var(--good)}.feed-dot.acc{background:var(--accent)}.feed-dot.warn{background:var(--warn)}.feed-dot.bad{background:var(--bad)}.feed-txt{font-size:13px}.feed-txt b{font-weight:600}.feed-when{font-family:var(--font-mono);font-size:11px;color:var(--text-3)}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);padding:0 14px 11px;border-bottom:1px solid var(--line);font-weight:500}.tbl td{padding:12px 14px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tbody tr{transition:background .1s}.tbl tbody tr:hover{background:var(--surface-2)}.tbl .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.tbl .name{font-weight:600}.tbl .clickable{cursor:pointer}.tbl-scroll{overflow-x:auto}.harness-tbl td{white-space:nowrap}.harness-tbl th.th-acts{width:1%}.harness-tbl .h-exp-cell{width:1%;padding-right:0}.harness-tbl .h-path{display:block;margin-top:3px;max-width:280px;overflow:hidden;text-overflow:ellipsis;color:var(--text-3);font-family:var(--font-mono);font-size:11.5px}.harness-tbl .h-acts{display:grid;grid-template-columns:168px 78px 92px 92px 84px 38px 32px;gap:8px;align-items:center;justify-content:end}.harness-tbl .h-acts .ha-cell{display:flex;align-items:center;min-width:0}.harness-tbl .h-acts .ha-voice,.harness-tbl .h-acts .ha-fp,.harness-tbl .h-acts .ha-posture,.harness-tbl .h-acts .ha-mode,.harness-tbl .h-acts .ha-btn{justify-content:stretch}.harness-tbl .h-acts .ha-sw,.harness-tbl .h-acts .ha-trash{justify-content:center}.harness-tbl .h-acts .sel{width:100%;min-width:0}.harness-tbl .h-acts .btn{width:100%;min-width:0;justify-content:center}.harness-tbl .h-exp{display:inline-flex;padding:4px;background:none;border:0;cursor:pointer;color:var(--text-3)}.harness-tbl .h-exp:hover{color:var(--text)}.harness-tbl .h-exp .glyph{transition:transform .15s}.harness-tbl .h-exp .glyph.open{transform:rotate(90deg)}.harness-tbl tbody tr.h-detail-row:hover{background:none}.harness-tbl .h-detail{white-space:normal;padding-top:4px;padding-bottom:16px}.harness-tbl .h-detail .mcp-target{margin-bottom:0}.harness-tbl .h-detail .mt-head,.harness-tbl .h-detail .mcp-info p{white-space:normal;overflow-wrap:anywhere}.hbar{width:100%;height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden;min-width:80px}.hbar>i{display:block;height:100%;background:var(--accent)}.hbar.ok>i{background:var(--good)}.hbar.warn>i{background:var(--warn)}.strand{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer}.strand .strand-name{display:flex;align-items:center;gap:12px;min-width:150px;font-weight:600}.strand .strand-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}.strand .hbar{flex:1;margin:0 16px}.strand .strand-val{font-family:var(--font-mono);width:34px;text-align:right;font-size:14px}.lineage-track{position:relative;padding-left:26px}.lineage-track .spine{position:absolute;left:7px;top:6px;bottom:18px;width:2px;background:linear-gradient(var(--accent),var(--line-2))}.lineage-step{position:relative}.lineage-step:not(:last-child){margin-bottom:22px}.lineage-step .node{position:absolute;left:-26px;top:3px;width:14px;height:14px;border-radius:50%;border:2px solid var(--bg);background:var(--surface-3)}.lineage-step .node.on{background:var(--accent);box-shadow:0 0 10px var(--accent)}.lineage-step .lt{font-family:var(--font-display);font-weight:600;font-size:15px}.lineage-step .ld{color:var(--text-2);font-size:13px}.lineage-step .ltag{font-family:var(--font-mono);font-size:11px;color:var(--text-3);margin-top:2px}.lib{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}.lib-list{overflow:hidden}.lib-head{display:flex;align-items:baseline;gap:8px;padding:13px 16px;border-bottom:1px solid var(--line)}.lib-head-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}.lib-head-count{font-family:var(--font-mono);font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.lib-filter{width:100%;box-sizing:border-box;background:var(--surface);color:var(--text);border:0;border-bottom:1px solid var(--line);padding:10px 16px;font-family:var(--font-mono);font-size:12px}.lib-filter:focus{outline:none;border-bottom-color:var(--accent-line)}.lib-filter::placeholder{color:var(--text-3)}.lib-more{padding:12px 16px;font-family:var(--font-mono);font-size:11px;color:var(--text-3);border-bottom:1px solid var(--line)}.lib-rows{max-height:calc(100vh - 280px);overflow:auto}.lib-row{display:block;width:100%;text-align:left;padding:12px 16px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;font:inherit;color:var(--text);transition:background .1s}.lib-row:hover{background:var(--surface-2)}.lib-row.on{background:var(--accent-soft)}.lib-row.on .lr-name{color:var(--accent)}.lib-row .lr-name{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:8px}.lib-row .lr-name .mono{color:var(--text-3);font-size:11px}.lib-row .lr-desc{color:var(--text-2);font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-group{padding:10px 16px 4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);background:var(--surface-2);border-bottom:1px solid var(--line)}.mf-doc{display:flex;flex-direction:column;gap:18px}.mf-vault{border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;background:var(--surface-2)}.mf-vault-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.mf-vault-name{font-family:var(--font-display);font-weight:600;font-size:15px}.mf-vault-path{font-size:11.5px;color:var(--text-3)}.mf-vault-desc{color:var(--text-2);font-size:13px;margin:4px 0 10px}.mf-roles{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.mf-role{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;padding:3px 8px;border-radius:var(--r-sm);background:var(--bg-2);color:var(--text-2)}.mf-role .glyph{width:13px;height:13px}.mf-role-danger{color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent)}.mf-entries{width:100%;border-collapse:collapse;font-size:12.5px}.mf-entries td{padding:7px 0;border-top:1px solid var(--line);vertical-align:top}.mf-entries tr:first-child td{border-top:0}.mf-path{width:42%;color:var(--text)}.mf-struck{text-decoration:line-through;color:var(--text-3)}.mf-load-cell{width:74px;white-space:nowrap}.mf-edesc{color:var(--text-2)}.mf-load{display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;padding:2px 8px;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 36%,transparent)}.mf-load-ok{color:var(--good)}.mf-load-warn{color:var(--warn)}.mf-load-muted{color:var(--text-3)}.mf-empty{color:var(--text-2)}.mf-empty-title{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text);margin-bottom:6px}.mf-empty p{margin:0 0 12px;font-size:13px}.mf-raw{margin-top:16px}.mf-raw-toggle{display:inline-flex;align-items:center;gap:6px;background:transparent;border:0;padding:4px 0;cursor:pointer;font:inherit;font-size:12px;color:var(--text-3)}.mf-raw-toggle:hover{color:var(--text)}.mf-caret{width:13px;height:13px;transition:transform .12s}.mf-caret.on{transform:rotate(90deg)}.mf-raw-pre{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;overflow:auto;font-family:var(--font-mono);font-size:12px;color:var(--text-2);margin-top:8px}.detail-doc{padding:28px 32px}.detail-doc h1{font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:-.02em;margin:0 0 4px}.detail-doc .doc-meta{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 22px}.detail-doc h2{font-family:var(--font-display);font-weight:600;font-size:16px;margin:26px 0 8px}.detail-doc p{color:var(--text);margin:0 0 12px}.detail-doc ul{margin:0 0 14px;padding-left:20px;color:var(--text)}.detail-doc li{margin:4px 0}.detail-doc .wikilink{color:var(--accent);border-bottom:1px dashed var(--accent-line);cursor:pointer}.detail-doc pre{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;overflow:auto;font-family:var(--font-mono);font-size:12.5px;color:var(--text-2)}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.theme-card{padding:20px;display:flex;flex-direction:column;gap:12px;position:relative;border-top:2px solid var(--tc, var(--line));overflow:hidden}.theme-card .tc-glow{position:absolute;top:-40px;right:-40px;width:130px;height:130px;border-radius:50%;background:var(--tc);opacity:.1;filter:blur(20px);pointer-events:none}.theme-card .th-head{display:flex;align-items:center;gap:10px}.theme-card .th-orb{width:14px;height:14px;border-radius:50%;background:var(--tc);box-shadow:0 0 12px var(--tc);flex:none}.theme-card .th-name{font-family:var(--font-display);font-weight:600;font-size:18px;text-transform:capitalize}.theme-card .th-tag{font-style:italic;color:var(--text);font-size:13px;line-height:1.5}.theme-card .th-sigil{font-family:var(--font-mono);font-size:11.5px;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 10px;line-height:1.4}.theme-card .btn{align-self:flex-start;margin-top:auto}.theme-card.current{box-shadow:0 0 0 1px var(--tc) inset,var(--shadow-card)}.check{padding:16px 20px;transition:border-color .15s}.check.bad{border-color:color-mix(in srgb,var(--bad) 34%,var(--line))}.check-head{display:flex;align-items:center;gap:12px;cursor:pointer;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left}.check-head:disabled{cursor:default}.check-head:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}.check-head h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:14.5px}.check-head .chev{margin-left:auto;color:var(--text-3);transition:transform .15s}.check.open .check-head .chev{transform:rotate(90deg)}.check-body{margin:14px 0 0;padding:14px 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.problem{display:grid;grid-template-columns:16px 1fr;gap:10px;font-size:13px;color:var(--text-2);font-family:var(--font-mono)}.problem .x{color:var(--bad)}.graph-search{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 10px;font-family:var(--font-mono);font-size:12px;width:200px;transition:border-color .15s}.graph-search:focus{border-color:var(--accent-line);outline:none}.graph-search::placeholder{color:var(--text-3)}.legend{display:flex;gap:18px;align-items:center;font-family:var(--font-mono);font-size:11.5px;color:var(--text-2)}.legend .sw{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:-1px}.diff-file{overflow:hidden}.diff-head{display:flex;align-items:center;gap:12px;padding:13px 18px;cursor:pointer;border-bottom:1px solid transparent}.diff-file.open .diff-head{border-bottom-color:var(--line)}.diff-head .chk{width:16px;height:16px;accent-color:var(--accent)}.diff-head .fname{font-family:var(--font-mono);font-size:13px;font-weight:500}.diff-body{font-family:var(--font-mono);font-size:12.5px;line-height:1.7;padding:6px 0;overflow:auto}.diff-line{padding:0 18px;white-space:pre}.diff-line.add{background:color-mix(in srgb,var(--good) 9%,transparent);color:var(--good)}.diff-line.del{background:color-mix(in srgb,var(--bad) 9%,transparent);color:var(--bad)}.diff-line.ctx{color:var(--text-3)}.diff-line.hunk{color:var(--accent);background:var(--accent-soft)}.mcp-target{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;margin-bottom:14px}.mcp-target .mt-head{padding:11px 16px;background:var(--bg-2);font-family:var(--font-mono);font-size:11.5px;color:var(--text-2);display:flex;align-items:center;gap:8px}.mcp-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border-top:1px solid var(--line)}.mcp-info{min-width:0;flex:1}.mcp-info .mi-top{display:flex;align-items:center;gap:8px}.mcp-info strong{font-size:13.5px}.mcp-info p{margin:3px 0 0;font-size:12px;color:var(--text-2)}.sw-toggle{width:38px;height:22px;border-radius:999px;background:var(--surface-3);border:1px solid var(--line-2);cursor:pointer;position:relative;transition:background .15s;flex:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;padding:0}.sw-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--text-2);transition:transform .15s,background .15s}.sw-toggle.on{background:var(--accent-soft);border-color:var(--accent-line)}.sw-toggle.on:after{transform:translate(16px);background:var(--accent)}.console{position:fixed;left:var(--rail-w);right:0;bottom:0;z-index:20;background:linear-gradient(180deg,var(--surface),var(--bg-2));border-top:1px solid var(--line-2);box-shadow:0 -16px 40px -20px #000c;display:flex;flex-direction:column;transition:transform .18s cubic-bezier(.22,1,.36,1)}.console-head{display:flex;align-items:center;gap:12px;padding:0 18px;height:42px;cursor:pointer;-webkit-user-select:none;user-select:none;flex:none}.console-head .ttl{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2);display:flex;align-items:center;gap:9px}.console-head .ttl .live{width:7px;height:7px;border-radius:50%;background:var(--text-3)}.console-head .ttl .live.on{background:var(--warn);animation:pulse 1.1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.console-head .count{font-family:var(--font-mono);font-size:11px;color:var(--text-3);border:1px solid var(--line-2);border-radius:999px;padding:0 7px}.console-head .right{margin-left:auto;display:flex;align-items:center;gap:6px}.console-body{flex:1;overflow:auto;padding:8px 18px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.6}.console-empty{color:var(--text-3);font-style:italic;padding:14px 0}.run{margin-bottom:12px}.run-head{display:flex;align-items:center;gap:9px}.run-head .pr{color:var(--accent);font-weight:600}.run-head .act{color:var(--text)}.run-head .st{margin-left:auto;font-size:11px}.run-head .st.running{color:var(--warn)}.run-head .st.done{color:var(--good)}.run-head .st.failed{color:var(--bad)}.run-out{white-space:pre-wrap;margin:5px 0 0;color:var(--text-2);border-left:2px solid var(--line-2);padding-left:12px}.run-out .c-ok{color:var(--good)}.run-out .c-acc{color:var(--accent)}.run-out .c-warn{color:var(--warn)}.run-out .c-dim{color:var(--text-3)}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;cursor:pointer;color:var(--text-2)}.iconbtn:hover{background:var(--surface-3);color:var(--text)}.iconbtn .glyph{width:16px;height:16px}.pop{position:fixed;bottom:72px;left:14px;width:204px;z-index:30;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-md);box-shadow:var(--shadow-pop);padding:8px;max-height:60vh;overflow:auto}.pop-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:13px}.pop-item:hover{background:var(--surface-3)}.pop-item .po{width:11px;height:11px;border-radius:50%;flex:none}.pop-item .pn{text-transform:capitalize;font-weight:500}.pop-item.on{background:var(--accent-soft)}.pop-item.on .pn{color:var(--accent)}@keyframes rise{0%{transform:translateY(9px)}to{transform:none}}.rise{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.empty{text-align:center;color:var(--text-3);padding:60px 20px}.empty .big{font-family:var(--font-display);font-size:18px;color:var(--text-2);margin-bottom:6px}@media (max-width: 1180px){.hero,.lib{grid-template-columns:1fr}}.app.light{--bg: #E7EAEE;--bg-2: #DDE2E7;--surface: #F4F6F8;--surface-2: #EBEEF1;--surface-3: #E0E5EA;--line: #C2CBD3;--line-2: #A7B2BC;--line-3: #8593A0;--text: #11161B;--text-2: #3C4750;--text-3: #5A6772;--good: #1F9657;--warn: #B07914;--bad: #D23A37;--shadow-card: 0 1px 2px rgba(31,42,33,.04), 0 14px 36px -28px rgba(31,42,33,.4);--shadow-pop: 0 18px 50px -16px rgba(31,42,33,.28);--shadow-modal: 0 24px 60px -18px rgba(31,42,33,.3)}.app.light .atmos{background:radial-gradient(900px 520px at 80% -10%,var(--accent-soft),transparent 62%),radial-gradient(700px 600px at -6% 102%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 60%);opacity:.7}.app.light .atmos:after{opacity:.015}.app.light .rail{background:linear-gradient(180deg,#fbfdfa,#f3f6f2)}.app.light .topbar{background:color-mix(in srgb,var(--bg) 82%,transparent)}.app.light .card{background:linear-gradient(180deg,#FBFDFC,var(--surface-2))}.app.light .sprout{filter:none}.app.light .console{background:linear-gradient(180deg,var(--surface),var(--bg-2))}.app.light .kbd{color:var(--text-3)}.app.light .diff-line.add{background:color-mix(in srgb,var(--good) 13%,transparent)}.app.light .diff-line.del{background:color-mix(in srgb,var(--bad) 13%,transparent)}.app.light .sel option{background:#fbfdfc}.voice-readout{display:flex;align-items:center;gap:10px;margin:4px 0 16px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 13px;max-width:64ch}.voice-readout .vr-cur{color:var(--accent);font-weight:600;flex:none}.voice-readout .vr-txt{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.voice-tag{font-style:italic;color:var(--text-2);font-size:13px;margin:0}.toast{position:fixed;right:18px;bottom:56px;z-index:40;max-width:380px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-md);box-shadow:var(--shadow-pop);padding:14px 16px;font-size:13px}.toast.err{border-color:color-mix(in srgb,var(--bad) 45%,var(--line-2))}.toast.info{border-color:color-mix(in srgb,var(--accent) 45%,var(--line-2))}.run-cancel{margin-left:8px}.detail-doc .markdown h1,.detail-doc .markdown h2,.detail-doc .markdown h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}.detail-doc .markdown h1{font-size:20px;margin:22px 0 8px}.detail-doc .markdown h2{font-size:16px;margin:22px 0 8px}.detail-doc .markdown h3{font-size:14px;margin:18px 0 6px}.detail-doc .markdown p{color:var(--text);margin:0 0 12px}.detail-doc .markdown ul,.detail-doc .markdown ol{margin:0 0 14px;padding-left:20px}.detail-doc .markdown li{margin:4px 0}.detail-doc .markdown a{color:var(--accent);border-bottom:1px dashed var(--accent-line)}.detail-doc .markdown pre{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;overflow:auto;font-family:var(--font-mono);font-size:12.5px;color:var(--text-2)}.detail-doc .markdown pre code{background:none;border:0;padding:0}.detail-doc .markdown blockquote{margin:0 0 12px;padding:2px 14px;border-left:2px solid var(--line-2);color:var(--text-2)}.detail-doc .markdown table{border-collapse:collapse;margin:0 0 14px}.detail-doc .markdown th,.detail-doc .markdown td{border:1px solid var(--line);padding:6px 10px;font-size:13px}.loading{color:var(--text-3);font-family:var(--font-mono);font-size:12.5px;padding:40px 0}a.rail-item{color:var(--text-2)}a.rail-item:hover,a.rail-item.active{color:var(--text)}.mb-14{margin-bottom:14px}.mb-16{margin-bottom:16px}.mb-18{margin-bottom:18px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.narrow{max-width:820px}.narrow-lg{max-width:860px}.docs-group{padding:6px 0 4px}.docs-group+.docs-group{border-top:1px solid var(--line)}.docs-group-head{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);padding:10px 16px 6px}.docs-toc{border:1px solid var(--line-2);background:var(--surface);border-radius:10px;padding:12px 16px;margin:6px 0 22px}.docs-toc-head{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-bottom:6px}.docs-toc ul{list-style:none;margin:0;padding:0}.docs-toc li{padding:2px 0}.docs-toc li.lvl-3{padding-left:14px}.docs-toc a{color:var(--text-2);text-decoration:none;font-size:13px}.docs-toc a:hover{color:var(--accent)}.markdown .docs-here{background:var(--accent-soft);padding:6px 10px;border-radius:8px;border:1px solid var(--accent-line)}.cli-card .cli-syn{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:10px 0;font-family:var(--font-mono);font-size:12.5px;white-space:pre-wrap;color:var(--text)}.cli-block{margin-top:10px}.cli-block-head{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-bottom:6px}.cli-arg{padding:6px 0;border-bottom:1px dashed var(--line)}.cli-arg:last-child{border-bottom:0}.cli-arg-name{font-family:var(--font-mono);color:var(--text);font-weight:600}.cli-arg-meta{color:var(--text-3);font-size:11.5px}.cli-arg-help{color:var(--text-2);font-size:13px;margin-top:2px}.spec-row:hover{border-color:var(--accent-line)}.glossary-table{width:100%;border-collapse:collapse;font-size:13px}.glossary-table th,.glossary-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}.glossary-table th{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:500}.glossary-table td.dim{color:var(--text-2)}.law-toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 14px}.law-cats{display:flex;flex-wrap:wrap;gap:8px}.law-cat{display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border:1px solid var(--line);background:var(--surface);border-radius:999px;cursor:pointer;color:var(--text-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;transition:border-color .14s,color .14s,background .14s}.law-cat:hover{color:var(--text);border-color:var(--line-2)}.law-cat .cdot{width:8px;height:8px;border-radius:50%;background:var(--cc, var(--text-3))}.law-cat .cn{color:var(--text-3)}.law-cat.on{color:var(--text);border-color:var(--accent-line);background:var(--accent-soft)}.law-readout{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-3);letter-spacing:.04em}.law-readout b{color:var(--text);font-weight:500}.law-wrap{overflow:hidden;padding:0}.law-rowhead{display:grid;grid-template-columns:64px 1fr 1.25fr 138px 42px;gap:16px;padding:11px 18px;border-bottom:1px solid var(--line);background:var(--bg-2)}.law-rowhead span{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.law-rowhead .toggle-col,.law-row .toggle-col{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);justify-content:center;padding:13px 0}.law-row{display:grid;grid-template-columns:64px 1fr 1.25fr 138px 42px;gap:16px;align-items:center;width:100%;text-align:left;padding:13px 18px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;font:inherit;color:var(--text);transition:background .1s}.law-row.has-toggle{padding:0 18px}.law-disclosure{grid-column:1 / 5;display:grid;grid-template-columns:64px 1fr 1.25fr 138px;gap:16px;align-items:center;min-width:0;padding:13px 0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}.law-disclosure:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}.law-row.has-toggle .toggle-col{display:flex;align-items:center;padding:0}.law-row:last-of-type{border-bottom:0}.law-row:hover{background:var(--surface-2)}.law-row.on{background:var(--accent-soft);border-bottom-color:transparent}.law-no{font-family:var(--font-mono);font-size:13px;color:var(--cc, var(--accent));font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:8px}.law-no .x{color:var(--text-3);transition:transform .14s;font-size:11px}.law-row.on .law-no .x{transform:rotate(90deg);color:var(--accent)}.law-name{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text);letter-spacing:-.01em}.law-princ{font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);line-height:1.45}.law-class{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);display:inline-flex;align-items:center;gap:7px}.law-class .cdot{width:8px;height:8px;border-radius:50%;background:var(--cc, var(--text-3))}.law-expand{padding:2px 18px 20px 82px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--accent) 4%,transparent)}.law-expand p{color:var(--text-2);font-size:13.5px;line-height:1.66;margin:6px 0 0;max-width:75ch}.law-expand p code{font-family:var(--font-mono);font-size:12.5px;background:var(--surface-2);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}.law-expand em{font-style:italic;color:var(--text)}.law-srcline{font-family:var(--font-mono);font-size:10.5px;color:var(--text-3);letter-spacing:.04em;margin-top:13px}@media (max-width: 1180px){.law-row,.law-rowhead{grid-template-columns:52px 1fr 116px 42px}.law-disclosure{grid-column:1 / 4;grid-template-columns:52px 1fr 116px}.law-princ{display:none}.law-expand{padding-left:18px}}.tier-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:26px 0 10px}.tier-h{font-size:15px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg);margin:0}.ont-row .law-no{justify-content:flex-start}.ont-row .law-princ{color:var(--dim);font-style:italic}.pack-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:13px 18px;border-bottom:1px solid var(--line)}.pack-name{display:inline-flex;align-items:center;gap:7px;font-weight:600}.pack-name .cdot{width:8px;height:8px;border-radius:50%;background:var(--cc, var(--dim))}.pack-desc{color:var(--dim);font-size:13px;flex:1}.pack-state{color:var(--dim);font-size:12px;letter-spacing:.04em}.pack-wrap.pack-off{opacity:.62}.pack-wrap.pack-off .pack-state{color:var(--warn)}.pack-enable{font-family:var(--mono);font-size:12px;color:var(--dim);padding:9px 18px;border-bottom:1px solid var(--line);background:var(--bg-2, transparent);overflow-x:auto;white-space:nowrap}.law-row.law-off .law-name{text-decoration:line-through;text-decoration-thickness:1px}.pack-toggles{display:grid;gap:10px;margin-bottom:14px}.pack-toggle{display:grid;grid-template-columns:38px 1fr;gap:12px;align-items:start;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer}.pack-toggle:hover{border-color:var(--accent-line)}.pack-toggle .sw-toggle{cursor:pointer}.pack-toggle-body{display:grid;gap:3px;min-width:0}.pack-toggle-name{display:flex;align-items:baseline;gap:9px;font-weight:600}.pack-toggle-n{font-size:11px;font-weight:400;color:var(--dim);letter-spacing:.03em;text-transform:uppercase}.pack-warn{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13px;color:var(--warn);margin:0 0 14px;padding:10px 13px;border:1px solid var(--line-2);border-radius:10px;background:color-mix(in srgb,var(--warn) 8%,transparent)}.pack-apply{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.law-row.law-off .law-princ,.law-row.law-off .law-class{opacity:.55}.skill-rowhead,.skill-row{display:grid;grid-template-columns:1.1fr 1.7fr 150px;gap:16px;align-items:center;padding:13px 18px}.skill-rowhead{padding:11px 18px;border-bottom:1px solid var(--line);background:var(--bg-2)}.skill-rowhead span{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.skill-row{width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;font:inherit;color:var(--text);transition:background .1s}.skill-row:last-of-type{border-bottom:0}.skill-row:hover{background:var(--surface-2)}.skill-row.on{background:var(--accent-soft);border-bottom-color:transparent}.skill-name{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text);letter-spacing:-.01em}.skill-name .x{color:var(--text-3);transition:transform .14s;font-size:11px;font-family:var(--font-mono)}.skill-row.on .skill-name .x{transform:rotate(90deg);color:var(--accent)}.skill-desc{font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);line-height:1.45;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.skill-expand{padding-left:18px}.skill-doc{max-width:75ch}.skill-doc .markdown{color:var(--text-2);font-size:13.5px;line-height:1.62}.skill-doc .markdown>:first-child{margin-top:4px}.skill-doc .markdown h1,.skill-doc .markdown h2,.skill-doc .markdown h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;color:var(--text)}.skill-doc .markdown h1{font-size:17px;margin:18px 0 7px}.skill-doc .markdown h2{font-size:14.5px;margin:17px 0 6px}.skill-doc .markdown h3{font-size:13px;margin:14px 0 5px}.skill-doc .markdown p{margin:0 0 11px}.skill-doc .markdown ul,.skill-doc .markdown ol{margin:0 0 12px;padding-left:20px}.skill-doc .markdown li{margin:3px 0}.skill-doc .markdown li>ul,.skill-doc .markdown li>ol{margin:3px 0 0}.skill-doc .markdown a{color:var(--accent);border-bottom:1px dashed var(--accent-line)}.skill-doc .markdown strong{color:var(--text);font-weight:600}.skill-doc .markdown code{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}.skill-doc .markdown pre{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;overflow:auto;margin:0 0 12px}.skill-doc .markdown pre code{background:none;border:0;padding:0;font-size:12px;color:var(--text-2)}.skill-doc .markdown blockquote{margin:0 0 12px;padding:2px 14px;border-left:2px solid var(--line-2);color:var(--text-2)}.skill-doc .markdown table{border-collapse:collapse;margin:0 0 12px;font-size:12.5px;display:block;overflow-x:auto}.skill-doc .markdown th,.skill-doc .markdown td{border:1px solid var(--line);padding:6px 10px;text-align:left}.skill-doc .markdown th{background:var(--bg-2);color:var(--text);font-weight:600}.skill-doc .markdown hr{border:0;border-top:1px solid var(--line);margin:16px 0}@media (max-width: 1180px){.skill-row,.skill-rowhead{grid-template-columns:1fr 130px}.skill-desc{display:none}}.fl-cultivar{--bg: #0B0E12;--bg-2: #0F1318;--surface: #14181D;--surface-2: #1B2026;--surface-3: #232A31;--line: #2C333B;--line-2: #3A434D;--line-3: #4C5762;--text: #EAEEF2;--text-2: #9AA6B2;--text-3: #687481;--good: #4ED888;--warn: #E8B53D;--bad: #FF6B66;--r-xs: 4px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--font-display: "Space Grotesk", system-ui, sans-serif;--font-ui: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.03) inset, 0 16px 40px -28px rgba(0,0,0,.9)}.fl-cultivar.light{--bg: #EEF2F1;--bg-2: #E6ECEB;--surface: #FBFDFC;--surface-2: #F3F6F6;--surface-3: #E9EFEE;--line: #DDE5E4;--line-2: #C7D2D1;--line-3: #9DACAC;--text: #0E1620;--text-2: #46535F;--text-3: #69788A;--good: #14855A;--warn: #9E6410;--bad: #CC3A44}.fl-cultivar h1.h,.fl-cultivar h2,.fl-cultivar h3{font-family:var(--font-display);letter-spacing:-.012em}.fl-cultivar .card-head h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}.fl-cultivar .card{background:var(--surface);box-shadow:inset 0 1px 0 var(--accent-soft),var(--shadow-card)}.fl-cultivar .btn:not(.ghost):not(.soft){box-shadow:inset 0 1px #ffffff24,0 6px 16px -10px color-mix(in srgb,var(--accent) 60%,transparent)}.fl-cultivar .badge{border-radius:var(--r-sm)}.fl-cultivar .atmos{background:radial-gradient(880px 520px at 82% -10%,var(--accent-soft),transparent 62%),radial-gradient(680px 560px at -8% 104%,color-mix(in srgb,var(--accent) 4%,transparent),transparent 60%);opacity:.85}.fl-cultivar .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(color-mix(in srgb,var(--text) 5%,transparent) 1px,transparent 1px);background-size:26px 26px;opacity:.5}.fl-greenhouse{--bg: #15110B;--bg-2: #100D08;--surface: #1A2116;--surface-2: #202A1A;--surface-3: #283322;--line: #33402B;--line-2: #445437;--line-3: #5E7350;--text: #F2EFE4;--text-2: #B2BBA4;--text-3: #7C8A70;--good: #74CE86;--warn: #E8B53D;--bad: #FF6F69;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 20px;--r-xl: 24px;--font-display: "Poppins", system-ui, sans-serif;--font-ui: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.04) inset, 0 24px 54px -30px rgba(0,0,0,.82)}.fl-greenhouse.light{--bg: #F4F0E6;--bg-2: #EDE8DA;--surface: #FBFDFC;--surface-2: #FAF7EE;--surface-3: #F0ECDF;--line: #E5DECC;--line-2: #D2C9B2;--line-3: #A79C82;--text: #22271A;--text-2: #575C45;--text-3: #82896E;--good: #1C8450;--warn: #9C6A10;--bad: #CC4A45}.fl-greenhouse h1.h,.fl-greenhouse h2,.fl-greenhouse h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.022em}.fl-greenhouse .card-head h3{font-family:var(--font-display);font-weight:600}.fl-greenhouse .card{background:linear-gradient(176deg,color-mix(in srgb,var(--accent) 7%,var(--surface)) 0%,var(--surface) 46%,color-mix(in srgb,#283322 50%,var(--surface)) 100%);border-radius:var(--r-lg)}.fl-greenhouse .btn:not(.ghost):not(.soft){border-radius:999px;background-image:linear-gradient(rgba(255,255,255,.14),transparent);box-shadow:inset 0 1px #ffffff29,0 6px 18px -8px color-mix(in srgb,var(--accent) 60%,transparent)}.fl-greenhouse .badge{border-radius:999px}.fl-greenhouse .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");opacity:.035;mix-blend-mode:overlay}.fl-operator{--bg: #0A0C0E;--bg-2: #0A0C0E;--surface: #11151A;--surface-2: #171C22;--surface-3: #1E242C;--line: #262D36;--line-2: #333C46;--line-3: #48535F;--text: #D6DEE6;--text-2: #92A0AE;--text-3: #657180;--good: #4FB37E;--warn: #E8A23B;--bad: #E8625A;--r-xs: 0px;--r-sm: 0px;--r-md: 0px;--r-lg: 0px;--r-xl: 0px;--font-display: "JetBrains Mono", ui-monospace, monospace;--font-ui: "JetBrains Mono", ui-monospace, monospace;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: none}.fl-operator.light{--bg: #ECEEF1;--bg-2: #ECEEF1;--surface: #FBFDFC;--surface-2: #F4F6F8;--surface-3: #E9ECF0;--line: #DCE0E5;--line-2: #C4CAD1;--line-3: #97A0AA;--text: #141A21;--text-2: #47525E;--text-3: #6B7785;--good: #1A7A4D;--warn: #8F5E10;--bad: #C2403F}.fl-operator{--shadow-card: none}.fl-operator h1.h,.fl-operator h2,.fl-operator h3{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.fl-operator .card{background:var(--surface);box-shadow:none;border:1px solid var(--line)}.fl-operator .btn{border-radius:0;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em}.fl-operator .btn:not(.ghost):not(.soft){box-shadow:inset 0 1px color-mix(in srgb,var(--accent-ink) 22%,transparent)}.fl-operator .badge{border-radius:0;text-transform:uppercase;letter-spacing:.06em}.fl-operator .atmos{background:none}.fl-operator .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(0deg,color-mix(in srgb,var(--accent) 5%,transparent) 0 1px,transparent 1px 3px);opacity:1;mix-blend-mode:normal}.fl-heirloom{--bg: #13111C;--bg-2: #13111C;--surface: #181621;--surface-2: #26222F;--surface-3: #2D2A38;--line: #33313B;--line-2: #3A3744;--line-3: #45414F;--text: #F4F8F6;--text-2: #D4D0DC;--text-3: #A8A3B0;--good: #8AB89A;--warn: #D49A5A;--bad: #D06676;--r-xs: 4px;--r-sm: 8px;--r-md: 14px;--r-lg: 16px;--r-xl: 16px;--font-display: "IBM Plex Serif", Georgia, "Times New Roman", serif;--font-ui: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.02) inset, 0 18px 44px -30px rgba(0,0,0,.85)}.fl-heirloom.light{--bg: #F4F1F7;--bg-2: #ECE8F1;--surface: #FBFDFC;--surface-2: #F7F4FA;--surface-3: #EFEAF4;--line: #E2DCEC;--line-2: #CFC6DC;--line-3: #A99EBC;--text: #1E1826;--text-2: #574E63;--text-3: #837A90;--good: #3C8B5E;--warn: #B07914;--bad: #C24452}.fl-heirloom h1.h,.fl-heirloom h2,.fl-heirloom h3{font-family:var(--font-display);letter-spacing:-.01em}.fl-heirloom .card-head h3{font-family:var(--font-display);font-weight:600}.fl-heirloom .card{background:linear-gradient(180deg,var(--surface) 0%,var(--surface) 55%,color-mix(in srgb,var(--surface-2) 14%,var(--surface)) 82%,color-mix(in srgb,var(--line-2) 22%,var(--surface)) 100%)}.fl-heirloom .btn:not(.ghost):not(.soft){background-image:linear-gradient(rgba(255,255,255,.12),transparent);box-shadow:0 1px 2px #00000040,inset 0 6px 0 -5px #ffffff1f,0 4px 12px -5px color-mix(in srgb,var(--accent) 55%,transparent)}.fl-heirloom .badge{border-radius:var(--r-sm)}.fl-heirloom .atmos{background:radial-gradient(820px 480px at 84% -10%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 62%),radial-gradient(640px 560px at -8% 104%,color-mix(in srgb,var(--text) 4%,transparent),transparent 60%)}.fl-heirloom .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(90deg,color-mix(in srgb,var(--text) 3%,transparent) 0 1px,transparent 1px 7px);opacity:.5}.fl-matrix{--bg: #04070A;--bg-2: #04070A;--surface: #0B1116;--surface-2: #121A21;--surface-3: #18242C;--line: #16242B;--line-2: #22343C;--line-3: #33514C;--text: #D2EBD9;--text-2: #86A492;--text-3: #62806C;--good: #2DD68A;--warn: #D4A024;--bad: #F2495B;--r-xs: 2px;--r-sm: 2px;--r-md: 2px;--r-lg: 2px;--r-xl: 2px;--font-display: "Space Mono", ui-monospace, monospace;--font-ui: "Space Mono", ui-monospace, monospace;--font-mono: "Space Mono", ui-monospace, monospace;--shadow-card: none}.fl-matrix.light{--bg: #E8F1EB;--bg-2: #E8F1EB;--surface: #FBFDFC;--surface-2: #E9F4ED;--surface-3: #DCEAE0;--line: #D0E2D6;--line-2: #B4CDBC;--line-3: #86A793;--text: #0A1410;--text-2: #41564B;--text-3: #647A6D;--good: #117A4E;--warn: #9A6410;--bad: #C2403F}.fl-matrix .card{background:var(--surface);box-shadow:none}.fl-matrix h1.h,.fl-matrix h2,.fl-matrix h3{letter-spacing:.03em}.fl-matrix .btn{border-radius:2px;font-family:var(--font-mono);letter-spacing:.05em}.fl-matrix .badge{border-radius:2px;text-transform:uppercase;letter-spacing:.04em}.fl-matrix .btn:not(.ghost):not(.soft):not(.btn-grid){box-shadow:0 1px 2px #0006,inset 0 1px color-mix(in srgb,var(--accent) 22%,transparent),0 2px 10px -3px color-mix(in srgb,var(--accent) 34%,transparent)}.fl-matrix .atmos{background:none}.fl-matrix .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(0deg,color-mix(in srgb,var(--text) 5%,transparent) 0 1px,transparent 1px 26px),repeating-linear-gradient(90deg,color-mix(in srgb,var(--text) 5%,transparent) 0 1px,transparent 1px 26px)}.fl-aurora{--bg: #04130E;--bg-2: #06180F;--surface: rgba(20, 74, 60, .5);--surface-2: rgba(16, 62, 50, .3);--surface-3: rgba(90, 180, 150, .18);--line: rgba(120, 210, 180, .16);--line-2: rgba(130, 220, 190, .26);--line-3: rgba(150, 230, 200, .4);--text: #E8F6EF;--text-2: #A2CFC0;--text-3: #6E9A8C;--good: #34D9A6;--warn: #FBBF24;--bad: #FB6F84;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 18px;--r-xl: 24px;--font-display: "Space Grotesk", system-ui, sans-serif;--font-ui: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 10px 36px -8px rgba(0, 16, 10, .55), inset 0 1px 0 rgba(255, 255, 255, .22), inset 0 -1px 0 rgba(255, 255, 255, .05)}.fl-aurora.light{--bg: #E8F4EE;--bg-2: #DCEDE3;--surface: rgba(255, 255, 255, .7);--surface-2: rgba(255, 255, 255, .52);--surface-3: rgba(255, 255, 255, .88);--line: rgba(16, 58, 44, .12);--line-2: rgba(16, 58, 44, .18);--line-3: rgba(16, 58, 44, .3);--text: #0E241C;--text-2: #3E5A4E;--text-3: #5E7A6E;--good: #0A8068;--warn: #B45309;--bad: #BE123C}.fl-aurora .card,.fl-aurora .seg,.fl-aurora .spotlight,.fl-aurora .rail{backdrop-filter:blur(22px) saturate(165%)!important;-webkit-backdrop-filter:blur(22px) saturate(165%)!important}.fl-aurora .console{background:linear-gradient(180deg,#081e17e0,#05160ff2);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%)}.fl-aurora .rail{background:linear-gradient(180deg,#ffffff12,#ffffff05)}.fl-aurora h1.h,.fl-aurora h2,.fl-aurora h3{font-family:var(--font-display);letter-spacing:-.015em}.fl-aurora .btn:not(.ghost):not(.soft){background-image:linear-gradient(rgba(255,255,255,.16),transparent);box-shadow:inset 0 1px #ffffff4d,0 6px 20px -6px color-mix(in srgb,var(--accent) 60%,transparent)}.fl-aurora .badge{border-radius:999px}.fl-aurora .atmos{opacity:1;background:radial-gradient(720px 480px at 12% -6%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 60%),radial-gradient(680px 520px at 90% 6%,color-mix(in srgb,#2FD39A 20%,transparent),transparent 62%),radial-gradient(820px 660px at 50% 112%,color-mix(in srgb,#E879C9 15%,transparent),transparent 60%)}.fl-aurora.light .atmos{background:radial-gradient(720px 480px at 12% -6%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 62%),radial-gradient(680px 520px at 90% 6%,color-mix(in srgb,#2FD39A 12%,transparent),transparent 64%),radial-gradient(820px 660px at 50% 112%,color-mix(in srgb,#E879C9 10%,transparent),transparent 62%)}.fl-perspective{--bg: #0E1117;--bg-2: #0C0F14;--surface: #161B22;--surface-2: #1E2530;--surface-3: #262F3B;--line: #232C36;--line-2: #34404D;--line-3: #475463;--text: #ECEFF4;--text-2: #AEB8C4;--text-3: #7E8A98;--good: #4ED888;--warn: #E8B53D;--bad: #FF6B63;--r-xs: 5px;--r-sm: 7px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--font-display: "Oswald", "Hanken Grotesk", system-ui, sans-serif;--font-ui: "Poppins", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.04) inset, 0 2px 4px -1px rgba(0,0,0,.5), 0 16px 30px -16px rgba(0,0,0,.85)}.fl-perspective.light{--bg: #EEF1F5;--bg-2: #E5E9EF;--surface: #FBFDFC;--surface-2: #F4F6F9;--surface-3: #E9EDF2;--line: #DEE3EA;--line-2: #C5CDD7;--line-3: #94A0AD;--text: #11161D;--text-2: #4A5563;--text-3: #717E8D;--good: #1F8A52;--warn: #9A6A12;--bad: #C2403C}.fl-perspective h1.h,.fl-perspective h2,.fl-perspective h3,.fl-perspective .card-head h3,.fl-perspective .metric{font-family:var(--font-display);letter-spacing:-.005em}.fl-perspective h1.h,.fl-perspective h2.h,.fl-perspective .card-head h3{font-weight:600}.fl-perspective .eyebrow,.fl-perspective .tick,.fl-perspective .rail-group{font-family:var(--font-display);letter-spacing:.12em}.fl-perspective .card{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface) 60%,var(--bg-2) 100%);border-top-color:var(--line-2);transition:transform .16s ease,box-shadow .16s ease}.fl-perspective .card:hover{transform:translateY(-3px);box-shadow:0 1px #ffffff0d inset,0 3px 6px -1px #00000080,0 26px 46px -18px #000000e6,0 22px 50px -28px var(--accent-soft)}.fl-perspective .btn:not(.ghost):not(.soft){box-shadow:inset 0 1px #ffffff57,0 1px 1px #00000073,0 10px 22px -10px color-mix(in srgb,var(--accent) 62%,transparent)}.fl-perspective .btn:not(.ghost):not(.soft):active{box-shadow:inset 0 2px 4px #0006}.fl-perspective .badge{border-radius:999px}.fl-perspective .atmos{background:radial-gradient(820px 520px at 88% -12%,var(--accent-soft),transparent 62%)}.fl-perspective .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(180deg,color-mix(in srgb,var(--text) 4%,transparent) 0 1px,transparent 1px 7px);opacity:.6;mix-blend-mode:normal}.fl-sequencer{--bg: #070B14;--bg-2: #0B111E;--surface: #0E1424;--surface-2: #16203A;--surface-3: #22304E;--line: #1E2A45;--line-2: #2C3B5C;--line-3: #3E4E74;--text: #F2F5FB;--text-2: #9BA6BE;--text-3: #717C92;--good: #2BC48A;--warn: #F5A524;--bad: #F4516B;--r-xs: 3px;--r-sm: 5px;--r-md: 6px;--r-lg: 8px;--r-xl: 10px;--font-display: "Inter", system-ui, sans-serif;--font-ui: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--shadow-card: 0 1px 2px 0 rgba(15, 23, 41, .05), 0 1px 1px 0 rgba(15, 23, 41, .04)}.fl-sequencer.light{--bg: #F6F8FB;--bg-2: #EEF2F8;--surface: #FBFDFC;--surface-2: #F6F8FC;--surface-3: #EEF2F8;--line: #E3E8F0;--line-2: #CDD5E2;--line-3: #9BA6BC;--text: #0F1729;--text-2: #475067;--text-3: #6B7488;--good: #077A55;--warn: #B45309;--bad: #C7003D}.fl-sequencer .metric,.fl-sequencer .kseg-n,.fl-sequencer .gcell .gcount,.fl-sequencer .tbl .num,.fl-sequencer .delta{font-variant-numeric:tabular-nums lining-nums slashed-zero;font-feature-settings:"tnum" 1,"lnum" 1,"zero" 1;letter-spacing:-.01em}.fl-sequencer h1.h,.fl-sequencer h2,.fl-sequencer h3{letter-spacing:-.014em;font-weight:650}.fl-sequencer .card-head h3{font-weight:650}.fl-sequencer .card{background:var(--surface);position:relative}.fl-sequencer .card:before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--accent-line);border-radius:var(--r-lg) var(--r-lg) 0 0}.fl-sequencer .btn:not(.ghost):not(.soft){box-shadow:inset 0 1px #ffffff29,0 1px 1px #0f17291a;font-weight:600}.fl-sequencer .badge{border-radius:var(--r-xs);font-family:var(--font-mono)}.fl-sequencer .atmos{background:none}.fl-sequencer .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--text) 1px,transparent 1px),linear-gradient(90deg,var(--text) 1px,transparent 1px);background-size:26px 26px;opacity:.028}.fl-cobalt{--bg: #02060D;--bg-2: #02060D;--surface: #07101C;--surface-2: #0B1B2C;--surface-3: #0F2436;--line: #143046;--line-2: #1B4763;--line-3: #2E83AE;--text: #CFE6F5;--text-2: #86BBD8;--text-3: #5683A0;--good: #14C08A;--warn: #FBBF24;--bad: #FF5C72;--r-xs: 2px;--r-sm: 2px;--r-md: 2px;--r-lg: 2px;--r-xl: 2px;--font-display: "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;--font-ui: "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;--font-mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;--shadow-card: none}.fl-cobalt.light{--bg: #E9F1F7;--bg-2: #E9F1F7;--surface: #FBFDFC;--surface-2: #E5EFF6;--surface-3: #D7E6F1;--line: #BDD6E6;--line-2: #9FC2D8;--line-3: #6398BB;--text: #082230;--text-2: #335A72;--text-3: #5A7E94;--good: #0A7A57;--warn: #B45309;--bad: #C70036}.fl-cobalt .card{background:var(--surface);box-shadow:none}.fl-cobalt h1.h,.fl-cobalt h2,.fl-cobalt h3{font-family:var(--font-display);letter-spacing:.02em}.fl-cobalt .btn{border-radius:2px;font-family:var(--font-mono);letter-spacing:.05em}.fl-cobalt .badge{border-radius:2px}.fl-cobalt .btn:not(.ghost):not(.soft){box-shadow:inset 0 1px color-mix(in srgb,var(--accent) 22%,transparent),0 2px 10px -4px color-mix(in srgb,var(--accent) 55%,transparent)}.fl-cobalt .atmos{background:none}.fl-cobalt .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:repeating-linear-gradient(0deg,color-mix(in srgb,var(--text) 6%,transparent) 0 1px,transparent 1px 3px);opacity:1;mix-blend-mode:normal}.fl-cosmic{--bg: #07041A;--bg-2: #07041A;--surface: #120A30;--surface-2: #1A1042;--surface-3: #241656;--line: #2E1E63;--line-2: #3D2A7A;--line-3: #553D9B;--text: #ECE6FF;--text-2: #B9A8E6;--text-3: #8A77BE;--good: #56D9A6;--warn: #E6B23D;--bad: #FF5C8A;--r-xs: 2px;--r-sm: 3px;--r-md: 4px;--r-lg: 6px;--r-xl: 8px;--font-display: "Audiowide", system-ui, sans-serif;--font-ui: "Space Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(182,107,255,.05) inset, 0 20px 50px -34px rgba(0,0,0,.95)}.fl-cosmic.light{--bg: #F4F0FF;--bg-2: #ECE6FB;--surface: #FBFDFC;--surface-2: #F6F1FF;--surface-3: #EDE5FB;--line: #E2D7F5;--line-2: #CBBAEA;--line-3: #A48FD0;--text: #1C1233;--text-2: #574A78;--text-3: #7A6E98;--good: #1F9466;--warn: #9A6A12;--bad: #C53060}.fl-cosmic .brand-name,.fl-cosmic h1.h{font-family:var(--font-display);letter-spacing:.01em}.fl-cosmic h2,.fl-cosmic h3,.fl-cosmic .card-head h3{font-family:var(--font-ui);font-weight:600;letter-spacing:-.005em}.fl-cosmic .card{clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);background:linear-gradient(160deg,var(--surface-2) 0%,var(--surface) 55%);border:1px solid var(--line-2);box-shadow:0 0 0 1px #b66bff0a inset,var(--shadow-card)}.fl-cosmic .btn:not(.ghost):not(.soft){clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);box-shadow:inset 0 1px #ffffff24,0 3px 14px -6px color-mix(in srgb,var(--accent) 60%,transparent)}.fl-cosmic .badge{border-radius:var(--r-xs);letter-spacing:.03em}.fl-cosmic .atmos{background:radial-gradient(820px 480px at 82% -10%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 62%),radial-gradient(640px 560px at -8% 104%,color-mix(in srgb,#FF5FD0 9%,transparent),transparent 64%)}.fl-cosmic .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(color-mix(in srgb,var(--text) 4%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--text) 4%,transparent) 1px,transparent 1px);background-size:46px 46px,46px 46px;-webkit-mask-image:radial-gradient(120% 120% at 50% 0%,#000 35%,transparent 78%);mask-image:radial-gradient(120% 120% at 50% 0%,#000 35%,transparent 78%)}.fl-neon{--bg: #050505;--bg-2: #0A0A0A;--surface: #0E0E0E;--surface-2: #141414;--surface-3: #1A1A1A;--line: #1C1C1C;--line-2: #262626;--line-3: #383838;--text: #EDEDED;--text-2: #909090;--text-3: #6E6E6E;--good: #00CC88;--warn: #FF8833;--bad: #FF3355;--r-xs: 4px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--font-display: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;--font-ui: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;--font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.03) inset, 0 18px 50px -32px rgba(0,0,0,.95)}.fl-neon.light{--bg: #F5F5F6;--bg-2: #EFEFF1;--surface: #FBFDFC;--surface-2: #F4F4F6;--surface-3: #ECECEF;--line: #E2E2E6;--line-2: #D2D2D8;--line-3: #A8A8B0;--text: #161618;--text-2: #56565C;--text-3: #76767E;--good: #00A371;--warn: #C2410C;--bad: #D7263D}.fl-neon h1.h,.fl-neon h2,.fl-neon h3{font-family:var(--font-display);letter-spacing:-.02em}.fl-neon .card{background:color-mix(in srgb,var(--surface) 72%,transparent);-webkit-backdrop-filter:blur(13px);backdrop-filter:blur(13px);border-color:color-mix(in srgb,var(--accent) 16%,var(--line-2))}.fl-neon .btn:not(.ghost):not(.soft){box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 0 14px -4px color-mix(in srgb,var(--accent) 60%,transparent)}.fl-neon .btn:not(.ghost):not(.soft):hover{box-shadow:0 0 0 1px var(--accent),0 0 22px -2px color-mix(in srgb,var(--accent) 78%,transparent)}.fl-neon .btn:not(.ghost):not(.soft):active{filter:brightness(.94);box-shadow:0 0 12px -4px color-mix(in srgb,var(--accent) 55%,transparent)}.fl-neon :focus-visible{outline:none;box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--accent),0 0 16px -2px color-mix(in srgb,var(--accent) 70%,transparent)}.fl-neon .badge{border-radius:var(--r-xs);letter-spacing:.02em}.fl-neon .atmos{background:radial-gradient(680px 460px at 84% -10%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 62%);opacity:1}.fl-neon .atmos:after{background-image:radial-gradient(color-mix(in srgb,var(--text) 4%,transparent) 1px,transparent 1px);background-size:3px 3px;opacity:.5;mix-blend-mode:normal}.fl-atlas{--bg: #15130E;--bg-2: #100E0A;--surface: #1C1A12;--surface-2: #211E15;--surface-3: #2A2619;--line: #322D22;--line-2: #453E2E;--line-3: #5C5340;--text: #EFEAE0;--text-2: #B5AC99;--text-3: #8A8172;--good: #8FD694;--warn: #E8B53D;--bad: #FF6F69;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 20px;--r-xl: 24px;--font-display: "Space Grotesk", system-ui, sans-serif;--font-ui: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-card: 0 1px 0 rgba(255,255,255,.03) inset, 0 22px 50px -32px rgba(0,0,0,.85)}.fl-atlas.light{--bg: #F4F0E6;--bg-2: #EBE6D8;--surface: #FCFAF4;--surface-2: #F6F2E7;--surface-3: #EDE8D9;--line: #E2DAC6;--line-2: #CFC5AC;--line-3: #A2977C;--text: #1F1D16;--text-2: #56503F;--text-3: #837B66;--good: #1C8450;--warn: #9C6A10;--bad: #CC4A45}.fl-atlas h1.h,.fl-atlas h2,.fl-atlas h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.015em}.fl-atlas .card-head h3{font-family:var(--font-display);font-weight:600}.fl-atlas .card{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 4%,var(--surface)) 0%,var(--surface) 22%);border-radius:var(--r-lg)}.fl-atlas .btn{border-radius:999px}.fl-atlas .btn:not(.ghost):not(.soft){background-image:linear-gradient(rgba(255,255,255,.1),transparent);box-shadow:inset 0 1px #ffffff24,0 8px 20px -12px color-mix(in srgb,var(--accent) 55%,transparent)}.fl-atlas .badge,.fl-atlas .rail-item .tag{border-radius:999px}.fl-atlas .rail-item{border-radius:var(--r-sm)}.fl-atlas .rail-item.active{background:var(--accent-soft);border:1px solid var(--accent-line)}.fl-atlas .rail-vitals{border-radius:18px}.fl-atlas .tb-search,.fl-atlas .sel,.fl-atlas .inp{border-radius:999px}.fl-atlas .atmos{background:radial-gradient(900px 560px at 70% -10%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%);opacity:1}.fl-atlas .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");opacity:.03;mix-blend-mode:overlay}.dir-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:4px}.dir-tile{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);padding:12px;cursor:pointer;font:inherit;color:var(--text);display:flex;flex-direction:column;gap:11px;transition:border-color .14s,transform .1s,box-shadow .14s}.dir-tile:hover{border-color:var(--accent-line);transform:translateY(-2px)}.dir-tile.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 12px 28px -22px var(--accent)}.dir-thumb{position:relative;height:78px;border-radius:8px;overflow:hidden;padding:10px 10px 10px 34px;display:flex;flex-direction:column;justify-content:center;gap:6px;border:1px solid rgba(255,255,255,.06)}.dir-thumb-rail{position:absolute;left:0;top:0;bottom:0;width:24px;opacity:.9}.dir-thumb-bar{height:6px;border-radius:3px;opacity:.92}.dir-thumb-dot{position:absolute;right:10px;top:10px;width:9px;height:9px;border-radius:50%}.dir-cultivar .dir-thumb{background:#0b0e12;border-radius:12px}.dir-cultivar .dir-thumb-rail{background:#14181d;border-right:1px solid #2C333B}.dir-cultivar .dir-thumb-bar{background:#3ad4c4}.dir-cultivar .dir-thumb-bar:nth-child(2){background:#2c333b}.dir-cultivar .dir-thumb-bar:nth-child(3){background:#2c333b}.dir-cultivar .dir-thumb-dot{background:#3ad4c4;box-shadow:0 0 8px #2ba89b}.dir-atlas .dir-thumb{background:#15130e;border-radius:18px}.dir-atlas .dir-thumb-rail{background:#1c1a12;border-right:1px solid #322D22}.dir-atlas .dir-thumb-bar{background:#8fd694;border-radius:999px}.dir-atlas .dir-thumb-bar:nth-child(2){background:#322d22}.dir-atlas .dir-thumb-bar:nth-child(3){background:#322d22}.dir-atlas .dir-thumb-dot{background:#c9e8a8;box-shadow:0 0 8px #5c7a50}.dir-greenhouse .dir-thumb{background:#15110b;border-radius:16px}.dir-greenhouse .dir-thumb-rail{background:#1a2116;border-right:1px solid #33402B}.dir-greenhouse .dir-thumb-bar{background:#74ce86}.dir-greenhouse .dir-thumb-bar:nth-child(2){background:#33402b}.dir-greenhouse .dir-thumb-bar:nth-child(3){background:#33402b}.dir-greenhouse .dir-thumb-dot{background:#74ce86;box-shadow:0 0 8px #74ce86}.dir-operator .dir-thumb{background:#0a0c0e;border-radius:0}.dir-operator .dir-thumb-rail{background:#11151a;border-right:1px solid #262D36}.dir-operator .dir-thumb-bar{background:#e8a23b}.dir-operator .dir-thumb-bar:nth-child(2){background:#262d36}.dir-operator .dir-thumb-bar:nth-child(3){background:#262d36}.dir-operator .dir-thumb-dot{background:#e8a23b;box-shadow:0 0 8px #e8a23b}.dir-heirloom .dir-thumb{background:#13111c;border-radius:12px}.dir-heirloom .dir-thumb-rail{background:#181621;border-right:1px solid #33313B}.dir-heirloom .dir-thumb-bar{background:#b9a6c6}.dir-heirloom .dir-thumb-bar:nth-child(2){background:#33313b}.dir-heirloom .dir-thumb-bar:nth-child(3){background:#33313b}.dir-heirloom .dir-thumb-dot{background:#b9a6c6;box-shadow:0 0 8px #8e7a9b}.dir-matrix .dir-thumb{background:#04070a;border-radius:2px}.dir-matrix .dir-thumb-rail{background:#0b1116;border-right:1px solid #16242B}.dir-matrix .dir-thumb-bar{background:#19e37c}.dir-matrix .dir-thumb-bar:nth-child(2){background:#18242c}.dir-matrix .dir-thumb-bar:nth-child(3){background:#18242c}.dir-matrix .dir-thumb-dot{background:#19e37c;box-shadow:0 0 8px #19e37c}.dir-aurora .dir-thumb{background:#04130e;border-radius:16px}.dir-aurora .dir-thumb-rail{background:#ffffff0f;border-right:1px solid rgba(255,255,255,.12)}.dir-aurora .dir-thumb-bar{background:#2de0b8}.dir-aurora .dir-thumb-bar:nth-child(2){background:#ffffff29}.dir-aurora .dir-thumb-bar:nth-child(3){background:#ffffff29}.dir-aurora .dir-thumb-dot{background:#2de0b8;box-shadow:0 0 8px #2de0b8}.dir-perspective .dir-thumb{background:#0e1117;border-radius:7px}.dir-perspective .dir-thumb-rail{background:#161b22;border-right:1px solid #232C36}.dir-perspective .dir-thumb-bar{background:#ff7a59}.dir-perspective .dir-thumb-bar:nth-child(2){background:#2c3845}.dir-perspective .dir-thumb-bar:nth-child(3){background:#2c3845}.dir-perspective .dir-thumb-dot{background:#ff7a59;box-shadow:0 0 8px #ff7a59}.dir-sequencer .dir-thumb{background:#fbfdfc;border-radius:6px}.dir-sequencer .dir-thumb-rail{background:#f6f8fb;border-right:1px solid #E3E8F0}.dir-sequencer .dir-thumb-bar{background:#4f46e5}.dir-sequencer .dir-thumb-bar:nth-child(2){background:#d7dce6}.dir-sequencer .dir-thumb-bar:nth-child(3){background:#d7dce6}.dir-sequencer .dir-thumb-dot{background:#4f46e5;box-shadow:0 0 8px #4f46e573}.dir-cobalt .dir-thumb{background:#02060d;border-radius:2px}.dir-cobalt .dir-thumb-rail{background:#07101c;border-right:1px solid #1B4763}.dir-cobalt .dir-thumb-bar{background:#2ba8ff}.dir-cobalt .dir-thumb-bar:nth-child(2){background:#1b4763}.dir-cobalt .dir-thumb-bar:nth-child(3){background:#1b4763}.dir-cobalt .dir-thumb-dot{background:#2ba8ff;box-shadow:0 0 8px #2ba8ff}.dir-cosmic .dir-thumb{background:#07041a;border-radius:3px}.dir-cosmic .dir-thumb-rail{background:#120a30;border-right:1px solid #2E1E63}.dir-cosmic .dir-thumb-bar{background:#b66bff}.dir-cosmic .dir-thumb-bar:nth-child(2){background:#2e1e63}.dir-cosmic .dir-thumb-bar:nth-child(3){background:#2e1e63}.dir-cosmic .dir-thumb-dot{background:#ff5fd0;box-shadow:0 0 8px #b66bff}.dir-neon .dir-thumb{background:#050505;border-radius:8px}.dir-neon .dir-thumb-rail{background:#0a0a0a;border-right:1px solid #1A1A1A}.dir-neon .dir-thumb-bar{background:#f44174}.dir-neon .dir-thumb-bar:nth-child(2){background:#1a1a1a}.dir-neon .dir-thumb-bar:nth-child(3){background:#1a1a1a}.dir-neon .dir-thumb-dot{background:#f44174;box-shadow:0 0 8px #f44174}.dir-meta{display:flex;flex-direction:column;gap:4px}.dir-name{font-family:var(--font-display);font-weight:600;font-size:14.5px;display:flex;align-items:center;gap:8px}.dir-check{font-family:var(--font-mono);font-size:10px;color:var(--accent);margin-left:auto}.dir-tag{font-size:12px;color:var(--text-2);line-height:1.45}.dir-layout{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}.dir-layout .tick{color:var(--text-2)}.dir-layout-note{font-size:12px}@media (max-width: 960px){.dir-grid{grid-template-columns:1fr}}.fl-greenhouse .hero{padding:4px 0;gap:32px}.fl-greenhouse .hero-facts .ttl{font-size:30px;letter-spacing:-.018em}.fl-greenhouse .chip{background:var(--surface-3);border:1px solid var(--line);border-radius:999px;padding:7px 14px}.fl-greenhouse .chip .ck{color:var(--text-3)}.fl-greenhouse .chip .cv{color:var(--text);font-weight:500}.fl-greenhouse .kpiband{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line)}.fl-greenhouse .kseg-n{font-size:29px;letter-spacing:-.02em}.fl-greenhouse .gcell{border-radius:var(--r-md)}.fl-greenhouse .gcell:hover{transform:translateY(-3px)}.fl-greenhouse .feed-row{padding:13px 0}.fl-greenhouse .card-head h3{font-family:var(--font-display);letter-spacing:-.01em}.fl-operator .card{background:var(--surface);border-radius:0;box-shadow:none}.fl-operator .card-head{border-bottom:1px solid var(--line);padding-bottom:11px;margin-bottom:14px}.fl-operator .card-head h3{font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-2);position:relative;padding-left:22px}.fl-operator .card-head h3:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:14px;height:2px;background:var(--accent)}.fl-operator .hero-facts .ttl{font-family:var(--font-mono);font-size:17px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.fl-operator .voice-readout .vr-txt{font-family:var(--font-mono);font-size:11.5px;color:var(--text-3);letter-spacing:.02em}.fl-operator .chip{background:transparent;border:1px solid var(--line);border-radius:2px;padding:5px 10px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}.fl-operator .chip .ck{color:var(--text-3)}.fl-operator .chip .cv{color:var(--text)}.fl-operator .kpiband{border-radius:0;border:1px solid var(--line);padding:12px 14px}.fl-operator .kseg-l{font-size:9px;letter-spacing:.14em}.fl-operator .kseg-n{font-family:var(--font-mono);font-size:24px;font-weight:500;letter-spacing:-.01em}.fl-operator .gcell{border-radius:0;border:1px solid var(--line);padding:14px 16px}.fl-operator .gcell .gname{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}.fl-operator .gcell .gcount{font-family:var(--font-mono);font-size:30px;letter-spacing:-.01em}.fl-operator .gcell .gdesc{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-3)}.fl-operator .feed-row{border-bottom:1px solid var(--line);padding:9px 0;font-family:var(--font-mono);font-size:12px}.fl-operator .seg{border-radius:0;border:1px solid var(--line);background:var(--surface)}.fl-operator .seg button{border-radius:0;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}.fl-operator .atmos:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(rgba(255,255,255,.025) 1px,transparent 1px);background-size:22px 22px}.fl-operator.light .atmos:after{background-image:radial-gradient(rgba(20,28,38,.04) 1px,transparent 1px)}.b-greet{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:18px}.b-greet h1.b-h{font-size:31px;letter-spacing:-.025em;margin:4px 0 0}.b-hero-grid{grid-template-columns:1.25fr 1fr;align-items:stretch}.b-hero{display:flex;gap:24px;align-items:center;padding:24px;min-height:220px}.b-hero-ring{flex:none}.b-hero-side{display:flex;flex-direction:column;gap:9px;min-width:0}.b-hero-title{font-family:var(--font-display);font-size:21px;font-weight:600;margin:0;letter-spacing:-.01em}.b-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.b-chip{background:var(--surface-3);border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:12.5px;color:var(--text-2);white-space:nowrap}.b-chip b{color:var(--text);font-weight:500}.b-hero-checks{display:flex;flex-direction:column;gap:5px;margin:2px 0;padding:0;list-style:none}.b-hcheck{display:grid;grid-template-columns:16px 1fr;gap:9px;align-items:center;font-size:12.5px;color:var(--text-2)}.b-hcheck-mark{width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;line-height:1}.b-hcheck.ok .b-hcheck-mark{color:var(--good);background:color-mix(in srgb,var(--good) 14%,transparent)}.b-hcheck.bad .b-hcheck-mark{color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,transparent)}.b-hcheck.bad .b-hcheck-label{color:var(--text)}.b-tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px}.b-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card);padding:18px;display:flex;flex-direction:column;gap:10px;position:relative}.b-tile-ic{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center}.b-tile-ic .glyph{width:19px;height:19px}.b-tile-body{display:flex;flex-direction:column;gap:2px}.b-tile-val{font-family:var(--font-display);font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1}.b-tile-val.zero{color:var(--text-3)}.b-tile-label{font-size:13px;color:var(--text-2)}.b-tile-sub{position:absolute;top:18px;right:18px;font-family:var(--font-mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-3)}.b-mix-card{display:flex;flex-direction:column}.b-mix{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:center;flex:1}.b-legend{display:flex;flex-direction:column;gap:11px}.b-leg-row{display:grid;grid-template-columns:12px 90px 1fr 32px;gap:10px;align-items:center}.b-leg-dot{width:11px;height:11px;border-radius:4px}.b-leg-name{font-size:13px}.b-leg-bar{height:8px;background:var(--surface-3);border-radius:999px;overflow:hidden}.b-leg-bar i{display:block;height:100%;border-radius:999px}.b-leg-val{font-family:var(--font-mono);font-size:13px;text-align:right;font-variant-numeric:tabular-nums}.b-stat-lead{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.b-stat-big{font-family:var(--font-display);font-size:34px;font-weight:600;letter-spacing:-.02em}.b-stat-cap{font-size:12.5px;color:var(--text-2)}.b-timeline{display:flex;flex-direction:column}.b-tl-row{display:grid;grid-template-columns:16px 1fr auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.b-tl-row:last-child{border-bottom:0}.b-tl-node{width:10px;height:10px;border-radius:50%;background:var(--text-3);box-shadow:0 0 0 4px var(--surface)}.b-tl-node.ok{background:var(--good)}.b-tl-node.acc{background:var(--accent)}.b-tl-node.warn{background:var(--warn)}.b-tl-body{font-size:13.5px;min-width:0;word-break:break-word}.b-tl-body b{text-transform:capitalize}.b-tl-when{font-family:var(--font-mono);font-size:11px;color:var(--text-3);white-space:nowrap}.donut-c-num{font-family:var(--font-display);font-weight:600;font-size:28px;fill:var(--text)}.donut-c-cap{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;fill:var(--text-3)}@media (max-width: 1180px){.b-hero-grid{grid-template-columns:1fr}.b-tiles{grid-template-columns:repeat(4,1fr)}}@media (max-width: 720px){.b-tiles{grid-template-columns:1fr 1fr}.b-hero{flex-direction:column;align-items:flex-start}.b-mix{grid-template-columns:1fr}}.c-root{font-family:var(--font-mono)}.c-titlebar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:16px}.c-h1{font-family:var(--font-mono);font-size:17px;font-weight:600;letter-spacing:.02em;margin:0;color:var(--text)}.c-sub{font-family:var(--font-mono);font-size:11.5px;color:var(--text-3);margin-top:5px}.c-root .btn{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;border-radius:var(--r-sm)}.c-strip{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);margin-bottom:14px}.c-strip-cell{padding:11px 14px;border-right:1px solid var(--line);min-width:0}.c-strip-cell:last-child{border-right:0}.c-strip-k{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.c-strip-v{font-size:13.5px;color:var(--text);margin-top:6px;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-pill{display:inline-block;font-size:9.5px;letter-spacing:.08em;padding:2px 7px;border:1px solid currentColor;border-radius:var(--r-sm);text-transform:uppercase}.c-pill.ok{color:var(--good)}.c-pill.warn{color:var(--warn)}.c-pill.bad{color:var(--bad)}.c-kpi-row{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);margin-bottom:14px}.c-kpi{padding:14px 16px;border-right:1px solid var(--line);position:relative}.c-kpi:last-child{border-right:0}.c-kpi-label{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}.c-kpi-val{font-size:29px;font-weight:500;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums;color:var(--text)}.c-kpi-val.zero{color:var(--text-3)}.c-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.c-mod{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);display:flex;flex-direction:column;min-width:0}.c-mod-head{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--line)}.c-tab{width:16px;height:2px;background:var(--accent);flex:none}.c-mod-head h3{margin:0;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2);font-weight:500}.c-mod-right{margin-left:auto;font-size:10.5px;letter-spacing:.1em;color:var(--text-3)}.c-mod-body{padding:14px;flex:1}.c-tbl{width:100%;border-collapse:collapse;font-family:var(--font-mono)}.c-tbl th{text-align:left;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);padding:0 10px 9px;border-bottom:1px solid var(--line);font-weight:500}.c-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;font-variant-numeric:tabular-nums}.c-tbl tr:last-child td{border-bottom:0}.c-tbl .num{text-align:right}.c-name{color:var(--text);font-weight:500}.c-dim{color:var(--text-3)}.c-bar{height:7px;background:var(--surface-3);overflow:hidden;border-radius:var(--r-sm)}.c-bar i{display:block;height:100%}.c-check-list{display:flex;flex-direction:column;margin-top:12px}.c-check-row{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--line);font-size:12px}.c-check-row:first-child{border-top:0}.c-dotmark{width:8px;height:8px;border-radius:2px;background:var(--text-3)}.c-dotmark.ok{background:var(--good)}.c-dotmark.bad{background:var(--bad)}.c-dotmark.acc{background:var(--accent)}.c-dotmark.warn{background:var(--warn)}.c-check-name{color:var(--text)}.c-check-detail{color:var(--text-3);font-size:11px;text-align:right}.c-axis{display:flex;justify-content:space-between;margin-top:6px;font-size:9px;color:var(--text-3);font-family:var(--font-mono)}.c-axis span{flex:1;text-align:center}.c-cols{display:flex;align-items:flex-end;gap:4px;width:100%}.c-col{flex:1;background:var(--surface-3);transition:background .12s;min-width:4px}.c-col.hi{background:var(--accent)}.c-band{display:flex;gap:3px;margin-bottom:12px}.c-band-cell{flex:1;height:14px;background:var(--surface-3)}.c-band-cell.ok{background:var(--good)}.c-band-cell.bad{background:var(--bad)}@media (max-width: 1180px){.c-strip{grid-template-columns:repeat(4,1fr)}.c-kpi-row{grid-template-columns:repeat(3,1fr)}.c-grid{grid-template-columns:repeat(2,1fr)}.c-grid .c-mod[style*="span 3"],.c-grid .c-mod[style*="span 2"]{grid-column:span 2!important}}@media (max-width: 720px){.c-strip,.c-kpi-row{grid-template-columns:repeat(2,1fr)}.c-grid{grid-template-columns:1fr}.c-grid .c-mod[style*=span]{grid-column:span 1!important}}.lib-secbar{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 16px}.lib-secchip{display:inline-flex;align-items:center;gap:9px;padding:8px 14px;border:1px solid var(--line);background:var(--surface);border-radius:999px;cursor:pointer;font:inherit;color:var(--text-2);font-size:13px;transition:border-color .14s,color .14s,background .14s}.lib-secchip .glyph{width:16px;height:16px;opacity:.85}.lib-secchip:hover{color:var(--text);border-color:var(--line-2)}.lib-secchip.on{color:var(--text);border-color:var(--accent-line);background:var(--accent-soft)}.lib-secchip.on .glyph{color:var(--accent);opacity:1}.lib-secchip-n{font-family:var(--font-mono);font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.lib-secchip.on .lib-secchip-n{color:var(--accent)}.lib.lib-2{grid-template-columns:320px 1fr}.lib-main{overflow:hidden}.lib-detail{padding:22px 24px;min-height:320px}.lib-detail .eyebrow{margin-bottom:4px}.lib-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.lib-meta-v{font-size:13px;color:var(--text);margin-top:4px;word-break:break-word}.lib-meta-v.mono{font-family:var(--font-mono);font-size:12px;color:var(--text-2)}.lib-doc{font-size:14px}.lib-doc-empty{display:flex;align-items:flex-start;gap:10px;padding:16px;border:1px dashed var(--line-2);border-radius:var(--r-sm);color:var(--text-2);font-size:13px}.lib-doc-empty .glyph{width:20px;height:20px;color:var(--text-3);flex:none}@media (max-width: 960px){.lib.lib-2{grid-template-columns:1fr}.lib-secbar{gap:6px}.lib-secchip{padding:6px 11px;font-size:12.5px}}.gx-stats{text-align:right;font-size:11px;color:var(--text-3);line-height:1.7;white-space:nowrap}.gx-stats span{color:var(--text);font-size:13px}.gx-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:0 2px 14px;font-family:var(--font-mono)}.gx-search{position:relative;display:inline-flex}.gx-search .graph-search{padding-left:28px}.gx-search-ic{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-3);font-size:13px;pointer-events:none}.gx-filters{display:flex;gap:6px}.gx-filter{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-family:var(--font-mono);font-size:11.5px;padding:6px 11px;border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface-2);color:var(--text);transition:opacity .15s,border-color .15s,background .15s,color .15s}.gx-filter:hover{border-color:var(--line-3)}.gx-filter.off{background:transparent;border-color:var(--line);color:var(--text-3)}.gx-filter.off .dot{opacity:.35}.gx-filter .dot{width:8px;height:8px;border-radius:2px;display:inline-block}.gx-readout{margin-left:auto;min-height:18px;font-size:11.5px;color:var(--text-2)}.gx-canvas{overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);background-color:var(--bg-2);background-image:linear-gradient(rgba(255,255,255,.012) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.012) 1px,transparent 1px);background-size:24px 24px;box-shadow:0 14px 40px -28px #000000e6 inset;max-height:calc(100vh - 300px)}.gx-inner{min-width:max-content;padding:8px;animation:gxfade .25s ease}.gx-inner.fluid{min-width:0;width:100%;display:flex;justify-content:center;align-items:flex-start}.gx-svg.gx-fluid{max-width:100%;height:auto}.gx-svg{display:block;font-family:var(--font-mono);-webkit-user-select:none;user-select:none}.gx-hint{margin:14px 2px 0;font-size:11px;color:var(--text-3);line-height:1.6}@keyframes gxfade{0%{opacity:0}to{opacity:1}}.spec-list{display:flex;flex-direction:column;gap:14px}.spec-item{padding:0;overflow:hidden}.spec-row{display:grid;grid-template-columns:110px 1fr auto auto 22px;gap:18px;align-items:center;width:100%;padding:18px 20px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background .12s}.spec-row:hover,.spec-item.open .spec-row{background:var(--surface-2)}.spec-date{font-family:var(--font-mono);font-size:12px;color:var(--text-2);letter-spacing:.02em;font-variant-numeric:tabular-nums}.spec-main{min-width:0;display:flex;flex-direction:column;gap:4px}.spec-name{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--text)}.spec-purpose{font-size:13px;color:var(--text-2);line-height:1.5}.spec-status{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border:1px solid var(--line-2);border-radius:999px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}.spec-status .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.spec-status-planned{color:var(--text-3);background:var(--surface-2)}.spec-status-ongoing{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 36%,transparent);background:color-mix(in srgb,var(--warn) 10%,transparent)}.spec-status-completed{color:var(--good);border-color:color-mix(in srgb,var(--good) 36%,transparent);background:color-mix(in srgb,var(--good) 10%,transparent)}.spec-chev{font-size:22px;color:var(--text-3);transition:transform .14s,color .14s;display:inline-block;text-align:center}.spec-item.open .spec-chev{color:var(--accent)}.spec-body{border-top:1px solid var(--line);padding:18px 22px 22px;max-height:640px;overflow:auto;background:color-mix(in srgb,var(--accent) 3%,transparent)}@media (max-width: 720px){.spec-row{grid-template-columns:1fr auto 22px;gap:14px}.spec-date{grid-column:1 / -1;margin-bottom:4px}.spec-status{grid-column:1 / -1;justify-self:start;margin-top:4px}}.boot-splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:var(--bg)}.boot-splash.fading{animation:splashOut .55s ease forwards}.boot-dial{position:relative;width:172px;height:172px;animation:glowPulse 1.8s ease-in-out infinite}.boot-ring{width:100%;height:100%;transform:rotate(-90deg)}.boot-progress{stroke-dasharray:452;stroke-dashoffset:452;--end: 0;animation:ringFill .4s cubic-bezier(.2,.7,.2,1) forwards}.boot-sprout{position:absolute;top:50%;left:50%;width:58px;height:58px;transform:translate(-50%,-50%);overflow:visible}.boot-sprout .bs-stem{transform-origin:12px 21.5px;transform:scaleY(0);animation:stemGrow .3s cubic-bezier(.2,.7,.2,1) .1s forwards}.boot-sprout .bs-leaf{transform-origin:12px 12px;transform:scale(0)}.boot-sprout .bs-leaf-main{animation:leafIn .2s cubic-bezier(.22,1,.36,1) .25s forwards}.boot-sprout .bs-leaf-back{animation:leafIn .2s cubic-bezier(.22,1,.36,1) .35s forwards}.boot-status{display:flex;align-items:center;font:500 12px var(--font-mono);color:var(--text-2)}.boot-caret{width:6px;height:13px;background:var(--accent);margin-left:7px;animation:blink 1s steps(1) infinite}@keyframes splashOut{to{opacity:0;visibility:hidden}}@keyframes stemGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes leafIn{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes ringFill{to{stroke-dashoffset:var(--end)}}@keyframes glowPulse{0%,to{filter:drop-shadow(0 0 6px var(--accent-soft))}50%{filter:drop-shadow(0 0 16px var(--accent-line))}}.deploy-pop{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);padding:12px;margin-bottom:16px;display:flex;flex-direction:column;gap:10px}.deploy-pop .dp-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.deploy-pop .dp-path{flex:1 1 260px;min-width:200px;background:var(--surface-2);color:var(--text);border:1px solid var(--line-2);border-radius:var(--r-xs);padding:7px 10px;font-family:var(--font-mono, monospace);font-size:13px}.deploy-pop .dp-path:focus{outline:none;border-color:var(--accent-line)}.deploy-pop .dp-note{margin:0;color:var(--text-2)}.deploy-pop .dp-note code{color:var(--text)}.deploy-pop .dp-field{display:flex;align-items:center;gap:6px}.deploy-pop .dp-field>span{color:var(--text-2);font-size:12px;white-space:nowrap}.harness-tbl .h-acts .btn.h-trash{min-width:0;width:100%;padding:6px 0}.harness-tbl .h-acts .btn.h-trash:hover{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,var(--line-2))}.h-remove{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 12px;border:1px solid color-mix(in srgb,var(--bad) 35%,var(--line-2));border-radius:var(--r-sm);background:color-mix(in srgb,var(--bad) 7%,transparent)}.h-remove .hr-msg{display:flex;flex-direction:column;gap:2px;flex:1 1 280px}.h-remove .hr-msg .sub{color:var(--text-2)}.h-remove .hr-msg code{color:var(--text)}.h-remove .hr-field{display:flex;align-items:center;gap:6px}.h-remove .hr-field>span{color:var(--text-2);font-size:12px;white-space:nowrap}.h-remove .hr-acts{display:flex;align-items:center;gap:8px}.h-remove .btn.hr-go{background:var(--bad);color:#fdf6f5;border-color:transparent}.h-remove .btn.hr-go:hover{filter:brightness(1.08)}.harness-tbl tbody tr.h-group td{padding:18px 0 8px;border:0;font-family:var(--font-display);font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}.harness-tbl tbody tr.h-group .hg-sub{text-transform:none;letter-spacing:0;font-weight:400;color:var(--text-3);font-family:var(--font-mono);font-size:11px}.harness-tbl tbody tr.h-group:hover,.harness-tbl tbody tr.h-empty-row:hover{background:none}.harness-tbl .h-empty{color:var(--text-3);padding:6px 0 16px;border:0;font-size:13px}.rules-list{overflow:hidden}.rule-row{border-bottom:1px solid var(--line)}.rule-row:last-child{border-bottom:0}.rule-head{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 18px;border:0;background:transparent;cursor:pointer;font:inherit;color:var(--text);transition:background .1s}.rule-head:hover{background:var(--surface-2)}.rule-row.on .rule-head{background:var(--accent-soft)}.rule-no{font-family:var(--font-mono);font-size:13px;color:var(--accent);font-variant-numeric:tabular-nums;min-width:34px}.rule-title{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em;flex:1}.rule-chip{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);border:1px solid var(--line-2);border-radius:999px;padding:3px 9px}.rule-chip.user{color:var(--accent);border-color:var(--accent-line)}.rule-chip.trial{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}.rule-chip.trial.overdue{color:var(--bg);background:var(--warn);border-color:var(--warn)}.rule-expand{padding:2px 18px 18px 64px;background:color-mix(in srgb,var(--accent) 4%,transparent)}.rule-expand p{color:var(--text-2);font-size:13.5px;line-height:1.66;white-space:pre-wrap}.rule-src{font-family:var(--font-mono);font-size:11px;color:var(--text-3);margin-top:8px}.rule-notice{color:var(--warn);margin:0 0 12px}.rules-meter{display:flex;align-items:center;gap:12px;margin-bottom:16px}.rules-meter-bar{flex:0 0 180px;height:6px;border-radius:999px;background:var(--surface-3);border:1px solid var(--line);overflow:hidden}.rules-meter-fill{height:100%;background:var(--accent);transition:width .2s}.rules-meter.warn .rules-meter-fill{background:var(--warn)}.rules-meter.over .rules-meter-fill{background:#e24947}.rules-meter-label{font-family:var(--font-mono);font-size:11.5px;color:var(--text-3)}.rules-meter.warn .rules-meter-label{color:var(--warn)}.rules-meter.over .rules-meter-label{color:#e24947}.rule-form{display:flex;flex-direction:column;gap:10px}.rule-form .lib-filter{width:100%}.rule-body-input{width:100%;resize:vertical;background:var(--surface);color:var(--text);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:10px 12px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6}.rule-body-input:focus{outline:none;border-color:var(--accent-line)}.rule-trial-label{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.rule-date{width:150px}.rail-vitals{display:flex;align-items:center;gap:14px;margin:2px 4px 12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2)}.rv-ring{flex:none}.rv-ring-num{fill:var(--accent);font-family:var(--font-display);font-size:17px;font-weight:700}.rv-ring-lbl{fill:var(--text-3);font-family:var(--font-mono);font-size:6.5px;letter-spacing:1px}.rv-rows{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;font-size:12px}.rv-rows>div{display:flex;justify-content:space-between;gap:8px}.rv-rows span{color:var(--text-2)}.rv-rows b{font-family:var(--font-mono);font-weight:500;font-size:11px;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rv-rows b.plain{color:var(--text)}.motto{border-top:1px solid var(--line-2);margin:12px 0 0;padding-top:10px;font-style:italic;max-width:62ch}.voice-ref{padding:0}.voice-ref>summary{display:flex;align-items:baseline;gap:12px;padding:12px 18px;cursor:pointer;list-style:none;border-radius:var(--r-md)}.voice-ref>summary::-webkit-details-marker{display:none}.voice-ref>summary:before{content:"";flex:none;width:5px;height:5px;border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);transform:rotate(-45deg);transition:transform .15s;margin-right:2px}.voice-ref[open]>summary:before{transform:rotate(45deg)}.voice-ref>summary:hover{background:var(--surface-2)}.voice-ref .vr-title{font-family:var(--font-display);font-weight:600;font-size:14px}.voice-ref .vr-current{font-family:var(--font-mono);font-size:11.5px;color:var(--accent);text-transform:capitalize}.voice-ref .vr-hint{margin-left:auto}.vr-list{padding:2px 12px 12px}.voice-row{display:flex;align-items:baseline;gap:12px;padding:5px 8px;border-radius:var(--r-xs);border:1px solid transparent}.voice-row.current{border-color:var(--accent-line);background:var(--accent-soft)}.vr-name{flex:none;width:108px;font-family:var(--font-display);font-weight:600;font-size:12.5px;text-transform:capitalize}.vr-desc{flex:1;min-width:0;color:var(--text-2);font-size:11.5px;font-style:italic}.h-setup{display:flex;flex-direction:column;gap:10px;padding:4px 0}.h-setup .hs-msg{margin:0}.hs-steps{display:flex;flex-wrap:wrap;gap:14px}.hs-step{display:flex;align-items:center;gap:8px}.hs-step>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);white-space:nowrap}.jr-head{margin-bottom:14px}.jr-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.jr-card{padding-top:14px;padding-bottom:14px}.jr-card .card-head{margin-bottom:10px}.jr-ring{display:flex;align-items:center;gap:9px;width:100%;padding:5px 0;border:0;background:none;color:inherit;cursor:pointer;font:inherit;text-align:left}.jr-ring:hover .jr-ring-label{color:var(--text)}.jr-ring-label{flex:none;width:88px;font-size:11.5px;color:var(--text-2)}.jr-ring-track{flex:1;height:8px;border-radius:999px;overflow:hidden;background:var(--surface-3)}.jr-ring-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-2),var(--accent))}.jr-ring-num{flex:none;width:34px;text-align:right;font-family:var(--font-mono);font-size:10.5px;color:var(--accent)}.jr-fresh{display:flex;align-items:baseline;gap:10px;width:100%;padding:6px 0;border:0;border-bottom:1px solid var(--line-2);background:none;color:inherit;cursor:pointer;font:inherit;text-align:left}.jr-fresh:hover .jr-fresh-name{color:var(--accent)}.jr-fresh-kind{flex:none;width:64px;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.jr-fresh-name{flex:1;min-width:0;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jr-fresh-when{flex:none;font-family:var(--font-mono);font-size:10px;color:var(--text-3)}.jr-skipped{margin:8px 0 0;font-size:11px}.jr-care{border-top:1px solid var(--line-2);margin:8px 0 0;padding-top:9px;font-size:11.5px;color:var(--text-3)}.jr-go{font-family:var(--font-mono);font-size:10.5px;color:var(--accent);background:none;border:0;padding:0;cursor:pointer}.jr-go:hover{text-decoration:underline}.jr-go.right{margin-left:auto}.jr-map{border-color:var(--accent-line)}.jr-others{margin:14px 0 0;font-size:11.5px}.cmap{display:block;width:100%;height:auto;min-height:300px}.cm-edge{fill:none;stroke:var(--line-3);stroke-width:1.5}.cm-edge-gov{fill:none;stroke:var(--line-2);stroke-width:1.2;stroke-dasharray:4 5}.cm-node{cursor:pointer}.cm-node:hover circle{stroke-width:2.6}.cm-node:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cm-hub-disc{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2}.cm-hub-name{fill:var(--accent);font-family:var(--font-display);font-size:17px;font-weight:600}.cm-hub-num{fill:var(--text);font-family:var(--font-mono);font-size:10px}.cm-sat-disc{fill:var(--surface-2);stroke:var(--accent);stroke-width:1.5}.cm-sat-name{fill:var(--text);font-family:var(--font-display);font-size:12.5px;font-weight:600}.cm-sat-num{fill:var(--accent);font-family:var(--font-mono);font-size:10px}.cm-sat-big{fill:var(--accent);font-family:var(--font-mono);font-size:13px;font-weight:500}.cm-mini{font-family:var(--font-mono);font-size:7.5px}.cm-mini-disc{fill:var(--surface);stroke-width:1.2}.cm-pack-disc{fill:var(--accent-soft);stroke-width:1.2}.cm-pack-id{fill:var(--text)}.cm-gov-disc{fill:var(--surface);stroke:var(--line-3);stroke-width:1.3}.cm-gov-name{fill:var(--text);font-family:var(--font-display);font-size:10.5px;font-weight:600}.cm-gov-num{fill:var(--accent);font-family:var(--font-mono);font-size:9px}.cm-note{fill:var(--text-3);font-family:var(--font-mono);font-size:8.5px}.cm-govern-label{fill:var(--text-3);font-family:var(--font-mono);font-size:8.5px;letter-spacing:1.5px}@media (max-width: 1180px){.jr-row2{grid-template-columns:1fr}}@media (max-width: 960px){.rail-vitals{display:none}}@media (max-width: 720px){.rail-vitals{display:flex}.vr-name{width:100%}.voice-row{flex-wrap:wrap}.voice-ref .vr-hint{display:none}}.col:has(.pad>.jr-head){height:100vh}.page:has(>.pad>.jr-head){display:flex;flex-direction:column}.pad:has(>.jr-head){max-width:none;flex:1;min-height:0;margin:0;width:100%;display:flex;flex-direction:column}.pad:has(>.jr-head) .jr-map{flex:1;min-height:0;display:flex;flex-direction:column}.pad:has(>.jr-head) .jr-map .card-head{flex:none}.pad:has(>.jr-head) .cmap{flex:1;min-height:240px;height:auto}.pad:has(>.jr-head) .jr-others{flex:none}
@@ -1 +0,0 @@
1
- const a={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3};function c(o){if(!o)return NaN;const t=String(o).toUpperCase();if(!/^[IVXLCDM]+$/.test(t))return NaN;let r=0;for(let n=0;n<t.length;n++){const e=a[t[n]],s=a[t[n+1]];r+=s&&s>e?-e:e}return r}export{c as r};