strikethroo 3.0.2 → 3.2.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.
- package/README.md +18 -2
- package/dist/cli.js +28 -0
- package/dist/cli.js.map +1 -1
- package/dist/serve/archive.d.ts +43 -0
- package/dist/serve/archive.d.ts.map +1 -0
- package/dist/serve/archive.js +124 -0
- package/dist/serve/archive.js.map +1 -0
- package/dist/serve/derivation.d.ts +78 -0
- package/dist/serve/derivation.d.ts.map +1 -0
- package/dist/serve/derivation.js +237 -0
- package/dist/serve/derivation.js.map +1 -0
- package/dist/serve/events.d.ts +41 -0
- package/dist/serve/events.d.ts.map +1 -0
- package/dist/serve/events.js +91 -0
- package/dist/serve/events.js.map +1 -0
- package/dist/serve/markdown.d.ts +75 -0
- package/dist/serve/markdown.d.ts.map +1 -0
- package/dist/serve/markdown.js +221 -0
- package/dist/serve/markdown.js.map +1 -0
- package/dist/serve/root.d.ts +48 -0
- package/dist/serve/root.d.ts.map +1 -0
- package/dist/serve/root.js +110 -0
- package/dist/serve/root.js.map +1 -0
- package/dist/serve/self-review.d.ts +70 -0
- package/dist/serve/self-review.d.ts.map +1 -0
- package/dist/serve/self-review.js +164 -0
- package/dist/serve/self-review.js.map +1 -0
- package/dist/serve/server.d.ts +70 -0
- package/dist/serve/server.d.ts.map +1 -0
- package/dist/serve/server.js +368 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/watcher.d.ts +32 -0
- package/dist/serve/watcher.d.ts.map +1 -0
- package/dist/serve/watcher.js +99 -0
- package/dist/serve/watcher.js.map +1 -0
- package/dist/serve/workspace-model.d.ts +80 -0
- package/dist/serve/workspace-model.d.ts.map +1 -0
- package/dist/serve/workspace-model.js +176 -0
- package/dist/serve/workspace-model.js.map +1 -0
- package/dist/skill-scripts/shared/frontmatter.d.ts +2 -0
- package/dist/skill-scripts/shared/frontmatter.d.ts.map +1 -0
- package/dist/skill-scripts/shared/frontmatter.js +37 -0
- package/dist/skill-scripts/shared/frontmatter.js.map +1 -0
- package/dist/skill-scripts/shared/plan-scan.d.ts +10 -0
- package/dist/skill-scripts/shared/plan-scan.d.ts.map +1 -0
- package/dist/skill-scripts/shared/plan-scan.js +91 -0
- package/dist/skill-scripts/shared/plan-scan.js.map +1 -0
- package/dist/skill-scripts/shared/root.d.ts +2 -0
- package/dist/skill-scripts/shared/root.d.ts.map +1 -0
- package/dist/skill-scripts/shared/root.js +104 -0
- package/dist/skill-scripts/shared/root.js.map +1 -0
- package/dist-web/assets/Fraunces-Italic-VariableFont_SOFT_WONK_opsz_wght-CuXX_kIb.ttf +0 -0
- package/dist-web/assets/Fraunces-VariableFont_SOFT_WONK_opsz_wght-DLWfSgHL.ttf +0 -0
- package/dist-web/assets/Outfit-VariableFont_wght-B6lQlNBM.ttf +0 -0
- package/dist-web/assets/SFMonoBold-DXHgGUoo.otf +0 -0
- package/dist-web/assets/SFMonoBoldItalic-CdGEImHi.otf +0 -0
- package/dist-web/assets/SFMonoHeavy-DL92f7rT.otf +0 -0
- package/dist-web/assets/SFMonoHeavyItalic-DnE00LFH.otf +0 -0
- package/dist-web/assets/SFMonoLight-CaMC1gg-.otf +0 -0
- package/dist-web/assets/SFMonoLightItalic-DG3Owzn7.otf +0 -0
- package/dist-web/assets/SFMonoMedium-ypRDCKSo.otf +0 -0
- package/dist-web/assets/SFMonoMediumItalic-DkJk-c-x.otf +0 -0
- package/dist-web/assets/SFMonoRegular-77Uh1IPk.otf +0 -0
- package/dist-web/assets/SFMonoRegularItalic-Cn01bACm.otf +0 -0
- package/dist-web/assets/SFMonoSemibold-CvhtzcyM.otf +0 -0
- package/dist-web/assets/SFMonoSemiboldItalic-D75NMH13.otf +0 -0
- package/dist-web/assets/arc-JkuhZ_PU.js +1 -0
- package/dist-web/assets/architectureDiagram-3BPJPVTR-DwCgGxAM.js +36 -0
- package/dist-web/assets/blockDiagram-GPEHLZMM-BCwcsKdi.js +132 -0
- package/dist-web/assets/c4Diagram-AAUBKEIU-Cm1cMFQT.js +10 -0
- package/dist-web/assets/channel-8UZd6AbH.js +1 -0
- package/dist-web/assets/chunk-2J33WTMH-BHDreu9q.js +1 -0
- package/dist-web/assets/chunk-4BX2VUAB-CvH1iMKB.js +1 -0
- package/dist-web/assets/chunk-55IACEB6-C02LfbKU.js +1 -0
- package/dist-web/assets/chunk-727SXJPM-BYDaeCJW.js +206 -0
- package/dist-web/assets/chunk-AQP2D5EJ-CW-sdA3M.js +231 -0
- package/dist-web/assets/chunk-FMBD7UC4-BE3hNKOn.js +15 -0
- package/dist-web/assets/chunk-ND2GUHAM-BosLJTdj.js +1 -0
- package/dist-web/assets/chunk-QZHKN3VN-Bf44xttm.js +1 -0
- package/dist-web/assets/classDiagram-4FO5ZUOK-D7aMNqbH.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D7aMNqbH.js +1 -0
- package/dist-web/assets/cose-bilkent-S5V4N54A-BZS-xBec.js +1 -0
- package/dist-web/assets/cytoscape.esm-BHYC38rz.js +331 -0
- package/dist-web/assets/dagre-BM42HDAG-Be_HyeG7.js +4 -0
- package/dist-web/assets/defaultLocale-CrowFXzY.js +1 -0
- package/dist-web/assets/diagram-2AECGRRQ-BVt23uOL.js +43 -0
- package/dist-web/assets/diagram-5GNKFQAL-BF-OZRmP.js +10 -0
- package/dist-web/assets/diagram-KO2AKTUF-BvW-uYc2.js +3 -0
- package/dist-web/assets/diagram-LMA3HP47-CG2JR86G.js +24 -0
- package/dist-web/assets/diagram-OG6HWLK6-PZ5nR1AF.js +24 -0
- package/dist-web/assets/erDiagram-TEJ5UH35-D2GJWnIo.js +85 -0
- package/dist-web/assets/flowDiagram-I6XJVG4X-DGboZXQm.js +162 -0
- package/dist-web/assets/ganttDiagram-6RSMTGT7-IPOlSI7E.js +292 -0
- package/dist-web/assets/gitGraphDiagram-PVQCEYII-DO9E2tXK.js +106 -0
- package/dist-web/assets/graph-Dqkl27Ch.js +1 -0
- package/dist-web/assets/index-B8AJFM1Y.js +125 -0
- package/dist-web/assets/index-Bm5I46eC.css +1 -0
- package/dist-web/assets/infoDiagram-5YYISTIA-Clg2ubQz.js +2 -0
- package/dist-web/assets/init-Gi6I4Gst.js +1 -0
- package/dist-web/assets/ishikawaDiagram-YF4QCWOH-CDyYc7AV.js +70 -0
- package/dist-web/assets/journeyDiagram-JHISSGLW-CIz55Ff7.js +139 -0
- package/dist-web/assets/kanban-definition-UN3LZRKU-OzC_r8lI.js +89 -0
- package/dist-web/assets/katex-C5jXJg4s.js +257 -0
- package/dist-web/assets/layout-DO9UvE1P.js +1 -0
- package/dist-web/assets/linear-rdoP0iOK.js +1 -0
- package/dist-web/assets/mermaid.core-DOgS-uvF.js +307 -0
- package/dist-web/assets/mindmap-definition-RKZ34NQL-52nfuxxC.js +96 -0
- package/dist-web/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist-web/assets/pieDiagram-4H26LBE5-Drwd0WV7.js +30 -0
- package/dist-web/assets/quadrantDiagram-W4KKPZXB-DYJRwtFj.js +7 -0
- package/dist-web/assets/requirementDiagram-4Y6WPE33-HOL8fCwg.js +84 -0
- package/dist-web/assets/sankeyDiagram-5OEKKPKP-CyA-ExUk.js +40 -0
- package/dist-web/assets/sequenceDiagram-3UESZ5HK-C6Zr5XVd.js +162 -0
- package/dist-web/assets/stateDiagram-AJRCARHV-DSAZMis2.js +1 -0
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-nDV4UH9R.js +1 -0
- package/dist-web/assets/timeline-definition-PNZ67QCA-CUPjxRlk.js +120 -0
- package/dist-web/assets/vennDiagram-CIIHVFJN-CtjMS4vh.js +34 -0
- package/dist-web/assets/wardley-L42UT6IY-Bk6PjBWD.js +173 -0
- package/dist-web/assets/wardleyDiagram-YWT4CUSO-Bjb8yHyW.js +78 -0
- package/dist-web/assets/xychartDiagram-2RQKCTM6-C3ukcEfW.js +7 -0
- package/dist-web/favicon.svg +13 -0
- package/dist-web/index.html +30 -0
- package/package.json +28 -8
- package/templates/harness/skills/st-full-workflow/SKILL.md +2 -2
- package/templates/harness/skills/st-generate-tasks/SKILL.md +2 -2
|
@@ -0,0 +1 @@
|
|
|
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}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as e,aC as s,a_ as o,E as i}from"./mermaid.core-DOgS-uvF.js";import{p as g}from"./wardley-L42UT6IY-Bk6PjBWD.js";import"./index-B8AJFM1Y.js";var p={parse:e(async r=>{const a=await g("info",r);s.debug(a)},"parse")},v={version:"11.15.0"},d=e(()=>v.version,"getVersion"),m={getVersion:d},c=e((r,a,n)=>{s.debug(`rendering info diagram
|
|
2
|
+
`+r);const t=o(a);i(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${n}`)},"draw"),f={draw:c},b={parser:p,db:m,renderer:f};export{b as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(e,a){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(a).domain(e);break}return this}export{t as i};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import{b as o,a3 as ot,aL as ut,a_ as dt,l as yt,t as ft,z as pt,b2 as it,a1 as gt,b0 as kt,a0 as mt,a$ as wt,a4 as _t,E as bt}from"./mermaid.core-DOgS-uvF.js";import"./index-B8AJFM1Y.js";var tt=function(){var e=o(function(M,t,s,i){for(s=s||{},i=M.length;i--;s[M[i]]=t);return s},"o"),h=[1,4],r=[1,14],a=[1,12],l=[1,13],y=[6,7,8],f=[1,20],d=[1,18],m=[1,19],c=[6,7,11],k=[1,6,13,14],g=[1,23],_=[1,24],x=[1,6,7,11,13,14],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(t,s,i,u,p,n,v){var w=n.length-1;switch(p){case 6:case 7:return u;case 15:u.addNode(n[w-1].length,n[w].trim());break;case 16:u.addNode(0,n[w].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:r,7:[1,10],9:9,12:11,13:a,14:l},e(y,[2,3]),{1:[2,2]},e(y,[2,4]),e(y,[2,5]),{1:[2,6],6:r,12:15,13:a,14:l},{6:r,9:16,12:11,13:a,14:l},{6:f,7:d,10:17,11:m},e(c,[2,18],{14:[1,21]}),e(c,[2,16]),e(c,[2,17]),{6:f,7:d,10:22,11:m},{1:[2,7],6:r,12:15,13:a,14:l},e(k,[2,14],{7:g,11:_}),e(x,[2,8]),e(x,[2,9]),e(x,[2,10]),e(c,[2,15]),e(k,[2,13],{7:g,11:_}),e(x,[2,11]),e(x,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(t,s){if(s.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=s,i}},"parseError"),parse:o(function(t){var s=this,i=[0],u=[],p=[null],n=[],v=this.table,w="",I=0,S=0,L=2,E=1,R=n.slice.call(arguments,1),b=Object.create(this.lexer),C={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(C.yy[z]=this.yy[z]);b.setInput(t,C.yy),C.yy.lexer=b,C.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var T=b.yylloc;n.push(T);var D=b.options&&b.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function F(P){i.length=i.length-2*P,p.length=p.length-P,n.length=n.length-P}o(F,"popStack");function j(){var P;return P=u.pop()||b.lex()||E,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}o(j,"lex");for(var A,W,B,q,H={},X,V,et,Y;;){if(W=i[i.length-1],this.defaultActions[W]?B=this.defaultActions[W]:((A===null||typeof A>"u")&&(A=j()),B=v[W]&&v[W][A]),typeof B>"u"||!B.length||!B[0]){var Q="";Y=[];for(X in v[W])this.terminals_[X]&&X>L&&Y.push("'"+this.terminals_[X]+"'");b.showPosition?Q="Parse error on line "+(I+1)+`:
|
|
2
|
+
`+b.showPosition()+`
|
|
3
|
+
Expecting `+Y.join(", ")+", got '"+(this.terminals_[A]||A)+"'":Q="Parse error on line "+(I+1)+": Unexpected "+(A==E?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(Q,{text:b.match,token:this.terminals_[A]||A,line:b.yylineno,loc:T,expected:Y})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+A);switch(B[0]){case 1:i.push(A),p.push(b.yytext),n.push(b.yylloc),i.push(B[1]),A=null,S=b.yyleng,w=b.yytext,I=b.yylineno,T=b.yylloc;break;case 2:if(V=this.productions_[B[1]][1],H.$=p[p.length-V],H._$={first_line:n[n.length-(V||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(V||1)].first_column,last_column:n[n.length-1].last_column},D&&(H._$.range=[n[n.length-(V||1)].range[0],n[n.length-1].range[1]]),q=this.performAction.apply(H,[w,S,I,C.yy,B[1],p,n].concat(R)),typeof q<"u")return q;V&&(i=i.slice(0,-1*V*2),p=p.slice(0,-1*V),n=n.slice(0,-1*V)),i.push(this.productions_[B[1]][0]),p.push(H.$),n.push(H._$),et=v[i[i.length-2]][i[i.length-1]],i.push(et);break;case 3:return!0}}return!0},"parse")},O=function(){var M={EOF:1,parseError:o(function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},"parseError"),setInput:o(function(t,s){return this.yy=s||this.yy||{},this._input=t,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:o(function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var s=t.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:o(function(t){var s=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=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),i.length-1&&(this.yylineno-=i.length-1);var p=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:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(t){this.unput(this.match.slice(t))},"less"),pastInput:o(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var t=this.pastInput(),s=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
|
|
5
|
+
`+s+"^"},"showPosition"),test_match:o(function(t,s){var i,u,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),u=t[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,s,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var n in p)this[n]=p[n];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,s,i,u;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),n=0;n<p.length;n++)if(i=this._input.match(this.rules[p[n]]),i&&(!s||i[0].length>s[0].length)){if(s=i,u=n,this.options.backtrack_lexer){if(t=this.test_match(i,p[n]),t!==!1)return t;if(this._backtrack){s=!1;continue}else return!1}else if(!this.options.flex)break}return s?(t=this.test_match(s,p[u]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
|
6
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var s=this.next();return s||this.lex()},"lex"),begin:o(function(s){this.conditionStack.push(s)},"begin"),popState:o(function(){var s=this.conditionStack.length-1;return s>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(s){return s=this.conditionStack.length-1-Math.abs(s||0),s>=0?this.conditionStack[s]:"INITIAL"},"topState"),pushState:o(function(s){this.begin(s)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(s,i,u,p){switch(u){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return M}();N.lexer=O;function $(){this.yy={}}return o($,"Parser"),$.prototype=N,N.Parser=$,new $}();tt.parser=tt;var xt=tt,Z,vt=(Z=class{constructor(){this.stack=[],this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,ft()}getRoot(){return this.root}addNode(h,r){const a=pt.sanitizeText(r,ot());if(!this.root){this.root={text:a,children:[]},this.stack=[{level:0,node:this.root}],it(a);return}this.baseLevel??(this.baseLevel=h);let l=h-this.baseLevel+1;for(l<=0&&(l=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=l;)this.stack.pop();const y=this.stack[this.stack.length-1].node,f={text:a,children:[]};y.children.push(f),this.stack.push({level:l,node:f})}getAccTitle(){return gt()}setAccTitle(h){kt(h)}getAccDescription(){return mt()}setAccDescription(h){wt(h)}getDiagramTitle(){return _t()}setDiagramTitle(h){it(h)}},o(Z,"IshikawaDB"),Z),St=14,G=250,$t=30,Et=60,At=5,ht=82*Math.PI/180,st=Math.cos(ht),nt=Math.sin(ht),at=o((e,h,r)=>{const a=e.node().getBBox(),l=a.width+h*2,y=a.height+h*2;bt(e,y,l,r),e.attr("viewBox",`${a.x-h} ${a.y-h} ${l} ${y}`)},"applyPaddedViewBox"),It=o((e,h,r,a)=>{var C,z;const y=a.db.getRoot();if(!y)return;const f=ot(),{look:d,handDrawnSeed:m,themeVariables:c}=f,k=ut(f.fontSize)[0]??St,g=d==="handDrawn",_=y.children??[],x=((C=f.ishikawa)==null?void 0:C.diagramPadding)??20,N=((z=f.ishikawa)==null?void 0:z.useMaxWidth)??!1,O=dt(h),$=O.append("g").attr("class","ishikawa"),M=g?yt.svg(O.node()):void 0,t=M?{roughSvg:M,seed:m??0,lineColor:(c==null?void 0:c.lineColor)??"#333",fillColor:(c==null?void 0:c.mainBkg)??"#fff"}:void 0,s=`ishikawa-arrow-${h}`;g||$.append("defs").append("marker").attr("id",s).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let i=0,u=G;const p=g?void 0:U($,i,u,i,u,"ishikawa-spine");if(Lt($,i,u,y.text,k,t),!_.length){g&&U($,i,u,i,u,"ishikawa-spine",t),at(O,x,N);return}i-=20;const n=_.filter((T,D)=>D%2===0),v=_.filter((T,D)=>D%2===1),w=rt(n),I=rt(v),S=w.total+I.total;let L=G,E=G;if(S>0){const T=G*2,D=G*.3;L=Math.max(D,T*(w.total/S)),E=Math.max(D,T*(I.total/S))}const R=k*2;L=Math.max(L,w.max*R),E=Math.max(E,I.max*R),u=Math.max(L,G),p&&p.attr("y1",u).attr("y2",u),$.select(".ishikawa-head-group").attr("transform",`translate(0,${u})`);const b=Math.ceil(_.length/2);for(let T=0;T<b;T++){const D=$.append("g").attr("class","ishikawa-pair");for(const[F,j,A]of[[_[T*2],-1,L],[_[T*2+1],1,E]])F&&Pt(D,F,i,u,j,A,k,t);i=D.selectAll("text").nodes().reduce((F,j)=>Math.min(F,j.getBBox().x),1/0)}if(g)U($,i,u,0,u,"ishikawa-spine",t);else{p.attr("x1",i);const T=`url(#${s})`;$.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",T)}at(O,x,N)},"draw"),rt=o(e=>{const h=o(r=>r.children.reduce((a,l)=>a+1+h(l),0),"countDescendants");return e.reduce((r,a)=>{const l=h(a);return r.total+=l,r.max=Math.max(r.max,l),r},{total:0,max:0})},"sideStats"),Lt=o((e,h,r,a,l,y)=>{const f=Math.max(6,Math.floor(110/(l*.6))),d=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${h},${r})`),m=K(d,ct(a,f),0,0,"ishikawa-head-label","start",l),c=m.node().getBBox(),k=Math.max(60,c.width+6),g=Math.max(40,c.height*2+40),_=`M 0 ${-g/2} L 0 ${g/2} Q ${k*2.4} 0 0 ${-g/2} Z`;if(y){const x=y.roughSvg.path(_,{roughness:1.5,seed:y.seed,fill:y.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:y.lineColor,strokeWidth:2});d.insert(()=>x,":first-child").attr("class","ishikawa-head")}else d.insert("path",":first-child").attr("class","ishikawa-head").attr("d",_);m.attr("transform",`translate(${(k-c.width)/2-c.x+3},${-c.y-c.height/2})`)},"drawHead"),Tt=o((e,h)=>{const r=[],a=[],l=o((y,f,d)=>{const m=h===-1?[...y].reverse():y;for(const c of m){const k=r.length,g=c.children??[];r.push({depth:d,text:ct(c.text,15),parentIndex:f,childCount:g.length}),d%2===0?(a.push(k),g.length&&l(g,k,d+1)):(g.length&&l(g,k,d+1),a.push(k))}},"walk");return l(e,-1,2),{entries:r,yOrder:a}},"flattenTree"),Mt=o((e,h,r,a,l,y,f)=>{const d=e.append("g").attr("class","ishikawa-label-group"),c=K(d,h,r,a+11*l,"ishikawa-label cause","middle",y).node().getBBox();if(f){const k=f.roughSvg.rectangle(c.x-20,c.y-2,c.width+40,c.height+4,{roughness:1.5,seed:f.seed,fill:f.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:f.lineColor,strokeWidth:2});d.insert(()=>k,":first-child").attr("class","ishikawa-label-box")}else d.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",c.x-20).attr("y",c.y-2).attr("width",c.width+40).attr("height",c.height+4)},"drawCauseLabel"),J=o((e,h,r,a,l,y)=>{const f=Math.sqrt(a*a+l*l);if(f===0)return;const d=a/f,m=l/f,c=6,k=-m*c,g=d*c,_=h,x=r,N=`M ${_} ${x} L ${_-d*c*2+k} ${x-m*c*2+g} L ${_-d*c*2-k} ${x-m*c*2-g} Z`,O=y.roughSvg.path(N,{roughness:1,seed:y.seed,fill:y.lineColor,fillStyle:"solid",stroke:y.lineColor,strokeWidth:1});e.append(()=>O)},"drawArrowMarker"),Pt=o((e,h,r,a,l,y,f,d)=>{const m=h.children??[],c=y*(m.length?1:.2),k=-st*c,g=nt*c*l,_=r+k,x=a+g;if(U(e,r,a,_,x,"ishikawa-branch",d),d&&J(e,r,a,r-_,a-x,d),Mt(e,h.text,_,x,l,f,d),!m.length)return;const{entries:N,yOrder:O}=Tt(m,l),$=N.length,M=new Array($);for(const[p,n]of O.entries())M[n]=a+g*((p+1)/($+1));const t=new Map;t.set(-1,{x0:r,y0:a,x1:_,y1:x,childCount:m.length,childrenDrawn:0});const s=-st,i=nt*l,u=l<0?"ishikawa-label up":"ishikawa-label down";for(const[p,n]of N.entries()){const v=M[p],w=t.get(n.parentIndex),I=e.append("g").attr("class","ishikawa-sub-group");let S=0,L=0,E=0;if(n.depth%2===0){const R=w.y1-w.y0;S=lt(w.x0,w.x1,R?(v-w.y0)/R:.5),L=v,E=S-(n.childCount>0?Et+n.childCount*At:$t),U(I,S,v,E,v,"ishikawa-sub-branch",d),d&&J(I,S,v,1,0,d),K(I,n.text,E,v,"ishikawa-label align","end",f)}else{const R=w.childrenDrawn++;S=lt(w.x0,w.x1,(w.childCount-R)/(w.childCount+1)),L=w.y0,E=S+s*((v-L)/i),U(I,S,L,E,v,"ishikawa-sub-branch",d),d&&J(I,S,L,S-E,L-v,d),K(I,n.text,E,v,u,"end",f)}n.childCount>0&&t.set(p,{x0:S,y0:L,x1:E,y1:v,childCount:n.childCount,childrenDrawn:0})}},"drawBranch"),Bt=o(e=>e.split(/<br\s*\/?>|\n/),"splitLines"),ct=o((e,h)=>{if(e.length<=h)return e;const r=[];for(const a of e.split(/\s+/)){const l=r.length-1;l>=0&&r[l].length+1+a.length<=h?r[l]+=" "+a:r.push(a)}return r.join(`
|
|
7
|
+
`)},"wrapText"),K=o((e,h,r,a,l,y,f)=>{const d=Bt(h),m=f*1.05,c=e.append("text").attr("class",l).attr("text-anchor",y).attr("x",r).attr("y",a-(d.length-1)*m/2);for(const[k,g]of d.entries())c.append("tspan").attr("x",r).attr("dy",k===0?0:m).text(g);return c},"drawMultilineText"),lt=o((e,h,r)=>e+(h-e)*r,"lerp"),U=o((e,h,r,a,l,y,f)=>{if(f){const d=f.roughSvg.line(h,r,a,l,{roughness:1.5,seed:f.seed,stroke:f.lineColor,strokeWidth:2});e.append(()=>d).attr("class",y);return}return e.append("line").attr("class",y).attr("x1",h).attr("y1",r).attr("x2",a).attr("y2",l)},"drawLine"),Nt={draw:It},Dt=o(e=>`
|
|
8
|
+
.ishikawa .ishikawa-spine,
|
|
9
|
+
.ishikawa .ishikawa-branch,
|
|
10
|
+
.ishikawa .ishikawa-sub-branch {
|
|
11
|
+
stroke: ${e.lineColor};
|
|
12
|
+
stroke-width: 2;
|
|
13
|
+
fill: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ishikawa .ishikawa-sub-branch {
|
|
17
|
+
stroke-width: 1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ishikawa .ishikawa-arrow {
|
|
21
|
+
fill: ${e.lineColor};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.ishikawa .ishikawa-head {
|
|
25
|
+
fill: ${e.mainBkg};
|
|
26
|
+
stroke: ${e.lineColor};
|
|
27
|
+
stroke-width: 2;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ishikawa .ishikawa-label-box {
|
|
31
|
+
fill: ${e.mainBkg};
|
|
32
|
+
stroke: ${e.lineColor};
|
|
33
|
+
stroke-width: 2;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.ishikawa text {
|
|
37
|
+
font-family: ${e.fontFamily};
|
|
38
|
+
font-size: ${e.fontSize};
|
|
39
|
+
fill: ${e.textColor};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ishikawa .ishikawa-head-label {
|
|
43
|
+
font-weight: 600;
|
|
44
|
+
text-anchor: middle;
|
|
45
|
+
dominant-baseline: middle;
|
|
46
|
+
font-size: 14px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.ishikawa .ishikawa-label {
|
|
50
|
+
text-anchor: end;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ishikawa .ishikawa-label.cause {
|
|
54
|
+
text-anchor: middle;
|
|
55
|
+
dominant-baseline: middle;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.ishikawa .ishikawa-label.align {
|
|
59
|
+
text-anchor: end;
|
|
60
|
+
dominant-baseline: middle;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ishikawa .ishikawa-label.up {
|
|
64
|
+
dominant-baseline: baseline;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.ishikawa .ishikawa-label.down {
|
|
68
|
+
dominant-baseline: hanging;
|
|
69
|
+
}
|
|
70
|
+
`,"getStyles"),Ot=Dt,Vt={parser:xt,get db(){return new vt},renderer:Nt,styles:Ot};export{Vt as diagram};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import{g as gt}from"./chunk-FMBD7UC4-BE3hNKOn.js";import{d as mt,g as lt,f as xt,e as kt}from"./chunk-ND2GUHAM-BosLJTdj.js";import{a0 as _t,a$ as vt,a1 as bt,b0 as wt,a4 as Tt,b2 as St,b as s,a3 as R,aZ as G,E as $t,t as Mt}from"./mermaid.core-DOgS-uvF.js";import{d as it}from"./arc-JkuhZ_PU.js";import"./index-B8AJFM1Y.js";var U=function(){var t=s(function(h,r,n,l){for(n=n||{},l=h.length;l--;n[h[l]]=r);return n},"o"),e=[6,8,10,11,12,14,16,17,18],a=[1,9],f=[1,10],i=[1,11],u=[1,12],p=[1,13],o=[1,14],g={trace:s(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:s(function(r,n,l,y,d,c,v){var k=c.length-1;switch(d){case 1:return c[k-1];case 2:this.$=[];break;case 3:c[k-1].push(c[k]),this.$=c[k-1];break;case 4:case 5:this.$=c[k];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(c[k].substr(6)),this.$=c[k].substr(6);break;case 9:this.$=c[k].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=c[k].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(c[k].substr(8)),this.$=c[k].substr(8);break;case 13:y.addTask(c[k-1],c[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:a,12:f,14:i,16:u,17:p,18:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:s(function(r,n){if(n.recoverable)this.trace(r);else{var l=new Error(r);throw l.hash=n,l}},"parseError"),parse:s(function(r){var n=this,l=[0],y=[],d=[null],c=[],v=this.table,k="",C=0,Q=0,yt=2,D=1,dt=c.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(r,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;c.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,d.length=d.length-w,c.length=c.length-w}s(pt,"popStack");function tt(){var w;return w=y.pop()||_.lex()||D,typeof w!="number"&&(w instanceof Array&&(y=w,w=y.pop()),w=n.symbols_[w]||w),w}s(tt,"lex");for(var b,A,T,q,F={},N,M,et,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((b===null||typeof b>"u")&&(b=tt()),T=v[A]&&v[A][b]),typeof T>"u"||!T.length||!T[0]){var X="";z=[];for(N in v[A])this.terminals_[N]&&N>yt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?X="Parse error on line "+(C+1)+`:
|
|
2
|
+
`+_.showPosition()+`
|
|
3
|
+
Expecting `+z.join(", ")+", got '"+(this.terminals_[b]||b)+"'":X="Parse error on line "+(C+1)+": Unexpected "+(b==D?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(X,{text:_.match,token:this.terminals_[b]||b,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+b);switch(T[0]){case 1:l.push(b),d.push(_.yytext),c.push(_.yylloc),l.push(T[1]),b=null,Q=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=d[d.length-M],F._$={first_line:c[c.length-(M||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(M||1)].first_column,last_column:c[c.length-1].last_column},ft&&(F._$.range=[c[c.length-(M||1)].range[0],c[c.length-1].range[1]]),q=this.performAction.apply(F,[k,Q,C,I.yy,T[1],d,c].concat(dt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),d=d.slice(0,-1*M),c=c.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),d.push(F.$),c.push(F._$),et=v[l[l.length-2]][l[l.length-1]],l.push(et);break;case 3:return!0}}return!0},"parse")},m=function(){var h={EOF:1,parseError:s(function(n,l){if(this.yy.parser)this.yy.parser.parseError(n,l);else throw new Error(n)},"parseError"),setInput:s(function(r,n){return this.yy=n||this.yy||{},this._input=r,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:s(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:s(function(r){var n=r.length,l=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var y=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),l.length-1&&(this.yylineno-=l.length-1);var d=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:l?(l.length===y.length?this.yylloc.first_column:0)+y[y.length-l.length].length-l[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(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
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(r){this.unput(this.match.slice(r))},"less"),pastInput:s(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
|
5
|
+
`+n+"^"},"showPosition"),test_match:s(function(r,n){var l,y,d;if(this.options.backtrack_lexer&&(d={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(d.yylloc.range=this.yylloc.range.slice(0))),y=r[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(r[0].length),this.matched+=r[0],l=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var c in d)this[c]=d[c];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,n,l,y;this._more||(this.yytext="",this.match="");for(var d=this._currentRules(),c=0;c<d.length;c++)if(l=this._input.match(this.rules[d[c]]),l&&(!n||l[0].length>n[0].length)){if(n=l,y=c,this.options.backtrack_lexer){if(r=this.test_match(l,d[c]),r!==!1)return r;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(r=this.test_match(n,d[y]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
|
6
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var n=this.next();return n||this.lex()},"lex"),begin:s(function(n){this.conditionStack.push(n)},"begin"),popState:s(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:s(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:s(function(n){this.begin(n)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(n,l,y,d){switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return h}();g.lexer=m;function x(){this.yy={}}return s(x,"Parser"),x.prototype=g,g.Parser=x,new x}();U.parser=U;var Et=U,V="",J=[],L=[],B=[],Ct=s(function(){J.length=0,L.length=0,V="",B.length=0,Mt()},"clear"),Pt=s(function(t){V=t,J.push(t)},"addSection"),It=s(function(){return J},"getSections"),At=s(function(){let t=rt();const e=100;let a=0;for(;!t&&a<e;)t=rt(),a++;return L.push(...B),L},"getTasks"),Ft=s(function(){const t=[];return L.forEach(a=>{a.people&&t.push(...a.people)}),[...new Set(t)].sort()},"updateActors"),Vt=s(function(t,e){const a=e.substr(1).split(":");let f=0,i=[];a.length===1?(f=Number(a[0]),i=[]):(f=Number(a[0]),i=a[1].split(","));const u=i.map(o=>o.trim()),p={section:V,type:V,people:u,task:t,score:f};B.push(p)},"addTask"),Rt=s(function(t){const e={section:V,type:V,description:t,task:t,classes:[]};L.push(e)},"addTaskOrg"),rt=s(function(){const t=s(function(a){return B[a].processed},"compileTask");let e=!0;for(const[a,f]of B.entries())t(a),e=e&&f.processed;return e},"compileTasks"),Lt=s(function(){return Ft()},"getActors"),nt={getConfig:s(()=>R().journey,"getConfig"),clear:Ct,setDiagramTitle:St,getDiagramTitle:Tt,setAccTitle:wt,getAccTitle:bt,setAccDescription:vt,getAccDescription:_t,addSection:Pt,getSections:It,getTasks:At,addTask:Vt,addTaskOrg:Rt,getActors:Lt},Bt=s(t=>`.label {
|
|
7
|
+
font-family: ${t.fontFamily};
|
|
8
|
+
color: ${t.textColor};
|
|
9
|
+
}
|
|
10
|
+
.mouth {
|
|
11
|
+
stroke: #666;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
line {
|
|
15
|
+
stroke: ${t.textColor}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.legend {
|
|
19
|
+
fill: ${t.textColor};
|
|
20
|
+
font-family: ${t.fontFamily};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.label text {
|
|
24
|
+
fill: #333;
|
|
25
|
+
}
|
|
26
|
+
.label {
|
|
27
|
+
color: ${t.textColor}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.face {
|
|
31
|
+
${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};
|
|
32
|
+
stroke: #999;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.node rect,
|
|
36
|
+
.node circle,
|
|
37
|
+
.node ellipse,
|
|
38
|
+
.node polygon,
|
|
39
|
+
.node path {
|
|
40
|
+
fill: ${t.mainBkg};
|
|
41
|
+
stroke: ${t.nodeBorder};
|
|
42
|
+
stroke-width: 1px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.node .label {
|
|
46
|
+
text-align: center;
|
|
47
|
+
}
|
|
48
|
+
.node.clickable {
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.arrowheadPath {
|
|
53
|
+
fill: ${t.arrowheadColor};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.edgePath .path {
|
|
57
|
+
stroke: ${t.lineColor};
|
|
58
|
+
stroke-width: 1.5px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.flowchart-link {
|
|
62
|
+
stroke: ${t.lineColor};
|
|
63
|
+
fill: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.edgeLabel {
|
|
67
|
+
background-color: ${t.edgeLabelBackground};
|
|
68
|
+
rect {
|
|
69
|
+
opacity: 0.5;
|
|
70
|
+
}
|
|
71
|
+
text-align: center;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.cluster rect {
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.cluster text {
|
|
78
|
+
fill: ${t.titleColor};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
div.mermaidTooltip {
|
|
82
|
+
position: absolute;
|
|
83
|
+
text-align: center;
|
|
84
|
+
max-width: 200px;
|
|
85
|
+
padding: 2px;
|
|
86
|
+
font-family: ${t.fontFamily};
|
|
87
|
+
font-size: 12px;
|
|
88
|
+
background: ${t.tertiaryColor};
|
|
89
|
+
border: 1px solid ${t.border2};
|
|
90
|
+
border-radius: 2px;
|
|
91
|
+
pointer-events: none;
|
|
92
|
+
z-index: 100;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.task-type-0, .section-type-0 {
|
|
96
|
+
${t.fillType0?`fill: ${t.fillType0}`:""};
|
|
97
|
+
}
|
|
98
|
+
.task-type-1, .section-type-1 {
|
|
99
|
+
${t.fillType0?`fill: ${t.fillType1}`:""};
|
|
100
|
+
}
|
|
101
|
+
.task-type-2, .section-type-2 {
|
|
102
|
+
${t.fillType0?`fill: ${t.fillType2}`:""};
|
|
103
|
+
}
|
|
104
|
+
.task-type-3, .section-type-3 {
|
|
105
|
+
${t.fillType0?`fill: ${t.fillType3}`:""};
|
|
106
|
+
}
|
|
107
|
+
.task-type-4, .section-type-4 {
|
|
108
|
+
${t.fillType0?`fill: ${t.fillType4}`:""};
|
|
109
|
+
}
|
|
110
|
+
.task-type-5, .section-type-5 {
|
|
111
|
+
${t.fillType0?`fill: ${t.fillType5}`:""};
|
|
112
|
+
}
|
|
113
|
+
.task-type-6, .section-type-6 {
|
|
114
|
+
${t.fillType0?`fill: ${t.fillType6}`:""};
|
|
115
|
+
}
|
|
116
|
+
.task-type-7, .section-type-7 {
|
|
117
|
+
${t.fillType0?`fill: ${t.fillType7}`:""};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.actor-0 {
|
|
121
|
+
${t.actor0?`fill: ${t.actor0}`:""};
|
|
122
|
+
}
|
|
123
|
+
.actor-1 {
|
|
124
|
+
${t.actor1?`fill: ${t.actor1}`:""};
|
|
125
|
+
}
|
|
126
|
+
.actor-2 {
|
|
127
|
+
${t.actor2?`fill: ${t.actor2}`:""};
|
|
128
|
+
}
|
|
129
|
+
.actor-3 {
|
|
130
|
+
${t.actor3?`fill: ${t.actor3}`:""};
|
|
131
|
+
}
|
|
132
|
+
.actor-4 {
|
|
133
|
+
${t.actor4?`fill: ${t.actor4}`:""};
|
|
134
|
+
}
|
|
135
|
+
.actor-5 {
|
|
136
|
+
${t.actor5?`fill: ${t.actor5}`:""};
|
|
137
|
+
}
|
|
138
|
+
${gt()}
|
|
139
|
+
`,"getStyles"),jt=Bt,K=s(function(t,e){return kt(t,e)},"drawRect"),Nt=s(function(t,e){const f=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function u(g){const m=it().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}s(u,"smile");function p(g){const m=it().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);g.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}s(p,"sad");function o(g){g.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s(o,"ambivalent"),e.score>3?u(i):e.score<3?p(i):o(i),f},"drawFace"),ot=s(function(t,e){const a=t.append("circle");return a.attr("cx",e.cx),a.attr("cy",e.cy),a.attr("class","actor-"+e.pos),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("r",e.r),a.class!==void 0&&a.attr("class",a.class),e.title!==void 0&&a.append("title").text(e.title),a},"drawCircle"),ct=s(function(t,e){return xt(t,e)},"drawText"),zt=s(function(t,e){function a(i,u,p,o,g){return i+","+u+" "+(i+p)+","+u+" "+(i+p)+","+(u+o-g)+" "+(i+p-g*1.2)+","+(u+o)+" "+i+","+(u+o)}s(a,"genPoints");const f=t.append("polygon");f.attr("points",a(e.x,e.y,50,20,7)),f.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,ct(t,e)},"drawLabel"),Wt=s(function(t,e,a){const f=t.append("g"),i=lt();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=a.width*e.taskCount+a.diagramMarginX*(e.taskCount-1),i.height=a.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,K(f,i),ht(a)(e.text,f,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},a,e.colour)},"drawSection"),Z=-1,Ot=s(function(t,e,a,f){const i=e.x+a.width/2,u=t.append("g");Z++;const p=300+5*30;u.append("line").attr("id",f+"-task"+Z).attr("x1",i).attr("y1",e.y).attr("x2",i).attr("y2",p).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Nt(u,{cx:i,cy:300+(5-e.score)*30,score:e.score});const o=lt();o.x=e.x,o.y=e.y,o.fill=e.fill,o.width=a.width,o.height=a.height,o.class="task task-type-"+e.num,o.rx=3,o.ry=3,K(u,o);let g=e.x+14;e.people.forEach(m=>{const x=e.actors[m].color,h={cx:g,cy:e.y,r:7,fill:x,stroke:"#000",title:m,pos:e.actors[m].position};ot(u,h),g+=10}),ht(a)(e.task,u,o.x,o.y,o.width,o.height,{class:"task"},a,e.colour)},"drawTask"),Yt=s(function(t,e){mt(t,e)},"drawBackgroundRect"),ht=function(){function t(i,u,p,o,g,m,x,h){const r=u.append("text").attr("x",p+g/2).attr("y",o+m/2+5).style("font-color",h).style("text-anchor","middle").text(i);f(r,x)}s(t,"byText");function e(i,u,p,o,g,m,x,h,r){const{taskFontSize:n,taskFontFamily:l}=h,y=i.split(/<br\s*\/?>/gi);for(let d=0;d<y.length;d++){const c=d*n-n*(y.length-1)/2,v=u.append("text").attr("x",p+g/2).attr("y",o).attr("fill",r).style("text-anchor","middle").style("font-size",n).style("font-family",l);v.append("tspan").attr("x",p+g/2).attr("dy",c).text(y[d]),v.attr("y",o+m/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),f(v,x)}}s(e,"byTspan");function a(i,u,p,o,g,m,x,h){const r=u.append("switch"),l=r.append("foreignObject").attr("x",p).attr("y",o).attr("width",g).attr("height",m).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");l.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(i),e(i,r,p,o,g,m,x,h),f(l,x)}s(a,"byFo");function f(i,u){for(const p in u)p in u&&i.attr(p,u[p])}return s(f,"_setTextAttrs"),function(i){return i.textPlacement==="fo"?a:i.textPlacement==="old"?t:e}}(),qt=s(function(t,e){Z=-1,t.append("defs").append("marker").attr("id",e+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics"),j={drawRect:K,drawCircle:ot,drawSection:Wt,drawText:ct,drawLabel:zt,drawTask:Ot,drawBackgroundRect:Yt,initGraphics:qt},Xt=s(function(t){Object.keys(t).forEach(function(a){$[a]=t[a]})},"setConf"),E={},W=0;function ut(t){const e=R().journey,a=e.maxLabelWidth;W=0;let f=60;Object.keys(E).forEach(i=>{const u=E[i].color,p={cx:20,cy:f,r:7,fill:u,stroke:"#000",pos:E[i].position};j.drawCircle(t,p);let o=t.append("text").attr("visibility","hidden").text(i);const g=o.node().getBoundingClientRect().width;o.remove();let m=[];if(g<=a)m=[i];else{const x=i.split(" ");let h="";o=t.append("text").attr("visibility","hidden"),x.forEach(r=>{const n=h?`${h} ${r}`:r;if(o.text(n),o.node().getBoundingClientRect().width>a){if(h&&m.push(h),h=r,o.text(r),o.node().getBoundingClientRect().width>a){let y="";for(const d of r)y+=d,o.text(y+"-"),o.node().getBoundingClientRect().width>a&&(m.push(y.slice(0,-1)+"-"),y=d);h=y}}else h=n}),h&&m.push(h),o.remove()}m.forEach((x,h)=>{const r={x:40,y:f+7+h*20,fill:"#666",text:x,textMargin:e.boxTextMargin??5},l=j.drawText(t,r).node().getBoundingClientRect().width;l>W&&l>e.leftMargin-l&&(W=l)}),f+=Math.max(20,m.length*20)})}s(ut,"drawActorLegend");var $=R().journey,P=0,Gt=s(function(t,e,a,f){const i=R(),u=i.journey.titleColor,p=i.journey.titleFontSize,o=i.journey.titleFontFamily,g=i.securityLevel;let m;g==="sandbox"&&(m=G("#i"+e));const x=g==="sandbox"?G(m.nodes()[0].contentDocument.body):G("body");S.init();const h=x.select("#"+e);j.initGraphics(h,e);const r=f.db.getTasks(),n=f.db.getDiagramTitle(),l=f.db.getActors();for(const C in E)delete E[C];let y=0;l.forEach(C=>{E[C]={color:$.actorColours[y%$.actorColours.length],position:y},y++}),ut(h),P=$.leftMargin+W,S.insert(0,0,P,Object.keys(E).length*50),Ht(h,r,0,e);const d=S.getBounds();n&&h.append("text").text(n).attr("x",P).attr("font-size",p).attr("font-weight","bold").attr("y",25).attr("fill",u).attr("font-family",o);const c=d.stopy-d.starty+2*$.diagramMarginY,v=P+d.stopx+2*$.diagramMarginX;$t(h,c,v,$.useMaxWidth),h.append("line").attr("x1",P).attr("y1",$.height*4).attr("x2",v-P-4).attr("y2",$.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+e+"-arrowhead)");const k=n?70:0;h.attr("viewBox",`${d.startx} -25 ${v} ${c+k}`),h.attr("preserveAspectRatio","xMinYMin meet"),h.attr("height",c+k+25)},"draw"),S={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:s(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:s(function(t,e,a,f){t[e]===void 0?t[e]=a:t[e]=f(a,t[e])},"updateVal"),updateBounds:s(function(t,e,a,f){const i=R().journey,u=this;let p=0;function o(g){return s(function(x){p++;const h=u.sequenceItems.length-p+1;u.updateVal(x,"starty",e-h*i.boxMargin,Math.min),u.updateVal(x,"stopy",f+h*i.boxMargin,Math.max),u.updateVal(S.data,"startx",t-h*i.boxMargin,Math.min),u.updateVal(S.data,"stopx",a+h*i.boxMargin,Math.max),g!=="activation"&&(u.updateVal(x,"startx",t-h*i.boxMargin,Math.min),u.updateVal(x,"stopx",a+h*i.boxMargin,Math.max),u.updateVal(S.data,"starty",e-h*i.boxMargin,Math.min),u.updateVal(S.data,"stopy",f+h*i.boxMargin,Math.max))},"updateItemBounds")}s(o,"updateFn"),this.sequenceItems.forEach(o())},"updateBounds"),insert:s(function(t,e,a,f){const i=Math.min(t,a),u=Math.max(t,a),p=Math.min(e,f),o=Math.max(e,f);this.updateVal(S.data,"startx",i,Math.min),this.updateVal(S.data,"starty",p,Math.min),this.updateVal(S.data,"stopx",u,Math.max),this.updateVal(S.data,"stopy",o,Math.max),this.updateBounds(i,p,u,o)},"insert"),bumpVerticalPos:s(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:s(function(){return this.verticalPos},"getVerticalPos"),getBounds:s(function(){return this.data},"getBounds")},H=$.sectionFills,st=$.sectionColours,Ht=s(function(t,e,a,f){const i=R().journey;let u="";const p=i.height*2+i.diagramMarginY,o=a+p;let g=0,m="#CCC",x="black",h=0;for(const[r,n]of e.entries()){if(u!==n.section){m=H[g%H.length],h=g%H.length,x=st[g%st.length];let y=0;const d=n.section;for(let v=r;v<e.length&&e[v].section==d;v++)y=y+1;const c={x:r*i.taskMargin+r*i.width+P,y:50,text:n.section,fill:m,num:h,colour:x,taskCount:y};j.drawSection(t,c,i),u=n.section,g++}const l=n.people.reduce((y,d)=>(E[d]&&(y[d]=E[d]),y),{});n.x=r*i.taskMargin+r*i.width+P,n.y=o,n.width=i.diagramMarginX,n.height=i.diagramMarginY,n.colour=x,n.fill=m,n.num=h,n.actors=l,j.drawTask(t,n,i,f),S.insert(n.x,n.y,n.x+n.width+i.taskMargin,300+5*30)}},"drawTasks"),at={setConf:Xt,draw:Gt},Dt={parser:Et,db:nt,renderer:at,styles:jt,init:s(t=>{at.setConf(t.journey),nt.clear()},"init")};export{Dt as diagram};
|