@magic-spells/constellation 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/dist/cli/index.js +13 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update-check.d.ts +6 -0
- package/dist/cli/update-check.js +70 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/core/resolve.js +10 -1
- package/dist/core/resolve.js.map +1 -1
- package/dist/core/scaffold.d.ts +16 -3
- package/dist/core/scaffold.js +30 -7
- package/dist/core/scaffold.js.map +1 -1
- package/dist/mcp/server.js +124 -13
- package/dist/mcp/server.js.map +1 -1
- package/docs/002-mcp.md +26 -7
- package/examples/constellation/plan.md +1 -1
- package/package.json +3 -1
- package/skill/SKILL.md +66 -1
- package/skill/methodology.md +211 -0
- package/viewer/dist/assets/{arc-Kj6pF3JI.js → arc-z-d28NWT.js} +1 -1
- package/viewer/dist/assets/architecture-7EHR7CIX-QBvJmJV9.js +1 -0
- package/viewer/dist/assets/{architectureDiagram-3BPJPVTR-C5bZdErB.js → architectureDiagram-3BPJPVTR-CjoeulX0.js} +1 -1
- package/viewer/dist/assets/{blockDiagram-GPEHLZMM-C1Q6l6fE.js → blockDiagram-GPEHLZMM-BGlWRy-x.js} +1 -1
- package/viewer/dist/assets/{c4Diagram-AAUBKEIU-BmM6Tmtq.js → c4Diagram-AAUBKEIU-B09gKF2I.js} +1 -1
- package/viewer/dist/assets/channel-COWeTobO.js +1 -0
- package/viewer/dist/assets/{chunk-2J33WTMH-z09tLTpZ.js → chunk-2J33WTMH-Cfc4xM5m.js} +1 -1
- package/viewer/dist/assets/{chunk-3OPIFGDE-BynpXh1r.js → chunk-3OPIFGDE-CfJIsbrs.js} +1 -1
- package/viewer/dist/assets/{chunk-4BX2VUAB-CDOVuPyG.js → chunk-4BX2VUAB-B1J5W5bz.js} +1 -1
- package/viewer/dist/assets/{chunk-55IACEB6-nBwigOgn.js → chunk-55IACEB6-Bjg14U7h.js} +1 -1
- package/viewer/dist/assets/{chunk-5ZQYHXKU-Bxe5xIy_.js → chunk-5ZQYHXKU-BCvNFwZ5.js} +1 -1
- package/viewer/dist/assets/{chunk-727SXJPM-DZmTgL68.js → chunk-727SXJPM-XfiLvG1c.js} +1 -1
- package/viewer/dist/assets/{chunk-AQP2D5EJ-B7wr_Owx.js → chunk-AQP2D5EJ-BS-Yzcyy.js} +1 -1
- package/viewer/dist/assets/{chunk-BSJP7CBP-DbAKfVCK.js → chunk-BSJP7CBP-DdbVG_ma.js} +1 -1
- package/viewer/dist/assets/{chunk-CSCIHK7Q-C0rsBwqP.js → chunk-CSCIHK7Q-C_v3KOxf.js} +1 -1
- package/viewer/dist/assets/{chunk-FMBD7UC4-BAtzt0wv.js → chunk-FMBD7UC4-Djdrd8lQ.js} +1 -1
- package/viewer/dist/assets/{chunk-KSCS5N6A-CXXwf52I.js → chunk-KSCS5N6A-CLg-rwxg.js} +1 -1
- package/viewer/dist/assets/{chunk-L5ZTLDWV-DS4vRI1U.js → chunk-L5ZTLDWV-DCOC9Gbq.js} +1 -1
- package/viewer/dist/assets/chunk-LZXEDZCA-D_cw-C3l.js +2 -0
- package/viewer/dist/assets/{chunk-ND2GUHAM-CUSnPl8t.js → chunk-ND2GUHAM-7krqLOpO.js} +1 -1
- package/viewer/dist/assets/{chunk-NZK2D7GU-Dh986nJk.js → chunk-NZK2D7GU-BHqkidnq.js} +1 -1
- package/viewer/dist/assets/{chunk-O5CBEL6O-JAEZ_pS6.js → chunk-O5CBEL6O-D953Jfjo.js} +1 -1
- package/viewer/dist/assets/chunk-QZHKN3VN-D7xg9F2p.js +1 -0
- package/viewer/dist/assets/chunk-WU5MYG2G-CWG30QUB.js +1 -0
- package/viewer/dist/assets/{chunk-XPW4576I-BwMZI0gv.js → chunk-XPW4576I-tr-y3uUk.js} +1 -1
- package/viewer/dist/assets/classDiagram-4FO5ZUOK-BsU5cU-N.js +1 -0
- package/viewer/dist/assets/classDiagram-v2-Q7XG4LA2-BsU5cU-N.js +1 -0
- package/viewer/dist/assets/{cose-bilkent-S5V4N54A-NGC7gYHM.js → cose-bilkent-S5V4N54A-RHqSF1Fo.js} +1 -1
- package/viewer/dist/assets/{dagre-BM42HDAG-RD63uyvd.js → dagre-BM42HDAG-CaRlC_3n.js} +1 -1
- package/viewer/dist/assets/{diagram-2AECGRRQ-hwnqqCcb.js → diagram-2AECGRRQ-zBc7NQxu.js} +1 -1
- package/viewer/dist/assets/{diagram-5GNKFQAL-q8EaoZSG.js → diagram-5GNKFQAL-CdFUltct.js} +1 -1
- package/viewer/dist/assets/{diagram-KO2AKTUF-D4_5Qf-l.js → diagram-KO2AKTUF-DKBMUmIp.js} +1 -1
- package/viewer/dist/assets/{diagram-LMA3HP47-D8pwekFs.js → diagram-LMA3HP47-aj0REjiQ.js} +1 -1
- package/viewer/dist/assets/{diagram-OG6HWLK6-D9KinIWZ.js → diagram-OG6HWLK6-Bqtmu-Nc.js} +1 -1
- package/viewer/dist/assets/{dist-CFOOgrqc.js → dist-CkpbBMm1.js} +1 -1
- package/viewer/dist/assets/{erDiagram-TEJ5UH35-D0Wfq250.js → erDiagram-TEJ5UH35-_EpsTRRO.js} +1 -1
- package/viewer/dist/assets/eventmodeling-FCH6USID-BEUuQhV3.js +1 -0
- package/viewer/dist/assets/{flowDiagram-I6XJVG4X-Y2DY-Ze2.js → flowDiagram-I6XJVG4X-ChGqvvgX.js} +1 -1
- package/viewer/dist/assets/{ganttDiagram-6RSMTGT7-BnqkeLVw.js → ganttDiagram-6RSMTGT7-BjcMfREp.js} +1 -1
- package/viewer/dist/assets/{gitGraph-WXDBUCRP-Cft7usRT.js → gitGraph-WXDBUCRP-DfwN1rQD.js} +1 -1
- package/viewer/dist/assets/{gitGraphDiagram-PVQCEYII-D-cYtraK.js → gitGraphDiagram-PVQCEYII-ClI7X9vN.js} +1 -1
- package/viewer/dist/assets/index-BRID9hB2.js +98 -0
- package/viewer/dist/assets/index-CI5JmpBT.css +2 -0
- package/viewer/dist/assets/{info-J43DQDTF-Djc8Bx3F.js → info-J43DQDTF-CofQIoJ2.js} +1 -1
- package/viewer/dist/assets/{infoDiagram-5YYISTIA-D-ehtyyJ.js → infoDiagram-5YYISTIA-D2BcKzo_.js} +1 -1
- package/viewer/dist/assets/{ishikawaDiagram-YF4QCWOH-Ct3f6bH-.js → ishikawaDiagram-YF4QCWOH-CXw1XdbZ.js} +1 -1
- package/viewer/dist/assets/{journeyDiagram-JHISSGLW-DXlULEmi.js → journeyDiagram-JHISSGLW-3Jhqf-KB.js} +1 -1
- package/viewer/dist/assets/{kanban-definition-UN3LZRKU-3vE9h-R7.js → kanban-definition-UN3LZRKU-ClSj7gDE.js} +1 -1
- package/viewer/dist/assets/{line-B8MygbLB.js → line-DeameHHf.js} +1 -1
- package/viewer/dist/assets/{linear-CfMuM0B3.js → linear-BDDnY--V.js} +1 -1
- package/viewer/dist/assets/{mermaid-parser.core-DzlZTbbh.js → mermaid-parser.core-Cah87FZ1.js} +2 -2
- package/viewer/dist/assets/{mermaid.core-IM-sPiyq.js → mermaid.core-lOcajBDU.js} +3 -3
- package/viewer/dist/assets/{mindmap-definition-RKZ34NQL-CMnpAq1T.js → mindmap-definition-RKZ34NQL-CebNj7Vy.js} +1 -1
- package/viewer/dist/assets/{packet-YPE3B663-D44AzgHh.js → packet-YPE3B663-BlKTjmdv.js} +1 -1
- package/viewer/dist/assets/{pie-LRSECV5Y-DL8AVJH_.js → pie-LRSECV5Y-CHjlSKV3.js} +1 -1
- package/viewer/dist/assets/{pieDiagram-4H26LBE5-FvKK5jd7.js → pieDiagram-4H26LBE5-zWcP8Zx3.js} +1 -1
- package/viewer/dist/assets/{quadrantDiagram-W4KKPZXB-CmjSkU8c.js → quadrantDiagram-W4KKPZXB-BSBO8usz.js} +1 -1
- package/viewer/dist/assets/{radar-GUYGQ44K-BvfZTVyH.js → radar-GUYGQ44K-BDmaTdGw.js} +1 -1
- package/viewer/dist/assets/{requirementDiagram-4Y6WPE33-BOjca3VH.js → requirementDiagram-4Y6WPE33-C1wh6GaA.js} +1 -1
- package/viewer/dist/assets/{sankeyDiagram-5OEKKPKP-ANcjfNix.js → sankeyDiagram-5OEKKPKP-L3mqPVcH.js} +1 -1
- package/viewer/dist/assets/{sequenceDiagram-3UESZ5HK-BLQ9AL7I.js → sequenceDiagram-3UESZ5HK-7vbfvJiz.js} +1 -1
- package/viewer/dist/assets/src-CslsSLVV.js +1 -0
- package/viewer/dist/assets/{stateDiagram-AJRCARHV-D6CriBS6.js → stateDiagram-AJRCARHV-CfEgJmUy.js} +1 -1
- package/viewer/dist/assets/stateDiagram-v2-BHNVJYJU-Dj6oCjNw.js +1 -0
- package/viewer/dist/assets/{timeline-definition-PNZ67QCA-BNhWZ_DL.js → timeline-definition-PNZ67QCA-DMhMwUyE.js} +1 -1
- package/viewer/dist/assets/{treeView-BLDUP644-CY6Ph5Pu.js → treeView-BLDUP644-aGCNEij1.js} +1 -1
- package/viewer/dist/assets/{treemap-LRROVOQU-DChSA_Qx.js → treemap-LRROVOQU-DTgPn5R6.js} +1 -1
- package/viewer/dist/assets/{vennDiagram-CIIHVFJN-C01WznAC.js → vennDiagram-CIIHVFJN-BZygSp3k.js} +1 -1
- package/viewer/dist/assets/{wardley-L42UT6IY-BJ8uNoJu.js → wardley-L42UT6IY-BSxi2k9r.js} +1 -1
- package/viewer/dist/assets/{wardleyDiagram-YWT4CUSO-DwDEzlVm.js → wardleyDiagram-YWT4CUSO-ZBjbz3Mj.js} +1 -1
- package/viewer/dist/assets/{xychartDiagram-2RQKCTM6-BCvIDwU0.js → xychartDiagram-2RQKCTM6-VFJI2tv3.js} +1 -1
- package/viewer/dist/index.html +3 -3
- package/viewer/dist/assets/architecture-7EHR7CIX-CGfWeim3.js +0 -1
- package/viewer/dist/assets/channel-19IdUS_c.js +0 -1
- package/viewer/dist/assets/chunk-LZXEDZCA-CclT9MXr.js +0 -2
- package/viewer/dist/assets/chunk-QZHKN3VN-BKc_Kg2Z.js +0 -1
- package/viewer/dist/assets/chunk-WU5MYG2G-9ssTSMzt.js +0 -1
- package/viewer/dist/assets/classDiagram-4FO5ZUOK-DXv85WFd.js +0 -1
- package/viewer/dist/assets/classDiagram-v2-Q7XG4LA2-DXv85WFd.js +0 -1
- package/viewer/dist/assets/eventmodeling-FCH6USID-D3KRSuC1.js +0 -1
- package/viewer/dist/assets/index-CDR-riG2.css +0 -2
- package/viewer/dist/assets/index-DRPsTWe2.js +0 -98
- package/viewer/dist/assets/src-CAMdANUp.js +0 -1
- package/viewer/dist/assets/stateDiagram-v2-BHNVJYJU-DcTp66RQ.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as e,h as t}from"./src-
|
|
1
|
+
import{g as e,h as t}from"./src-CslsSLVV.js";import{t as n}from"./mermaid-parser.core-Cah87FZ1.js";import{D as r,H as i,K as a,U as o,a as s,b as c,c as l,v as u,w as d,x as f,y as p}from"./chunk-CSCIHK7Q-C_v3KOxf.js";import{i as m}from"./chunk-5ZQYHXKU-BCvNFwZ5.js";import{t as h}from"./chunk-WU5MYG2G-CWG30QUB.js";import{t as g}from"./chunk-4BX2VUAB-B1J5W5bz.js";var _=t((e,t)=>{let n=e<=1?e*100:e;if(n<0||n>100)throw Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return n},`toPercent`),v=t((e,t,n)=>({x:_(t,`${n} evolution`),y:_(e,`${n} visibility`)}),`toCoordinates`),y=t(e=>{if(e){if(e===`+<>`)return`bidirectional`;if(e===`+<`)return`backward`;if(e===`+>`)return`forward`}},`getFlowFromPort`),b=t(e=>{if(!e?.startsWith(`+`))return{};let t=/^\+'([^']*)'/.exec(e)?.[1];return e.includes(`<>`)?{flow:`bidirectional`,label:t}:e.includes(`<`)?{flow:`backward`,label:t}:e.includes(`>`)?{flow:`forward`,label:t}:{label:t}},`extractFlowFromArrow`),x=t((e,t)=>{if(g(e,t),e.size&&t.setSize(e.size.width,e.size.height),e.evolution){let n=e.evolution.stages.map(e=>e.secondName?`${e.name.trim()} / ${e.secondName.trim()}`:e.name.trim()),r=e.evolution.stages.filter(e=>e.boundary!==void 0).map(e=>e.boundary);t.updateAxes({stages:n,stageBoundaries:r})}if(e.anchors.forEach(e=>{let n=v(e.visibility,e.evolution,`Anchor "${e.name}"`);t.addNode(e.name,e.name,n.x,n.y,`anchor`)}),e.components.forEach(e=>{let n=v(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,i=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,a=e.decorator?.strategy;t.addNode(e.name,e.name,n.x,n.y,`component`,r,i,e.inertia,a)}),e.notes.forEach(e=>{let n=v(e.visibility,e.evolution,`Note "${e.text}"`);t.addNote(e.text,n.x,n.y)}),e.pipelines.forEach(e=>{let n=t.getNode(e.parent);if(!n||typeof n.y!=`number`)throw Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);let r=n.y;t.startPipeline(e.parent),e.components.forEach(n=>{let i=`${e.parent}_${n.name}`,a=n.label?(n.label.negX?-1:1)*n.label.offsetX:void 0,o=n.label?(n.label.negY?-1:1)*n.label.offsetY:void 0,s=_(n.evolution,`Pipeline component "${n.name}" evolution`);t.addNode(i,n.name,s,r,`pipeline-component`,a,o),t.addPipelineComponent(e.parent,i)})}),e.links.forEach(e=>{let n=!!e.arrow&&(e.arrow.includes(`-.->`)||e.arrow.includes(`.-.`)),r=y(e.fromPort)??y(e.toPort),{flow:i,label:a}=b(e.arrow);!r&&i&&(r=i);let o=e.linkLabel,s=a??o;t.addLink(t.resolveNodeId(e.from),t.resolveNodeId(e.to),n,s,r)}),e.evolves.forEach(e=>{let n=t.getNode(e.component);if(n?.y!==void 0){let r=_(e.target,`Evolve target for "${e.component}"`);t.addTrend(e.component,r,n.y)}}),e.annotations.length>0){let n=e.annotations[0],r=v(n.x,n.y,`Annotations box`);t.setAnnotationsBox(r.x,r.y)}e.annotation.forEach(e=>{let n=v(e.x,e.y,`Annotation ${e.number}`);t.addAnnotation(e.number,[{x:n.x,y:n.y}],e.text)}),e.accelerators.forEach(e=>{let n=v(e.x,e.y,`Accelerator "${e.name}"`);t.addAccelerator(e.name,n.x,n.y)}),e.deaccelerators.forEach(e=>{let n=v(e.x,e.y,`Deaccelerator "${e.name}"`);t.addDeaccelerator(e.name,n.x,n.y)})},`populateDb`),S={parser:{yy:void 0},parse:t(async t=>{let r=await n(`wardley`,t);e.debug(r);let i=S.parser?.yy;if(!i||typeof i.addNode!=`function`)throw Error(`parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);x(r,i)},`parse`)},C=new class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}static{t(this,`WardleyBuilder`)}addNode(e){let t=this.nodes.get(e.id)??{id:e.id,label:e.label},n={...t,...e,className:e.className??t.className,labelOffsetX:e.labelOffsetX??t.labelOffsetX,labelOffsetY:e.labelOffsetY??t.labelOffsetY};this.nodes.set(e.id,n)}addLink(e){this.links.push(e)}addTrend(e){this.trends.set(e.nodeId,e)}startPipeline(e){this.pipelines.set(e,{nodeId:e,componentIds:[]});let t=this.nodes.get(e);t&&(t.isPipelineParent=!0)}addPipelineComponent(e,t){let n=this.pipelines.get(e);n&&n.componentIds.push(t);let r=this.nodes.get(t);r&&(r.inPipeline=!0)}addAnnotation(e){this.annotations.push(e)}addNote(e){this.notes.push(e)}addAccelerator(e){this.accelerators.push(e)}addDeaccelerator(e){this.deaccelerators.push(e)}setAnnotationsBox(e,t){this.annotationsBox={x:e,y:t}}setAxes(e){this.axes={...this.axes,...e}}setSize(e,t){this.size={width:e,height:t}}getNode(e){return this.nodes.get(e)}resolveNodeId(e){if(this.nodes.has(e))return e;for(let[t,n]of this.nodes)if(n.label===e)return t;return e}build(){let e=[];for(let t of this.nodes.values()){if(typeof t.x!=`number`||typeof t.y!=`number`)throw Error(`Node "${t.label}" is missing coordinates`);e.push(t)}return{nodes:e,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}};function w(){return f()[`wardley-beta`]}t(w,`getConfig`);function T(e,t,n,r,i,a,o,s,c){C.addNode({id:e,label:t,x:n,y:r,className:i,labelOffsetX:a,labelOffsetY:o,inertia:s,sourceStrategy:c})}t(T,`addNode`);function E(e,t,n=!1,r,i){C.addLink({source:e,target:t,dashed:n,label:r,flow:i})}t(E,`addLink`);function D(e,t,n){C.addTrend({nodeId:e,targetX:t,targetY:n})}t(D,`addTrend`);function O(e,t,n){C.addAnnotation({number:e,coordinates:t,text:n})}t(O,`addAnnotation`);function k(e,t,n){C.addNote({text:e,x:t,y:n})}t(k,`addNote`);function A(e,t,n){C.addAccelerator({name:e,x:t,y:n})}t(A,`addAccelerator`);function j(e,t,n){C.addDeaccelerator({name:e,x:t,y:n})}t(j,`addDeaccelerator`);function M(e,t){C.setAnnotationsBox(e,t)}t(M,`setAnnotationsBox`);function N(e,t){C.setSize(e,t)}t(N,`setSize`);function P(e){C.startPipeline(e)}t(P,`startPipeline`);function F(e,t){C.addPipelineComponent(e,t)}t(F,`addPipelineComponent`);function I(e){C.setAxes(e)}t(I,`updateAxes`);function L(e){return C.getNode(e)}t(L,`getNode`);function R(e){return C.resolveNodeId(e)}t(R,`resolveNodeId`);function z(){return C.build()}t(z,`getWardleyData`);function B(){C.clear(),s()}t(B,`clear`);var V={getConfig:w,addNode:T,addLink:E,addTrend:D,addAnnotation:O,addNote:k,addAccelerator:A,addDeaccelerator:j,setAnnotationsBox:M,setSize:N,startPipeline:P,addPipelineComponent:F,updateAxes:I,getNode:L,resolveNodeId:R,getWardleyData:z,clear:B,setAccTitle:o,getAccTitle:p,setDiagramTitle:a,getDiagramTitle:d,getAccDescription:u,setAccDescription:i},H=[`Genesis`,`Custom Built`,`Product`,`Commodity`],U=t(()=>{let{themeVariables:e}=f();return{backgroundColor:e.wardley?.backgroundColor??e.background??`#fff`,axisColor:e.wardley?.axisColor??`#000`,axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??`#222`,gridColor:e.wardley?.gridColor??`rgba(100, 100, 100, 0.2)`,componentFill:e.wardley?.componentFill??`#fff`,componentStroke:e.wardley?.componentStroke??`#000`,componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??`#222`,linkStroke:e.wardley?.linkStroke??`#000`,evolutionStroke:e.wardley?.evolutionStroke??`#dc3545`,annotationStroke:e.wardley?.annotationStroke??`#000`,annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??`#222`,annotationFill:e.wardley?.annotationFill??e.background??`#fff`}},`getTheme`),W=t(()=>{let e=f()[`wardley-beta`];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},`getConfigValues`),G={parser:S,db:V,renderer:{draw:t((n,r,i,a)=>{e.debug(`Rendering Wardley map
|
|
2
2
|
`+n);let o=W(),s=U(),c=o.nodeRadius*1.6,u=a.db,d=u.getWardleyData(),f=u.getDiagramTitle(),p=d.size?.width??o.width,m=d.size?.height??o.height,g=h(r);g.selectAll(`*`).remove(),l(g,m,p,o.useMaxWidth),g.attr(`viewBox`,`0 0 ${p} ${m}`);let _=g.append(`g`).attr(`class`,`wardley-map`),v=g.append(`defs`);v.append(`marker`).attr(`id`,`arrow-${r}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto-start-reverse`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`fill`,s.evolutionStroke).attr(`stroke`,`none`),v.append(`marker`).attr(`id`,`link-arrow-end-${r}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,5).attr(`markerHeight`,5).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`fill`,s.linkStroke).attr(`stroke`,`none`),v.append(`marker`).attr(`id`,`link-arrow-start-${r}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,1).attr(`refY`,5).attr(`markerWidth`,5).attr(`markerHeight`,5).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 10 0 L 0 5 L 10 10 z`).attr(`fill`,s.linkStroke).attr(`stroke`,`none`),_.append(`rect`).attr(`class`,`wardley-background`).attr(`width`,p).attr(`height`,m).attr(`fill`,s.backgroundColor);let y=p-o.padding*2,b=m-o.padding*2;f&&_.append(`text`).attr(`class`,`wardley-title`).attr(`x`,p/2).attr(`y`,o.padding/2).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize*1.05).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(f);let x=t(e=>o.padding+e/100*y,`projectX`),S=t(e=>m-o.padding-e/100*b,`projectY`),C=_.append(`g`).attr(`class`,`wardley-axes`);C.append(`line`).attr(`x1`,o.padding).attr(`x2`,p-o.padding).attr(`y1`,m-o.padding).attr(`y2`,m-o.padding).attr(`stroke`,s.axisColor).attr(`stroke-width`,1),C.append(`line`).attr(`x1`,o.padding).attr(`x2`,o.padding).attr(`y1`,o.padding).attr(`y2`,m-o.padding).attr(`stroke`,s.axisColor).attr(`stroke-width`,1);let w=d.axes.xLabel??`Evolution`,T=d.axes.yLabel??`Visibility`;C.append(`text`).attr(`class`,`wardley-axis-label wardley-axis-label-x`).attr(`x`,o.padding+y/2).attr(`y`,m-o.padding/4).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).text(w),C.append(`text`).attr(`class`,`wardley-axis-label wardley-axis-label-y`).attr(`x`,o.padding/3).attr(`y`,o.padding+b/2).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).attr(`transform`,`rotate(-90 ${o.padding/3} ${o.padding+b/2})`).text(T);let E=d.axes.stages&&d.axes.stages.length>0?d.axes.stages:H;if(E.length>0){let e=_.append(`g`).attr(`class`,`wardley-stages`),t=d.axes.stageBoundaries,n=[];if(t&&t.length===E.length){let e=0;t.forEach(t=>{n.push({start:e,end:t}),e=t})}else{let e=1/E.length;E.forEach((t,r)=>{n.push({start:r*e,end:(r+1)*e})})}E.forEach((t,r)=>{let i=n[r],a=o.padding+i.start*y,c=(a+(o.padding+i.end*y))/2;r>0&&e.append(`line`).attr(`x1`,a).attr(`x2`,a).attr(`y1`,o.padding).attr(`y2`,m-o.padding).attr(`stroke`,`#000`).attr(`stroke-width`,1).attr(`stroke-dasharray`,`5 5`).attr(`opacity`,.8),e.append(`text`).attr(`class`,`wardley-stage-label`).attr(`x`,c).attr(`y`,m-o.padding/1.5).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize-2).attr(`text-anchor`,`middle`).text(t)})}if(o.showGrid){let e=_.append(`g`).attr(`class`,`wardley-grid`);for(let t=1;t<4;t++){let n=t/4,r=o.padding+y*n;e.append(`line`).attr(`x1`,r).attr(`x2`,r).attr(`y1`,o.padding).attr(`y2`,m-o.padding).attr(`stroke`,s.gridColor).attr(`stroke-dasharray`,`2 6`),e.append(`line`).attr(`x1`,o.padding).attr(`x2`,p-o.padding).attr(`y1`,m-o.padding-b*n).attr(`y2`,m-o.padding-b*n).attr(`stroke`,s.gridColor).attr(`stroke-dasharray`,`2 6`)}}let D=new Map;if(d.nodes.forEach(e=>{D.set(e.id,{x:x(e.x),y:S(e.y),node:e})}),d.pipelines.length>0){let e=_.append(`g`).attr(`class`,`wardley-pipelines`),t=_.append(`g`).attr(`class`,`wardley-pipeline-links`);d.pipelines.forEach(n=>{if(n.componentIds.length===0)return;let r=n.componentIds.map(e=>({id:e,pos:D.get(e),node:d.nodes.find(t=>t.id===e)})).filter(e=>e.pos&&e.node).sort((e,t)=>e.node.x-t.node.x);for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.append(`line`).attr(`class`,`wardley-pipeline-evolution-link`).attr(`x1`,n.pos.x).attr(`y1`,n.pos.y).attr(`x2`,i.pos.x).attr(`y2`,i.pos.y).attr(`stroke`,s.linkStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,`4 4`)}let i=1/0,a=-1/0,l=0;if(n.componentIds.forEach(e=>{let t=D.get(e);t&&(i=Math.min(i,t.x),a=Math.max(a,t.x),l=t.y)}),i!==1/0&&a!==-1/0){let t=o.nodeRadius*4,r=l-t/2,u=D.get(n.nodeId);u&&(u.x=(i+a)/2,u.y=r-c/6),e.append(`rect`).attr(`class`,`wardley-pipeline-box`).attr(`x`,i-15).attr(`y`,r).attr(`width`,a-i+30).attr(`height`,t).attr(`fill`,`none`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`rx`,4).attr(`ry`,4)}})}let O=_.append(`g`).attr(`class`,`wardley-links`),k=new Map;d.pipelines.forEach(e=>{k.set(e.nodeId,new Set(e.componentIds))});let A=d.links.filter(e=>!(!D.has(e.source)||!D.has(e.target)||k.get(e.target)?.has(e.source)));O.selectAll(`line`).data(A).enter().append(`line`).attr(`class`,e=>`wardley-link${e.dashed?` wardley-link--dashed`:``}`).attr(`x1`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.source).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=n.x-t.x,a=n.y-t.y,s=Math.sqrt(i*i+a*a);return t.x+i/s*r}).attr(`y1`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.source).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=n.x-t.x,a=n.y-t.y,s=Math.sqrt(i*i+a*a);return t.y+a/s*r}).attr(`x2`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.target).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=t.x-n.x,a=t.y-n.y,s=Math.sqrt(i*i+a*a);return n.x+i/s*r}).attr(`y2`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.target).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=t.x-n.x,a=t.y-n.y,s=Math.sqrt(i*i+a*a);return n.y+a/s*r}).attr(`stroke`,s.linkStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,e=>e.dashed?`6 6`:null).attr(`marker-end`,e=>e.flow===`forward`||e.flow===`bidirectional`?`url(#link-arrow-end-${r})`:null).attr(`marker-start`,e=>e.flow===`backward`||e.flow===`bidirectional`?`url(#link-arrow-start-${r})`:null),O.selectAll(`text`).data(A.filter(e=>e.label)).enter().append(`text`).attr(`class`,`wardley-link-label`).attr(`x`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.x+n.x)/2,i=n.y-t.y,a=n.x-t.x;return r+i/Math.sqrt(a*a+i*i)*8}).attr(`y`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.y+n.y)/2,i=n.x-t.x,a=n.y-t.y,o=Math.sqrt(i*i+a*a);return r+-i/o*8}).attr(`fill`,s.axisTextColor).attr(`font-size`,o.labelFontSize).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).attr(`transform`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.x+n.x)/2,i=(t.y+n.y)/2,a=n.x-t.x,o=n.y-t.y,s=Math.sqrt(a*a+o*o),c=o/s,l=-a/s,u=r+c*8,d=i+l*8,f=Math.atan2(o,a)*180/Math.PI;return(f>90||f<-90)&&(f+=180),`rotate(${f} ${u} ${d})`}).text(e=>e.label);let j=_.append(`g`).attr(`class`,`wardley-trends`),M=d.trends.map(e=>{let t=D.get(e.nodeId);if(!t)return null;let n=x(e.targetX),r=S(e.targetY),i=n-t.x,a=r-t.y,s=Math.sqrt(i*i+a*a),c=o.nodeRadius+2;return{origin:t,targetX:n,targetY:r,adjustedX2:s>c?n-i/s*c:n,adjustedY2:s>c?r-a/s*c:r}}).filter(e=>e!==null);j.selectAll(`line`).data(M).enter().append(`line`).attr(`class`,`wardley-trend`).attr(`x1`,e=>e.origin.x).attr(`y1`,e=>e.origin.y).attr(`x2`,e=>e.adjustedX2).attr(`y2`,e=>e.adjustedY2).attr(`stroke`,s.evolutionStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,`4 4`).attr(`marker-end`,`url(#arrow-${r})`);let N=_.append(`g`).attr(`class`,`wardley-nodes`).selectAll(`g`).data(d.nodes).enter().append(`g`).attr(`class`,e=>[`wardley-node`,e.className?`wardley-node--${e.className}`:``].filter(Boolean).join(` `));N.filter(e=>e.sourceStrategy===`outsource`).append(`circle`).attr(`class`,`wardley-outsource-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#666`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.sourceStrategy===`buy`).append(`circle`).attr(`class`,`wardley-buy-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#ccc`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.sourceStrategy===`build`).append(`circle`).attr(`class`,`wardley-build-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#eee`).attr(`stroke`,`#000`).attr(`stroke-width`,1);let P=N.filter(e=>e.sourceStrategy===`market`);P.append(`circle`).attr(`class`,`wardley-market-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>!e.isPipelineParent&&e.sourceStrategy!==`market`&&e.className!==`anchor`).append(`circle`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius).attr(`fill`,s.componentFill).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1);let F=o.nodeRadius*.7,I=o.nodeRadius*1.2;if(P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x).attr(`y1`,e=>D.get(e.id).y-I).attr(`x2`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`y2`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`y1`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`x2`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`y2`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`y1`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`x2`,e=>D.get(e.id).x).attr(`y2`,e=>D.get(e.id).y-I).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y-I).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`cy`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`cy`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),N.filter(e=>e.isPipelineParent===!0).append(`rect`).attr(`x`,e=>D.get(e.id).x-c/2).attr(`y`,e=>D.get(e.id).y-c/2).attr(`width`,c).attr(`height`,c).attr(`fill`,s.componentFill).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.inertia===!0).append(`line`).attr(`class`,`wardley-inertia`).attr(`x1`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c/2+15:o.nodeRadius+15;return e.sourceStrategy&&(n+=o.nodeRadius+10),t.x+n}).attr(`y1`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c:o.nodeRadius*2;return t.y-n/2}).attr(`x2`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c/2+15:o.nodeRadius+15;return e.sourceStrategy&&(n+=o.nodeRadius+10),t.x+n}).attr(`y2`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c:o.nodeRadius*2;return t.y+n/2}).attr(`stroke`,s.componentStroke).attr(`stroke-width`,6),N.append(`text`).attr(`x`,e=>{let t=D.get(e.id);if(e.className===`anchor`)return e.labelOffsetX===void 0?t.x:t.x+e.labelOffsetX;let n=o.nodeLabelOffset;e.sourceStrategy&&e.labelOffsetX===void 0&&(n+=10);let r=e.labelOffsetX??n;return t.x+r}).attr(`y`,e=>{let t=D.get(e.id);if(e.className===`anchor`)return e.labelOffsetY===void 0?t.y-3:t.y+e.labelOffsetY;let n=-o.nodeLabelOffset;e.sourceStrategy&&e.labelOffsetY===void 0&&(n-=10);let r=e.labelOffsetY??n;return t.y+r}).attr(`class`,`wardley-node-label`).attr(`fill`,e=>e.className===`evolved`?s.evolutionStroke:e.className===`anchor`?`#000`:s.componentLabelColor).attr(`font-size`,o.labelFontSize).attr(`font-weight`,e=>e.className===`anchor`?`bold`:`normal`).attr(`text-anchor`,e=>e.className===`anchor`?`middle`:`start`).attr(`dominant-baseline`,e=>e.className===`anchor`?`middle`:`auto`).text(e=>e.label),d.annotations.length>0){let e=_.append(`g`).attr(`class`,`wardley-annotations`);if(d.annotations.forEach(t=>{let n=t.coordinates.map(e=>({x:x(e.x),y:S(e.y)}));if(n.length>1)for(let t=0;t<n.length-1;t++)e.append(`line`).attr(`class`,`wardley-annotation-line`).attr(`x1`,n[t].x).attr(`y1`,n[t].y).attr(`x2`,n[t+1].x).attr(`y2`,n[t+1].y).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`stroke-dasharray`,`4 4`);n.forEach(n=>{let r=e.append(`g`).attr(`class`,`wardley-annotation`);r.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,10).attr(`fill`,`white`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5),r.append(`text`).attr(`x`,n.x).attr(`y`,n.y).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).attr(`font-size`,10).attr(`fill`,s.axisTextColor).attr(`font-weight`,`bold`).text(t.number)})}),d.annotationsBox){let t=x(d.annotationsBox.x),n=S(d.annotationsBox.y),r=e.append(`g`).attr(`class`,`wardley-annotations-box`),i=[...d.annotations].filter(e=>e.text).sort((e,t)=>e.number-t.number),a=[];if(i.forEach((e,i)=>{let o=r.append(`text`).attr(`x`,t+10).attr(`y`,n+10+(i+1)*16).attr(`font-size`,11).attr(`fill`,s.axisTextColor).attr(`text-anchor`,`start`).attr(`dominant-baseline`,`middle`).text(`${e.number}. ${e.text}`);a.push(o)}),a.length>0){let e=0,c=0;a.forEach(t=>{let n=t.node(),r=n.getComputedTextLength();e=Math.max(e,r);let i=n.getBBox();c=Math.max(c,i.height)});let l=e+20+105,u=i.length*16+20+c/2,d=o.padding,f=p-o.padding-l,h=o.padding,g=m-o.padding-u;t=Math.max(d,Math.min(t,f)),n=Math.max(h,Math.min(n,g)),a.forEach((e,r)=>{e.attr(`x`,t+10).attr(`y`,n+10+(r+1)*16)}),r.insert(`rect`,`text`).attr(`x`,t).attr(`y`,n).attr(`width`,l).attr(`height`,u).attr(`fill`,`white`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`rx`,4).attr(`ry`,4)}}}if(d.notes.length>0){let e=_.append(`g`).attr(`class`,`wardley-notes`);d.notes.forEach(t=>{let n=x(t.x),r=S(t.y);e.append(`text`).attr(`x`,n).attr(`y`,r).attr(`text-anchor`,`start`).attr(`font-size`,11).attr(`fill`,s.axisTextColor).attr(`font-weight`,`bold`).text(t.text)})}if(d.accelerators.length>0){let e=_.append(`g`).attr(`class`,`wardley-accelerators`);d.accelerators.forEach(t=>{let n=x(t.x),r=S(t.y),i=`
|
|
3
3
|
M ${n} ${r-30/2}
|
|
4
4
|
L ${n+60-20} ${r-30/2}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as e,h as t}from"./src-
|
|
1
|
+
import{g as e,h as t}from"./src-CslsSLVV.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f,z as p}from"./chunk-CSCIHK7Q-C_v3KOxf.js";import{t as m}from"./linear-BDDnY--V.js";import{t as h}from"./ordinal-hYBb2elL.js";import{t as g}from"./init-D6jRqBbL.js";import{i as _}from"./chunk-5ZQYHXKU-BCvNFwZ5.js";import{t as v}from"./line-DeameHHf.js";import{t as y}from"./chunk-WU5MYG2G-CWG30QUB.js";import{t as b}from"./chunk-O5CBEL6O-D953Jfjo.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=h().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=x(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},g.apply(d(),arguments)}var C=(function(){var e=t(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],a=[1,5],o=[1,6],s=[1,7],c=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:t(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:t(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(n,r,{3:1,4:2,7:4,5:i,34:a,35:o,36:s}),{1:[3]},e(n,r,{4:2,7:4,3:8,5:i,34:a,35:o,36:s}),e(n,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:o,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(c,[2,34]),e(c,[2,35]),e(c,[2,36]),{1:[2,1]},e(n,r,{4:2,7:4,3:21,5:i,34:a,35:o,36:s}),{1:[2,3]},e(c,[2,5]),e(n,[2,7],{4:22,34:a,35:o,36:s}),{11:23,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:t(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:t(function(e){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}t(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}t(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
|
|
2
2
|
`+h.showPosition()+`
|
|
3
3
|
Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};k.lexer=(function(){return{EOF:1,parseError:t(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:t(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:t(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:t(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:t(function(){return this._more=!0,this},`more`),reject:t(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:t(function(e){this.unput(this.match.slice(e))},`less`),pastInput:t(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:t(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:t(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
|
package/viewer/dist/index.html
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='80' font-size='80'>✦</text></svg>" />
|
|
8
8
|
<script>
|
|
9
9
|
// Apply the saved theme before first paint to avoid a flash.
|
|
10
|
-
var ok = ['observatory', 'claw', 'black', 'synthwave'];
|
|
10
|
+
var ok = ['observatory', 'claw', 'black', 'synthwave', 'sumi', 'daylight', 'frost', 'ember', 'corona'];
|
|
11
11
|
var saved = localStorage.getItem('constellation-theme');
|
|
12
12
|
document.documentElement.dataset.theme = ok.indexOf(saved) >= 0 ? saved : 'observatory';
|
|
13
13
|
</script>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-BRID9hB2.js"></script>
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CI5JmpBT.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="app"></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-NNHCCRGN-DlpIbxXb.js";import{x as e}from"./mermaid-parser.core-DzlZTbbh.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,ot as t}from"./chunk-CSCIHK7Q-C0rsBwqP.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-BM42HDAG-RD63uyvd.js","assets/src-CAMdANUp.js","assets/chunk-O5CBEL6O-JAEZ_pS6.js","assets/chunk-5ZQYHXKU-Bxe5xIy_.js","assets/dist-CFOOgrqc.js","assets/chunk-CSCIHK7Q-C0rsBwqP.js","assets/index-DRPsTWe2.js","assets/index-CDR-riG2.css","assets/dagre-Bx709z4p.js","assets/graphlib-B8gBHxth.js","assets/chunk-3OPIFGDE-BynpXh1r.js","assets/chunk-L5ZTLDWV-DS4vRI1U.js","assets/chunk-NZK2D7GU-Dh986nJk.js","assets/rough.esm-CSKSodPl.js","assets/chunk-BSJP7CBP-DbAKfVCK.js","assets/chunk-KSCS5N6A-CXXwf52I.js","assets/line-B8MygbLB.js","assets/path-BWPyau1x.js","assets/array-BifhSqXX.js","assets/cose-bilkent-S5V4N54A-NGC7gYHM.js","assets/cytoscape.esm-h6BdjjI9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{g as e,h as t}from"./src-CAMdANUp.js";import{t as n}from"./index-DRPsTWe2.js";import{b as r,s as i}from"./chunk-CSCIHK7Q-C0rsBwqP.js";import{d as a}from"./chunk-5ZQYHXKU-Bxe5xIy_.js";import{a as o,i as s,s as c}from"./chunk-3OPIFGDE-BynpXh1r.js";import{a as l,i as u,n as d,r as f}from"./chunk-KSCS5N6A-CXXwf52I.js";var p={common:i,getConfig:r,insertCluster:s,insertEdge:d,insertEdgeLabel:f,insertMarkers:u,insertNode:o,interpolateToCurve:a,labelHelper:c,log:e,positionEdgeLabel:l},m={},h=t(e=>{for(let t of e)m[t.name]=t},`registerLayoutLoaders`);t(()=>{h([{name:`dagre`,loader:t(async()=>await n(()=>import(`./dagre-BM42HDAG-RD63uyvd.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),`loader`)},{name:`cose-bilkent`,loader:t(async()=>await n(()=>import(`./cose-bilkent-S5V4N54A-NGC7gYHM.js`),__vite__mapDeps([19,1,20])),`loader`)}])},`registerDefaultLayoutLoaders`)();var g=t(async(e,t)=>{if(!(e.layoutAlgorithm in m))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let n=m[e.layoutAlgorithm],r=await n.loader(),{theme:i,themeVariables:a}=e.config,{useGradient:o,gradientStart:s,gradientStop:c}=a,l=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),o){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,s).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,c).attr(`stop-opacity`,1)}return r.render(e,t,p,{algorithm:n.algorithm})},`render`),_=t((t=``,{fallback:n=`dagre`}={})=>{if(t in m)return t;if(n in m)return e.warn(`Layout algorithm ${t} is not registered. Using ${n} as fallback.`),n;throw Error(`Both layout algorithms ${t} and ${n} are not registered.`)},`getRegisteredLayoutAlgorithm`);export{h as n,g as r,_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-CAMdANUp.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e,p as t}from"./src-CAMdANUp.js";import{x as n}from"./chunk-CSCIHK7Q-C0rsBwqP.js";var r=e(e=>{let{securityLevel:r}=n(),i=t(`body`);return r===`sandbox`&&(i=t((t(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-CAMdANUp.js";import"./chunk-CSCIHK7Q-C0rsBwqP.js";import"./chunk-5ZQYHXKU-Bxe5xIy_.js";import"./chunk-O5CBEL6O-JAEZ_pS6.js";import"./chunk-FMBD7UC4-BAtzt0wv.js";import"./chunk-BSJP7CBP-DbAKfVCK.js";import"./chunk-L5ZTLDWV-DS4vRI1U.js";import"./chunk-ND2GUHAM-CUSnPl8t.js";import"./chunk-55IACEB6-nBwigOgn.js";import"./chunk-2J33WTMH-z09tLTpZ.js";import"./chunk-NZK2D7GU-Dh986nJk.js";import"./chunk-3OPIFGDE-BynpXh1r.js";import"./chunk-KSCS5N6A-CXXwf52I.js";import"./chunk-LZXEDZCA-CclT9MXr.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-DZmTgL68.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-CAMdANUp.js";import"./chunk-CSCIHK7Q-C0rsBwqP.js";import"./chunk-5ZQYHXKU-Bxe5xIy_.js";import"./chunk-O5CBEL6O-JAEZ_pS6.js";import"./chunk-FMBD7UC4-BAtzt0wv.js";import"./chunk-BSJP7CBP-DbAKfVCK.js";import"./chunk-L5ZTLDWV-DS4vRI1U.js";import"./chunk-ND2GUHAM-CUSnPl8t.js";import"./chunk-55IACEB6-nBwigOgn.js";import"./chunk-2J33WTMH-z09tLTpZ.js";import"./chunk-NZK2D7GU-Dh986nJk.js";import"./chunk-3OPIFGDE-BynpXh1r.js";import"./chunk-KSCS5N6A-CXXwf52I.js";import"./chunk-LZXEDZCA-CclT9MXr.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-DZmTgL68.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-NNHCCRGN-DlpIbxXb.js";import{y as e}from"./mermaid-parser.core-DzlZTbbh.js";export{e as createEventModelingServices};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer utilities{.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.inline{display:inline}.border{border-style:var(--tw-border-style);border-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--radius:6px}:root[data-theme=observatory]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#07080f;--bg-panel:#0c0e18;--bg-inset:#11131f;--text:#e6e8f2;--text-muted:#8d93ad;--text-faint:#5a5f78;--accent:#8ab4ff;--border:#1b1e30;--border-strong:#2a2e48;--shadow:0 12px 32px #00000080;--sky:radial-gradient(1px 1px at 12% 28%, #fff8 50%, transparent 51%), radial-gradient(1px 1px at 38% 12%, #fff5 50%, transparent 51%), radial-gradient(1.5px 1.5px at 64% 38%, #fff9 50%, transparent 51%), radial-gradient(1px 1px at 81% 18%, #fff6 50%, transparent 51%), radial-gradient(1px 1px at 91% 52%, #fff4 50%, transparent 51%), radial-gradient(1.5px 1.5px at 26% 64%, #fff6 50%, transparent 51%), radial-gradient(1px 1px at 53% 78%, #fff5 50%, transparent 51%), radial-gradient(1px 1px at 72% 88%, #fff3 50%, transparent 51%), radial-gradient(900px 500px at 70% -10%, #1b2240cc, transparent 70%), radial-gradient(700px 600px at 0% 100%, #131a3399, transparent 70%)}:root[data-theme=claw]{--sans:"Avenir Next", Seravek, "Segoe UI", sans-serif;--display:"Iowan Old Style", "Palatino Linotype", Palatino, Charter, Georgia, serif;--body-font:var(--display);--bg:#faf9f5;--bg-panel:#f1efe7;--bg-inset:#eceadf;--text:#1a1915;--text-muted:#6e6a5e;--text-faint:#a39e8e;--accent:#c45c3c;--border:#e3e0d2;--border-strong:#cfcab8;--shadow:0 10px 28px #5a46281a;--sky:radial-gradient(800px 400px at 80% -10%, #d9775718, transparent 70%), radial-gradient(600px 500px at -10% 110%, #d9775710, transparent 70%)}:root[data-theme=black]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#000;--bg-panel:#0a0a0c;--bg-inset:#151518;--text:#f4f4f6;--text-muted:#8a8a93;--text-faint:#54545c;--accent:#6ea8ff;--border:#1c1c21;--border-strong:#2d2d34;--shadow:0 14px 36px #000000bf;--sky:radial-gradient(1100px 600px at 78% -22%, #ffffff0a, transparent 70%)}:root[data-theme=synthwave]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#08010f;--bg-panel:#110323;--bg-inset:#1a0735;--text:#fdf2ff;--text-muted:#d8a4ff;--text-faint:#9259d6;--accent:#ff2ec4;--border:#3a1170;--border-strong:#7a2ad6;--shadow:0 14px 48px #ff2ec452;--sky:radial-gradient(1000px 520px at 74% -12%, #ff2ec44a, transparent 62%), radial-gradient(880px 620px at -8% 4%, #8a2bff42, transparent 60%), radial-gradient(1000px 760px at 50% 122%, #12e6ff38, transparent 70%), linear-gradient(180deg, #06010c 0%, #0c0320 55%, #11052e 100%);--t-API:#ff4d6d;--t-DB:#ffd23f;--t-DATATYPE:#16ffd5;--t-ROLE:#c77dff;--t-DOC:#4d9fff;--t-FILE:#aab3c5;--t-TEST:#5cff9d;--t-EXTERNAL:#ff9d3c;--t-EVENT:#ffe14d;--t-COMPONENT:#2be0ff;--t-PAGE:#5cc8ff;--t-JOB:#ffb35c;--t-FLOW:#b76bff;--t-STATE:#3dffc4;--t-DIAGRAM:#ff6ec7;--t-AGENT:#9dff5c;--t-PLAN:#ffe066}:root[data-theme=sumi]{--sans:"Avenir Next", Seravek, "Segoe UI", sans-serif;--display:"Iowan Old Style", "Palatino Linotype", Palatino, Charter, Georgia, serif;--body-font:var(--sans);--bg:#e8e6df;--bg-panel:#e1ded4;--bg-inset:#d7d3c8;--text:#2c2a24;--text-muted:#6b6658;--text-faint:#9b9686;--accent:#5c6b52;--border:#d2cdc0;--border-strong:#bcb6a6;--shadow:0 10px 28px #3c321e1a;--sky:radial-gradient(1200px 800px at 50% -25%, #00000005, transparent 70%);--t-API:#b1543f;--t-DB:#a8762a;--t-DATATYPE:#2f8a76;--t-ROLE:#9a5aa6;--t-DOC:#4a72b8;--t-FILE:#6f6a5c;--t-TEST:#4f8a48;--t-EXTERNAL:#b56a32;--t-EVENT:#a88a2a;--t-COMPONENT:#3a8a9c;--t-PAGE:#4a7bb0;--t-JOB:#8a6240;--t-FLOW:#7559a8;--t-STATE:#3a8a70;--t-DIAGRAM:#b15a84;--t-AGENT:#5f8a3a;--t-PLAN:#a8893f}:root[data-theme=daylight]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#fbfcfd;--bg-panel:#f2f5f8;--bg-inset:#e9edf2;--text:#1f2430;--text-muted:#5a6473;--text-faint:#9aa3b2;--accent:#2f6fed;--border:#e2e7ee;--border-strong:#cbd3dd;--shadow:0 10px 28px #1e283c1a;--sky:radial-gradient(1000px 600px at 80% -15%, #2f6fed0c, transparent 70%), radial-gradient(700px 500px at -5% 105%, #2f6fed08, transparent 70%);--t-API:#d6453f;--t-DB:#c2872a;--t-DATATYPE:#1f9e88;--t-ROLE:#a85bbf;--t-DOC:#2f6fed;--t-FILE:#6b7280;--t-TEST:#2f9e54;--t-EXTERNAL:#d9762e;--t-EVENT:#c79a1f;--t-COMPONENT:#1f97b0;--t-PAGE:#2f7fd6;--t-JOB:#9c6a3f;--t-FLOW:#8257c9;--t-STATE:#1f9e7a;--t-DIAGRAM:#d15a92;--t-AGENT:#5a9e2f;--t-PLAN:#b08a2a}:root[data-theme=nord]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#2e3440;--bg-panel:#323a47;--bg-inset:#3b4252;--text:#e5e9f0;--text-muted:#9aa3b5;--text-faint:#6b7488;--accent:#88c0d0;--border:#3b4252;--border-strong:#4c566a;--shadow:0 12px 32px #00000073;--sky:radial-gradient(1000px 560px at 76% -12%, #88c0d01f, transparent 65%), radial-gradient(820px 620px at -8% 8%, #5e81ac26, transparent 62%);--t-API:#bf616a;--t-DB:#ebcb8b;--t-DATATYPE:#8fbcbb;--t-ROLE:#b48ead;--t-DOC:#81a1c1;--t-FILE:#9aa3b5;--t-TEST:#a3be8c;--t-EXTERNAL:#d08770;--t-EVENT:#ebcb8b;--t-COMPONENT:#88c0d0;--t-PAGE:#81a1c1;--t-JOB:#d08770;--t-FLOW:#b48ead;--t-STATE:#8fbcbb;--t-DIAGRAM:#b48ead;--t-AGENT:#a3be8c;--t-PLAN:#ebcb8b}:root[data-theme=conifer]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#0c1510;--bg-panel:#11201a;--bg-inset:#16271f;--text:#e4ece5;--text-muted:#8fa394;--text-faint:#5c7064;--accent:#7fb069;--border:#1d3028;--border-strong:#2c4537;--shadow:0 12px 32px #00000080;--sky:radial-gradient(900px 500px at 75% -10%, #2f5e3f55, transparent 70%), radial-gradient(700px 600px at -5% 100%, #1d3a2899, transparent 70%)}:root[data-theme=ember]{--sans:"Avenir Next", Seravek, "Gill Sans", "Segoe UI", sans-serif;--display:var(--sans);--body-font:var(--sans);--bg:#1c1815;--bg-panel:#251f1a;--bg-inset:#2e2620;--text:#f0e4d4;--text-muted:#b09a82;--text-faint:#6f5f4f;--accent:#fe8019;--border:#322a22;--border-strong:#463a2e;--shadow:0 12px 32px #0000008c;--sky:radial-gradient(1000px 520px at 78% -12%, #fe801922, transparent 65%), radial-gradient(800px 600px at -8% 105%, #cc5c0018, transparent 70%)}:root{--t-API:#e0635d;--t-DB:#d9a23c;--t-DATATYPE:#3fb8a0;--t-ROLE:#c47fd1;--t-DOC:#6a9fef;--t-FILE:#8a8f98;--t-TEST:#66b35c;--t-EXTERNAL:#e0894a;--t-EVENT:#d9b53c;--t-COMPONENT:#4cb3c9;--t-PAGE:#5d9fe0;--t-JOB:#b8845f;--t-FLOW:#9d7cd8;--t-STATE:#4faf92;--t-DIAGRAM:#e07fae;--t-AGENT:#84b35c;--t-PLAN:#d9c06a}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--body-font);margin:0;font-size:16px;line-height:1.65}body:before{content:"";background:var(--sky);pointer-events:none;z-index:0;position:fixed;inset:0}#app{z-index:1;position:relative}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.01em;line-height:1.25}code,pre,.mono{font-family:var(--mono)}pre.code{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1.1rem;font-size:.84rem;line-height:1.55;overflow-x:auto}::selection{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklab, var(--accent) 30%, transparent)}}.app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border);background:var(--bg-panel);flex:none;align-items:baseline;gap:1rem;padding:.8rem 1.2rem;display:flex}.brand{font-family:var(--display);color:var(--text);letter-spacing:.01em;font-size:1.05rem;font-weight:650}.brand:hover{text-decoration:none}.brand .star{color:var(--accent);margin-right:.45rem}.topbar .plan-name{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.topbar .spacer{flex:1}.theme-btn{font:.78rem var(--mono);color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:99px;padding:.3rem .85rem;transition:color .15s,border-color .15s}.theme-btn:hover{color:var(--text);border-color:var(--border-strong)}.panes{flex:1;min-height:0;display:flex}.sidenav,.cardlist,.detail{min-height:0;overflow-y:auto}nav.sidenav{border-right:1px solid var(--border);background:var(--bg-panel);width:212px;font-family:var(--sans);flex:none;padding:1rem .85rem 2rem;font-size:.93rem}.nav-home{border-radius:var(--radius);color:var(--text);align-items:center;gap:.5rem;margin-bottom:1rem;padding:.34rem .6rem;font-weight:600;display:flex}.nav-home:hover{background:var(--bg-inset);text-decoration:none}.nav-home.active{background:var(--bg-inset)}.nav-home .star{color:var(--accent);font-size:.8rem}.nav-group{margin-bottom:1.3rem}.nav-group h4{font:600 .66rem var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin:0 0 .45rem .6rem}.nav-group a{border-radius:var(--radius);color:var(--text);align-items:center;gap:.55rem;padding:.32rem .6rem;display:flex;position:relative}.nav-group a:hover{background:var(--bg-inset);text-decoration:none}.nav-group a.active{background:var(--bg-inset);font-weight:600}.nav-group a.active:before{content:"";background:var(--c,var(--accent));border-radius:0 2px 2px 0;width:3px;position:absolute;top:.3rem;bottom:.3rem;left:-.85rem}.nav-group a .star{color:var(--c,var(--accent));font-size:.72rem}.nav-group a .nav-label{flex:1}.nav-group a .count{font:.72rem var(--mono);color:var(--text-faint)}.cardlist{border-right:1px solid var(--border);background:var(--bg-panel);flex:none;width:310px}@supports (color:color-mix(in lab, red, red)){.cardlist{background:color-mix(in oklab, var(--bg-panel) 55%, var(--bg))}}.cardlist{flex-direction:column;display:flex}.cardlist-head{z-index:1;background:inherit;border-bottom:1px solid var(--border);flex:none;padding:.9rem .9rem .7rem;position:sticky;top:0}.cardlist-title{align-items:baseline;gap:.5rem;margin-bottom:.65rem;display:flex}.cardlist-title .star{color:var(--c,var(--accent));font-size:.8rem}.cardlist-title .label{font:600 .95rem var(--display);color:var(--text)}.cardlist-title .count{font:.72rem var(--mono);color:var(--text-faint);margin-left:auto}.cardlist-filter{width:100%;font:.82rem var(--sans);color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:7px;outline:none;padding:.34rem .6rem}.cardlist-filter:focus{border-color:var(--c,var(--accent))}.cardlist-filter::placeholder{color:var(--text-faint)}.cardlist-scroll{flex-direction:column;gap:.12rem;padding:.5rem;display:flex}.list-row{color:var(--text);border-radius:7px;align-items:center;gap:.5rem;padding:.4rem .55rem;display:flex}.list-row:hover{background:var(--bg-inset);text-decoration:none}.list-row.active{background:var(--c,var(--accent))}@supports (color:color-mix(in lab, red, red)){.list-row.active{background:color-mix(in oklab, var(--c,var(--accent)) 20%, var(--bg-inset))}}.list-row.active .lr-name{font-weight:600}.list-row.active .lr-handle{color:var(--c,var(--accent))}@supports (color:color-mix(in lab, red, red)){.list-row.active .lr-handle{color:color-mix(in oklab, var(--c,var(--accent)) 60%, var(--text-faint))}}.list-row .lr-main{flex-direction:column;flex:1;gap:.05rem;min-width:0;display:flex}.list-row .lr-name{font:.86rem var(--sans);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.list-row .lr-handle{font:.68rem var(--mono);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.list-row .dot{background:var(--text-faint);border-radius:99px;flex:none;width:7px;height:7px}.list-row .dot.building{background:#d9a23c}.list-row .dot.built{background:#5d9fe0}.list-row .dot.verified{background:#66b35c}.list-row.ghost{color:var(--text-faint);font:.8rem var(--mono);border:1px dashed var(--border-strong);cursor:pointer;opacity:.6;text-align:left;background:0 0;margin-top:.3rem}.list-row.ghost:hover{opacity:1;color:var(--text-muted);border-color:var(--accent)}.list-row.ghost .lr-prefix{font:.72rem var(--mono);color:var(--text-muted)}.list-row.ghost .inline-edit{flex:1}.detail{flex:1;min-width:0}.detail-inner{max-width:820px;margin:0 auto;padding:2rem 2.2rem 5rem}.type-intro{text-align:center;min-height:60vh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.2rem;display:flex}.type-intro .ti-star{color:var(--c,var(--accent));font-size:1.6rem}.type-intro h2{color:var(--text);margin:.3rem 0 0;font-size:1.4rem}.type-intro .ti-count{font:.78rem var(--mono);color:var(--text-faint);margin:0}.type-intro .ti-hint{color:var(--text-muted);margin:.5rem 0 0;font-size:.9rem}.empty.sm{padding:1rem .6rem;font-size:.82rem}@media (width<=900px){nav.sidenav{width:170px;font-size:.88rem}.cardlist{width:244px}.detail-inner{padding:1.4rem 1.4rem 4rem}}@media (width<=680px){.cardlist{display:none}}.theme-picker{position:relative}.theme-btn{align-items:center;gap:.5rem;display:inline-flex}.swatch{border:1px solid var(--border-strong);border-radius:4px;flex:none;width:14px;height:14px}.swatch[data-swatch=observatory]{background:linear-gradient(135deg,#07080f 50%,#8ab4ff 50%)}.swatch[data-swatch=claw]{background:linear-gradient(135deg,#faf9f5 50%,#c45c3c 50%)}.swatch[data-swatch=black]{background:linear-gradient(135deg,#050507 50%,#6ea8ff 50%)}.swatch[data-swatch=synthwave]{background:linear-gradient(135deg,#1d0838 50%,#ff3db0 50%)}.swatch[data-swatch=sumi]{background:linear-gradient(135deg,#e8e6df 50%,#5c6b52 50%)}.swatch[data-swatch=daylight]{background:linear-gradient(135deg,#fbfcfd 50%,#2f6fed 50%)}.swatch[data-swatch=nord]{background:linear-gradient(135deg,#2e3440 50%,#88c0d0 50%)}.swatch[data-swatch=conifer]{background:linear-gradient(135deg,#0c1510 50%,#7fb069 50%)}.swatch[data-swatch=ember]{background:linear-gradient(135deg,#1c1815 50%,#fe8019 50%)}.theme-backdrop{cursor:default;z-index:40;background:0 0;border:none;position:fixed;inset:0}.theme-menu{z-index:41;background:var(--bg-panel);border:1px solid var(--border-strong);min-width:11rem;box-shadow:var(--shadow);border-radius:10px;flex-direction:column;gap:.1rem;padding:.3rem;display:flex;position:absolute;top:calc(100% + .4rem);right:0}.theme-opt{cursor:pointer;font:.84rem var(--sans);color:var(--text);text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:.6rem;padding:.4rem .55rem;display:flex}.theme-opt:hover{background:var(--bg-inset)}.theme-opt.current{background:var(--bg-inset);font-weight:600}.star{color:var(--c,var(--accent))}.chip{font:500 .74rem var(--mono);color:var(--text);background:var(--c,var(--accent));align-items:center;gap:.4rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.chip{background:color-mix(in oklab, var(--c,var(--accent)) 12%, transparent)}}.chip{border:1px solid var(--c,var(--accent))}@supports (color:color-mix(in lab, red, red)){.chip{border:1px solid color-mix(in oklab, var(--c,var(--accent)) 35%, transparent)}}.chip{white-space:nowrap;border-radius:99px;padding:.18rem .65rem}a.chip:hover{border-color:var(--c,var(--accent));text-decoration:none}a.wiki{font:500 .82em var(--mono);background:var(--accent);border-radius:5px;padding:.05em .4em}@supports (color:color-mix(in lab, red, red)){a.wiki{background:color-mix(in oklab, var(--accent) 10%, transparent)}}a.wiki{border:1px solid var(--accent)}@supports (color:color-mix(in lab, red, red)){a.wiki{border:1px solid color-mix(in oklab, var(--accent) 25%, transparent)}}a.wiki{white-space:nowrap}a.wiki:hover{border-color:var(--accent);text-decoration:none}.pill{font:600 .66rem var(--mono);text-transform:uppercase;letter-spacing:.08em;border:1px solid #0000;border-radius:99px;padding:.16rem .6rem}.pill.planned{color:var(--text-muted);border-color:var(--border-strong);border-style:dashed}.pill.building{color:#d9a23c;background:#d9a23c14;border-color:#d9a23c66}.pill.built{color:#5d9fe0;background:#5d9fe014;border-color:#5d9fe066}.pill.verified{color:#66b35c;background:#66b35c14;border-color:#66b35c66}.page{min-width:0;animation:.35s both rise}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.page-head{margin-bottom:3.25rem;position:relative}.page-head h1{margin:.1rem 0 .4rem;font-size:1.9rem}.page-head .handle{font:600 .8rem var(--mono);letter-spacing:.1em;color:var(--c,var(--accent));background:var(--c,var(--accent));align-items:center;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.page-head .handle{background:color-mix(in oklab, var(--c,var(--accent)) 15%, transparent)}}.page-head .handle{border:1px solid var(--c,var(--accent))}@supports (color:color-mix(in lab, red, red)){.page-head .handle{border:1px solid color-mix(in oklab, var(--c,var(--accent)) 38%, transparent)}}.page-head .handle{border-radius:7px;margin-bottom:1rem;padding:.3rem .72rem}.page-head .meta{align-items:center;gap:.6rem;margin-top:.6rem;display:flex}.page-head .kind{font:.74rem var(--mono);color:var(--text-muted)}.stats{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;gap:2.4rem;margin:1.6rem 0 2.4rem;padding:1.1rem 1.4rem;display:flex}.stats .stat .n{font:600 1.5rem var(--display);display:block}.stats .stat .label{font:.7rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.stats .stat.bad .n{color:#e0635d}.stats .stat.good .n{color:#66b35c}.tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem;margin-top:1rem;display:grid}.tile{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);animation:.35s both rise;animation-delay:calc(var(--i) * 22ms);border-radius:10px;padding:.85rem 1rem;transition:transform .15s,border-color .15s,box-shadow .15s;display:block}.tile:hover{border-color:var(--c);text-decoration:none;transform:translateY(-2px)}@supports (color:color-mix(in lab, red, red)){.tile:hover{border-color:color-mix(in oklab, var(--c) 45%, var(--border))}}.tile:hover{box-shadow:var(--shadow)}.tile .star{font-size:.8rem}.tile .t-label{font:600 .86rem var(--sans);margin-left:.4rem}.tile .t-count{font:.72rem var(--mono);color:var(--text-muted);margin-top:.15rem;display:block}.rows{flex-direction:column;gap:.45rem;display:flex}.row{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);animation:.3s both rise;animation-delay:calc(var(--i) * 18ms);border-radius:10px;align-items:baseline;gap:.9rem;padding:.7rem 1rem;transition:border-color .15s,transform .15s;display:flex}.row:hover{border-color:var(--c);text-decoration:none}@supports (color:color-mix(in lab, red, red)){.row:hover{border-color:color-mix(in oklab, var(--c) 45%, var(--border))}}.row:hover{transform:translate(2px)}.row .handle{font:500 .8rem var(--mono);color:var(--c,var(--accent))}.row .name{font-family:var(--sans);font-size:.92rem}.row .pill{margin-left:auto}.section{margin:2.2rem 0}.section>h3{font:600 .7rem var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);border-bottom:1px solid var(--border);margin:0 0 .8rem;padding-bottom:.45rem}.fm{grid-template-columns:minmax(120px,max-content) 1fr;gap:.45rem 1.4rem;font-size:.88rem;display:grid}.fm .k{font:500 .76rem var(--mono);color:var(--text-muted);padding-top:.15rem}.fm .v{min-width:0;font-family:var(--sans)}.fm .v code{font-size:.82rem}.fm-table{border-collapse:collapse;width:100%;font:.8rem var(--mono);margin:.2rem 0}.fm-table th{text-align:left;color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border);padding:.25rem .9rem .25rem 0;font-size:.68rem;font-weight:500}.fm-table td{border-bottom:1px solid var(--border);color:var(--text);vertical-align:top;padding:.3rem .9rem .3rem 0}.fm-table td.muted{color:var(--text-faint)}.fm-nested{border-left:2px solid var(--border);gap:.3rem;margin:.2rem 0;padding-left:.9rem;display:grid}.md{font-size:1rem}.md h1{margin:1.6rem 0 .6rem;font-size:1.45rem}.md h2{margin:1.5rem 0 .5rem;font-size:1.2rem}.md h3{margin:1.3rem 0 .4rem;font-size:1.02rem}.md p{margin:.7rem 0}.md ul,.md ol{padding-left:1.4rem}.md li{margin:.25rem 0}.md li>ul,.md li>ol{margin:.2rem 0}.md code:not(pre code){background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:.06em .35em;font-size:.84em}.md blockquote{border-left:3px solid var(--accent);color:var(--text-muted);margin:.8rem 0;padding:.1rem 1.1rem}.md table{border-collapse:collapse;font-size:.88rem}.md th,.md td{border:1px solid var(--border);text-align:left;padding:.35rem .7rem}.mermaid-block,.mermaid-host{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;justify-content:center;margin:1rem 0;padding:1.2rem;display:flex;overflow-x:auto}.mermaid-block svg,.mermaid-host svg{max-width:100%;height:auto}.mermaid-block .node rect,.mermaid-host .node rect,.mermaid-block .cluster rect,.mermaid-host .cluster rect{rx:6px;ry:6px}.conn-group{flex-wrap:wrap;align-items:baseline;gap:.8rem;margin:.5rem 0;display:flex}.conn-group .t{font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);min-width:86px}.empty{color:var(--text-faint);font-size:.88rem;font-style:italic}.loading{text-align:center;color:var(--text-faint);font:.85rem var(--mono);padding:5rem 0}.editable,.editable-static{border-radius:6px}.editable.block,.editable-static.block,.editing-wrap.block{display:block}.editable{cursor:text;transition:background .12s,box-shadow .12s}.editable:hover,.editable:focus-visible{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){.editable:hover,.editable:focus-visible{background:color-mix(in oklab, var(--accent) 7%, transparent)}}.editable:hover,.editable:focus-visible{box-shadow:0 0 0 4px var(--accent)}@supports (color:color-mix(in lab, red, red)){.editable:hover,.editable:focus-visible{box-shadow:0 0 0 4px color-mix(in oklab, var(--accent) 7%, transparent)}}.editable:hover,.editable:focus-visible{outline:none}.editable-empty{color:var(--text-faint);font-size:.85em;font-style:italic}.inline-edit{font:inherit;color:inherit;box-shadow:0 0 0 1px var(--accent), 0 0 0 4px var(--accent);background:0 0;border:none;border-radius:6px;outline:none}@supports (color:color-mix(in lab, red, red)){.inline-edit{box-shadow:0 0 0 1px color-mix(in oklab, var(--accent) 45%, transparent), 0 0 0 4px color-mix(in oklab, var(--accent) 8%, transparent)}}.inline-edit{width:100%;max-width:100%;margin:-.05em -.3em;padding:.05em .3em}.inline-edit.mono{font-family:var(--mono);font-size:.84rem;line-height:1.55}textarea.inline-edit{resize:none;line-height:inherit;display:block;overflow:hidden}.editing-wrap{width:100%;display:inline-block;position:relative}.edit-hint{font:.66rem var(--mono);color:var(--text-faint);pointer-events:none;position:absolute;bottom:-1.3rem;right:.4rem}.ghost,.ghost-pill{font:.76rem var(--mono);color:var(--text-faint);border:1px dashed var(--border-strong);cursor:pointer;opacity:.55;background:0 0;border-radius:99px;padding:.18rem .7rem;transition:opacity .15s,color .15s,border-color .15s}.ghost:hover,.ghost-pill:hover{opacity:1;color:var(--text-muted);border-color:var(--accent)}.pill-row{flex-wrap:wrap;gap:.35rem;display:inline-flex}button.pill{cursor:pointer;background-color:#0000}button.pill.clickable:hover,button.pill.pick:hover{box-shadow:0 0 0 3px var(--accent)}@supports (color:color-mix(in lab, red, red)){button.pill.clickable:hover,button.pill.pick:hover{box-shadow:0 0 0 3px color-mix(in oklab, var(--accent) 12%, transparent)}}button.pill.pick.current{box-shadow:0 0 0 2px var(--border-strong)}.pill.ghost-pill{text-transform:none;letter-spacing:.02em}.chip-wrap{align-items:center;margin:0 .3rem .3rem 0;display:inline-flex;position:relative}.chip-wrap .chip{margin:0!important}.chip-x{text-align:center;width:1rem;height:1rem;color:var(--text-muted);background:var(--bg-panel);border:1px solid var(--border-strong);cursor:pointer;opacity:0;border-radius:99px;padding:0;font-size:.7rem;line-height:.85rem;transition:opacity .12s;position:absolute;top:-.45rem;right:-.45rem}.chip-wrap:hover .chip-x{opacity:1}.chip-x:hover{color:#e0635d;border-color:#e0635d}button.ghost-row{font:inherit;text-align:left;cursor:pointer;opacity:.55;border-style:dashed;transition:opacity .15s,border-color .15s}button.ghost-row:hover{opacity:1;border-color:var(--accent);transform:none}.ghost-row .handle{color:var(--text-muted)}div.ghost-row{border-style:dashed}div.ghost-row .inline-edit{font-family:var(--mono);flex:1;font-size:.8rem}.head-actions{position:absolute;top:0;right:0}.quiet-action{font:.7rem var(--mono);color:var(--text-faint);cursor:pointer;opacity:0;background:0 0;border:none;padding:0 .3rem;transition:opacity .15s,color .15s}.page-head:hover .quiet-action{opacity:.7}.quiet-action:hover{color:var(--text-muted);opacity:1!important}.quiet-action.danger{color:#e0635d;opacity:.9}.statusline{z-index:10;font:.74rem var(--mono);color:var(--text);background:var(--bg-panel);border:1px solid var(--border-strong);max-width:28rem;box-shadow:var(--shadow);border-radius:8px;padding:.5rem .9rem;animation:.2s both rise;position:fixed;bottom:1.2rem;right:1.2rem}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|