strikethroo 3.1.0 → 3.3.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 (189) hide show
  1. package/README.md +6 -0
  2. package/dist/serve/config-write.d.ts +38 -0
  3. package/dist/serve/config-write.d.ts.map +1 -0
  4. package/dist/serve/config-write.js +99 -0
  5. package/dist/serve/config-write.js.map +1 -0
  6. package/dist/serve/server.d.ts.map +1 -1
  7. package/dist/serve/server.js +83 -3
  8. package/dist/serve/server.js.map +1 -1
  9. package/dist/serve/workspace-model.d.ts +2 -0
  10. package/dist/serve/workspace-model.d.ts.map +1 -1
  11. package/dist/serve/workspace-model.js +9 -4
  12. package/dist/serve/workspace-model.js.map +1 -1
  13. package/dist-web/assets/apl-B4CMkyY2.js +1 -0
  14. package/dist-web/assets/{arc-BWWIDtzc.js → arc-knCCOStz.js} +1 -1
  15. package/dist-web/assets/{architectureDiagram-3BPJPVTR-DeYxmq4e.js → architectureDiagram-3BPJPVTR-Bws8kWqL.js} +1 -1
  16. package/dist-web/assets/asciiarmor-Df11BRmG.js +1 -0
  17. package/dist-web/assets/asn1-EdZsLKOL.js +1 -0
  18. package/dist-web/assets/asterisk-B-8jnY81.js +1 -0
  19. package/dist-web/assets/{blockDiagram-GPEHLZMM-DR85OQGh.js → blockDiagram-GPEHLZMM-BX6okS0w.js} +1 -1
  20. package/dist-web/assets/brainfuck-C4LP7Hcl.js +1 -0
  21. package/dist-web/assets/{c4Diagram-AAUBKEIU-B5p4vlmU.js → c4Diagram-AAUBKEIU-RrYp03rv.js} +1 -1
  22. package/dist-web/assets/channel-C0HE3NBn.js +1 -0
  23. package/dist-web/assets/{chunk-2J33WTMH-duXs_Bbu.js → chunk-2J33WTMH-K9mkNzjl.js} +1 -1
  24. package/dist-web/assets/{chunk-4BX2VUAB-DR1619KE.js → chunk-4BX2VUAB-BiWvudeh.js} +1 -1
  25. package/dist-web/assets/{chunk-55IACEB6-UacLKom4.js → chunk-55IACEB6-B-M-2M5x.js} +1 -1
  26. package/dist-web/assets/{chunk-727SXJPM-DW2a_NI7.js → chunk-727SXJPM-Cl8dVhHI.js} +1 -1
  27. package/dist-web/assets/{chunk-AQP2D5EJ-Bu5jn-_L.js → chunk-AQP2D5EJ-CTUaoWSg.js} +1 -1
  28. package/dist-web/assets/{chunk-FMBD7UC4-eJsExyuh.js → chunk-FMBD7UC4-D31yTwhs.js} +1 -1
  29. package/dist-web/assets/{chunk-ND2GUHAM-BqKmGd94.js → chunk-ND2GUHAM-DWi4VyL5.js} +1 -1
  30. package/dist-web/assets/{chunk-QZHKN3VN--ynTiOCz.js → chunk-QZHKN3VN-D9Dn87hE.js} +1 -1
  31. package/dist-web/assets/classDiagram-4FO5ZUOK-D8Qjx-f4.js +1 -0
  32. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D8Qjx-f4.js +1 -0
  33. package/dist-web/assets/clike-B9uivgTg.js +1 -0
  34. package/dist-web/assets/clojure-BMjYHr_A.js +1 -0
  35. package/dist-web/assets/cmake-BQqOBYOt.js +1 -0
  36. package/dist-web/assets/cobol-CWcv1MsR.js +1 -0
  37. package/dist-web/assets/coffeescript-S37ZYGWr.js +1 -0
  38. package/dist-web/assets/commonlisp-DBKNyK5s.js +1 -0
  39. package/dist-web/assets/{cose-bilkent-S5V4N54A-Ccz3r4S1.js → cose-bilkent-S5V4N54A-C9-T22_s.js} +1 -1
  40. package/dist-web/assets/crystal-SjHAIU92.js +1 -0
  41. package/dist-web/assets/css-BnMrqG3P.js +1 -0
  42. package/dist-web/assets/cypher-C_CwsFkJ.js +1 -0
  43. package/dist-web/assets/d-pRatUO7H.js +1 -0
  44. package/dist-web/assets/{dagre-BM42HDAG-BESSLbjB.js → dagre-BM42HDAG-A09dUOJL.js} +1 -1
  45. package/dist-web/assets/{diagram-2AECGRRQ-BB5cYRbY.js → diagram-2AECGRRQ-DwrVybq4.js} +1 -1
  46. package/dist-web/assets/{diagram-5GNKFQAL-3lmcZFDS.js → diagram-5GNKFQAL-DLpkoQtt.js} +1 -1
  47. package/dist-web/assets/{diagram-KO2AKTUF-DUMp202y.js → diagram-KO2AKTUF-Jocon_Xe.js} +1 -1
  48. package/dist-web/assets/{diagram-LMA3HP47-DCGXhLm1.js → diagram-LMA3HP47-B6ChgdVS.js} +1 -1
  49. package/dist-web/assets/{diagram-OG6HWLK6-D247gj5y.js → diagram-OG6HWLK6-BaDC55mI.js} +1 -1
  50. package/dist-web/assets/diff-DbItnlRl.js +1 -0
  51. package/dist-web/assets/dockerfile-BKs6k2Af.js +1 -0
  52. package/dist-web/assets/dtd-DF_7sFjM.js +1 -0
  53. package/dist-web/assets/dylan-DwRh75JA.js +1 -0
  54. package/dist-web/assets/ebnf-CDyGwa7X.js +1 -0
  55. package/dist-web/assets/ecl-Cabwm37j.js +1 -0
  56. package/dist-web/assets/eiffel-CnydiIhH.js +1 -0
  57. package/dist-web/assets/elm-vLlmbW-K.js +1 -0
  58. package/dist-web/assets/{erDiagram-TEJ5UH35-GI1vhsr2.js → erDiagram-TEJ5UH35-nIbymVZL.js} +1 -1
  59. package/dist-web/assets/erlang-BNw1qcRV.js +1 -0
  60. package/dist-web/assets/factor-kuTfRLto.js +1 -0
  61. package/dist-web/assets/fcl-Kvtd6kyn.js +1 -0
  62. package/dist-web/assets/{flowDiagram-I6XJVG4X-iqUPWZuf.js → flowDiagram-I6XJVG4X-xrqkVWp0.js} +1 -1
  63. package/dist-web/assets/forth-Ffai-XNe.js +1 -0
  64. package/dist-web/assets/fortran-DYz_wnZ1.js +1 -0
  65. package/dist-web/assets/{ganttDiagram-6RSMTGT7-DfG1X-Pe.js → ganttDiagram-6RSMTGT7-CrYQl1Bf.js} +1 -1
  66. package/dist-web/assets/gas-Bneqetm1.js +1 -0
  67. package/dist-web/assets/gherkin-heZmZLOM.js +1 -0
  68. package/dist-web/assets/{gitGraphDiagram-PVQCEYII-B2MrV3y6.js → gitGraphDiagram-PVQCEYII-B-gwe01r.js} +1 -1
  69. package/dist-web/assets/groovy-D9Dt4D0W.js +1 -0
  70. package/dist-web/assets/haskell-BWDZoCOh.js +1 -0
  71. package/dist-web/assets/haxe-H-WmDvRZ.js +1 -0
  72. package/dist-web/assets/http-DBlCnlav.js +1 -0
  73. package/dist-web/assets/idl-BEugSyMb.js +1 -0
  74. package/dist-web/assets/index-B-KlYMEI.js +1 -0
  75. package/dist-web/assets/index-B0a4C4Lb.js +1 -0
  76. package/dist-web/assets/index-B90tvIxG.js +3 -0
  77. package/dist-web/assets/index-BLXIwDvb.js +1 -0
  78. package/dist-web/assets/index-BjZYUODU.js +1 -0
  79. package/dist-web/assets/index-BmsczLPZ.js +1 -0
  80. package/dist-web/assets/index-BpU7RpGz.js +1 -0
  81. package/dist-web/assets/index-C53NKwQ5.js +1 -0
  82. package/dist-web/assets/index-C73riuQN.js +1 -0
  83. package/dist-web/assets/index-C9RcHSPW.js +1 -0
  84. package/dist-web/assets/index-CEBV-m_B.js +1 -0
  85. package/dist-web/assets/index-CG1O2Vjg.js +1 -0
  86. package/dist-web/assets/index-CPj2HG-l.js +2 -0
  87. package/dist-web/assets/index-CddJufqj.js +1 -0
  88. package/dist-web/assets/index-CuBsNWzH.js +13 -0
  89. package/dist-web/assets/index-CuCAyRTw.js +7 -0
  90. package/dist-web/assets/index-CuUh3dvS.js +1 -0
  91. package/dist-web/assets/index-CwPWc9jQ.js +1 -0
  92. package/dist-web/assets/index-DDJFTV_M.css +1 -0
  93. package/dist-web/assets/index-DHBbud_j.js +1 -0
  94. package/dist-web/assets/index-DwCVPhG5.js +2 -0
  95. package/dist-web/assets/index-LLaxWDbg.js +1 -0
  96. package/dist-web/assets/index-VKRDNacl.js +126 -0
  97. package/dist-web/assets/index-XOpAvr0E.js +13 -0
  98. package/dist-web/assets/index-lkaAPBmM.js +6 -0
  99. package/dist-web/assets/index-pUkuW0EP.js +1 -0
  100. package/dist-web/assets/index-sbfqG9cy.js +1 -0
  101. package/dist-web/assets/index-udFbjSlZ.js +2 -0
  102. package/dist-web/assets/index-yjEPVwyN.js +1 -0
  103. package/dist-web/assets/{infoDiagram-5YYISTIA-DGqU5K4a.js → infoDiagram-5YYISTIA-DHc_LHYj.js} +1 -1
  104. package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-DrMH3jRf.js → ishikawaDiagram-YF4QCWOH-rYrcy36K.js} +1 -1
  105. package/dist-web/assets/javascript-qCveANmP.js +1 -0
  106. package/dist-web/assets/{journeyDiagram-JHISSGLW-BH4wiwsd.js → journeyDiagram-JHISSGLW-1u2tObHJ.js} +1 -1
  107. package/dist-web/assets/julia-DuME0IfC.js +1 -0
  108. package/dist-web/assets/{kanban-definition-UN3LZRKU-DEV_dEgE.js → kanban-definition-UN3LZRKU-QxHU842T.js} +1 -1
  109. package/dist-web/assets/{linear-D81nAxzR.js → linear-D_f-pEGG.js} +1 -1
  110. package/dist-web/assets/livescript-BwQOo05w.js +1 -0
  111. package/dist-web/assets/lua-VAEuO923.js +1 -0
  112. package/dist-web/assets/mathematica-DTrFuWx2.js +1 -0
  113. package/dist-web/assets/mbox-CNhZ1qSd.js +1 -0
  114. package/dist-web/assets/{mermaid.core-BaP7clO2.js → mermaid.core-CxkaGWaD.js} +4 -4
  115. package/dist-web/assets/{mindmap-definition-RKZ34NQL-DM4iAZ4M.js → mindmap-definition-RKZ34NQL-DWsrWRBy.js} +1 -1
  116. package/dist-web/assets/mirc-CjQqDB4T.js +1 -0
  117. package/dist-web/assets/mllike-CXdrOF99.js +1 -0
  118. package/dist-web/assets/modelica-Dc1JOy9r.js +1 -0
  119. package/dist-web/assets/mscgen-BA5vi2Kp.js +1 -0
  120. package/dist-web/assets/mumps-BT43cFF4.js +1 -0
  121. package/dist-web/assets/nginx-DdIZxoE0.js +1 -0
  122. package/dist-web/assets/nsis-LdVXkNf5.js +1 -0
  123. package/dist-web/assets/ntriples-BfvgReVJ.js +1 -0
  124. package/dist-web/assets/octave-Ck1zUtKM.js +1 -0
  125. package/dist-web/assets/oz-BzwKVEFT.js +1 -0
  126. package/dist-web/assets/pascal--L3eBynH.js +1 -0
  127. package/dist-web/assets/perl-CdXCOZ3F.js +1 -0
  128. package/dist-web/assets/{pieDiagram-4H26LBE5-DinO6q5i.js → pieDiagram-4H26LBE5-Dp6JM0q2.js} +1 -1
  129. package/dist-web/assets/pig-CevX1Tat.js +1 -0
  130. package/dist-web/assets/powershell-CFHJl5sT.js +1 -0
  131. package/dist-web/assets/properties-C78fOPTZ.js +1 -0
  132. package/dist-web/assets/protobuf-ChK-085T.js +1 -0
  133. package/dist-web/assets/pug-DukmZTjD.js +1 -0
  134. package/dist-web/assets/puppet-DMA9R1ak.js +1 -0
  135. package/dist-web/assets/python-BuPzkPfP.js +1 -0
  136. package/dist-web/assets/q-pXgVlZs6.js +1 -0
  137. package/dist-web/assets/{quadrantDiagram-W4KKPZXB-CYvCm7U6.js → quadrantDiagram-W4KKPZXB-CpAFO-F6.js} +1 -1
  138. package/dist-web/assets/r-DUYO_cvP.js +1 -0
  139. package/dist-web/assets/{requirementDiagram-4Y6WPE33-DXfPIJ5m.js → requirementDiagram-4Y6WPE33-BGTkrX3s.js} +1 -1
  140. package/dist-web/assets/rpm-CTu-6PCP.js +1 -0
  141. package/dist-web/assets/ruby-B2Rjki9n.js +1 -0
  142. package/dist-web/assets/{sankeyDiagram-5OEKKPKP-CfovFay4.js → sankeyDiagram-5OEKKPKP-BU2psmAr.js} +1 -1
  143. package/dist-web/assets/sas-B4kiWyti.js +1 -0
  144. package/dist-web/assets/scheme-C41bIUwD.js +1 -0
  145. package/dist-web/assets/{sequenceDiagram-3UESZ5HK-BboUGmEB.js → sequenceDiagram-3UESZ5HK-Cnb-ORaT.js} +1 -1
  146. package/dist-web/assets/shell-CjFT_Tl9.js +1 -0
  147. package/dist-web/assets/sieve-C3Gn_uJK.js +1 -0
  148. package/dist-web/assets/simple-mode-GW_nhZxv.js +1 -0
  149. package/dist-web/assets/smalltalk-CnHTOXQT.js +1 -0
  150. package/dist-web/assets/solr-DehyRSwq.js +1 -0
  151. package/dist-web/assets/sparql-DkYu6x3z.js +1 -0
  152. package/dist-web/assets/spreadsheet-BCZA_wO0.js +1 -0
  153. package/dist-web/assets/sql-D0XecflT.js +1 -0
  154. package/dist-web/assets/{stateDiagram-AJRCARHV-CsB2FtnQ.js → stateDiagram-AJRCARHV-CE9fONdR.js} +1 -1
  155. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-Cl1jXClq.js +1 -0
  156. package/dist-web/assets/stex-C3f8Ysf7.js +1 -0
  157. package/dist-web/assets/stylus-B533Al4x.js +1 -0
  158. package/dist-web/assets/swift-BzpIVaGY.js +1 -0
  159. package/dist-web/assets/tcl-DVfN8rqt.js +1 -0
  160. package/dist-web/assets/textile-CnDTJFAw.js +1 -0
  161. package/dist-web/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  162. package/dist-web/assets/tiki-DGYXhP31.js +1 -0
  163. package/dist-web/assets/{timeline-definition-PNZ67QCA-Cma1yLcq.js → timeline-definition-PNZ67QCA-BIAiYD7s.js} +1 -1
  164. package/dist-web/assets/toml-Bm5Em-hy.js +1 -0
  165. package/dist-web/assets/troff-wAsdV37c.js +1 -0
  166. package/dist-web/assets/ttcn-CfJYG6tj.js +1 -0
  167. package/dist-web/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  168. package/dist-web/assets/turtle-B1tBg_DP.js +1 -0
  169. package/dist-web/assets/vb-CmGdzxic.js +1 -0
  170. package/dist-web/assets/vbscript-BuJXcnF6.js +1 -0
  171. package/dist-web/assets/velocity-D8B20fx6.js +1 -0
  172. package/dist-web/assets/{vennDiagram-CIIHVFJN-DhFGEgCQ.js → vennDiagram-CIIHVFJN-CSTpwnei.js} +1 -1
  173. package/dist-web/assets/verilog-C6RDOZhf.js +1 -0
  174. package/dist-web/assets/vhdl-lSbBsy5d.js +1 -0
  175. package/dist-web/assets/{wardley-L42UT6IY-DYkCeynG.js → wardley-L42UT6IY-M3Ko3q1F.js} +1 -1
  176. package/dist-web/assets/{wardleyDiagram-YWT4CUSO-jogT61m_.js → wardleyDiagram-YWT4CUSO-CYnUam8F.js} +1 -1
  177. package/dist-web/assets/webidl-ZXfAyPTL.js +1 -0
  178. package/dist-web/assets/xquery-CQfU5ijd.js +1 -0
  179. package/dist-web/assets/{xychartDiagram-2RQKCTM6-Cn3W0E3s.js → xychartDiagram-2RQKCTM6-DLFcTRDj.js} +1 -1
  180. package/dist-web/assets/yacas-BJ4BC0dw.js +1 -0
  181. package/dist-web/assets/z80-Hz9HOZM7.js +1 -0
  182. package/dist-web/index.html +2 -2
  183. package/package.json +20 -4
  184. package/dist-web/assets/channel-BaP08-ph.js +0 -1
  185. package/dist-web/assets/classDiagram-4FO5ZUOK-V5dHIfdR.js +0 -1
  186. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-V5dHIfdR.js +0 -1
  187. package/dist-web/assets/index-Bm5I46eC.css +0 -1
  188. package/dist-web/assets/index-CvfrFREc.js +0 -125
  189. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-D0D_KesS.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a$ as zt,a0 as Lt,a4 as Tt,b2 as At,a1 as Xt,b0 as Et,b as y,ad as Yt,a2 as It,s as Q,aC as et,a_ as Bt,E as Ft,t as Rt,a3 as V}from"./mermaid.core-BaP7clO2.js";import{p as Ot}from"./chunk-4BX2VUAB-DR1619KE.js";import{p as Wt}from"./wardley-L42UT6IY-DYkCeynG.js";import"./index-CvfrFREc.js";var G=y((a,o)=>{const e=a<=1?a*100:a;if(e<0||e>100)throw new Error(`${o} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${a}`);return e},"toPercent"),E=y((a,o,e)=>({x:G(o,`${e} evolution`),y:G(a,`${e} visibility`)}),"toCoordinates"),tt=y(a=>{if(a){if(a==="+<>")return"bidirectional";if(a==="+<")return"backward";if(a==="+>")return"forward"}},"getFlowFromPort"),Dt=y(a=>{if(!(a!=null&&a.startsWith("+")))return{};const o=/^\+'([^']*)'/.exec(a),e=o==null?void 0:o[1];return a.includes("<>")?{flow:"bidirectional",label:e}:a.includes("<")?{flow:"backward",label:e}:a.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Gt=y((a,o)=>{if(Ot(a,o),a.size&&o.setSize(a.size.width,a.size.height),a.evolution){const e=a.evolution.stages.map(r=>r.secondName?`${r.name.trim()} / ${r.secondName.trim()}`:r.name.trim()),p=a.evolution.stages.filter(r=>r.boundary!==void 0).map(r=>r.boundary);o.updateAxes({stages:e,stageBoundaries:p})}if(a.anchors.forEach(e=>{const p=E(e.visibility,e.evolution,`Anchor "${e.name}"`);o.addNode(e.name,e.name,p.x,p.y,"anchor")}),a.components.forEach(e=>{var v;const p=E(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,d=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,m=(v=e.decorator)==null?void 0:v.strategy;o.addNode(e.name,e.name,p.x,p.y,"component",r,d,e.inertia,m)}),a.notes.forEach(e=>{const p=E(e.visibility,e.evolution,`Note "${e.text}"`);o.addNote(e.text,p.x,p.y)}),a.pipelines.forEach(e=>{const p=o.getNode(e.parent);if(!p||typeof p.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);const r=p.y;o.startPipeline(e.parent),e.components.forEach(d=>{const m=`${e.parent}_${d.name}`,v=d.label?(d.label.negX?-1:1)*d.label.offsetX:void 0,g=d.label?(d.label.negY?-1:1)*d.label.offsetY:void 0,L=G(d.evolution,`Pipeline component "${d.name}" evolution`);o.addNode(m,d.name,L,r,"pipeline-component",v,g),o.addPipelineComponent(e.parent,m)})}),a.links.forEach(e=>{const p=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-."));let r=tt(e.fromPort)??tt(e.toPort);const{flow:d,label:m}=Dt(e.arrow);!r&&d&&(r=d);const v=e.linkLabel,g=m??v;o.addLink(o.resolveNodeId(e.from),o.resolveNodeId(e.to),p,g,r)}),a.evolves.forEach(e=>{const p=o.getNode(e.component);if((p==null?void 0:p.y)!==void 0){const r=G(e.target,`Evolve target for "${e.component}"`);o.addTrend(e.component,r,p.y)}}),a.annotations.length>0){const e=a.annotations[0],p=E(e.x,e.y,"Annotations box");o.setAnnotationsBox(p.x,p.y)}a.annotation.forEach(e=>{const p=E(e.x,e.y,`Annotation ${e.number}`);o.addAnnotation(e.number,[{x:p.x,y:p.y}],e.text)}),a.accelerators.forEach(e=>{const p=E(e.x,e.y,`Accelerator "${e.name}"`);o.addAccelerator(e.name,p.x,p.y)}),a.deaccelerators.forEach(e=>{const p=E(e.x,e.y,`Deaccelerator "${e.name}"`);o.addDeaccelerator(e.name,p.x,p.y)})},"populateDb"),at={parser:{yy:void 0},parse:y(async a=>{var p;const o=await Wt("wardley",a);et.debug(o);const e=(p=at.parser)==null?void 0:p.yy;if(!e||typeof e.addNode!="function")throw new 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.");Gt(o,e)},"parse")},I,qt=(I=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={}}addNode(o){const e=this.nodes.get(o.id)??{id:o.id,label:o.label},p={...e,...o,className:o.className??e.className,labelOffsetX:o.labelOffsetX??e.labelOffsetX,labelOffsetY:o.labelOffsetY??e.labelOffsetY};this.nodes.set(o.id,p)}addLink(o){this.links.push(o)}addTrend(o){this.trends.set(o.nodeId,o)}startPipeline(o){this.pipelines.set(o,{nodeId:o,componentIds:[]});const e=this.nodes.get(o);e&&(e.isPipelineParent=!0)}addPipelineComponent(o,e){const p=this.pipelines.get(o);p&&p.componentIds.push(e);const r=this.nodes.get(e);r&&(r.inPipeline=!0)}addAnnotation(o){this.annotations.push(o)}addNote(o){this.notes.push(o)}addAccelerator(o){this.accelerators.push(o)}addDeaccelerator(o){this.deaccelerators.push(o)}setAnnotationsBox(o,e){this.annotationsBox={x:o,y:e}}setAxes(o){this.axes={...this.axes,...o}}setSize(o,e){this.size={width:o,height:e}}getNode(o){return this.nodes.get(o)}resolveNodeId(o){if(this.nodes.has(o))return o;for(const[e,p]of this.nodes)if(p.label===o)return e;return o}build(){const o=[];for(const e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);o.push(e)}return{nodes:o,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}},y(I,"WardleyBuilder"),I),b=new qt;function rt(){return V()["wardley-beta"]}y(rt,"getConfig");function ot(a,o,e,p,r,d,m,v,g){b.addNode({id:a,label:o,x:e,y:p,className:r,labelOffsetX:d,labelOffsetY:m,inertia:v,sourceStrategy:g})}y(ot,"addNode");function st(a,o,e=!1,p,r){b.addLink({source:a,target:o,dashed:e,label:p,flow:r})}y(st,"addLink");function nt(a,o,e){b.addTrend({nodeId:a,targetX:o,targetY:e})}y(nt,"addTrend");function it(a,o,e){b.addAnnotation({number:a,coordinates:o,text:e})}y(it,"addAnnotation");function dt(a,o,e){b.addNote({text:a,x:o,y:e})}y(dt,"addNote");function lt(a,o,e){b.addAccelerator({name:a,x:o,y:e})}y(lt,"addAccelerator");function ct(a,o,e){b.addDeaccelerator({name:a,x:o,y:e})}y(ct,"addDeaccelerator");function pt(a,o){b.setAnnotationsBox(a,o)}y(pt,"setAnnotationsBox");function ht(a,o){b.setSize(a,o)}y(ht,"setSize");function xt(a){b.startPipeline(a)}y(xt,"startPipeline");function ft(a,o){b.addPipelineComponent(a,o)}y(ft,"addPipelineComponent");function gt(a){b.setAxes(a)}y(gt,"updateAxes");function ut(a){return b.getNode(a)}y(ut,"getNode");function yt(a){return b.resolveNodeId(a)}y(yt,"resolveNodeId");function mt(){return b.build()}y(mt,"getWardleyData");function wt(){b.clear(),Rt()}y(wt,"clear");var Ht={getConfig:rt,addNode:ot,addLink:st,addTrend:nt,addAnnotation:it,addNote:dt,addAccelerator:lt,addDeaccelerator:ct,setAnnotationsBox:pt,setSize:ht,startPipeline:xt,addPipelineComponent:ft,updateAxes:gt,getNode:ut,resolveNodeId:yt,getWardleyData:mt,clear:wt,setAccTitle:Et,getAccTitle:Xt,setDiagramTitle:At,getDiagramTitle:Tt,getAccDescription:Lt,setAccDescription:zt},jt=["Genesis","Custom Built","Product","Commodity"],Vt=y(()=>{var o,e,p,r,d,m,v,g,L,M,k,N;const{themeVariables:a}=V();return{backgroundColor:((o=a.wardley)==null?void 0:o.backgroundColor)??a.background??"#fff",axisColor:((e=a.wardley)==null?void 0:e.axisColor)??"#000",axisTextColor:((p=a.wardley)==null?void 0:p.axisTextColor)??a.primaryTextColor??"#222",gridColor:((r=a.wardley)==null?void 0:r.gridColor)??"rgba(100, 100, 100, 0.2)",componentFill:((d=a.wardley)==null?void 0:d.componentFill)??"#fff",componentStroke:((m=a.wardley)==null?void 0:m.componentStroke)??"#000",componentLabelColor:((v=a.wardley)==null?void 0:v.componentLabelColor)??a.primaryTextColor??"#222",linkStroke:((g=a.wardley)==null?void 0:g.linkStroke)??"#000",evolutionStroke:((L=a.wardley)==null?void 0:L.evolutionStroke)??"#dc3545",annotationStroke:((M=a.wardley)==null?void 0:M.annotationStroke)??"#000",annotationTextColor:((k=a.wardley)==null?void 0:k.annotationTextColor)??a.primaryTextColor??"#222",annotationFill:((N=a.wardley)==null?void 0:N.annotationFill)??a.background??"#fff"}},"getTheme"),_t=y(()=>{const a=V()["wardley-beta"];return{width:(a==null?void 0:a.width)??900,height:(a==null?void 0:a.height)??600,padding:(a==null?void 0:a.padding)??48,nodeRadius:(a==null?void 0:a.nodeRadius)??6,nodeLabelOffset:(a==null?void 0:a.nodeLabelOffset)??8,axisFontSize:(a==null?void 0:a.axisFontSize)??12,labelFontSize:(a==null?void 0:a.labelFontSize)??10,showGrid:(a==null?void 0:a.showGrid)??!1,useMaxWidth:(a==null?void 0:a.useMaxWidth)??!0}},"getConfigValues"),Zt=y((a,o,e,p)=>{var J,K;et.debug(`Rendering Wardley map
1
+ import{a$ as zt,a0 as Lt,a4 as Tt,b2 as At,a1 as Xt,b0 as Et,b as y,ad as Yt,a2 as It,s as Q,aC as et,a_ as Bt,E as Ft,t as Rt,a3 as V}from"./mermaid.core-CxkaGWaD.js";import{p as Ot}from"./chunk-4BX2VUAB-BiWvudeh.js";import{p as Wt}from"./wardley-L42UT6IY-M3Ko3q1F.js";import"./index-VKRDNacl.js";var G=y((a,o)=>{const e=a<=1?a*100:a;if(e<0||e>100)throw new Error(`${o} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${a}`);return e},"toPercent"),E=y((a,o,e)=>({x:G(o,`${e} evolution`),y:G(a,`${e} visibility`)}),"toCoordinates"),tt=y(a=>{if(a){if(a==="+<>")return"bidirectional";if(a==="+<")return"backward";if(a==="+>")return"forward"}},"getFlowFromPort"),Dt=y(a=>{if(!(a!=null&&a.startsWith("+")))return{};const o=/^\+'([^']*)'/.exec(a),e=o==null?void 0:o[1];return a.includes("<>")?{flow:"bidirectional",label:e}:a.includes("<")?{flow:"backward",label:e}:a.includes(">")?{flow:"forward",label:e}:{label:e}},"extractFlowFromArrow"),Gt=y((a,o)=>{if(Ot(a,o),a.size&&o.setSize(a.size.width,a.size.height),a.evolution){const e=a.evolution.stages.map(r=>r.secondName?`${r.name.trim()} / ${r.secondName.trim()}`:r.name.trim()),p=a.evolution.stages.filter(r=>r.boundary!==void 0).map(r=>r.boundary);o.updateAxes({stages:e,stageBoundaries:p})}if(a.anchors.forEach(e=>{const p=E(e.visibility,e.evolution,`Anchor "${e.name}"`);o.addNode(e.name,e.name,p.x,p.y,"anchor")}),a.components.forEach(e=>{var v;const p=E(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,d=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,m=(v=e.decorator)==null?void 0:v.strategy;o.addNode(e.name,e.name,p.x,p.y,"component",r,d,e.inertia,m)}),a.notes.forEach(e=>{const p=E(e.visibility,e.evolution,`Note "${e.text}"`);o.addNote(e.text,p.x,p.y)}),a.pipelines.forEach(e=>{const p=o.getNode(e.parent);if(!p||typeof p.y!="number")throw new Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);const r=p.y;o.startPipeline(e.parent),e.components.forEach(d=>{const m=`${e.parent}_${d.name}`,v=d.label?(d.label.negX?-1:1)*d.label.offsetX:void 0,g=d.label?(d.label.negY?-1:1)*d.label.offsetY:void 0,L=G(d.evolution,`Pipeline component "${d.name}" evolution`);o.addNode(m,d.name,L,r,"pipeline-component",v,g),o.addPipelineComponent(e.parent,m)})}),a.links.forEach(e=>{const p=!!e.arrow&&(e.arrow.includes("-.->")||e.arrow.includes(".-."));let r=tt(e.fromPort)??tt(e.toPort);const{flow:d,label:m}=Dt(e.arrow);!r&&d&&(r=d);const v=e.linkLabel,g=m??v;o.addLink(o.resolveNodeId(e.from),o.resolveNodeId(e.to),p,g,r)}),a.evolves.forEach(e=>{const p=o.getNode(e.component);if((p==null?void 0:p.y)!==void 0){const r=G(e.target,`Evolve target for "${e.component}"`);o.addTrend(e.component,r,p.y)}}),a.annotations.length>0){const e=a.annotations[0],p=E(e.x,e.y,"Annotations box");o.setAnnotationsBox(p.x,p.y)}a.annotation.forEach(e=>{const p=E(e.x,e.y,`Annotation ${e.number}`);o.addAnnotation(e.number,[{x:p.x,y:p.y}],e.text)}),a.accelerators.forEach(e=>{const p=E(e.x,e.y,`Accelerator "${e.name}"`);o.addAccelerator(e.name,p.x,p.y)}),a.deaccelerators.forEach(e=>{const p=E(e.x,e.y,`Deaccelerator "${e.name}"`);o.addDeaccelerator(e.name,p.x,p.y)})},"populateDb"),at={parser:{yy:void 0},parse:y(async a=>{var p;const o=await Wt("wardley",a);et.debug(o);const e=(p=at.parser)==null?void 0:p.yy;if(!e||typeof e.addNode!="function")throw new 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.");Gt(o,e)},"parse")},I,qt=(I=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={}}addNode(o){const e=this.nodes.get(o.id)??{id:o.id,label:o.label},p={...e,...o,className:o.className??e.className,labelOffsetX:o.labelOffsetX??e.labelOffsetX,labelOffsetY:o.labelOffsetY??e.labelOffsetY};this.nodes.set(o.id,p)}addLink(o){this.links.push(o)}addTrend(o){this.trends.set(o.nodeId,o)}startPipeline(o){this.pipelines.set(o,{nodeId:o,componentIds:[]});const e=this.nodes.get(o);e&&(e.isPipelineParent=!0)}addPipelineComponent(o,e){const p=this.pipelines.get(o);p&&p.componentIds.push(e);const r=this.nodes.get(e);r&&(r.inPipeline=!0)}addAnnotation(o){this.annotations.push(o)}addNote(o){this.notes.push(o)}addAccelerator(o){this.accelerators.push(o)}addDeaccelerator(o){this.deaccelerators.push(o)}setAnnotationsBox(o,e){this.annotationsBox={x:o,y:e}}setAxes(o){this.axes={...this.axes,...o}}setSize(o,e){this.size={width:o,height:e}}getNode(o){return this.nodes.get(o)}resolveNodeId(o){if(this.nodes.has(o))return o;for(const[e,p]of this.nodes)if(p.label===o)return e;return o}build(){const o=[];for(const e of this.nodes.values()){if(typeof e.x!="number"||typeof e.y!="number")throw new Error(`Node "${e.label}" is missing coordinates`);o.push(e)}return{nodes:o,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}},y(I,"WardleyBuilder"),I),b=new qt;function rt(){return V()["wardley-beta"]}y(rt,"getConfig");function ot(a,o,e,p,r,d,m,v,g){b.addNode({id:a,label:o,x:e,y:p,className:r,labelOffsetX:d,labelOffsetY:m,inertia:v,sourceStrategy:g})}y(ot,"addNode");function st(a,o,e=!1,p,r){b.addLink({source:a,target:o,dashed:e,label:p,flow:r})}y(st,"addLink");function nt(a,o,e){b.addTrend({nodeId:a,targetX:o,targetY:e})}y(nt,"addTrend");function it(a,o,e){b.addAnnotation({number:a,coordinates:o,text:e})}y(it,"addAnnotation");function dt(a,o,e){b.addNote({text:a,x:o,y:e})}y(dt,"addNote");function lt(a,o,e){b.addAccelerator({name:a,x:o,y:e})}y(lt,"addAccelerator");function ct(a,o,e){b.addDeaccelerator({name:a,x:o,y:e})}y(ct,"addDeaccelerator");function pt(a,o){b.setAnnotationsBox(a,o)}y(pt,"setAnnotationsBox");function ht(a,o){b.setSize(a,o)}y(ht,"setSize");function xt(a){b.startPipeline(a)}y(xt,"startPipeline");function ft(a,o){b.addPipelineComponent(a,o)}y(ft,"addPipelineComponent");function gt(a){b.setAxes(a)}y(gt,"updateAxes");function ut(a){return b.getNode(a)}y(ut,"getNode");function yt(a){return b.resolveNodeId(a)}y(yt,"resolveNodeId");function mt(){return b.build()}y(mt,"getWardleyData");function wt(){b.clear(),Rt()}y(wt,"clear");var Ht={getConfig:rt,addNode:ot,addLink:st,addTrend:nt,addAnnotation:it,addNote:dt,addAccelerator:lt,addDeaccelerator:ct,setAnnotationsBox:pt,setSize:ht,startPipeline:xt,addPipelineComponent:ft,updateAxes:gt,getNode:ut,resolveNodeId:yt,getWardleyData:mt,clear:wt,setAccTitle:Et,getAccTitle:Xt,setDiagramTitle:At,getDiagramTitle:Tt,getAccDescription:Lt,setAccDescription:zt},jt=["Genesis","Custom Built","Product","Commodity"],Vt=y(()=>{var o,e,p,r,d,m,v,g,L,M,k,N;const{themeVariables:a}=V();return{backgroundColor:((o=a.wardley)==null?void 0:o.backgroundColor)??a.background??"#fff",axisColor:((e=a.wardley)==null?void 0:e.axisColor)??"#000",axisTextColor:((p=a.wardley)==null?void 0:p.axisTextColor)??a.primaryTextColor??"#222",gridColor:((r=a.wardley)==null?void 0:r.gridColor)??"rgba(100, 100, 100, 0.2)",componentFill:((d=a.wardley)==null?void 0:d.componentFill)??"#fff",componentStroke:((m=a.wardley)==null?void 0:m.componentStroke)??"#000",componentLabelColor:((v=a.wardley)==null?void 0:v.componentLabelColor)??a.primaryTextColor??"#222",linkStroke:((g=a.wardley)==null?void 0:g.linkStroke)??"#000",evolutionStroke:((L=a.wardley)==null?void 0:L.evolutionStroke)??"#dc3545",annotationStroke:((M=a.wardley)==null?void 0:M.annotationStroke)??"#000",annotationTextColor:((k=a.wardley)==null?void 0:k.annotationTextColor)??a.primaryTextColor??"#222",annotationFill:((N=a.wardley)==null?void 0:N.annotationFill)??a.background??"#fff"}},"getTheme"),_t=y(()=>{const a=V()["wardley-beta"];return{width:(a==null?void 0:a.width)??900,height:(a==null?void 0:a.height)??600,padding:(a==null?void 0:a.padding)??48,nodeRadius:(a==null?void 0:a.nodeRadius)??6,nodeLabelOffset:(a==null?void 0:a.nodeLabelOffset)??8,axisFontSize:(a==null?void 0:a.axisFontSize)??12,labelFontSize:(a==null?void 0:a.labelFontSize)??10,showGrid:(a==null?void 0:a.showGrid)??!1,useMaxWidth:(a==null?void 0:a.useMaxWidth)??!0}},"getConfigValues"),Zt=y((a,o,e,p)=>{var J,K;et.debug(`Rendering Wardley map
2
2
  `+a);const r=_t(),d=Vt(),m=r.nodeRadius*1.6,v=p.db,g=v.getWardleyData(),L=v.getDiagramTitle(),M=((J=g.size)==null?void 0:J.width)??r.width,k=((K=g.size)==null?void 0:K.height)??r.height,N=Bt(o);N.selectAll("*").remove(),Ft(N,k,M,r.useMaxWidth),N.attr("viewBox",`0 0 ${M} ${k}`);const P=N.append("g").attr("class","wardley-map"),q=N.append("defs");q.append("marker").attr("id",`arrow-${o}`).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",d.evolutionStroke).attr("stroke","none"),q.append("marker").attr("id",`link-arrow-end-${o}`).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",d.linkStroke).attr("stroke","none"),q.append("marker").attr("id",`link-arrow-start-${o}`).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",d.linkStroke).attr("stroke","none"),P.append("rect").attr("class","wardley-background").attr("width",M).attr("height",k).attr("fill",d.backgroundColor);const B=M-r.padding*2,F=k-r.padding*2;L&&P.append("text").attr("class","wardley-title").attr("x",M/2).attr("y",r.padding/2).attr("fill",d.axisTextColor).attr("font-size",r.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(L);const T=y(t=>r.padding+t/100*B,"projectX"),A=y(t=>k-r.padding-t/100*F,"projectY"),O=P.append("g").attr("class","wardley-axes");O.append("line").attr("x1",r.padding).attr("x2",M-r.padding).attr("y1",k-r.padding).attr("y2",k-r.padding).attr("stroke",d.axisColor).attr("stroke-width",1),O.append("line").attr("x1",r.padding).attr("x2",r.padding).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",d.axisColor).attr("stroke-width",1);const kt=g.axes.xLabel??"Evolution",bt=g.axes.yLabel??"Visibility";O.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",r.padding+B/2).attr("y",k-r.padding/4).attr("fill",d.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(kt),O.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",r.padding/3).attr("y",r.padding+F/2).attr("fill",d.axisTextColor).attr("font-size",r.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${r.padding/3} ${r.padding+F/2})`).text(bt);const R=g.axes.stages&&g.axes.stages.length>0?g.axes.stages:jt;if(R.length>0){const t=P.append("g").attr("class","wardley-stages"),n=g.axes.stageBoundaries,s=[];if(n&&n.length===R.length){let i=0;n.forEach(h=>{s.push({start:i,end:h}),i=h})}else{const i=1/R.length;R.forEach((h,l)=>{s.push({start:l*i,end:(l+1)*i})})}R.forEach((i,h)=>{const l=s[h],x=r.padding+l.start*B,f=r.padding+l.end*B,u=(x+f)/2;h>0&&t.append("line").attr("x1",x).attr("x2",x).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),t.append("text").attr("class","wardley-stage-label").attr("x",u).attr("y",k-r.padding/1.5).attr("fill",d.axisTextColor).attr("font-size",r.axisFontSize-2).attr("text-anchor","middle").text(i)})}if(r.showGrid){const t=P.append("g").attr("class","wardley-grid");for(let n=1;n<4;n++){const s=n/4,i=r.padding+B*s;t.append("line").attr("x1",i).attr("x2",i).attr("y1",r.padding).attr("y2",k-r.padding).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",r.padding).attr("x2",M-r.padding).attr("y1",k-r.padding-F*s).attr("y2",k-r.padding-F*s).attr("stroke",d.gridColor).attr("stroke-dasharray","2 6")}}const c=new Map;if(g.nodes.forEach(t=>{c.set(t.id,{x:T(t.x),y:A(t.y),node:t})}),g.pipelines.length>0){const t=P.append("g").attr("class","wardley-pipelines"),n=P.append("g").attr("class","wardley-pipeline-links");g.pipelines.forEach(s=>{if(s.componentIds.length===0)return;const i=s.componentIds.map(f=>({id:f,pos:c.get(f),node:g.nodes.find(u=>u.id===f)})).filter(f=>f.pos&&f.node).sort((f,u)=>f.node.x-u.node.x);for(let f=0;f<i.length-1;f++){const u=i[f],w=i[f+1];n.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",u.pos.x).attr("y1",u.pos.y).attr("x2",w.pos.x).attr("y2",w.pos.y).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let h=1/0,l=-1/0,x=0;if(s.componentIds.forEach(f=>{const u=c.get(f);u&&(h=Math.min(h,u.x),l=Math.max(l,u.x),x=u.y)}),h!==1/0&&l!==-1/0){const u=r.nodeRadius*4,w=x-u/2,S=c.get(s.nodeId);if(S){const z=(h+l)/2;S.x=z,S.y=w-m/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",h-15).attr("y",w).attr("width",l-h+15*2).attr("height",u).attr("fill","none").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}const _=P.append("g").attr("class","wardley-links"),Z=new Map;g.pipelines.forEach(t=>{Z.set(t.nodeId,new Set(t.componentIds))});const U=g.links.filter(t=>{if(!c.has(t.source)||!c.has(t.target))return!1;const n=Z.get(t.target);return!(n!=null&&n.has(t.source))});_.selectAll("line").data(U).enter().append("line").attr("class",t=>`wardley-link${t.dashed?" wardley-link--dashed":""}`).attr("x1",t=>{const n=c.get(t.source),s=c.get(t.target),h=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):r.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.x+l/f*h}).attr("y1",t=>{const n=c.get(t.source),s=c.get(t.target),h=g.nodes.find(u=>u.id===t.source).isPipelineParent?m/Math.sqrt(2):r.nodeRadius,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x);return n.y+x/f*h}).attr("x2",t=>{const n=c.get(t.source),s=c.get(t.target),h=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):r.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.x+l/f*h}).attr("y2",t=>{const n=c.get(t.source),s=c.get(t.target),h=g.nodes.find(u=>u.id===t.target).isPipelineParent?m/Math.sqrt(2):r.nodeRadius,l=n.x-s.x,x=n.y-s.y,f=Math.sqrt(l*l+x*x);return s.y+x/f*h}).attr("stroke",d.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",t=>t.dashed?"6 6":null).attr("marker-end",t=>t.flow==="forward"||t.flow==="bidirectional"?`url(#link-arrow-end-${o})`:null).attr("marker-start",t=>t.flow==="backward"||t.flow==="bidirectional"?`url(#link-arrow-start-${o})`:null),_.selectAll("text").data(U.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,h=s.y-n.y,l=s.x-n.x,x=Math.sqrt(l*l+h*h),f=8,u=h/x;return i+u*f}).attr("y",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.y+s.y)/2,h=s.x-n.x,l=s.y-n.y,x=Math.sqrt(h*h+l*l),f=8,u=-h/x;return i+u*f}).attr("fill",d.axisTextColor).attr("font-size",r.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{const n=c.get(t.source),s=c.get(t.target),i=(n.x+s.x)/2,h=(n.y+s.y)/2,l=s.x-n.x,x=s.y-n.y,f=Math.sqrt(l*l+x*x),u=8,w=x/f,S=-l/f,z=i+w*u,W=h+S*u;let Y=Math.atan2(x,l)*180/Math.PI;return(Y>90||Y<-90)&&(Y+=180),`rotate(${Y} ${z} ${W})`}).text(t=>t.label);const $t=P.append("g").attr("class","wardley-trends"),vt=g.trends.map(t=>{const n=c.get(t.nodeId);if(!n)return null;const s=T(t.targetX),i=A(t.targetY),h=s-n.x,l=i-n.y,x=Math.sqrt(h*h+l*l),f=r.nodeRadius+2,u=x>f?s-h/x*f:s,w=x>f?i-l/x*f:i;return{origin:n,targetX:s,targetY:i,adjustedX2:u,adjustedY2:w}}).filter(t=>t!==null);$t.selectAll("line").data(vt).enter().append("line").attr("class","wardley-trend").attr("x1",t=>t.origin.x).attr("y1",t=>t.origin.y).attr("x2",t=>t.adjustedX2).attr("y2",t=>t.adjustedY2).attr("stroke",d.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${o})`);const C=P.append("g").attr("class","wardley-nodes").selectAll("g").data(g.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));C.filter(t=>t.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#666").attr("stroke",d.componentStroke).attr("stroke-width",1),C.filter(t=>t.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#ccc").attr("stroke",d.componentStroke).attr("stroke-width",1),C.filter(t=>t.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);const X=C.filter(t=>t.sourceStrategy==="market");X.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius*2).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",1),C.filter(t=>!t.isPipelineParent&&t.sourceStrategy!=="market"&&t.className!=="anchor").append("circle").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y).attr("r",r.nodeRadius).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1);const H=r.nodeRadius*.7,$=r.nodeRadius*1.2;if(X.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x).attr("y1",t=>c.get(t.id).y-$).attr("x2",t=>c.get(t.id).x-$*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),X.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x-$*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x+$*Math.cos(Math.PI/6)).attr("y2",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("stroke",d.componentStroke).attr("stroke-width",1),X.append("line").attr("class","wardley-market-line").attr("x1",t=>c.get(t.id).x+$*Math.cos(Math.PI/6)).attr("y1",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("x2",t=>c.get(t.id).x).attr("y2",t=>c.get(t.id).y-$).attr("stroke",d.componentStroke).attr("stroke-width",1),X.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x).attr("cy",t=>c.get(t.id).y-$).attr("r",H).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),X.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x-$*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("r",H).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),X.append("circle").attr("class","wardley-market-dot").attr("cx",t=>c.get(t.id).x+$*Math.cos(Math.PI/6)).attr("cy",t=>c.get(t.id).y+$*Math.sin(Math.PI/6)).attr("r",H).attr("fill","white").attr("stroke",d.componentStroke).attr("stroke-width",2),C.filter(t=>t.isPipelineParent===!0).append("rect").attr("x",t=>c.get(t.id).x-m/2).attr("y",t=>c.get(t.id).y-m/2).attr("width",m).attr("height",m).attr("fill",d.componentFill).attr("stroke",d.componentStroke).attr("stroke-width",1),C.filter(t=>t.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:r.nodeRadius+15;return t.sourceStrategy&&(s+=r.nodeRadius+10),n.x+s}).attr("y1",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:r.nodeRadius*2;return n.y-s/2}).attr("x2",t=>{const n=c.get(t.id);let s=t.isPipelineParent?m/2+15:r.nodeRadius+15;return t.sourceStrategy&&(s+=r.nodeRadius+10),n.x+s}).attr("y2",t=>{const n=c.get(t.id),s=t.isPipelineParent?m:r.nodeRadius*2;return n.y+s/2}).attr("stroke",d.componentStroke).attr("stroke-width",6),C.append("text").attr("x",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetX!==void 0?n.x+t.labelOffsetX:n.x;let s=r.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetX===void 0&&(s+=10);const i=t.labelOffsetX??s;return n.x+i}).attr("y",t=>{const n=c.get(t.id);if(t.className==="anchor")return t.labelOffsetY!==void 0?n.y+t.labelOffsetY:n.y-3;let s=-r.nodeLabelOffset;t.sourceStrategy&&t.labelOffsetY===void 0&&(s-=10);const i=t.labelOffsetY??s;return n.y+i}).attr("class","wardley-node-label").attr("fill",t=>t.className==="evolved"?d.evolutionStroke:t.className==="anchor"?"#000":d.componentLabelColor).attr("font-size",r.labelFontSize).attr("font-weight",t=>t.className==="anchor"?"bold":"normal").attr("text-anchor",t=>t.className==="anchor"?"middle":"start").attr("dominant-baseline",t=>t.className==="anchor"?"middle":"auto").text(t=>t.label),g.annotations.length>0){const t=P.append("g").attr("class","wardley-annotations");if(g.annotations.forEach(n=>{const s=n.coordinates.map(i=>({x:T(i.x),y:A(i.y)}));if(s.length>1)for(let i=0;i<s.length-1;i++)t.append("line").attr("class","wardley-annotation-line").attr("x1",s[i].x).attr("y1",s[i].y).attr("x2",s[i+1].x).attr("y2",s[i+1].y).attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");s.forEach(i=>{const h=t.append("g").attr("class","wardley-annotation");h.append("circle").attr("cx",i.x).attr("cy",i.y).attr("r",10).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5),h.append("text").attr("x",i.x).attr("y",i.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.number)})}),g.annotationsBox){let n=T(g.annotationsBox.x),s=A(g.annotationsBox.y);const i=10,h=16,l=11,x=t.append("g").attr("class","wardley-annotations-box"),f=[...g.annotations].filter(w=>w.text).sort((w,S)=>w.number-S.number),u=[];if(f.forEach((w,S)=>{const z=x.append("text").attr("x",n+i).attr("y",s+i+(S+1)*h).attr("font-size",l).attr("fill",d.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${w.number}. ${w.text}`);u.push(z)}),u.length>0){let w=0,S=0;u.forEach(j=>{const D=j.node(),Nt=D.getComputedTextLength();w=Math.max(w,Nt);const Ct=D.getBBox();S=Math.max(S,Ct.height)});const z=w+i*2+105,W=f.length*h+i*2+S/2,Y=r.padding,Pt=M-r.padding-z,St=r.padding,Mt=k-r.padding-W;n=Math.max(Y,Math.min(n,Pt)),s=Math.max(St,Math.min(s,Mt)),u.forEach((j,D)=>{j.attr("x",n+i).attr("y",s+i+(D+1)*h)}),x.insert("rect","text").attr("x",n).attr("y",s).attr("width",z).attr("height",W).attr("fill","white").attr("stroke",d.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(g.notes.length>0){const t=P.append("g").attr("class","wardley-notes");g.notes.forEach(n=>{const s=T(n.x),i=A(n.y);t.append("text").attr("x",s).attr("y",i).attr("text-anchor","start").attr("font-size",11).attr("fill",d.axisTextColor).attr("font-weight","bold").text(n.text)})}if(g.accelerators.length>0){const t=P.append("g").attr("class","wardley-accelerators");g.accelerators.forEach(n=>{const s=T(n.x),i=A(n.y),h=60,l=30,x=20,f=`
3
3
  M ${s} ${i-l/2}
4
4
  L ${s+h-x} ${i-l/2}
@@ -0,0 +1 @@
1
+ function a(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var l=["Clamp","Constructor","EnforceRange","Exposed","ImplicitThis","Global","PrimaryGlobal","LegacyArrayClass","LegacyUnenumerableNamedProperties","LenientThis","NamedConstructor","NewObject","NoInterfaceObject","OverrideBuiltins","PutForwards","Replaceable","SameObject","TreatNonObjectAsNull","TreatNullAs","EmptyString","Unforgeable","Unscopeable"],u=a(l),o=["unsigned","short","long","unrestricted","float","double","boolean","byte","octet","Promise","ArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","Float32Array","Float64Array","ByteString","DOMString","USVString","sequence","object","RegExp","Error","DOMException","FrozenArray","any","void"],m=a(o),c=["attribute","callback","const","deleter","dictionary","enum","getter","implements","inherit","interface","iterable","legacycaller","maplike","partial","required","serializer","setlike","setter","static","stringifier","typedef","optional","readonly","or"],s=a(c),f=["true","false","Infinity","NaN","null"],y=a(f),d=["callback","dictionary","enum","interface"],p=a(d),b=["typedef"],v=a(b),A=/^[:<=>?]/,g=/^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/,h=/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/,i=/^_?[A-Za-z][0-9A-Z_a-z-]*/,D=/^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/,k=/^"[^"]*"/,E=/^\/\*.*?\*\//,C=/^\/\*.*/,w=/^.*?\*\//;function N(e,r){if(e.eatSpace())return null;if(r.inComment)return e.match(w)?(r.inComment=!1,"comment"):(e.skipToEnd(),"comment");if(e.match("//"))return e.skipToEnd(),"comment";if(e.match(E))return"comment";if(e.match(C))return r.inComment=!0,"comment";if(e.match(/^-?[0-9\.]/,!1)&&(e.match(g)||e.match(h)))return"number";if(e.match(k))return"string";if(r.startDef&&e.match(i))return"def";if(r.endDef&&e.match(D))return r.endDef=!1,"def";if(e.match(s))return"keyword";if(e.match(m)){var t=r.lastToken,n=(e.match(/^\s*(.+?)\b/,!1)||[])[1];return t===":"||t==="implements"||n==="implements"||n==="="?"builtin":"type"}return e.match(u)?"builtin":e.match(y)?"atom":e.match(i)?"variable":e.match(A)?"operator":(e.next(),null)}const S={name:"webidl",startState:function(){return{inComment:!1,lastToken:"",startDef:!1,endDef:!1}},token:function(e,r){var t=N(e,r);if(t){var n=e.current();r.lastToken=n,t==="keyword"?(r.startDef=p.test(n),r.endDef=r.endDef||v.test(n)):r.startDef=!1}return t},languageData:{autocomplete:l.concat(o).concat(c).concat(f)}};export{S as webIDL};
@@ -0,0 +1 @@
1
+ var d=function(){function e(w){return{type:w,style:"keyword"}}for(var n=e("operator"),t={type:"atom",style:"atom"},i={type:"punctuation",style:null},o={type:"axis_specifier",style:"qualifier"},l={",":i},p=["after","all","allowing","ancestor","ancestor-or-self","any","array","as","ascending","at","attribute","base-uri","before","boundary-space","by","case","cast","castable","catch","child","collation","comment","construction","contains","content","context","copy","copy-namespaces","count","decimal-format","declare","default","delete","descendant","descendant-or-self","descending","diacritics","different","distance","document","document-node","element","else","empty","empty-sequence","encoding","end","entire","every","exactly","except","external","first","following","following-sibling","for","from","ftand","ftnot","ft-option","ftor","function","fuzzy","greatest","group","if","import","in","inherit","insensitive","insert","instance","intersect","into","invoke","is","item","language","last","lax","least","let","levels","lowercase","map","modify","module","most","namespace","next","no","node","nodes","no-inherit","no-preserve","not","occurs","of","only","option","order","ordered","ordering","paragraph","paragraphs","parent","phrase","preceding","preceding-sibling","preserve","previous","processing-instruction","relationship","rename","replace","return","revalidation","same","satisfies","schema","schema-attribute","schema-element","score","self","sensitive","sentence","sentences","sequence","skip","sliding","some","stable","start","stemming","stop","strict","strip","switch","text","then","thesaurus","times","to","transform","treat","try","tumbling","type","typeswitch","union","unordered","update","updating","uppercase","using","validate","value","variable","version","weight","when","where","wildcards","window","with","without","word","words","xquery"],r=0,a=p.length;r<a;r++)l[p[r]]=e(p[r]);for(var g=["xs:anyAtomicType","xs:anySimpleType","xs:anyType","xs:anyURI","xs:base64Binary","xs:boolean","xs:byte","xs:date","xs:dateTime","xs:dateTimeStamp","xs:dayTimeDuration","xs:decimal","xs:double","xs:duration","xs:ENTITIES","xs:ENTITY","xs:float","xs:gDay","xs:gMonth","xs:gMonthDay","xs:gYear","xs:gYearMonth","xs:hexBinary","xs:ID","xs:IDREF","xs:IDREFS","xs:int","xs:integer","xs:item","xs:java","xs:language","xs:long","xs:Name","xs:NCName","xs:negativeInteger","xs:NMTOKEN","xs:NMTOKENS","xs:nonNegativeInteger","xs:nonPositiveInteger","xs:normalizedString","xs:NOTATION","xs:numeric","xs:positiveInteger","xs:precisionDecimal","xs:QName","xs:short","xs:string","xs:time","xs:token","xs:unsignedByte","xs:unsignedInt","xs:unsignedLong","xs:unsignedShort","xs:untyped","xs:untypedAtomic","xs:yearMonthDuration"],r=0,a=g.length;r<a;r++)l[g[r]]=t;for(var f=["eq","ne","lt","le","gt","ge",":=","=",">",">=","<","<=",".","|","?","and","or","div","idiv","mod","*","/","+","-"],r=0,a=f.length;r<a;r++)l[f[r]]=n;for(var v=["self::","attribute::","child::","descendant::","descendant-or-self::","parent::","ancestor::","ancestor-or-self::","following::","preceding::","following-sibling::","preceding-sibling::"],r=0,a=v.length;r<a;r++)l[v[r]]=o;return l}();function x(e,n,t){return n.tokenize=t,t(e,n)}function u(e,n){var t=e.next(),i=!1,o=_(e);if(t=="<"){if(e.match("!--",!0))return x(e,n,N);if(e.match("![CDATA",!1))return n.tokenize=E,"tag";if(e.match("?",!1))return x(e,n,A);var l=e.eat("/");e.eatSpace();for(var p="",r;r=e.eat(/[^\s\u00a0=<>\"\'\/?]/);)p+=r;return x(e,n,S(p,l))}else{if(t=="{")return s(n,{type:"codeblock"}),null;if(t=="}")return c(n),null;if(b(n))return t==">"?"tag":t=="/"&&e.eat(">")?(c(n),"tag"):"variable";if(/\d/.test(t))return e.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/),"atom";if(t==="("&&e.eat(":"))return s(n,{type:"comment"}),x(e,n,z);if(!o&&(t==='"'||t==="'"))return m(e,n,t);if(t==="$")return x(e,n,T);if(t===":"&&e.eat("="))return"keyword";if(t==="(")return s(n,{type:"paren"}),null;if(t===")")return c(n),null;if(t==="[")return s(n,{type:"bracket"}),null;if(t==="]")return c(n),null;var a=d.propertyIsEnumerable(t)&&d[t];if(o&&t==='"')for(;e.next()!=='"';);if(o&&t==="'")for(;e.next()!=="'";);a||e.eatWhile(/[\w\$_-]/);var g=e.eat(":");!e.eat(":")&&g&&e.eatWhile(/[\w\$_-]/),e.match(/^[ \t]*\(/,!1)&&(i=!0);var f=e.current();return a=d.propertyIsEnumerable(f)&&d[f],i&&!a&&(a={type:"function_call",style:"def"}),D(n)?(c(n),"variable"):((f=="element"||f=="attribute"||a.type=="axis_specifier")&&s(n,{type:"xmlconstructor"}),a?a.style:"variable")}}function z(e,n){for(var t=!1,i=!1,o=0,l;l=e.next();){if(l==")"&&t)if(o>0)o--;else{c(n);break}else l==":"&&i&&o++;t=l==":",i=l=="("}return"comment"}function I(e,n){return function(t,i){for(var o;o=t.next();)if(o==e){c(i),n&&(i.tokenize=n);break}else if(t.match("{",!1)&&h(i))return s(i,{type:"codeblock"}),i.tokenize=u,"string";return"string"}}function m(e,n,t,i){let o=I(t,i);return s(n,{type:"string",name:t,tokenize:o}),x(e,n,o)}function T(e,n){var t=/[\w\$_-]/;if(e.eat('"')){for(;e.next()!=='"';);e.eat(":")}else e.eatWhile(t),e.match(":=",!1)||e.eat(":");return e.eatWhile(t),n.tokenize=u,"variable"}function S(e,n){return function(t,i){if(t.eatSpace(),n&&t.eat(">"))return c(i),i.tokenize=u,"tag";if(t.eat("/")||s(i,{type:"tag",name:e,tokenize:u}),t.eat(">"))i.tokenize=u;else return i.tokenize=y,"tag";return"tag"}}function y(e,n){var t=e.next();return t=="/"&&e.eat(">")?(h(n)&&c(n),b(n)&&c(n),"tag"):t==">"?(h(n)&&c(n),"tag"):t=="="?null:t=='"'||t=="'"?m(e,n,t,y):(h(n)||s(n,{type:"attribute",tokenize:y}),e.eat(/[a-zA-Z_:]/),e.eatWhile(/[-a-zA-Z0-9_:.]/),e.eatSpace(),(e.match(">",!1)||e.match("/",!1))&&(c(n),n.tokenize=u),"attribute")}function N(e,n){for(var t;t=e.next();)if(t=="-"&&e.match("->",!0))return n.tokenize=u,"comment"}function E(e,n){for(var t;t=e.next();)if(t=="]"&&e.match("]",!0))return n.tokenize=u,"comment"}function A(e,n){for(var t;t=e.next();)if(t=="?"&&e.match(">",!0))return n.tokenize=u,"processingInstruction"}function b(e){return k(e,"tag")}function h(e){return k(e,"attribute")}function D(e){return k(e,"xmlconstructor")}function _(e){return e.current()==='"'?e.match(/^[^\"]+\"\:/,!1):e.current()==="'"?e.match(/^[^\"]+\'\:/,!1):!1}function k(e,n){return e.stack.length&&e.stack[e.stack.length-1].type==n}function s(e,n){e.stack.push(n)}function c(e){e.stack.pop();var n=e.stack.length&&e.stack[e.stack.length-1].tokenize;e.tokenize=n||u}const C={name:"xquery",startState:function(){return{tokenize:u,cc:[],stack:[]}},token:function(e,n){if(e.eatSpace())return null;var t=n.tokenize(e,n);return t},languageData:{commentTokens:{block:{open:"(:",close:":)"}}}};export{C as xQuery};
@@ -1,4 +1,4 @@
1
- import{a$ as gi,a0 as xi,a4 as Xt,b2 as di,a1 as fi,b0 as pi,b as a,aC as Yt,a_ as mi,E as yi,t as bi,a2 as _t,aX as Ai,s as Nt,S as wi,ad as Ci,A as Si,az as Wt}from"./mermaid.core-BaP7clO2.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-D81nAxzR.js";import"./index-CvfrFREc.js";import"./defaultLocale-CrowFXzY.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var M=Ri(y).map(function(m){return v+o*m});return i(E?M.reverse():M)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],M=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[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],w=[1,64],V={trace:a(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:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{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(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,Mt=0,hi=2,It=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||It,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var I,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((I===null||typeof I>"u")&&(I=Vt()),z=rt[q]&&rt[q][I]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
1
+ import{a$ as gi,a0 as xi,a4 as Xt,b2 as di,a1 as fi,b0 as pi,b as a,aC as Yt,a_ as mi,E as yi,t as bi,a2 as _t,aX as Ai,s as Nt,S as wi,ad as Ci,A as Si,az as Wt}from"./mermaid.core-CxkaGWaD.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-D_f-pEGG.js";import"./index-VKRDNacl.js";import"./defaultLocale-CrowFXzY.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var M=Ri(y).map(function(m){return v+o*m});return i(E?M.reverse():M)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],M=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[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],w=[1,64],V={trace:a(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:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{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(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:M,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,Mt=0,hi=2,It=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||It,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var I,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((I===null||typeof I>"u")&&(I=Vt()),z=rt[q]&&rt[q][I]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
2
2
  `+D.showPosition()+`
3
3
  Expecting `+gt.join(", ")+", got '"+(this.terminals_[I]||I)+"'":yt="Parse error on line "+(ct+1)+": Unexpected "+(I==It?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(yt,{text:D.match,token:this.terminals_[I]||I,line:D.yylineno,loc:pt,expected:gt})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+I);switch(z[0]){case 1:g.push(I),C.push(D.yytext),r.push(D.yylloc),g.push(z[1]),I=null,Mt=D.yyleng,d=D.yytext,ct=D.yylineno,pt=D.yylloc;break;case 2:if(N=this.productions_[z[1]][1],G.$=C[C.length-N],G._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},ci&&(G._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),mt=this.performAction.apply(G,[d,Mt,ct,$.yy,z[1],C,r].concat(li)),typeof mt<"u")return mt;N&&(g=g.slice(0,-1*N*2),C=C.slice(0,-1*N),r=r.slice(0,-1*N)),g.push(this.productions_[z[1]][0]),C.push(G.$),r.push(G._$),Bt=rt[g[g.length-2]][g[g.length-1]],g.push(Bt);break;case 3:return!0}}return!0},"parse")},k=function(){var F={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,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:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=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),g.length-1&&(this.yylineno-=g.length-1);var C=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:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(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:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
@@ -0,0 +1 @@
1
+ function t(e){for(var n={},r=e.split(" "),o=0;o<r.length;++o)n[r[o]]=!0;return n}var a=t("Assert BackQuote D Defun Deriv For ForEach FromFile FromString Function Integrate InverseTaylor Limit LocalSymbols Macro MacroRule MacroRulePattern NIntegrate Rule RulePattern Subst TD TExplicitSum TSum Taylor Taylor1 Taylor2 Taylor3 ToFile ToStdout ToString TraceRule Until While"),f="(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)",u="(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)",p=new RegExp(f),d=new RegExp(u),k=new RegExp(u+"?_"+u),s=new RegExp(u+"\\s*\\(");function l(e,n){var r;if(r=e.next(),r==='"')return n.tokenize=v,n.tokenize(e,n);if(r==="/"){if(e.eat("*"))return n.tokenize=h,n.tokenize(e,n);if(e.eat("/"))return e.skipToEnd(),"comment"}e.backUp(1);var o=e.match(/^(\w+)\s*\(/,!1);o!==null&&a.hasOwnProperty(o[1])&&n.scopes.push("bodied");var i=c(n);if(i==="bodied"&&r==="["&&n.scopes.pop(),(r==="["||r==="{"||r==="(")&&n.scopes.push(r),i=c(n),(i==="["&&r==="]"||i==="{"&&r==="}"||i==="("&&r===")")&&n.scopes.pop(),r===";")for(;i==="bodied";)n.scopes.pop(),i=c(n);return e.match(/\d+ *#/,!0,!1)?"qualifier":e.match(p,!0,!1)?"number":e.match(k,!0,!1)?"variableName.special":e.match(/(?:\[|\]|{|}|\(|\))/,!0,!1)?"bracket":e.match(s,!0,!1)?(e.backUp(1),"variableName.function"):e.match(d,!0,!1)?"variable":e.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/,!0,!1)?"operator":"error"}function v(e,n){for(var r,o=!1,i=!1;(r=e.next())!=null;){if(r==='"'&&!i){o=!0;break}i=!i&&r==="\\"}return o&&!i&&(n.tokenize=l),"string"}function h(e,n){for(var r,o;(o=e.next())!=null;){if(r==="*"&&o==="/"){n.tokenize=l;break}r=o}return"comment"}function c(e){var n=null;return e.scopes.length>0&&(n=e.scopes[e.scopes.length-1]),n}const b={name:"yacas",startState:function(){return{tokenize:l,scopes:[]}},token:function(e,n){return e.eatSpace()?null:n.tokenize(e,n)},indent:function(e,n,r){if(e.tokenize!==l&&e.tokenize!==null)return null;var o=0;return(n==="]"||n==="];"||n==="}"||n==="};"||n===");")&&(o=-1),(e.scopes.length+o)*r.unit},languageData:{electricInput:/[{}\[\]()\;]/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};export{b as yacas};
@@ -0,0 +1 @@
1
+ function o(t){var n,l;t?(n=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,l=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(n=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,l=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var u=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,d=/^(n?[zc]|p[oe]?|m)\b/i,f=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,c=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:"z80",startState:function(){return{context:0}},token:function(e,i){if(e.column()||(i.context=0),e.eatSpace())return null;var r;if(e.eatWhile(/\w/))if(t&&e.eat(".")&&e.eatWhile(/\w/),r=e.current(),e.indentation()){if((i.context==1||i.context==4)&&u.test(r))return i.context=4,"variable";if(i.context==2&&d.test(r))return i.context=4,"variableName.special";if(n.test(r))return i.context=1,"keyword";if(l.test(r))return i.context=2,"keyword";if(i.context==4&&c.test(r))return"number";if(f.test(r))return"error"}else return e.match(c)?"number":null;else{if(e.eat(";"))return e.skipToEnd(),"comment";if(e.eat('"')){for(;(r=e.next())&&r!='"';)r=="\\"&&e.next();return"string"}else if(e.eat("'")){if(e.match(/\\?.'/))return"number"}else if(e.eat(".")||e.sol()&&e.eat("#")){if(i.context=5,e.eatWhile(/\w/))return"def"}else if(e.eat("$")){if(e.eatWhile(/[\da-f]/i))return"number"}else if(e.eat("%")){if(e.eatWhile(/[01]/))return"number"}else e.next()}return null}}}const a=o(!1),s=o(!0);export{s as ez80,a as z80};
@@ -21,8 +21,8 @@
21
21
  } catch (e) { /* no-op: never block render on storage/matchMedia errors */ }
22
22
  })();
23
23
  </script>
24
- <script type="module" crossorigin src="/assets/index-CvfrFREc.js"></script>
25
- <link rel="stylesheet" crossorigin href="/assets/index-Bm5I46eC.css">
24
+ <script type="module" crossorigin src="/assets/index-VKRDNacl.js"></script>
25
+ <link rel="stylesheet" crossorigin href="/assets/index-DDJFTV_M.css">
26
26
  </head>
27
27
  <body>
28
28
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strikethroo",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "description": "Task management for AI coding assistants",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -19,9 +19,10 @@
19
19
  "test:unit": "vitest run --coverage",
20
20
  "test:e2e": "playwright test",
21
21
  "test:watch": "vitest",
22
- "lint": "eslint 'src/**/*.ts' --ignore-pattern 'src/**/*.test.ts' --ignore-pattern 'src/**/__tests__/**'",
23
- "lint:fix": "eslint 'src/**/*.ts' --ignore-pattern 'src/**/*.test.ts' --ignore-pattern 'src/**/__tests__/**' --fix",
24
- "format": "prettier --write src/**/*.ts",
22
+ "capture:web": "node --require ts-node/register/transpile-only src/capture/capture-web.ts",
23
+ "lint": "eslint 'src/**/*.{ts,tsx}'",
24
+ "lint:fix": "eslint 'src/**/*.{ts,tsx}' --fix",
25
+ "format": "prettier --write 'src/**/*.{ts,tsx,css}'",
25
26
  "commitlint": "commitlint --edit",
26
27
  "clean": "rm -rf dist",
27
28
  "prepublishOnly": "npm run build",
@@ -31,6 +32,15 @@
31
32
  "security:fix": "npm audit fix",
32
33
  "security:fix-force": "npm audit fix --force"
33
34
  },
35
+ "lint-staged": {
36
+ "src/**/*.{ts,tsx}": [
37
+ "eslint --fix",
38
+ "prettier --write"
39
+ ],
40
+ "src/**/*.css": [
41
+ "prettier --write"
42
+ ]
43
+ },
34
44
  "keywords": [
35
45
  "cli",
36
46
  "task-management",
@@ -70,9 +80,13 @@
70
80
  },
71
81
  "devDependencies": {
72
82
  "@base-ui-components/react": "^1.0.0-beta.4",
83
+ "@codemirror/lang-markdown": "^6.5.0",
84
+ "@codemirror/language-data": "^6.5.2",
85
+ "@codemirror/theme-one-dark": "^6.1.3",
73
86
  "@commitlint/cli": "^19.8.1",
74
87
  "@commitlint/config-conventional": "^19.8.1",
75
88
  "@eslint/js": "^9.34.0",
89
+ "@modyfi/vite-plugin-yaml": "^1.1.1",
76
90
  "@playwright/test": "^1.60.0",
77
91
  "@semantic-release/changelog": "^6.0.3",
78
92
  "@semantic-release/commit-analyzer": "^13.0.1",
@@ -89,6 +103,7 @@
89
103
  "@types/react-dom": "^18.3.7",
90
104
  "@typescript-eslint/eslint-plugin": "^8.41.0",
91
105
  "@typescript-eslint/parser": "^8.41.0",
106
+ "@uiw/react-codemirror": "^4.25.10",
92
107
  "@vitejs/plugin-react": "^4.7.0",
93
108
  "@vitest/coverage-v8": "^2.1.9",
94
109
  "clsx": "^2.1.1",
@@ -98,6 +113,7 @@
98
113
  "eslint-config-prettier": "^10.1.8",
99
114
  "eslint-plugin-prettier": "^5.5.4",
100
115
  "husky": "^9.1.7",
116
+ "lint-staged": "^17.0.7",
101
117
  "lucide-react": "^0.460.0",
102
118
  "marked": "^15.0.12",
103
119
  "mermaid": "^11.15.0",
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-BaP7clO2.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-DW2a_NI7.js";import{b as i}from"./mermaid.core-BaP7clO2.js";import"./chunk-FMBD7UC4-eJsExyuh.js";import"./chunk-ND2GUHAM-BqKmGd94.js";import"./chunk-55IACEB6-UacLKom4.js";import"./chunk-2J33WTMH-duXs_Bbu.js";import"./index-CvfrFREc.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-DW2a_NI7.js";import{b as i}from"./mermaid.core-BaP7clO2.js";import"./chunk-FMBD7UC4-eJsExyuh.js";import"./chunk-ND2GUHAM-BqKmGd94.js";import"./chunk-55IACEB6-UacLKom4.js";import"./chunk-2J33WTMH-duXs_Bbu.js";import"./index-CvfrFREc.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-stretch:25% 151%;font-display:swap;src:url(/assets/Fraunces-VariableFont_SOFT_WONK_opsz_wght-DLWfSgHL.ttf)format("truetype-variations"),url(/assets/Fraunces-VariableFont_SOFT_WONK_opsz_wght-DLWfSgHL.ttf)format("truetype")}@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-stretch:25% 151%;font-display:swap;src:url(/assets/Fraunces-Italic-VariableFont_SOFT_WONK_opsz_wght-CuXX_kIb.ttf)format("truetype-variations"),url(/assets/Fraunces-Italic-VariableFont_SOFT_WONK_opsz_wght-CuXX_kIb.ttf)format("truetype")}@font-face{font-family:Outfit;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/Outfit-VariableFont_wght-B6lQlNBM.ttf)format("truetype-variations"),url(/assets/Outfit-VariableFont_wght-B6lQlNBM.ttf)format("truetype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/assets/SFMonoLight-CaMC1gg-.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:300;font-display:swap;src:url(/assets/SFMonoLightItalic-DG3Owzn7.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/SFMonoRegular-77Uh1IPk.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/assets/SFMonoRegularItalic-Cn01bACm.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/SFMonoMedium-ypRDCKSo.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:500;font-display:swap;src:url(/assets/SFMonoMediumItalic-DkJk-c-x.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/SFMonoSemibold-CvhtzcyM.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:600;font-display:swap;src:url(/assets/SFMonoSemiboldItalic-D75NMH13.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/SFMonoBold-DXHgGUoo.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:700;font-display:swap;src:url(/assets/SFMonoBoldItalic-CdGEImHi.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:normal;font-weight:900;font-display:swap;src:url(/assets/SFMonoHeavy-DL92f7rT.otf)format("opentype")}@font-face{font-family:SF Mono;font-style:italic;font-weight:900;font-display:swap;src:url(/assets/SFMonoHeavyItalic-DnE00LFH.otf)format("opentype")}@layer theme{:root,:host{--font-sans:"Outfit", system-ui, sans-serif;--font-mono:"SF Mono", "Cascadia Code", "Fira Code", ui-monospace, monospace;--ease-out:cubic-bezier(.25, 1, .5, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-cream:oklch(96.5% .01 75);--color-cream-mid:oklch(94% .015 70);--color-ink:oklch(18% .02 55);--color-ink-2:oklch(38% .02 55);--color-ink-3:oklch(55% .015 55);--color-dalia:#d7759e;--color-dalia-dark:#be376f;--color-dalia-bg:#f6dfe9;--color-dalia-ink:#571933;--color-deep:oklch(14% .02 300);--color-deep-3:oklch(75% .01 300);--font-display:"Fraunces", Georgia, serif;--ease-expo:cubic-bezier(.16, 1, .3, 1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--color-ink);background:var(--color-cream);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-weight:400;line-height:1.6}.t-hero{font-family:var(--font-display);letter-spacing:-.04em;font-variation-settings:"opsz" 144;font-size:clamp(4.025rem,10vw,8.625rem);font-weight:900;line-height:.9}h1,.t-h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0;font-size:clamp(2.3rem,4.5vw,3.7375rem);font-weight:800;line-height:1.1}h2,.t-h2{font-family:var(--font-display);letter-spacing:-.015em;color:var(--color-ink);margin:0;font-size:clamp(1.725rem,3vw,2.5875rem);font-weight:700;line-height:1.15}h3,.t-h3{font-family:var(--font-display);color:var(--color-ink);margin:0;font-size:clamp(1.4375rem,2vw,1.8687rem);font-weight:700;line-height:1.2}.t-coda{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(2.875rem,5vw,4.025rem);font-weight:800;line-height:1.05}.t-statement{font-family:var(--font-display);font-size:clamp(1.5812rem,2.8vw,2.3rem);font-weight:500;line-height:1.45}.t-num{font-family:var(--font-display);font-size:clamp(4.6rem,8vw,6.9rem);font-weight:200;line-height:1}.t-lead{font-family:var(--font-sans);color:var(--color-ink-2);font-size:clamp(1.15rem,1.3vw,1.2937rem);font-weight:400;line-height:1.7}p{color:var(--color-ink-2);margin:0;font-size:1.0781rem;line-height:1.75}p strong{color:var(--color-ink);font-weight:600}.label{font-family:var(--font-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--color-dalia-dark);font-size:.9344rem;font-weight:600}a{color:var(--color-dalia-dark);transition:color .2s var(--ease-out);text-decoration:none}a:hover{color:var(--color-ink)}code{font-family:var(--font-mono);color:var(--color-ink);background:#0000000d;border-radius:4px;padding:.15em .4em;font-size:.85em}::selection{background:var(--color-dalia-bg);color:var(--color-dalia-ink)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components{.container{max-width:var(--max-w);padding-left:var(--gutter);padding-right:var(--gutter);margin:0 auto}.container--narrow{max-width:var(--max-w-narrow)}.section{padding:clamp(4rem,8vh,6rem) var(--gutter)}.section--tall{padding:clamp(5rem,10vh,8rem) var(--gutter)}.section--accent{padding:clamp(3.5rem,7vh,5rem) var(--gutter)}.nav{z-index:100;padding:1rem var(--gutter);transition:background .3s var(--ease-out),box-shadow .3s var(--ease-out);position:fixed;top:0;left:0;right:0}.nav.is-scrolled{-webkit-backdrop-filter:blur(10px);background:#f7f3eceb;box-shadow:0 1px #0000000d}.nav__inner{max-width:var(--max-w);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.nav__logo{font-family:var(--font-display);color:var(--color-ink);align-items:center;gap:.5rem;font-size:1.38rem;font-weight:700;text-decoration:none;display:flex}.nav__logo-dot{background:var(--color-dalia);border-radius:50%;width:8px;height:8px}.nav__links{gap:2rem;display:flex}.nav__links a{font-family:var(--font-sans);color:var(--color-ink-2);font-size:1.0062rem;font-weight:500;text-decoration:none;position:relative}.nav__links a:hover{color:var(--color-ink)}.nav__links a:after{content:"";background:var(--color-dalia-dark);width:0;height:1.5px;transition:width .35s var(--ease-out);position:absolute;bottom:-3px;left:0}.nav__links a:hover:after{width:100%}.nav__burger{color:var(--color-ink);cursor:pointer;background:0 0;border:none;margin:-8px;padding:8px;display:none}@media (max-width:768px){.nav__links{display:none}.nav__burger{display:inline-flex}}.mobile-menu{z-index:99;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out);background:#f7f3ecf7;flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex;position:fixed;top:0;right:0;bottom:0;left:0}.mobile-menu.is-open{opacity:1;pointer-events:auto}.mobile-menu a{font-family:var(--font-display);color:var(--color-ink);font-size:2.0125rem;font-weight:500;text-decoration:none}.btn{font-family:var(--font-sans);cursor:pointer;transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out),opacity .15s var(--ease-out);border:none;border-radius:6px;align-items:center;gap:.5rem;padding:.75rem 1.75rem;font-size:1.0781rem;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn:active{opacity:.9;transform:translateY(0)scale(.97)}.btn--primary{background:var(--color-ink);color:var(--color-cream);box-shadow:0 1px 2px #0000001a}.btn--primary:hover{color:var(--color-cream);box-shadow:0 2px 4px #00000014,0 10px 24px #00000038}.btn--outline{color:var(--color-ink);background:0 0;box-shadow:inset 0 0 0 1.5px #00000026}.btn--outline:hover{color:var(--color-ink);box-shadow:inset 0 0 0 1.5px #00000059}.frame{background:var(--color-cream-mid);box-shadow:var(--shadow-frame);transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out);border-radius:10px;margin:0;overflow:hidden}.frame[data-lightbox]{cursor:zoom-in}.frame[data-lightbox]:hover{box-shadow:var(--shadow-frame-hover);transform:translateY(-6px)}.frame__bar{background:#eae3dc;border-bottom:1px solid oklch(0% 0 0/.04);align-items:center;gap:8px;padding:9px 14px;display:flex}.frame__dots{--d:11px;width:calc(var(--d) * 3 + 12px);height:var(--d);display:inline-block;position:relative}.frame__dots:before{content:"";width:var(--d);height:var(--d);box-shadow:calc(var(--d) + 6px) 0 0 #f5bf4f,calc((var(--d) + 6px) * 2) 0 0 #61c554;background:#ec6a5e;border-radius:50%;position:absolute;top:0;left:0}.frame__url{color:var(--color-ink-3);font-size:.8625rem;font-family:var(--font-sans);margin-left:32px}.frame img{width:100%;display:block}.statement{background:var(--color-dalia-bg);padding:clamp(4rem,10vh,8rem) var(--gutter)}.statement__inner{max-width:var(--max-w-narrow);margin:0 auto}.statement__text{font-family:var(--font-display);color:var(--color-dalia-ink);margin:0 0 1.5rem;font-size:clamp(1.5812rem,2.8vw,2.3rem);font-weight:500;line-height:1.45}.statement__text strong{transition:background-size .8s .4s var(--ease-out);background-image:linear-gradient(#d7759e4d,#d7759e4d);background-position:0 85%;background-repeat:no-repeat;background-size:0% 40%;font-weight:700}.statement.is-visible .statement__text strong,.statement__text.is-visible strong{background-size:100% 40%}.dark-band{background:var(--color-deep);color:var(--color-deep-3);padding:clamp(4rem,8vh,6rem) var(--gutter)}.dark-band h1,.dark-band h2,.dark-band h3,.dark-band .t-h1,.dark-band .t-h2,.dark-band .t-h3{font-family:var(--font-display);color:#e9e4dd;letter-spacing:-.02em}.dark-band a{color:var(--color-dalia)}.dark-band a:hover{color:#e9e4dd}.dark-band .label{color:var(--color-dalia)}.dark-band p{color:var(--color-deep-3)}.dark-band code{color:#e9e4dd;background:#d7759e29}.step{max-width:var(--max-w);grid-template-columns:22rem 1fr;align-items:start;gap:clamp(2rem,4vw,4rem);margin:0 auto;padding-bottom:clamp(4rem,8vh,6rem);display:grid}.step--reverse{grid-template-columns:1.15fr 22rem}.step--reverse .step__figure{order:-1}.step__num{font-family:var(--font-display);color:#c8bbb2;margin-bottom:.25rem;font-size:clamp(4.6rem,8vw,6.9rem);font-weight:200;line-height:1;display:block}.step__badge{font-family:var(--font-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--color-dalia-dark);background:var(--color-dalia-bg);border-radius:4px;margin-bottom:.75rem;padding:.3rem .75rem;font-size:.7906rem;font-weight:600;display:inline-block}.step__title{font-family:var(--font-display);color:var(--color-ink);margin:0 0 .75rem;font-size:clamp(1.4375rem,2vw,1.8687rem);font-weight:700;line-height:1.2}.step__desc{color:var(--color-ink-2);margin:0;font-size:1.0781rem;line-height:1.75}.step--crucial{background:var(--color-cream-mid);margin-left:calc(var(--gutter) * -1);margin-right:calc(var(--gutter) * -1);padding:clamp(3rem,6vh,5rem) var(--gutter);border-top:3px solid var(--color-dalia);max-width:none}.step--crucial .step__num{color:var(--color-dalia)}.step--crucial .step__badge{background:#d7759e26}@media (max-width:860px){.step,.step--reverse{grid-template-columns:1fr;gap:1.5rem}.step--reverse .step__figure{order:0}}.stack__items{max-width:var(--max-w);border-top:1px solid var(--border-on-deep);grid-template-columns:repeat(3,1fr);gap:0;margin:0 auto;display:grid}.stack__item{border-bottom:1px solid var(--border-on-deep);padding:2rem 2rem 2rem 0}.stack__item:not(:nth-child(3n)){border-right:1px solid var(--border-on-deep);padding-right:2rem}.stack__item:not(:nth-child(3n+1)){padding-left:2rem}.stack__item h3{font-family:var(--font-display);color:#e9e4dd;margin:0 0 .5rem;font-size:1.3656rem;font-weight:700}.stack__item p{color:var(--color-deep-3);font-size:1.0781rem}.stack__item a{color:var(--color-dalia);font-size:1.0062rem}@media (max-width:768px){.stack__items{grid-template-columns:1fr}.stack__item{border-right:none!important;padding:1.5rem 0!important}}.coda__inner{max-width:var(--max-w);grid-template-columns:1fr 1.5fr;align-items:start;gap:clamp(3rem,6vw,6rem);margin:0 auto;display:grid}.coda__title{font-family:var(--font-display);letter-spacing:-.02em;color:#e9e4dd;margin:0;font-size:clamp(2.875rem,5vw,4.025rem);font-weight:800;line-height:1.05;position:sticky;top:6rem}.coda__list{margin:0;padding:0}.coda__item{border-top:1px solid var(--border-on-deep);padding:1.75rem 0}.coda__item:last-child{border-bottom:1px solid var(--border-on-deep)}.coda__item dt{font-family:var(--font-display);color:#e9e4dd;margin-bottom:.375rem;font-size:1.3656rem;font-weight:600}.coda__item dd{color:var(--color-deep-3);margin:0;font-size:1.0781rem;line-height:1.7}@media (max-width:768px){.coda__inner{grid-template-columns:1fr;gap:2rem}.coda__title{position:static}}.terminal{background:var(--color-deep);border-radius:8px;max-width:100%;padding:1.25rem 1.75rem;display:inline-block;overflow-x:auto}.terminal pre{font-family:var(--font-mono);color:#e9e4dd;margin:0;font-size:1.0781rem;line-height:1.8}.terminal__prompt{color:var(--color-dalia);-webkit-user-select:none;user-select:none;margin-right:.5rem}.terminal__comment{color:var(--color-deep-3)}.terminal code{color:inherit;background:0 0;padding:0;font-size:1em}.terminal--live code:after{content:"▌";color:var(--color-dalia);margin-left:2px;animation:1s step-end infinite dalia-blink}@keyframes dalia-blink{50%{opacity:0}}.info-card{background:var(--color-dalia-bg);color:var(--color-dalia-ink);border-radius:1rem;padding:clamp(1.25rem,2.5vh,2rem) clamp(1.25rem,3vw,2rem)}.info-card .label{color:var(--color-dalia-ink);opacity:.7}.info-card code{color:var(--color-dalia-ink);background:#d7759e26}.reveal{opacity:0;transition:opacity .9s var(--ease-out),transform .9s var(--ease-out);transform:translateY(2rem)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}.ed-card{color:inherit;flex-direction:column;gap:.875rem;text-decoration:none;display:flex}.ed-card__media{aspect-ratio:4/3;background:var(--color-cream-mid);box-shadow:var(--shadow-frame);transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out);border-radius:8px;position:relative;overflow:hidden}.ed-card__media img,.ed-card__media>.ed-card__art{object-fit:cover;width:100%;height:100%;display:block}.ed-card:hover .ed-card__media{box-shadow:var(--shadow-frame-hover);transform:translateY(-6px)}.ed-card__meta{font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;color:var(--color-dalia-dark);margin:0;font-size:.8625rem;font-weight:600}.ed-card__title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-ink);margin:0;font-size:1.5812rem;font-weight:700;line-height:1.2}.ed-card__title a{color:inherit;text-decoration:none}.ed-card__title a:hover{color:var(--color-dalia-dark)}.ed-card__byline{font-family:var(--font-sans);color:var(--color-ink-3);flex-wrap:wrap;align-items:baseline;gap:.4rem .55rem;margin:0;font-size:.9344rem;display:flex}.ed-card__byline .author{color:var(--color-ink);font-weight:500}.ed-card__byline .sep{color:var(--color-ink-3);opacity:.5}.ed-card__excerpt{color:var(--color-ink-2);margin:0;font-size:1.0781rem;line-height:1.7}.ed-card__actions{flex-wrap:wrap;align-items:center;gap:1.25rem;margin-top:.25rem;display:flex}.ed-card__cta{font-family:var(--font-sans);color:var(--color-dalia-dark);align-items:center;gap:.4rem;font-size:1.0062rem;font-weight:600;text-decoration:none;display:inline-flex}.ed-card__cta svg{width:14px;height:14px;transition:transform .25s var(--ease-out)}.ed-card:hover .ed-card__cta svg{transform:translate(3px)}.ed-card__cta:hover{color:var(--color-ink)}.ed-card__cta--secondary{color:var(--color-ink-2);font-weight:500}.ed-card__cta--secondary:hover{color:var(--color-ink)}.ed-card--portrait .ed-card__media{aspect-ratio:3/4}.ed-card--landscape .ed-card__media{aspect-ratio:16/9}.ed-card--square .ed-card__media{aspect-ratio:1}.triptych{max-width:var(--max-w);grid-template-columns:repeat(3,1fr);gap:clamp(1.25rem,2.5vw,2rem);margin:0 auto;display:grid}.triptych--asymmetric{grid-template-columns:1.4fr 1fr 1fr}@media (max-width:768px){.triptych,.triptych--asymmetric{grid-template-columns:1fr}}.hero-split{padding:calc(6rem + var(--gutter)) var(--gutter) clamp(4rem,8vh,6rem)}.hero-split__inner{max-width:var(--max-w);grid-template-columns:1fr 1.1fr;align-items:center;gap:clamp(2rem,5vw,5rem);margin:0 auto;display:grid}.hero-split__title{font-family:var(--font-display);letter-spacing:-.04em;font-variation-settings:"opsz" 144;color:var(--color-ink);margin:0 0 1.25rem;font-size:clamp(4.025rem,10vw,8.625rem);font-weight:900;line-height:.9}.hero-split__tagline{color:var(--color-ink-2);max-width:36ch;margin:0 0 2rem;font-size:clamp(1.2219rem,1.6vw,1.4375rem);line-height:1.55}.hero-split__actions{flex-wrap:wrap;gap:.75rem;display:flex}@media (max-width:860px){.hero-split__inner{grid-template-columns:1fr}}.hero-type{padding:clamp(6rem,14vh,10rem) var(--gutter) clamp(4rem,8vh,6rem);text-align:center}.hero-type__title{font-family:var(--font-display);letter-spacing:-.045em;font-variation-settings:"opsz" 144;max-width:12ch;color:var(--color-ink);margin:0 auto 1.5rem;font-size:clamp(4.6rem,12vw,10.35rem);font-weight:900;line-height:.92}.hero-type__tagline{font-family:var(--font-display);color:var(--color-ink-2);max-width:38ch;margin:0 auto 2rem;font-size:clamp(1.4375rem,2.4vw,2.0125rem);font-style:italic;font-weight:400;line-height:1.45}.hero-bleed{isolation:isolate;min-height:clamp(420px,80vh,720px);position:relative;overflow:hidden}.hero-bleed>img,.hero-bleed>.hero-bleed__art{object-fit:cover;z-index:-2;width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0}.hero-bleed:after{content:"";z-index:-1;background:linear-gradient(#190f0900 40%,#190f098c);position:absolute;top:0;right:0;bottom:0;left:0}.hero-bleed__inner{max-width:var(--max-w);padding:var(--gutter);height:100%;margin:0 auto;padding-top:clamp(8rem,20vh,14rem)}.hero-bleed__title{font-family:var(--font-display);letter-spacing:-.025em;color:#f9f4ee;max-width:18ch;margin:0 0 1rem;font-size:clamp(2.875rem,6vw,5.175rem);font-weight:800;line-height:1.05}.hero-bleed__tagline{color:#e9e4dd;max-width:42ch;margin:0 0 1.5rem;font-size:1.2219rem;line-height:1.6}.pull-quote{max-width:44rem;margin:0 auto}.pull-quote__text{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-ink);text-wrap:balance;margin:0 0 1.25rem;font-size:clamp(1.725rem,3vw,2.5875rem);font-style:italic;font-weight:400;line-height:1.3}.pull-quote__text:before{content:"“";color:var(--color-dalia);vertical-align:-.15em;margin-right:.1em;font-size:1.1em;line-height:0;display:inline-block}.pull-quote__attr{font-family:var(--font-sans);color:var(--color-ink-3);letter-spacing:.02em;font-size:1.0062rem;font-weight:500}.pull-quote__attr:before{content:"— "}.feature-row{max-width:var(--max-w);grid-template-columns:1fr 1.15fr;align-items:center;gap:clamp(2rem,5vw,5rem);margin:0 auto;padding-bottom:clamp(3rem,6vh,5rem);display:grid}.feature-row--reverse{grid-template-columns:1.15fr 1fr}.feature-row--reverse .feature-row__figure{order:-1}.feature-row__copy .label{margin-bottom:1rem;display:block}.feature-row__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0 0 1rem;font-size:clamp(2.0125rem,3.5vw,2.875rem);font-weight:800;line-height:1.1}.feature-row__body{color:var(--color-ink-2);max-width:44ch;margin:0 0 1.5rem;font-size:1.0781rem;line-height:1.75}@media (max-width:860px){.feature-row,.feature-row--reverse{grid-template-columns:1fr}.feature-row--reverse .feature-row__figure{order:0}}.cta-strip{background:var(--color-cream-mid);padding:clamp(3rem,6vh,4.5rem) var(--gutter);border-top:3px solid var(--color-dalia)}.cta-strip__inner{max-width:var(--max-w);grid-template-columns:1fr auto;align-items:center;gap:clamp(1.5rem,4vw,3rem);margin:0 auto;display:grid}.cta-strip__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0;font-size:clamp(1.725rem,3vw,2.5875rem);font-weight:800;line-height:1.1}.cta-strip__sub{color:var(--color-ink-2);margin:.5rem 0 0;font-size:1.0781rem}.cta-strip__actions{flex-wrap:wrap;gap:.75rem;display:flex}@media (max-width:768px){.cta-strip__inner{grid-template-columns:1fr}}.field{flex-direction:column;gap:.5rem;display:flex}.field__label{font-family:var(--font-sans);letter-spacing:.04em;color:var(--color-ink);font-size:.9344rem;font-weight:600}.field__hint{font-family:var(--font-sans);color:var(--color-ink-3);font-size:.9344rem}.input,.textarea{font-family:var(--font-sans);color:var(--color-ink);background:var(--color-cream);transition:box-shadow .15s var(--ease-out);border:none;border-radius:6px;width:100%;padding:.625rem .875rem;font-size:1.0781rem;line-height:1.5;box-shadow:inset 0 0 0 1.5px #0000001f}.textarea{resize:vertical;min-height:6.5rem}.input::placeholder,.textarea::placeholder{color:var(--color-ink-3)}.input:hover,.textarea:hover{box-shadow:inset 0 0 0 1.5px #00000040}.input:focus,.textarea:focus{box-shadow:inset 0 0 0 1.5px var(--color-dalia-dark),0 0 0 4px #d7759e2e;outline:none}.input--error,.textarea--error{box-shadow:inset 0 0 0 1.5px var(--color-dalia-dark)}.badge{font-family:var(--font-sans);letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:.3rem .75rem;font-size:.7906rem;font-weight:600;display:inline-block}.badge--dalia{color:var(--color-dalia-dark);background:var(--color-dalia-bg)}.badge--ink{color:var(--color-cream);background:var(--color-ink)}.badge--outline{color:var(--color-ink);background:0 0;box-shadow:inset 0 0 0 1px #0000002e}.badge--deep{color:var(--color-dalia);background:#d7759e29;box-shadow:inset 0 0 0 1px #d7759e40}.footer{background:var(--color-cream-mid);padding:clamp(3rem,6vh,5rem) var(--gutter) 2rem}.footer__inner{max-width:var(--max-w);grid-template-columns:1.5fr 1fr 1fr;align-items:start;gap:clamp(2rem,4vw,4rem);margin:0 auto;display:grid}.footer__logo{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);align-items:center;gap:.5rem;font-size:1.725rem;font-weight:800;text-decoration:none;display:inline-flex}.footer__logo-dot{background:var(--color-dalia);border-radius:50%;width:9px;height:9px}.footer__brand p{font-family:var(--font-display);color:var(--color-ink);margin:1.25rem 0 0;font-size:1.2937rem;font-weight:500;line-height:1.45}.footer__col .label{color:var(--color-ink-3);margin-bottom:1.25rem;display:block}.footer__col ul{margin:0;padding:0;list-style:none}.footer__col li{padding:.375rem 0}.footer__col a{font-family:var(--font-sans);color:var(--color-ink-2);font-size:1.0781rem;font-weight:500}.footer__col a:hover{color:var(--color-ink)}.footer__sub{max-width:var(--max-w);border-top:1px solid oklch(0% 0 0/.08);margin:clamp(3rem,5vh,4rem) auto 0;padding-top:1.5rem}.footer__sub p{color:var(--color-ink-3);margin:0;font-size:.9344rem}@media (max-width:768px){.footer__inner{grid-template-columns:1fr;gap:2rem}}.dialog__backdrop{z-index:1000;-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity .25s var(--ease-out);background:#190f098c;position:fixed;top:0;right:0;bottom:0;left:0}.dialog__backdrop[data-open]{opacity:1}.dialog__backdrop[data-closed]{opacity:0}.dialog__popup{background:var(--color-cream);color:var(--color-ink);max-width:min(40rem,92vw);max-height:88vh;box-shadow:var(--shadow-frame-hover);z-index:1001;opacity:0;transition:opacity .35s var(--ease-expo),transform .35s var(--ease-expo);border-radius:12px;padding:clamp(1.5rem,4vw,2.25rem);position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)scale(.97)}.dialog__popup[data-open]{opacity:1;transform:translate(-50%,-50%)scale(1)}.dialog__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0 0 .75rem;font-size:clamp(1.725rem,3vw,2.3rem);font-weight:800;line-height:1.15}.dialog__description{color:var(--color-ink-2);margin:0 0 1.5rem;font-size:1.0781rem;line-height:1.7}.dialog__close{cursor:pointer;width:32px;height:32px;color:var(--color-ink-3);transition:background .15s var(--ease-out),color .15s var(--ease-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:.875rem;right:.875rem}.dialog__close:hover{color:var(--color-ink);background:#0000000d}.dialog__actions{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.lightbox__backdrop{z-index:1000;-webkit-backdrop-filter:blur(8px);opacity:0;transition:opacity .35s var(--ease-expo);background:#0a0710d9;position:fixed;top:0;right:0;bottom:0;left:0}.lightbox__backdrop[data-open]{opacity:1}.lightbox__popup{z-index:1001;opacity:0;width:min(80rem,92vw);max-height:88vh;transition:opacity .45s var(--ease-expo),transform .45s var(--ease-expo);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)scale(.95)}.lightbox__popup[data-open]{opacity:1;transform:translate(-50%,-50%)scale(1)}.lightbox__popup .frame{cursor:zoom-out;margin:0}.lightbox__popup .frame img{object-fit:contain;max-height:80vh}.lightbox__close{color:#e9e4dd;cursor:pointer;font-family:var(--font-sans);letter-spacing:.04em;text-transform:uppercase;background:0 0;border:none;align-items:center;gap:.4rem;font-size:.9344rem;font-weight:500;display:inline-flex;position:absolute;top:-2.5rem;right:0}.lightbox__close:hover{color:var(--color-dalia)}.accordion{max-width:var(--max-w-narrow);margin:0 auto}.accordion__item{border-top:1px solid oklch(0% 0 0/.08)}.accordion__item:last-child{border-bottom:1px solid oklch(0% 0 0/.08)}.accordion__header{margin:0}.accordion__trigger{text-align:left;cursor:pointer;width:100%;font-family:var(--font-display);color:var(--color-ink);transition:color .2s var(--ease-out);background:0 0;border:none;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.5rem 0;font-size:1.3656rem;font-weight:600;line-height:1.3;display:flex}.accordion__trigger:hover{color:var(--color-dalia-dark)}.accordion__trigger:focus-visible{outline:2px solid var(--color-dalia-dark);outline-offset:4px;border-radius:4px}.accordion__icon{width:18px;height:18px;color:var(--color-dalia-dark);transition:transform .3s var(--ease-out);flex:none}.accordion__trigger[data-panel-open] .accordion__icon{transform:rotate(180deg)}.accordion__panel{transition:height .3s var(--ease-out);height:var(--accordion-panel-height);overflow:hidden}.accordion__panel[data-starting-style],.accordion__panel[data-ending-style]{height:0}.accordion__content{font-family:var(--font-sans);color:var(--color-ink-2);max-width:56ch;padding:0 0 1.5rem;font-size:1.0781rem;line-height:1.75}.accordion__content p{margin:0 0 .75rem}.accordion__content p:last-child{margin-bottom:0}.dark-band .accordion__item,.dark-band .accordion__item:last-child{border-color:var(--border-on-deep)}.dark-band .accordion__trigger{color:#e9e4dd}.dark-band .accordion__trigger:hover,.dark-band .accordion__icon{color:var(--color-dalia)}.dark-band .accordion__content{color:var(--color-deep-3)}.toast__viewport{z-index:2000;pointer-events:none;flex-direction:column;gap:.625rem;display:flex;position:fixed;bottom:clamp(1rem,3vh,2rem);right:clamp(1rem,3vw,2rem)}.toast{pointer-events:auto;background:var(--color-ink);color:var(--color-cream);font-family:var(--font-sans);box-shadow:var(--shadow-frame);opacity:0;max-width:26rem;transition:transform .3s var(--ease-out),opacity .3s var(--ease-out);border-radius:8px;align-items:center;gap:.625rem;padding:.75rem 1.125rem;font-size:1.0062rem;font-weight:500;display:flex;transform:translateY(1rem)}.toast[data-starting-style],.toast[data-ending-style]{opacity:0;transform:translateY(1rem)}.toast[data-open]{opacity:1;transform:translateY(0)}.toast--dalia{color:var(--color-dalia)}.toast__icon{width:16px;height:16px;color:var(--color-dalia);flex:none}.toast__title{font-weight:600}.toast__description{color:#e9e4dd;margin-left:.25rem;font-weight:400}.toast__close{color:var(--color-deep-3);cursor:pointer;transition:color .15s var(--ease-out);background:0 0;border:none;border-radius:4px;margin-left:.5rem;padding:2px;display:inline-flex}.toast__close:hover{color:var(--color-cream)}.tooltip{background:var(--color-ink);color:var(--color-cream);font-family:var(--font-sans);z-index:1500;opacity:0;max-width:16rem;transition:opacity .18s var(--ease-out),transform .18s var(--ease-out);border-radius:6px;padding:.4rem .625rem;font-size:.8625rem;font-weight:500;line-height:1.4;transform:translateY(2px);box-shadow:0 4px 12px #0000002e}.tooltip[data-open]{opacity:1;transform:translateY(0)}.tooltip__arrow{color:var(--color-ink);width:10px;height:5px}.callout{border-radius:1rem;grid-template-columns:auto 1fr;align-items:start;gap:.875rem;padding:clamp(1.125rem,2.5vh,1.5rem) clamp(1.25rem,3vw,1.75rem);display:grid;position:relative}.callout__icon{flex:none;width:22px;height:22px;margin-top:1px}.callout__body{min-width:0}.callout__title{font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;margin:0 0 .375rem;font-size:.8625rem;font-weight:700}.callout__content{font-family:var(--font-sans);margin:0;font-size:1.0781rem;line-height:1.7}.callout__content p:not(:last-child){margin-bottom:.5rem}.callout--tip{background:var(--color-dalia-bg);color:var(--color-dalia-ink)}.callout--tip .callout__icon,.callout--tip .callout__title{color:var(--color-dalia-dark)}.callout--note{background:var(--color-cream-mid);color:var(--color-ink-2);box-shadow:inset 3px 0 0 var(--color-ink-3)}.callout--note .callout__icon{color:var(--color-ink-2)}.callout--note .callout__title{color:var(--color-ink)}.callout--prereq{background:var(--color-dalia-bg);color:var(--color-dalia-ink);box-shadow:inset 3px 0 0 var(--color-dalia)}.callout--prereq .callout__icon,.callout--prereq .callout__title{color:var(--color-dalia-dark)}.callout--warning{color:#54361c;background:#faf3e5;box-shadow:inset 3px 0 #d98526}.callout--warning .callout__icon{color:#c37822}.callout--warning .callout__title{color:#54361c}.code-block{box-shadow:var(--shadow-frame);background:var(--color-deep);border-radius:10px;margin:0;overflow:hidden}.code-block__bar{background:#17141e;border-bottom:1px solid oklch(100% 0 0/.05);justify-content:space-between;align-items:center;padding:8px 14px;display:flex}.code-block__label{font-family:var(--font-mono);color:var(--color-deep-3);letter-spacing:.04em;font-size:.8625rem}.code-block__copy{color:var(--color-deep-3);font-family:var(--font-sans);cursor:pointer;transition:color .15s var(--ease-out),background .15s var(--ease-out);background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:4px 8px;font-size:.8625rem;font-weight:500;display:inline-flex}.code-block__copy:hover{color:var(--color-dalia);background:#ffffff0d}.code-block__copy svg{width:13px;height:13px}.code-block__copy[data-copied]{color:var(--color-dalia)}.code-block pre{font-family:var(--font-mono);color:#e9e4dd;margin:0;padding:1.125rem 1.25rem;font-size:.9344rem;line-height:1.65;overflow-x:auto}.code-block code{color:inherit;background:0 0;padding:0;font-family:inherit;font-size:1em}.code-block--light{background:var(--color-cream-mid);box-shadow:inset 0 0 0 1px #0000000d}.code-block--light .code-block__bar{background:#e7e0d9;border-bottom-color:#0000000a}.code-block--light .code-block__label,.code-block--light .code-block__copy{color:var(--color-ink-3)}.code-block--light .code-block__copy:hover{color:var(--color-dalia-dark);background:#0000000a}.code-block--light pre{color:var(--color-ink)}.breadcrumb{font-family:var(--font-sans);color:var(--color-ink-3);flex-wrap:wrap;align-items:center;gap:.5rem .625rem;margin:0;padding:0;font-size:.9344rem;list-style:none;display:flex}.breadcrumb li{align-items:center;gap:.5rem .625rem;display:inline-flex}.breadcrumb a{color:var(--color-ink-3);transition:color .2s var(--ease-out)}.breadcrumb a:hover{color:var(--color-ink)}.breadcrumb__sep{color:var(--color-ink-3);opacity:.5;-webkit-user-select:none;user-select:none}.breadcrumb [aria-current=page]{color:var(--color-ink);font-weight:500}.page-header{padding:calc(6rem + var(--gutter)) var(--gutter) clamp(2.5rem,5vh,4rem);max-width:var(--max-w);margin:0 auto}.page-header__breadcrumb{margin-bottom:1.5rem}.page-header__label{margin-bottom:1rem;display:inline-block}.page-header__title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--color-ink);max-width:22ch;margin:0 0 1.25rem;font-size:clamp(2.875rem,6vw,4.6rem);font-weight:800;line-height:1.05}.page-header__lede{font-family:var(--font-sans);color:var(--color-ink-2);max-width:52ch;margin:0;font-size:clamp(1.2219rem,1.5vw,1.4375rem);line-height:1.65}.article-layout{max-width:var(--max-w);padding:0 var(--gutter) clamp(4rem,8vh,6rem);grid-template-columns:minmax(0,1fr) 14rem;align-items:start;gap:clamp(2rem,5vw,4rem);margin:0 auto;display:grid}.article-layout__body{min-width:0;max-width:42rem}.article-layout__aside{min-width:0;position:sticky;top:6rem}@media (max-width:860px){.article-layout{grid-template-columns:1fr}.article-layout__aside{order:-1;position:static}}.toc{font-family:var(--font-sans);border-left:1px solid oklch(0% 0 0/.08);margin:0;padding:0;font-size:.9344rem;list-style:none}.toc__label{letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-3);padding:0 0 .875rem 1rem;font-size:.7906rem;font-weight:600;display:block}.toc__item{display:block}.toc__link{color:var(--color-ink-2);transition:color .15s var(--ease-out),border-color .15s var(--ease-out);border-left:2px solid #0000;margin-left:-1px;padding:.4rem 0 .4rem 1rem;line-height:1.45;display:block}.toc__link:hover{color:var(--color-ink)}.toc__link[aria-current=true],.toc__link.is-active{color:var(--color-dalia-dark);border-left-color:var(--color-dalia-dark);font-weight:500}.toc__item--nested .toc__link{padding-left:1.75rem;font-size:.8625rem}.prose{font-family:var(--font-sans);color:var(--color-ink-2);max-width:40rem;font-size:1.15rem;line-height:1.75}.prose>*+*{margin-top:1.25em}.prose h2{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin-top:2.5em;margin-bottom:.75em;scroll-margin-top:6rem;font-size:clamp(2.0125rem,3vw,2.5875rem);font-weight:800;line-height:1.15}.prose h2:first-child{margin-top:0}.prose h3{font-family:var(--font-display);color:var(--color-ink);margin-top:2em;margin-bottom:.625em;scroll-margin-top:6rem;font-size:clamp(1.4375rem,2vw,1.725rem);font-weight:700;line-height:1.2}.prose h4{font-family:var(--font-sans);color:var(--color-ink);margin-top:1.5em;margin-bottom:.5em;font-size:1.2219rem;font-weight:600}.prose p{color:var(--color-ink-2);font-size:1.15rem}.prose p strong{color:var(--color-ink);font-weight:600}.prose em{color:var(--color-ink);font-style:italic}.prose a{color:var(--color-dalia-dark);text-underline-offset:3px;transition:text-decoration-color .2s var(--ease-out),color .2s var(--ease-out);-webkit-text-decoration:underline #d7759e66;text-decoration:underline #d7759e66;text-decoration-thickness:1px}.prose a:hover{color:var(--color-ink);-webkit-text-decoration-color:var(--color-ink);text-decoration-color:var(--color-ink)}.prose ul,.prose ol{padding-left:1.25rem}.prose li{color:var(--color-ink-2);margin-top:.5rem}.prose li::marker{color:var(--color-ink-3)}.prose li.md-task{margin-left:-1.25rem;list-style:none}.prose li.md-task:before{content:"–";color:var(--color-ink-3);margin-right:.5rem}.prose li.md-task--done{color:var(--color-ink-3);text-decoration:line-through}.prose blockquote{font-family:var(--font-display);color:var(--color-ink);border-left:3px solid var(--color-dalia);margin:1.75em 0;padding:.25rem 0 .25rem 1.25rem;font-size:1.4375rem;font-style:italic;font-weight:400;line-height:1.45}.prose code{font-family:var(--font-mono);color:var(--color-ink);background:#0000000d;border-radius:4px;padding:.15em .4em;font-size:.85em}.prose pre{background:var(--color-deep);color:#e9e4dd;font-family:var(--font-mono);border-radius:10px;padding:1.125rem 1.25rem;font-size:.9344rem;line-height:1.65;overflow-x:auto}.prose pre code{color:inherit;background:0 0;padding:0;font-size:1em}.prose hr{border:none;border-top:1px solid oklch(0% 0 0/.08);margin:2.5em 0}.prose img,.prose .frame{margin:1.5em 0}.prose table{border-collapse:collapse;width:100%;margin:1.5em 0;font-size:1.0781rem}.prose th,.prose td{text-align:left;border-bottom:1px solid oklch(0% 0 0/.08);padding:.625rem .875rem}.prose th{font-family:var(--font-sans);color:var(--color-ink);letter-spacing:.04em;text-transform:uppercase;font-size:.9344rem;font-weight:600}.prose td{color:var(--color-ink-2)}}@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.outline{outline-style:var(--tw-outline-style);outline-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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--gutter:clamp(1.5rem, 5vw, 4rem);--max-w:66rem;--max-w-narrow:40rem;--bg:var(--color-cream);--bg-muted:var(--color-cream-mid);--fg:var(--color-ink);--fg-muted:var(--color-ink-2);--fg-subtle:var(--color-ink-3);--accent:var(--color-dalia);--accent-strong:var(--color-dalia-dark);--link:var(--color-dalia-dark);--border-soft:oklch(0% 0 0/.05);--border:oklch(0% 0 0/.08);--border-strong:oklch(0% 0 0/.15);--shadow-frame:0 1px 3px oklch(0% 0 0/.04), 0 8px 30px oklch(0% 0 0/.08), 0 0 0 1px oklch(0% 0 0/.04);--shadow-frame-hover:0 2px 6px oklch(0% 0 0/.03), 0 20px 50px oklch(0% 0 0/.13), 0 0 0 1px oklch(0% 0 0/.04);--border-on-deep:oklch(100% 0 0/.08);--cream:var(--color-cream);--cream-mid:var(--color-cream-mid);--cream-deep:oklch(91% .018 65);--ink:var(--color-ink);--ink-2:var(--color-ink-2);--ink-3:var(--color-ink-3);--ink-4:oklch(72% .012 55);--dalia:var(--color-dalia);--dalia-dark:var(--color-dalia-dark);--dalia-deep:#6f2041;--dalia-bg:var(--color-dalia-bg);--deep:var(--color-deep);--deep-3:var(--color-deep-3);--doing:oklch(62% .13 75);--doing-ink:oklch(32% .1 75);--doing-bg:oklch(95% .045 80);--done:oklch(55% .1 145);--done-ink:oklch(30% .08 145);--done-bg:oklch(94% .035 145);--font-body:var(--font-sans);--shadow-modal:0 1px 2px oklch(0% 0 0/.04), 0 30px 80px oklch(0% 0 0/.18), 0 0 0 1px oklch(0% 0 0/.06)}.app{background:var(--cream);width:100%;min-height:100vh;color:var(--ink);font-family:var(--font-body);isolation:isolate;grid-template-columns:232px 1fr;font-size:16px;display:grid;position:relative}.main{flex-direction:column;min-width:0;min-height:0;display:flex}.sb{background:var(--cream-mid);border-right:1px solid var(--border);flex-direction:column;align-self:start;height:100vh;padding:20px 14px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.sb__brand{font-family:var(--font-body);letter-spacing:-.015em;color:var(--ink);align-items:baseline;gap:9px;padding:0 6px 18px;font-size:23px;font-weight:400;display:flex}.tl-mark{font-family:var(--font-body);letter-spacing:-.015em;--tl-line:.058em;--tl-line-y:.631em;--tl-line-extend:0em;font-weight:400;line-height:1;display:inline-block;position:relative}.tl-mark:after{content:"";left:calc(0em - var(--tl-line-extend));right:calc(0em - var(--tl-line-extend));top:var(--tl-line-y);height:var(--tl-line);pointer-events:none;background:currentColor;position:absolute;transform:translateY(-50%)}.tl-mark--500{--tl-line:.065em;font-weight:500}.tl-mark--600{--tl-line:.075em;font-weight:600}.tl-mark--300{--tl-line:.048em;font-weight:300}.sb__brand-sub{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase;margin-left:4px;font-size:11.5px;font-weight:500}.sb__group{font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding:12px 10px 6px;font-size:12px;font-weight:600}.sb__nav{flex-direction:column;gap:1px;display:flex}.sb__item{color:var(--ink-2);cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:7px 10px;font-size:16px;font-weight:500;display:flex;position:relative}.sb__item:hover{color:var(--ink);background:#00000006}.sb__item--active{background:var(--cream);color:var(--ink);box-shadow:0 0 0 1px var(--border-soft),0 1px 2px #0000000a}.sb__item--active:before{content:"";background:var(--dalia);border-radius:2px;width:2px;position:absolute;top:8px;bottom:8px;left:-14px}.sb__count{font-family:var(--font-mono);color:var(--ink-3);margin-left:auto;font-size:12.5px}.sb__foot{border-top:1px solid var(--border-soft);font-family:var(--font-mono);color:var(--ink-3);margin-top:auto;padding:12px 10px 0;font-size:12px;line-height:1.5}.sb__foot strong{color:var(--ink-2);font-weight:600}.chrome{border-bottom:1px solid var(--border);padding:18px 28px 0}.chrome__top{justify-content:space-between;align-items:flex-end;gap:18px;display:flex}.chrome__crumb{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.02em;margin-bottom:4px;font-size:12.5px}.chrome__crumb .seg{color:var(--ink-3)}.chrome__crumb .seg--cur{color:var(--ink-2);font-weight:500}.chrome__crumb .sep{color:var(--ink-4);margin:0 6px}.chrome__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);font-variation-settings:"opsz" 36;margin:0;font-size:34.5px;font-weight:700;line-height:1.05}.chrome__actions{align-items:center;gap:8px;display:flex}.chrome__tabs{gap:2px;margin-top:14px;margin-bottom:-1px;display:flex}.tab{color:var(--ink-3);cursor:pointer;padding:8px 14px 11px;font-size:15.5px;font-weight:500;position:relative}.tab--active{color:var(--ink);font-weight:600}.tab--active:after{content:"";background:var(--ink);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:6px;right:6px}.tab:hover:not(.tab--active){color:var(--ink-2)}.tab__count{font-family:var(--font-mono);color:var(--ink-4);margin-left:6px;font-size:12.5px;font-weight:500}.btn{font-family:var(--font-body);cursor:pointer;white-space:nowrap;transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out);border:none;border-radius:6px;align-items:center;gap:7px;padding:7px 13px;font-size:15.5px;font-weight:500;display:inline-flex}.btn--primary{background:var(--ink);color:var(--cream);box-shadow:0 1px 2px #0000001a}.btn--dalia{background:var(--dalia-dark);color:var(--cream);box-shadow:0 1px 2px #0000001a}.btn--outline{background:var(--cream);color:var(--ink);box-shadow:inset 0 0 0 1px var(--border-strong)}.btn--ghost{color:var(--ink-2);background:0 0;box-shadow:inset 0 0 0 1px #0000}.btn--ghost:hover{color:var(--ink);background:#0000000a}.btn--sm{padding:5px 10px;font-size:14.5px}.btn__icon{flex:0 0 14px;width:14px;height:14px}.btn--primary .btn__icon,.btn--dalia .btn__icon{color:var(--cream)}.pill{font-family:var(--font-body);letter-spacing:.04em;text-transform:lowercase;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px 3px 8px;font-size:12px;font-weight:600;line-height:1.4;display:inline-flex}.pill__dot{background:currentColor;border-radius:50%;flex:0 0 6px;width:6px;height:6px}.pill--todo{color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--border-strong);background:0 0}.pill--doing{color:var(--doing-ink);background:var(--doing-bg);box-shadow:inset 0 0 0 1px #b3790366}.pill--doing .pill__dot{background:var(--doing)}.pill--done{color:var(--done-ink);background:var(--done-bg);box-shadow:inset 0 0 0 1px #49814c59}.pill--done .pill__dot{background:var(--done)}.pill--drafted{color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--ink-3);background:0 0}.pill--ready{color:var(--dalia-deep);background:var(--dalia-bg);box-shadow:inset 0 0 0 1px #d7759e66}.pill--ready .pill__dot{background:var(--dalia-dark)}.tickbox{background:var(--cream);width:16px;height:16px;box-shadow:inset 0 0 0 1.5px var(--ink-3);color:#0000;border-radius:4px;flex:0 0 16px;justify-content:center;align-items:center;font-size:12.5px;line-height:1;display:inline-flex}.tickbox--done{background:var(--done);box-shadow:inset 0 0 0 1.5px var(--done);color:var(--cream)}.tickbox--doing{background:var(--doing-bg);box-shadow:inset 0 0 0 1.5px var(--doing)}.tickbox--doing:after{content:"";background:var(--doing);border-radius:50%;width:7px;height:7px}.icon{vertical-align:middle;display:inline-block}.icon svg{display:block}.chip{font-family:var(--font-mono);background:var(--cream-mid);color:var(--ink);box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:4px;align-items:center;padding:1px 6px;font-size:13px;display:inline-flex}.chip--branch:before{content:"⎇";color:var(--dalia-dark);margin-right:5px;font-size:12.5px}.modal-veil{z-index:50;-webkit-backdrop-filter:blur(2px);background:#190f096b;justify-content:center;align-items:center;padding:32px;display:flex;position:fixed;top:0;right:0;bottom:0;left:0}.modal{background:var(--cream);width:100%;max-width:560px;box-shadow:var(--shadow-modal);border-radius:12px;padding:28px 28px 22px;position:relative}.modal__close{width:28px;height:28px;color:var(--ink-3);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;display:flex;position:absolute;top:14px;right:14px}.modal__close:hover{background:var(--cream-mid);color:var(--ink)}.modal__eyebrow{font-family:var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--dalia-dark);font-size:12px;font-weight:600}.modal__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);font-variation-settings:"opsz" 36;margin:4px 0 12px;font-size:32px;font-weight:700;line-height:1.05}.modal__body{color:var(--ink-2);font-size:16px;line-height:1.6}.modal__body strong{color:var(--ink);font-weight:600}.modal__actions{justify-content:flex-end;gap:8px;margin-top:22px;display:flex}.dark{--color-cream:oklch(15.5% .018 295);--color-cream-mid:oklch(20.5% .02 295);--color-ink:oklch(94.5% .012 75);--color-ink-2:oklch(78% .012 75);--color-ink-3:oklch(62% .012 75);--color-dalia:#e689b0;--color-dalia-dark:#e79dbc;--color-dalia-bg:#492735;--color-dalia-ink:#f6cbdd;--color-deep:oklch(8% .02 300);--color-deep-2:oklch(55% .02 300);--color-deep-3:oklch(78% .01 75);--cream-deep:oklch(24.5% .022 295);--ink-4:oklch(46% .012 75);--dalia-deep:#f4bed4;--doing:oklch(78% .13 75);--doing-ink:oklch(90% .1 80);--doing-bg:oklch(30% .06 75);--done:oklch(72% .12 145);--done-ink:oklch(92% .08 145);--done-bg:oklch(26% .05 145);--border-soft:oklch(100% 0 0/.06);--border:oklch(100% 0 0/.1);--border-strong:oklch(100% 0 0/.2);--shadow-frame:0 1px 2px oklch(0% 0 0/.4), 0 12px 32px oklch(0% 0 0/.5), 0 0 0 1px oklch(100% 0 0/.06);--shadow-modal:0 1px 2px oklch(0% 0 0/.4), 0 30px 80px oklch(0% 0 0/.65), 0 0 0 1px oklch(100% 0 0/.08);color-scheme:dark}.dark .sb__item:hover{background:#ffffff0a}.dark .sb__item--active{box-shadow:0 0 0 1px var(--border-soft),0 1px 2px #00000059}.dark .btn--ghost:hover{background:#ffffff0f}.dark .btn--primary,.dark .btn--dalia{box-shadow:0 1px 2px #0006}.dark .tickbox{background:var(--cream-mid)}.dark .tickbox--done{color:#060d06}.dark .tickbox--doing{background:var(--doing-bg)}.dark .chip{color:var(--ink);background:#ffffff0f;box-shadow:inset 0 0 0 1px #ffffff0f}.dark .chip--branch:before{color:var(--dalia)}.dark .modal__cmd{color:var(--ink)}.theme-seg{background:var(--cream-mid);box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:8px;gap:2px;margin-bottom:10px;padding:2px;display:flex}.theme-seg__btn{font-family:var(--font-mono);color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:1;padding:4px 6px;font-size:12px;font-weight:500}.theme-seg__btn:hover:not(.theme-seg__btn--active){color:var(--ink-2)}.theme-seg__btn--active{background:var(--cream);color:var(--ink);box-shadow:0 1px 2px #00000014}.dark .theme-seg{background:#ffffff0a}.dark .theme-seg__btn:hover:not(.theme-seg__btn--active){color:var(--ink)}.dark .theme-seg__btn--active{background:#ffffff14;box-shadow:0 1px 2px #0006}.sb__collapse{width:26px;height:26px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:0 0 26px;justify-content:center;align-items:center;padding:0;display:inline-flex}.sb__collapse:hover{color:var(--ink);background:#0000000a}.sb__collapse .icon{transform:rotate(90deg)}.dark .sb__collapse:hover{background:#ffffff0f}.sb__foot-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.sb__mark{color:var(--ink);display:inline-block}.sb__mark svg,.sb__mark img{display:block}.app--rail-collapsed{grid-template-columns:64px 1fr}.sb--collapsed{align-items:center;padding-left:10px;padding-right:10px}.sb--collapsed .sb__brand{justify-content:center;padding:0 0 18px}.sb--collapsed .sb__group,.sb--collapsed .sb__item span:not(.icon),.sb--collapsed .sb__count{display:none}.sb--collapsed .sb__nav{align-items:center}.sb--collapsed .sb__item{justify-content:center;width:38px;padding:7px}.sb--collapsed .sb__item--active:before{left:-10px}.sb--collapsed .sb__foot{border-top:none;justify-content:center;padding:0;display:flex}.sb--collapsed .sb__collapse .icon{transform:rotate(-90deg)}.label--dalia{color:var(--dalia-dark)}.label--ink{color:var(--ink-2)}.mono{font-family:var(--font-mono)}.scroll{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.tbl{border-bottom:1px solid var(--border-soft);align-items:center;gap:16px;padding:12px 28px;display:grid}.tbl--head{background:var(--cream);border-bottom:1px solid var(--border);font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding-top:10px;padding-bottom:10px;font-size:12px;font-weight:600}.tbl--row{cursor:pointer}.tbl--row:hover{background:var(--cream-mid)}.tbl--real{background:#f7f3ec}.tbl__id{font-family:var(--font-mono);color:var(--ink-2);font-size:15px;font-weight:600}.tbl__title{min-width:0}.tbl__title-slug{font-family:var(--font-mono);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:15.5px;font-weight:500;overflow:hidden}.tbl__title-summary{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:15px;overflow:hidden}.tbl__bar{font-family:var(--font-mono);color:var(--ink-3);align-items:center;gap:8px;font-size:13px;display:flex}.tbl__bar-track{background:#0000000f;border-radius:2px;flex:1;height:4px;overflow:hidden}.tbl__bar-fill{border-radius:inherit;height:100%}.placeholder{opacity:.55}.subbar{color:var(--ink-3);background:var(--cream);border-bottom:1px solid var(--border-soft);align-items:center;gap:14px;padding:10px 28px;font-size:14.5px;display:flex}.subbar__group{align-items:center;gap:8px;display:inline-flex}.subbar__seg{align-items:center;gap:6px;display:inline-flex}.subbar__sep{background:var(--border);width:1px;height:14px}.statusbar{border-top:1px solid var(--border);background:var(--cream-mid);font-family:var(--font-mono);color:var(--ink-3);justify-content:space-between;align-items:center;padding:8px 28px;font-size:12.5px;display:flex}.cards{flex:1;grid-template-columns:1fr 1fr;align-content:start;gap:18px;padding:22px 28px;display:grid;overflow-y:auto}.card{background:var(--cream);border:1px solid var(--border-soft);cursor:pointer;border-radius:10px;flex-direction:column;padding:18px 18px 16px;display:flex;position:relative;box-shadow:0 1px 2px #00000008}.card--drafted{border-style:dashed;border-color:var(--ink-3);background:0 0}.card--real{background:var(--cream);box-shadow:0 1px 2px #0000000a}.card--archived:before{content:"archived";font-family:var(--font-mono);color:var(--ink-4);letter-spacing:.06em;font-size:11.5px;position:absolute;top:14px;right:56px}.card__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.card__id{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:12.5px;font-weight:600}.card__slug{font-family:var(--font-mono);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:16.5px;font-weight:600;overflow:hidden}.card__title{font-family:var(--font-display);letter-spacing:-.005em;color:var(--ink);margin:4px 0 6px;font-size:20.5px;font-weight:600;line-height:1.25}.card__summary{color:var(--ink-2);flex:1;font-size:15.5px;line-height:1.5}.card__progress{flex-wrap:wrap;align-items:center;gap:4px;margin-top:12px;display:flex}.card__progress-dot{width:12px;height:12px;box-shadow:inset 0 0 0 1px var(--border-strong);background:0 0;border-radius:3px}.card__progress-dot--done{background:var(--done);box-shadow:inset 0 0 0 1px var(--done)}.card__progress-dot--doing{background:var(--doing);box-shadow:inset 0 0 0 1px var(--doing)}.card__foot{border-top:1px solid var(--border-soft);font-family:var(--font-mono);color:var(--ink-3);justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:12px;font-size:12.5px;display:flex}.board{flex:1;align-content:stretch;align-items:stretch;gap:14px;padding:18px 24px;display:grid;overflow:hidden}.col__body{flex-direction:column;gap:10px;padding:10px;display:flex;overflow-y:auto}.bcard{background:var(--cream);box-shadow:0 1px 2px #0000000a,0 0 0 1px var(--border-soft);cursor:pointer;border-radius:8px;padding:11px 12px 10px}.bcard--drafted{border:1px dashed var(--ink-3);box-shadow:none;background:0 0}.bcard__head{justify-content:space-between;gap:6px;display:flex}.bcard__id{font-family:var(--font-mono);color:var(--ink-3);font-size:12.5px}.bcard__slug{font-family:var(--font-mono);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;margin:1px 0 4px;font-size:15px;font-weight:600;overflow:hidden}.bcard__sum{color:var(--ink-2);font-size:14.5px;line-height:1.4}.bcard__foot{font-family:var(--font-mono);color:var(--ink-3);justify-content:space-between;align-items:center;margin-top:8px;font-size:12px;display:flex}.modal__cmd{background:var(--deep);color:var(--cream);font-family:var(--font-mono);border-radius:8px;align-items:center;gap:10px;margin-top:8px;padding:14px 16px;font-size:15px;display:flex;position:relative}.modal__cmd-prompt{color:var(--dalia);-webkit-user-select:none;user-select:none}.modal__cmd-cmd{color:var(--dalia);font-weight:500}.modal__cmd-copy{color:var(--deep-3);cursor:pointer;font:inherit;background:#ffffff0f;border:0;border-radius:4px;align-items:center;gap:5px;margin-left:auto;padding:4px 8px;font-size:14px;transition:background .12s,color .12s,transform 60ms;display:inline-flex}.modal__cmd-copy:hover{color:var(--cream);background:#ffffff24}.modal__cmd-copy:focus-visible{outline:2px solid var(--dalia);outline-offset:2px}.modal__cmd-copy:active{background:#fff3;transform:scale(.96)}.modal__cmd-copy--copied,.modal__cmd-copy--copied:hover{color:var(--dalia);background:#ffffff1a}.modal__hint{color:var(--ink-3);margin-top:16px;font-size:15px;line-height:1.55}.detail{flex:1;grid-template-columns:1fr clamp(300px,24vw,420px);min-height:0;display:grid}@media (max-width:900px){.detail{grid-template-columns:1fr}}.rail{border-left:1px solid var(--border);background:var(--cream-mid);flex-direction:column;gap:6px;padding:18px 16px;display:flex}.rail__phase{background:var(--cream);border:1px solid var(--border-soft);border-radius:8px;margin-bottom:6px;padding:10px 12px 4px}.rail__phase-head{align-items:center;gap:8px;margin-bottom:2px;display:flex}.rail__phase-num{width:22px;height:22px;font-family:var(--font-display);background:var(--cream-mid);color:var(--ink);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:inline-flex}.rail__phase-title{font-family:var(--font-display);color:var(--ink);flex:1;font-size:16.5px;font-weight:700;line-height:1.2}.rail__phase-meta{font-family:var(--font-mono);color:var(--ink-3);padding:0 0 6px;font-size:12px}.rail__task{border-top:1px solid var(--border-soft);gap:8px;padding:6px 4px;display:flex}.rail__task-num{font-family:var(--font-mono);color:var(--ink-3);margin-top:1px;font-size:12.5px}.rail__task-body{flex:1;min-width:0}.rail__task-name{color:var(--ink);font-size:15px;font-weight:500;line-height:1.3}.rail__task--clickable{cursor:pointer;border-radius:4px}.rail__task--clickable:hover{background:var(--cream)}.rail__task--done .rail__task-name{color:var(--ink-3);text-decoration:line-through}.rail__task-group{font-family:var(--font-mono);color:var(--ink-3);margin-top:1px;font-size:12px}.rail__hint{font-family:var(--font-mono);color:var(--ink-3);border-top:1px solid var(--border-soft);margin-top:auto;padding-top:10px;font-size:12px;font-style:italic;line-height:1.5}.reader{--reader-prose:72rem;--reader-media:calc(var(--reader-prose) * 1.2);padding:28px clamp(20px,4vw,40px);overflow:hidden}.reader>*{max-width:var(--reader-media);margin-inline:auto}.reader__meta,.reader__h1,.reader__h2,.reader__summary,.reader__quote,.clar,.crit,.reader .prose>:not(:has(>img:only-child)){max-width:var(--reader-prose);margin-inline:auto}.reader .prose p:has(>img:only-child){max-width:var(--reader-media)}.reader .prose img{max-width:100%;height:auto;margin-inline:auto;display:block}.reader__filename{font-family:var(--font-mono);color:var(--ink-2);font-size:13px}.reader__h1{font-family:var(--font-display);letter-spacing:-.025em;color:var(--ink);font-variation-settings:"opsz" 48;margin:0 auto 14px;font-size:41.5px;font-weight:700;line-height:1.1}.reader__meta{font-family:var(--font-mono);color:var(--ink-3);flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:24px;font-size:13px;display:flex}.reader__meta>*{white-space:nowrap}.reader__h2{font-family:var(--font-display);letter-spacing:-.018em;color:var(--ink);margin:32px auto 12px;font-size:30px;font-weight:700;line-height:1.15}.reader__h2 .hash{color:var(--dalia);font-family:var(--font-mono);vertical-align:.05em;margin-right:6px;font-size:20.5px;font-weight:500}.reader .prose :is(h3,h4,h5,h6){font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-weight:700;line-height:1.2}.reader .prose :is(h3,h4,h5,h6):before{color:var(--dalia);font-family:var(--font-mono);vertical-align:.05em;margin-right:6px;font-weight:500}.reader .prose h3{margin-top:22px;margin-bottom:8px;font-size:23px}.reader .prose h3:before{content:"###";font-size:16px}.reader .prose h4{margin-top:18px;margin-bottom:6px;font-size:19px;font-weight:600}.reader .prose h4:before{content:"####";font-size:14px}.reader .prose h5{margin-top:16px;margin-bottom:6px;font-size:16.5px;font-weight:600}.reader .prose h5:before{content:"#####";font-size:12.5px}.reader .prose h6{margin-top:14px;margin-bottom:6px;font-size:15px;font-weight:600}.reader .prose h6:before{content:"######";font-size:11.5px}.reader__quote{border-left:2px solid var(--dalia);font-family:var(--font-display);color:var(--ink-2);padding:4px 0 4px 14px;font-size:17px;font-style:italic;font-weight:400;line-height:1.5}.reader__summary{background:var(--dalia-bg);border-left:3px solid var(--dalia-dark);border-radius:8px;margin:14px auto;padding:14px 16px}.reader__summary-eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dalia-deep);margin-bottom:4px;font-size:12px;font-weight:700}.reader__summary-text{color:var(--ink);font-size:15.5px;line-height:1.55}.clar{border:1px solid var(--border);border-radius:8px;margin-top:8px;overflow:hidden}.clar__row{grid-template-columns:1fr 1fr;font-size:14.5px;display:grid}.clar__row+.clar__row{border-top:1px solid var(--border-soft)}.clar__q,.clar__a{padding:8px 14px;line-height:1.4}.clar__q{color:var(--ink-2);font-family:var(--font-mono);background:var(--cream-mid);font-size:13px}.clar__a{color:var(--ink);border-left:1px solid var(--border-soft)}.crit{flex-direction:column;gap:4px;margin-top:8px;display:flex}.crit__row{color:var(--ink-3);align-items:center;gap:8px;padding:4px 0;font-size:15px;display:flex}.crit__row--done .crit__text{color:var(--ink-3);text-decoration:line-through}.crit__marker{text-align:center;color:var(--ink-3);flex:0 0 16px;line-height:1.4}.crit__text{line-height:1.4}.reader .prose{font-size:16px}.reader .prose>*+*{margin-top:.9em}.reader .prose blockquote{border-left:2px solid var(--dalia);font-family:var(--font-display);color:var(--ink-2);background:0 0;margin:0 auto;padding:4px 0 4px 14px;font-size:17px;font-style:italic;font-weight:400;line-height:1.5}.reader .prose table{border:1px solid var(--border);border-collapse:separate;border-spacing:0;border-radius:8px;width:100%;font-size:14.5px;overflow:hidden}.reader .prose th,.reader .prose td{text-align:left;border-top:1px solid var(--border-soft);padding:8px 14px;line-height:1.4}.reader .prose tr:first-child th,.reader .prose tr:first-child td{border-top:none}.reader .prose th{color:var(--ink-2);font-family:var(--font-mono);background:var(--cream-mid);font-size:13px;font-weight:600}.reader .prose td{color:var(--ink)}.reader .prose td+td,.reader .prose th+th{border-left:1px solid var(--border-soft)}.reader__mermaid{border:1px solid var(--border);background:var(--cream-mid);border-radius:8px;margin:14px auto;overflow:hidden}.reader__mermaid .mermaid-host{height:auto;padding:16px 14px}.reader__mermaid .mermaid-loading,.reader__mermaid .mermaid-err{padding:16px 14px}.reader__mermaid-details{border-top:1px solid var(--border-soft)}.reader__mermaid-details>summary{cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding:7px 12px;font-size:12px}.reader__mermaid-head{border-bottom:1px solid var(--border-soft);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;align-items:center;gap:10px;padding:7px 12px;font-size:12px;display:flex}.reader__mermaid-hint{text-transform:none;letter-spacing:0;font-style:italic}.reader__mermaid-src{font-family:var(--font-mono);color:var(--ink-2);white-space:pre;margin:0;padding:12px 14px;font-size:13px;line-height:1.5;overflow-x:auto}.dark .rail__phase{box-shadow:0 1px 2px #0000004d,0 0 0 1px var(--border-soft)}.dark .reader__summary{background:var(--dalia-bg);border-left-color:var(--dalia-dark)}.dark .reader__summary-text{color:var(--ink)}.dark .reader__summary-eyebrow{color:var(--dalia-deep)}.dark .reader__quote{border-left-color:var(--dalia);color:var(--ink-2)}.dark .reader__h2 .hash,.dark .reader .prose :is(h3,h4,h5,h6):before{color:var(--dalia)}.dark .clar{border-color:var(--border)}.dark .clar__q{background:#ffffff08}.dark .clar__a{border-left-color:var(--border-soft)}.exec{flex-direction:column;flex:1;gap:16px;padding:22px 28px;display:flex;overflow:hidden}.exec__summary{background:var(--cream-mid);border:1px solid var(--border-soft);border-radius:8px;justify-content:space-between;align-items:baseline;padding:14px 18px;display:flex}.exec__sum-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:22px;font-weight:700}.exec__sum-meta{font-family:var(--font-mono);color:var(--ink-3);font-size:13px}.exec__sum-meta strong{color:var(--ink);font-weight:600}.phase{border:1px solid var(--border);background:var(--cream);border-radius:10px;padding:18px;box-shadow:0 1px 2px #00000008}.phase__head{align-items:center;gap:14px;margin-bottom:14px;display:flex}.phase__num{background:var(--cream-mid);border:1px solid var(--border);width:46px;height:46px;font-family:var(--font-display);color:var(--ink);font-variation-settings:"opsz" 18;border-radius:50%;flex:0 0 46px;justify-content:center;align-items:center;font-size:19.5px;font-weight:800;display:flex}.phase__title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.015em;flex:1;font-size:25.5px;font-weight:700;line-height:1.15}.phase__meta{font-family:var(--font-mono);color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:12px;font-size:12.5px;display:flex}.phase__tasks{gap:12px;display:grid}.lane-task{border:1px solid var(--border-soft);background:var(--cream);border-radius:8px;padding:14px}.lane-task--clickable{cursor:pointer;transition:border-color .12s}.lane-task--clickable:hover{border-color:var(--border)}.lane-task--done .lane-task__title{color:var(--ink-3);text-decoration:line-through}.lane-task--doing .lane-task__title{color:var(--doing)}.lane-task__head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.lane-task__id{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:600}.lane-task__title{font-family:var(--font-body);color:var(--ink);margin:6px 0 8px;font-size:16.5px;font-weight:600;line-height:1.3}.lane-task__meta{font-family:var(--font-mono);color:var(--ink-3);flex-direction:column;gap:2px;font-size:12.5px;display:flex}.lane-task__meta strong{color:var(--ink-2);font-weight:500}.outline{flex:1;padding:22px 28px;overflow:hidden}.outline__phase-head{background:var(--dalia-bg);border:1px solid #d7759e59;border-left:4px solid var(--dalia-dark);border-radius:8px;align-items:center;gap:14px;padding:12px 16px;display:flex}.outline__phase-num{font-family:var(--font-mono);letter-spacing:.12em;color:var(--ink-3);font-size:12px;font-weight:700}.outline__phase-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;flex:1;font-size:23px;font-weight:700}.outline__phase-meta{font-family:var(--font-mono);color:var(--ink-3);font-size:12.5px}.outline__list{border-left:1px dashed var(--border);margin-left:22px;padding:8px 0}.outline__row{grid-template-columns:36px 1fr 240px 110px;align-items:center;gap:12px;padding:12px 16px;display:grid;position:relative}.outline__row+.outline__row{border-top:1px solid var(--border-soft)}.outline__row:before{content:"";background:var(--border);width:14px;height:1px;position:absolute;top:50%;left:-1px}.outline__row-id{font-family:var(--font-mono);color:var(--ink-3);font-size:13px;font-weight:500}.outline__row-title{font-family:var(--font-body);color:var(--ink);font-size:16px;font-weight:600;line-height:1.3}.outline__row--clickable{cursor:pointer}.outline__row--clickable:hover{background:var(--cream)}.outline__row--done .outline__row-title{color:var(--ink-3);text-decoration:line-through}.outline__row-group{font-family:var(--font-mono);color:var(--ink-3);font-size:12.5px}.dark .phase,.dark .lane-task{box-shadow:0 1px 2px #0000004d,0 0 0 1px var(--border-soft)}.dark .outline__phase-head{background:var(--dalia-bg);border-color:#bf407573}.dark .lane-task--doing .lane-task__title{color:var(--doing)}.col{background:var(--cream-mid);border:1px solid var(--border-soft);border-radius:10px;flex-direction:column;min-height:0;display:flex}.col__head{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;padding:12px 14px 10px;display:flex}.col__hint{font-family:var(--font-mono);color:var(--ink-3);margin-top:0;padding:8px 14px;font-size:12px}.col__count{font-family:var(--font-mono);color:var(--ink-3);font-size:13px}.col__body{flex-direction:column;gap:10px;padding:10px;display:flex;overflow:hidden}.col__empty{font-family:var(--font-mono);color:var(--ink-4);letter-spacing:.04em;border:1px dashed var(--border);background:repeating-linear-gradient(135deg,#0000,#0000 6px,#00000006 6px,#00000006 7px);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:80px;margin:4px;font-size:12.5px;display:flex}.snap{border-bottom:1px solid var(--border-soft);background:var(--cream);align-items:center;gap:12px;padding:12px 28px;display:flex}.snap__label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:12px;font-weight:600}.snap__seg{background:var(--cream-mid);max-width:720px;box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:8px;flex:1;padding:3px;display:flex}.snap__btn{text-align:center;color:var(--ink-3);cursor:default;border-radius:6px;flex:1;padding:7px 12px;font-size:14.5px;font-weight:500}.snap__btn--active{background:var(--cream);color:var(--ink);box-shadow:0 1px 2px #0000000f,0 0 0 1px var(--border-soft);font-weight:600}.snap__btn-meta{font-family:var(--font-mono);color:var(--ink-4);margin-top:1px;font-size:11.5px;font-weight:500}.snap__btn--active .snap__btn-meta{color:var(--ink-3)}.taskboard{flex:1;grid-template-columns:1fr 1fr 1fr;align-content:stretch;gap:14px;padding:18px 28px;display:grid;overflow:hidden}.tcard{background:var(--cream);box-shadow:0 1px 2px #0000000a,0 0 0 1px var(--border-soft);border-radius:8px;padding:12px 14px 11px}.tcard__head{justify-content:space-between;gap:6px;display:flex}.tcard__id{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;font-size:12px}.tcard__phase{font-family:var(--font-mono);background:var(--cream-mid);color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:3px;padding:1px 6px;font-size:11.5px}.tcard__title{font-family:var(--font-body);color:var(--ink);margin:6px 0 8px;font-size:16px;font-weight:600;line-height:1.25}.tcard__meta{font-family:var(--font-mono);color:var(--ink-3);flex-direction:column;gap:2px;font-size:12.5px;display:flex}.tcard__meta strong{color:var(--ink-2);font-weight:500}.graph2__strip{background:var(--cream);border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;display:flex}.graph2__strip-left{align-items:center;gap:10px;display:flex}.graph2__strip-meta{color:var(--ink-3);font-size:13px;font-style:italic}.graph2__toggle{background:var(--cream-mid);box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:6px;padding:3px;display:inline-flex}.graph2__toggle-btn{color:var(--ink-3);cursor:default;border-radius:4px;padding:4px 12px;font-size:14px;font-weight:500}.graph2__toggle-btn--active{background:var(--cream);color:var(--ink);box-shadow:0 1px 2px #0000000f,0 0 0 1px var(--border-soft);font-weight:600}.graph2{background:radial-gradient(ellipse at top,oklch(97% .01 75) 0%,var(--cream) 70%);flex-direction:column;flex:1;min-height:0;padding:18px 28px 14px;display:flex;overflow:hidden}.graph2__fence-top,.graph2__fence-bot{color:var(--dalia-dark);letter-spacing:.01em;-webkit-user-select:none;user-select:none;padding:4px 0;font-size:14px}.graph2__canvas{background:var(--cream);border:1px solid var(--border-soft);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;padding:18px 24px;display:flex;overflow:hidden}.mermaid-host{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.mermaid-host svg{max-width:100%;height:auto;max-height:100%}.mermaid-loading,.mermaid-err{color:var(--ink-3);padding:28px;font-size:14px}.mermaid-err{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.mermaid-err__glyph{color:#ca5551;opacity:.85}.mermaid-err__title{color:var(--ink-2);font-weight:600}.mermaid-err__details{width:100%;max-width:560px;margin-top:2px}.mermaid-err__details>summary{cursor:pointer;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-size:12px}.mermaid-err__details>summary:hover{color:var(--ink-2)}.mermaid-err__trace{text-align:left;white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono);color:var(--ink-2);background:var(--cream-mid);border:1px solid var(--border-soft);border-radius:6px;margin:8px 0 0;padding:10px 12px;font-size:12px;line-height:1.5}.mermaid-host .nodeLabel{line-height:1.4}.mermaid-host .nodeLabel b{font-family:var(--font-display);letter-spacing:-.005em;padding-bottom:2px;font-size:15.5px;font-weight:700;display:inline-block}.mermaid-host .nodeLabel i{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.02em;font-size:12px;font-style:normal}.mermaid-host .cluster-label .nodeLabel{font-family:var(--font-body);letter-spacing:.01em;text-transform:none;font-size:12.5px;font-weight:600;color:var(--ink-3)!important}.mermaid-host .cluster rect{rx:10px;ry:10px;stroke-dasharray:0}.mermaid-host .edgePath .path{stroke-width:1.5px}.mermaid-host .marker{fill:var(--ink-3)}.graph2__source{background:var(--deep);color:var(--cream);font-family:var(--font-mono);white-space:pre;border-radius:8px;flex:1;margin:0;padding:18px 22px;font-size:14.5px;line-height:1.65;overflow:auto}.graph2__legend{border-top:1px solid var(--border-soft);color:var(--ink-3);align-items:center;gap:18px;margin-top:12px;padding-top:10px;font-size:14px;display:flex}.graph2__legend-item{align-items:center;gap:6px;display:inline-flex}.graph2__legend-swatch{background:var(--cream);width:14px;height:14px;box-shadow:inset 0 0 0 1px var(--ink-3);border-radius:3px}.graph2__legend-swatch--bug{background:var(--cream-mid);border:1px dashed var(--ink-3);box-shadow:none}.graph2__legend-swatch--task{background:var(--done-bg);box-shadow:inset 0 0 0 1.5px var(--done)}.graph2__legend-spacer{flex:1}.graph2__legend-foot{color:var(--ink-3);font-size:12.5px}.dark .tcard{box-shadow:0 1px 2px #0000004d,0 0 0 1px var(--border-soft)}.dark .col__empty{border-color:var(--border);background:repeating-linear-gradient(135deg,#0000,#0000 6px,#ffffff09 6px,#ffffff09 7px)}.dark .snap__seg{box-shadow:inset 0 0 0 1px var(--border-soft);background:#00000040}.dark .snap__btn--active{background:var(--cream-mid);box-shadow:0 1px 2px #0000004d,0 0 0 1px var(--border-soft)}.dark .tcard__phase{color:var(--ink-2);background:#ffffff0f}.dark .graph2{background:radial-gradient(ellipse at top,oklch(20% .022 295) 0%,var(--cream) 70%)}.dark .graph2__canvas{background:#ffffff05}.dark .graph2__source{background:#020105}.dark .graph2__toggle{background:#00000040}.dark .graph2__toggle-btn--active{background:var(--cream-mid)}.dark .graph2__legend-swatch{background:var(--cream-mid);box-shadow:inset 0 0 0 1px var(--ink-3)}.dark .graph2__legend-swatch--bug{background:0 0}.dark .graph2__legend-swatch--task{box-shadow:inset 0 0 0 1.5px var(--done);background:#09200b}.archive__head{background:var(--cream);border-bottom:1px solid var(--border);grid-template-columns:1fr auto;align-items:center;gap:28px;padding:18px 28px;display:grid}.archive__search{background:var(--cream-mid);box-shadow:inset 0 0 0 1px var(--border-soft);font-family:var(--font-body);transition:box-shadow .18s var(--ease-out);border-radius:8px;align-items:center;gap:10px;max-width:600px;padding:10px 14px;display:flex;position:relative}.archive__search:focus-within{background:var(--cream);box-shadow:inset 0 0 0 1.5px var(--ink),0 0 0 4px #0000000a}.archive__search-input{min-width:0;font-family:var(--font-body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:16.5px}.archive__search-input::placeholder{color:var(--ink-3)}.archive__search-kbd{background:var(--cream);color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--border);border-radius:4px;padding:2px 6px;font-size:12.5px}.archive__search-clear{color:var(--ink-3);cursor:pointer;font-size:13px;font-family:var(--font-body);border-radius:4px;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.archive__search-clear:hover{background:var(--cream-mid);color:var(--ink)}.archive__stats{border-left:1px solid var(--border);gap:28px;padding-left:28px;display:flex}.archive__stat{text-align:right;font-family:var(--font-body)}.archive__stat-num{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;font-variation-settings:"opsz" 36;font-size:32px;font-weight:700;line-height:1}.archive__stat-label{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin-top:4px;font-size:12px}.archive__resultbar{background:var(--dalia-bg);color:var(--dalia-deep);font-family:var(--font-body);border-bottom:1px solid #d7759e40;justify-content:space-between;align-items:center;padding:10px 28px;font-size:15px;display:flex}.archive__resultbar-hint{font-family:var(--font-mono);opacity:.7;font-size:12.5px}.archive__empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 28px;display:flex}.archive__empty-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:25.5px;font-weight:600}.archive__empty-hint{color:var(--ink-3);font-size:15.5px}.mark{color:inherit;background:#f9d46bb3;border-radius:2px;padding:0 1px}.dark .mark{color:var(--ink);background:#8b6e008c;background:oklch(55% .13 90/.55)}.cz__path-strip{background:var(--cream);border-bottom:1px solid var(--border-soft);align-items:center;gap:12px;padding:12px 28px;display:flex}.cz__path-meta{font-family:var(--font-mono);color:var(--ink-3);margin-left:auto;font-size:13px;font-style:italic}.cz__scroll{flex:1;padding:24px 32px 28px;overflow:auto}.cz__group+.cz__group{margin-top:32px}.cz__group-head{border-bottom:2px solid var(--ink);grid-template-columns:320px 1fr;align-items:end;gap:32px;margin-bottom:12px;padding-bottom:16px;display:grid}.cz__group-title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);font-variation-settings:"opsz" 36;margin:4px 0 0;font-size:32px;font-weight:700;line-height:1.1}.cz__group-desc{color:var(--ink-2);max-width:60ch;margin:0;font-size:15.5px;line-height:1.55}.cz__hooks{flex-direction:column;display:flex}.cz__hook{border-bottom:1px solid var(--border-soft);grid-template-columns:1fr 200px;align-items:center;gap:24px;padding:16px 8px;display:grid}.cz__hook:hover{background:var(--cream-mid)}.cz__hook--empty{opacity:.85}.cz__hook-main{min-width:0}.cz__hook-head{align-items:center;gap:10px;margin-bottom:5px;display:flex}.cz__hook-id{font-family:var(--font-mono);color:var(--ink);letter-spacing:.01em;font-size:16.5px;font-weight:600}.cz__hook-when{font-family:var(--font-mono);color:var(--ink-3);margin-bottom:4px;font-size:13px}.cz__hook-when-label{color:var(--ink-4);letter-spacing:.06em;text-transform:uppercase;margin-right:6px;font-size:11.5px;font-weight:600}.cz__hook-purpose{color:var(--ink-2);max-width:72ch;margin:0;font-size:15.5px;line-height:1.5}.cz__hook-side{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.cz__file{color:var(--ink-3);font-size:14px}.cz__tag{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;background:var(--cream-mid);color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--border-soft);border-radius:3px;align-items:center;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.cz__tag--customized{background:var(--dalia-bg);color:var(--dalia-deep);box-shadow:inset 0 0 0 1px #d7759e59}.cz__tag--empty{color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--ink-4);background:0 0}.cz__editor{flex:1;grid-template-columns:220px 1fr 260px;min-height:0;display:grid;overflow:hidden}.cz__tree{background:var(--cream-mid);border-right:1px solid var(--border);font-family:var(--font-mono);padding:14px 12px;font-size:13px;overflow:auto}.cz__tree-head{color:var(--ink-3);letter-spacing:.04em;border-bottom:1px solid var(--border-soft);margin-bottom:6px;padding:0 6px 8px;font-size:12px}.cz__tree-section{font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding:10px 6px 4px;font-size:12px;font-weight:700}.cz__tree-row{color:var(--ink-2);border-radius:4px;justify-content:space-between;align-items:center;padding:5px 8px;display:flex}.cz__tree-row:hover{color:var(--ink);background:#0000000a}.cz__tree-row--active{background:var(--cream);color:var(--ink);box-shadow:inset 2px 0 0 var(--dalia)}.cz__tree-row--dim{color:var(--ink-3)}.cz__tree-dot{background:var(--dalia);border-radius:50%;width:6px;height:6px}.cz__pane{flex-direction:column;min-width:0;min-height:0;display:flex}.cz__pane-tabs{background:var(--cream);border-bottom:1px solid var(--border);align-items:center;gap:0;padding:0 16px;display:flex}.cz__pane-tab{color:var(--ink-3);cursor:default;padding:10px 16px 11px;font-size:14.5px;font-weight:500;position:relative}.cz__pane-tab--active{color:var(--ink);font-weight:600}.cz__pane-tab--active:after{content:"";background:var(--ink);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.cz__pane-tab-meta{color:var(--ink-3);margin-left:auto;font-size:12.5px;font-style:italic}.cz__editor-body{background:var(--cream);font-family:var(--font-mono);flex:1;padding:12px 0;font-size:14.5px;line-height:1.7;overflow:auto}.cz__line{grid-template-columns:48px 1fr;gap:12px;padding:0 16px 0 0;display:grid}.cz__line:hover{background:#00000005}.cz__line-num{text-align:right;color:var(--ink-4);-webkit-user-select:none;user-select:none;border-right:1px solid var(--border-soft);padding-right:4px;font-size:12.5px}.cz__line-text{color:var(--ink);white-space:pre-wrap;word-break:break-word}.cz__hint{background:var(--cream-mid);border-left:1px solid var(--border);color:var(--ink-2);padding:18px;font-size:15px;line-height:1.55;overflow:auto}.cz__hint p{margin:8px 0 0}.cz__hint em{font-family:var(--font-display);color:var(--ink);font-style:italic;font-weight:500}.cz__tpls{grid-template-columns:1fr 1fr;gap:18px;display:grid}.cz__tpl{background:var(--cream);border:1px solid var(--border-soft);border-radius:10px;padding:18px 20px 16px;box-shadow:0 1px 2px #00000008}.cz__tpl-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.cz__tpl-id{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-size:12.5px;font-weight:700}.cz__tpl-file{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-variation-settings:"opsz" 24;margin-top:2px;font-size:22px;font-weight:700}.cz__tpl-purpose{color:var(--ink-2);margin:6px 0 14px;font-size:15px;line-height:1.5}.cz__tpl-fm{margin-bottom:14px}.cz__tpl-fm-list{flex-wrap:wrap;gap:5px;display:flex}.cz__tpl-section-list{border-top:1px solid var(--border-soft);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cz__tpl-section-list li{border-bottom:1px solid var(--border-soft);color:var(--ink);grid-template-columns:32px 1fr;align-items:baseline;gap:8px;padding:6px 0;font-size:15px;display:grid}.cz__tpl-section-list li:last-child{border-bottom:none}.cz__tpl-section-num{color:var(--ink-4);letter-spacing:.04em;font-size:12px}.dark .cz__hook:hover{background:#ffffff08}.dark .cz__tree-row:hover{background:#ffffff0a}.dark .cz__tree-row--active{background:var(--cream)}.dark .cz__tag{background:#ffffff0a}.dark .cz__tag--customized{color:var(--dalia-deep);background:#492735}.dark .cz__line:hover{background:#ffffff05}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}